Most trading screens show you a price. A price is the number of the last trade, and it is not what you will receive. Every number here is a fill for your size — through the liquidity that exists right now. On Robinhood Chain and BNB Chain we compute it ourselves, the way the pool itself would. On Solana we take Jupiter’s executable quote rather than inventing our own.
On these markets, liquidity sits in slices at different prices. A small order takes the first slice and barely moves. A larger one eats through slice after slice, and you receive the blended average of all of them — always worse than the number on the chart, sometimes far worse.
That gap is where paper-trading tools quietly lie, where a portfolio says you are up 500% on a bag you cannot sell, and where a screener shows “$2M liquidity” on a pool that cannot absorb two thousand dollars. We compute the gap instead of hiding it.
On the pools we price ourselves, we did not approximate the maths. We reimplemented the exact calculation the Uniswap contract performs, down to the rounding, and we check it against the chain.
The engine is a line-for-line port of Uniswap's core swap maths in whole-number arithmetic, walking the same tick-by-tick loop the pool executes. To prove it, we ask the chain's own quoter contract the identical question at the identical block. On v3 pools both answers must match to the last wei — the amount out and the price the pool ends at. On v4 we check the amount out and allow a divergence smaller than a millionth of a millionth of the trade, because one rounding step there is not yet a perfect match. That gap is documented in the code rather than rounded away.
Every half hour the engine picks a busy pool, replays hundreds of that pool's real trades through itself, and records how many it reproduced exactly.
Right now: 3,420 of 3,501 replayed swaps reproduced exactly, across 7 pools. Read that number with its sample in mind: it rotates through the busiest pools we can replay, not the whole market, and it skips hooked pools entirely because those are priced by the chain rather than by us. Runs land between 75% and 100%. Where it falls short it is usually a pool whose liquidity history we only partly reconstructed, not the swap maths — but we publish the figure rather than the best one.
A token usually trades in several pools at once. We quote all of them, split across two when that fills better, and route through the dollar when there is no direct pair.
We cover Uniswap v3 fee tiers and v4 pools, and we read each pool's fee from the pool itself rather than assuming a standard tier. Most v4 pools here also charge a protocol fee on top of the advertised one — an extra sliver taken off what you put in, before the pool's own fee — and we fold it in using Uniswap's own formula, so the estimate is never rosier than the chain. Pools with a hook, custom code that runs during your swap and can change the outcome, are never guessed at: those go to the chain's own quoter, which actually executes the hook. Of 157,534 pools indexed, 136,051 are v4 and 45,575 carry a hook.
Ask for more than a pool can absorb and you get 'only 38% of this fills', not an invented number. Practice orders are rejected on exactly the sizes that would fail for real.
The simulator stops when it runs out of liquidity it can actually see, and reports how much of your order filled — enforced on the server, not by a greyed-out button. Fees and price impact are two separate numbers, with the fee taken out of the impact figure, so a high-fee pool does not masquerade as a thin one. Where the quote comes from someone else — hooked pools priced by the chain, and Solana priced by Jupiter — we cannot measure a partial fill and do not pretend to: those are reported as filling completely.
Positions are valued by quoting the sale of the whole bag, right now, through real liquidity — not by multiplying quantity by the last chart price.
Because the engine knows the state a pool is left in after a trade, it can immediately quote selling the position straight back. The difference between the chart-price value and that number is what the marked value overstates. Profit is reconstructed by replaying every trade with a cost basis, and where a wallet sold a bag it bought before our records begin, the position is flagged as partial instead of counted as pure profit.
Pools are found by watching the entire chain for trades, so a new pool appears seconds after its first swap, with no listing step and nobody to ask. Then every one is checked against Uniswap's own factory before it counts.
Anyone can deploy a contract that emits the same events as a real pool — that is how fake volume and fake charts are made. Verification is a badge nowhere and a filter in about twenty different queries: 1,393 of 157,534 indexed pools are recorded but kept out of the tape, the fresh-pool feed, the market stats, every alert, profit and loss, and the trade button. When a value cannot be read, we store nothing rather than a placeholder, because a guessed decimal place is a price wrong by a factor of a trillion.
Three things, straight from the ledger: liquidity pulled, price dumped, volume surged. The triggers are published so you can decide whether they match your risk.
Liquidity pulled fires when a single withdrawal removes half or more of a pool's depth. A dump is a price down more than half against three hours ago, with real volume behind it. A surge is thirty minutes of volume at four times the previous thirty. Bad news is guaranteed up to 60% of the feed, so a busy day of green cannot bury a pool draining.
Robinhood Chain and PancakeSwap on BNB Chain are quoted by our own engine. Solana goes through Jupiter, and on BNB Chain we take KyberSwap's route when it genuinely fills better.
The comparison is apples to apples: the same dollar amount into the same asset on each chain, scored by what you actually end up holding rather than by advertised fees. The runner-up route is shown beside the winner.