Skip to content
All option guides
DeFi liquidity provision12 min read

DeFi Liquidity Pools: LP Fees, Rebalancing, and Impermanent Loss

See how AMM swaps change token balances, calculate a no-fee impermanent-loss example, and compare LP fees, v3 ranges, and holding risks.

In this guideWhat a liquidity provider puts into a pool

Short summary

AMM swaps change an LP’s token mix as prices move. Impermanent loss is the relative difference from holding the same starting tokens; the LP may still gain in dollars, and fees may offset the gap but never guarantee it.

What a liquidity provider puts into a pool

A decentralized exchange’s automated market maker (AMM) keeps token reserves in a smart contract so traders can swap against the pool instead of matching with a conventional order book.

A liquidity provider (LP) contributes the token pair and receives a claim on some share or position in the pool. The position is not a deposit account with a fixed balance: swaps change how much of each token backs the claim.

The claim differs by protocol version. In Uniswap v2, pool tokens represent a proportional share of the reserves. In v3, each LP chooses a price range and owns a distinct position; the same pair can contain positions with different ranges.

The protocol’s overview of how Uniswap works describes these version differences.

Other AMMs can use different curves, share accounting, fee rules, or withdrawal constraints, so the examples below use a simplified v2-style pool rather than a universal DeFi rule.

Supplying both tokens changes what you own economically. If one token rises against the other, a pool can trade some of the appreciating token away while it receives more of the other token.

The position may still rise in dollar value, yet hold a different mix from the one you started with.

How swaps rebalance a constant-product pool

For a simplified two-token v2 pool, let x be the ETH reserve and y the USDC reserve. The constant-product relation is x × y = k. The pool’s marginal price, before fees, is approximately y ÷ x USDC per ETH.

A swap that removes ETH and adds USDC changes both reserves while preserving or increasing the invariant, depending on fee mechanics.

Suppose ETH becomes more expensive on other markets while the pool still offers a lower ETH price. Traders and arbitrageurs can buy ETH from the pool with USDC.

ETH reserves fall and USDC reserves rise until the pool price is closer to the outside market price, after accounting for costs and fees.

The contract does not predict a future price or decide that ETH is worth more; trades move the reserve ratio.

This is why the LP’s token quantities can drift even when the LP does nothing. The exchange is continually offering trades along its curve, and market participants respond to price differences.

Uniswap’s v2 whitepaper describes the reserve invariant and the role of arbitrage in aligning a pool’s relative price with other markets.

Worked example: ETH doubles while the pool has no fees

Assume a simple pool initially contains 1 ETH and 2,000 USDC when ETH is worth $2,000. The starting pool value is $4,000, and the reserve product is 1 × 2,000 = 2,000.

For clarity, assume no swap fees, no deposits or withdrawals by other LPs, and enough arbitrage trading to bring the pool’s ETH price to a new market price of $4,000.

The quantities can represent the whole pool or any LP’s proportional share; scaling the share changes the dollar amounts, not the percentages.

At the new price, the reserves must satisfy x × y = 2,000 and y ÷ x = 4,000. Solving gives about 0.7071 ETH and 2,828.43 USDC. The position is then worth about 0.7071 × $4,000 + $2,828.43 = $5,656.85.

An LP who held the original 1 ETH and 2,000 USDC instead would have $4,000 + $2,000 = $6,000.

The pool position is therefore about $343.15, or 5.72%, below the hold comparison: $343.15 ÷ $6,000. That is relative underperformance before fees and costs, not a $343.15 absolute loss.

The pool position still rose about 41.4% from $4,000; simply holding rose 50%. The arithmetic is hypothetical and ignores fees, gas, taxes, price differences among venues, and changes in the pool’s other positions.

Text-free conceptual illustration comparing a pool that changes its token mix with direct holdings that keep their original units.
Conceptual comparison of a liquidity pool rebalancing its token mix and a direct hold keeping the original token amounts; no actual prices or quantities are shown.

Why “impermanent loss” is a relative comparison

Impermanent loss (IL), also called divergence loss, compares the value of an LP position with the value of keeping the same starting token amounts outside the pool.

Uniswap’s IL explanation describes how price changes alter pool balances under the constant-product rule.

In the simplified, fee-free, full-range example, the relative shortfall depends on the price ratio r = ending ETH price ÷ starting ETH price:

Relative shortfall = 1 − 2√r ÷ (1 + r)

If ETH doubles, r = 2, and the result is about 5.72%. If the price halves, r = 0.5, the same formula gives the same percentage.

The formula assumes a two-token constant-product pool, a 50/50 starting value, no fees, no added or removed liquidity, and a price that has reached the outside market.

It is not a general estimator for every AMM or concentrated-liquidity position.

The expression comes from comparing the two ending values.

If the initial equal-value deposits are X units of ETH and P₀X units of USDC, then after the price ratio reaches r, a fee-free constant-product position holds about X/√r ETH and P₀X√r USDC.

Valued at the new price rP₀, that LP position is 2P₀X√r. Holding the initial amounts is worth P₀X(1+r). Dividing those values gives the position-to-hold ratio 2√r/(1+r), so subtracting it from 1 gives the relative shortfall.

This derivation depends on the stated model and is not a fee-bearing v3 position formula.

“Impermanent” does not mean that the gap must disappear or that the LP will recover the hold value.

If the relative price returns to its starting ratio while the position remains in the pool, the simplified no-fee comparison returns toward zero.

If the LP withdraws at a different ratio, the withdrawn token amounts differ from the starting amounts. A later reversal, fees, costs, range changes, or pool-specific rules can alter the outcome.

The useful comparison is always tied to a time, a starting token mix, and a stated benchmark.

Fees may offset the gap, but they are not guaranteed income

Traders may pay swap fees, and active LP positions may receive a share under the pool’s rules. The share depends on the pool version, fee configuration, active liquidity, and protocol settings.

Uniswap’s LP-fee guide says fees are distributed proportionally to LPs with active positions; a v3 position outside its selected range does not earn fees while it is inactive.

A fee tier is not an annual return, and past trading volume does not promise future volume.

Fees also affect the mechanics. In v2, trading fees remain in the pool’s reserves and can increase the invariant over time.

In v3, collected fees are accounted for separately from the position’s liquidity, as described in the Uniswap v3 Core whitepaper. This means it can be misleading to take a no-fee IL percentage and simply subtract a headline fee rate.

A fair result comparison needs the tokens the LP can withdraw, fees actually accrued or collected, any protocol share, deposit and withdrawal costs, and the value of the original tokens held over the same period.

Volume and fee income can be uneven. A high-volume day does not show how much of that activity the LP’s position captured, and a fee estimate can change when other liquidity enters or leaves.

A position can earn fees and still underperform holding after token-price changes and costs. Conversely, fees can exceed the relative shortfall over a particular interval; that possibility is not a promise of profit or protection from loss.

Concentrated liquidity changes the position’s exposure

Uniswap v3 lets an LP select a lower and upper price boundary instead of spreading liquidity over the full range.

Concentrating funds can make more liquidity available near the selected prices, but it also makes the LP responsible for a narrower range.

The v3 position guide explains that when price moves outside a custom range, the position becomes out of range, holds one token, and stops earning fees until price re-enters.

For example, an ETH/USDC LP who chooses a range around the current ETH price may end up holding mostly or entirely USDC if ETH rises through the upper boundary. If ETH falls below the lower boundary, the position may instead consist of ETH.

The position can remain exposed to price movements even while it earns no new fees. Repositioning, collecting fees, or adding liquidity can require additional transactions and network costs.

A narrow range is not automatically better. It can increase the share of trades captured while active, but it can also spend more time inactive and require more monitoring or rebalancing.

Range selection is an exposure choice, not a guaranteed yield setting. Compare the exact pool version, asset order, fee tier, current price, and chosen range before interpreting a displayed estimate.

Risks that an IL percentage does not capture

The hold comparison isolates one price effect; it does not measure every risk of providing liquidity.

A smart-contract defect, compromised dependency, malicious or non-standard token, governance or configuration change, chain outage, or wallet-signing error can affect the position.

A stablecoin can move away from its intended reference price. A thin pool can also make it difficult to swap withdrawn tokens or adjust exposure near a displayed estimate.

Execution costs matter as well. Depositing, collecting fees, adjusting a range, and withdrawing may each require transactions. Gas, slippage, approval steps, and taxes can reduce the result.

If a pool’s price differs from wider markets, tokens can be swapped at an unintended relative price. Uniswap’s liquidity warnings specifically call out a pool/market price mismatch.

An LP’s result also depends on the benchmark. “I earned fees” answers how much the pool credited; it does not answer whether supplying liquidity beat holding the same assets, a different pool, or another use of capital.

Write down the initial token amounts, the comparison price and time, fee accrual, costs, and withdrawal amounts before treating a headline APR or IL figure as a complete performance measure.

A checklist before providing liquidity

Confirm the network, token contract addresses, pool version, token pair, and fee settings.

Check whether the pool price is reasonably aligned with other markets and whether its reported volume and liquidity describe the same period and route.

For a range-based position, note the lower and upper boundaries and what token mix remains if price exits the range.

Then calculate a same-period hold comparison using the starting token amounts. Estimate fees from the position’s active share and actual fee rules, not from a pool-wide rate alone.

Include likely deposit, management, collection, and withdrawal costs, and consider how a token depeg or a sharp move in either direction would change the position.

Estimates rely on assumptions and can become stale as prices, liquidity, and protocol settings change.

There is no single fee rate or IL percentage that tells whether a pool is suitable for a particular LP. This article explains mechanics rather than recommending a token, pool, protocol, or deposit amount.

Common questions

Q1Is impermanent loss the same as losing money?

No. It compares an LP position with holding the same starting tokens at the same ending price. The LP may gain dollars yet trail holding, or lose value absolutely.

Q2Can swap fees make up for impermanent loss?

They can offset or exceed the relative shortfall over a particular interval, but the result depends on actual trading, the LP’s active share, fee rules, token prices, and costs. A fee rate by itself does not guarantee a return.

Q3Does a v3 position keep earning fees outside its price range?

No. Under Uniswap’s v3 position rules, an out-of-range position becomes single-sided and inactive for fee earning until price returns to the selected range. Other protocols can use different mechanics.

Sources and further reading

Report an issue

We’ll prepare an email with this article link. Mark receives the report only after you send it

Quick check

Read the guide? Check yourself with 3 questions

Question 1 / 3

Question 01

In the worked example, what does the $343.15 difference measure?

Choose an answer to see the explanation

Options glossary