Introducing BBO schemas for CME data
We're excited to announce the launch of our BBO on interval (BBO) schemas, which provide the latest best bid and offer on one-second (BBO-1s) or one-minute intervals (BBO-1m), along with the last sale price.
BBO-1s and BBO-1m were developed in response to customer demand for a top-of-book alternative that's more lightweight than MBP-1 but updated more frequently than TBBO. These are particularly valuable for trading instruments with high order-to-trade ratios, like options, and for feeding real-time display apps.
The new schemas are now available for CME data, and we plan to roll out support for other datasets during Q4 2024.
Before diving into its use cases, it's important to understand how BBO complements two of our existing schemas, MBP-1 and TBBO.
Market by price (MBP-1) provides every trade and update to the best bid and offer.
BBO on trade (TBBO) is derived from MBP-1 and sampled in trade space. This means it provides every trade event, along with the BBO directly before the trade.
BBO on interval (BBO) is also derived from MBP-1 like TBBO, but it's sampled in time space. Rather than including every trade, the new BBO schemas provide the last BBO and sale on 1-second or 1-minute intervals.
See our docs guide for a more detailed comparison of these schemas.
There are several situations where our new BBO schemas are the most useful:
- Options. Options have a very high ratio of book updates to trades, sometimes to the scale of 10,000 to 1. In this case, TBBO data can be stale, while the large volume of updates on MBP-1 can be costly and difficult to process. Our BBO schemas strike a better balance of being informative and easy to handle.
- Illiquid instruments. For instruments that trade infrequently, the periodic updates on the BBO schemas will generally be more up-to-date than TBBO.
- Real-time display apps. When displaying the BBO on a web page or application, users typically don't need the granularity of every book event that MBP-1 offers, so the new BBO schemas will help reduce your app's bandwidth use. Additionally, our BBO schemas include a forward-filled last sale price that's often useful for a display app.
This example demonstrates how to request BBO-1s data with our Python client library. BBO fields and conventions can be found in our documentation .
import databento as db
client = db.Historical()
data = client.timeseries.get_range(
dataset="GLBX.MDP3",
symbols="NQ.OPT",
stype_in="parent",
schema="bbo-1s",
start="2023-06-07T00:00:00",
end="2023-06-07T00:10:00",
)
for record in data:
print(record)