Impermanent loss compares a liquidity-pool position with holding the same original tokens at the same ending prices. For a full-range 50/50 constant-product pool, it measures the fee-free shortfall caused by changing token quantities as the relative price moves. A position can gain in dollars and still trail holding; fees and other costs determine the final net comparison.
An automated market maker (AMM) prices swaps from a pool's reserves. As a liquidity provider (LP), you own a claim on changing token quantities. Reconstruct both inventories before deciding whether fee income compensated for the difference. Comparing the pool with its original deposit alone answers whether it gained or lost in the reporting currency.
Fix the benchmark before doing arithmetic
Use a hypothetical pair of token A and token B. Token B is stipulated to remain worth $1 throughout this example; this is an assumption, not a statement that any stablecoin is guaranteed to hold its peg.
Start with 4 A and 8,000 B when one A costs 2,000 B. Each side is worth 8,000 B, so the starting allocation is 50/50 by value and totals 16,000 B.
Compare two uses of exactly those tokens:
- The LP position contributes them to a full-range constant-product pool.
- The holding benchmark keeps 4 A and 8,000 B unchanged outside the pool.
Holding only A, selling everything into B or regularly rebalancing the benchmark would produce different comparisons. Name those separately if they are useful.
Treat the pool quantities below as the reserves attributable to an unchanged LP share. Proportional scaling from a larger pool leaves the price ratio unchanged. Assume ordinary token transfers, no external deposits or withdrawals, and no fees for the first calculation. Ignore contract rounding and minimum locked liquidity.
Reconstruct the pool claim at the new price
For this fee-free model, the reserve product is x × y = k, where x is A and y is B. Its marginal price is P = y/x, measured in B per A. The Uniswap v2 whitepaper describes the reserve-ratio price and how arbitrage tends to bring it toward the external market price.
We assume exact alignment for the illustration. A deployed fee-charging pool can remain within an arbitrage band rather than match an external price exactly.
The starting product is 4 × 8,000 = 32,000. Solving the product and price equations together gives:
x1 = sqrt(k/P1)
y1 = sqrt(k × P1)
Suppose A ends at 4,500 B. That is a relative price multiple of 4,500/2,000 = 2.25. The LP claim becomes:
- A quantity:
sqrt(32,000/4,500) = 2.666667 A, rounded. - B quantity:
sqrt(32,000 × 4,500) = 12,000 B. - Ending value:
2.666667 × 4,500 + 12,000 ≈ 24,000 B.
The pool has exchanged some appreciating A for B as trading moved the price. Holding retains the original quantities, worth 4 × 4,500 + 8,000 = 26,000 B.
The shortfall is 2,000 B. Divide by the ending holding benchmark to express impermanent loss:
24,000/26,000 − 1 = −7.6923%
Against the starting 16,000 B, the LP gained 50%, while holding gained 62.5%. That difference is 12.5 percentage points of starting-capital return. It is not the same denominator as the 7.6923% shortfall against ending holding value.
A bullish narrative explored through AI crypto sentiment analysis does not change this arithmetic: a rising token price can accompany LP underperformance.
Check the result across alternative endpoints
Let r = P1/P0. Substituting the reconstructed reserves into the two valuations gives the shortcut:
LP value / holding value − 1 = 2 × sqrt(r)/(1 + r) − 1
This is the fee-free relative-loss relationship documented in Uniswap's explanation of LP returns. It depends on the full-range, equal-starting-value constant-product assumptions; it is not a universal calculator for every pool design.
These are alternative hypothetical endpoints for the same starting position, not successive periods to compound. Values are in B, with B still assumed to equal $1.
| Ending A price in B | LP quantity A | LP quantity B | LP value | Original-token holding value | LP shortfall vs holding |
|---|---|---|---|---|---|
| 500 | 8.000000 | 4,000 | 8,000 | 10,000 | 20.0000% |
| 2,000 | 4.000000 | 8,000 | 16,000 | 16,000 | 0.0000% |
| 4,500 | 2.666667 | 12,000 | 24,000 | 26,000 | 7.6923% |
| 8,000 | 2.000000 | 16,000 | 32,000 | 40,000 | 20.0000% |
At one-quarter and four times the entry price, the relative shortfall is the same 20%. The dollar experience is very different. In the first row, both choices lose value; in the last, both gain. Impermanent loss alone cannot describe the position's absolute return.
Relative price also matters more than either token's isolated dollar move. If both tokens lose dollar value together without changing their relative price, the model can show zero impermanent loss while both inventories lose dollars. The $1 B assumption deliberately removes that extra valuation dimension from the table.
Add fees once, using the position's actual claim
Uniswap v2 retains swap fees in pool reserves, increasing the reserve product. A redemption value calculated from those reserves already includes embedded fee effects. By contrast, Uniswap v3 and v4 account for fees as separately claimable balances. The current Uniswap fee documentation explains these differences and the distinction between LP fees and protocol fees.
For an actual v2-style position, value the claim from current reserves and the actual redeemable share. Do not calculate that value and then add the same retained fees again. Where a position has separately claimable fees, include those balances once at the same valuation time.
Now apply a separate hypothetical fee sensitivity to the 4,500 B endpoint. Stipulate that the fee-inclusive redeemable claim is 24,600 B, compared with the fee-free model's 24,000 B. The 600 B uplift is an assumed ending-value difference after protocol allocations, not a reconstruction or sum of individual swap fees.
Also assume LP operations cost 120 B more than holding over the comparison window.
| Comparison item | Value in B |
|---|---|
| Fee-free LP value from the earlier model | 24,000 |
| Stipulated fee-inclusive redeemable LP claim | 24,600 |
| Additional LP costs relative to holding | −120 |
| Net LP value | 24,480 |
| Original-token holding benchmark | 26,000 |
| Net LP value minus holding | −1,520 |
The net LP position gains 53% on its initial value but finishes 5.8462% below holding. These are different performance statements, and both are needed.
With these endpoint and cost assumptions, the fee-related uplift needed to match holding is 26,000 − 24,000 + 120 = 2,120 B. An uplift of 2,000 B would close the inventory gap but still leave the extra 120 B of costs.
This threshold is a sensitivity calculation, not expected fee income. A swap fee tier is charged on trading volume, not paid as a fixed return on your deposit. Your allocation, protocol deductions, changing liquidity and the trading path all affect the actual outcome. A complete live calculation uses actual balances and claims rather than assuming every unit of reported volume belongs to your position.
What “impermanent” does and does not tell you
In the unchanged fee-free model, a return to the entry relative price restores the original quantities and eliminates the gap. There is no promise that the price will return. Waiting also preserves exposure to the tokens and pool.
Removing liquidity settles the current claim. It does not reserve a later right to the original inventory if prices recover. After withdrawal, the assets you actually hold determine the next result.
The endpoint shortcut also does not establish the safety of a position. Uniswap's liquidity-risk overview identifies smart-contract vulnerabilities, token-team risks and network costs alongside price-related risks.
Check the exact asset contracts and chain before treating similarly named tokens as interchangeable. A wrapped asset or bridged token adds redemption and infrastructure questions covered in the wrapped-token and bridge-risk guide. Those risks are outside the reserve-product calculation.
A concentrated position needs its actual range and inventory equations. The concentrated-liquidity execution guide explains how active ranges change swap behavior; the full-range table here cannot be applied unchanged to a narrow range. Weighted pools and stable-swap designs also require their own models.
Build a comparison that another reader can reproduce
Use this worksheet before interpreting an LP return display.
| Evidence to retain | What to verify |
|---|---|
| Chain, pool address, version and block | The claim and reserve data describe the same position and state |
| Token contracts, order and decimals | Quantities and relative-price direction use consistent units |
| Entry quantities and entry prices | The holding benchmark starts with exactly the contributed tokens |
| Ending redeemable quantities | Inventory comes from the actual claim, not the original deposit |
| Embedded or separately claimable fees | Every fee balance enters the ending value exactly once |
| Ending prices and reporting currency | Both choices use identical valuation timestamps and price sources |
| Costs and external flows | Gas, conversions, additions and withdrawals are recorded within a stated comparison boundary |
First value the unchanged holding inventory. Then value the redeemable LP inventory, add any fees held outside that claim, and subtract the incremental costs relative to holding. Report the fee-free model gap separately from the measured net difference.
If capital was added or removed, the one-deposit shortcut no longer describes the whole history. Preserve dated flows and construct a matching benchmark for those contributions. If you changed holdings during the window, the portfolio return-contribution guide explains why exposure and interval boundaries matter when attributing a result.
Before judging a pool by fee income, write down two ending values: what the position can redeem after costs, and what the same original tokens would be worth. Keep that benchmark beside the result so a gain from entry cannot conceal a shortfall against holding.
