OtterLiquidityDocs
Concepts

Ranges and price steps

Why range boundaries are not arbitrary numbers, and what a price step actually is.

Liquidity lives in a band

In the pools Otter works with, providing liquidity means choosing a lower and an upper price. Your capital is only used — and only earns fees — while the market price sits between them. Outside that band your position is inert: it holds one of the two tokens and earns nothing at all.

Narrowing the band concentrates the same capital into a smaller price span, which increases your share of the fees from every swap that passes through it. It also means the price leaves your band sooner. That trade is the whole decision, and there is no setting that avoids it.

Steps, not a continuum

Price is not continuous inside these pools. It moves along discrete steps, and every pool has a step size fixed by its fee tier. A pool charging 0.30% uses a step size of 60, which works out to roughly 0.6% of price per step; a stable pool at 0.01% uses a step size of 1 and its steps are around a hundredth of a percent apart.

Range boundaries have to land exactly on a step. This is a contract-level rule, not a preference, which is why a typed price is snapped and the field rewritten.

Fee tierStep sizeApprox. width per stepTypical use
0.01%1~0.01%Stable pairs
0.05%10~0.10%Correlated pairs
0.30%60~0.60%Most pairs
1.00%200~2.00%Volatile and thin pairs

Named presets

Four starting points sit above the price boxes: Tight, Balanced, Wide and Full range. They are starting points rather than the only choices — every one of them can be dragged or typed over afterwards, and the numbers below them follow whatever the range actually is.

None of them is a fixed percentage. Each width is derived from the pool's own step size, because the same percentage means completely different things in different pools: a range of ±8% is eight hundred steps in a pool that moves 0.01% per step and four steps in a pool that moves 2%. The scaling is deliberately sub-linear, so a pool whose steps are a hundred times larger gets a range about thirty-six times wider rather than a hundred times wider. In practice Tight lands near ±0.3% on a one-step stable pool and near ±20% on a coarse volatile one.

PresetWhat you are accepting
TightThe largest share of each swap that passes through, and the range you will be moving most often.
BalancedA real share of the fees without watching it daily. This is the default when the page opens.
WideStays in range through most moves, and earns least while it does.
Full rangeEvery price. Never out of range, and the smallest share of every swap.

Under the buttons, three figures describe the range currently set: how many price steps it covers, roughly what share of the fees it takes while in range compared with a wide reference band, and roughly how much of the time it should be expected to be earning at all.

These are estimates, not projections

The fee share is a comparison of widths, and the time in range comes from the width alone. Neither figure knows how much this pair actually moves, how much volume it sees, or where everyone else has put their liquidity. They are the same arithmetic as the simulator on the home page, computed once and used in both places, and they are useful for comparing one range against another rather than for predicting what you will earn.

Ranges by market value

Where the market value of the first token is known, the two boxes can be switched from price to market value. For a token priced in the eighth decimal place a price range is a string of zeros that means nothing to anybody, while "from sixty million to a hundred and fifty million" is immediately legible.

It is a presentation layer over the same boundaries: the number is multiplied by a constant and then snapped to the same step, so a range entered either way produces exactly the same position. Where the supply behind that number is not known, the switch is not offered at all rather than shown with a figure that cannot be computed.

Single-sided ranges

A range placed entirely above or entirely below the current price holds one token only and earns nothing until the price reaches it. Some people use this deliberately as a resting order: put the range above the price with the base token in it, and as the price passes through, the position converts into the other token.

There is no special contract behind this. It is an ordinary position with an unusual range, and Otter warns you rather than blocking it.