Two versions of one trade
A script in six scenes and a curtain call. One of us deposited 1 ETH and 2,000 USDC into a 50/50 constant-product pool. The other did nothing at all. We walk the same price path and compare.
On the day ETH traded at $2,000, one person held 1.0 ETH and 2,000 USDC. That person split into two futures. POOL put everything into a 50/50 constant-product liquidity pool. WALLET kept everything in a wallet and touched nothing. Same tokens, same second. We are going to let them talk.

I put in 1.0 ETH and 2,000 USDC — four thousand dollars — into a 50/50 constant-product pool. The rule is x·y = k: the product of the two reserves stays constant, ignoring fees. Uniswap v1 and v2 are built on exactly this, and the v2 whitepaper (Adams, Zinsmeister, Robinson, March 2020) is the clean statement of it — liquidity spread evenly from zero to infinity, with one flat 0.30% fee flowing to LPs. My k is 2,000. Whatever the price does, I have to keep the product at 2,000.
I kept the same 1.0 ETH and 2,000 USDC in a wallet. Four thousand dollars, untouched. Same entry, same second, different life. I did not sign up for a quota.
For one row they are identical: position $4,000, HODL $4,000, gap zero. Then the price moves, and they never fully agree again.
Scene one: the machine sells my winner
ETH ticks up to $2,200. To hold k = 2,000 I rebalance to 0.953463 ETH and 2,097.62 USDC. The pool sold 0.046537 ETH — about 4.65% of my ETH — to a faster trader, and it did not ask. I am worth $4,195.24.
At $2,200 I am worth $4,200. I did nothing at all.
Note what happened. I made money. I put in $4,000 and I hold $4,195. I am simply $4.76 behind you — a quoted impermanent loss of −0.113%.
That exchange is the entire misunderstanding. POOL is up. POOL is also behind. Both are true at the same time, and the word “loss” only describes the second of them.
It gets louder as the price runs. At $3,000 the pool holds 0.816497 ETH and 2,449.49 USDC, worth $4,898.98; you are worth $5,000, and my quoted gap is −2.020%. At $4,000 I hold 0.707107 ETH and 2,828.43 USDC — the machine has sold 0.292893 of my original 1 ETH, nearly 30% of it — worth $5,656.85 against your $6,000, gap −5.719%. At $5,000: 0.632456 ETH and 3,162.28 USDC, $6,324.56 against your $7,000, gap −9.649%, with 36.75% of my ETH sold by a formula.
I am worth more at every one of those prices. I also never sold a winner. I just held it, which is the whole reason the gap exists.
Here is the transcript so far. Every row is a new price; the last columns are what the two of them were worth, and the distance between them.
| ETH price | ETH in pool | USDC in pool | ETH sold (net) | POOL value | WALLET value | Gap ($) | Gap (%) |
|---|---|---|---|---|---|---|---|
| $2,000 | 1.000000 | 2,000.00 | 0.000000 | $4,000.00 | $4,000.00 | $0.00 | 0.000% |
| $2,200 | 0.953463 | 2,097.62 | 0.046537 | $4,195.24 | $4,200.00 | -$4.76 | -0.113% |
| $2,500 | 0.894427 | 2,236.07 | 0.105573 | $4,472.14 | $4,500.00 | -$27.86 | -0.619% |
| $3,000 | 0.816497 | 2,449.49 | 0.183503 | $4,898.98 | $5,000.00 | -$101.02 | -2.020% |
| $4,000 | 0.707107 | 2,828.43 | 0.292893 | $5,656.85 | $6,000.00 | -$343.15 | -5.719% |
| $5,000 | 0.632456 | 3,162.28 | 0.367544 | $6,324.56 | $7,000.00 | -$675.44 | -9.649% |
| $3,000 | 0.816497 | 2,449.49 | 0.183503 | $4,898.98 | $5,000.00 | -$101.02 | -2.020% |
| $2,400 | 0.912871 | 2,190.89 | 0.087129 | $4,381.78 | $4,400.00 | -$18.22 | -0.414% |
| $2,000 | 1.000000 | 2,000.00 | 0.000000 | $4,000.00 | $4,000.00 | $0.00 | 0.000% |

Scene two: the word “impermanent”
Now the price rolls over. Back through $3,000, back to $2,400, and finally home to $2,000.
At $2,000 I hold 1.000000 ETH and 2,000.00 USDC — exactly as on day one. I am worth $4,000, and the gap is exactly 0.000%. This is where the word “impermanent” comes from, and the arithmetic says it plainly: if the relative price returns to where it started, the gap closes to zero. It was never a loss of my money. It was the shadow of a divergence, and the divergence is gone.
Then the sentence nobody finishes. The price almost never comes back to the exact ratio you entered at. Withdraw at any other row — the $2,400 row, the $5,000 row — and the gap stops being a shadow and becomes a number you cannot undo. That is the “it becomes permanent” half, and it is not the mechanism’s choice. It is yours, the moment you leave.
So “impermanent loss” is not a loss, and it is not impermanent. It is a relative number, and it stays relative until the position closes. The name is doing two jobs wrong at once.
The term itself has a history worth one line. “Impermanent loss” is most commonly credited to a 2019 Medium post by Pintail, “Uniswap: A Good Deal for Liquidity Providers?”. Bancor did not coin it — but Bancor is why you have heard it, because in 2020 its head of growth toured it as “DeFi’s dirty little secret” while pitching an insurance product. Anyone who had run a constant-product pool already knew the machine forced you to sell the thing that was going up. The name just gave people something to panic about.
Scene three: the mirror
The gap is not about up or down. It is about distance from the entry ratio, in either direction. A +100% move and a −50% move produce the same quoted gap: −5.719096%. A +400% and a −80% both give −25.464401%. A +900% and a −90% both give −42.504043%. I checked those pairs in code and they match to twelve decimal places, because the number is just the value ratio:
V_LP / V_HODL = 2 × √r / (1 + r), where r is the price ratio.
Read that as a mirror down the middle. +10% and its inverse −9.1% land on the same −0.1134%. +50% and −33.3% land on the same −2.0204%.
| Price move | Inverse move | POOL / WALLET | Gap |
|---|---|---|---|
| +10% | -9.1% | 0.998866 | -0.1134% |
| +25% | -20.0% | 0.993808 | -0.6192% |
| +50% | -33.3% | 0.979796 | -2.0204% |
| +100% | -50.0% | 0.942809 | -5.7191% |
| +200% | -66.7% | 0.866025 | -13.3975% |
| +400% | -80.0% | 0.745356 | -25.4644% |
| +900% | -90.0% | 0.574960 | -42.5040% |
| +1900% | -95.0% | 0.425918 | -57.4082% |
| +4900% | -98.0% | 0.277297 | -72.2703% |
| +9900% | -99.0% | 0.198020 | -80.1980% |
It is symmetric because it was never about direction. It was always about how far the pool’s token mix drifted from the mix I walked in with. A 2x move costs about 5.7%. A 5x move costs about 25%. A 100x move — a +9,900% moonshot — costs about 80% of the wallet value. The curve bends hard, and it bends further the further you go.
Scene four: the tighter range
Everything so far is a full-range v2 pool. Uniswap v3, live since May 2021 on a March 2021 whitepaper, changed the shape with concentrated liquidity: instead of spreading capital from zero to infinity, you pick a band and your capital only works inside it.
Concentration magnifies exactly the factor I am short. Inside my band I am backed by more reserves, so the same move pushes my token mix around harder. I computed it for one ±20% move rather than quoting a slogan:
| Range | +20% move | -20% move |
|---|---|---|
| Full range (v2) | -0.414% | -0.619% |
| [0.75, 1.25] | -3.495% | -5.103% |
| [0.80, 1.20] | -4.335% | -6.359% |
| [0.90, 1.10] | -6.566% | -9.083% |
Same price move, and the gap goes from six-tenths of a percent to nine. And look at the last row — at a [0.90, 1.10] band the price is already outside the range on both sides, which is why the number is worst there: my position sits 100% in one token, earning no fee at all while it waits. The concentration that juiced the fee is the same mechanism that switches the fee off.
I went looking for a single clean multiplier — “v3 is 5x worse,” that kind of thing — and did not find one I trust, because there is not one. The amplification depends entirely on how tight the band is relative to the move. “Worse, and by how much depends on the range” is the honest answer, not a number I could pull out of the air.
And the aggregate evidence is uglier than any single row. Loesch, Hindman, Richardson and Welch analysed seventeen Uniswap v3 pools covering 43% of the protocol’s TVL and found the LPs earned $199.3m in fees while taking $260.1m of impermanent loss — about $60.8m worse than simply holding the same tokens, with roughly half the providers at negative net returns. That is the real price of the leverage, and it is on nobody’s dashboard.

Scene five: the fees
Which leaves the only question that matters.
Not “did POOL make money?” POOL made money. The question is whether the fees outran the gap.
Right. Assume the fees have to clear the gap, not beat zero. If the accumulated fee income does not outrun the drift the machine opened, then I was the exit liquidity for someone faster — and the fee I was so proud of was the toll they paid me to take the other side of their trade.
Curtain call
So here is where the two of them ended, in their own words.
I am not a loss. I am a comparison. I sold the winners and bought the losers, on schedule, without asking, because a formula said so. Judge me against a portfolio that never existed and I look like a mistake; judge me against the dollars I actually hold and I made money. The word “loss” let people skip the comparison. That was the whole trick.
I did nothing, and doing nothing is the benchmark everyone forgets to name. When the price came home I paid nothing and lost nothing — and I also earned no fee, sold no winner, and captured none of the movement. I am not the hero. I am the yardstick.
Neither of them is lying. Impermanent loss is not money that left your pocket; it is the distance to a trade you did not make, priced at the end of the day. The machine sold your winners and bought your losers, on schedule, without asking. Whether that is bad depends on which future you were quietly hoping for — and on whether you ever stopped to ask what you were comparing it to.
Ledger and gap columns computed with a constant-product AMM using the Uniswap v2 whitepaper (Adams, Zinsmeister, Robinson, March 2020); v3 figures from the v3 whitepaper (March 2021). Aggregate LP study: Loesch, Hindman, Richardson and Welch. Not financial advice.
(The End)






