This is the one to use. Every other tab estimates. This measures: seven real days of swap
history per pool, walked event by event.
Two headline numbers, and they answer different questions.INCOME/wk is what the
position earned — rewards plus trading fees, minus gas. That is what you rank on, because it is
the part that repeats. WOULD HAVE MADE adds what the coin itself did, so it is the
actual outcome of having held that position for the last seven days. A pool can earn well and
still lose money; ranking on the outcome would just sort by whichever token pumped last week,
which tells you nothing about next week.
The reward denominator is measured, not assumed. Rewards go to staked liquidity that is in
range at the current tick, and that moves for two independent reasons: the tick moves,
and people stake or unstake. Both are now read from chain — the tick dimension by integrating the
pool's own per-tick stakedLiquidityNet into a curve (validated to reproduce
stakedLiquidity() exactly, shown as Denom: measured), and the time dimension
from gauge Deposit/Withdraw events. Share is accrued only in the moments our band
actually covers the tick, because liquidity concentrates where price sits and averaging over all
moments would credit us for periods we were earning nothing.
Income is rewards plus trading fees, and they use different denominators. Emissions go to
staked liquidity that is in range; trading fees go to all active liquidity in
range. A thinly-staked pool pays well on rewards and poorly on fees; a busy pool the reverse.
Collapsing them into one share figure would flatter exactly the pools this ranker exists to
surface. Across the current board, fees are 38% of total income — the term every earlier
view in this app omitted.
Time in range is measured, not assumed. Block-weighted from the real tick path. It is the
difference between a headline and a return: a pool showing a 24% reward share but only 20% time
in range earns a fifth of what the share implies.
TVL is not the denominator and never was. A $5.4M pool with $26,492/day of emissions pays
a $50 stack $2.24/week, less than a $16k pool paying $110/day. What matters is your share of
staked in-range liquidity.
Read "Coin 7d" before anything else. It is what the volatile leg did last week. The table
ranks on INCOME, not on vs USDC, because ranking on total return just sorts by whichever
token pumped — that is last week's luck, not next week's signal. But a pool earning $2.71 of
income with a −8% coin kept $0.56.
Epochs is how many times the gauge has ever been funded. Two or three means a brand-new
gauge: this repo measured that debuts keep a median 84% of their funding one epoch later and 39%
by the third. A number near 52 means it has paid for a year.
Free rotation. Pools quoted in USDC are mutually reachable at no cost — a position knocked
out on the stable side holds 100% USDC, and a single-sided entry into another USDC pool needs no
conversion. That, not a weekly schedule, is the moment to switch.
Still missing: the price impact of entering and exiting the small pools, and the fact
that the tick-shape of staked liquidity is today's distribution — positions opened and
closed during the week cannot be recovered once burned, so the curve is anchored to now and
rescaled by the staked total rather than rebuilt per block.
This tab is not an estimate. Every other view scores a snapshot: it picks the range width
that would have contained the observed window, then assumes you sat in it the whole time. This
one walks the price tick by tick over 7 real days, re-ranges whenever the live strategy says to,
pays real gas each time, and accrues rewards only while genuinely in range and staked.
Time in range is measured, not assumed.
Why not just widen the other tabs to 7 days. The width that would have held a small-cap
token for a week is enormous. Liquidity per dollar collapses, every pool scores near zero, and
the ranking quietly becomes "which token moved least" — a volatility ranking dressed as an
income one.
The three width columns are the honest part.Fixed uses the same ~2% width on
every pool, chosen in advance — no fitting at all. Walk-fwd picks the width on days 1–5
and scores it on days 6–7, which is what choosing a width can actually earn. Hindsight
is the best width over the whole window: a ceiling nothing can reach, shown so the other two can
be read against it. A pool that only looks good under hindsight did not look good.
Gas is priced, not assumed. A full re-range is 1,651,215 gas — four of the eight steps
measured from this wallet's own transactions, the exit legs estimated. Priced against live gas
that is about $0.018 on Base and $0.003 on Optimism. The $0.0003 figure this repo used before was
roughly 60× too cheap, which does not matter on a wide range and completely inverts the answer on
a tight one that re-ranges hundreds of times a week.
The denominator, which is what everything here depends on. Rewards are split among
staked liquidity that is in range, so getting that number wrong rescales every figure.
Three earlier attempts did. The one used now needs no proxy for the time dimension at all: a
swap event carries the pool's real active liquidity at that moment, and the only
missing piece is what fraction of it is staked — a stable, dimensionless property readable
today as stakedLiquidity() / liquidity(). It sits near 1.0 for most gauges and is
legitimately low where LPs just do not stake (USDC/ACU 0.047).
The cross-check column is a second, independent estimate, built by integrating the
pool's own per-tick stakedLiquidityNet into a staked-liquidity curve (verified to
reproduce stakedLiquidity() exactly at the current tick). It is systematically
optimistic for pools whose price moved during the week, because it replays
today's liquidity distribution over a past price path — and LPs follow price,
so the old path looks emptier than it really was. Treat a large gap as "this pool's price
travelled", not as an error bar to average.
Costs are real. Gas is priced from measured transactions (1,651,215 gas per re-range,
about $0.018 on Base). Every re-range also pays the pool's own fee() plus 15bps of
slippage to rebalance the two tokens — 30bps on QUID/USDC, 27bps on AVNT. Leaving that out
added roughly $94 to QUID's 7-day figure.
What is missing. Trading fees. The harness does not reconstruct per-swap fee income, so
every number here is a floor, and most understated for the busiest pools. Gauge emissions are
also re-voted weekly, so a pool paying spectacularly today can pay a fraction next epoch —
check periodFinish before sizing into one.
What "$ / day" means. Rewards go only to staked liquidity that is in range at the current
price, so your cut is yourL / (stakedL + yourL). Both the amount of capital and how
tightly it is concentrated decide that number.
Why the range width matters. A narrower range always shows a bigger share, so ranking on a
snapshot alone would pick the thinnest possible range on every pool — which would be knocked out
of range immediately. The width used here is the one that would have contained the last 12
hours of price movement, so a volatile pool is charged for its volatility. These are upper
bounds fitted to movement already observed; a live bot cannot know that in advance.
IL and "vs USDC" are different questions, and the second is usually the one you want.IL compares the position against holding those same two tokens. So if the token
simply falls, IL reads near zero — holding lost too, therefore nothing was lost "impermanently".
That is correct by definition and a terrible shopping list. vs USDC is rewards plus the
position's own change in value: what you would have versus never entering. It can only be
computed when one leg is a stablecoin, so it is blank for two-volatile pools.
Rewards are only half the picture. The IL column is what price movement cost a
position opened at the start of the window and held to the end, measured with the real
concentrated-liquidity maths, then scaled to a daily figure. Net is what you would
actually have kept. Pools with the biggest rewards often need the widest range — and the range
width is the volatility, so those are frequently the ones that lose the most.
Read the flags.you-are-the-gauge means your position would be
most of everything staked — the yield exists because nobody else is there and it collapses when
they arrive. unstable-estimate means the figure moved a lot between
runs, usually because competing liquidity swings intraday.