HumidiFi: HumidiFi is the largest propAMM on Solana, with over $50bn in 90day volume.
Source: Bid/Ask curve plotted from running the HumidiFi binaries in liteSVM. Note that HumidiFi curves follow this general shape, widening, shrinking, and shifting every slot.
For simplicity, we will linearly approximate humidifi’s curve with just a few knots, although you can get even closer with more data points or hyperbolic interpolation.
Under the hood, Humidifi is approximating log decay with very small linear segments.
HumidiFi Bid/Ask Curve:
| amount_in_sol | average_price_usdc_per_sol |
|---|
| 1 | 101.11448 |
| 491.12256128 | 101.109647509533 |
| 493.12306153 | 101.10963548795 |
| 4000 | 101.08382844375 |
| amount_in_sol | average_price_usdc_per_sol |
|---|
| 1.0 | 101.135357068354 |
| 491.122561279057 | 101.141372888682 |
| 493.123061523928 | 101.141398399866 |
| 4000.0 | 101.172231918849 |
Creating this curve with Hadron:
//creating a 4 point bid/ask curve with hadron with midprice of 101.125
const bidCurveIx = buildSetCurveInstruction(
HADRON_PROGRAM_ID,
authority.publicKey,
configPda,
"bid",
"linear",
[
{ xIn: 1n, priceFactor: 0.99989678, interpolation: "step" },
{ xIn: 491n, priceFactor: 0.99984899, interpolation: "linear" },
{ xIn: 493n, priceFactor: 0.99984887, interpolation: "linear" },
{ xIn: 4000n, priceFactor: 0.99959367, interpolation: "step" }
]
);
const askCurveIx = buildSetCurveInstruction(
HADRON_PROGRAM_ID,
authority.publicKey,
configPda,
"ask",
"linear",
[
{ xIn: 1n, priceFactor: 1.00010322, interpolation: "step" },
{ xIn: 491n, priceFactor: 1.00016271, interpolation: "linear" },
{ xIn: 493n, priceFactor: 1.00016297, interpolation: "linear" },
{ xIn: 4000n, priceFactor: 1.00046787, interpolation: "step" }
]
);
Note: This is a simple linear based approximation of the curve, however the Hadron quadratic and other non linear interpolation leads to a smoother replica of the HumidiFi curve