Backtest on the archive. Deploy on the wire.

Low-latency order flow and book microstructure live, with captured historical data available by request for backtests.

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, a raw captured fill and a live message show the shared field model.

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

manual Parquet / CSV / JSONL export

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. Raw export fields stay aligned with the stream field model.

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

Recent replay and maximum throughput.

Ultra adds recent replay up to 6 hours and higher throughput. Historical exports are prepared manually on request; desks needing private throughput go Enterprise.

Compare both plans

Put the archive under your backtest.

Start on Pro for the live feeds. Ultra adds recent replay up to 6 hours; manual historical exports are available on request.