BrokerTec U.S. Treasury Market Data
Market Data Platform supports a Simple Binary Encoding (SBE) Market Data Platform (MDP) channel for BrokerTec U.S. Treasury Data.
This market data channel distributes comprehensive BrokerTec U.S. Treasury price discovery market data.
This channel includes:
- top 5 levels of the order book for active benchmark products (2 Year - 30 Year)
- trade indicators
- market statistics including calculated analytics such as Volume Weighted Average Yield (VWAY).
This market data channel is distinct from the CME Globex BrokerTec Market Data.
Contents
Supported Products and Available Data
BrokerTec U.S. Treasury market data supports the product types listed below.
Only the benchmark active notes and bonds support multiple book depth (5 levels).
List of available products and most valuable data. Refer to Market Data Incremental Refresh Specification for a complete list of available data.
Products | Available Data |
---|---|
Active Benchmark Bills
|
|
Active Benchmark Notes and Bonds
|
|
When Issued Bills, Notes & Bonds
|
|
Once Old & Twice Old Off-the-Run Notes and Bonds
|
|
Data Availability
The data will be disseminated 6 days a week, Sunday 5:30 pm – Friday 4:30 pm CT.
- Standard Time: 6:30pm EST open - 5:30pm EST close.
- Daylight Savings Time: 7:30pm EDT open - 5:30pm EDT close.
Testing and Certification
Certification for BrokerTec U.S. Treasury Data is mandatory.
Customers can certify their applications using the BrokerTec U.S. Treasury Data test suite in Autocert+.
Market Data Technology Overview
This section provides an overview of the BrokerTec U.S. Treasury market data technology.
Simple Binary Encoding (SBE)
The BrokerTec U.S. Treasury market data channel uses compact Simple Binary Encoding (SBE) optimized for low latency of encoding and decoding while keeping bandwidth utilization reasonably small. Concise message sizes are used without the processing cost of compression. All FIX semantics are supported. The encoding standard is complimentary to other FIX standards for session protocol and application level behavior.
Market Data Support Services
BrokerTec will use a separate Market Data Configuration Service, Incremental Schema Dissemination Service, and Global TCP Recovery Schema Dissemination Service. A separate schema and configuration file will be required for this channel and is available at https://www.cmegroup.com/ftp or sftpng.cmegroup.com.
Market Data Services Architecture
Market Data Configuration Service
Customers can obtain channel definitions, UDP configurations, and TCP Historical Replay configurations.
Incremental Schema Dissemination Service
Customers can use the incremental schema dissemination service to obtain the Broker U.S. Treasury Data incremental message templates.
Global TCP Recovery Schema
BrokerTec U.S. Treasury Data utilize a separate schema dedicated to TCP recovery templates. However, client systems utilize the common replay component for the retrieval of actual messages.
FTP Locations
CME provides an FTP (https://www.cmegroup.com/ftp) and SFTP (sftpng.cmegroup.com) site to disseminate schema and market data configuration information. This FTP/SFTP site contains the Schema and Configuration files for all events. Schema and Market Data configuration details for the Production environment are only available to customers after the certification process is complete.
Environment | Service | FTP/SFTP Site | Directory Location | Client System Update Schedule |
---|---|---|---|---|
New Release | Incremental Schema | https://www.cmegroup.com/ftp or sftpng.cmegroup.com | /SBEFix/NRCert/BrokerTecUST/Templates/ | Sunday prior to market open |
New Release | Configuration File | /SBEFix/NRCert/BrokerTecUST/Configuration/ | Daily | |
New Release | Global TCP Recovery Schema | /SBEFix/NRCert/GlobalTCPRecovery/Templates/ | Sunday prior to market open | |
Production | Incremental Schema | /SBEFix/Production/BrokerTecUST/Templates/ | Sunday prior to market open | |
Production | Configuration File | /SBEFix/Production/BrokerTecUST/Configuration/ | Daily | |
Production | Global TCP Recovery Schema | /SBEFix/Production/GlobalTCPRecovery/Templates/ | Sunday prior to market open |
Market Data Channel
The following market data channel is available for BrokerTec U.S. Treasuries market data.
Channel Name | ChannelID |
---|---|
BrokerTec U.S. Treasury Data | 215 |
Customers can obtain channel network configurations from the config.xml file located at the new ftp location https://www.cmegroup.com/ftp.
Incremental Book Management
For customers not familiar with Incremental Book Management, you should familiarize yourself with MDP 3.0 Market by Price Multiple Book Depth.
Client systems use the Market Data Incremental Refresh (tag 35-MsgType=X) message to update and maintain aggregate book depth, trades, and statistical data views with the following data blocks:
- Add - create/insert a new price at a specified price level (tag 279 MDUpdateAction=0)
- Change - change quantity for a price at a specified price level (tag 279 MDUpdateAction=1)
- Delete - remove a price at a specified price level (tag 279 MDUpdateAction=2)
An Aggregate book is built from a series of data blocks which indicate whether an entry is to be inserted (Add), changed (Change), or removed (Delete). All data blocks are issued for a specified entry type (tag 269), price (tag 270), and price level (tag 1023).
- The 'Add' data block is sent if there is a new price level. Client systems should then shift price levels down and delete any price levels past the defined depth.
- The 'Change' data block is sent to update characteristics of a price level without changing the price itself or impacting any other prices on the book. The 'Change' data block is sent to update the quantity for a price level per volume.
- The 'Change' data block is not sent when the price changes at a given price level.
- The 'Delete' data block is sent to remove a price level in the book. Client systems should shift prices below the data block up to the price level vacated by the deleted price level. If available, an add data block will be sent to fill in the last price level.
Recovery
Missed messages can be recovered using TCP Recovery or Natural Refresh.
Natural Refresh is not guaranteed and should not be considered a definitive substitute for recovering lost data.
TCP Recovery
The TCP historical replay component allows systems to request a replay of a set of messages already published on the UDP Incremental Market Data Channel. The request specifies messages to replay.
Client systems will use the new Global TCP Replay Templates located at the new ftp location; however, client systems will utilize the common replay component for the retrieval of actual messages.
The request uses the SBE Market Data Request (tag 35-MsgType=V) message.
This type of request is sent through a new TCP connection established by client systems. The responses are sent by CME Group through this same connection and the connection is then closed by CME Group once the resend is complete. All responses are SBE encoded (including the reject response).
The TCP Replay feed supports the following FIX message formats:
- Logon (tag 35-MsgType=A) - Customer to CME Group
- Logout (tag 35-MsgType=5) - Customer to CME Group
- FIX Market Data Request message (tag 35-MsgType=V).
- CME Group to Customer, Heartbeat (tag 35-MsgType=0).
TCP Replay
The following restrictions apply when requesting messages via TCP Historical Replay:
- A maximum of 2,000 messages can be requested per Market Data Request (35=V) message.
- Only the current day's messages can be requested and resent.
Book Reset
BrokerTec U.S. Treasury Data is the only non-Globex market data channel to send Instrument level Book Reset (tag 35-MsgType=X, tag 55-Symbol, tag 269-MDEntryType=J) messages.
FIX Syntax for Intrument level Book Reset – Market Data Incremental Refresh (tag 35-MsgType=X)
- Tag 55-Symbol
- Tag 279-MDEntryAction=0 (New)
- Tag 269-MDEntryType=J (Book Reset)
The following process is used on startup to ensure that all necessary market data is received:
- Download the configuration files and schema files from the ftp site. Refer to FTP Site Information Information for more information.
- Listen to the Incremental feed for incremental market data and start normal processing.
- For products that support multilevel instrument books, the full state book (Top 5 levels) will be published only on startup or in the event of a CME Group system failure or failover.
CME Recommends client systems connect on Sunday Startup and stay connected throughout the week.
The book reset message will be followed by Incremental Refresh messages containing data blocks that are used to build and maintain the order book.
Binary Packet Header
Name | Binary Type (Size) | Number of Bytes | Req | Description |
---|---|---|---|---|
MsgSeqNum | uInt32 | 4 | Y | Packet sequence number. A unique sequence number given to each packet sent. Each channel will have its own separate set of sequence numbers that will increment sequentially with each packet and reset weekly. |
SendingTime | uInt64 | 8 | Y | UTC Time of message transmission by the Gateway. UTC Timestamps are sent in number of nanoseconds since Unix epoch synced to a master clock to microsecond accuracy. |
Market Data Incremental Refresh (tag 35-MsgType=X) Specification
The → symbol indicates a repeating group tag.
Header | ||||
---|---|---|---|---|
Tag | FIX Name | Format | Valid Values | Description |
35 | MsgType | STRING | X=Market Data Incremental Refresh | Defines message type. |
Body | ||||
75 | TradeDate | LOCAL MKT DATE | Trade Date in number of days since Unix epoch | |
60 | TransactTime | UTC_TIMESTAMP | - | UTC Timestamps are sent in number of nanoseconds since Unix epoch synced to a master clock to microsecond accuracy. |
268 | NoMDEntries | NUM_IN_GROUP | Number of FIX Market Data Incremental Refresh Data Blocks in the Market Data Incremental Refresh message. | |
Repeating Group | ||||
→279 | MDUpdateAction | CHAR | 0 = New 1 = Update 2 = Delete | Indicates the type of Market Data update action. |
→269 | MDEntryType | CHAR | 0 = Bid 1 = Ask 2 = Trade 4 = Opening Price 5 = Closing Price 7 = High Trade 8 = Low Trade 9 = Yield J = Book Reset | Indicates the type of Market Data entry. |
→270 | MDEntryPx | PRICE | Price of the Market Data Entry | |
→271 | MDEntrySize | QTY | Quantity of the MD Entry.
| |
→1023 | MDPriceLevel | INT | Price Level in the book | |
→1020 | TradeVolume | QTY | Total traded volume since the beginning of he session. If this tag is not present, then there is no volume. | |
→55 | Symbol | STRING | 1M - 30Y | Contract Symbol |
→541 | MaturityDay | LOCAL MKT DATE | Instrument Maturity Date | |
→455 | SecurityAltID | STRING | CUSIP | |
→456 | SecurityAltIDSource | STRING | 1 = CUSIP | Identifies class or source of the SecurityAltID (455) value. |
→223 | CouponRate | PERCENTAGE | The rate of interest that, when multiplied by the principal, par value, or face value of a bond, provides the currency amount of the periodic interest payment. | |
→277 | TradeCondition | CHAR | H = Hit T = Take | List of conditions describing a trade. In this case the field is reporting when BTEC trade is from Hit or Take. |
→423 | PriceType | INT | 9 = Yield | This tag will only contain a value if price in tag 270-MDEntryPx is in Yield terms. |
Incremental Refresh Messaging Examples
This section provides examples for building various types of books using the Incremental Refresh message.
Multiple Depth Order Book by Natural Refresh
This example shows the process to build the book by processing the Incremental Refresh (tag 35-MsgType=X) message. This process can be used real-time if client system loses connection or joins after the complete book has been published.
Starting book:
2 YEAR | Bid | Ask | 2 YEAR | ||
---|---|---|---|---|---|
Level | Quantity | Price | Price | Quantity | Level |
1 | 1 | ||||
2 | 2 | ||||
3 | 3 | ||||
4 | 4 | ||||
5 | 5 |
Process book update data blocks for the given instrument with a 5-deep book.
1. Update at Bid book level 3, price 99.03, quantity 15.
FIX Syntax example of Update at Bid book level 3, price 99.03, quantity 15:
- tag 279-MDUpdateAction = 1 (change)
- tag 1023-MDPriceLevel = 3
- tag 269-MDEntryType = 0 (Bid)
- tag 271-MDEntrySize = 15
- tag 270-MDEntryPx = 99.03
Bid | 2 YEAR | 2 YEAR | Ask | ||
---|---|---|---|---|---|
Level | Quantity | Price | Price | Quantity | Level |
1 | 1 | ||||
2 | 2 | ||||
3 | 15 | 99.03 | 3 | ||
4 | 4 | ||||
5 | 5 |
2. Update at Ask book level 3, price 99.93, quantity 40.
FIX Syntax for Updating at Ask book level 3, price 99.93, quantity 40:
- tag 279-MDUpdateAction = 1 (change)
- tag 1023-MDPriceLevel = 3
- tag 269-MDEntryType = 1 (Offer)
- tag 271-MDEntrySize = 40
- tag 270-MDEntryPx = 99.93
Bid | 2 YEAR | 2 YEAR | Bid | ||
---|---|---|---|---|---|
Level | Quantity | Price | Price | Quantity | Level |
1 | 1 | ||||
2 | 2 | ||||
3 | 15 | 99.03 | 99.93 | 40 | 3 |
4 | 4 | ||||
5 | 5 |
3. Update at Bid book level 2, price 99.04, quantity 25.
FIX Syntax for Updating at Bid book level 2, price 99.04, quantity 25:
- tag 279-MDUpdateAction = 1 (change)
- tag 1023-MDPriceLevel = 2
- tag 269-MDEntryType = 0 (Bid)
- tag 271-MDEntrySize = 25
- tag 270-MDEntryPx = 99.04
Bid | 2 YEAR | 2 YEAR | Ask | ||
---|---|---|---|---|---|
Level | Quantity | Price | Price | Quantity | Level |
1 | 1 | ||||
2 | 25 | 99.04 | 2 | ||
3 | 15 | 99.03 | 99.93 | 40 | 3 |
4 | 4 | ||||
5 | 5 |
4. Update at Ask book level 2, price 99.92, quantity 40.
FIX Syntax for Updating at Ask book level 2, price 99.92, quantity 40:
- tag 279-MDUpdateAction = 1 (change)
- tag 1023-MDPriceLevel = 2
- tag 269-MDEntryType = 1 (Offer)
- tag 271-MDEntrySize = 40
- tag 270-MDEntryPx = 99.92
Bid | 2 YEAR | 2 YEAR | Ask | ||
---|---|---|---|---|---|
Level | Quantity | Price | Price | Quantity | Level |
1 | 1 | ||||
2 | 25 | 99.04 | 99.92 | 40 | 2 |
3 | 15 | 99.03 | 99.93 | 40 | 3 |
4 | 4 | ||||
5 | 5 |
5. Update at Ask book level 1, price 99.91, quantity 25.
FIX Syntax for Updating at Ask book level 1, price 99.91, quantity 25:
- tag 279-MDUpdateAction = 1 (change)
- tag 1023-MDPriceLevel = 1
- tag 269-MDEntryType = 1 (Offer)
- tag 271-MDEntrySize = 25
- tag 270-MDEntryPx = 99.91
Bid | 2 YEAR | 2 YEAR | Ask | ||
---|---|---|---|---|---|
Level | Quantity | Price | Price | Quantity | Level |
1 | 99.91 | 25 | 1 | ||
2 | 25 | 99.04 | 99.92 | 40 | 2 |
3 | 15 | 99.03 | 99.93 | 40 | 3 |
4 | 4 | ||||
5 | 5 |
6. Update Bid book level 1, price 99.05, quantity 20.
FIX Syntax for Updating Bid book level 1, price 99.05, quantity 20:
- tag 279-MDUpdateAction = 1 (change)
- tag 1023-MDPriceLevel = 1
- tag 269-MDEntryType = 0
- tag 271-MDEntrySize = 20
- tag 270-MDEntryPx = 99.05
Bid | 2 YEAR | 2 YEAR | Ask | ||
---|---|---|---|---|---|
Level | Quantity | Price | Price | Quantity | Level |
1 | 20 | 99.05 | 99.91 | 25 | 1 |
2 | 25 | 99.04 | 99.92 | 40 | 2 |
3 | 15 | 99.03 | 99.93 | 40 | 3 |
4 | 4 | ||||
5 | 5 |
7. Update Bid book level 4, price 99.02, quantity 30.
FIX Syntax for Updating Bid book level 4, price 99.02, quantity 30:
- tag 279-MDUpdateAction = 1 (change)
- tag 1023-MDPriceLevel = 4
- tag 269-MDEntryType = 0
- tag 271-MDEntrySize = 30
- tag 270-MDEntryPx = 99.02
Bid | 2 YEAR | 2 YEAR | Ask | ||
---|---|---|---|---|---|
Level | Quantity | Price | Price | Quantity | Level |
1 | 20 | 99.05 | 99.91 | 25 | 1 |
2 | 25 | 99.04 | 99.92 | 40 | 2 |
3 | 15 | 99.03 | 99.93 | 40 | 3 |
4 | 30 | 99.02 | 4 | ||
5 | 5 |
8. Update Ask book level 4, price 99.94, quantity 15.
FIX Syntax for Updating Ask book level 4, price 99.94, quantity 15:
- tag 279-MDUpdateAction = 1 (change)
- tag 1023-MDPriceLevel = 4
- tag 269-MDEntryType = 1
- tag 271-MDEntrySize = 15
- tag 270-MDEntryPx = 99.94
Bid | 2 YEAR | 2 YEAR | Ask | ||
---|---|---|---|---|---|
Level | Quantity | Price | Price | Quantity | Level |
1 | 20 | 99.05 | 99.91 | 25 | 1 |
2 | 25 | 99.04 | 99.92 | 40 | 2 |
3 | 15 | 99.03 | 99.93 | 40 | 3 |
4 | 30 | 99.02 | 99.94 | 15 | 4 |
5 | 5 |
9. Insert Bid book level 5, price 99.01, quantity 20.
FIX Syntax for Inserting Bid book level 5, price 99.01, quantity 20:
- tag 279-MDUpdateAction = 0 (new)
- tag 1023-MDPriceLevel = 5
- tag 269-MDEntryType = 0
- tag 271-MDEntrySize = 20
- tag 270-MDEntryPx = 99.01
Bid | 2 YEAR | 2 YEAR | Ask | ||
---|---|---|---|---|---|
Level | Quantity | Price | Price | Quantity | Level |
1 | 20 | 99.05 | 99.91 | 25 | 1 |
2 | 25 | 99.04 | 99.92 | 40 | 2 |
3 | 15 | 99.03 | 99.93 | 40 | 3 |
4 | 30 | 99.02 | 99.94 | 15 | 4 |
5 | 20 | 99.01 | 5 |
10. Insert Ask book level 5, price 99.95, quantity 10.
FIX Syntax for Inserting Ask book level 5, price 99.95, quantity 10:
- tag 279-MDUpdateAction = 0 (new)
- tag 1023-MDPriceLevel = 5
- tag 269-MDEntryType = 0
- tag 271-MDEntrySize = 10
- tag 270-MDEntryPx = 99.95
Bid | 2 YEAR | 2 YEAR | Ask | ||
---|---|---|---|---|---|
Level | Quantity | Price | Price | Quantity | Level |
1 | 20 | 99.05 | 99.91 | 25 | 1 |
2 | 25 | 99.04 | 99.92 | 40 | 2 |
3 | 15 | 99.03 | 99.93 | 40 | 3 |
4 | 30 | 99.02 | 99.94 | 15 | 4 |
5 | 20 | 99.01 | 99.95 | 10 | 5 |
FIX Syntax for Trade Condition – Market Data Incremental Refresh (35=X)
- Tag 279-MDEntryAction=0 (New)
- Tag 269-MDEntryType=2 (Trade)
- Tag 55-Symbol (Contract Name)
- Tag 1023-MDPriceLevel (null)
- Tag 271-MDEntrySize (Last Trade Size)
- Tag 270-MDEntryPx (Price of the Market Data Entry)
- Tag 277-TradeCondition (Hit or Take)
- Tag 1020-TradeVolume (Total traded volume)
Example of Take Trade Condition built using incremental refresh messages:
30 Year | Last Trade Size | Last Trade Price | Trade Condition | Last Traded Volume |
---|---|---|---|---|
Symbol | 2 | 100.03125 | T | 1262 |
Top of Book (TOB) in Yield Terms
For Yield books, prices are inverted, i.e., the best Bid price can be lower than the best Ask.
FIX Syntax for 1 Level 2-Year Yield Book – Market Data Incremental Refresh (35=X):
- Tag 279-MDEntryAction=0 (New)
- Tag 269-MDEntryType=0 (Bid)
- Tag 55-Symbol (Contract Name)
- Tag 1023-MDPriceLevel=1 (Level 1)
- Tag 271-MDEntrySize null
- Tag 270-MDEntryPx (Price of the Market Data Entry)
- Tag 423-PriceType =9, else null (only if price is quoted in yield)
- Tag 279-MDEntryAction=0 (New)
- Tag 269-MDEntryType=1 (Ask)
- Tag 55-Symbol (Contract Name)
- Tag 1023-MDPriceLevel=1 (Level 1)
- Tag 271-MDEntrySize null
- Tag 270-MDEntryPx (Price of the Market Data Entry)
- Tag 423-PriceType =9, (Yield) else null (only if price is quoted in yield)
Example built using incremental refresh messages:
2 Year 1 | Bid Yield | Ask Yield | 2 Year 1 | ||
---|---|---|---|---|---|
Level | Price Type | Price | Price | Price Type | Level |
1 | Yield | 1.910 | 1.906 | Yield | 1 |
Statistical Information
This section provides examples of FIX Syntax for statistical information such as low trades, opening prices, VWAY, and VWAP.
Low Trade Price
FIX Syntax for Statistical Information Low Trade – Market Data Incremental Refresh (35=X)
- Tag 279-MDEntryAction=0 (New)
- Tag 269-MDEntryType=8 (Low Trade)
- Tag 55-Symbol (Contract Name)
- Tag 1023-MDPriceLevel (null)
- Tag 271-MDEntrySize (null)
- Tag 270-MDEntryPx (Price of the Market Data Entry)
Example - Statistical Information Low Trade
7 YEAR |
---|
Low Trade Price |
100.7812 |
Opening Price
FIX Syntax for Statistical Information Opening Price – Market Data Incremental Refresh (35=X)
- Tag 279-MDEntryAction=0 (New)
- Tag 269-MDEntryType=4 (Opening Price)
- Tag 55-Symbol (Contract Name)
- Tag 1023-MDPriceLevel (null)
- Tag 271-MDEntrySize (null)
- Tag 270-MDEntryPx (Price of the Market Data Entry)
Example - Statistical Information Opening Price
7 YEAR |
---|
Opening Price |
100.7343 |
Volume Weighed Average Yield (VWAY)
FIX Syntax for Statistical Information Volume Weighed Average Yield (VWAY) – Market Data Incremental Refresh (35=X)
- Tag 279-MDEntryAction=0 (New)
- Tag 269-MDEntryType=9 (Yield)
- Tag 55-Symbol (Contract Name)
- Tag 1023-MDPriceLevel (null)
- Tag 270-MDEntryPx= (Price of the Market Data Entry)
- Tag 423-PriceType=9
Example - Statistical Information Volume Weighed Average Yield (VWAY)
7 YEAR WI | |
---|---|
Yield | Price Type |
3.10043 | Yield |
Volume Weighed Average Price (VWAP)
FIX Syntax for Statistical Information Volume Weighed Average Price (VWAP) – Market Data Incremental Refresh (35=X)
- Tag 279-MDEntryAction=0 (New)
- Tag 269-MDEntryType=9 (Yield)
- Tag 55-Symbol (Contract Name)
- Tag 1023-MDPriceLevel (null)
- Tag 270-MDEntryPx= (Price of the Market Data Entry)
- Tag 423-PriceType=null
Example - Statistical Information Volume Weighed Average Yield (VWAP)
7 YEAR WI | |
---|---|
Yield | Price Type |
100.475 | null |
Contact Information
For technical development support, contact Certification Support for Electronic Trading (CSET).
For production requests, please contact the Global Command Center (GCC).
For all other inquiries, please contact Global Account Management (GAM).
How was your Client Systems Wiki Experience? Submit Feedback
Copyright © 2024 CME Group Inc. All rights reserved.