Data
We provide the most comprehensive and granular market data on the market sourced from real-time WebSocket APIs with complete control and transparency how the data is being recorded.
Raw data API that is available for pro and business subscriptions provides data in exchange-native data format. See historical data details to learn about real-time channels captured for each exchange. Each captured channel can be considered a different exchange specific data type (for example Binance bookTicker channel, or BitMEX liquidation channel).
We also provide following normalized data types via our client libs (normalization is done client-side, using raw data API as a data source):
- trades
- order book L2 updates
- order book snapshots (tick-by-tick, 10ms, 100ms, 1s, 10s etc)
- quotes
- derivative tick info (open interest, funding rate, mark price, index price)
- liquidations
- options summary
- OHLCV
- volume/tick based trade bars
We always collect and provide data with the most granularity that exchange can offer via it's real-time WS feeds. High frequency can mean different things for different exchanges due to exchanges APIs limitations. For example for Coinbase Pro it can mean L3 order book data (market-by-order), for Binance Futures all order book L2 real-time updates and for Binance Spot it means order book updates aggregated in 100ms intervals.
Raw market data is sourced from exchanges real-time WebSocket APIs.
For cases where exchange lacks WebSocket API for particular data type we fallback to pooling REST API periodically, e.g., Binance Futures open interest data.
Recording exchanges real-time WebSocket feeds allows us preserving and providing the most granular data that exchanges APIs can offer including data that is simply not available via their REST APIs like tick level order book updates.
Historical data sourced from WebSocket real-time feeds adheres to what you'll see when trading live and can be used to exactly replicate live conditions even if it means some occasional connection drops causing small data gaps, real-time data publishing delays especially during larger market moves, duplicated trades or crossed books in some edge cases. We find that trade-off acceptable and even if data isn't as clean and corrected as sourced from REST APIs, it allows for more insight into market microstructure and various unusual exchanges behaviors that simply can't be captured otherwise.
Simple example would be latency spikes for many exchanges during increased volatility periods where exchange publish trade/order book/quote WebSocket messages with larger than usual latency or simply skip some of the the updates and then return those in one batch. Querying the REST API would result in nice, clean trade history, but such data wouldn't fully reflect real actionable market behavior and would result in unrealistic backtesting results, breaking in the real-time scenarios.
L2 data (market-by-price) includes bids and asks orders aggregated by price level and can be used to analyze among other things:
- order book imbalance
- average execution cost
- average liquidity away from midpoint
- average spread
- hidden interest (i.e., iceberg orders)
We do provide L2 data both in CSV format as incremental order book L2 updates, tick level order book snapshots (top 25 and top 5 levels) as well as in exchange-native format via API and client libraries that can perform full order book reconstruction client-side.
L3 data (market-by-order) includes every order book order addition, update, cancellation and match and can be used to analyze among other things:
- order resting time
- order fill probability
- order queue dynamics
Historical L3 data is currently available via API for Bitfinex, Coinbase Pro and Bitstamp - remaining supported exchanges provide L2 data only.
We always collect full depth order book data as long as exchange's WebSocket API supports it. Table below shows current state of affairs for each supported exchange.
exchange | order book depth | order book updates frequency |
full order book depth snapshot and updates | real-time | |
full order book depth snapshot and updates | real-time | |
top 1000 levels initial order book snapshot, full depth incremental order book updates | real-time, dynamically adjusted | |
top 1000 levels initial order book snapshot, full depth incremental order book updates | real-time, dynamically adjusted | |
top 1000 levels initial order book snapshot, full depth incremental order book updates | 100ms | |
top 100 levels initial order book snapshot and updates | real-time | |
top 400 levels initial order book snapshot and updates | real-time | |
top 400 levels initial order book snapshot and updates | real-time | |
top 400 levels initial order book snapshot and updates | real-time | |
top 400 levels initial order book snapshot and updates | real-time | |
top 150 levels initial order book snapshot and updates | 30ms | |
top 150 levels initial order book snapshot and updates | 30ms | |
top 150 levels initial order book snapshot and updates | 100ms | |
top 100 levels initial order book snapshot and updates | real-time | |