Central Limit Order Book
Order Depth
This is the unconflated, raw, view of the CLOB containing maximum market information. It is usually, but not always, ranked by price and then time.
Each MDEntry is a separate resting order in the Venue.
Orders which have MinQty (including FullAmount) or LotSize constraints will have a single NoOfSecSizes group populated for this MDEntry.
NoOfSecSizes | Number Of Orders | Qty | Bid | OrderDepth | Offer | Qty | Number Of Orders | NoOfSecSizes (MinQty) | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1.20011 | 1 | 1.20020 | 3 | 1 | 3 | ||||||||
| 2 | 1 | 2 | 1.20000 | 2 | 1.20020 | 1 | 1 | 1 | ||||||||
| 1 | 1 | 1 | 1.20000 | 3 | 1.20023 | 3 | 1 | 3 | ||||||||
| 2 | 1 | 2 | 1.19997 | 4 | 1.20029 | 1 | 1 | 1 | ||||||||
| 2 | 1 | 2 | 1.19997 | 5 | 1.20037 | 4 | 1 | 4 | ||||||||
| 5 | 1 | 5 | 1.19995 | 6 | 1.20042 | 1 | 1 | 1 | ||||||||
| 2 | 1 | 2 | 1.19987 | 7 | 1.20042 | 3 | 1 | 3 | ||||||||
| 1 | 1 | 1 | 1.19974 | 8 | 1.20042 | 1 | 1 | 1 | ||||||||
| 1 | 1 | 1 | 1.19961 | 9 | 1.20056 | 1 | 1 | 1 | ||||||||
| 5 | 1 | 5 | 1.19961 | 10 | 1.20063 | 1 | 1 | 1 | ||||||||
| 7 | 1 | 7 | 1.19910 | 11 |
|
| ||||||||||
|
| 12 |
|
| ||||||||||||
|
| 13 |
|
| ||||||||||||
|
| 14 |
|
| ||||||||||||
|
| 15 |
|
| ||||||||||||
NOTE: All the following CLOB examples are based off the above book data. Quantities in red denote FullAmount constraints.
Price Depth
An Order Depth book, where multiple orders at a given price/side are aggregated together. Depending on the Venue, NumberOfOrders or a full NoOfSecSizes group may also be provided.
Each MDEntry is an aggregated view of the liquidity available at that price level in the Venue.
If populated, the NoOfSecSizes group have the following attributes:
- There will be an entry for each order at that price level.
- The entries are ordered by time, the first entry being the oldest (highest in priority).
NoOfSecSizes (MinQty) | Number Of Orders | Qty | Bid | PriceDepth | Offer | Qty | Number Of Orders | NoOfSecSizes (MinQty) | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1.20011 | 1 | 1.20020 | 4 | 2 | 3 | 1 | |||||||
| 1 | 2 | 2 | 3 | 1.20000 | 2 | 1.20023 | 3 | 1 | 3 | |||||||
| 2 | 2 | 2 | 4 | 1.19997 | 3 | 1.20029 | 1 | 1 | 1 | |||||||
| 5 | 1 | 5 | 1.19995 | 4 | 1.20037 | 4 | 1 | 4 | ||||||||
| 2 | 1 | 2 | 1.19987 | 5 | 1.20042 | 5 | 3 | 1 | 3 | 1 | ||||||
| 1 | 1 | 1 | 1.19974 | 6 | 1.20056 | 1 | 1 | 1 | ||||||||
| 5 | 1 | 2 | 6 | 1.19961 | 7 | 1.20063 | 1 | 1 | 1 | |||||||
| 7 | 1 | 7 | 1.19910 | 8 | ||||||||||||
| 9 | ||||||||||||||||
| 10 | ||||||||||||||||
Using Whisperer
Pricing
For both book types, each NoOfSecSizes group, if available/relevant to the venue, will contain:
MDSecSize== order size (this will match the parent MDEntrySize for OrderDepth books)MinQty- indicates that that order is restricted to only match in amounts above a certain minimum quantity (for FullAmount, the order quantity), i.e. 0 (partial fills allowed) ..MDEntrySize(i.e. FullAmount).
In either case, when clients attempt to sweep the book for a given quantity, they must ignore any NoOfSecSizes entries for greater MinQty amounts (not just FullAmount).
This also applies when calculating the limit price for VWAP orders. I.e. orders for lesser amounts will trade through this level.
FullAmount Ladder
For Venues supporting the specification of custom FullAmount volume bands in the initiating MarketDataRequest, the NoUnderlyings group is used to provide a list of UnderlyingQty values.
- If supported,
MarketDataIncrementalRefreshmessages are sent with prices for for the requested ladder. - If not supported the client will receive an
ErrorReportwith the Text "NoUnderlyings: not supported on this Venue."
Trading
Client trades may aggress (Taking) resting orders published in the orderbook. These orders should not be directly visible in the MarketData feed, but the resultant fills may be observed via the TradeTicker (if available). Depending on the venue, the client may achieve this by:
- Specifying
TimeInForce=FOKto indicate that the client wishes to place a FullAmount order. - Specifying a
MinQtyorder - depending on other order parameters (Price, DiscretionPips, etc), this may be filled immediately by the venue without entering the book (like a FOK).
Conversely, the client may use resting order (Making), again they may specify a MinQty for their order, up to the full order quantity for FullAmount; in the event of no immediate match, the order will be published in the market data feed.
Other Book Representations
Spread
This is not Bid/Offer spread, but the liquidity available at a pre-defined price offset from top of book. Usually issued in snapshot form, since the entire view changes with each change of top of book price in the base OrderDepth book.
NoOfSecSizes (MinQty) | Number Of Orders | Qty | Bid | Spread | Offer | Qty | Number Of Orders | NoOfSecSizes (MinQty) | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1.20011 | 0.0000 | 1.20020 | 4 | 2 | ||||||||||
| 1 | 1 | 1.20001 | 0.0001 | 1.20030 | 8 | 4 | ||||||||||
| 6 | 13 | 1.19991 | 0.0002 | 1.20040 | 12 | 5 | ||||||||||
| 7 | 15 | 1.19981 | 0.0003 | 1.20050 | 17 | 8 | ||||||||||
| 10 | 22 | 1.19961 | 0.0005 | 1.20070 | 19 | 10 | ||||||||||
| 10 | 22 | 1.19911 | 0.0010 | |||||||||||||
| 11 | 29 | 1.19811 | 0.0020 | |||||||||||||
Amount
Presents VWAP prices for pre-defined volume rungs. Because the view aggregates multiple resting orders, a single aggressing order may well result in multiple partial fills, since you are effectively trading through the base Order Depth book.
NoOfSecSizes (MinQty) | Number Of Orders | Qty | Bid | Amount | Offer | Qty | Number Of Orders | NoOfSecSizes (MinQty) | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1.20011 | 1 | 1.20020 | 1 | ||||||||||||
| 2 | 1.20006 | 2 | 1.20020 | 2 | ||||||||||||
| 5 | 1.20002 | 5 | 1.20021 | 5 | ||||||||||||
| 10 | 1.19999 | 10 | 1.20025 | 10 | ||||||||||||
| 20 | 1.19988 | 20 | ||||||||||||||
| 50 | ||||||||||||||||
Full Amount
The prices at which pre-defined volumes may be filled in a single execution.
NoOfSecSizes (MinQty) | Number Of Orders | Qty | Bid | FullAmount | Offer | Qty | Number Of Orders | NoOfSecSizes (MinQty) | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1.20011 | 1 | 1.20020 | 1 | 1 | 1 | ||||||||
| 2 | 1 | 2 | 1.20000 | 2 | 1.20020 | 2 | 1 | 2 | ||||||||
| 5 | 1 | 5 | 1.19995 | 5 | ||||||||||||
| 10 | ||||||||||||||||
| 20 | ||||||||||||||||
| 50 | ||||||||||||||||
Executable Streaming Pricing
Whilst terminology varies greatly from venue to venue, direct LP/Bank trading is generally offered via two liquidity models:
- Sweepable - AKA Orders, OrderBook, Order-Based, Stacked, Clips, Exchange, Volume-For-Price
- FullAmount - AKA Quote-based, Tiers, Buckets, OTC, Price-For-Volume, Cumulative, Volume-Ladder
The liquidity is offered on a quotation negotiation basis, with the LP typically exercising Last Look against the dealt Quote IDs.
Quotes may have time-to-live constraints and be marked as Indicative or Tradeable.
When submitting orders, the validity of the specified ID is assessed by the venue, not Whisperer.
Sweepable
| Qty | Bid | PriceDepth | Offer | Qty | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1.20009 | 1 | 1.20020 | 5 | ||||||||||||
| 2 | 1.20000 | 2 | 1.20023 | 3 | ||||||||||||
| 2 | 1.19997 | 3 | 1.20029 | 1 | ||||||||||||
| 5 | 1.19995 | 4 | 1.20037 | 4 | ||||||||||||
| 5 | 1.19987 | 5 | 1.20042 | 1 | ||||||||||||
| 5 | 1.19974 | 6 | 1.20056 | 1 | ||||||||||||
| 10 | 1.19961 | 7 | 1.20063 | 1 | ||||||||||||
| 10 | 1.19910 | 8 | ||||||||||||||
| 20 | 1.19900 | 9 | ||||||||||||||
| 10 | ||||||||||||||||
| 11 | ||||||||||||||||
| 12 | ||||||||||||||||
| 13 | ||||||||||||||||
| 14 | ||||||||||||||||
| 15 | ||||||||||||||||
Pricing
- Liquidity rungs typically dynamically change depending on market conditions, each rung of the rate ladder can be considered as if they are orders on an exchange.
- The client should not expect higher amounts per successive price level.
- The total quantity available is the sum of the individual rung quantities for the latest quote.
Trading
Trading is expected to be an explicit sweep of the published quote, with successive individual orders at each rung, in sequence.
Each order is executed individually, when the client has utilised a rung, it cannot be re-used and subsequent trades need to utilise the liquidity from the remaining rungs.
Depending on the LP, Clients may also be able to submit a VWAP order in order to combine multiple individual clips into a single trade and reduce per-ticket trading costs.
The client is typically expected to provide their calculated VWAP rounded bank favour, but some LPs mandate different rounding rules, for example SEB requires normal fair rounding.
FullAmount
| Qty | Bid | FullAmount | Offer | Qty | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1.20009 | 1 | 1.20020 | 1 | ||||||||||||
| 2 | 1.20005 | 2 | 1.20020 | 2 | ||||||||||||
| 5 | 1.20001 | 5 | 1.20020 | 5 | ||||||||||||
| 10 | 1.19998 | 10 | 1.20024 | 10 | ||||||||||||
| 20 | 1.19989 | 20 | ||||||||||||||
| 50 | 1.19950 | 50 | ||||||||||||||
Pricing
- Essentially this is a VWAP presentation of the available liquidity, with higher amounts per successive price level.
- The VWAP rungs are usually preconfigured by the LP, but some allow the client to specify the required rungs in their QuoteRequest. This is supported by Whisperer via the
QuoteRequest.NoUnderlyingsgroup - Can be considered an equivalent to a CLOB Full Amount book.
Trading
- Sweeping is not possible, since the liquidity of each rung is implicitly included in the VWAP pricing of all other lower level rungs as well.
- Instead, client trades are characterised by hitting a particular rung for their requested trade amount. For example, with rungs of 1/2/5m, if the client wishes to trade 3m, this would need to be submitted against the 5m rung.
- Generally, the
MassQuoteis invalidated after a single trade (because of the VWAP), however in some cases, the LP will allow multiple trades against a singleMassQuoterung so long as the aggregate total, across both sides, does not exceed the rung size.
Using Whisperer
The form of the liquidity offered is bilaterally agreed between the Bank and the Client, who must interpret and use the MassQuote messages accordingly.
Minimal configuration is required in Whisperer, although clients may wish to apply a naming convention for their venues sessions.
Whisperer uses MassQuote messages for ESP pricing, and trade requests are submitted via the NewOrderMultileg message. OrdType=PreviouslyQuoted is always supported, other order types may also be available, depending on the LP.
FullAmount Ladder
For Venues supporting the specification of custom FullAmount volume bands in the initiating QuoteRequest, the NoUnderlyings group is used to provide a list of UnderlyingQty values.
- If supported, a
MassQuotemessage is sent with prices for for the requested ladder. - If not supported the client will receive an
ErrorReportwith the Text "NoUnderlyings: not supported on this Venue."
PreviouslyQuoted Orders
The NewOrderMultileg.QuoteID field should be used as follows:
- For Sweepable and FullAmount orders, the
QuoteEntryIDof the target rung must be specified. - Where venues support VWAP orders against a sweepable book, the
QuoteIDof the overallMassQuoteladder must be used.
Market Orders
ESP Market orders ares sometimes offered by an LP. As with a standard Market orders, the client provides their order quantity without a price, however a QuoteID must still be specified, so unlike a standard Market order, there is less risk of uncontrolled slippage on the the actual price achieved.
Instead, the LP will use the the provided quantity and QuoteID to compute the price (either VWAP or rung) on the Customer's behalf.
Support for VWAP and Market order types varies across Venue.