TradingUpdated

Perp DEX execution quality: slippage on a $100k market order, live across orderbook venues

Half-spread plus price impact in basis points to fill a $100,000 market buy against each venue's live orderbook, fee excluded, on ETH, BTC and SOL. Lower means the venue fills the size closer to mid. Books walked every 30 seconds across 9 orderbook perp DEXs, including Hyperliquid, Lighter, Aster, Extended, dYdX v4, Paradex, Ondo Perps, Polymarket and edgeX.

TL;DR. As of , Aster posts the lowest slippage at $100k at 0.0012% (24h avg) across 9 ranked venues. Source: OpenChainBench, https://openchainbench.com/benchmarks/perp-execution-quality.

Rack-rate taker fees do not tell a trader which perp DEX fills a market order closer to mid: that depends on the depth of the visible orderbook at the notional being traded, and books move continuously. This benchmark isolates the execution component of the perp-fees bench: the same 30 second orderbook walks, the same $1k to $1M tiers, but with the taker fee taken out, so a zero-fee venue and a 5 bps venue are compared on depth alone. The headline is the $100,000 buy, the size where impact starts to separate venues (at $1,000 every deep book fills within a fraction of a basis point). ETH is the headline tab; BTC and SOL have their own rankings, and the $1k, $10k and $1M tiers are published as raw series. Oracle-priced venues (GMX v2, Gains) have no book to walk and are left out; their fixed spread parameter is part of their all-in figure on the perp-fees bench.

Methodology

Every 30 seconds the perp-fees harness fetches the public orderbook of each venue for ETH, BTC and SOL, computes the top-of-book mid and walks the ask side for $1,000, $10,000, $100,000 and $1,000,000 of notional, consuming levels until the size is filled. The size-weighted average execution price against mid, in basis points, is the slippage of a market buy at that size. The harness publishes the all-in cost per tier (perp_fees_all_in_bps_tier{venue,chain,notional}) and the taker fee (perp_fees_taker_fee_bps{venue,chain}); this bench subtracts the second from the first and ranks venues on the 24 hour average at the $100,000 tier. A tier the visible book cannot fill is dropped for that tick and counted in perp_fees_tier_skipped_total instead of being extrapolated. No trades are placed; every value comes from public, unauthenticated REST endpoints.

  • Cadence: every 30 seconds per venue and asset, 8 second timeout per fetch, from the perp-fees harness (bench 007). The metric is perp_fees_all_in_bps_tier{notional="100000"} minus perp_fees_taker_fee_bps for the same venue and asset, averaged over 24 hours.
  • Mid price: (best_bid + best_ask) / 2 from the top of each book at tick time. Slippage: (size-weighted average ask price filled - mid) / mid x 10,000, so half the quoted spread is part of the number and a one-tick book reads above zero.
  • Walk: levels are consumed in price order, min(level_notional_usd, remaining_target_usd) at each, until $100,000 is filled. Books capped by the venue API (Paradex 100 levels, edgeX 200 levels) skip the tier when the visible depth cannot fill it (or, on Paradex, when the walk would eat more than 90 % of the visible side) rather than publish an inflated number.
  • Book endpoints, part 1: Hyperliquid POST /info l2Book; Lighter GET /api/v1/orderBookOrders (100 levels); Aster GET /fapi/v1/depth (100 levels); Extended GET /api/v1/info/markets/{market}/orderbook; dYdX v4 indexer GET /v4/orderbooks/perpetualMarket/{ticker}.
  • Book endpoints, part 2: Paradex GET /orderbook/{market}/interactive (the Retail book, RPI liquidity included, see perp-fees); Ondo Perps GET /v1/perps/depth (100 levels); Polymarket perps GET /v1/info/book (500 levels); edgeX GET /api/v2/public/quote/getDepth (200 levels).
  • Fee excluded on purpose: Lighter quotes 0 bps taker, Hyperliquid 4.5, Aster and dYdX 5, Extended and Ondo 2.5, Polymarket 4, edgeX 3.8, Paradex 0 on Retail orders. The all-in ranking with fees is the perp-fees bench; this page answers the depth question only.
  • Oracle-priced venues excluded: GMX v2 and Gains price against an oracle with a fixed spread and impact parameter, there is no book to walk, so their tiers are flat and would read as zero or constant slippage. They stay on perp-fees where the fee and the spread parameter are counted together.
  • Headline tier $100,000, tabs ETH, BTC, SOL. The $1,000, $10,000 and $1,000,000 tiers are available as raw series through perp_fees_all_in_bps_tier{notional} on the API and MCP surfaces.
  • Failures: a venue that errors or returns an empty book drops perp_fees_health to 0 for that asset and increments perp_fees_fetch_errors_total{error_type}; the leaderboard tags it as stale and the 24 h average excludes the missing ticks.

Results: 9 venues ranked by Slippage at $100k (24h avg)

Perp DEX execution quality: slippage on a $100k market order, live across orderbook venues: Slippage at $100k per venue (24h avg).
№Venuesp50Success
1AsterBNB Chain orderbook perps0.0012%100.00% (n=2880)
2HyperliquidHyperBFT L1 orderbook0.0035%99.69% (n=2880)
3ExtendedStarknet orderbook perps0.0044%100.00% (n=2880)
4Lighterzk-rollup orderbook, zero taker fee0.0062%100.00% (n=2880)
5edgeXStarkEx-settled orderbook perps0.0069%98.61% (n=2880)
6ParadexStarknet appchain orderbook, Retail (interactive) book0.011%100.00% (n=2880)
7PolymarketPolygon perps by Polymarket0.012%100.00% (n=2880)
8Ondo PerpsSGX-matched orderbook, custody on Ethereum and Arbitrum0.026%100.00% (n=2880)
9dYdX v4Cosmos appchain orderbook0.075%100.00% (n=2880)

Frequently asked

Which perp DEX has the lowest slippage on a $100k market order right now?

Aster at 0.0012% on ETH (24 h average), ahead of 9 orderbook venues. The ranking re-sorts every minute from the last 24 hours of 30 second orderbook walks, and the BTC and SOL tabs rank the same venues on their own books.

How is slippage computed here?

The harness reads each venue's public orderbook, takes mid as (best bid + best ask) / 2 and walks the ask side until $100,000 of notional is filled. The size-weighted average fill price against mid, in basis points, is the slippage. It includes half the quoted spread and the impact of eating through levels; it excludes the taker fee.

Why is the fee left out when perp-fees already exists?

perp-fees ranks the all-in cost (fee plus spread plus impact) and a zero-fee venue can win it on the fee alone. This bench removes the fee so the comparison is about book depth: how much the fill price moves for a given size. Both numbers matter; a trader with a fee rebate or a large clip reads this one.

Why are GMX v2 and Gains missing?

They price against an oracle with a fixed spread and impact parameter instead of an orderbook, so there is no depth to walk and their tiers are flat. They are ranked on perp-fees, where the fee and the spread parameter are added together.

What happens when a book cannot fill $100k?

The tier is skipped for that tick and counted in perp_fees_tier_skipped_total instead of being extrapolated from the last visible level. Paradex (100 visible levels) and edgeX (200) are the venues where this happens on thin sessions; the sample size column shows how many ticks made it into the 24 h average.

Does this measure what I would pay on the venue's UI?

For the book component, yes: the walk uses the same public book the UI shows, at the same instant. On Paradex it reads the interactive book that Retail (UI) orders cross, RPI liquidity included; a plain API order on Paradex sees a thinner book. Latency, partial fills and price protection settings can still move an actual fill.

What about the $BOT bench that used to live here?

The earlier version of this page compared Lighter and Hyperliquid HIP-3 on the $BOT perp alone; that data still runs in the perp-execution-scanner harness. This page now ranks the whole orderbook cohort on ETH, BTC and SOL, which is what most readers asked it.

Source code github.com/ChainBench/OpenChainBench/tree/main/harnesses/perp-fees