The arithmetic
Fee revenue for a liquidity position is the product of three quantities and one adjustment:
daily fees = fee tier × routed volume × (your capital ÷ total active liquidity) × time in range
Two of those inputs are properties of the pool and outside your control. The third, your share, falls as other liquidity providers join the same band, and the fourth is set by how wide a range you chose relative to how much the pair actually moves.
Why the denominator matters more than the fee tier
A pool advertising a higher fee tier does not necessarily pay more. Routers send orders to whichever path executes best, so raising the tier reduces the volume term while raising the rate term. The winner is whichever pool maximises the product for that specific pair, which is examined in Uniswap Fee Tiers Explained.
The same logic applies to concentrated positions. Narrowing a band raises your share of active liquidity and lowers your time in range. The calculator lets you test both directions of that trade before committing capital.
What this figure is not
- It is not profit. Divergence against holding the deposited basket is a separate cost. Model it with the impermanent loss calculator.
- It is not a forecast. Volume is highly variable and clusters around events, so a figure derived from a single day will not repeat.
- It is not net of adverse selection. A large share of pool volume on major pairs is arbitrage that reprices a stale quote, which is the mechanism behind loss-versus-rebalancing.
- Incentives are not fees. The optional incentive APR is shown separately because reward-token value has a different driver and decay profile, covered in Yield Farming Explained.
Where to find the inputs
- Routed volume and fees — pool pages on DeFiLlama, the protocol's own analytics, or a Dune query filtered to the pool address.
- Active liquidity — the pool's liquidity distribution chart, read at the ticks you intend to occupy rather than as a total.
- Time in range — measured from your own position history on Revert Finance, or estimated from trailing realised volatility against your band width.
- Gas — current network conditions multiplied by the number of mints, collects, rebalances and the final withdrawal.
Sources
The formulas, parameters and risk statements used by this tool come from protocol specifications, peer-reviewed and preprint research, and public-sector analysis of automated market making.
- Uniswap v3 Core Whitepaper (Adams et al., 2021)
- Fees (Uniswap Developer Documentation)
- Optimal Fees for Geometric Mean Market Makers (Evans et al., 2021)
- Risks and Returns of Uniswap V3 Liquidity Providers (Heimbach et al., 2022)
- DeFi risks and the decentralisation illusion (BIS Quarterly Review, December 2021)
- DeFiLlama Yields methodology
Frequently asked questions
How is liquidity pool APR calculated?
Daily fee income equals the fee tier multiplied by the volume routed through the pool multiplied by your share of the liquidity that is active while those trades execute. Annualising that daily figure against your deployed capital gives the APR, before divergence loss and gas.
Why is my share of liquidity lower than I expected?
Your deposit is added to the liquidity already in the band, so the denominator includes your own capital. On a thin pool a large deposit can halve the yield you saw quoted before depositing, which is why the calculator adds your capital to the active liquidity figure.
Does this calculator include impermanent loss?
No. It measures gross fee capture only. Divergence against holding is a separate calculation with a separate driver, and it is handled by the impermanent loss calculator linked from this page.
What volume figure should I use?
Use volume routed to the specific pool and fee tier you are supplying, not aggregate volume for the trading pair across all venues. Aggregators split orders, so pair-level volume overstates what any single pool receives.
What is a realistic time-in-range assumption?
For a full-range or constant-product position it is 100%. For a concentrated range it depends on band width against realised volatility, and measured values for narrow bands on volatile pairs are frequently below 50% over a month.