The Price Moves First. DEX Routes Fray Before the Exit.
A quote is the first place where exit risk becomes observable—not as a failed trade yet, but as route fragmentation, output deterioration, and summary-field ambiguity.
Most users read a DEX quote as a number. I read it as an evidence object: pool hops, split paths, output rate, API priceImpact, block state, and the transaction boundary ahead.
Solana Data’s recent comparison of blockchain metrics across providers makes a broader measurement problem visible: a shared label does not guarantee a shared construction path. A DEX quote has the same problem one layer lower: one output number can compress different pools, fee tiers, intermediate tokens, and split routes.
DEX exit risk does not begin at transaction failure. In this run, it began when the quote stopped looking like a single price and started looking like a route map—before any swap was sent.
Price marks the position. After it moves, the loss can still take different forms: an execution haircut, a failed swap, a delayed redemption, or a withdrawal that cannot clear. Those outcomes do not share one measurement. This post asks what the quote layer exposes before execution.
I swept Uniswap classic routes from $100 to $1M (USDC → WETH, LINK, AAVE, MKR) on June 17, 2026. At larger sizes, several quotes drew on more pools and intermediate hops. One pair also showed a sign disagreement between the API priceImpact field and the output-rate direction.
Market stress makes exit capacity worth asking about. The useful parallel from the SpaceX access episode is narrower: centralized venues can cancel, refund, or issue replacement objects when an upstream allocation fails. A DEX route has no default actor who can create the replacement object. Once the quote becomes a transaction, failure moves to pool state, transaction constraints, token controls, and execution outcomes.
The ladder run
I requested Uniswap classic routes on Ethereum mainnet for:
- USDC → WETH, LINK, AAVE, and MKR
- $100, $1k, $10k, $100k, and $1M input sizes
- 50 bps slippage tolerance
- V2, V3, and V4 routes; UniswapX excluded
The collection run was 2026-06-17T134419Z. Each saved response included proposed output, route plan, API-reported priceImpact, gas estimate, and block. The dataset contains no signed transactions, mempool observations, or receipts.
One limitation: successful responses span blocks 25337645–25337664, so the ladder mixes size changes with modest live-state drift. It is not a same-block counterfactual.
I also pinned one block, 25337659, and replayed WETH, AAVE, and MKR with a local Smart Order Router. The local router is not the Trading API, so I keep it separate. But the pattern survived the stricter setup: with block state fixed, pool-hop counts still changed with size.
The routing API returns a proposed output and path under state at request time. It does not lock that state. I used Uniswap’s POST /quote API reference. The user still signs with a minimum output, deadline, and gas; if state moves against the quote, the swap can revert (swaps concepts).
At $1M, the quote became a route map
In this ladder, the first visible change was the quote object becoming a route map.
At $100, the quote can look like one number. At $1M, the routing structure is harder to ignore.
The router may split a larger input across parallel paths, fee tiers, and intermediate tokens. I count pool hops across those proposed routes—the routing structure behind one output number.
In this run:
- WETH reached 7 pool hops at $1M.
- LINK reached 6.
- AAVE moved from 1 hop at $100 to 12 at $1M.
- MKR reached 7 at $1M.
AAVE is the sharp contrast: twelve hops at $1M, assembled across several pools and intermediate tokens.
Route structure and output deterioration are different axes
Pool hops and quoted output deterioration pull apart in this ladder:
- WETH: modest impact at $1M (0.30%), but 7 pool hops.
- LINK: 6 hops at $1M without a large impact field.
- MKR: aligned deterioration at $1M—API 46.11%, output-rate benchmark ~45.96%.
- AAVE: 12 hops plus cross-benchmark sign disagreement at $100k and $1M.
Read route composition and output-rate movement separately.
Cross-benchmark check: AAVE diverges, MKR aligns
I also compared API-reported priceImpact with output-rate deterioration from the returned output. At large size, even the quote summary can become part of the audit problem.
Let out(S) be response.quote.output.amount converted into human-readable output tokens for input size S. I define the ladder’s output-rate deterioration as:
output-rate deterioration(S)
= 1 - [(out(S) / S) / (out(100) / 100)]
The $100 quote is an internal reference within the same ladder.
The two metrics answer different questions, so I do not expect numerical agreement. I use sign agreement only as a basic cross-field sanity check: whether the API summary and output-per-USDC movement point in the same direction.
WETH stayed aligned: 0.30% API impact at $1M versus about 0.34% output-rate deterioration. MKR also stayed aligned: 46.11% API impact versus about 45.96% output-rate deterioration.
AAVE did not. The $1M response reported −34.11% price impact while output per USDC was about 6.13% worse than at $100; at $100k the sign disagreed as well. I kept AAVE in the route figure and flagged its $100k and $1M points in the impact chart for cross-benchmark sign disagreement.
I checked the AAVE rows against the saved Uniswap JSON and the normalized ladder. The negative API priceImpact values appear in the raw responses; the output-rate calculation reproduces from raw amounts, and WETH and MKR pass the same pipeline with matching signs. Under this setting, AAVE is a cross-benchmark discrepancy that survives the data-pipeline audit.
The remaining question is router-level: how the Trading API defines priceImpact when a route is split across multiple pools, fee tiers, and intermediate tokens. The saved artifact is enough to audit the mismatch, but not enough to attribute it to a specific aggregation rule.
What this ladder does not measure
This is quote-layer evidence: saved route plans, outputs, blocks, and API summary fields. It contains no signed transactions, mempool observations, or receipts. Every pair returned a $1M quote in this window, but quote success is not exit capacity.
Pool-hop counts describe routing structure, not pool depth or fill outcome. Gas, inclusion, ordering, private flow, state changes, and MEV belong to a later layer after broadcast. The macro backdrop and SpaceX comparison motivate the exit question; they do not explain the AAVE or MKR rows. The AAVE discrepancy survives basic parsing and decimal checks, but its router-level cause remains unresolved.
Closing
Before signing, I would ask four quote-layer questions from this run:
- How many pool hops does the router need to assemble this size?
- Does output per USDC deteriorate versus a smaller quote in the same ladder?
- Does the API
priceImpactsummary agree in sign with that output-rate movement? - Where does the evidence stop—quote JSON, or receipt?
The next test is fork execution: replay the quoted swaps under controlled state changes and check whether amountOutMinimum still holds. Reverts and output gaps would move the evidence from route fraying toward exit breakage.
Appendix: sources
- Main ladder: Uniswap
POST /quoteAPI on Ethereum mainnet, collection run2026-06-17T134419Z(June 17, 2026). USDC → WETH, LINK, AAVE, MKR; $100–$1M; 50 bps; V2/V3/V4 classic routes. - Output-rate audit: minimal sanity check gist. It compares raw
response.quote.priceImpactto cross-quote output-rate math on saved Uniswap JSON and does not fetch quotes. - RWA context: Where RWA Exchange Risk Actually Sits. The SpaceX episode separates subscription claims, refunds, replacement tokens, perps, wallet tokens, and brokerage shares into different audit objects.
- Macro backdrop (Fig. 1): public BTC, ETH, and WTI daily prices; shaded windows are context only.
- Fixed-block check: local Smart Order Router replay at block
25337659for WETH, AAVE, and MKR. This check is kept separate from the Trading API ladder.