Strategy/
Concentrated liquidity: what a range actually does to fee income and inventory
Choosing a price range is the whole decision in modern liquidity provision. It sets how much of the pool’s fee income a position earns, how fast its inventory changes, and how often it has to be moved.
The first automated market makers spread a provider’s capital across every possible price, from zero to infinity. Most of that capital was never touched: a pool for two assets that trade near parity had almost all of its liquidity parked at prices that would never print. Concentrated liquidity, introduced in Uniswap v3 in 2021, lets a provider choose the range in which their capital is active. Inside that range the position behaves like a much larger full-range position. Outside it, the position holds a single asset and earns nothing.
That one change turned liquidity provision from a passive deposit into a position that has to be designed and managed. The range is the design.
What happens inside the range
Uniswap’s documentation describes the mechanism in terms of ticks, discrete price boundaries between which liquidity can be placed. A position spanning a narrow band of ticks provides the same depth in that band as a far larger full-range position would, which is why the design is described as capital efficient. Swap fees accrue only to liquidity that is active at the price where the swap occurs, so a position earns its share of the pool’s fee income while price is inside its range and nothing when it is not. Fee tiers, fixed in v3 at a small set of levels and configurable in v4, set the rate charged on each swap; the provider’s income is that rate times the volume that passes through their range, divided among everyone else with liquidity in the same place.
Two consequences follow. First, a narrower range earns more per dollar while it is in range, because the same volume is shared among less liquidity. Second, a narrower range is out of range more often, because price leaves a narrow band faster than a wide one. Fee income per unit of time is the product of those two effects, and the range that maximizes it depends on how the pair moves.
What happens to the inventory
A liquidity position is a standing offer to trade in both directions. As price rises through the range, the pool sells the appreciating asset to traders and the position accumulates the other one; as price falls, the reverse. At the upper edge of the range the position is entirely in the asset that fell, and at the lower edge entirely in the asset that rose. This is the mechanism behind impermanent loss, and concentration makes it faster: a narrow position converts its inventory over a small price move that a full-range position would barely notice.
The research literature on loss-versus-rebalancing frames this precisely. Milionis, Moallemi, Roughgarden and Zhang show that a liquidity provider’s return decomposes into market exposure, which the provider could have had by simply holding the assets, and a residual that is fee income minus what arbitrageurs extract by trading against the pool’s stale prices. Concentration increases both terms. The position earns more fees and it gives more to arbitrageurs, and which effect dominates is an empirical question about the pair and the range.
Setting the range
A range is a forecast of where price will spend its time over the holding period. The natural input is realized volatility: a pair that moves a certain amount over a week needs a range wide enough that price is expected to stay inside it for most of that week. Correlated pairs, an asset against its staked or wrapped version, move very little and support tight ranges. Volatile pairs need wide ranges, which dilutes the advantage of concentrating at all.
- Range width set from realized volatility over a lookback matched to the intended holding period
- Expected time in range as a design input, checked against the pair’s actual behavior afterwards
- Fee tier matched to the pair: low tiers for correlated pairs with heavy volume, higher tiers where divergence risk needs paying for
- Competing liquidity in the same band, which determines the position’s share of the volume that passes through it
Moving the range
When price approaches an edge, the provider faces a choice: leave the position to go out of range and stop earning, or withdraw, swap toward the new center and redeploy. Rebalancing restores fee income and crystallizes the inventory change that has already happened, at the cost of a swap fee and gas. Done on a reaction, rebalancing tends to sell after a fall and buy after a rise, which is the wrong way round. Done on a rule set before the position was opened, with a trigger distance and a minimum interval between moves, it is a cost the position was underwritten to pay.
Newer designs address the problem at the pool level. Meteora’s dynamic liquidity market maker on Solana organizes liquidity into discrete price bins and adds a variable fee that rises with volatility, so that providers are paid more in the conditions that cost them most. Uniswap v4 hooks allow a pool to attach similar logic. Neither removes the underlying trade-off. A range is a bet on where price will be, and the fee income it earns is the payment for taking the other side of everyone who disagrees.
Sources