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
- Check the in-range figure first
- 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
In short: you see a Uniswap pool with a high APY and want to know if providing liquidity will really make you money. One study found about half of liquidity providers lost money, because impermanent loss, the value lost when the two tokens’ prices move apart, came to $260 million against $199 million in fees. In one real year-long test on $100,000, fees came to 57.9% a year and the position still finished down 6.4%. Test your price range on past data before you open it: in one test the best range was neither the widest nor the narrowest.
Research from Bancor and IntoTheBlock followed about 17,000 wallets across 17 Uniswap v3 pools (43% of the exchange’s liquidity) for the first 5 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 stays the same, and so does the gap between the two numbers.
Those figures get quoted a lot and argued about almost never. The more interesting question is why somebody would find out afterwards.
The advertised rate is answering a different question
A pool quotes an APY. That number covers the last 24 hours, across the pool’s entire book, for liquidity spread everywhere.
Your position sits in a band. On any day the price is outside that band it earns nothing, and the pool keeps quoting the same rate.
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, but you still put in $100,000 and finished with less, in a year where the headline number said 57.9%.
Check the in-range figure first
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.
We could not have predicted that third row without measuring it.
Three findings that survive every test we have run
Measured across 2024–2026, on all three networks. We repeat them with every answer because people most often reach the opposite conclusions.
- 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.
- The best fee tier depends on the asset *and* the band
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.
The second one goes against common advice. “Use the 0.05% tier for stable pairs and 0.30% for volatile ones” is standard, and it is a claim about the asset. The measurement says the right tier also depends on your band, which that advice leaves out.
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 means less of your money working at any moment. A four-rung ladder runs at about a quarter utilisation, which is what the strategy claims, and here you can measure it.
What to distrust, including in our own numbers
Be suspicious of a backtest that never warns about itself. 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 instead of 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.
Size changes the answer too; you cannot scale a result up. 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.
If a survey and a backtest of the same pool disagree about what it earned, nobody notices a defect. They believe whichever answer they saw.
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, measure the bands you are considering first, look at the total instead of 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.