Backtest on the archive. Deploy on the wire.

Low-latency order flow and book microstructure live, with a matching-schema archive deep enough to backtest against.

Your problem

The parts you keep working around.

01

Backtests built on candles or sampled trades diverge from production the moment queue position matters.

02

Most feeds stop at L2: no order-level book, no way to reconstruct state at a given block.

03

Maintaining one pipeline for history and another for live doubles the schema-drift surface.

The proof

Delivery you can measure, a schema that doesn't fork.

Stream delivery percentiles are published unedited. Degraded windows stay on the chart. Below them, the same fill shown twice: an archive row and a live message, byte for byte.

Stream delivery overheadp50 / p95 / p99 · ms · log scale

12:00p504.12 msp958.68 msp9920.03 ms

Worst window in range: p99 114.09 ms (16:00). Percentiles are published unedited, and degraded windows stay on the chart. Illustrative series in the published-benchmark format.

Archive row · trades dataset

query API · Parquet / CSV / JSONL exports

block_timetimestamp2026-06-09T08:14:02.418Z
coinstringBTC
pxstring67012.0
szstring0.14523
notionalstring9732.15
sidestringB
userstring0x7c4e…a3f9
closed_pnlstring182.337041
feestring2.433037
crossedbooltrue
tiduint64442191083327011

Live message · StreamSwaps

stream.hyperliquidrpc.com:443 · gRPC

"block_time": "2026-06-09T08:14:02.418Z",
"coin": "BTC",
"px": "67012.0",
"sz": "0.14523",
"notional": "9732.15",
"side": "B",
"user": "0x7c4e…a3f9",
"closed_pnl": "182.337041",
"fee": "2.433037",
"crossed": true,
"tid": 442191083327011

Hover a field. It is the same field, byte for byte, on both sides. Backtest on the archive, deploy on the stream, change nothing.

Integration sketch

The L4 book, subscribed.

Snapshot first, then per-block diffs in strict block order. Prices and sizes arrive as exact decimal strings, so the parser you backtest with is the parser you ship.

Read the docs
import grpc channel = grpc.secure_channel(    "stream.hyperliquidrpc.com:443",    grpc.ssl_channel_credentials(),)metadata = (("x-api-key", "YOUR_KEY"),) # Full order-by-order book: snapshot, then per-block diffsstub = orderbook_pb2_grpc.OrderBookStreamingStub(channel)for msg in stub.StreamL4Book(    orderbook_pb2.L4BookRequest(coin="BTC"), metadata=metadata):    handle(msg)  # exact decimal strings, no float rounding
Where to start

The plan that fits.

Ultra

$199/moRecommended

Full archive, replay, and maximum throughput.

Ultra adds replay from any block height and full historical query access: the backtest loop. Desks needing private throughput go Enterprise.

Compare both plans

Put the archive under your backtest.

A free key covers evaluation. Pro adds replay from any block height and full historical query access: the backtest loop.