Taker API - Market Data - ESP
Contents
A separate MarketDataRequest subscription message must be sent for each symbol per MDBookType.
It is possible to specify the desired depth in the MarketDepth (264) tag. Note that the actual number of market data levels to be delivered to the client may be less than the requested depth, based on EBS configuration settings and customer entitlement.
Market data subscriptions without a settlement date specified (in tag 64) will automatically rollover after value date roll provided the FIX session remains connected.
All market views are in reference of the base currency (CCY1) of the Symbol.
There are two delivery methods for Market Data update types supported; Snapshot and Incremental.
Throttling
By default there is no throttling of Market Data by EBS, and it is recommended is to use the UpdateInterval(12003) tag to control the maximum refresh interval. Then set the appropriate level per subscription.
Alternatively, request that EBS set a throttling interval on your behalf, which will apply across all subscriptions on a given FIX session.
Market Data Snapshot Message Flow
Snapshot Market Data updates provide the entire book in each update, in the form of a MarketDataSnapshot (35=W) message. To request Snapshot pricing set MDUpdateType (265)=Snapshot(0) on your request (35=V).
Market Data Incremental Refresh Message Flow
For clients using ECN subscriptions this is the most efficient way to consume pricing as only changes to the book are sent on each update.
Market Data Reject Flow
In the event a Market Data Request cannot be processed a reject may be sent together with an explanation.
Sweepable Pricing
Market data entries are sorted first by side, bids and then offers, then by price - starting from Top of book, e.g. bids in descending order, offers in ascending order. Prices may (optionally) be aggregated across LPs, in which case a single market data entry represents the sum of available liquidity at that price from multiple LP’s. Otherwise, the quote of each liquidity provider is provided in a discrete market data entry.
To request sweepable pricing you should set:
MarketSegment(1300)=Direct(D)
MDBookType(1021)=Price Depth (2)
The below table outlines valid combinations of parameters:
SubscriptionRequest Type (263) | MDUpdate Type (265) | Update Interval (12003) | MDEntrySize (271) | Aggregated Book (266) | MarketDepth (264) |
---|---|---|---|---|---|
Subscribe (1) | Snapshot (0) | 0 - 1000 | > 0 – this is the cumulative notional Market Depth you would like to see. Cannot be used in conjunction with MarketDepth(264)>0. If you do not wish to specify a value this tag can be omitted. | Y | 0 - Full Book |
1 - Top of Book | |||||
N | |||||
n - Number of price levels | |||||
Incremental (1) | N | 0 - Full Book | |||
Unsubscribe (2) | Not Required. Not Validated. |
Single Ticket Pricing
Each market data entry represents a price and quantity from a single LP. These prices are “Exclusive” which means they are offered by the LP with the understanding that the entire LC order will be submitted to a single LP, and that speed bumps will restrict the LC floor from submitting a subsequent Single Ticket order for the same instrument within a configurable amount of time. Also known as Full Amount Pricing.
Market data entries are sorted first by side, bids and then offers, then by price, then by size, from largest quantity to smallest. Multi Level Price Depth books are never aggregated. If multiple LP’s quote the same size there may be multiple entries (from different LPs) at the same size. If no specific LP account IDs were specified on the request, then the market data will be provided from any available LPs; however if an LP is specified in the DeliverToCompID field on the request, then the market data will be provided from that LP only (Pass-Through).
To request Single Ticket pricing you should set:
MarketSegment(1300)=Direct(DF)
MDBookType(1021)=MultiLevelPriceDepth (1104)
The below table outlines valid combinations of parameters:
SubscriptionRequest Type (263) | MDUpdate Type (265) | Update Interval (12003) | MDEntrySize (271) | Aggregated Book (266) | MarketDepth (264) |
---|---|---|---|---|---|
Subscribe (1) | Snapshot (0) | 0 - 1000 | > 0 – this is the ceiling notional Market Depth you would like to see. | N/A | 0 - Full Book |
1 - Top of Book | |||||
n - Number of price levels | |||||
Incremental (1) | |||||
Unsubscribe (2) |
Single Ticket Pricing Views Explained
EBS Direct consumes prices across multiple LPs, in this example let's assume you wish to sell EUR/USD and we have 3 LPs pricing, each with their respective market depths:
Bid Amount | LP | BidPrice |
---|---|---|
10,000,000 | LP1 | 1.25090 |
12,000,000 | LP1 | 1.25080 |
15,000,000 | LP1 | 1.25075 |
20,000,000 | LP1 | 1.25070 |
Bid Amount | LP | BidPrice |
---|---|---|
10,000,000 | LP2 | 1.25090 |
12,000,000 | LP2 | 1.25087 |
15,000,000 | LP2 | 1.25085 |
Bid Amount | LP | BidPrice |
---|---|---|
10,000,000 | LP3 | 1.25085 |
15,000,000 | LP3 | 1.25080 |
EBS Direct consolidates prices across multiple LPs to form a consolidated view of market depth.
Liquidity Consumers (LC)s can choose how much or how little of the market depth to consume, ranging from the entire market depth to a single Top Of Book (TOB) price for the best LP and a given quantity to price/trade.
Market depth applies per rung.
Bid Amount | LP | BidPrice |
---|---|---|
10,000,000 | LP1 | 1.25090 |
10,000,000 | LP2 | 1.25090 |
12,000,000 | LP2 | 1.25087 |
15,000,000 | LP2 | 1.25085 |
10,000,000 | LP3 | 1.25085 |
15,000,000 | LP3 | 1.25080 |
12,000,000 | LP1 | 1.25080 |
15,000,000 | LP1 | 1.25075 |
20,000,000 | LP1 | 1.25070 |
Subscribe to everything MarketDepth(264) = 0 | Subscribe up to a ceiling notional volume | Subscribe to Top Of Book (TOB) at each volume level in the book Where there are multiple LPs with the same price for a given volume, there will be more than one price for a given volume level. MarketDepth(264) = 1 | Subscribe to Top Of Book (TOB) up to a specific volume you want to price/trade MarketDepth(264) =1 MDEntrySize(271) = 10000000 For this example we assume LP1 has a higher matching priority; which is why despite LP2 showing the same price for 10mio it is not shown. |
How was your Client Systems Wiki Experience? Submit Feedback
Copyright © 2024 CME Group Inc. All rights reserved.