# Cboe Titanium U.S. Equities TCP Depth of Book (PITCH) Specification

Version 1.15.15 · June 30, 2026

## Introduction

This document describes the Cboe TCP PITCH protocol. The intended audience of this document is software developers of Cboe members who would like to use the TCP PITCH protocol to receive real-time full depth of book quotations and execution information direct from Cboe via a TCP/IP connection.

Note that this specification will be the standard TCP PITCH specification to be used for Cboe BYX Exchange, BZX Exchange, EDGA Exchange and EDGX Exchange platforms within the NY5 data center.

PITCH cannot be used to enter orders. For order entry, refer to the Cboe FIX Specification.

All visible orders and executions are reflected via the PITCH feed. Each PITCH message reflects the addition, deletion, or execution of an order in the system. All orders and executions are anonymous, and do not contain the member identity.

Cboe `Auction Update` and `Auction Summary` messages are available in support of the Cboe Opening, Closing, Halt and IPO Auctions on the BZX Exchange. Refer to Cboe Titanium U.S. Equities Auction Process Specification for more information on Cboe Auctions.

### Definitions and Acronyms

**Table 1. Definitions**

| Term or Abbreviation | Description |
|---|---|
| FIX | An industry-standard messaging standard for the electronic communication of trade-related messages. |
| PITCH | A Cboe-specific protocol used for receiving real-time full depth of book quotations and execution information. |
| SIP | Securities Information Processor, a centralized processor for data consolidation and dissemination. |

## Protocol

### Message Format

The PITCH data feed is comprised of a series of fixed-length sequenced messages. The length of each message is dependent upon the message type. Each message is made up of non-control ASCII bytes.

### Sequence Numbers

The messages that make up the PITCH protocol are delivered using SOUP 2.0, which handles sequencing and delivery integrity. Cboe implementation of SOUP 2.0 is the same as other Market Centers.

### Order IDs/Execution IDs

Note that Order IDs and Execution IDs are 12 characters base 36. The 1st character of an Execution ID may be used to differentiate between internal matched trades, internal auction fills, and routed trades as follows:

- `0 (zero)` = Cboe Internal Match
- `C` = Auction Fill
- `M` = Cboe Market Close Trade
- `R` = Routed Trade

## Sessions

Cboe implementation of SOUP 2.0 is the same as other Market Centers. This includes the implementation of session events such as login requests, client/server heartbeats, and logout requests.

## Message Types

Each PITCH message type reflects the addition, deletion, or execution of an order in the system.

The fields within each message type have a corresponding data type. The various data types are defined in the following table.

**Table 1. PITCH Message Types**

| Data Type | Description |
|---|---|
| Alpha | A string of ASCII letters (A-Z) left justified and space padded on the right. |
| Base 36 Numeric | A string of ASCII numbers and letters (0-9A-Z), representing base 36 digits, right justified and zero filled on the left. Typically used for Order IDs and Execution IDs. Note that these fields are longer than on some other Market Centers. |
| Numeric | A string of ASCII numbers (0-9), right justified and zero filled on the left. |
| Price | A string of ASCII numbers (0-9) consisting of 6 whole number digits followed by 4 decimal digits. The whole number portion is zero filled on the left; the decimal portion is zero filled on the right. The decimal point is implied by position and does not does explicitly appear in the field |
| Long Price | A string of ASCII numbers (0-9) consisting of 8 whole number digits followed by 6 decimal digits. The whole number portion is zero filled on the left; the decimal portion is zero filled on the right. The decimal point is implied by position and does not does explicitly appear in the field |
| Printable ASCII | A string of printable ASCII values in the range of 0x20 - 0x7e. |
| Timestamp | A string of numbers (0-9) representing whole number milliseconds past midnight Eastern Time, right justified and zero filled on the left, with no decimal point. Negative offsets are possible and will have a minus sign '-' in the left most location. Negative values represent time before midnight Eastern Time. |

### System Event

Unlike other Market Centers, Cboe does not send `System Event` messages.

### Symbol Clear Message Fields

The `Symbol Clear` message instructs feed recipients to clear all orders for the Cboe book in the specified symbol. This message will be sent at startup each day. It would also be distributed in certain recovery events such as a data center fail-over.

**Table 1. Symbol Clear**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | TimeStamp |
| Message Type | 8 | 1 | `s` | `Symbol Clear` message |
| Stock Symbol | 9 | 8 | Printable ASCII | Stock symbol right padded with spaces. |

### Add Order Message FIelds

An `Add Order` message represents a newly accepted visible order on the Cboe book. It includes a day-specific Order ID assigned by Cboe to the order.

NOTE: If an order’s Price value changes within the Cboe matching engine, a `Cancel Order` message will be immediately followed by a new `Add Order` message with the same Order ID as the original order.

The `Add Order` message has the following formats:

**Table 1. Add Order (short)**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `A` | `Add Order` message (short) |
| Order ID | 9 | 12 | Base 36 Numeric | Day-specific identifier assigned to this order |
| Side Indicator | 21 | 1 | Alpha | `B` = Buy Order `S` = Sell Order |
| Shares | 22 | 6 | Numeric | Number of shares being added to the book (may be less than the number of shares entered). |
| Stock Symbol | 28 | 6 | Printable ASCII | Stock symbol right padded with spaces. |
| Price | 34 | 10 | Price | The limit order price |
| Reserved | 44 | 1 | Alpha | Set to `Y` |

The following long version of the `Add Order` message accommodates larger symbol sizes possible through the ISRA plan.

**Table 2. Add Order (long)**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `d` | `Add Order` message (long) |
| Order ID | 9 | 12 | Base 36 Numeric | Day-specific identifier assigned to this order |
| Side Indicator | 21 | 1 | Alpha | `B` = Buy Order `S` = Sell Order |
| Shares | 22 | 6 | Numeric | Number of shares being added to the book (may be less than the number of shares entered). |
| Stock Symbol | 28 | 8 | Printable ASCII | Stock symbol right padded with spaces. |
| Price | 36 | 10 | Price | The limit order price |
| Reserved | 46 | 1 | Alpha | Set to `Y` |
| ParticipantID | 47 | 4 | Alpha | Optionally specified. If specified, MPID or RTAL for retail specified orders (equities) of firm attributed to this quote. Space filled otherwise. |
| CustomerIndicator | 51 | 1 | Alphanumeric | (EDGX Only) , space filled on other Cboe Equities Exchanges. `R` = Retail |

The following extended version of the `Add Order` message accommodates larger prices.

**Table 3. Add Order (extended)**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `1` | `Extended Add Order` message |
| Order ID | 9 | 12 | Base 36 Numeric | Day-specific identifier assigned to this order |
| Side Indicator | 21 | 1 | Alpha | `B` = Buy Order `S` = Sell Order |
| Shares | 22 | 6 | Numeric | Number of shares being added to the book (may be less than the number of shares entered). |
| Stock Symbol | 28 | 8 | Printable ASCII | Stock symbol right padded with spaces. |
| Price | 36 | 14 | Long Price | The limit order price |
| Display | 50 | 1 | Alpha | `Y` = The order is aggregated in the Cboe SIP quote. |
| ParticipantID | 51 | 4 | Alpha | Optionally specified. If specified, MPID or RTAL for retail specified orders (equities) of firm attributed to this quote. Space filled otherwise. |
| CustomerIndicator | 55 | 1 | Alphanumeric | (EDGX Only) , space filled on other Cboe Equities Exchanges. `R` = Retail |

### Order Modification

Order Modification messages refer to an Order ID previously sent with an `Add Order` message. Multiple Order Modification messages may modify a single order and the effects are cumulative. Order Modification messages always reduce the remaining shares in the referenced open order by the number of shares indicated. When the remaining shares for an order reach zero, the order is dead and should be removed from the book.

#### Order Executed Message Fields

`Order Executed` messages are sent when a visible order on the Cboe book is executed in whole or in part. The execution price equals the limit order price found in the original `Add Order` message.

**Table 1. Order Executed**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `E` | `Order Executed` message |
| Order ID | 9 | 12 | Base 36 Numeric | Order ID of a previously sent `Add Order` message that was executed. |
| Executed Shares | 21 | 6 | Numeric | Number of shares executed |
| Execution ID | 27 | 12 | Base 36 Numeric | Cboe generated day-unique execution identifier of this execution. Execution ID is also referenced in the `Trade Break` message. |

#### Order Cancel Message Fields

`Order Cancel` messages are sent when a visible order on the Cboe book is canceled in whole or in part.

**Table 1. Order Cancel**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `X` | `Order Cancel` message |
| Order ID | 9 | 12 | Base 36 Numeric | Order ID of a previously sent `Add Order` message that has been reduced or canceled |
| Canceled Shares | 21 | 6 | Numeric | Number of shares canceled |

### Time Reference Message Fields (Effective 11/02/26 on BZX and EDGX)

The `Time Reference` message is used to provide a midnight reference point for recipients of the feed. It is sent whenever the system starts up and when the system crosses a midnight boundary. All subsequent Timestamp values will use the last Midnight Reference until another `Time Reference` message is received. The `Time Reference` message includes the Trade Date, so most other sequenced messages will not include that information.

The `Time Reference` message will be sent when the system first detects a message that crosses a midnight boundary. In the event a message from another internal data source has not yet passed midnight and needs to be sent, a negative Timestamp will be used to reflect that the time for that message is prior to midnight.

The Timestamp field will contain the offset from the Trade Date of the `Time Reference` message.

`Time Reference`messages will be included in a spin response.

**Table 1. Time Reference**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | T | `Time Reference` message |
| Midnight Reference | 9 | 10 | Numeric | Midnight Eastern Time reference time for subsequent Timestamp values, expressed as number of whole seconds since the Epoch (Midnight January 1, 1970 UTC). |
| Time | 19 | 10 | Numeric | Number of whole seconds elapsed since the start of the current Eastern Time calendar day, derived by converting the current Eastern wall clock time (HH:MM:SS) to seconds. On Daylight Saving Time transition days, Time reflects wall clock seconds and does not adjust for the UTC offset change. On a DST spring-forward day, the maximum value will be 82,799 (23 hours). On a DST fall-back day, values between 3,600 and 7,199 will appear twice. Recipients requiring unambiguous absolute timestamps should use Midnight Reference in the `Time Reference` message. |
| Trade Date | 29 | 8 | Numeric | Current Trade Date as represented by YYYYMMDD |

### Trade Message Fields

The `Trade` message provides information about executions of non-displayed orders or shares on the Cboe book and routed orders. `Trade` messages are necessary to calculate Cboe execution based data. `Trade` messages do not alter the book and can be ignored if you are just building a book.

No `Add Order` message is sent for non-displayed and routed orders, and thus, no modify order messages may be sent when non-displayed orders are executed. Instead, a `Trade` message is sent whenever a hidden or routed order is executed in whole or in part. A `Trade` message is also sent when there is an execution against any non-displayed portion of a reserve order. As with visible orders, hidden orders may be executed in parts. A complete view of all Cboe executions can be built by combining all `Order Executed` messages and `Trade` messages.

The OrderID of a non-displayed order is obfuscated by default in the `Trade` message, but may be optionally disseminated for a member's own orders upon request. As such, partial executions against the same hidden order will by default have different OrderIDs.

**Table 1. Trade (short)**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `P` | `Trade` message (short) |
| * Order ID | 9 | 12 | Base 36 Numeric | Obfuscated Order ID or Order ID of the executed order |
| Side Indicator | 21 | 1 | Alpha | Always `B` = Buy Order regardless of side of resting order |
| Shares | 22 | 6 | Numeric | Incremental Number of shares executed |
| Stock Symbol | 28 | 6 | Printable ASCII | Stock symbol right padded with spaces. |
| Price | 34 | 10 | Price | The execution price of the order |
| * Execution ID | 44 | 12 | Base 36 Numeric | Cboe generated day-unique execution identifier of this trade. Execution ID is also referenced in the `Trade Break` message. |

The following long version of the `Trade` message accommodates larger symbol sizes possible through the ISRA plan.

**Table 2. Trade (long)**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `r` | `Trade` message (long) |
| * Order ID | 9 | 12 | Base 36 Numeric | Obfuscated Order ID or Order ID of the executed order. |
| Side Indicator | 21 | 1 | Alpha | Always `B` = Buy Order regardless of side of resting order |
| Shares | 22 | 6 | Numeric | Incremental Number of shares executed |
| Stock Symbol | 28 | 8 | Printable ASCII | Stock symbol right padded with spaces. |
| Price | 36 | 10 | Price | The execution price of the order |
| * Execution ID | 46 | 12 | Base 36 Numeric | Cboe generated day-unique execution identifier of this trade. Execution ID is also referenced in the `Trade Break` message. |

The following extended version of the `Trade` message accommodates larger prices.

**Table 3. Trade (extended)**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `2` | `Extended Trade` message |
| * Order ID | 9 | 12 | Base 36 Numeric | Obfuscated Order ID or Order ID of the executed order. |
| Side Indicator | 21 | 1 | Alpha | Always `B` = Buy Order regardless of side of resting order |
| Shares | 22 | 6 | Numeric | Incremental Number of shares executed |
| Stock Symbol | 28 | 8 | Printable ASCII | Stock symbol right padded with spaces. |
| Price | 36 | 14 | Long Price | The execution price of the order |
| * Execution ID | 50 | 12 | Base 36 Numeric | Cboe generated day-unique execution identifier of this trade. Execution ID is also referenced in the `Trade Break` message. |

### Trade Break Message Fields

The `Trade Break` message is sent whenever an execution on Cboe is broken. Trade breaks are rare and only affect applications that rely upon Cboe execution based data. Applications that simply build a Cboe book can ignore `Trade Break` messages.

**Table 1. Trade Break**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `B` | `Trade Break` message |
| * Execution ID | 9 | 12 | Base 36 Numeric | Cboe execution identifier of the execution that was broken. Execution ID refers to previously sent `Order Execution` or `Trade` message. |

### Trading Status Message Fields

The `Trading Status` message is used to indicate the current trading status of a security. A `Trading Status` message will be sent whenever a security's trading status changes. In addition, Cboe will send a `Trading Status` message for all securities that are "Halted" or have a price test in effect before the start of trading hours.

`Trading Status` of `S` will be implied at system startup. `T` will be sent as securities are available for trading. `A` will be distributed when orders can be accepted for queuing in preparation for the market open.

Sequenced `Trading Status` messages are sent upon system start up for all active securities with Trading Status = `S` (suspended). `Trading Status` messages will continue to be published upon symbol state changes, such as at the beginning of order acceptance.

**Table 1. Trade Status**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `H` | `Trading Status` message |
| Stock Symbol | 9 | 8 | Printable ASCII | Stock symbol right padded with spaces. |
| Halt Status | 17 | 1 | Alpha | `A` = Accepting Orders for Queueing `H` = Halted `Q` = Quote-Only (Cboe Listings) `S` = Exchange Specific Suspension `T` = Trading |
| Reg SHO Action | 18 | 1 | Numeric | `0` = No price test in effect `1` = Reg SHO price test restriction in effect |
| Reserved1 | 19 | 1 | Alpha | Reserved |
| Reserved2 | 20 | 1 | Alpha | Reserved |

### Auction Update Message Fields

`Auction Update` messages are used to disseminate Cboe price and size information during auctions for Cboe listed securities on BZX, and for Periodic Auctions on BYX. Refer to Cboe Titanium U.S. Equities Auction Process Specification for more information on Cboe Auctions.

Cboe `Auction Update` messages support the Cboe Opening, Closing, Halt and IPO Auctions on the BZX Exchange. The `Auction Update` messages are sent every 5 seconds during a Halt/IPO Quote-Only period. Opening `Auction Update` messages are disseminated every 5 seconds between 9:28 and 9:30 a.m. Cboe disseminates Closing `Auction Update` messages every 5 seconds between 3:00 and 3:59 p.m. and every 1 second between 3:59 and 4:00 p.m.

The BZX `Auction Update` message has the following format:

**Table 1. Auction Update (BZX)**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `I` | `Auction Update` message |
| Stock Symbol | 9 | 8 | Printable ASCII | Stock symbol right padded with spaces. |
| Auction Type | 17 | 1 | Alpha | `O` = Opening Auction `C` = Closing Auction `H` = Halt Auction `I` = IPO Auction `M` = Cboe Market Close |
| Reference Price | 18 | 10 | Price | BBO Collared auction price (see Cboe Titanium U.S. Equities Auction Process Specification). |
| Buy Shares | 28 | 10 | Numeric | Number of shares on buy side at the Reference Price . Shares matched for Cboe Market Close. |
| Sell Shares | 38 | 10 | Numeric | Number of shares on sell side at the Reference Price . Shares matched for Cboe Market Close. |
| Indicative Price | 48 | 10 | Price | Price at which the auction book and the continuous book would match. |
| Auction Only Price | 58 | 10 | Price | Price at which the auction book would match using only Eligible Auction Orders (see Auction Process specification). |

The following extended version of the BZX `Auction Update` message accommodates larger prices and has the following format:

**Table 2. Auction Update - Extended (BZX)**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `3` | `Extended Auction Update` message |
| Stock Symbol | 9 | 8 | Printable ASCII | Stock symbol right padded with spaces. |
| Auction Type | 17 | 1 | Alpha | `O` = Opening Auction `C` = Closing Auction `H` = Halt Auction `I` = IPO Auction `M` = Cboe Market Close |
| Reference Price | 18 | 14 | Long Price | BBO Collared auction price (see Auction Process specification). |
| Buy Shares | 32 | 10 | Numeric | Number of shares on buy side at the Reference Price . Shares matched for Cboe Market Close. |
| Sell Shares | 42 | 10 | Numeric | Number of shares on sell side at the Reference Price . Shares matched for Cboe Market Close. |
| Indicative Price | 52 | 14 | Long Price | Price at which the auction book and the continuous book would match. |
| Auction Only Price | 66 | 14 | Long Price | Price at which the auction book would match using only Eligible Auction Orders (see Auction Process specification). |

For BYX, `Auction Update` messages are sent out at a randomized time between the start of an auction period and the end of the auction period minus 1 millisecond to inform participants that a Periodic Auction is taking place. `Auction Update` messages do not include order imbalance information or information for continuous book orders.

**Table 3. Auction Update (BYX)**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `I` | `Auction Update` message |
| Stock Symbol | 9 | 8 | Printable ASCII | Stock symbol right padded with spaces. |
| Auction Type | 17 | 1 | Alpha | `P` = Periodic Auction (BYX Only) |
| Reference Price | 18 | 10 | Price | Collared price at which the periodic auction would trade. Calculated using orders eligible for periodic auction. |
| Buy Shares | 28 | 10 | Numeric | Paired size of eligible periodic auction orders at the Reference Price. |
| Sell Shares | 38 | 10 | Numeric | Paired size of eligible periodic auction orders at the Reference Price. |
| Indicative Price | 48 | 10 | Price | N/A. Populated with zero. |
| Auction Only Price | 58 | 10 | Price | N/A. Populated with zero. |

### Auction Summary Message Fields

`Auction Summary` messages are used to disseminate the results of an auction of a Cboe listed security on BZX, and for Periodic Auctions on BYX. Refer to Cboe Titanium U.S. Equities Auction Process Specification for more information on Cboe Auctions.

Cboe `Auction Summary` messages support the Cboe Opening, Closing, Halt and IPO Auctions on the BZX Exchange. An Opening `Auction Summary` message for each Cboe listed security is sent at the conclusion of its opening auction at 9:30 a.m. and represents the Cboe official opening price. A Closing `Auction Summary` message for each Cboe listed security is sent at the conclusion of its closing auction at 4:00 p.m. and represents the Cboe official closing price. An IPO `Auction Summary` message for each Cboe listed security is sent at the conclusion of the IPO Auction and represents the official Cboe IPO opening price.

On the BYX Exchange, `Auction Summary` messages will be sent out upon conclusion of a Periodic Auction. `Auction Summary` messages will not include order imbalance information or information for continuous book orders.

**Table 1. Auction Summary**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `J` | `Auction Summary` message |
| Stock Symbol | 9 | 8 | Printable ASCII | Stock symbol right padded with spaces. |
| Auction Type | 17 | 1 | Alpha | `O` = Opening Auction `C` = Closing Auction `H` = Halt Auction `I` = IPO Auction `M` = Cboe Market Close `P` = Periodic Auction (BYX Only) |
| Price | 18 | 10 | Price | Auction price. Price of the CMC match. |
| Shares | 28 | 10 | Numeric | Cumulative number of shares executed during the auction. Shares executed in the CMC match. |

The following extended version of the BYX `Auction Summary` message accommodates larger prices and has the following format.

**Table 2. Auction Summary - Extended**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `4` | `Extended Auction Summary` message |
| Stock Symbol | 9 | 8 | Printable ASCII | Stock symbol right padded with spaces. |
| Auction Type | 17 | 1 | Alpha | `O` = Opening Auction `C` = Closing Auction `H` = Halt Auction `I` = IPO Auction `M` = Cboe Market Close `P` = Periodic Auction (BYX Only) ( Effective TBD ) |
| Price | 18 | 14 | Long Price | Auction price. Price of the CMC match. |
| Shares | 32 | 10 | Numeric | Cumulative number of shares executed during the auction. Shares executed in the CMC match. |

### Retail Price Improvement Message Fields (BYX and EDGX Only)

The `Retail Price Improvement` message is only available on the BYX and EDGX Exchanges. This message is a Retail Liquidity Indicator (RLI) that includes symbol and side, but not price and size. An RLI will be disseminated when there is a Retail Price Improving (RPI) order present for a symbol on the Exchange order book OR to indicate a RPI order is no longer available. RPI orders offer price improvement in increments of $.001 to Retail Member Organizations.

Cboe will disseminate a `Retail Price Improvement` message when the resting RPI order is priced better than the NBBO.

**Table 1. Retail Price Improvement**

| Field Name | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| Timestamp | 0 | 8 | Timestamp | Timestamp |
| Message Type | 8 | 1 | `R` | `Retail Price Improvement` message |
| Stock Symbol | 9 | 8 | Printable ASCII | Symbol |
| Retail Price Improvement | 17 | 1 | Alpha | `B` = Buy Side RPI `S` = Sell Side RPI `A` = Buy & Sell RPI `N` = No RPI |

## Order Representation

### Hidden Orders

Cboe obfuscates the OrderID for all `Trade` messages generated from non-displayed liquidity on the Cboe Exchange book, including executions from hidden orders. By default, OrderIDs on `Trade` messages are obfuscated in the data feed.

### Reserve Orders

To better protect reserve orders, Cboe handles executions against reserve orders as follows:

1. The displayed and non-displayed portions of an execution against a reserve order are separated into two (2) executions on the PITCH feed.
2. One execution represents the displayed size and carries the displayed OrderID. This is reported as an `Order Executed` message € of the displayed portion of the order.
3. The second execution represents the hidden size executed and has an obfuscated OrderID so that the displayed and hidden executions cannot be linked. This is reported by a `Trade` message (`P` or `r`) with the obfuscated OrderID.
4. The execution against the hidden portion of the order is reported after displayed, non-displayed, and peg executions at the same price matching the Cboe Exchange Priority Rule 11.12.
5. When the displayed portion of the reserve order is refreshed, the order is assigned a new OrderID on the PITCH feed. This is reported by an `Add Order` message (`A` or `d`) when the remainder is nonzero.

### OrderID Obfuscation Opt-out

Members who do not wish for their orders to be subject to the OrderID obfuscation defined in Hidden Orders and Reserve Orders may opt-out at the port level, via request to the Cboe Trade Desk. An opt-out will impact all `Trade` messages (`P` or `r`) generated from non-displayed liquidity on a given order.

## References

### Symbology

For more information on Cboe Symbology, please refer to Cboe Titanium U.S. Symbology Reference.

## Support

Please direct questions or comments regarding this specification to tradedesk@cboe.com.

## Revision History

| Document Version | Date | Description |
|---|---|---|
| 1.0.0 | 11/25/05 | Initial Version. |
| 1.1.0 | 01/09/06 | Removed System Event Messages. |
| 1.1.1 | 08/21/06 | Added "Symbology" Section. |
| 1.1.2 | 06/18/07 | Added FAST PITCH link. |
| 1.1.3 | 06/18/08 | Corrected Bats suffix for Convertible called. |
| 1.2.0 | 10/06/08 | Revised wording to reflect transition to Bats Exchange. |
| 1.2.1 | 12/03/08 | Moved Symbology reference to a separate document. |
| 1.3.0 | 05/27/09 | Changed the use of the Display field on `Add Order` messages. |
| 1.4.0 | 08/11/09 | Removed BOLT references. |
| 1.4.1 | 08/26/09 | Removed SRO quoting reference |
| 1.5.0 | 11/09/09 | Reformatted document based Bats Protocol Specification Template. Updated Side indicator of `Trade` message to always be set to ‘B’. |
| 1.5.1 | 12/14/09 | Added logic for decoding internal matched vs. routed trades via Execution ID. |
| 1.5.2 | 12/16/09 | Minor updates for clarity. |
| 1.6.0 | 01/12/10 | Long form created for `Add Order` and `Trade` messages. |
| 1.6.1 | 04/06/10 | Implemented support for 8 character symbology. |
| 1.6.2 | 06/09/10 | Obfuscate `Trade` message Order ID by default |
| 1.7.0 | 08/16/10 | Added "Order Representation" Section. Described OrderID obfuscation logic for reserve and hidden orders. |
| 1.8.0 | 09/03/10 | Added `Trading Status` message definition. |
| 1.8.1 | 11/09/10 | Clarified `Modify Order` messages were a category of messages and not a specific message type. |
| 1.9.0 | 05/09/11 | Added `Auction Update` message. Effective Date 10/7/11. Added Quote-Only option to the Halt Status field of the `Trading Status` message. Removed FAST PITCH reference. |
| 1.9.1 | 06/06/11 | Various changes based on feedback and internal discussions. |
| 1.9.2 | 06/27/11 | Minor formatting update. |
| 1.9.3 | 06/30/11 | Converted `Auction Update` message buy/sell shares from 6 to 10 byte fields. |
| 1.10.0 | 09/09/11 | Added `Auction Summary` message. Effective date 10/7/11. The first character of Execution IDs will use "C" for Auction Fills. Effective date 10/7/11. |
| 1.11.0 | 03/07/12 | Added 4 byte MPID to the `Add Order (long)` message. Effective date 5/7/12. |
| 1.12.0 | 09/14/12 | Added `Symbol Clear` message. Effective date 02/15/13. Added `Retail Price Improvement` message support for the BYX Exchange. Effective date 11/05/12 (test symbols) and 01/11/13 (other defined symbols). |
| 1.12.1 | 11/09/12 | Correction made to message type for `Symbol Clear` message which becomes available effective 01/18/13. Message type updated from "u" to "s". |
| 1.12.2 | 12/06/12 | `Symbol Clear` message updated to reflect Stock Symbol length of 8. |
| 1.12.3 | 01/10/14 | Corrected minor typographical errors in Order Executed and Auction Summary sections. |
| 1.12.4 | 04/04/14 | Updated Overview section to confirm this specification will be used for EDGA/EDGX in NY5. Added Printable ASCII data type and corrected Symbol data type definitions to reflect the same. Bats will begin sending Halt Status = `T` for symbols available for trading at the 8AM ET pre-market session open, effective 10/03/14. Add Order Expanded ParticipantID may indicate "RTL" for retail specified orders in equities. |
| 1.12.5 | 06/05/14 | Add Order Expanded ParticipantID messages indicating retail specified orders in equities changed from "RTL" to "RTAL", effective 10/03/14. |
| 1.12.6 | 08/01/14 | `Trading Status` of ‘H’ will be implied at system startup effective 10/03/14. `Trading Status` of ‘A’ will be distributed when orders can be accepted for queuing in preparation for the market open effective date 11/14/14. Trading Status of ‘S’ will be used to indicate an Exchange specific suspension in trading effective 10/03/14. |
| 1.12.7 | 10/27/14 | `Trading Status` of ‘S’ will be implied at system startup effective 11/14/14. |
| 1.13.0 | 01/25/15 | Specification title change. |
| 1.13.1 | 02/05/15 | Replaced the "Numeric" data type definition with "Timestamp" for Timestamp fields to more accurately describe the data type. No change in functionality. |
| 1.13.2 | 07/14/15 | Changed name of "Prices" data type to "Price". Replaced the "Numeric" data type definition with "Price" for Price fields to more accurately describe data type. No change in functionality. |
| 1.14.0 | 02/19/16 | Bats branding/logo changes. |
| 1.14.1 | 10/17/17 | Cboe branding/logo changes. |
| 1.15.0 | 07/10/18 | Added support for Cboe Market Close (CMC) in `Auction Update` and `Auction Summary` messages effective TBD. Execution IDs that start with ‘M’ are Cboe Market Close trades. |
| 1.15.1 | 04/30/19 | Added Customer Indicator field with new value of 'R' to the `Add Order (long)` message to indicate a Retail Order on EDGX Equities (effective 07/01/19). |
| 1.15.2 | 10/11/19 | Updated Customer Indicator field with new value of 'R' to the `Add Order (long)` message to indicate a Retail Order (EDGX only) effective 11/1/19. |
| 1.15.3 | 11/4/20 | Removed effective dates for features that have been released. |
| 1.15.4 | 04/27/21 | Added Periodic Auctions to `Auction Update` and `Auction Summary` messages (BYX Only) (Effective 04/14/22 Effective Q3 2021 TBD). |
| 1.15.5 | 07/19/21 | Updated Periodic Auctions effective date to TBD. |
| 1.15.6 | 03/25/22 | Updated Periodic Auctions effective date to 04/14/22 (BYX Only). |
| 1.15.7 | 04/11/23 | Changed Display field to Reserved on `Add Order` messages. |
| 1.15.8 | 05/24/23 | BYX will disseminate a `Retail Price Improvement` message when the resting RPI order is priced better than the NBBO (BYX Only) (effective 06/14/23). |
| 1.15.9 | 03/15/24 | Added extended versions of the `Add Order`, `Trade`, BZX `Auction Update`, and BZX `Auction Summary` messages (effective 06/17/25). |
| 1.15.10 | 09/06/24 | Effective 11/13/24, `Trading Status` messages will be sent upon system start up rather than at the start of order acceptance. |
| 1.15.11 | 10/09/24 | Effective 11/13/24, clarified initial `Trading Status` messages will be sent upon system start up in addition to sending at the start of order acceptance. |
| 1.15.12 | 01/15/25 | Updated with Cboe Titanium branding. |
| 1.15.13 | 04/21/25 | Cboe will disseminate Cboe Closing Auction information every 5 seconds between 3:00 and 3:59 p.m. every 1 second between 3:59 and 4:00 p.m. for the Closing Auction (effective 06/06/25). |
| 1.15.14 | 03/23/26 | Updated Retail Price Improvement Message Fields to indicate RPI will apply to BYX and effective 04/10/26 EDGX. |
| 1.15.15 | 06/30/26 | Updated Timestamp data type to indicate that negative offsets are possible and will have a minus sign '-' in the left most location. Added Time Reference Message Fields , effective 11/02/26 on BZX and EDGX. |
