TradingLive

Perp DEX mark price fidelity: deviation from CEX spot reference, live

Median absolute deviation in basis points between each venue's mark price and a Binance spot reference, measured every 60 seconds on ETH, BTC and SOL. Lower means the venue's mark price stays closer to the CEX spot consensus. Oracle-priced venues use a real-time price feed anchored to CEX spot; orderbook venues derive their mark from their own book.

TL;DR. As of , Hyperliquid leads mark price deviation at 0.045% (24h avg) on Perp DEX mark price fidelity: deviation from CEX spot reference, live. Source: OpenChainBench, https://openchainbench.com/benchmarks/perp-mark-price-lag.

Every perpetual DEX publishes a mark price: the price used to compute unrealised P&L, trigger liquidations and calculate funding. For a trader, the mark price being far from the real market price is not a minor inconvenience, it is a liquidation risk. A venue whose mark price persistently sits 50 bps above the real price will liquidate a short at a price that never existed on any exchange. This benchmark measures how far each venue's live mark price sits from a Binance spot reference on ETH, BTC and SOL, sampled every 60 seconds. Oracle-priced venues (gains.trade, GMX v2) source their mark from a real-time price oracle (Pyth or Chainlink) that itself tracks CEX spot continuously. Their deviation from Binance spot is therefore structurally small: the oracle interpolates from the same underlying CEX feed we use as reference. Orderbook venues (Hyperliquid, dYdX, Lighter, Paradex) derive their mark price from their own book, which can temporarily diverge from the broader market during low-liquidity windows or fast-moving events. The benchmark does not attempt to capture sub-second events such as liquidation-triggering wicks, which require websocket resolution to observe. It measures the persistent component: how far a venue's mark price sits from CEX spot on a 60-second polling cadence.

Methodology

The harness polls each venue's published mark price every 60 seconds alongside a Binance spot reference price (best bid/ask mid). Mark price deviation is defined as the absolute value of (mark - reference) / reference x 10000, in basis points. For oracle-priced venues (gains.trade, GMX v2) the harness reads the Pyth price feed for the same asset, which is the primary oracle both protocols weight heavily in their mark price computation. Pyth updates sub-second from market maker quotes that track CEX spot, so the deviation from Binance spot is near zero structurally. For Hyperliquid the harness reads markPx from the metaAndAssetCtxs endpoint. For dYdX v4 it reads indexPrice from the perpetualMarkets indexer endpoint. For Lighter and Paradex it reads the orderbook mid as an approximation of their mark price. The headline metric is the 24h p50 of the deviation series, which captures typical behaviour rather than isolated spikes. The p99 series is exposed for those interested in tail risk. The signed deviation (positive means the venue mark is above the reference) is published separately as perp_mark_deviation_signed_bps.

Frequently asked

What is the mark price and why does its deviation matter?

The mark price is the price each venue uses to compute unrealised P&L, trigger liquidations and settle funding payments. A mark price that diverges significantly from the real market price creates liquidation risk: a long position can be margin-called at a loss even if the actual market price never touched the liquidation level.

Why do oracle-priced venues structurally win this bench?

Oracle-priced venues (gains.trade, GMX v2) derive their mark from an external price oracle such as Pyth or Chainlink. Both oracles aggregate from CEX market maker quotes that continuously track Binance spot, so the deviation is structurally near zero. Orderbook venues derive their mark from their own book, which can temporarily lag or diverge from the broader market.

What is the Pyth proxy used for gains.trade and GMX?

The harness reads the Pyth hermes REST API for the ETH/USD, BTC/USD and SOL/USD price IDs. This is used as the oracle-priced mark proxy for both gains and gmx. Gains v8 weights Pyth heavily; GMX v2 primarily uses Chainlink. The methodology tooltip on each row discloses this proxy. Chainlink ETH/USD on Arbitrum tracks Pyth ETH/USD within 1 bps in normal conditions.

Does this bench capture scam wicks?

No. Scam wicks that resolve within a single 60-second poll interval are not captured. This bench measures the persistent component of mark price divergence: how far a venue typically sits from CEX spot across a full day of 60-second samples. Sub-second wick analysis requires websocket resolution on both sides simultaneously.

What does the signed deviation metric show?

The signed deviation (positive = venue mark above reference, negative = below) is published as perp_mark_deviation_signed_bps. A persistent positive bias means the venue's mark is above CEX spot, which inflates longs' unrealised P&L while squeezing shorts. A persistent negative bias does the opposite.

Why is Lighter's mark price approximated from the orderbook mid?

Lighter does not expose a dedicated mark price endpoint in its public API. The orderbook best-bid-best-ask mid is the closest available approximation and is used consistently across all cycles.

Source code github.com/ChainBench/OpenChainBench/tree/main/harnesses/perp-mark-price-lag