Get access

ob_ETHUSDT

ETH top of book after every book update (~100 ms): best bid/ask, mid, spread, 20-level volumes, imbalance; lob_update_id joins to l2_* · core · 2026-08-01 — 2026-08-28 (28 days)

Schema

ColumnTypeMeaning
exchangeVARCHAR Always `binance`.
symbolVARCHAR Instrument.
timestamp_msBIGINT Exchange event time of the diff that produced this top-of-book state, ms UTC.
recv_msBIGINT Local receive time, ms UTC.
epochBIGINT WebSocket session number.
ingest_seqBIGINT Arrival counter of the producing frame.
lob_update_idBIGINT final_id of the l2_* frame after which this state was taken — joins ob_* to l2_* exactly.
bid_pxDOUBLE Best bid price (float).
ask_pxDOUBLE Best ask price (float).
midDOUBLE (bid_px + ask_px) / 2.
spread_bpsDOUBLE (ask − bid) / mid × 10 000.
bid_vol_20DOUBLE Sum of base-asset quantity on the 20 best bid levels.
ask_vol_20DOUBLE Sum of base-asset quantity on the 20 best ask levels.
obiDOUBLE (bid_vol_20 − ask_vol_20) / (bid_vol_20 + ask_vol_20); −1…1.

Conventions shared by all streams — UTC milliseconds, integer prices, what side means where, how gaps are marked and how to rebuild the book — are in the data dictionary. The same text is returned by GET /v1/schema/ob_ETHUSDT and the MCP tool get_schema.

Sample rows (demo hour)

exchangesymboltimestamp_msrecv_msepochingest_seqlob_update_idbid_pxask_pxmidspread_bpsbid_vol_20ask_vol_20obi
binanceETH/USDT1787011200084178701120007184031276950797960508561913.591913.61913.5950.0570.750664.24730.0482
binanceETH/USDT1787011200178178701120017284031276952797960508791913.591913.61913.5950.0570.753465.39690.0393
binanceETH/USDT1787011200262178701120025784031276955797960508861913.591913.61913.5950.0570.753465.39690.0393

Work with this stream in the SQL console and the backtest runner — the data stays with us, the results go to you. Get access