|
ClearTrace
DEX Execution Insights
July 30, 2026 · Ethereum mainnet
|
|
Lead finding
The floor in two venues' quote gap turns out to be a fee
ClearTrace polls live quotes on four Ethereum major pairs at four trade sizes, then fork-simulates the route each quote returns to see what it would have delivered. The distance between the two is what we track. Across 16,655 realized fills from June 23 to July 30, seven of the nine venues shown here have a 25th-percentile gap sitting at or near zero in every cohort, between -0.00 and 1.26 bps. Two do not, and their floors hold flat across a 1,000x range of notional.
Broken out by pair, so that no cell mixes different assets, the 25th percentile of the quoted-to-realized gap in basis points:
| Pair |
$1k |
$10k |
$100k |
$1M |
| ParaSwap |
| USDC/USDT |
1.00 |
1.00 |
1.00 |
0.99 |
| WBTC/USDC |
0.84 |
0.98 |
1.00 |
0.98 |
| WETH/USDC |
1.00 |
1.00 |
1.00 |
0.98 |
| WETH/USDT |
1.00 |
1.00 |
1.00 |
0.98 |
| OpenOcean |
| USDC/USDT |
1.00 |
1.00 |
1.00 |
1.00 |
| WBTC/USDC |
10.00 |
10.00 |
10.00 |
10.00 |
| WETH/USDC |
10.00 |
10.00 |
10.00 |
10.00 |
| WETH/USDT |
10.00 |
10.00 |
10.00 |
10.00 |
OpenOcean's floor is two numbers rather than one: 1.00 bps on the stablecoin pair and 10.00 bps on the three volatile ones, holding to two decimal places in all twelve volatile-pair cells. ParaSwap runs a single 1.00 bps floor across all four pairs. The floors hold in the body of the data as well as at the quartile: 91.0% of ParaSwap's 2,400 fills and 92.5% of OpenOcean's 1,717 land at or above their pair's value.
A quantity that stays on 1.00 or 10.00 basis points from $1,000 to $1,000,000 is not being produced by the market, because market impact scales with size and does not land on round numbers. So we went and looked. Re-running eight of these routes live on July 30, each selling $1,000 of the stablecoin into the other asset, and reading the settlement transfers out of the simulation, the floor is an explicit fee: the settling contract receives the output and forwards all but a fixed cut of it to the trader, sending the rest to a collector address. ParaSwap's cut is 1 bps on every pair, paid to 0xef13101c. OpenOcean runs two tiers, 1 bps on the stablecoin pair and 10 bps on the volatile ones, paid to 0x8dd9433e. That is exactly the split the floor table shows, arrived at by a completely different route.
| $1k route, July 30 (stable in) |
Gap |
Fee |
Slippage |
| ParaSwap |
| USDC/USDT | 1.0000 | 1.0000 | 0.0000 |
| WETH/USDC | 0.9996 | 1.0000 | -0.0004 |
| WBTC/USDC | 0.8246 | 0.9999 | -0.1753 |
| WETH/USDT | 2.8498 | 0.9998 | 1.8500 |
| OpenOcean |
| USDC/USDT | 2.1962 | 0.9999 | 1.1963 |
| WETH/USDC | 13.5268 | 9.9965 | 3.5303 |
| WBTC/USDC | 11.6780 | 9.9968 | 1.6813 |
| WETH/USDT | 10.0000 | not measurable | |
Charging a routing fee is an ordinary commercial arrangement and neither venue is doing anything untoward here. The measurement point is that the fee is now separable from execution quality, and the two move independently. Look at ParaSwap's WBTC/USDC route: a 1.00 bps fee against a total gap of 0.82, because execution came in slightly better than quoted and the residual is negative. Or OpenOcean's stablecoin route, where the 2.20 bps gap is only 1 bps of fee and 1.20 bps of genuine slippage. A venue that charges more can still execute better, and until you split the two you cannot see which you are paying for.
One of the eight routes is blank above rather than zero. On OpenOcean's WETH/USDT route the trader was paid in a way our decomposition cannot follow, so we cannot say what part of that 10.00 bps gap was fee. It is very likely the same 10 bps tier as its two neighbours, and we are not going to write that down as though we measured it. The detector reports "no fee" and "cannot see the fee" as different answers, which is the only way this number stays worth anything.
Six limits, including the ones that cost us something. First, this is quote accuracy and not execution cost: it measures what a venue promised against what its own route delivered, so a venue can score well here and still be an expensive way to trade. Sushi is the case in point, with a 0.00 bps median gap and the widest on-chain median execution cost of any sampled router at 23.96 bps, though that cost is measured over all its Ethereum trades rather than this basket, so the two numbers describe different populations. Second, the venues are not measured over the same window: ParaSwap, KyberSwap, 1inch and Uniswap begin 2026-06-23, Bebop, Sushi and OpenOcean 2026-07-04, LiFi and OKX 2026-07-10. Third, not every quote reaches a fill and the loss is uneven: ParaSwap and Sushi lost none of their major-pair samples, while KyberSwap realized only 76.5% at $1M, where 85.7% of its quotes route through an off-chain RFQ leg we cannot simulate. Fourth, pooling pairs inside one cell can invert a result, which is the subject of the first bullet below. Fifth, this is Ethereum major pairs only (USDC/USDT, WBTC/USDC, WETH/USDC, WETH/USDT), and each pair-by-size cell rests on at least 54 realized fills. Sixth, the two measurements above are different sizes of evidence and should not be read as one: the floor table is 16,655 fills over 37 days, while the fee decomposition is eight live routes at one size on one day, which is enough to identify a deterministic fee and its recipient but not to characterise how either venue prices over time. The decomposition now runs on every sample the collector takes, so a later issue reports it across the whole basket.
|
|
|
This period in numbers
| |
A pooled median can report the opposite of every pair inside it
On WBTC/USDC, KyberSwap's median gap climbs at every step up in size: 5.25, 10.89, 17.28, 23.15 bps. Pooled across all four major pairs, its $1M median instead reads 0.33 bps, its best cohort of the four. The reason is which fills survive. KyberSwap's realized rate falls from 96.5% at $1,000 to 76.5% at $1M as the RFQ share of its quotes rises from 2.2% to 85.7%, and its hardest pair loses the most: WBTC/USDC realized fills drop from 141 to 54. Its own routing removes its worst cases from the average. We publish that pooled number, so this is a caution about our own table: read the per-pair series before ranking anything on it. Source: ClearTrace quote sampler, Ethereum major pairs.
|
| |
A 0.00 bps median does not mean a venue fills on its quote
Four venues post a median gap of 0.00 bps in every size cohort, and they are not doing the same thing. Counting only fills where the gap is exactly zero rather than rounding to zero: Bebop 97.8% of 1,630 fills, Sushi 77.9% of 1,728, the Uniswap venue default 52.8% of 2,301, and 1inch 11.5% of 2,263. 1inch is also off by more than 1 bps on 23.1% of its fills and missed by 1,040.6 bps on its worst one. Allow a rounding tolerance of half a hundredth of a basis point and the same four figures read 97.9%, 86.3%, 96.3% and 35.8%, which is why we now state the tolerance wherever we count fills. Source: ClearTrace quote sampler, Ethereum major pairs, June 23 to July 30.
|
| |
Odos left the sampler, and its row is now frozen history
What ClearTrace observed directly: on 2026-07-28 Odos's public quote endpoints began returning HTTP 410 Service Ended on both v2 and v3, and new API accounts were no longer being issued. We stopped sampling it that day. Its last realized sample is dated 2026-07-27, and its final figures are 3,109 realized quote samples and an on-chain median execution cost of 8.86 bps across Ethereum trades. To be exact about what we have done with it: its row still appears on the leaderboard in cost order, carrying a "wound down" badge, because deleting a venue's measured history is worse than showing it flagged. Read that position as a historical record rather than a live ranking. Source: ClearTrace quote-sampler collection log and aggregator leaderboard.
|
| |
Attribution coverage is 90.3%, and the figure we gave you before was too high
Every coverage number in the last five issues counted contracts our own labeling pipeline had explicitly failed to identify as if they were named. Of 2,310 label entries, 1,627 are the literal string "Manual Review Required", which is the pipeline recording that a contract is not identified, and the coverage query read it as a name. Only 683 entries name something. Corrected, today's seed reads 90.3% rather than 93.9%: ethereum 90.2%, base 90.6%, arbitrum 87.8%, optimism 89.6%. Last week we told you 94.5%; the like-for-like corrected figure is 90.6%. The trend we reported was real, coverage did rise over the period, and the level was three to four points too generous throughout. The five affected issues now carry a correction where they are served, with the original text left unchanged beneath it. Source: ClearTrace attribution coverage on the 2026-07-29 seed, recomputed 2026-07-30.
|
|
|
|
The full aggregator leaderboard, chain-by-chain coverage and live attribution data are on the ClearTrace dashboard, all now on the corrected coverage definition. The methodology notes explain how quote gaps, the fee decomposition, execution cost and rated-cell thresholds are computed.
|
|
ClearTrace · Cross-chain DEX attribution · Quote-sampler data 2026-06-23 to 2026-07-30, Ethereum. The sampler covers more venues than the nine shown here. Across all of them there are 19,215 realized fills on the four major pairs, of which the 16,655 from the nine shown are used above. Odos accounts for 2,037 of the difference and is covered in the third bullet; the remainder is one venue we hold out of published tables, whose figures would not change any finding here.
The quote gap is a venue's own quoted output against the output a fork simulation of its returned route produced, so it measures promise against delivery and not cost against another venue. A fork simulation is not a live fill: it excludes mempool competition, inclusion delay and MEV, and it cannot reproduce off-chain RFQ legs at all. Execution cost is a separate on-chain measurement over all trades. Percentiles are reported per pair wherever pooling would change the reading. Rated means at least 30 realized samples and a 7-day span, and every cell cited above clears both.
Every figure above is reproducible from ClearTrace's published quote-sample data.
|
|