LPvsHODL

Would the pool have beaten holding?

Paste a pool address from any major DEX on any major chain. Everything else — chain, protocol, fee tier — is worked out for you.

Load a pool

Range & assumptions

Your range
−20% · —
−1%−95%
+20% · —
+1%+300%

The old “best range” finder has been removed. It judged ranges by how long they stayed in range and ignored how thinly they spread your money, so it recommended very wide bands that earn very little. A version built on the real fee record will replace it.

Off by default, which assumes you set the range once and walked away. Switch it on and the backtest closes the position whenever price escapes the band, then reopens it at the same width around the new price.

Advanceddetected automatically

Load a pool and the model is detected for you.

Your fees are a share of the pool, so they shrink as other people deposit. Zero holds the pool the size it is today. Put 100 here to model the pool doubling over the window, or a negative number for liquidity leaving. Your own deposit is already diluting the pool in every figure below.

What it would cost to enter, exit and collect fees. Left at zero by default. On Ethereum mainnet a round trip has historically run somewhere around $50–200 depending on conditions; on Base, Arbitrum or Solana it is usually cents.

Better or worse than HODLing Awaiting a pool

Paste a pool address above and hit Load.

What you'd have now

—

Fees earned

—

If you HODL

—

What the pool did to your money

Load a pool to run the backtest.

How to read these numbers

Providing liquidity pays you a share of every swap that passes through the pool. It also quietly charges you for being right about price. This tool measures both against what actually happened, rather than against a hypothetical you type in.

Impermanent loss is not a fee, and it is not a bug

An automated market maker holds two assets and rebalances continuously to keep the pool priced against the wider market. When one asset rises, arbitrage traders buy it out of the pool until the price matches everywhere else. You end up holding less of the winner and more of the loser than you started with.

That gap — between what your position is worth and what the same two assets would have been worth untouched — is impermanent loss. The name is misleading. It reverses only if the price ratio returns to where you entered. Withdraw while the ratio is different and the loss is entirely permanent.

It is also symmetric in a way people underestimate. Impermanent loss appears whether the price goes up or down. Most liquidity providers discover it during a rally and assume a falling market protects them. It does not.

Fees are the compensation, and they are not guaranteed

Against that sits your share of trading fees, which depends on three things: the pool's fee tier, how much volume flows through it, and how large your deposit is relative to total liquidity. A pool with enormous volume and a thin fee tier can pay better than a quiet pool charging 1%.

The critical ratio is volume against total value locked. A pool holding $100 million that trades $50 million a day is working hard for its liquidity providers. The same pool trading $2 million a day is not. That relationship also explains why fee income collapses without the pool changing at all — capital arrives, everyone's share shrinks, and yields compress.

What a concentrated range actually changes

Uniswap v3 and its many descendants let you confine liquidity to a price band. Inside that band your capital does far more work and earns proportionally more of the fees. Outside it, your position earns nothing at all and sits fully converted into whichever asset fell.

This is the trade nobody explains clearly. A narrow range is a leveraged bet that price stays put. A wide range earns less per dollar but keeps earning. No setting wins in both worlds, and the right choice depends on volatility you cannot know in advance.

The backtest above shows exactly how many days a given band would have been earning and how many it spent idle. That number tends to be more sobering than people expect.

The deposit split is decided for you

On a constant-product pool you always deposit equal value on both sides. On a concentrated pool the split falls out of where the current price sits inside your range. Set a band reaching further above the current price than below it and you will deposit mostly the volatile asset. That is not a preference you express — it is arithmetic, and the tool derives it rather than asking.

Common questions

Does a higher fee tier always earn more?

No. Traders route through whichever pool offers the best execution, so a high-fee pool on a liquid pair often sees very little volume. The 0.05% tier on a major pair frequently out-earns the 0.3% tier on the same pair because it captures far more flow. Worth checking per pair rather than assuming.

Why does the tool refuse to model some pools?

Curve-style stableswap pools, Balancer weighted pools and discrete-bin designs like Meteora DLMM use different bonding curves. Running constant-product formulas on them produces confidently wrong numbers — badly overstated impermanent loss in Curve's case. The tool says so rather than guessing, with an override if you disagree with the detection.

Are the fee estimates conservative or optimistic?

Either, depending on the pool — which is why the tool now reads the real figure where it can. On pools where the fee record is available, fees come from the pool's own accounting and the badge above the results says Real fees. Everywhere else it falls back to an estimate that splits fees by your share of the pool's total value, and that estimate can be badly wrong in both directions: it understated a neglected pool where almost no liquidity sits near the trading price, and overstated an actively managed one by roughly nine times. Treat anything labelled Estimated fees as a rough guide, not a floor.

Does this include gas?

Only if you tell it what yours are. There is a gas field in the detail view, and whatever you put there is subtracted from the result and shown on its own line. It starts at zero, so out of the box every figure here is a ceiling with no costs taken off.

It starts at zero deliberately rather than guessing for you: a round trip costs pennies on Base and can cost tens of dollars on Ethereum mainnet, and on a small mainnet position that can exceed a year of fee income. Put your own number in — a made-up default would be its own kind of wrong answer.

Can past results tell me which pool to enter?

Only weakly. High historical fee yield usually reflects high volatility — the same volatility that generates impermanent loss. And any pool that reliably paid well attracts capital until the yield compresses. Backtests are useful for understanding mechanics and sizing trade-offs, not for picking winners.

Method and assumptions

What this calculator actually tells you

Most liquidity pool calculators ask you to guess an APR and then project it forward. This one does the opposite: it takes a pool you can name, a date you can pick, and the real prices and trading volume that followed, and works out what would actually have happened.

The number that matters is not how much you earned in fees. It is whether those fees covered what the pool quietly did to your tokens while you were earning them. A pool is a machine that sells whatever is going up and buys whatever is going down. Over a period when one token strongly outperforms the other, that machine can cost you far more than the fees pay — and every APR figure you have seen advertised leaves that part out.

Impermanent loss, without the hand-waving

Impermanent loss is the gap between what your tokens are worth in the pool and what the identical tokens would have been worth sitting in your wallet. It is not a fee, nothing is deducted, and no one takes it from you. It is an opportunity cost created by the pool's rebalancing, and it becomes real the moment you withdraw.

The word "impermanent" is doing a lot of misleading work. The loss reverses only if prices return to the ratio they had when you deposited. If the market has genuinely repriced one token against the other, waiting does not undo it.

For a full-range position the arithmetic is well known: your position value tracks the square root of the price ratio while holding tracks the arithmetic average, and impermanent loss is the difference between those two curves. A 2× move in one token against the other costs roughly 5.7%. A 4× move costs 20%. A 10× move costs about 42%. Those figures are before fees, which is exactly why fees matter so much.

Concentrated liquidity makes both effects larger

Uniswap v3 and the many protocols that copied it let you concentrate your deposit into a price band instead of spreading it across every possible price. Inside that band you earn far more fees per dollar. Outside it you earn nothing at all, and your position sits entirely in whichever token lost ground.

This is the trade newcomers underestimate. A narrow range can multiply your fee income several times over and can also convert your entire position into the wrong token during a single week's move. The tool reports what share of days your position actually spent earning, because that one figure explains most of the difference between a pool that worked and one that did not.

You can also switch on range re-centring, which models closing and reopening the position once it has spent more than 7 of the last 14 days outside your band. It keeps you earning, and it charges you for the privilege: gas each time, plus the realised loss on the token that ran away. Both are counted. Where the pool publishes a fee record, each stretch between re-centres is priced from that record and the stretches are added up, so re-centred results are as real as fixed ones.

Why we compare against more than just holding both tokens

The standard comparison — pool versus holding the two tokens you deposited — flatters liquidity provision, because it quietly assumes you would have bought a 50/50 basket anyway. Most people would not have. So the results also compare against holding each token on its own, and against not buying anything at all.

Holding the stronger token outright beats the pool remarkably often. That is uncomfortable, it is hindsight, and it is worth seeing anyway, because it is the honest measure of what the pool cost you.

Which pools and chains are supported

Any pool with a public address on a major chain: Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain, Avalanche, Solana and more. That covers Uniswap v2, v3 and v4, PancakeSwap, SushiSwap, Aerodrome, Trader Joe, Curve-style pools and most forks of them. Paste a pool address or a link from Uniswap, GeckoTerminal or DexScreener — the chain, protocol and fee tier are detected for you.

Price and volume history comes from GeckoTerminal for the standard six-month window, and from the pool's own published daily record for longer periods where one exists. Exchange rates for non-dollar currencies come from Frankfurter. Nothing is stored on a server, and no wallet connection is ever requested.

Common questions

What is impermanent loss in simple terms?

You put two tokens into a pool. One goes up a lot. The pool sells some of it on the way up and buys more of the other. When you withdraw, you have less of the winner and more of the loser than you started with. Impermanent loss is the value of that difference — the cost of having been automatically rebalanced.

Can I see the result in ETH instead of dollars?

Yes — there is a unit switch above the numbers that reads the whole comparison in either of the pool's own tokens. It is a display option, not a different calculation. Dividing both the pool result and the hold result by the same price cannot change which one is larger, so the winner is the same in every unit; only the size of the gap is expressed differently. If you want a genuinely different answer, change the baseline instead: the comparison table comes at it from holding each token on its own, holding an even split, and staying in cash.

What is the full-range figure for?

Every result here depends on the range you picked, which makes two pools impossible to compare head to head — a tight band in one pool and a wide band in another tell you nothing about which pool is better. Full range is the one setting everybody shares, so the tool also reports what this pool paid over the same window with no bounds at all. That is the number to hold up against another pool. It is not a recommendation to go full range; it is a common yardstick.

Does providing liquidity beat holding?

Sometimes, and less often than the advertised yields suggest. It tends to work in pools where both tokens move together, in stablecoin pairs, and anywhere volume is heavy relative to the amount of liquidity competing for it. It tends to fail when one token strongly outperforms the other. The only way to know for a specific pool over a specific period is to test it, which is what this tool is for.

How is impermanent loss calculated?

For a full-range position, position value follows the square root of the price ratio between the two tokens, while holding follows the arithmetic average of their price changes. Impermanent loss is the difference. For a concentrated position it also depends on the range you set, because the position fully converts to one token once price leaves the band. This calculator computes it from actual daily prices rather than a formula applied to start and end points.

What happens when my position goes out of range?

It stops earning fees entirely and sits in one token — the one that fell in relative terms. It resumes only if price re-enters your band, or if you close and reopen around the current price. Reopening costs gas and locks in the loss, which is why the re-centring option in this tool charges you for both.

Are the fee estimates accurate?

Where the pool publishes a fee record, the figure is taken straight from it — that is what the pool's own accounting says a position of your size and range earned, and the results are badged Real fees. Where no record is available the tool estimates instead, from daily volume and fee tier scaled by your share of the pool's total value. That estimate is the method every other calculator uses and it can miss by a wide margin in either direction, because it ignores how much liquidity is actually sitting near the trading price. Results badged Estimated fees should be treated as indicative only.

Do I need to connect a wallet?

No. There is no wallet connection, no account and no login. Paste a public pool address. Your theme, currency and recently viewed pools are stored in your own browser and never sent anywhere.

Why does my deposit size change the result?

Because fees are shared. Your cut is your deposit as a proportion of everything in the pool, so a large deposit into a small pool dilutes its own yield. There is also a setting for liquidity arriving or leaving over the period, since a pool that doubles in size halves what you earn from the same trading volume.