Half of Uniswap LPs lose money. Here is how to check first.
Over half of Uniswap v3 positions finish behind once impermanent loss is counted. The advertised APY cannot tell you that. Here is the number that can.
- The advertised rate is answering a different question
- What the number looks like when you do have the history
- In range comes first, and it decides everything else
- The band decides the answer, and the best one is not obvious
- Three findings that survive every test we have run
- Defaults are real answers to different questions
- What to distrust, including in our own numbers
- The history underneath
- Ask before you commit
Research from Bancor and IntoTheBlock followed about 17,000 wallets across 17 Uniswap v3 pools — 43% of the exchange’s liquidity — for the first five months after launch. Those pools earned $199 million in fees and took $260 million in impermanent loss, leaving roughly half of the liquidity providers with negative returns.
The percentage moves depending on what you count: wallets or positions, every pair or only the volatile ones. The direction does not move, and neither does the gap between the two numbers.
Those figures get quoted a lot and argued about almost never, which is a shame, because the interesting question is not whether they are true. It is why somebody would find out afterwards.
The advertised rate is answering a different question
A pool quotes an APY. That number is the last twenty-four hours, across the pool’s entire book, for liquidity spread everywhere.
Your position is not spread everywhere. It sits in a band. On any day the price is outside that band it earns nothing — while the quoted rate carries on being quoted.
Search for help with this and you will find calculators. A calculator takes the inputs you already guessed and does arithmetic on them. It cannot tell you what a band would have done, because it has no history to walk.
What the number looks like when you do have the history
Here is a real run: recentre-on-exit, $100,000, one year, on the Ethereum USDC/WETH 0.05% pool.
in range 96.7% of days
fee APR 57.9%
net APR 57.1% after gas and swap costs
impermanent -62.8%/yr
kept -5.7%/yr fees after impermanent loss
fees collected $57,910
impermanent $-62,828
total -6.4%
For completeness: simply holding the same two tokens over that window returned −11.5%, so this position beat holding by five points. That is worth knowing and it is not the verdict. The verdict is that you put in $100,000 and finished with less, in a year where the headline number said 57.9%.
In range comes first, and it decides everything else
The in-range figure leads the report for a reason: every rate beneath it is computed across the whole window regardless.
A band that held the price 19% of the time earned nothing for the other 81%, and its fee APR is still quoted over the full period — because that is what an APR is. Two positions can advertise the same APR and have spent wildly different fractions of the year actually working.
The band decides the answer, and the best one is not obvious
Same pool, same size, same window — $100,000 in ethereum|USDC/WETH|500, January 2025 to
September 2026. Only the band changes:
| band | fees | in range | total |
|---|---|---|---|
| 1,200–5,000 | $27,144 | 99.8% | +16.3% |
| 2,000–4,200 | $33,496 | 65.9% | +20.1% |
| 2,400–3,400 | $39,449 | 35.5% | +27.2% |
| 2,800–3,200 | $37,044 | 12.6% | +21.1% |
A narrower band earns more while it holds, and holds for less of the window. The two effects pull against each other, and the best of these four is neither the widest nor the tightest.
You cannot reason your way to that third row. You can only measure it.
Three findings that survive every test we have run
Measured across 2024–2026, on all three networks, and repeated with every answer because they are the conclusions people most often reach the other way round.
- One wide band beats several narrow ones, at the same capital
Splitting lost money at every division tested — 2, 3, 5, 10 and 20 bands, on every chain, on both assets. A narrow band sits near its own edge more often, and a position at its edge holds one asset and earns least.
- Fee tier depends on the asset *and* the band, not the asset alone
On single wide bands, 0.05% beat 0.30% on BTC and lost to it on ETH — by about 13% each way. Narrow the band and it flips. Compare tiers within one band; across bands the comparison means nothing.
- If a band is too large for the pool, spread across chains, not across ranges
Splitting the range does not reduce your share of any single pool. It only idles capital.
That second one is worth sitting with. “Use the 0.05% tier for stable pairs and 0.30% for volatile ones” is standard advice, and it is a claim about the asset. The measurement says the tier interacts with your band, which means the advice is answering a question you did not ask.
Defaults are real answers to different questions
If you backtest a ladder and do not say how many rungs, it runs at four:
| rungs | fees | in range |
|---|---|---|
| 2 | $32,793 | 33.0% |
| 4 | $32,617 | 16.5% |
| 6 | $32,578 | 11.0% |
| 8 | $32,448 | 8.2% |
More rungs, less of your money working at any moment. A four-rung ladder runs at about a quarter utilisation — which is the strategy’s own claim, here measurable rather than asserted.
What to distrust, including in our own numbers
A backtest that never warns about itself is one to be suspicious of. Ours returns two warnings that change how much the figures are worth:
- The indexer priced none of this volume
- Fees were rebuilt from the stable leg rather than read. An estimate, and labelled one.
- The protocol fee could not be read
- The cut taken out of every fee is assumed. On a pool where that cut is 25%, assuming none overstates the result by a third.
- The strategy flatters itself
- Recentre-on-exit reopens the band the day it goes out of range, so it is in range almost always BY CONSTRUCTION. The answer says so, and says what a single day of delay costs.
And size is an input, not a scale. Fees split by liquidity, so a large position earns a share it could not earn twice. Past roughly a tenth of the pool, the answer describes a pool your own deposit would have changed — and the tool tells you which fraction you are.
The history underneath
41 pools across Ethereum, Base and Arbitrum, reaching back to 5 May 2021.
There is one copy of it. There used to be two — this system kept its own synced copy beside the backtester’s, and they drifted to 39 pools against 32, with 30 in common, because the two syncs ran on different schedules against an indexer that backfills.
Two copies of one history is not redundancy. It is two answers to the same question, and which one you see depends on which service you happened to ask.
A survey and a backtest of the same pool disagreeing about what it earned is not a defect somebody would find. It is one they would believe.
Ask before you commit
None of this spends anything. Of fifty-two tools, five move money and the rest only read. Naming a pair and every band you are weighing costs one call, and the answer comes back in two halves — the fee table, and then what the deposit was actually worth at the end.
If you are about to provide liquidity, the honest order of operations is: measure the bands you are considering, look at the total rather than the fee line, and only then decide whether the position is worth opening.
Half the liquidity providers in that study did it the other way round.