Price Ranges
Trading boundaries created by available inventory
A pair's price range runs from pmin to pmax: the prices reached as either token's real inventory approaches exhaustion. Virtual balances can still produce a quote, but the program rejects output it cannot pay.
Choosing an initial range
On the pool-creation chart, the lower handle sets pmin and the upper handle sets pmax, measured in the base token. The form maps these bounds to weights, leverage and seed amounts.
The examples below use equal weights and a price of 1 USDC per TOKEN. Both show the same illustrative history and scale: increasing both tokens' leverage from 10× to 20× narrows the range. The market and initial pool price coincide in these examples.
Lower leverage, wider range
10× on both tokens
Higher leverage, narrower range
20× on both tokens
Illustrative history and settings. Market and initial pool price are both 1 USDC per TOKEN. Both charts use the same scale; boundary values are rounded.
What happens at an edge
For token T priced in base B:
- At pmin, selling T into the pool exhausts B; the pool cannot pay out more B.
- At pmax, buying T from the pool exhausts T; the pool cannot pay out more T.
Reverse trades can replenish the depleted asset. Other pairs can continue while their reserves and controls permit it.
Your LP tokens still represent the remaining basket: reaching a boundary does not liquidate them. A proportional deposit follows current reserves and does not necessarily refill an empty token slot.
Reading the pool's range display
On a pool page, each row has its own range against the base asset. The left endpoint is pmin, the right endpoint is pmax, and the gold marker shows the current pool price. With USDC as base, all three values are USDC per token. Trade size and fees affect the execution price.
The illustrative three-token pool below has no actual SOL left, but still has 100 virtual SOL. Its current SOL price equals pmax. USDC and BTC still have reserves; the pool cannot pay out SOL until a reverse trade or another supported action replenishes it.
Current leverage is virtual / actual. As actual SOL approaches zero,
leverage tends to infinity; at zero it is undefined, not a finite
leverage setting. A virtual price can still be calculated, but it does
not make an empty reserve spendable.
SOL / BTC / USDC 3-token pool
The pairwise formula
Let P price token T in base B, with weights w_T, w_B and leverage
L_T, L_B. For positive actual reserves, in the continuous fee-free model
with other token balances fixed:
pmin = P × (1 − 1/L_B) ^ (1 + w_B/w_T) when L_B > 1
pmax = P × (1 − 1/L_T) ^ (−1 − w_T/w_B) when L_T > 1The lower edge exhausts B while selling T; the upper exhausts T while buying T. When that side's leverage is at or below 1, use zero for the lower edge or infinity for the upper edge.
Equal weights and 10× leverage give 0.81 × P and 1.23457 × P.
These are geometric boundaries, not executable quotes. At zero actual
T reserve with positive virtual T balance, use the reserve-based limit:
pmax = P. The leverage ratio itself is undefined there.
What can change a displayed range
Fees, liquidity changes, third-token trades and manager updates can change the calculated range. Rounding and sell-off limits can reject trades before its ideal edge.
The creation chart selects initial parameters; it does not fix the range permanently.