Get access

ob_SOLUSDT

SOL 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_SOLUSDT and the MCP tool get_schema.

Sample rows (demo hour)

exchangesymboltimestamp_msrecv_msepochingest_seqlob_update_idbid_pxask_pxmidspread_bpsbid_vol_20ask_vol_20obi
binanceSOL/USDT17870112002311787011200230840312769532974020580476.0176.0276.0151.3211190.65313370.688-0.0888
binanceSOLUSDT1787011200265NoneNoneNoneNone76.0176.0276.0151.3211190.65313370.688-0.0888
binanceSOL/USDT17870112003311787011200330840312769562974020580976.0176.0276.0151.3211193.28513328.406-0.0871

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