|
ClearTrace
DEX Execution Insights
September 3, 2026 · Ethereum mainnet
|
|
Lead finding
A perfect quote gap can hide a fee. Ours hid one from us.
There are two ways to score a venue on execution and they answer different questions. The quote gap asks whether a venue's own quote holds: we take the route it returns, simulate it on a fork, and measure what the taker actually receives against what was promised. The realized comparison asks what the taker ends up holding, measured against the same trade routed directly through the Uniswap default, on the same pair, the same size and the same time window. A venue that quotes wide and then fills exactly at its quote scores perfectly on the first and poorly on the second.
That second case turned up in our own sample, and we misread it. LI.FI quotes within about 1 bps of the Uniswap default at $1M on Ethereum and fills 21.6 bps behind it. On USDC/USDT it fills exactly 25.0 bps behind at every size we sample, $1k, $10k, $100k and $1M alike. Price impact does not hold still across four orders of magnitude. A parameter does. We pulled a live quote: for 10,000 USDC, LI.FI returns 9,975.34 USDT against 9,999.49 on the direct route, and the response carries a fee entry, "LIFI Fixed Fee", 0.25% of the sell amount, 25.000000 USDC, marked as already deducted. It is LI.FI's published fee under its default API integrator, taken from the sell token before routing.
Our collector read the gas estimate in that response and never the fee field, and our fill decomposer looks for a fee skimmed from the output token, so a fee taken from the input never registered. Because the fee sits inside both the quote and the fill, the quote gap was clean by construction and the entire 25 bps surfaced in the realized comparison, where it looks exactly like bad routing. Net of the fee, LI.FI's routing lands at parity with the Uniswap default at $10k and $100k and about 3 bps ahead at $1M. The collector now reads the fee field, and the correction is in the table below.
| Venue |
Quote gap |
Realized fill |
Windows |
| KyberSwap | +0.05 bps | +1.29 bps | 815 / 853 |
| Sushi | 0.00 bps | +1.26 bps | 882 / 905 |
| OKX | +10.78 bps | +0.12 bps | 784 / 789 |
| OpenOcean (charges a fee, see below) | +10.00 bps | -0.96 bps | 682 / 698 |
| ParaSwap (charges a fee, see below) | +1.00 bps | -1.08 bps | 974 / 1026 |
| LI.FI (charges a 25 bps fee, see below) | +1.13 bps | -21.64 bps | 735 / 746 |
| One venue, not named here | +0.02 bps | -9.82 bps | 965 / 975 |
Ethereum, $1M size cohort, quote sample captured 2026-06-23 to 2026-09-03. Both columns are matched against the Uniswap default route on the same pair, size cohort and chain: quote gap on 5-minute windows, realized fill on 30-minute windows. Positive quote gap means the venue quotes wider than the default. Positive realized fill means the taker ends up with more than the default route delivers. Windows are the matched-window counts behind each column. Every row shown is rated: at least 30 realized samples across at least a 7-day span. Where a venue charges a fee on the sell side, that fee sits inside both columns and shows up only in the realized fill. Two venues are omitted, one whose fills at this size are mostly a non-default execution mode we exclude as unrepresentative, and one that has since wound down its API.
The unnamed venue is the other kind of case. It quotes within 0.1 bps of the default and fills 10 bps behind it at $1M, widening to 28 bps at $1k. Its response carries no fee field, we sent no fee parameter, and across 3,119 simulated fills the decomposer found no fee transfer. That is routing. It is unnamed because the venue has not yet seen these numbers; a named venue gets its own rows before they appear here.
Two lessons, then. The gap tells you whether a quote is honest and nothing about what the trade paid, so a price claim has to come from the realized comparison. And a realized shortfall that holds flat across sizes is a fee until proven otherwise, whoever is measuring it.
|
|
|
Also this period
|
The quote sample now stands at 99,678 captures over 72.5 days. 87,722 of them, 88%, were realized in a fork simulation of the route the venue returned; the rest are collection errors, off-chain RFQ legs we cannot simulate, and real failures. 325 of 381 venue, chain and size cells are rated.
|
|
Three venues in the table charge a fee, and it lands in different columns. OpenOcean charges 1 bp on stables and 10 bps on volatile pairs, and ParaSwap a flat 1 bp, both from the output and both paid to a named collector address, so those fees sit inside the quote gap: OpenOcean's $1M gap reads 10.00 bps over 682 matched windows while its realized fill lands within 1 bps of the default route, and ParaSwap's gap reads 1.00 bps. LI.FI takes a flat 25 bps fee from the sell token under its default integrator, before routing, so its gap reads near zero and the fee appears only in the fill, 21.64 bps behind the default at $1M. None of the three is a missed quote.
|
|
28,357 sandwich attacks over the 7 days to August 31, against $86.0M of victim volume across the four chains we track. Base carried the most attacks at 16,501; Ethereum carried the most value at $76.1M of the $86.0M. Among the 500 most recent victim trades in the sample the median size is $187, so this is high-frequency predation on small trades rather than a few large hits.
|
|
User-submitted revert rates on Ethereum over the same 7 days stayed under 1% on every major router. 1inch 0.20% on 118,904 user transactions, ParaSwap 0.39% on 35,071, Uniswap 0.71% on 154,070, KyberSwap 0.73% on 175,350. These strip senders classified as bots and searchers, and they are comparable only across router venues where the user submits the swap.
|
|
|
|
The aggregator leaderboard, the per-router revert breakdown and the quote-accuracy sample are on the ClearTrace dashboard. The methodology notes set out how the matched quote gap, the matched realized comparison and the rated-cell bar are computed, and why the two comparisons are never interchangeable.
|
|
ClearTrace · Cross-chain DEX attribution. Quote figures come from the forward-captured quote sample, 99,678 captures between 2026-06-23 and 2026-09-03, matched against the Uniswap default route by pair, size cohort, time window and chain. Both comparisons exclude gas, mempool competition, inclusion delay and real MEV, and cannot reproduce off-chain RFQ legs, so neither is a complete all-in trading cost. Where a venue charges an explicit protocol fee, that fee lands inside the quote gap, so a wide gap is not by itself evidence of an inaccurate quote. Rows whose fill came from a non-default execution mode carrying a fee that mode's users do not pay are excluded from the realized comparison and the exclusion is reported with the result. Sandwich and revert figures are on-chain over a 7-day window ending 2026-08-31. The user-only revert rate removes senders classified as bots or searchers, and is comparable only across router venues; a batch auction or an intent venue clears off-chain, so an unfilled order never reverts on-chain. Every figure above is reproducible from ClearTrace's published data; the live leaderboard moves with each sync.
|
|