ClearTrace Scorecard · Edition 2 of a recurring series
DEX Aggregator Execution Scorecard
Edition 2, August 2026
The rated record of DEX aggregator execution quality: quote accuracy, execution
slippage, and revert rates, measured the same way for every aggregator on this board,
by a third party with no routing product, and frozen so the numbers can't be edited after
the fact. The board is not a complete census: venues withheld from ClearTrace's published
outputs, and venues we do not yet sample, do not appear on it at all.
Chain: Ethereum ·
Snapshot frozen: 2026-08-07 04:27 UTC ·
On-chain data: 7-day window to 2026-08-05 ·
Published: 2026-08-07 ·
Snapshot: scorecard-edition-2.json
SHA-256: 79069bbe93d86070af2a60c3b21770400bbecef918063aaef4f4a9e1cf184203
Why a rated edition exists
Every aggregator claims best price and high reliability, and those claims are
self-reported, published by the routing product being measured. Meanwhile MiCA
transposes MiFID-style best-execution duties into crypto: under
Regulation (EU)
2023/1114, Article 78 obliges a CASP executing client orders to take all necessary steps
to obtain the best result and to evidence it on request, with record-keeping under
Article 68. The regime applied from 30 December 2024, and the transitional window that let
existing providers keep operating without full authorisation closed, at the latest,
on 1 July 2026, so evidencing best execution is already in force.
Compliance dashboards (e.g. DefiLlama's
MiCA tracker) cover exchange-level obligations, not execution quality at the routing
layer, where the trades actually happen.
This scorecard is a neutral, methodology-published, third-party rated
record: we operate no router and take no order flow, the method is published, and
each edition is numbered, dated and hashed. A rating you can cite in a governance forum, a
marketing page, or a best-execution file. The snapshot below is what the hash
covers, so the numbers cannot be back-dated or quietly revised; the findings text on this
page is not hashed, and corrections to it ship as dated, additive notes whose full history
is public in git.
Errata & changes since Edition 1
This scorecard corrects earlier editions in the open, never by silent edit. Edition 1's frozen snapshot and hash are unchanged; the corrections below travel forward with the record.
- Edition 1's first finding is withdrawn. It ranked revert rates across venues that settle differently, pairing Odos and Tokenlon as the two ends of a reliability spread. A revert rate measures reliability only where the failing transaction is the user's own, i.e. on a router. Tokenlon is an RFQ venue whose submitter we had not established, and its 0.04% is not the rate at which its users' swaps fail. The Edition 1 page carries a dated erratum to the same effect; its snapshot and hash are unchanged.
- Revert rates are now tagged by execution model and ranked only within one. Every venue carries an execution model: router, batch auction, intent, or unclassified where we have not established who submits the settlement transaction. Batch-auction (CoW) and intent (1inch Fusion) venues appear in the table with their rate shown but flagged n/c (not comparable), never ranked against a router's.
- Revert methodology moved from v4 to v5+v6. Edition 1's revert figures used the v4 sender filter. This edition uses v5 (a stronger address-rotating-bot filter) and reports the v6 genuine-user rate alongside every headline: the rate among senders who behave like real users, which is the figure to read for bot-contaminated cells.
- The RFQ-at-$1M column and its finding are withdrawn. Edition 1 reported a per-venue "RFQ @ $1M" share and a finding that RFQ routing at size doesn't guarantee a tighter quote. That share was a detection artifact: our sampler only parsed the RFQ flag from KyberSwap's quote format, so KyberSwap read ~86% while every other sampled venue, including venues we know route heavily through RFQ desks, read exactly 0.0%. A metric where most venues are exactly zero is unmeasured, not zero, so it is removed rather than ranked. The internal RFQ flag is still used for sim-coverage bookkeeping; it is no longer published or compared.
Edition 2 findings
Post-publication note (2026-09-24). The quote-gap figures below were computed over four
chains, not Ethereum. They are flagged rather than restated, and the reason is given here.
This edition is scoped to Ethereum and its revert and execution-cost columns are. Its quote-gap
column is not: the code that built it filtered the on-chain half to one chain and never filtered
the quote samples, so each gap pooled Ethereum, Base, Arbitrum and Optimism fills. L2 sampling had
begun three days before this edition froze, so the contamination here is small — 9.7%
of the 43,590 samples behind these figures were not Ethereum, against 39.3% by Edition 3. The
direction is known and is the same throughout: L2 fills quote tighter, so each published figure
flatters the venue slightly against its own Ethereum samples.
No corrected value is published here, because we cannot produce one honestly.
Restating a frozen figure means rebuilding it from this edition’s own corpus at its own
freeze, and that rebuild does not reproduce what this edition published: against today’s code
it returns KyberSwap 1.14 where 1.18 was published, OKX 2.96 against 3.04, OpenOcean 10.88 against
10.96 and LI.FI 0.83 against 0.82. Those gaps are small and they are not the chain defect —
they are the sampler corpus and the cell code having moved in the seven weeks since. A restated
number that cannot first reproduce the published one is a different measurement wearing a
correction’s clothes, so the figures below stand as published and should be read as
four-chain numbers. Edition 3’s note of the same date carries restated values, because its
rebuild does reproduce its published figures exactly. Per this scorecard’s integrity model
the snapshot, the findings text and the SHA-256 hash are unchanged.
Post-publication note (2026-09-10). Tokenlon's execution-cost figure below is withdrawn.
Most of it was never a cost anyone paid. Dune's Tokenlon spellbook records the
signed order's quoted amount as the amount bought:
tokenlon_v5_ethereum_amm_v1/v2_trades take token_bought_amount_raw from
order.makerAssetAmount on the AMMWrapper Swapped event, while the same
event carries the settleAmount the taker actually received. The amount
sold is read from takerAssetAmount and is correct, because the taker does
pay exactly that. So the error runs one way only, and an execution-cost metric measured against
the quote reads it as a cost.
Decoding every AMM-route fill of a seven-day window (1,310 fills, from transaction receipts)
puts the size of it at a median 47.4 bps: takers received that much more
than the source records, and the quoted amount matches no transfer in the transaction.
About 30 bps of what remains is Tokenlon's own disclosed fee, measured from the same log,
leaving a few basis points of genuine routing cost. Tokenlon's RFQ route reads the same field and
shows no such gap, because an RFQ quote is firm and the quote is the fill.
The caution extends to the execution-cost column of the table below, which is sorted by it.
Tokenlon's position at the bottom of that column is a ranking whatever the prose says, and it is
not supported.
No replacement figure. The window decoded above is a recent one, not this
edition's. The direction is certain for every window — on a route that quotes with
a slippage buffer the recorded quote can only understate what the taker received — so
74.47 bps overstates Tokenlon's execution cost here too. The size of the overstatement in
this edition's window has not been measured, and we are not going to publish a number we did not
measure. It follows that we have also not established whether the count in
“Most aggregators do not beat the venue default” is affected: it moves only if the corrected figure falls below
the 8.82 bps baseline, and we have not checked that for this window.
Per this scorecard's integrity model, the Edition 2 snapshot, its findings text, and its SHA-256 hash
are unchanged: the record stays frozen, and corrections are published as dated notes like
this one. Tokenlon's execution cost is no longer served on any live ClearTrace surface, pending a
source that records settled amounts; its revert rate is measured from transaction outcomes, not
from amounts, and is unaffected by this defect.
Post-publication note (2026-10-01). The findings below describe the v6 user-only revert rate as a rate among “genuine users”
counted by “our v6 classifier”, and the Errata section above calls it the rate among senders who
“behave like real users”. It is neither. The v6 predicate is a threshold on each sender’s own outcomes, not a classification of who the sender is: it keeps senders
whose transactions to the venue succeeded at least 90% of the time over the window (personal revert rate below 10%, with at
least one success) and drops the rest. Two consequences follow. The figure is bounded under 10% by construction, and a sender
whose few transactions included one failure is removed from the numerator and the denominator alike. Read every
“genuine-user” figure on this page as the failure rate among consistently-succeeding senders, not as the rate
people experience and not as the share of all attempts that fail. The residual term the first finding decomposes is
likewise everything the threshold removed, which includes searcher traffic but is not a measurement of it. The frozen
snapshot’s own
note field carries the same wording (“senders classified as genuine users”,
“the rate users actually experience”) and is left as it is, because it is inside the hash. No number on this page
changes. Per this scorecard’s integrity model the snapshot, the findings text and the SHA-256 hash are
unchanged; Edition 4 carries this correction forward in its errata, and the filter is set out in full on the
methodology page.
- Most of what a headline revert rate counts is not the user's own failed swap. Every headline here splits into two terms: transactions from senders our v6 classifier counts as genuine users (personal revert below 10%), and everything else it did not classify as a bot. The second term is the larger part of the difference between venues: across the 7 pooled routers it accounts for more than half the headline gap in 18 of 21 venue pairs. So the 4.5× headline gap between OpenOcean (5.87%) and Bitget DEX (1.31%) is substantially a difference in traffic mix; on the user-only rate the same two are 0.76% and 0.47%, a 1.6× gap. What this does not show: the residual bucket is bounded by the classifier's own thresholds, so its pooled rate (18.6%–27.1% here) sits inside a corridor we set, and should not be read as a measured constant. Only the share of traffic in it (3.2%–19.4%) varies freely. Every reliability finding below is stated on the user-only rate.
- Genuine-user revert rates span 0.71 percentage points; headline rates span 4.56. Genuine-user revert rates (v6) across the 6 routers where the rate is comparable and uncontaminated run from 0.29% (SushiSwap) to 1.00% (KyberSwap). 4 of the 6 route measurably more reliably for genuine users than the direct-Uniswap default (1.05%). OpenOcean and KyberSwap are lower but within measurement error (two-proportion z, p > 0.05), so they should be read as no worse rather than better. The baseline itself, and the 3 routers with no genuine-user rate this edition (OKX, Odos, LI.FI), are outside this pool.
- Reverts are not comparable across execution models. A revert rate is a reliability signal only where the failing transaction is the user's own: on a router, where the user submits the swap. On a batch auction (CoW Protocol) or an intent venue (1inch Fusion), a solver or resolver submits, so an order that cannot be filled never becomes a transaction and the on-chain revert rate is structurally near zero however reliably the venue fills. The table tags every venue with its model; the reliability findings above rank routers only, and non-router rates are shown flagged n/c, never ranked.
- Most aggregators do not beat the venue default. Against the direct-Uniswap execution baseline (8.82 bps median), 3 of the 8 venues we measure on-chain deliver cheaper realized execution: Bitget DEX (2.24 bps), Bebop (6.66 bps), 1inch (6.9 bps). The other 5 route worse than the default they are competing with. 6 venues carry no on-chain execution data this edition (Odos, OpenOcean, SushiSwap, LI.FI, 1inch Limit Order Protocol, DODO X) and are unmeasured here. Unlike revert rate, realized execution cost is a per-fill outcome the trader gets whoever submits the transaction, so it is compared across every settlement model; the model is shown for each venue so a reader can scope it further.
Provenance: Bitget DEX, OpenOcean, SushiSwap, DODO X and Bebop are named above, and we have not ingested their own published deployment addresses. Their figures rest on our labelling of which contracts belong to them, and should be read as provisional.
The rated table
Rated = ≥30 realized fork-simulation quote samples spanning
≥7 days. On-chain metrics (slippage, reverts) cover every
trade/transaction we attribute to the venue in the window, not a sampled subset of them,
but attribution is entrypoint-framed, so the denominator is the flow entering
through contracts we can tie to the venue, not the venue's total volume. Baseline = the direct-venue default
aggregators are implicitly compared against. Revert rate shows the headline with the v6
genuine-user rate in parentheses; n/c marks a venue whose settlement model
(batch auction, intent, or unclassified where we have not established who submits the
settlement transaction) makes its on-chain revert rate not comparable to a router's.
A venue marked wound down has shut down: its numbers are frozen history for the
window measured, not a live venue. A venue marked unestablished is one whose own
published deployment addresses we have not ingested: its numbers rest on our labelling
rather than on the venue's list, and should be read as provisional. An execution-cost cell
marked all-chain means the venue has no row on this chain, so the figure is its
median across every chain we measure, shown as context and excluded from every finding.
A dash (—) means we hold no measurement for that cell this edition, whether the venue
had no qualifying traffic, fell below the query's reporting floor, or is not yet
quote-sampled; it never means zero. Router counts differ between findings because each
states its own pool: the residual decomposition includes the venue default, the
genuine-user comparison does not.
| Aggregator | Status | Model | Exec slippage | Revert rate |
Quote gap | Quote n | Routing txs |
| Bitget DEX · unestablished | on-chain only | Router | 2.24 bps | 1.31% (0.47% users) | — | — | 43,100 |
| Bebop · unestablished | rated | Unclassified | 6.66 bps | 3.85% n/c | 0 bps | 3,126 | 92,269 |
| 1inch | rated | Router | 6.9 bps | 1.41% (0.58% users) | 0 bps | 4,731 | 91,593 |
| Uniswap (direct venue) | baseline | Router | 8.82 bps | 2.81% (1.05% users) | 0 bps | 4,834 | 149,656 |
| KyberSwap | rated | Router | 9.42 bps | 2.39% (1% users) | 1.18 bps | 4,506 | 87,659 |
| CoW Protocol | on-chain only | Batch auction | 10.26 bps | 0.09% n/c | — | — | 70,898 |
| ParaSwap (Velora) · unestablished | rated | Router | 17.95 bps | 1.7% (0.35% users) | 1 bps | 4,633 | 25,008 |
| OKX | rated | Router | 23.26 bps | — | 3.04 bps | 3,033 | — |
| Tokenlon · unestablished | on-chain only | Unclassified | 74.47 bps | 0% n/c | — | — | 2,705 |
| Odos · Wound down 2026-07-30 · data through Jul 2026 | rated | Router | — | — | 0 bps | 3,109 | — |
| OpenOcean · unestablished | rated | Router | 14.57 bps all-chain | 5.87% (0.76% users) | 10.96 bps | 3,800 | 2,931 |
| SushiSwap · unestablished | rated | Router | 28.75 bps all-chain | 2.54% (0.29% users) | 0 bps | 3,869 | 40,575 |
| LI.FI | rated | Router | — | — | 0.82 bps | 2,828 | — |
| 1inch Limit Order Protocol | on-chain only | Intent | — | 0.62% n/c | — | — | 31,637 |
| DODO X · unestablished | on-chain only | Unclassified | — | 3.59% n/c | — | — | 17,364 |
Verify this edition
The findings above are computed from a frozen snapshot. To verify nothing has changed since
publication, hash the snapshot and compare:
curl -s https://cleartracedata.com/static/data/scorecard-edition-2.json | shasum -a 256
79069bbe93d86070af2a60c3b21770400bbecef918063aaef4f4a9e1cf184203
The snapshot is committed to a public git history at
publication time, which independently timestamps it.
Methodology & scope
Full methodology: cleartracedata.com/methodology and the
open-dataset README. In brief: execution slippage is the
median per-fill gap vs a 1-minute VWAP oracle over all on-chain trades; revert rate counts
failed routing transactions from raw on-chain data; quote accuracy is a forward-captured
fork-simulation sample (quoted vs realized). Aggregators we don't yet quote-sample appear
with on-chain metrics only.
Preliminary cells are shown but never rated. Quote-sample windows differ by venue (each
venue is rated once it has enough samples of its own), so the quote column is not a single
shared window the way the on-chain columns are. Scope: Ethereum for this edition; the live
leaderboard is the free preview layer that accrues between
editions.
Post-publication note (2026-09-25). The sentence above misnames the slippage baseline.
It says execution slippage is measured against “a 1-minute VWAP oracle.” It is not. The query
values both legs of each fill against Dune’s prices.usd at the minute of the fill, and
Dune documents that table as a view of its Coinpaprika feed: exchange-aggregate market data at
5-minute intervals, interpolated to the minute. No volume weighting is applied anywhere in the query.
Every figure on this page was computed exactly as it says elsewhere; only the name of the reference
price was wrong. Logged in our corrections log and registered in our metric-findings registry as
exec-slippage-baseline-is-not-a-vwap-2026-09-25.
Cite or commission
Cite this edition as: ClearTrace DEX Aggregator Execution Scorecard, Edition 2
(August 2026), sha256:79069bbe93d8…. Link: https://cleartracedata.com/scorecard/edition-2. For a private cut of your own routing
versus peers (per-pair, per-size, with the failure modes), or a subscription to future rated
editions for a best-execution evidence file,
book a working session.