Level1 Data - Best Bid Offer
Overview
The Level1 level of market data can represent both the exchange-local top of the book (BBO), as well as the National Best Bid Offer (NBBO). This is always a one sided quote.
The unique key for this kind of data entry is a combination of the symbol, exchange, and side fields.
The following entries can be sent within the Level1 data stream:
- L1Entry
- TradeEntry
The scheme above describes the process of validation of an incoming message. If the validation rules are not met, the message is rejected, and no updates are made by this message. The green color of the condition indicates that this is a warning case, and not a reason to consider the message invalid.
Package Validation
Package validation block checks the package consistency. It is possible to mix trades from different exchanges in one package. But it is not allowed to send snapshots for multiple exchanges within one package. It is considered that the snapshot of the current state of the book for each exchange is sent entirely within one package. There cannot be, for example, a snapshot of each side of the book sent separately in multiple packages.
Trade entries in this format can be sent as an incremental updates. They do not affect state of the book.
Fields Validation
For each market data entry in a package, the following conditions must be valid:
- Entry Size must be provided as a number (not a NaN). In some special cases, Entry Size can be NULL (Not to be confused with NaN. Decimal64 format allows multiple INT64 values to represent Not-A-Number (NaN). Deltix designates one of them as NULL.
- Entry Price must be provided. The price should be a number > 0 by default, and not NULL. Negative prices are allowed (for example, for spreads or synthetic instruments trading). To avoid processing warnings, the price of the bid entry should be less than the offer entry price.
- Entry Side must be provided.
There is a warning case if a bid is not less than the ask within one exchange.
Snapshots example
Part 1
Consider the following sequence of L1 snapshot messages. Pay attention to the Exchange ID.
Message 1Package Type: SNAPSHOT
Entry | Exchange Id | Side | Size | Price |
---|---|---|---|---|
L1Entry | HOTSPOT | Bid | 100 | 10.35 |
L1Entry | HOTSPOT | Ask | 150 | 10.4 |
Package Type: SNAPSHOT
Entry | Exchange Id | Side | Size | Price |
---|---|---|---|---|
L1Entry | LMAX | Bid | 150 | 10.35 |
L1Entry | LMAX | Ask | 100 | 10.42 |
Package Type: SNAPSHOT
Entry | Exchange Id | Side | Size | Price |
---|---|---|---|---|
L1Entry | CURRENEX | Bid | 120 | 10.36 |
L1Entry | CURRENEX | Ask | 150 | 10.45 |
Package Type: SNAPSHOT
Entry | Exchange Id | Side | Size | Price |
---|---|---|---|---|
L1Entry | JPM | Bid | 90 | 10.34 |
L1Entry | JPM | Ask | 70 | 10.42 |
At this point, the aggregated order book looks like this:
Exchange Id | Best Bid Size | Best Bid Price | Best Ask Price | Best Ask Size |
---|---|---|---|---|
HOTSPOT | 100 | 10.35 | 10.4 | 150 |
LMAX | 150 | 10.35 | 10.42 | 100 |
CURRENEX | 120 | 10.36 | 10.45 | 150 |
JPM | 90 | 10.34 | 10.42 | 70 |
At any point, the following snapshot message would be invalid (it mixes entries from different exchanges).
Package type: SNAPSHOT
Entry | Exchange Id | Side | Size | Price |
---|---|---|---|---|
L1Entry | LMAX | Bid | 100 | 10.32 |
L1Entry | JPM | Ask | 100 | 10.39 |
Part 2: One-sided quote
The order book referenced below is a continuation from Part 1.
Consider receiving a one-sided incremental update message (new bid only).
Package Type: SNAPSHOT
Entry | Exchange Id | Side | Size | Price |
---|---|---|---|---|
L1Entry | CURRENEX | Bid | 50 | 10.33 |
The resulting order book:
Exchange Id | Best Bid Size | Best Bid Price | Best Ask Price | Best Ask Size |
---|---|---|---|---|
HOTSPOT | 100 | 10.35 | 10.4 | 150 |
LMAX | 150 | 10.35 | 10.42 | 100 |
CURRENEX | 50 | 10.33 | 10.45 | 150 |
JPM | 90 | 10.34 | 10.42 | 70 |
Part 3: Two-sided quote
The order book referenced below is a continuation from Part 2.
Consider receiving an update for both sides of the CURRENEX order book.
Package type: SNAPSHOT
Entry | Exchange Id | Side | Size | Price |
---|---|---|---|---|
L1Entry | CURRENEX | Bid | 80 | 10.34 |
L1Entry | CURRENEX | Ask | 50 | 10.41 |
The resulting order book:
Exchange Id | Best Bid Size | Best Bid Price | Best Ask Price | Best Ask Size |
---|---|---|---|---|
HOTSPOT | 100 | 10.35 | 10.4 | 150 |
LMAX | 150 | 10.35 | 10.42 | 100 |
CURRENEX | 80 | 10.34 | 10.41 | 50 |
JPM | 90 | 10.34 | 10.42 | 70 |
Part 4: One-sided snapshot
The order book referenced below is a continuation from Part 3.
Consider receiving a snapshot with the BID side only.
Package type: SNAPSHOT
Entry | Exchange Id | Side | Size | Price |
---|---|---|---|---|
L1Entry | CURRENEX | Bid | 50 | 10.33 |
It is considered that one snapshot message passes the entire snapshot for exchange. There cannot be one side snapshot sent separately. Therefore, the ASK side of the order book is empty for this exchange after applying the snapshot message.
Exchange Id | Best Bid Size | Best Bid Price | Best Ask Price | Best Ask Size |
---|---|---|---|---|
HOTSPOT | 100 | 10.35 | 10.4 | 150 |
LMAX | 150 | 10.35 | 10.42 | 100 |
CURRENEX | 50 | 10.33 | ||
JPM | 90 | 10.34 | 10.42 | 70 |
Part 5: Ask = Bid
The order book referenced below is a continuation from Part 4.
Consider receiving an update for both sides of the HOTSPOT order book.
Package type: SNAPSHOT
Entry | Exchange Id | Side | Size | Price |
---|---|---|---|---|
L1Entry | HOTSPOT | Bid | 100 | 10.32 |
L1Entry | HOTSPOT | Ask | 100 | 10.32 |
This causes a warning because the bid price is equal to the ask price, but the message is still processed as valid.
The resulting order book:
Exchange Id | Best Bid Size | Best Bid Price | Best Ask Price | Best Ask Size |
---|---|---|---|---|
HOTSPOT | 100 | 10.32 | 10.32 | 100 |
LMAX | 150 | 10.35 | 10.42 | 100 |
CURRENEX | 50 | 10.33 | ||
JPM | 90 | 10.34 | 10.42 | 70 |
Part 6: Size validation
The order book referenced below is a continuation from Part 5.
Consider receiving an invalid incremental update message.
Package type: SNAPSHOT
Entry | Exchange Id | Side | Size | Price |
---|---|---|---|---|
L1Entry | JPM | Ask | INFINITY | 10.35 |
This is an invalid size so the message is rejected by the validator. The order book remains unchanged.