← All posts

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.

Strategy6 min readDeFiLoops

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%
57.9%
fee APR
The number people read as the result.
$-62,828
impermanent loss
−6.4%
the actual outcome

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:

bandfeesin rangetotal
1,200–5,000$27,14499.8%+16.3%
2,000–4,200$33,49665.9%+20.1%
2,400–3,400$39,44935.5%+27.2%
2,800–3,200$37,04412.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.

  1. 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.

  2. 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.

  3. 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:

rungsfeesin range
2$32,79333.0%
4$32,61716.5%
6$32,57811.0%
8$32,4488.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.