{"slug":"perp-fees","title":"Cheapest perp DEX, live all-in cost from $1k to $1M on ETH, BTC and SOL","subtitle":"All-in cost in basis points to open a long, measured on ETH, BTC and SOL at three order sizes: $1k where fees decide, $100k where impact appears, $1M where book depth takes over. Taker fee plus half-spread plus impact, read live from public APIs across 11 venues including Lighter, Hyperliquid, Polymarket, Paradex, Extended, Aster and edgex.","category":"Trading","metric":"All-in cost","unit":"bps","status":"live","higherIsBetter":false,"filters":null,"value":0.119661,"leader":{"name":"Lighter","slug":"lighter","value":0.119661},"rankings":[{"name":"Lighter","slug":"lighter","ms":{"p50":0.119661,"p90":0.337954,"p99":0.709233,"mean":0.119661},"successRate":100,"sampleSize":2880},{"name":"Extended","slug":"extended","ms":{"p50":2.58454,"p90":2.55862,"p99":3.45102,"mean":2.58454},"successRate":99.3056,"sampleSize":2880},{"name":"Ondo Perps","slug":"ondo","ms":{"p50":3.40993,"p90":3.93236,"p99":4.77344,"mean":3.40993},"successRate":100,"sampleSize":2880},{"name":"Gains","slug":"gains","ms":{"p50":4,"p90":4,"p99":4,"mean":4},"successRate":100,"sampleSize":2880},{"name":"Hyperliquid","slug":"hyperliquid","ms":{"p50":4.60702,"p90":4.55864,"p99":5.70318,"mean":4.60702},"successRate":100,"sampleSize":2880},{"name":"Aster","slug":"aster","ms":{"p50":5.07687,"p90":5.24445,"p99":6.06014,"mean":5.07687},"successRate":100,"sampleSize":2880},{"name":"GMX v2","slug":"gmx","ms":{"p50":6,"p90":6,"p99":6,"mean":6},"successRate":99.3056,"sampleSize":2880},{"name":"dYdX v4","slug":"dydx","ms":{"p50":7.97079,"p90":12.6038,"p99":21.7943,"mean":7.97079},"successRate":100,"sampleSize":2880},{"name":"Polymarket","slug":"polymarket","ms":{"p50":8.53661,"p90":5.1658,"p99":164.421,"mean":8.53661},"successRate":100,"sampleSize":2880},{"name":"Paradex","slug":"paradex","ms":{"p50":47.3702,"p90":120.351,"p99":181.33,"mean":47.3702},"successRate":100,"sampleSize":2880}],"sparkline":[0.208531,0.432128,0.359547,0.287849,0.235453,0.432767,0.407081,0.383735,0.344839,0.330397,0.107457,0.247224,0.410043,0.397258,0.372075,0.453138,0.0223539,0.307256,0.176322,0.323988,0.221927,0.243192,0.358885,0.400842,0.12507,0.200503,0.210264,0.200038,0.296401,0.216141,0.376169,0.464169,0.259169,0.13192,0.186053,0.214224,0.0827773,0.330787,0.383335,0.163507,0.304672,0.11822,0.418189,0.281915,0.45369,0.155752,0.315835,0.283148,0.138952,0.0538683,0.373092,0.28768,0.24711,0.469935,0.248113,0.205464,0.331938,0.261832,0.194745,0.342748,0.248261,0.211916,0.260891,0.23647,0.151291,0.166015,0.112723,0.140426,0.21153,0.147388,0.302635,0.192131,0.244624],"sampleSize":29619,"asOf":"2026-09-23T00:57:57.214Z","freshness":{"asOf":"2026-09-23T00:57:57.214Z","ageHours":0,"stale":false},"measured":11,"headline":"Lighter posts the lowest all-in cost at 0.0012% (24h avg) on Cheapest perp DEX, live all-in cost from $1k to $1M on ETH, BTC and SOL.","quote":"Lighter posts the lowest all-in cost at 0.0012% (24h avg) on Cheapest perp DEX, live all-in cost from $1k to $1M on ETH, BTC and SOL. Source: OpenChainBench (https://openchainbench.com/benchmarks/perp-fees).","cite":{"plain":"OpenChainBench. \"Cheapest perp DEX, live all-in cost from $1k to $1M on ETH, BTC and SOL\". Retrieved 2026-09-23. https://openchainbench.com/benchmarks/perp-fees","bibtex":"@misc{ocb_perp_fees,\n  author = {OpenChainBench},\n  title  = {Cheapest perp DEX, live all-in cost from $1k to $1M on ETH, BTC and SOL},\n  year   = {2026},\n  url    = {https://openchainbench.com/benchmarks/perp-fees},\n  note   = {Retrieved 2026-09-23}\n}","apa":"OpenChainBench. (2026). Cheapest perp DEX, live all-in cost from $1k to $1M on ETH, BTC and SOL. Retrieved September 23, 2026, from https://openchainbench.com/benchmarks/perp-fees","ris":"TY  - GEN\r\nAU  - OpenChainBench\r\nTI  - Cheapest perp DEX, live all-in cost from $1k to $1M on ETH, BTC and SOL\r\nPY  - 2026\r\nUR  - https://openchainbench.com/benchmarks/perp-fees\r\nY2  - 2026-09-23\r\nER  - \r\n"},"pageUrl":"https://openchainbench.com/benchmarks/perp-fees","ogImage":"https://openchainbench.com/api/og/perp-fees","source":"https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/perp-fees","methodology":["Cadence: every 5 minutes, in parallel across all venues.","Trade simulated: a long at 10x, measured independently on ETH, BTC and SOL (the chain tabs scope the board; the unfiltered view averages the three). Headline notional $1,000 with $10k, $100k and $1M tiers rewalked on the same book.","Hyperliquid: `POST /info {type: l2Book}` for asks + `{type: userFees, user: 0x000...000}` for taker fee + `{type: metaAndAssetCtxs}` for funding.","dYdX v4: indexer `/orderbooks/perpetualMarket/ETH-USD` + `/perpetualMarkets` (funding) + Cosmos REST `/dydxprotocol/v4/feetiers/perpetual_fee_params` for tier-0 default fee.","GMX v2 (Arbitrum): Subsquid GraphQL on the synthetics-arbitrum subgraph for `positionFeeFactorForNegativeImpact` (worst-case open) on the ETH/USD, BTC/USD and SOL/USD markets + gmxinfra REST for funding. Oracle priced, no orderbook: the spread term is zero.","Lighter: `/orderBookDetails` (taker fee per market) + `/orderBookOrders` (orderbook walk).","Gains (Gains v8 on Base): fees read directly on-chain. `eth_call pairs(N)` gives `spreadP` and `feeIndex`, then `eth_call fees(feeIndex)` gives the open fee (`totalPositionSizeFeeP`). The taker crosses one side of the book, so we charge half of `spreadP`. SOL has `spreadP` 0 on-chain (Gains prices that pair's spread dynamically), so its figure is the open fee alone. Values in 1e10 precision per Gains v8 convention. Fee tier cached 1h, pair config 6h.","Paradex: `/markets` fee config for the api-tier taker rate + `/orderbook?depth=100` walk. The book endpoint caps at 100 levels (about $1M visible on majors), so the $1M tier can be skipped when the visible book thins.","Extended: full public book from `/info/markets/<m>/orderbook` + `/stats` funding (1h native). Its taker fee is not exposed by any public endpoint; the documented base rate of 2.5 bps is used and this is the one venue where the fee is not read live.","All-in formula: `all_in_bps = taker_fee_bps + spread_bps`. Both components emitted as separate metrics for transparency.","Notional tiers: the same measurement runs at $1,000, $10,000, $100,000 and $1,000,000 by rewalking the already fetched book, published to `perp_fees_all_in_bps_tier{venue, chain, notional}`. The headline `perp_fees_all_in_bps` stays defined at $1,000. A tier the book cannot fill is skipped and counted in `perp_fees_tier_skipped_total`, never extrapolated. Oracle priced venues (GMX v2, Gains) charge a flat percentage of size, so their figure repeats across tiers.","Book depth for the $1M tier: Lighter is walked on its top 100 levels, dYdX on the full indexer book, Polymarket on up to 500 levels. Hyperliquid returns its 20 best raw levels; when those cannot absorb the tier the harness refetches with nSigFigs=5, the finest price aggregation the API offers, which extends coverage with negligible price rounding.","Failures (5xx, timeouts, rate limits) leave the previous gauge in place and increment a per-venue `fetch_errors_total` counter. The page falls back to the last successful sample."],"license":"CC-BY-4.0"}