The tighter you set the range, the better the projected APR looks on the day you open the position. That is the trap, and nearly everyone providing liquidity on a Uniswap v3 style DEX walks into it at least once. I certainly did. My first concentrated position was ETH against a stablecoin in a band so narrow the dashboard quoted a fee rate that should have made me suspicious, and it lasted about two days before price walked out the top and left me holding stablecoins that earned nothing. Everything I did after that, rebalancing back in, widening, second-guessing the widening, cost more than the fees I had collected.
Range width is the decision that everything else hangs off. Which pool, which fee tier, how much size, all of that matters less than the band itself, because width is the single dial that trades fee capture against impermanent loss and rebalancing costs. Concentrating liquidity into a narrow band multiplies your share of fees while price sits inside it, and it multiplies the loss you take relative to just holding the two assets when price moves. Same lever, both directions, and the dashboards only show you one of them.
Start from how much the pair actually moves
A range is a bet that price stays inside it for however long you plan to leave the position alone. So there are only two inputs that matter. How much does this pair move, and how often are you honestly willing to look at the position.
For the first input, pull realized volatility. Daily moves over the last month or so are fine, nothing fancy, a spreadsheet with daily closes gets you there. For the second, be honest with yourself. If you check your positions once a week, your horizon is a week, whatever your intentions were on the day you deposited.
Then the arithmetic is short. Expected price movement scales roughly with the square root of time, so a pair that moves about two percent a day moves something like five percent over a week. If you want decent odds that price is still inside your band at the end of that week, set the band at roughly twice the expected move on each side, which in this example works out to around plus and minus ten percent. Widen it if the pair has been trending hard in one direction, widen it if you hate rebalancing, tighten it only if you will genuinely babysit the position.
Fee tier is the cross-check. Stable pairs on the lowest tiers barely move, so ranges there can be brutally tight and stay in range for weeks, which is why the professional liquidity in those pools sits packed within a fraction of a percent of the peg. A major pair like ETH against a stablecoin on a middle tier needs the volatility-based sizing above. Long-tail tokens on the highest tier move so much that a narrow range is usually pointless, you will be out of it within days, and the high fee tier exists precisely because those pools expect to bleed impermanent loss and need the premium to compensate.
The framing that keeps me honest is that an LP position is functionally a short volatility trade. You are selling optionality to arbitrageurs and the fees are your premium. A narrow range is selling close to at the money, where the premium is fattest and you get run over fastest. Nobody sells at the money options without a view on volatility, but people set ten percent ranges on high volatility pairs every day because the interface makes it feel like farming rather than trading.
When full range is the honest choice
Full range positions get dismissed as capital inefficient, and mathematically they are. A tight band around the current price can earn many times the fees of the same capital spread from zero to infinity. But there are situations where full range, or something close to it, is the right call rather than the lazy one.
- You cannot or will not monitor the position. Full range never goes out of range, never needs rebalancing, and degrades gracefully instead of suddenly.
- The token is long tail or newly launched and you have no real read on its volatility. When a 5x move in either direction is plausible, any range you draw is a guess wearing a suit.
- The position is small relative to transaction costs. On expensive chains, rebalancing a modest position can burn a meaningful slice of it every time, and full range removes the need entirely.
- You actually want long-term exposure to both assets and treat fees as a bonus on top of holding, which is the old v2 mindset and remains a perfectly coherent one.
There is also a middle ground people skip past, the deliberately wide range, something like half the current price to double it. You keep most of the passivity of full range while earning several times its fee rate, and for volatile majors that trade in wide cycles it is often the best ratio of return to attention.
Rebalancing quietly eats the returns
Here is the mechanic that makes width mistakes expensive. When price exits the top of your range, the position has sold all of its volatile asset on the way up, so you are sitting entirely in the quote asset having sold your winner early. Rebalancing means buying it back higher. When price exits the bottom, you are holding only the asset that fell, and rebalancing means selling it lower. Every rebalance after an exit buys high or sells low by construction. That is the moment impermanent loss stops being impermanent, and you pay gas and swap fees on top for the privilege.
In a choppy sideways market this rarely bites. Price oscillates inside the band, you collect fees on every crossing, and a narrow range genuinely outperforms. In a trending market the same setup becomes a treadmill. Price exits, you rebalance in the direction of the trend, price exits again, and each cycle locks in a loss. I have watched people rebalance a trending pair week after week, each fresh dashboard showing a healthy fee APR, while the position steadily lost ground against simply holding the assets. The fee number was real, it was just smaller than the realized losses, and no interface puts those two figures side by side.
The defense is deciding your rebalancing rules before you enter. Do not rebalance on first touch. Price crosses range boundaries and comes back constantly, and reacting to every exit is the most expensive possible policy. A waiting rule, something like only rebalancing once price has been out of range for a couple of days or has moved a further few percent past the boundary, filters out most of the noise exits while still catching genuine regime changes.
The process, start to finish
- Pull about a month of daily closes for the pair and compute realized daily volatility.
- Pick your check-in horizon honestly, in days.
- Multiply daily volatility by the square root of the horizon to get the expected move, then set the band at roughly twice that on each side of the current price.
- Estimate the fees the position should earn over one horizon and compare against the full cost of one rebalance, meaning gas plus swap fees plus the typical realized loss from an exit. If projected fees do not cover several rebalances, widen the range, pick a different pool, or pass.
- Write down your exit rules before depositing. How long out of range before you rebalance, and how many rebalances before you concede the range was wrong and close the position.
- Benchmark the whole thing against a 50/50 hold of the two assets over the same period. If the LP position trails holding after a few cycles, the width or the pair was wrong, and more rebalancing will not fix it.
The volatility inputs come from the same OHLCV data I already keep around for backtesting in Blockcircle, but any source of daily closes and a spreadsheet will do. The math is one column of returns and a standard deviation.
None of this guarantees the position beats holding, because short volatility strategies have bad stretches no matter how carefully they are sized. What it does is turn the width decision into a calculation instead of a vibe, and it surfaces a bad range after one cycle rather than six rebalances deep, which in my experience is the difference between LPing as a strategy and LPing as a slow leak.