📝

Draft article

This draft is visible to admins and superusers only. Sign in with an authorized account.

← Quay lại danh sách bài viết
July 25, 2026
5 phút đọc

Impermanent Loss and LVR: the real math of LP profitability

Impermanent Loss and LVR: the real math of LP profitability
#defi
#amm
#impermanent loss
#lvr
#uniswap
#market making
#volatility
#quant

Providing liquidity looks like a yield product and behaves like a short options book. The APR headline on a pool dashboard is a gross number: it counts the fees flowing in and quietly ignores the two costs that flow out — the divergence between what your position becomes and what you deposited (impermanent loss), and the steadier, sneakier bleed to arbitrageurs who pick off your stale quotes on every price move (loss-versus-rebalancing). Get the accounting right and the whole business reduces to one inequality: does the fee stream clear the volatility-driven cost of holding the position? Get it wrong and you are a systematic seller of variance who forgot to price the variance.

This article is the promised follow-up to Uniswap v3 for quants, which ended by naming loss-versus-rebalancing and pointing here. We build the profitability calculus from first principles: the closed form for impermanent loss on a constant-product pool, why concentrated liquidity is leveraged IL, the σ²/8 LVR result and the exact PnL decomposition it enables, how per-block markout measures adverse selection empirically, and the break-even condition — a fee-versus-volatility comparison — that tells you when an LP position is actually +EV against simply holding the tokens.

The constant-product invariant and the birth of impermanent loss

A Uniswap v2 pool holds reserves xx of the risky token and yy of the numéraire and enforces xy=kx \cdot y = k on every trade. The marginal price of the risky asset is P=y/xP = y/x. Because kk is conserved, the reserves at any price PP are pinned:

x(P)=kP,y(P)=kP.x(P) = \sqrt{\frac{k}{P}}, \qquad y(P) = \sqrt{kP}.

Start at price p0p_0 with reserves (x0,y0)(x_0, y_0) and let the price drift to pp. The LP's position is worth, marked at the new price,

VLP(p)=x(p)p+y(p)=kp+kp=2kp.V_{\text{LP}}(p) = x(p)\,p + y(p) = \sqrt{kp} + \sqrt{kp} = 2\sqrt{kp}.

Had you simply held the deposited tokens instead of pooling them, you would be worth

VHODL(p)=x0p+y0=k/p0  p+kp0.V_{\text{HODL}}(p) = x_0\,p + y_0 = \sqrt{k/p_0}\;p + \sqrt{kp_0}.

Define the price ratio r=p/p0r = p/p_0. Divide, and the k\sqrt{k} and p0\sqrt{p_0} cancel cleanly, leaving impermanent loss as a function of the price ratio alone:

IL(r)=VLPVHODL1=2r1+r1.\text{IL}(r) = \frac{V_{\text{LP}}}{V_{\text{HODL}}} - 1 = \frac{2\sqrt{r}}{1 + r} - 1.

That is the entire object. It is negative for every r1r \neq 1 and zero only when the price returns to where you entered — "impermanent" precisely because it vanishes if the price comes back. Two properties are worth internalizing.

It is symmetric in log-price. Substitute r1/rr \to 1/r: the expression is unchanged, because 21/r1+1/r=2r1+r\frac{2\sqrt{1/r}}{1 + 1/r} = \frac{2\sqrt r}{1 + r}. A doubling and a halving hurt identically. Concretely, a 2× move (r=2r=2) and a −50% move (r=0.5r = 0.5) both give

IL=2231=5.72%.\text{IL} = \frac{2\sqrt 2}{3} - 1 = -5.72\%.

The symmetry is cleanest when you write the price ratio in logs. With u=lnru = \ln r, a short manipulation collapses IL into a hyperbolic secant:

IL(r)=sech ⁣(12lnr)1    (lnr)28(small moves),\text{IL}(r) = \operatorname{sech}\!\left(\tfrac{1}{2}\ln r\right) - 1 \;\approx\; -\frac{(\ln r)^2}{8}\quad(\text{small moves}),

which makes the quadratic-in-log-return shape explicit: near the entry price, IL grows with the square of the log price move — the signature of a short-gamma payoff, and the reason it stays negligible for small wiggles and bites hard on trends.

Price ratio rr Move IL vs HODL
0.50 −50% −5.72%
0.70 −30% −1.57%
0.90 −10% −0.14%
1.00 flat 0.00%
1.10 +10% −0.11%
1.50 +50% −2.02%
2.00 −5.72%
4.00 −20.0%

Impermanent loss as a function of price ratio, symmetric U-shaped curve zero at the entry price and steepening with larger moves

The numbers look small until you remember what they measure: IL is the gap versus holding, and it is realized only relative to that benchmark. A token that 4×'s leaves the LP up a great deal in dollar terms — just 20% less than if they had held. IL is not a loss you feel; it is an opportunity cost you have to be paid to bear. The fee stream is that payment. Whether it is enough is the rest of this article.

Concentrated liquidity is leveraged impermanent loss

Uniswap v3 lets an LP confine capital to a price range [pa,pb][p_a, p_b]. Inside the range the position behaves exactly like a v2 pool — same bonding curve — but using only the reserves needed to cover that band (the virtual-reserve construction derived in the v3 mechanics article). The consequence for IL is sharp, and it falls out of one line of algebra.

Write s=ps = \sqrt p. A v3 position with liquidity LL on [pa,pb][p_a, p_b], entered at price p0p_0 and still in range at pp, holds x(p)=L(1/p1/pb)x(p) = L(1/\sqrt p - 1/\sqrt{p_b}) and y(p)=L(ppa)y(p) = L(\sqrt p - \sqrt{p_a}). Compute its value minus the HODL value of its own initial tokens, and everything involving pap_a and pbp_b cancels:

VLP(p)VHODL(p)=L(pp0)2p0.V_{\text{LP}}(p) - V_{\text{HODL}}(p) = -\,L\,\frac{\left(\sqrt p - \sqrt{p_0}\right)^2}{\sqrt{p_0}}.

This is the same absolute divergence loss as a v2 pool with the identical LL — the range bounds do not appear. So where does the extra pain come from? From capital. Concentrating into [pa,pb][p_a, p_b] lets the same dollars back a far larger LL. For a range geometrically centered on the entry price the amplification factor is exactly

Λ=11pa/pb4,\Lambda = \frac{1}{1 - \sqrt[4]{p_a/p_b}},

the v3 "capital efficiency" multiplier. A full-range position has Λ=1\Lambda = 1; a range from 0.5p00.5p_0 to 2p02p_0 gives Λ3.4\Lambda \approx 3.4; a [2700,3300][2700, 3300] band around p0=3000p_0 = 3000 (±10%) gives Λ20.4\Lambda \approx 20.4. Because the absolute loss scales with LL and equal capital buys Λ\Lambda times more LL, the fractional IL scales the same way:

ILv3    ΛILv2(while in range).\text{IL}_{v3} \;\approx\; \Lambda \cdot \text{IL}_{v2}\quad(\text{while in range}).

Take that ±10% position, entry $3,000, and walk the price up. The v2 numbers from the table above get multiplied by ~20:

Price Move v2 IL v3 IL (Λ ⁣ ⁣20.4\Lambda\!\approx\!20.4)
3,150 +5% (in range) −0.030% −0.61%
3,300 +10% (at upper bound) −0.11% −2.32%

A 10% move that costs a full-range LP eleven basis points costs the concentrated LP 2.3% versus holding. And it gets worse at the boundary, because the range has a second edge the formula above hides: once price crosses pbp_b, the position is 100% numéraire, stops earning fees, and its divergence freezes at the boundary composition. The concentrated LP has fully sold the risky asset on the way up and now watches any further rally with none of it — the short-straddle tail, locked in, with the premium stream switched off. Concentration is leverage on both the fee income and the loss, plus a path-dependence — time spent in range — that the naive ΛILv2\Lambda \cdot \text{IL}_{v2} scaling does not capture.

Concentrated v3 position value versus a full-range v2 position across price, showing the amplified divergence inside the range and the frozen boundary composition

LVR: the loss you can't blame on the market

Impermanent loss measures the LP against a passive HODLer, and that benchmark quietly smuggles in market risk: most of what "IL vs HODL" charges you is just the directional exposure you would have carried anyway by owning the tokens. The sharper decomposition — the one that isolates the cost that is specific to being an AMM — is loss-versus-rebalancing (LVR), from Milionis, Moallemi, Roughgarden and Zhang, Automated Market Making and Loss-Versus-Rebalancing (arXiv:2208.06046).

The idea is to benchmark the LP not against holding, but against a rebalancing portfolio that holds, at every instant, the exact same token quantities as the pool — same delta, same market exposure — but trades at the frictionless external market price instead of against the pool's own bonding curve. Both portfolios carry identical price risk, so subtracting one from the other cancels the market noise entirely and leaves only the structural cost of being the AMM: the money the pool loses because arbitrageurs, not the LP, capture every price move. That residual is LVR.

Model the external price as geometric Brownian motion with volatility σ\sigma. The paper's central result — which the authors call a "Black–Scholes formula for AMMs" — is that LVR accrues as a deterministic, non-negative drift:

(P)=σ2P22x(P),\ell(P) = \frac{\sigma^2 P^2}{2}\,\big|x'(P)\big|,

where x(P)x(P) is the pool's risky-asset holding as a function of price and x(P)<0x'(P) < 0 (the AMM sells the risky asset as its price rises). For the constant-product pool, x(P)=L/Px(P) = L/\sqrt P, so x(P)=12LP3/2|x'(P)| = \tfrac{1}{2}L P^{-3/2}, and since the pool value is V=2LPV = 2L\sqrt P, the rate as a fraction of pool value collapses to a constant:

V=σ28.\frac{\ell}{V} = \frac{\sigma^2}{8}.

That is the famous σ²/8. It is fee-agnostic and inventory-agnostic: a constant-product pool bleeds σ2/8\sigma^2/8 of its value per unit time to arbitrage, full stop. At 5% daily volatility that is 0.052/83.10.05^2/8 \approx 3.1 basis points every day — roughly 11% of pool value a year — before a single dollar of fees is counted. For a concentrated position the same logic gives /VΛσ2/8\ell/V \approx \Lambda\,\sigma^2/8 while in range: the leverage that amplified IL amplifies LVR by the identical factor.

Why LVR is the right unit of account, and IL is not, comes down to one property: the LP-minus-rebalancing difference has zero volatility. It is a pure predictable drift,  ⁣dt-\!\int \ell\,dt. That means the price risk is fully hedgeable — replicate the rebalancing portfolio with a dynamic delta hedge and what remains is deterministic. The LP's true economics is therefore

LP PnLrealized=Rebalancing PnLhedgeable market risk  +  Fees    dtLVR    gas.\underbrace{\text{LP PnL}}_{\text{realized}} = \underbrace{\text{Rebalancing PnL}}_{\text{hedgeable market risk}} \;+\; \text{Fees} \;-\; \underbrace{\textstyle\int \ell\,dt}_{\text{LVR}} \;-\; \text{gas}.

Hedge away the first term and the LP is left holding fees − LVR − gas — a short-variance position whose carry is the fee stream and whose cost is a running, predictable, volatility-driven bleed. This is exactly the gamma-theta trade-off of a short options book: LVR is the gamma cost 12Γσ2P2\tfrac{1}{2}\Gamma\sigma^2P^2, fees are the theta you collect, and the analogy to Black–Scholes option pricing is structural, not decorative. It is also the same adverse-selection-versus-spread tension that Avellaneda–Stoikov formalize for order-book market makers, with the pool's fee tier playing the role of the quoted spread.

One refinement keeps the framing honest. The clean σ²/8 assumes continuous, costless arbitrage. In reality the fee tier itself creates a no-arbitrage band — arbitrageurs only trade once a price move exceeds the fee — so the realized LVR is smaller than the frictionless figure, and fees do double duty: they pay you and they widen the band that protects you. The fee-aware, discrete-time version is worked out in the follow-up Automated Market Making and Arbitrage Profits in the Presence of Fees (Milionis, Moallemi, Roughgarden, 2023); treat continuous σ²/8 as an upper bound on the bleed.

Decomposition of LP PnL over time: hedgeable rebalancing component, positive fee accrual, and the monotonic LVR drift pulling the net below the rebalancing benchmark

Markout: measuring adverse selection block by block

LVR is a theorem about a diffusion. The empirical shadow it casts on real fills is markout, and it is how you measure adverse selection on a live position without any model of volatility at all.

Markout evaluates a fill against a reference "fair" price some horizon Δ\Delta later. For a passive liquidity provider, every swap that trades against your range is a fill you did not choose — the taker chose it, and they chose it because it was good for them. Define the LP's markout on a fill as the signed inventory change times the subsequent price move:

markoutΔ=Δq(Pt+ΔPfill),\text{markout}_\Delta = \Delta q \cdot \left(P_{t+\Delta} - P_{\text{fill}}\right),

where Δq\Delta q is the risky-asset quantity the LP acquired in the trade (negative when the LP sold). Informed and toxic flow makes this systematically negative: the pool buys the risky asset from a seller who is right, just before the price falls, and sells to a buyer who is right, just before it rises. Averaged over many fills, the LP is on the wrong side of the next tick — which is precisely LVR realized one swap at a time.

Measured per block, this becomes a clean adverse-selection metric: take the LP's net inventory change over a block and mark it against the price one or a few blocks later. Aggregated over a position's life, the sum of per-block markouts is the empirical LVR. The reason it matters is that the markout number is usually ugly. The large-sample empirical studies — beginning with Loesch, Hindman, Richardson and Welch's 2021 analysis of Uniswap v3 positions (the Topaze Blue / Bancor study) and reinforced by the LVR-quantification dashboards that followed — found that a large fraction of v3 LPs, on many major pools around half or more, underperformed simply holding the tokens once IL and adverse selection were netted against fees. Cartea, Drissi and Monga formalize the same quantity for concentrated liquidity as "predictable loss," arriving at the same volatility-scaled drift by a different route.

The practical takeaway for an LP monitoring a live book: fee APR is a gross number; fees + markout is the net. A position can show a healthy fee yield and a deeply negative markout, and the sum is what you actually earned. The arbitrageurs realizing that markout against you are the same searchers profiled in the MEV and mempool article — a backrun against a stale AMM quote after every oracle move is LVR extraction, block by block, and it is the benign, price-correcting end of the MEV spectrum even as it is the toxic end of your PnL.

Cumulative markout curve for a passive LP position drifting negative over successive blocks, illustrating adverse selection realized against arbitrage flow

When LPing actually beats holding

Collapse everything to the decision it serves. Hedge the market risk and an LP position is +EV against its benchmark exactly when the fee income rate clears the LVR rate:

fτfee yield / unit time  >  σ28LVR / unit time,\underbrace{f \cdot \tau}_{\text{fee yield / unit time}} \;>\; \underbrace{\frac{\sigma^2}{8}}_{\text{LVR / unit time}},

where ff is the pool's fee tier and τ\tau is turnover — trading volume divided by TVL, per unit time. Rearranged, the condition is a comparison of two volatilities. The fee stream implies a break-even volatility

σ=8fτ,\sigma^\ast = \sqrt{8 f \tau},

and the LP wins whenever realized volatility comes in below it. This is the AMM's version of implied-versus-realized: the pool quotes an implied vol through its fee yield, and providing liquidity is selling variance at that level. Some worked reference points (turnover clearly hypothetical, chosen to be representative of active pools):

  • 0.05% pool, turnover 1.0/day (volume ≈ TVL daily): σ=80.00051.06.3%\sigma^\ast = \sqrt{8 \cdot 0.0005 \cdot 1.0} \approx 6.3\% daily. Below ~6.3% realized daily vol, the LP is ahead.
  • 0.30% pool, turnover 0.2/day: σ=80.0030.26.9%\sigma^\ast = \sqrt{8 \cdot 0.003 \cdot 0.2} \approx 6.9\% daily.
  • Stablecoin / correlated pair, σ0.2%\sigma \approx 0.2\% daily: LVR is σ2/85×107\sigma^2/8 \approx 5\times10^{-7} per day — essentially nothing, because LVR scales with the square of volatility. Almost any fee yield clears it.

That squared dependence is the whole strategy in one fact. Halving the volatility of the pair quarters the bleed, while the fee yield is unaffected. It is why the durable LP edge lives in low-σ pairs — stablecoin pairs, liquid-staking-token/ETH pairs, and other tightly correlated legs — and why volatile-pair LPing is a bet that fees are extraordinary or that you can hedge and rebalance faster than the pool bleeds.

import numpy as np

def breakeven_daily_vol(fee_tier: float, turnover: float) -> float:
    """Daily volatility at which fee income exactly offsets v2 (or in-range v3) LVR.
    fee_tier: pool fee as a fraction (0.0005 = 0.05%).
    turnover: daily trading volume / TVL."""
    daily_fee_yield = fee_tier * turnover
    return np.sqrt(8 * daily_fee_yield)

def lp_is_plus_ev(fee_tier, turnover, sigma_forecast) -> bool:
    """LP beats the rebalancing benchmark iff forecast vol < break-even vol."""
    return sigma_forecast < breakeven_daily_vol(fee_tier, turnover)

sigma_star = breakeven_daily_vol(0.0005, 1.0)   # ~0.063  (6.3%/day)
lp_is_plus_ev(0.0005, 1.0, sigma_forecast=0.045)  # 4.5% forecast -> True

The one input the whole decision turns on is σ\sigma — not last month's realized vol, but a forecast of realized vol over the holding period, which is exactly a volatility-forecasting problem. A GARCH one-day-ahead volatility forecast plugged into σ\sigma^\ast turns "does this pool pay enough" into a live, updatable signal: LP when the forecast sits below break-even, stand aside when a volatility regime shift pushes it above.

Concentration does not change the ratio while you are in range — it multiplies fee yield and LVR by the same Λ\Lambda, so the fee-versus-vol inequality is scale-invariant in-range. What it changes is everything around the edges: a tight range spends less time in range (no fees, frozen IL when out), and demands active rebalancing whose gas and re-entry markout are real costs. So the honest rule for tight ranges is narrow: justify them only when your realized-vol forecast is low relative to the range width, or when you are actively managing and hedging the position rather than setting it and forgetting it. The mechanics of that active management — rebalancing triggers, delta-hedging the pool's changing inventory, and turning the fees − LVR carry into a hedged strategy — are the subject of the companion piece on Uniswap v3 LP strategies and hedging.

What to take away

  • Impermanent loss has a closed form, IL(r)=2r1+r1=sech(12lnr)1\text{IL}(r) = \frac{2\sqrt r}{1+r} - 1 = \operatorname{sech}(\tfrac12\ln r) - 1, symmetric in log-price (a 2× and a −50% move both cost 5.72%) and quadratic in log-return near entry — the fingerprint of a short-gamma payoff.
  • Concentrated liquidity is leveraged IL. The absolute divergence loss is unchanged for a given LL, but equal capital deploys Λ=1/(1pa/pb4)\Lambda = 1/(1-\sqrt[4]{p_a/p_b}) times more LL, so both IL and fees scale by Λ\Lambda — and the position freezes into the losing asset once price exits the range.
  • LVR is the loss that survives hedging. Benchmarked against a rebalancing portfolio, a constant-product pool bleeds σ2/8\sigma^2/8 of value per unit time regardless of fees; the LP's hedged PnL is fees − LVR − gas, a short-variance carry.
  • Markout is LVR measured on real fills. Per-block markout quantifies adverse selection directly, and the empirical record shows a large share of v3 LPs net-negative versus holding once it is counted. Fee APR is gross; fees + markout is net.
  • The decision is one inequality. An LP beats its benchmark when fee yield exceeds σ2/8\sigma^2/8, i.e. when realized vol falls below the fee-implied break-even σ=8fτ\sigma^\ast = \sqrt{8f\tau}. Because LVR scales with σ2\sigma^2, the edge lives in low-volatility, correlated pairs — and the input that decides it is a volatility forecast.

References

  • Milionis, J., Moallemi, C. C., Roughgarden, T., Zhang, A. L. (2022). Automated Market Making and Loss-Versus-Rebalancing. arXiv:2208.06046.
  • Milionis, J., Moallemi, C. C., Roughgarden, T. (2023). Automated Market Making and Arbitrage Profits in the Presence of Fees. arXiv:2305.14604.
  • Loesch, S., Hindman, N., Richardson, M. B., Welch, N. (2021). Impermanent Loss in Uniswap v3. Topaze Blue / Bancor.
  • Cartea, Á., Drissi, F., Monga, M. (2023). Decentralised Finance and Automated Market Making: Predictable Loss and Optimal Liquidity Provision. SSRN / arXiv.
  • Adams, H., Zinsmeister, N., Salem, M., Keefer, R., Robinson, D. (2021). Uniswap v3 Core (whitepaper).
  • Fan, Z., Marmolejo-Cossío, F., Moroz, D., Neuder, M., Rao, R., Parkes, D. C. (2022). Strategic Liquidity Provision in Uniswap v3. arXiv:2106.12033.
Tuyên bố miễn trừ trách nhiệm: Thông tin được cung cấp trong bài viết này chỉ nhằm mục đích giáo dục và thông tin, không cấu thành lời khuyên về tài chính, đầu tư hoặc giao dịch. Giao dịch tiền mã hóa tiềm ẩn rủi ro thua lỗ đáng kể.

Tác Giả

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

Đi Trước Thị Trường

Đăng ký nhận bản tin của chúng tôi để có những thông tin chuyên sâu độc quyền về AI trading, phân tích thị trường và các cập nhật nền tảng.

Chúng tôi tôn trọng quyền riêng tư của bạn. Hủy đăng ký bất kỳ lúc nào.