Market context
Help center

How the Routescore is produced

The Routescore scoring formula with an explicit sign convention — higher Routescore = better route, risk terms are subtracted, quality/efficiency terms are added — plus a glossary distinguishing RISK from QUALITY/EFFICIENCY terms.

Routescore is a pre-trade scoring layer. For every candidate swap route it produces a single 0–100 score and a per-component breakdown. This page mirrors the public methodology page: the formula, the sign convention, the weights, and a glossary, so the score is auditable on any confirmed block.

Higher Routescore = better route

The sign convention is explicit so you never have to guess a sign. The two risk penalties (MEV risk, slippage) are subtracted; the two quality / efficiency terms (gas efficiency, liquidity depth) are added. A higher Routescore always means a better execution-adjusted route.

The scoring formula

Each component is independently normalised to 0–100 against the same trade evaluated across all candidate routes, then combined with the published weights. The sign convention is explicit: higher Routescore = better route. The two risk penalties (MEV risk, slippage) are subtracted; the two quality / efficiency terms (gas efficiency, liquidity depth) are added.

# Higher Routescore = better route.
# RISK penalties are SUBTRACTED; QUALITY / EFFICIENCY terms are ADDED.
 
Routescore = 100
           - w1 · MevRiskPenalty        # RISK  (subtracted)
           - w2 · SlippagePenalty       # RISK  (subtracted)
           + w3 · GasEfficiency         # QUALITY/EFFICIENCY (added)
           + w4 · LiquidityDepth        # QUALITY/EFFICIENCY (added)
 
# Component definitions (each normalised to 0..100 over candidate routes)
# RISK terms — higher = worse, enter the formula with a MINUS sign:
MevRiskPenalty = sandwich_probability + frontrun_probability       (detector v0.4.2)
SlippagePenalty = |mid_price - executed_price| / mid_price * 1e4    (bps, magnitude)
 
# QUALITY / EFFICIENCY terms — higher = better, enter with a PLUS sign:
GasEfficiency  = min(gas_cost_usd_over_routes) / gas_cost_usd       (1.0 = cheapest)
LiquidityDepth = pool_1bp_depth_usd                                 (deeper = better)
 
# Weights — see /methodology#weights for rationale (and #glossary for signs)
w1 = 0.40   w2 = 0.25   w3 = 0.15   w4 = 0.20
 
# Output bounds
0 <= Routescore <= 100   (higher = better execution-adjusted route)
What the launch model computes today

The formula above is the full four-component design and its sign convention. The shipped launch modelheuristic.route_score.v1, the version stamped on every route score — is a narrower first cut of it: it starts from a 100 ceiling and subtracts a modeled MEV-risk penalty (leak in bps plus sandwich frequency), then clamps the result to a 10–99 range. The gas and liquidity quality terms are part of the target design and are not yet folded into heuristic.route_score.v1. So the live number is a modeled, MEV-weighted, point-in-time score in 10–99, not the full weighted blend of all four components. The composite score is separate from — and not the subject of — the calibration surface, which evaluates source-specific baseline forecasts, not heuristic.route_score.v1.

Weights

SymbolComponentSignWeightWhy this weight
w1MEV riskRisk · subtracted0.40Sandwich + frontrun probability dominates ex-ante loss on retail-size swaps. Largest weight by design — more modeled MEV pushes the score down.
w2SlippageRisk · subtracted0.25Modeled execution slippage vs the mid quote, pulled per-DEX from the aggregator quote step. More slippage pushes the score down.
w3Gas efficiencyQuality · added0.15Inverse gas-cost per unit notional, normalised to the cheapest available route on the same trade. A cheaper route pushes the score up.
w4Liquidity depthQuality · added0.20Deeper pools reduce execution risk and push the score up. Measured as 1bp-depth at the prevailing mid.

Glossary · risk vs quality terms

Every term is labelled so the sign is never ambiguous. RISK terms are penalties (subtracted); QUALITY / EFFICIENCY terms raise the score (added). Higher Routescore always means a better route.

TermClassDirectionDefinition
MevRiskRISKHigher = worse → subtractedModeled sandwich + frontrun probability for the route. A penalty: more MEV risk lowers the Routescore.
SlippageRISKHigher = worse → subtractedModeled price move between the mid quote and the executed price, in signed bps. A penalty: more slippage lowers the Routescore.
GasEfficiencyQUALITY/EFFICIENCYHigher = better → addedInverse gas cost per unit notional, normalised across candidate routes. A quality term: a cheaper route raises the Routescore.
LiquidityDepthQUALITY/EFFICIENCYHigher = better → addedPool depth at 1bp around the prevailing mid. A quality term: deeper liquidity raises the Routescore.
RoutescoreQUALITY/EFFICIENCYHigher = better routeThe published 0–100 output. Risk penalties are subtracted and quality/efficiency terms are added, so a higher Routescore always means a better execution-adjusted route.

Calibration evidence and public claims

The public calibration surface compares source-specific baseline forecasts with their own measured quantities, and the public claim gate is source-specific. These baselines forecast their own measured quantity from prior observations; they are not the composite Routescore (heuristic.route_score.v1), which the calibration surface does not evaluate. Overall Brier score and expected calibration error are shown as transparency summaries; they are not sufficient on their own for a public claim.

SourceMeasured quantityBaseline (prediction basis)Public-claim rule
onchain_settlement_reconcilerSettled execution cost versus a reconstructed pre-trade Uniswap V3 pool mid, in bps — from real executed swaps.settlement_cost_baseline.v1, a trailing baseline over the source's own prior realized costs.Must independently clear the sample floor and Brier/ECE ceiling.
onchain_quote_dispersion_reconcilerCross-venue on-chain quote dispersion, in bps — reconstructed from historical on-chain pool state (QuoterV2 per-fee-tier quotes); a real-but-hypothetical quote, not an execution.onchain_quote_dispersion.v1, a trailing baseline over the source's own prior observed on-chain dispersion.Must independently clear the sample floor and Brier/ECE ceiling.
dex_quote_diff_reconcilerCross-aggregator quote dispersion: highest-versus-lowest spread across independent aggregators (1inch, 0x, CoW) for the same intent, in bps — subsequently observed, not an execution.routing_leak_baseline.v1, a trailing baseline over the source's own prior observed spreads.Must independently clear the sample floor and Brier/ECE ceiling.

Routescore does not pool these distinct quantities as if they were the same measurement. A cohort becomes public-eligible only when at least two distinct independence groups each independently clear the gate for the same exact measurement quantity. Different quantities never corroborate one another. Only sources in the published measured-quantity table above can count — a source whose measured quantity is not mapped ("unknown measured quantity") is shown for transparency but never counts toward public eligibility. The three sources provide separate acquisition paths and measured quantities, which reduces reliance on any one source; that diversity alone does not qualify a claim or eliminate common-mode failure, observable market anomalies, or model error, since two of the paths read the same on-chain pool state.

The per-source gate a source must clear on its own outcomes is:

  • ≥ 30 confirmed labels and ≥ 30 probability-eligible pairs;
  • labels count only at label confidence ≥ 0.6;
  • Brier ≤ 0.2 and ECE ≤ 0.1;
  • a "bad outcome" is the source's own measured quantity reaching ≥ 30 bps — for settled execution cost that is an incurred loss; for the two dispersion sources it is a ≥ 30 bps dispersion, not an incurred loss;
  • and the source must measure a known quantity (in the table above).

For one exact measurement quantity, at least two distinct independence groups must clear this gate independently. Groups measuring different quantities do not count toward the same claim. Brier and ECE test probability calibration only — not discrimination, route-ranking skill, or causal savings; a naive base-rate forecaster can score well on calibration. Calibration is a floor to clear, not proof of usefulness.

The dashboard can still show an overall blended Brier/ECE for inspection, but that blended row is not the claim basis. A cohort that does not clear the gate is not hidden: its diagnostic Brier/ECE and counts remain visible for transparency, carrying a "no public claim" badge, and it is simply not designated public-eligible. Cohorts are one-dimensional breakdowns (by chain, venue, token pair, size bucket, freshness, or source), not joint slices. Drift suppression is currently applied at the overall snapshot level — a flagged downgrade withdraws all public claims together until they recover; per-cohort drift suppression is a future enhancement. In addition, every public-eligible claim must be bound to a recorded source-set version/hash before it is shown — an unbound snapshot is always "no public claim". Today the surface exposes that version and hash (not a downloadable observation bundle), so a published number is pinned to a fixed, recorded reference that can be cited and disputed.

What the score does not include

The Routescore number deliberately excludes risks that should not be mixed into a price-execution score. These are surfaced as separate signals on the route detail, not folded into the number:

  • Oracle risk — a 100/100 route on a pool with a fresh oracle compromise is still a bad trade, surfaced separately.
  • Bridge risk — cross-chain routes carry bridge exposure that is not modelled in the score.
  • Smart-contract risk — audit, bug-bounty, and age-of-deployment signals are surfaced separately; we do not mix exploit-tail risk into a price-execution score.
Modeled, point-in-time, not advice

Score and component outputs are modeled, point-in-time decision support and not investment advice. The full inputs, caveats, and audit instructions live on the methodology page; known limitations are published at /limitations.