# Cboe Titanium U.S. Options Multicast TOP Specification

Version 1.2.59 · August 10, 2026

## Introduction

Note that this specification will be the standard Multicast Top specification to be used for the BZX Options, Cboe Options (C1), C2 Options and EDGX Options Exchange platforms. This specification is for the Simple book only, see the Cboe Titanium U.S. Options Complex Multicast TOP Specification for complex book information.

Options participants may use the Multicast Top protocol to receive real-time top of book quotations direct from each exchange. Market data received through Multicast Top is less timely than receiving the same data from the Multicast PITCH Depth of Book feed. The Top protocol offers a significant reduction in the number of events and number of bytes of application data sent, compared to the US Options Multicast PITCH protocol.

The quotations received via Multicast Top provide an aggregated size and do not indicate the size or number of individual orders at the best bid or ask. The Multicast Top protocol also provides last trade price and size and cumulative volume data.

Complete depth of book market data can be received via the US Options Multicast PITCH protocol.

Top cannot be used to enter orders. For order entry, refer to the appropriate US Options FIX or BOE Specification.

All versions of the Multicast Top feed will be Gig-shaped (current maximum 2Gb/s) and will be available from one or both of Cboe’s datacenters. Participants may choose to take one or more of the following Multicast Top feeds depending on their location and connectivity to Cboe.

**Table 1. Multicast Top Feed Descriptions**

| Exchange | Shaping | Served From Data Center (Primary/Secondary) | Multicast Feed ID |
|---|---|---|---|
| BZX Options | 2 Gig | Primary | OAT |
| BZX Options | 2 Gig | Primary | OBT |
| BZX Options | 2 Gig | Secondary | OET |
| C1 Options | 2 Gig | Primary | CAT |
| C1 Options | 2 Gig | Primary | CBT |
| C1 Options | 2 Gig | Secondary | CET |
| C2 Options | 2 Gig | Primary | WAT |
| C2 Options | 2 Gig | Primary | WBT |
| C2 Options | 2 Gig | Secondary | WET |
| EDGX Options | 2 Gig | Primary | EAT |
| EDGX Options | 2 Gig | Primary | EBT |
| EDGX Options | 2 Gig | Secondary | EET |

### 24x5 Feed Hours and System Restart (C1 Only)

For C1 Options operating in 24x5 mode, the Top feed starts on Sunday at approximately 1:00 p.m. ET and shuts down on Friday at approximately 5:30 p.m. ET. A daily restart occurs between 5:30 and 7:00 p.m. ET each day at which time sequences will be reset. The daily restart is typically observed between 5:30 p.m. and 6:00 p.m. ET, but could occur later if needed for operational reasons. Feed startup and shutdown times may be adjusted without notice.

Under normal operations, it is expected that the order books are cleared (Delete Order messages sent for any open orders, including GTC and GTD orders), prior to the daily restart and reset of sequences. Persisted GTC and GTD orders will be added back onto the order books starting at approximately 10 minutes prior to the scheduled queuing time for each underlying symbol.

### Feed Connectivity Requirements

Gig-Shaped feeds are available to participants who meet the minimum bandwidth requirements to Cboe via cross-connect, dedicated circuit, or a supported carrier.

Participants with sufficient connectivity may choose to take both the A and B feeds from Cboe’s primary datacenter and arbitrate the feeds to recover lost data. Alternatively, participants may choose to arbitrate feeds from both datacenters. It should be noted that feeds from the secondary datacenter will have additional latency for those connected with Cboe in the primary datacenter due to proximity and business continuity processing.

Multicast Top real-time events are delivered using a published range of multicast addresses divided by symbol range units. Dropped messages can be requested using a TCP/IP connection to one of Cboe’s Multicast Top Gap Request Proxy ( `GRP`) servers with replayed messages being delivered on a separate set of multicast ranges reserved for packet retransmission. Intraday, a spin of current top of book may be requested from a Spin Server.

The following diagram is a logical representation Multicast Top feed message flow between Cboe and a participant feed handler that is listening to the `A` and `B` instances of two units:

_(Figure)_

### Symbol Ranges, Units, and Sequence Numbers

Symbols will be separated into units and symbol distribution will not change intra-day. Cboe does, however, reserve the right to add multicast addresses or change the symbol distribution with 48 hours prior notice to participants. Care should be taken to ensure that address changes, address additions, and symbol distribution changes can be supported easily.

Message sequence numbers are incremented by one for every sequenced message within a particular symbol unit. It is important to understand that one or more units will be delivered on a single multicast address. As with symbol ranges, unit distribution across multicast addresses will not change intra-day, but may change after notice has been given.

Symbol distribution across units as well as unit distribution across multicast addresses are identical for real-time and gap response multicast addresses.

### Options Specific Symbol Processing

Cboe has implemented a symbol mapping mechanism ( `Symbol Mapping` message) for the Multicast Top feeds, which maps each specific simple options contract to a six character, ASCII Symbol. This symbol mapping significantly reduces the size of the Multicast Top feed and allows participants to use the same symbol handling mechanisms for the Cboe operated equity, options, and futures exchanges. This symbol mapping is the same as the US Options Multicast PITCH feed.

Mapping occurs on a continuous basis on each unit’s multicast feed. `Symbol Mapping` messages will be un-sequenced and are sent from pre-market through the end of trading. The rate is variable and will be adjusted as bandwidth allows. Once the same contract has been seen twice, the user can be certain the full loop has been observed.

In addition to the symbol mapping events available on the Multicast Top feed, a downloadable file with current mappings is available via the Cboe website.

### Gap Request Proxy and Message Retransmission

Requesting delivery of missed sequenced data is achieved by establishing a TCP connection to a Gap Request Proxy (GRP) port. This GRP port is specific to Multicast Top and is NOT shared with the Multicast PITCH GRP port. Participants who do not wish to request missed messages do not need to connect to a GRP port for any reason or listen to the multicast addresses reserved for message retransmission. Participants choosing to request missed data will need to connect to their assigned GRP port, log in, and request gap ranges as necessary. All gap requests will be responded to with a `Gap Response` message. A `Gap Response` Status code of `A` (Accepted) signals that the replayed messages will be delivered via the appropriate gap response multicast address. Any other `Gap Response` Status code will indicate the reason that the request cannot be serviced.

Gap requests are limited in message count, frequency, and age by the GRP. Gap requests will only be serviced if they are within a defined sequence range of the current multicast sequence number for the requested unit. Participants will receive a total daily allowance of gap requested messages. In addition, each participant is given renewable one second and one minute gap request limits.

If more than one gap request is received for a particular unit/sequence/count combination within a short timeframe, all requests will receive a successful `Gap Response` message from the GRP, but only a single replayed message will be sent on the gap response multicast address.

If overlapping gap requests are received within a short period of time, the gap server will only send the union of the sequence ranges across grouped gap requests. Participants will receive gap responses for their requested unit/sequence/count, but receivers should be prepared for the gap responses to be delivered via multicast in non-contiguous blocks.

Gap acknowledgements or rejects will be delivered to users for every gap request received by the GRP. Users should be prepared to see replayed multicast data before or after the receipt of the gap response acknowledgement from the GRP.

### Spin Servers

A Spin Server is available for each unit. The server allows participants to connect via TCP and receive a spin of the inside book and symbols with limited trading conditions on that unit. By using the spin, a participant can get the current book quickly in the middle of the trading session without worry of gap request limits. The Spin Server for each unit is assigned its own address and/or TCP port.

Upon successful login and periodically thereafter, a `Spin Image Available` message is sent which contains a sequence number indicating the most recent message applied to the book. Using a `Spin Request` message, a participant may request a spin for the orders up to a sequence number noted within one of the last ten `Spin Image Available` messages distributed. If the `Spin Request` submitted does not present a sequence number that matches one of the last ten `Spin Image Available` messages distributed, the spin will return orders up to the next closest sequence number reported through a `Spin Image Available` message that is greater than the sequence number requested.

In the case a participant sends a sequence number in a `Spin Request` that is higher than the sequence number reported by the most recent `Spin Image Available` message, the next spin image to be generated will be returned when it is available. If the requested sequence number is still higher at that time, an `O` (Out of Range) error will be generated.

A spin will consist of `Two Side Update`, `Single Side Update`, `TOP Trade`, `Trading Status` and `Time` messages. A `Time` message will be sent as the last message in a spin if the last `Time` message sent on a spin is older than the last received time from the internal market data producers.

While receiving the spin, the participant must buffer multicast messages received. If the `Spin Image Available` message sequence number is the participant’s reference point, multicast messages with larger sequence numbers should be buffered. If a non- `Spin Image Available` sequence number is the participant’s reference point which they send in their `Spin Request`, they should buffer from that point on, but note that within the spin they may receive sequence numbers beyond that point which they may disregard. When a `Spin Finished` message is received, the buffered messages must be applied to spun copy of the book to bring it current.

Customers can also use the Spin Server to request a spin of all `Symbol Mapping` messages by sending an `Instrument Definition Request`. The Spin Server can only process one spin at a time. Customers will need to wait for a `Spin Finished` or `Instrument Definition Finished` message before submitting another request.

Spin Messages shows an example flow of messages between a participant and Cboe’s Multicast Top feed and Spin Server.

## Protocol

Cboe users may use the Top protocol over multicast to receive real-time top of book quotations and execution information direct from Cboe.

### Message Format

The messages that make up the Top protocol are delivered using `Sequenced Unit Header` which handles sequencing and delivery integrity. All messages delivered via multicast as well as to/from the Gap Request Proxy (GRP) or Spin Server will use the `Sequenced Unit Header` for handling message integrity.

All UDP delivered events will be self-contained. Developers can assume that UDP delivered data will not cross frame boundaries and a single Ethernet frame will contain only one Sequenced Unit Header with associated data.

TCP/IP delivered events from the GRP may cross frames as the data will be delivered as a stream of data with the TCP/IP stack controlling Ethernet framing.

The Top data feed is comprised of a series of dynamic length sequenced messages. Each message begins with Length and Message Type fields. Cboe reserves the right to add message types and grow the length of any message without notice. Participants should develop their decoders to deal with unknown message types and messages that grow beyond the expected length. Messages will only be grown to add additional data to the end of a message.

### Data Types

The following field types are used within the Sequenced Unit Header, GRP messages, and Top.

- Alphanumeric fields are left justified ASCII fields and space padded on the right.
- Binary fields are unsigned and sized to `Length` bytes and ordered using Little Endian convention (least significant byte first).
- Signed Binary fields are signed and sized to `Length` bytes and ordered using Little Endian convention (least significant byte first).
- Binary Price fields are unsigned Little Endian encoded 8 byte binary fields with 4 implied decimal places ( `denominator`=10,000).
- Binary Short Price fields are unsigned Little Endian encoded 2 byte binary fields with 2 implied decimal places ( `denominator`=100).
- Binary Long Price fields are unsigned Little Endian encoded 8 byte binary fields with 4 implied decimal places ( `denominator`=10,000).
- Bit Field fields are fixed width fields with each bit representing a Boolean flag (the 0 bit is the lowest significant bit; the 7 bit is the highest significant bit).
- Multiplier fields are unsigned Little Endian encoded 4 byte binary fields with 1 implied decimal place ( `denominator`=10).
- Printable ASCII fields are left justified ASCII fields that are space padded on the right that may include ASCII values in the range of 0x20 - 0x7e.
- Binary Date fields are 4 byte unsigned Little Endian values where the base-10 representation is the YYYYMMDD representation of that date. For example, October 30, 2023 would be represented as 20,231,030 (20231030).
- Time Offset fields are 4 byte unsigned Little Endian values that represent the number of nanoseconds since the last `Time` message. These fields are populated to nanosecond precision. For example, a nano time of 1,737,580,407,123,456,789 ("Wednesday, January 22, 2025 9:13:27.123456789") would return value = 123456789.

### Message Framing

Top of book update messages will be combined into single UDP frame where possible to decrease message overhead and total bandwidth. The count of messages in a UDP frame will be communicated using the `Sequenced Unit Header`. Framing will be determined by the server for each unit and site. The content of the multicast across feeds (e.g. A/B) will be identical, but framing will not be consistent across feeds. Receiving processes that receive and arbitrate multiple feeds cannot use frame level arbitration to fill gaps.

### Sequenced Unit Header

The `Sequenced Unit Header` is used for all Multicast Top messages as well as messages to and from the Gap Request Proxy (GRP) and Spin Servers.

Sequenced and un-sequenced data may be delivered using the `Sequenced Unit Header`. Un-sequenced headers will have a 0 value for the Hdr Sequence field and potentially for the Hdr Unit field. All messages sent to and from the GRP and Spin Server are un-sequenced while multicast may contain both sequenced and un-sequenced messages.

Sequenced messages have implied sequences with the first message having the sequence number contained in the header. Each subsequent message will have an implied sequence one greater than the previous message up to a maximum of count messages. Multiple messages can follow a `Sequenced Unit Header`, but a combination of sequenced and un-sequenced messages cannot be sent within one header.

The sequence number for the first message in the next frame can be calculated by adding the Hdr Count field to the Hdr Sequence. This technique will work for sequenced messages and `Heartbeats`.

**Table 1. Sequenced Unit Header**

| Field | Offset | Length | Value/Type | Description |
|---|---|---|---|---|
| Hdr Length | 0 | 2 | Binary | Length of entire block of messages. Includes this header and Hdr Count messages to follow. |
| Hdr Count | 2 | 1 | Binary | Number of messages to follow this header. |
| Hdr Unit | 3 | 1 | Binary | Unit that applies to messages included in this header. |
| Hdr Sequence | 4 | 4 | Binary | Sequence of first message to follow this header. |
| `Total Length` = 8 bytes |  |  |  |  |

### Heartbeat Messages

The `Sequenced Unit Header` with a count field set to `0` will be used for `Heartbeat` messages. During trading hours `Heartbeat` messages will be sent from the GRP, Spin Server, and all multicast addresses if no data has been delivered within one second. `Heartbeat` messages never increment the sequence number for a unit, but can be used to detect gaps on the real-time multicast channels during low update rate periods.

`Heartbeats` on the real-time multicast addresses during trading hours will have an Hdr Sequence value equal to the sequence of the next sequenced message to be sent for the unit. `Heartbeats` on gap multicast addresses will always have the Hdr Sequence field set to 0. All `Heartbeat` messages sent to and from the GRP and Spin Server are considered un-sequenced and should have sequence and unit fields set to 0.

Outside of trading hours Cboe sends `Heartbeat` messages on all real-time and gap channels with a sequence of `0` to help users validate multicast connectivity. `Heartbeat` messages might not be sent outside of normal trading hours.

Cboe expects `Heartbeat` messages to be sent to the GRP on live connections no less than every 5 seconds. Failure to receive two consecutive `Heartbeat` messages will result in the GRP or Spin Server terminating the client connection.

## Top Messages

With the exception of `Time Reference` and `Time` messages, each Top message reflects the update of the top of book or execution of an order in the system.

### Time Reference Message Fields (C1 Only)

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 `Time` messages for the same unit will the use the last Midnight Reference until another `Time Reference` message is received for that unit. The `Time Reference` message includes the Trade Date, so most other sequenced messages will not include that information.

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

**Table 1. Time Reference**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0xB1 | `Time Reference` Message |
| Midnight Reference | 2 | 4 | Binary | Midnight Eastern time reference time for subsequent `Time` messages, expressed as number of whole seconds since the Epoch (midnight January 1, 1970 UTC). |
| Time | 6 | 4 | Binary | 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 Epoch Time (where available) or Midnight Reference in the `Time Reference` message. |
| Time Offset | 10 | 4 | Time Offset | Nanosecond offset from last unit timestamp. |
| Trade Date | 14 | 4 | Binary Date | Current Trade Date |
| `Total Length`=18 bytes |  |  |  |  |

### Time Message Fields

A `Time` message is immediately generated and sent when there is a Top event for a given clock second. If there is no Top event for a given clock second, then no `Time` message is sent for that second. All subsequent time offset fields for the same unit will use the new `Time` value as the base until another `Time` message is received for the same unit. The Time field is the number of seconds relative to midnight Eastern Time, which is provided in the `Time Reference` message. On C1 only, the `Time` message will also include the Epoch Time field, which is the current time represented as the number of whole seconds since the Epoch (midnight January 1, 1970).

For C1 only, a given trading day may span multiple calendar days. C1 options market data recipients must prepare for a crossing of the midnight ET boundary. At such time, a new `Time Reference` message will be sent and the Time field in subsequent `Time` messages will reset to reflect the number of seconds from the most recent midnight ET.

**Table 1. Time**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0x20 | `Time` Message |
| Time | 2 | 4 | Binary | 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 Epoch Time (where available) or Midnight Reference in the `Time Reference` message. |
| Epoch Time | 6 | 4 | Binary | C1 Options Only Number of whole seconds since the Epoch (midnight January 1, 1970 UTC). |
| `Total Length` = 6 bytes, 10 bytes on C1 Options Only |  |  |  |  |

### Unit Clear Message Fields

The `Unit Clear` message instructs feed recipients to clear all market snapshots for the book in the unit specified in the `Sequenced Unit Header`. 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. Unit Clear**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0x97 | `Unit Clear` Message |
| Time Offset | 2 | 4 | Time Offset | Nanosecond offset from last unit timestamp. |
| `Total Length`=6 bytes |  |  |  |  |

### Symbol Mapping Message Fields

The `Symbol Mapping` message are sent as an unsequenced message. One unsequenced `Symbol Mapping` message for each Symbol are sent in a continuous loop as bandwidth allows.

Members who consume the 5G-Shaped Multicast PITCH feeds will be able to receive the full list of symbols in approximately 5 minutes, and will allow for optimal distribution in situations where market data is susceptible to throttling as a result of high message burst rates. All 1 Gigabit-Shaped ( `1G-Shaped`) feeds will continue to complete the full loop of Symbol Mapping messages in approximately 30 minutes.

**Table 1. Symbol Mapping**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0x2E | `Symbol Mapping` Message |
| Feed Symbol | 2 | 6 | Printable ASCII | Symbol right padded with spaces. |
| OSI Symbol | 8 | 21 | Printable ASCII | OSI Symbol |
| Symbol Condition | 29 | 1 | Alphanumeric | `N` = Normal `C` = Closing Only |
| Underlying | 30 | 8 | Alphanumeric | Symbol of underlying equity right padded with spaces. |
| `Total Length` = 38 bytes |  |  |  |  |

### Market Update Messages

Market Update messages reflect real-time events to the current state of the market. These messages are always sequenced and may be recovered via the Gap Request Proxy (GRP).

#### Single Side Update

`Single Side Update` messages provide an updated price and size for a single side of a Symbol. The side is denoted by the Side field. One `Single Side Update` message may reflect one or more updates to the inside book that were processed at the same time, but will only be done so in a way that can be arbitrated between A/B feeds.

`Single Side Update` messages come in two variants: `Single Side Update Expanded (Short`) and `Single Side Update Expanded (Long)`. The `Single Side Update Expanded(Short)` message is used whenever possible, but the `Single Side Update Expanded(Long)` message is used when the Price cannot be represented by a Binary Short Price or the Quantity cannot be represented by an unsigned 16-bit integer.

If any All or None size exists on both sides at a price level at or better than the firm quote, it will be represented by a separate message.

For (C1 Only), if any customer firm size exists, the best customer firm quote will be represented as a separate message.

##### Single Side Update Expanded (Short) Message Fields

**Table 1. Single Side Update Expanded (Short)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0xD4 | `Single Side Update Expanded (Short)` Message |
| Time Offset | 2 | 4 | Time Offset | Nanosecond offset from last unit timestamp. |
| Symbol | 6 | 6 | Printable ASCII | Symbol right padded with spaces. |
| Side | 12 | 1 | Alphanumeric | `B` = Bid Side `S` = Ask Side |
| Bit Fields | 13 | 1 | Bit Field | Bits 0-2 - Reserved Bit 3 - AON `0` = Price level is a firm quote `1` = Price Level is AON (All or None) Bit 4 - Customer (C1 Only) `0` = Not customer specific. `1` = Price Level is specifically for firm customer quotes. Bits 5-7 - Reserved |
| Price | 14 | 2 | Binary Short Price | Price |
| Quantity | 16 | 2 | Binary | Total number of contracts on the inside book (customer and non-customer). If Customer bit is set, this will be zero. |
| Customer Quantity | 18 | 2 | Binary | Number of customer contracts on the inside book. A zero value denotes that there are no customer contracts at the inside price. If Customer bit is set, this will be the number of customer contracts on the inside book considering only customer firm quotes. Will always be zero for C2. |
| `Total Length`=20 bytes |  |  |  |  |

##### Single Side Update Expanded (Long) Message Fields

**Table 1. Single Side Update Expanded (Long)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0xD5 | `Single Side Update Expanded(Long)` Message |
| Time Offset | 2 | 4 | Time Offset | Nanosecond offset from last unit timestamp. |
| Symbol | 6 | 6 | Printable ASCII | Symbol right padded with spaces. |
| Side | 12 | 1 | Alphanumeric | `B` = Bid Side `S` = Ask Side |
| Bit Fields | 13 | 1 | Bit Field | Bits 0-2 - Reserved Bit 3 - AON `0` = Price level is a firm quote `1` = Price Level is AON (All or None) Bit 4 - Customer (C1 Only) `0` = Not customer specific. `1` = Price Level is specifically for firm customer quotes. Bits 5-7 - Reserved |
| Price | 14 | 8 | Binary Long Price | Price |
| Quantity | 22 | 4 | Binary | Total number of contracts on the inside book (customer and non-customer). If Customer bit is set, this will be zero. |
| Customer Quantity | 26 | 4 | Binary | Number of customer contracts on the inside book. A zero value denotes that there are no customer contracts at the inside price. If Customer bit is set, this will be the number of customer contracts on the inside book considering only customer firm quotes. Will always be zero for C2. |
| `Total Length`=30 bytes |  |  |  |  |

#### Two Side Update Message

`Two Side Update` messages provide an updated price and size for both sides of a Symbol. One `Two Side Update` message may reflect one or more updates to the inside book that were processed at the same time, but will only be done so in a way that can be arbitrated between A/B feeds.

`Two Side Update` messages come in two variants: `Two Side Update Expanded (Short` and `Two Side Update Expanded (Long)`. The `Two Side Update Expanded(Short)` message is used whenever possible, but the `Two Side Update Expanded (Long)` message is used when the Price cannot be represented by a Binary Short Price or the Quantity cannot be represented by an unsigned 16-bit integer.

If any All or None size exists on both sides at a price level at or better than the firm quote, it will be represented by a separate message.

If any customer firm size exists, the best customer firm quote will be represented as a separate message. (C1 Only)

##### Two Side Update Expanded (Short) Message Fields

**Table 1. Two Side Update Expanded (Short)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0xD6 | `Two Side Update Expanded (Short)` Message |
| Time Offset | 2 | 4 | Time Offset | Nanosecond offset from last unit timestamp. |
| Symbol | 6 | 6 | Printable ASCII | Symbol right padded with spaces. |
| Bit Fields | 12 | 1 | Bit Field | Bits 0-2 - Reserved Bit 3 - AON `0` = Price level is a firm quote `1` = Price Level is AON (All or None) Bit 4 - Customer (C1 Only) `0` = Not customer specific. `1` = Price Level is specifically for firm customer quotes. Bits 5-7 - Reserved |
| Bid Price | 13 | 2 | Binary Short Price | Bid Price |
| Bid Quantity | 15 | 2 | Binary | Total number of contracts on the inside bid (customer and non-customer). A zero value indicates there is no bid. If Customer bit is set, this will be zero. |
| Bid Customer Quantity | 17 | 2 | Binary | Number of customer contracts on the inside bid. A zero value denotes that there are no customer contracts at the inside price. If Customer bit is set, this will be the number of customer contracts on the inside bid considering only customer firm quotes. Will always be zero for C2. |
| Ask Price | 19 | 2 | Binary Short Price | Ask Price |
| Ask Quantity | 21 | 2 | Binary | Total number of contracts on the inside ask (customer and non-customer). A zero value indicates there is no ask. If Customer bit is set, this will be zero. |
| Ask Customer Quantity | 23 | 2 | Binary | Number of customer contracts on the inside ask. A zero value denotes that there are no customer contracts at the inside price. If Customer bit is set, this will be the number of customer contracts on the inside ask considering only customer firm quotes. Will always be zero for C2. |
| `Total Length`=25 bytes |  |  |  |  |

##### Two Side Update Expanded (Long) Message Fields

**Table 1. Two Side Update Expanded (Long)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0xD7 | `Two Side Update Expanded (Long)` Message |
| Time Offset | 2 | 4 | Time Offset | Nanosecond offset from last unit timestamp. |
| Symbol | 6 | 6 | Printable ASCII | Symbol right padded with spaces. |
| Bit Fields | 12 | 1 | Bit Field | Bits 0-2 - Reserved Bit 3 - AON `0` = Price level is a firm quote `1` = Price Level is AON (All or None) Bit 4 - Customer (C1 Only) `0` = Not customer specific. `1` = Price Level is specifically for firm customer quotes. Bits 5-7 - Reserved |
| Bid Price | 13 | 8 | Binary Long Price | Bid Price |
| Bid Quantity | 21 | 4 | Binary | Total number of contracts on the inside bid (customer and non-customer). A zero value indicates there is no bid. If Customer bit is set, this will be zero. |
| Bid Customer Quantity | 25 | 4 | Binary | Number of customer contracts on the inside bid. A zero value denotes that there are no customer contracts at the inside price. If Customer bit is set, this will be the number of customer contracts on the inside bid considering only customer firm quotes. Will always be zero for C2. |
| Ask Price | 29 | 8 | Binary Long Price | Ask Price |
| Ask Quantity | 37 | 4 | Binary | Total number of contracts on the inside ask (customer and non-customer). A zero value indicates there is no ask. If Customer bit is set, this will be zero. |
| Ask Customer Quantity | 41 | 4 | Binary | Number of customer contracts on the inside ask. A zero value denotes that there are no customer contracts at the inside price. If Customer bit is set, this will be the number of customer contracts on the inside ask considering only customer firm quotes. Will always be zero for C2. |
| `Total Length`=45 bytes |  |  |  |  |

#### Top Trade Message

The `Top Trade` message provides information about executions of orders on the book. `Top Trade` messages are necessary to calculate execution-based data. `Top Trade` messages do not alter the book. One or more `Single Side Update Expanded` or `Two Side Update Expanded` messages will follow a `Top Trade` message to reflect the updated book (for example, an aggressive order may take out one or more price levels and establish a new level on the opposite side).

Any order may be executed in parts. A complete view of all executions can be built from all `Top Trade` messages.

The `Top Trade` message sends the trade price, trade quantity, execution id, and trade condition of a trade as well as the cumulative volume for the trading session. A `Top Trade` message will be sent for each execution, but not every `Top Trade` message indicates a trade. A `Top Trade` message can also be sent when an auction executes against a non-displayed order, such as a contra response. The Trade Condition value of `X` (Trade Break) is sent whenever an execution is broken. Trade breaks will contain the Symbol, Quantity, Price, and Execution Id of the original trade. The Total Volume field will be reduced by the number of shares reported in the Quantity field.

**Table 1. Top Trade**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0xB8 | `Top Trade` Message |
| Time Offset | 2 | 4 | Time Offset | Nanosecond offset from last unit timestamp. |
| Symbol | 6 | 6 | Printable ASCII | Symbol right padded with spaces. |
| Quantity | 12 | 4 | Binary | Incremental number of contracts executed or corrected (see Trade Condition). |
| Price | 16 | 8 | Binary Long Price | The execution price of the order. |
| Execution Id | 24 | 8 | Binary | Cboe generated day-unique execution identifier of this trade. Execution Id is also referenced in the `Trade Break` message. |
| Total Volume | 32 | 4 | Binary | Total number of contracts traded on the current trading session (may decrease if the Trade Condition field indicates a canceled trade). |
| Trade Condition | 36 | 1 | Alphanumeric | SeeOptions Trade Condition Codes section for details. |
| `Total Length`=37 bytes |  |  |  |  |

### Options Auction Update Message Fields

`Options Auction Update` messages are used to disseminate price and size information and Composite Market bid and offer prices during Opening and Re-Opening (halt) auctions. The `Auction Update` messages are sent every five seconds during an opening period. Refer to the Cboe Titanium U.S. Options Opening Process for more information.

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

**Table 1. Options Auction Update**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0xD1 | `Options Auction Update` Message |
| Time Offset | 2 | 4 | Time Offset | Nanosecond offset from last unit timestamp. |
| Symbol | 6 | 8 | Printable ASCII | Symbol right padded with spaces. |
| Auction Type | 14 | 1 | Alphanumeric | `G` = GTH Opening (C1 Only) `O` = RTH Opening (C1 Only) `H` = Halt Re-Opening `V` = Volatility Opening |
| Reference Price | 15 | 8 | Binary Long Price | Collared VMIM price computed on the queuing book only. |
| Buy Contracts | 23 | 4 | Binary | Cumulative Buy contracts at the Reference Price and above. |
| Sell Contracts | 27 | 4 | Binary | Cumulative Sell contracts at the Reference Price and below. |
| Indicative Price | 31 | 8 | Binary Long Price | Collared VMIM price computed on the combined queueing book and the continuous book. Equal to Reference Price for options that do not have a GTH trading session. |
| Auction Only Price | 39 | 8 | Binary Long Price | Uncollared VMIM price computed on the queuing book only. |
| Opening Condition | 47 | 1 | Alphanumeric | `O` = Would open `Q` = Need quote to open `B` = Need more buyers (C1 Only) `S` = Need more sellers (C1 Only) `C` = Crossed Composite Market |
| Composite Market Bid Price | 48 | 8 | Binary Long Price | Bid Price of the prevailing Composite Market |
| Composite Market Offer Price | 56 | 8 | Binary Long Price | Offer Price of the prevailing Composite Market. |
| `Total Length`=64 bytes |  |  |  |  |

### Auction Summary Message Fields

`Auction Summary` messages are used to disseminate the results of an auction. An Opening or Re-Opening `Auction Summary` message for each symbol is sent at the conclusion of its Opening or Re-Opening auction and represents Cboe opening price.

The `Auction Summary` message has the following format:

**Table 1. Auction Summary**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0x96 | `Auction Summary` Message |
| Time Offset | 2 | 4 | Time Offset | Nanosecond offset from last unit timestamp. |
| Symbol ID | 6 | 8 | Printable ASCII | Symbol right padded with spaces. |
| Auction Type | 14 | 1 | Alphanumeric | `G` = GTH Opening (C1 Only) `O` = RTH Opening (C1 Only) `H` = Halt Re-Opening `V` = Volatility Opening |
| Price | 15 | 8 | Binary Long Price | Auction price. |
| Quantity | 23 | 4 | Binary | Cumulative number of contracts executed during the auction. |
| `Total Length`=27 bytes |  |  |  |  |

### Trading Status Message Fields

The `Trading Status` message is used to indicate the current trading status of an options contract. A `Trading Status` message will be sent whenever a security’s trading status changes. The following summarizes the Trading Status values in the Cboe system:

- `H`=Halt state.
- `L`=Curb Trading. Sent when symbol is open for trading at or after 4:15 p.m. ET. (C1 only).
- `Q`=Queuing. Sent starting at 7:30 a.m. ET once orders can be accepted for queuing in preparation for the RTH open.
- `T`=RTH Trading. Sent when symbol is open for trading, at or after 9:30 a.m. ET.

Cboe will send a Trading Status of `L` as Curb-eligible Products transition from RTH trading to Curb trading.

A `Trading Status` message will also be sent:

- For a Regulatory Halt `Q`ueuing period in any symbol where the underlying has experienced a Regulatory Halt as well as the `T`rading resumption for the same instrument.

The Trading Status field will be used to represent the status of the RTH and Curb sessions. The GTH Trading Status field will be used to represent the status of series that trade during the GTH session.

**Table 1. Trading Status**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field |
| Message Type | 1 | 1 | 0x31 | `Trading Status` message |
| Time Offset | 2 | 4 | Time Offset | Nanosecond offset from last unit timestamp |
| Symbol | 6 | 6 | Printable ASCII | Symbol right padded with spaces. |
| Reserved | 12 | 2 | Reserved | Reserved |
| Trading Status | 14 | 1 | Alpha | `H` = Halted `L` = Curb Trading (C1 Only) `Q` = Quote-Only `R` = Opening Rotation `T` = RTH Trading |
| Reserved | 15 | 1 | Reserved | Reserved |
| GTH Trading Status (C1 Only) | 16 | 1 | Alpha | `H` = Halted `Q` = Quote-Only `R` = Opening Rotation `T` = Trading |
| Reserved2 | 17 | 1 | Alpha | Reserved |
| `Total Length`=18 bytes |  |  |  |  |

### Width Update Message Fields (C1, C2, and EDGX Only)

The `Width Update` message is used to communicate opening quote width multiplier. This message will be sent in the event that the exchange decides to change the quote width multiplier on a per underlying basis. For complete details on the opening collars, see the Cboe Titanium U.S. Options Opening Process.

**Table 1. Width Update**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0xD2 | `Width Update` Message |
| Time Offset | 2 | 4 | Time Offset | Nanosecond offset from last unit timestamp. |
| Underlying | 6 | 8 | Printable ASCII | Underlying right padded with spaces. |
| Width Type | 14 | 1 | Alphanumeric | `R` = Regular `V` = Volatility |
| Multiplier | 15 | 4 | Multiplier | Width multiplier |
| `Total Length`=19 bytes |  |  |  |  |

### End of Session Message Fields

The `End of Session` message is sent for each unit when the unit shuts down. No more sequenced messages will be delivered for this unit, but heartbeats from the unit may be received.

**Table 1. End of Session**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0x2D | `End of Session` Message |
| Timestamp | 2 | 4 | Binary | Nanosecond offset from last unit timestamp. |
| `Total Length` = 6 bytes |  |  |  |  |

### SOQ Strike Range Update Message Fields (C1 Only)

The `SOQ Strike Range Update` message is only available on the C1 Exchange. This message disseminates the minimum and maximum strike prices of the price range used to calculate the Special Opening Quote ( `SOQ`) on a Volatility Settlement date. In the event that multiple distinct SOQ calculations occur on the same day, the applicable SOQ is differentiated by the SOQ Identifier field, which is set to the CSMi symbol on which the final settlement SOQ value is disseminated.

The `SOQ Strike Range Update` message has the following format:

**Table 1. SOQ Strike Range Update**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field |
| Message Type | 1 | 1 | 0x9D | `SOQ Strike Range Update` Message |
| Time Offset | 2 | 4 | Time Offset | Nanosecond offset from last unit timestamp |
| SOQ Identifier | 6 | 20 | Printable ASCII | Dissemination symbol of the final SOQ right padded with spaces. |
| Lower Strike Price | 26 | 8 | Binary Long Price | SOQ lower strike price |
| Upper Strike Price | 34 | 8 | Binary Long Price | SOQ upper strike price |
| `Total Length`=42 bytes |  |  |  |  |

### Constituent Symbol Mapping Message Fields (C1 Only)

The `Constituent Symbol Mapping` message is only available on the C1 Exchange. This message is used to communicate which options series (if any) are Constituent Series in a Volatility Settlement Special Opening Quote ( `SOQ`). The message is identical to the `Symbol Mapping` message with the addition of the SOQ Identifier field, which is set to the CSMi symbol on which the final settlement SOQ value is disseminated. The `Constituent Symbol Mapping` message is sent as an unsequenced message with one message sent for each Constituent Series in a continuous loop as bandwidth allows.

The `Constituent Symbol Mapping` message has the following format:

**Table 1. Constituent Symbol Mapping**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field |
| Message Type | 1 | 1 | 0x9E | `Constituent Symbol Mapping` Message |
| Feed Symbol | 2 | 6 | Printable ASCII | Symbol right padded with spaces |
| OSI Symbol | 8 | 21 | Printable ASCII | OSI Symbol |
| Symbol Condition | 29 | 1 | Alphanumeric | `N` = Normal `C` = Closing Only |
| Underlying | 30 | 8 | Alphanumeric | Symbol of underlying right padded with spaces |
| SOQ Identifier | 38 | 20 | Printable ASCII | Dissemination symbol of the final SOQ right padded with spaces. |
| `Total Length` = 58 bytes |  |  |  |  |

## Gap Request Proxy Messages

The following messages are used for initializing a TCP/IP connection to the Gap Request Proxy (GRP) and to request message retransmissions. Participants only need to implement the following messages if gap requests will be made. Each of the following message types must be wrapped by an unsequenced unit header as described in Sequenced Unit Header. The following messages will not be delivered using multicast.

### Login Message Fields

The `Login` message is the first message sent to the GRP by a user’s process after the connection to the GRP is established. Failure to login before sending any other message type will result in the connection being dropped by the GRP.

**Table 1. Login**

| Field | Offset | Length | Value/Type | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0x01 | `Login` Message |
| SessionSubId | 2 | 4 | Alphanumeric | SessionSubId supplied by Cboe. |
| Username | 6 | 4 | Alphanumeric | Username supplied by Cboe. |
| Filler | 10 | 2 | Alphanumeric | (space filled) |
| Password | 12 | 10 | Alphanumeric | Password supplied by Cboe. |
| `Total Length` = 22 bytes |  |  |  |  |

### Login Response Message Fields

The `Login Response` message is sent by the GRP to a user’s process in response to a `Login` message. The status field is used to reflect an accepted login or the reason the session was not accepted. If login fails, the connection will be dropped after the `Login Response` message is sent.

**Table 1. Login Response**

| Field | Offset | Length | Value/Type | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0x02 | `Login Response` Message |
| Status | 2 | 1 | Alphanumeric | Accepted or reason for reject. |
| `Total Length` = 3 bytes |  |  |  |  |
| Login Response - Status Codes |  |  |  |  |
| ‘A’ | Login Accepted |  |  |  |
| ‘N’ | Not authorized (Invalid Username/Password) |  |  |  |
| ‘B’ | Session in use |  |  |  |
| ‘S’ | Invalid Session |  |  |  |

### Gap Request Message Fields

The `Gap Request` message is used by a user’s process to request retransmission of a sequenced message (or messages) by one of Cboe’s gap servers.

**Table 1. Gap Request**

| Field | Offset | Length | Value/Type | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0x03 | `Gap Request` Message |
| Unit | 2 | 1 | Binary | Unit that the gap is requested for. |
| Sequence | 3 | 4 | Binary | Sequence of first message (lowest sequence in range). |
| Count | 7 | 2 | Binary | Count of messages requested. |
| `Total Length` = 9 bytes |  |  |  |  |

### Gap Response Message Fields

The `Gap Response` message is sent by the GRP in response to a `Gap Request` message. The Unit and Sequence fields will match the values supplied in the `Gap Request` message. A `Gap Response` message, with a Status of Accepted or reason for failure, will be sent for each `Gap Request` message received by the GRP.

**Table 1. Gap Response**

| Field | Offset | Length | Value/Type | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0x04 | `Gap Response` Message |
| Unit | 2 | 1 | Binary | Unit the gap was requested for. |
| Sequence | 3 | 4 | Binary | Sequence of first message in request. |
| Count | 7 | 2 | Binary | Count of messages requested. |
| Status | 9 | 1 | Alphanumeric | Accepted or reason for reject*. |
| `Total Length` = 10 bytes |  |  |  |  |
| Gap Response - Status Codes |  |  |  |  |
| ‘A’ | Accepted |  |  |  |
| ‘O’ | Out of range (ahead of sequence or too far behind) |  |  |  |
| ‘D’ | Daily gap request allocation exhausted |  |  |  |
| ‘M’ | Minute gap request allocation exhausted |  |  |  |
| ‘S’ | Second gap request allocation exhausted |  |  |  |
| ‘C’ | Count request limit for one gap request exceeded |  |  |  |
| ‘I’ | Invalid Unit specified in request |  |  |  |
| ‘U’ | Unit is currently unavailable |  |  |  |

* - All non-’A’ status codes should be interpreted as a reject.

## Spin Messages

Each of the following message types must be wrapped by an unsequenced unit header as described in Sequenced Unit Header.

### Login Message

The `Login` message is the first message sent to the Spin Server by a user’s process after the connection to the Spin Server is established. Failure to login before sending any other message type will result in the connection being dropped by the Spin Server.

The format of the `Login` message for the Spin Server is identical to that of the GRP described in Login Message Fields.

### Login Response Message

The `Login Response` message is sent by the Spin Server to a user’s process in response to a `Login` message. The status field is used to reflect an accepted login or the reason the session was not accepted. If login fails, the connection will be dropped after the `Login Response` message is sent.

The format of the `Login Response` message for the Spin Server is identical to that of the GRP described in Login Response Message Fields.

### Spin Image Available Message Fields

The `Spin Image Available` message is sent once per second and indicates through what sequence number a spin is available.

**Table 1. Spin Image Available**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0x80 | `Spin Image Available` Message |
| Sequence | 2 | 4 | Binary | Spin is available which is current through this sequence number. |
| `Total Length` = 6 bytes |  |  |  |  |

### Spin Request Message Fields

The `Spin Request` message is used by a user’s process to request transmission of a spin of the unit’s order book. Refer to Spin Servers for more complete details regarding Sequence specification as well as buffering requirements.

**Table 1. Spin Request**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0x81 | `Spin Request` Message |
| Sequence | 2 | 4 | Binary | Sequence number from a `Spin Image Available` message received by the participant. |
| `Total Length` = 6 bytes |  |  |  |  |

### Spin Response Message Fields

The `Spin Response` message is sent in response to a user’s `Spin Request` message indicating whether a spin will be sent.

**Table 1. Spin Response**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0x82 | `Spin Response` Message |
| Sequence | 2 | 4 | Binary | Sequence number from a `Spin Image Available` message received by the participant. |
| Order Count | 6 | 4 | Binary | Always zero. |
| Status | 10 | 1 | Alphanumeric | Accepted or reason for reject*. |
| `Total Length` = 11 bytes |  |  |  |  |
| Spin Response - Status Codes |  |  |  |  |
| ‘A’ | Accepted |  |  |  |
| ‘O’ | Out of Range (Sequence requested is greater than Sequence available by the next spin) |  |  |  |
| ‘S’ | Spin already in progress (only one spin can be running at a time). |  |  |  |

* - All non-’A’ status codes should be interpreted as a reject.

### Spin Finished Message Fields

The `Spin Finished` message is sent to indicate that all messages for the spin requested have been sent. A `Spin Finished` message is only sent if a `Spin Request` was not rejected. Upon receipt of a `Spin Finished` message, any buffered multicast messages should be applied to the participant’s copy of the book to make it current.

**Table 1. Spin Finished**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field. |
| Message Type | 1 | 1 | 0x83 | `Spin Finished` Message |
| Sequence | 2 | 4 | Binary | Sequence number from the `Spin Request` message. |
| `Total Length` = 6 bytes |  |  |  |  |

### Instrument Definition Request Message Fields

The `Instrument Definition Request` message is used by a user’s process to request transmission of this unit’s Symbol Mappings. See Spin Servers more details regarding Sequence specification and buffering requirements.

**Table 1. Instrument Definition Request**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field |
| Message Type | 1 | 1 | 0x84 | `Instrument Definition Request` Message |
| Sequence | 2 | 4 | Binary | Must be 0. Only the current Symbol Mappings are available. |
| `Total Length` = 6 bytes |  |  |  |  |

### Instrument Definition Response Message Fields

The `Instrument Definition Response` message is sent in response to a user’s `Instrument Definition Request` message indicating whether a spin will be sent.

| Instrument Definition Response |  |  |  |  |  |
|---|---|---|---|---|---|
| Field Name | Offset | Length | Type/(Value) | Description |  |
| Length | 0 | 1 | Binary | Length of this message including this field |  |
| Message Type | 1 | 1 | 0x85 | `Instrument Definition Response` Message |  |
| Sequence | 2 | 4 | Binary | Will always be 0. |  |
| Instrument Count | 6 | 4 | Binary | Number of `Symbol Mapping` messages which will be contained in this spin. |  |
| Status | 10 | 1 | Alphanumeric | Accepted or reason for reject |  |
| `Total Length` = 11 bytes |  |  |  |  |  |
| Instrument Definition Response - Status Codes |  |  |  |  |  |
| ‘A’ | Accepted |  |  |  |  |
| ‘O’ | Out of Range (Sequence must be 0) |  |  |  |  |
| ‘S’ | Spin already in progress (only one spin can be running at a time) |  |  |  |  |

* - All non-’A’ status codes should be interpreted as a reject.

### Instrument Definition Finished Message Fields

The `Instrument Definition Finished` message is sent to indicate that all `Symbol Mapping` messages for this unit have been sent. An `Instrument Definition Finished` message is only sent if an `Instrument Definition Request` was not rejected.

**Table 1. Instrument Definition Finished**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Length | 0 | 1 | Binary | Length of this message including this field |
| Message Type | 1 | 1 | 0x86 | `Instrument Definition Finished` Message |
| `Total Length` = 2 bytes |  |  |  |  |

### Spin Server Usage Example

The following diagram (see next page) shows the exchange of messages over time between a participant and Cboe’s Multicast Top feed and Spin Server.

At time 1, the participant has no state of the book and desires to become current. The participant caches the received Multicast Top messages (sequences 310172 and 310173) for later use. Since the participant has no book, they cannot yet be applied.

At time 5, the participant has successfully logged into the Spin Server and has cached another message, sequence 310174.

At time 7, the participant receives a `Spin Image Available` message which indicates that the spin server is capable of giving them a spin of all symbols as of sequence 310169. The participant does not have all messages cached after 310169 (they are missing 310170 and 310171), so this spin is not useful to the participant.

At time 10, the participant receives a `Spin Image Available` message which is useful since it would be a spin of all orders up to and including sequence 310175 and the participant has all messages after 310175 cached.

At time 11, the participant sends a `Spin Request` for all messages up to and including 310175 and continues to cache Multicast Top messages received.

At time 14, the Spin Server acknowledges the `Spin Request` and indicates that three symbols will be sent.

At time 24, the spin server indicates that it has finished sending all open orders. The participant must then apply the cached messages from sequence number 310176 through current.

Note: Spin Servers are available for each unit. Participants may need to employ multiple Spin Servers depending upon their architecture.

_(Figure)_

## Message Types

### Gap Request Proxy Messages

```
    
    0x01        Login
    0x02        Login Response
    0x03        Gap Request
    0x04        Gap Response
```

### Spin Server Messages

```
    
    0x01        Login
    0x02        Login Response
    0x80        Spin Image Available
    0x81        Spin Request
    0x82        Spin Response
    0x83        Spin Finished
    0x84        Instrument Definition Request
    0x85        Instrument Definition Response
    0x86        Instrument Definition Finished
```

### Top Messages

```
    
    0xB1        Time Reference (C1 Only)
    0x20        Time
    0x97        Unit Clear
    0x2E        Symbol Mapping
    0xD4        Single Side Update Expanded (Short)
    0xD5        Single Side Update Expanded (Long)
    0xD6        Two Side Update Expanded (Short)
    0xD7        Two Side Update Expanded (Long)
    0xB8        Top Trade
    0xD1        Options Auction Update
    0x96        Auction Summary
    0x31        Trading Status
    0xD2        Width Update
    0x2D        End of Session
    0x9D        SOQ Strike Range Update
    0x9E        Constituent Symbol Mapping
```

## Example Messages

Each of the following message types must be wrapped by a sequenced or un-sequenced unit header as described in Sequenced Unit Header. Note that in the following examples, each byte is represented by two hexadecimal digits.

### Login Message

**Table 1. Login Message**

| Length | 16 | 22 bytes |
|---|---|---|
| Type | 01 | Login |
| SessionSubId | 30 30 30 31 | "0001" |
| Username | 46 49 52 4D | "FIRM" |
| Filler | 20 20 | " " |
| Password | 41 42 43 44 30 30 20 20 20 20 | "ABCD00" |

### Login Response Message

**Table 1. Login Response Message**

| Length | 03 | 3 bytes |
|---|---|---|
| Type | 02 | Login Response |
| Status | 41 | Login accepted |

### Gap Request Message

**Table 1. Gap Request Message**

| Length | 09 | 9 bytes |
|---|---|---|
| Type | 03 | Gap Request |
| Unit | 01 | Unit 1 |
| Sequence | 3B 10 00 00 | First message: 4155 |
| Count | 32 00 | 50 messages |

### Gap Response Message

**Table 1. Gap Response Message**

| Length | 10 | 10 bytes |
|---|---|---|
| Type | 04 | Gap Response |
| Unit | 01 | Unit 1 |
| Sequence | 3B 10 00 00 | First message: 4155 |
| Count | 32 00 | 50 messages |
| Status | 41 | Accepted |

### Spin Image Available Message

**Table 1. Spin Image Available Message**

| Length | 06 | 6 bytes |
|---|---|---|
| Type | 80 | Spin Image Available |
| Sequence | 3B 10 00 00 | Sequence: 4155 |

### Spin Request Message

**Table 1. Spin Request Message**

| Length | 06 | 6 bytes |
|---|---|---|
| Type | 81 | Spin Request |
| Sequence | 3B 10 00 00 | Sequence: 4155 |

### Spin Response Message

**Table 1. Spin Response Message**

| Length | 0B | 11 bytes |
|---|---|---|
| Type | 82 | Spin Request |
| Sequence | 3B 10 00 00 | Sequence: 4155 |
| Order Count | 00 00 00 00 | Always zero |
| Status | 41 | Accepted |

### Spin Finished Message

**Table 1. Spin Finished Message**

| Length | 06 | 6 bytes |
|---|---|---|
| Type | 83 | Spin Finished |
| Sequence | 3B 10 00 00 | Sequence: 4155 |

### Instrument Definition Request

**Table 1. Instrument Definition Request**

| Length | 06 | 6 bytes |
|---|---|---|
| Type | 84 | Instrument Definition Request |
| Sequence | 00 00 00 00 | Sequence: 0 |

### Instrument Definition Response

**Table 1. Instrument Definition Response**

| Length | 0B | 11 bytes |
|---|---|---|
| Type | 85 | Instrument Definition Response |
| Sequence | 00 00 00 00 | Sequence: 0 |
| Instrument Count | B8 0B 00 00 | 3,000 Instruments |
| Status | 41 | Accepted |

### Instrument Definition Finished

**Table 1. Instrument Definition Finished**

| Length | 02 | 2 bytes |
|---|---|---|
| Type | 86 | Instrument Definition Finished |

### Time Reference (C1 Only)

**Table 1. Time Reference (C1 Only)**

| Length | 12 | 18 bytes |
|---|---|---|
| Type | B1 | Time Reference |
| Midnight Reference | D0 8B 34 60 | 2021-02-23 00:00:00 Eastern (1614056400 seconds since the Epoch) |
| Time | 00 E1 00 00 | 16:00:00 |
| Time Offset | 00 00 00 00 | Exactly 16:00:00 |
| Trade Date | 2F 62 34 01 | 20210223 February 23, 2021 |

### Time Message

**Table 1. Time Message**

| Length | 06 | 6 bytes |
|---|---|---|
| Type | 20 | Time |
| Time | 98 85 00 00 | 34,200 seconds = 09:30 AM Eastern |

### Time Message (C1 Only)

**Table 1. Time Message (C1 Only)**

| Length | 0A | 10 bytes |
|---|---|---|
| Type | 20 | Time |
| Time | 98 85 00 00 | 34,200 seconds = 09:30 AM Eastern |
| Epoch Time (C1 Only) | 68 11 35 60 | 1,614,090,600 seconds since the Epoch |

### Unit Clear

**Table 1. Unit Clear**

| Length | 06 | 6 bytes |
|---|---|---|
| Type | 97 | Unit Clear |
| Time Offset | 18 D2 06 00 | 447,000 ns since last Time Message |

### Single Side Update Expanded (Short)

**Table 1. Single Side Update Expanded (Short)**

| Length | 14 | 20 bytes |
|---|---|---|
| Type | D4 | Single Side Update Expanded (Short) |
| Time Offset | 30 FA D3 29 | 701,758,000 ns since last Time Message |
| Symbol | 30 31 32 33 34 35 | 012345 |
| Side | 42 | B (Buy) |
| Bitfields | 00 | Firm Quote |
| Price | 7B 00 | $1.23 |
| Quantity | 64 00 | 100 Contracts |
| Customer Quantity | 64 00 | 100 Contracts |

### Single Side Update Expanded (Long)

**Table 1. Single Side Update Expanded (Long)**

| Length | 1E | 30 bytes |
|---|---|---|
| Type | D5 | Single Side Update Expanded (Long) |
| Time Offset | 30 FA D3 29 | 701,758,000 ns since last Time Message |
| Symbol | 30 31 32 33 34 35 | 012345 |
| Side | 42 | B (Buy) |
| Bitfields | 00 | Firm Quote |
| Price | E0 F4 8F 04 00 00 00 00 | $7654.3200 |
| Quantity | 64 00 | 100 Contracts |
| Customer Quantity | 64 00 | 100 Contracts |

### Two Side Update Expanded (Short)

**Table 1. Two Side Update Expanded (Short)**

| Length | 19 | 25 bytes |
|---|---|---|
| Type | D6 | Two Side Update Expanded (Short) |
| Time Offset | 30 FA D3 29 | 701,758,000 ns since last Time Message |
| Symbol | 30 31 32 33 34 35 | 012345 |
| Bitfields | 08 | AON (All or None) |
| Bid Price | 41 01 | $3.21 |
| Bid Quantity | 64 00 | 100 |
| Bid Customer Quantity | 32 00 | 50 |
| Ask Price | 43 01 | $3.23 |
| Ask Quantity | C8 00 | 200 |
| Ask Customer Quantity | 64 00 | 100 |

### Two Side Update Expanded (Long)

**Table 1. Two Side Update Expanded (Long)**

| Length | 2D | 45 bytes |
|---|---|---|
| Type | D7 | Two Side Update Expanded (Long) |
| Time Offset | 30 FA D3 29 | 701,758,000 ns since last Time Message |
| Symbol | 30 31 32 33 34 35 | 012345 |
| Bitfields | 10 | Customer |
| Bid Price | 64 7D 00 00 00 00 00 00 | $3.2100 |
| Bid Quantity | 00 00 00 00 | 0 |
| Bid Customer Quantity | FA 00 | 250 |
| Ask Price | 2C 7E 00 00 00 00 00 00 | $3.2300 |
| Ask Quantity | 00 00 00 00 | 0 |
| Ask Customer Quantity | C8 00 | 200 |

### Top Trade

**Table 1. Top Trade**

| Length | 25 | 37 bytes |
|---|---|---|
| Type | B8 | Trade |
| Time Offset | 10 84 D4 23 | 601,130,000 ns since last Time Message |
| Symbol | 36 35 34 33 32 31 | 654321 |
| Quantity | BC 02 00 00 | 700 contracts |
| Price | 08 E2 01 00 00 00 00 00 | $12.34 |
| Execution Id | 34 2B 46 E0 BB 00 00 00 | 0AAP09VEC |
| Total Volume | 40 42 0F 00 00 00 00 00 | 1,000,000 contracts |
| Trade Condition | 20 | Normal Trade (space) |

### Top Trade (Condition = Trade Break)

**Table 1. Top Trade (Condition = Trade Break)**

| Length | 25 | 37 bytes |
|---|---|---|
| Type | B8 | Trade |
| Time Offset | 10 84 D4 23 | 601,130,000 ns since last Time Message |
| Symbol | 36 35 34 33 32 31 | 654321 |
| Quantity | BC 02 00 00 | 700 contracts |
| Price | 08 E2 01 00 00 00 00 00 | $12.34 |
| Execution Id | 34 2B 46 E0 BB 00 00 00 | 0AAP09VEC |
| Total Volume | 84 3F 0F 00 00 00 00 00 | 999,300 contracts |
| Trade Condition | 58 | X – Trade Break |

### Auction Summary Message

**Table 1. Auction Summary Message**

| Length | 40 | 64 bytes |
|---|---|---|
| Type | D1 | Options Auction Update |
| Time Offset | 18 D2 06 00 | 447,000 ns since last Time Message |
| Symbol | 30 30 6D 45 56 4F | 00mEVO |
| Auction Type | 56 | Volatility Auction |
| Reference Price | E8 A3 0F 00 00 00 00 00 | $102.50 |
| Buy Contracts | 64 00 00 00 | 100 Contracts |
| Sell Contracts | C8 00 00 00 | 200 Contracts |
| Indicative Price | E8 A3 0F 00 00 00 00 00 | $102.50 |
| Auction Only Price | E8 A3 0F 00 00 00 00 00 | $102.50 |
| Opening Condition | 4F | O = Would Open |
| Composite Market Bid Price | 50 69 0F 00 00 00 00 00 | $101.00 |
| Composite Market Offer Price | 70 B7 0F 00 00 00 00 00 | $103.00 |

### Auction Summary Message

**Table 1. Auction Summary Message**

| Length | 1B | 27 bytes |
|---|---|---|
| Type | 96 | Auction Summary |
| Time Offset | 18 D2 06 00 | 447,000 ns since last Time Message |
| Symbol | 30 30 6D 45 56 5F 20 20 | 00mEVO |
| Auction Type | 4F | O = Opening |
| Price | E8 A3 0F 00 00 00 00 00 | $102.50 |
| Quantity | 4B 00 00 00 | 75 |

### Symbol Mapping Message

**Table 1. Symbol Mapping Message**

| Length | 26 | 38 bytes |
|---|---|---|
| Type | 2E | Symbol Mapping Message |
| Feed Symbol | 30 30 6D 45 56 4F | 00mEVO |
| OSI Symbol | 4D 53 46 54 20 20 31 39 30 39 32 30 43 30 30 31 35 30 30 30 30 | MSFT 190920C00150000 |
| Symbol Condition | 4E | 'N' – Closing Only |
| Underlying | 4D 53 46 54 20 20 20 20 | MSFT |

### Trading Status Message

**Table 1. Trading Status Message**

| Length | 12 | 18 bytes |
|---|---|---|
| Type | 31 | Trading Status |
| Time Offset | 18 D2 06 00 | 447,000 ns since last Time Message |
| Symbol | 39 39 38 38 37 37 | 998877 |
| Reserved | 20 20 | Reserved |
| Trading Status | 54 | T = Trading |
| Reserved | 20 | Reserved |
| Global Trading Hours Status | 48 | H = Halted |
| Reserved | 20 | Reserved |

### Width Update Message (C1, C2, and EDGX Only)

**Table 1. Width Update Message (C1, C2, and EDGX Only)**

| Length | 13 | 19 bytes |
|---|---|---|
| Type | D2 | Width Update |
| Time Offset | 18 D2 06 00 | 447,000 ns since last Time Message |
| Underlying | 5A 56 5A 5A 54 20 20 20 | ZVZZT |
| Width Type | 52 | R = Regular |
| Multiplier | 0F 00 00 00 | Multiplier of 1.5 |

### SOQ Strike Range Update (C1 Only)

**Table 1. SOQ Strike Range Update (C1 Only)**

| Length | 2A | 42 bytes |
|---|---|---|
| Type | 9D | SOQ Strike Range Update |
| Time Offset | 18 D2 06 00 | 447,000 ns since last Time Message |
| SOQ Identifier | 56 58 53 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | VXS |
| Lower Strike Price | 40 66 03 01 00 00 00 00 | $1,700 |
| Upper Strike Price | 00 48 E8 01 00 00 00 00 | $3,200 |

### Constituent Symbol Mapping (C1 Only)

**Table 1. Constituent Symbol Mapping (C1 Only)**

| Length | 3A | 58 bytes |
|---|---|---|
| Type | 9E | Constituent Symbol Mapping Message |
| Feed Symbol | 30 30 6D 45 56 4F | 00mEVO |
| OSI Symbol | 53 50 58 57 20 20 31 39 30 39 32 37 43 30 32 33 39 30 30 30 30 | SPXW 190927C02390000 |
| Symbol Condition | 4E | 'N' – Normal |
| Underlying | 53 50 58 20 20 20 20 20 | SPX |
| SOQ Identifier | 56 58 53 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | VXS |

## Multicast Configuration

### Production Environment Configuration

#### Limitations/Configurations

The following table defines the configuration for network and gap request limitations. These limitations are session based. Cboe reserves the right to adjust the gap request limitations to improve the effectiveness of the gap request infrastructure.

| Period/Type | Limit/Setting | Notes |
|---|---|---|
| MTU | 1500 | Cboe will send UDP messages up to 1500 bytes. Participants should ensure that their infrastructure is configured accordingly. |
| Gig-Shaped Throttle | 2 Gb/s | The real-time and gap multicast head ends are configured to shape their output to this level to minimize packet loss. |
| Gap Response Delay | 2 ms | The Gap Server will delay resending sequenced messages via multicast for the specified limit in order to satisfy multiple GRP gap requests with one multicast response. |
| Count | 100 | Any single gap request may not be for more than this number of dropped messages. |
| 1 Second | 320 Requests | This is the maximum number of retransmission requests allowed per second for each session. This is renewed every clock second. |
| 1 Minute | 1,500 Requests | This is the maximum number of retransmission requests allowed per minute for each session. This is renewed every clock minute. |
| Day | 100,000 Requests | This is the maximum number of retransmission requests allowed per day for each session. |
| Within Range | 1,000,000 Messages | Users’ retransmission requests must be within this many messages of the most recent sequence sent by the real-time feed per session. |

#### U.S. Options Unit/Product Distribution

| Unit | BZX/C1/C2/EDGX Symbol Range | Exceptions |
|---|---|---|
| 1 | A - AIPA~ |  |
| 2 | AIPB - AO~ |  |
| 3 | AP - AVGO~ |  |
| 4 | AVGP - BOIL~ |  |
| 5 | BOIM - CMPR~ | Excludes CBTX, CBTXW |
| 6 | CMPS - CSIQ~ |  |
| 7 | CSIR - DJTA~ |  |
| 8 | DJTB - FARO~ | Excludes DJX, DJXW |
| 9 | FARP - GLC~ |  |
| 10 | GLD - HAYW~ |  |
| 11 | HAYX - IYWA~ | Excludes IWM |
| 12 | IYWB - LMTA~ |  |
| 13 | LMTB - MES~ | Excludes MBTX, MBTXW |
| 14 | MET - MRM~ | Excludes MGTN, MGTNW |
| 15 | MRN - MSTR~ | Excludes MRUT |
| 16 | MSTS - NKEA~ | Excludes NANOS |
| 17 | NKEB - PDC~ | Excludes NVDA, OEX |
| 18 | PDD - RDDS~ | Excludes QQQ |
| 19 | RDDT - SEAA~ | Excludes RLG, RLV, RUI, RUT/RUTW |
| 20 | SEAB - SMHA~ | Excludes SIXB, SIXC, SIXE, SIXI, SIXR, SIXRE, SIXT, SIXU, SIXV, SIXY |
| 21 | SMHB - TEQ~ | Excludes SPEQX, SPESG, SPX/SPXW, SPY |
| 22 | TER - TTC~ | Excludes TSLA |
| 23 | TTD - VB~ | Excludes UKXM |
| 24 | VC - WYNN~ | Excludes VIX, VIXW |
| 25 | WYNO - Z~ | Excludes XEO, XSP, XSPBW |
| 26 | NVDA |  |
| 27 | TSLA |  |
| 28 | QQQ |  |
| 29 | IWM |  |
| 30 | SPY |  |

**Table 1. Units 31-35**

| Unit | BZX/C2 Symbol Range | C1 Symbol Range |
|---|---|---|
| 31 | DJX (C2 Only), DJXW (C2 Only), RUT (BZX and C2 Only), RUTW (C2 Only) | CBTX, CBTXW, DJX, DJXW, MBTX, MBTXW, MGTN, MGTNW, MRUT, OEX, RLG, RLV, RUI, RUT, RUTW, SIXB, SIXC, SIXE, SIXI, SIXR, SIXRE, SIXT, SIXU, SIXV, SIXY, SPEQX, SPESG, UKXM, XEO |
| 32 | N/A | NANOS, VIX, VIXW, XSP, XSPBW |
| 33 | N/A | SPX |
| 34 | N/A | SPXW |
| 35 | N/A | SPX/SPXW, Cross Product Spreads |

Note - Cboe reserves the right to add units and/or change symbol distribution with 48 hours of notice and no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

#### BZX Options Multicast Routing Parameters

| Data Center | Rendezvous Point |
|---|---|
| Primary Data Center A feed | 74.115.128.178 |
| Primary Data Center B feed | 74.115.128.179 |
| Secondary Data Center E feed | 174.136.181.223 |

#### C1 Options Multicast Routing Parameters

| Data Center | Rendezvous Point |
|---|---|
| Primary Data Center A feed | 74.115.128.183 |
| Primary Data Center B feed | 74.115.128.184 |
| Secondary Data Center E feed | 174.136.181.249 |

#### C2 Options Multicast Routing Parameters

| Data Center | Rendezvous Point |
|---|---|
| Primary Data Center A feed | 74.115.128.174 |
| Primary Data Center B feed | 74.115.128.175 |
| Secondary Data Center E feed | 170.137.16.133 |

#### EDGX Options Multicast Routing Parameters

| Data Center | Rendezvous Point |
|---|---|
| Primary Data Center A feed | 74.115.128.180 |
| Primary Data Center B feed | 74.115.128.181 |
| Secondary Data Center E feed | 174.136.181.251 |

#### BZX Options Address/Unit Distribution

The following tables describe the unit distribution across the BZX Options Multicast Top feeds.

| Primary Datacenter | Gig-Shaped [OAT] 174.136.164.128/28 | Gig-Shaped [OBT] 174.136.164.144/28 |  |  |  |
|---|---|---|---|---|---|
| Unit | IP Port | Real-time MC | Gap Resp. MC | Real-time MC | Gap Resp. MC |
| 1 | 30151 | 224.0.62.0 | 224.0.62.4 | 224.0.73.0 | 224.0.73.4 |
| 2 | 30152 |  |  |  |  |
| 3 | 30153 |  |  |  |  |
| 4 | 30154 |  |  |  |  |
| 5 | 30155 |  |  |  |  |
| 6 | 30156 |  |  |  |  |
| 7 | 30157 |  |  |  |  |
| 8 | 30158 |  |  |  |  |
| 9 | 30159 | 224.0.62.1 | 224.0.62.5 | 224.0.73.1 | 224.0.73.5 |
| 10 | 30160 |  |  |  |  |
| 11 | 30161 |  |  |  |  |
| 12 | 30162 |  |  |  |  |
| 13 | 30163 |  |  |  |  |
| 14 | 30164 |  |  |  |  |
| 15 | 30165 |  |  |  |  |
| 16 | 30166 |  |  |  |  |
| 17 | 30167 | 224.0.62.2 | 224.0.62.6 | 224.0.73.2 | 224.0.73.6 |
| 18 | 30168 |  |  |  |  |
| 19 | 30169 |  |  |  |  |
| 20 | 30170 |  |  |  |  |
| 21 | 30171 |  |  |  |  |
| 22 | 30172 |  |  |  |  |
| 23 | 30173 |  |  |  |  |
| 24 | 30174 |  |  |  |  |
| 25 | 30175 | 224.0.62.3 | 224.0.62.7 | 224.0.73.3 | 224.0.73.7 |
| 26 | 30176 |  |  |  |  |
| 27 | 30177 |  |  |  |  |
| 28 | 30178 |  |  |  |  |
| 29 | 30179 |  |  |  |  |
| 30 | 30180 |  |  |  |  |
| 31 | 30181 |  |  |  |  |
| 32 | 30182 |  |  |  |  |
| 33 | 30183 |  |  |  |  |

Note - Cboe reserves the right to add multicast addresses with prior notice, but no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

| Secondary Datacenter | Gig-Shaped [OET] 174.136.181.192/28 |  |  |
|---|---|---|---|
| Unit | IP Port | Real-time MC | Gap Resp. MC |
| 1 | 31851 | 233.19.3.160 | 233.19.3.164 |
| 2 | 31852 |  |  |
| 3 | 31853 |  |  |
| 4 | 31854 |  |  |
| 5 | 31855 |  |  |
| 6 | 31856 |  |  |
| 7 | 31857 |  |  |
| 8 | 31858 |  |  |
| 9 | 31859 | 233.19.3.161 | 233.19.3.165 |
| 10 | 31860 |  |  |
| 11 | 31861 |  |  |
| 12 | 31862 |  |  |
| 13 | 31863 |  |  |
| 14 | 31864 |  |  |
| 15 | 31865 |  |  |
| 16 | 31866 |  |  |
| 17 | 31867 | 233.19.3.162 | 233.19.3.166 |
| 18 | 31868 |  |  |
| 19 | 31869 |  |  |
| 20 | 31870 |  |  |
| 21 | 31871 |  |  |
| 22 | 31872 |  |  |
| 23 | 31873 |  |  |
| 24 | 31874 |  |  |
| 25 | 31875 | 233.19.3.163 | 233.19.3.167 |
| 26 | 31876 |  |  |
| 27 | 31877 |  |  |
| 28 | 31878 |  |  |
| 29 | 31879 |  |  |
| 30 | 31880 |  |  |
| 31 | 31881 |  |  |
| 32 | 31882 |  |  |
| 33 | 31883 |  |  |

Note - Cboe reserves the right to add multicast addresses with prior notice, but no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

#### C1 Options Address/Unit Distribution

The following tables describe the unit distribution across the C1 Options Multicast Top feeds.

| Primary Datacenter | Gig-Shaped [CAT] 170.137.114.64 /28 | Gig-Shaped [CBT] 170.137.115.64 /28 |  |  |  |
|---|---|---|---|---|---|
| Unit | IP Port | Real-time MC | Gap Resp. MC | Real-time MC | Gap Resp. MC |
| 1 | 30201 | 224.0.74.64 | 224.0.74.72 | 233.182.199.192 | 233.182.199.200 |
| 2 | 30202 |  |  |  |  |
| 3 | 30203 |  |  |  |  |
| 4 | 30204 |  |  |  |  |
| 5 | 30205 |  |  |  |  |
| 6 | 30206 |  |  |  |  |
| 7 | 30207 |  |  |  |  |
| 8 | 30208 |  |  |  |  |
| 9 | 30209 | 224.0.74.65 | 224.0.74.73 | 233.182.199.193 | 233.182.199.201 |
| 10 | 30210 |  |  |  |  |
| 11 | 30211 |  |  |  |  |
| 12 | 30212 |  |  |  |  |
| 13 | 30213 |  |  |  |  |
| 14 | 30214 |  |  |  |  |
| 15 | 30215 |  |  |  |  |
| 16 | 30216 |  |  |  |  |
| 17 | 30217 | 224.0.74.66 | 224.0.74.74 | 233.182.199.194 | 233.182.199.202 |
| 18 | 30218 |  |  |  |  |
| 19 | 30219 |  |  |  |  |
| 20 | 30220 |  |  |  |  |
| 21 | 30221 |  |  |  |  |
| 22 | 30222 |  |  |  |  |
| 23 | 30223 |  |  |  |  |
| 24 | 30224 |  |  |  |  |
| 25 | 30225 | 224.0.74.67 | 224.0.74.75 | 233.182.199.195 | 233.182.199.203 |
| 26 | 30226 |  |  |  |  |
| 27 | 30227 |  |  |  |  |
| 28 | 30228 |  |  |  |  |
| 29 | 30229 |  |  |  |  |
| 30 | 30230 |  |  |  |  |
| 31 | 30231 |  |  |  |  |
| 32 | 30232 |  |  |  |  |
| 33 | 30233 | 224.0.74.68 | 224.0.74.76 | 233.182.199.196 | 233.182.199.204 |
| 34 | 30234 |  |  |  |  |
| 35 | 30235 |  |  |  |  |

Note - Cboe reserves the right to add multicast addresses with prior notice, but no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

| Secondary Datacenter | Gig-Shaped [CET] 170.137.124.208/28 |  |  |
|---|---|---|---|
| Unit | IP Port | Real-time MC | Gap Resp. MC |
| 1 | 31201 | 233.19.3.224 | 233.19.3.232 |
| 2 | 31202 |  |  |
| 3 | 31203 |  |  |
| 4 | 31204 |  |  |
| 5 | 31205 |  |  |
| 6 | 31206 |  |  |
| 7 | 31207 |  |  |
| 8 | 31208 |  |  |
| 9 | 31209 | 233.19.3.225 | 233.19.3.233 |
| 10 | 31210 |  |  |
| 11 | 31211 |  |  |
| 12 | 31212 |  |  |
| 13 | 31213 |  |  |
| 14 | 31214 |  |  |
| 15 | 31215 |  |  |
| 16 | 31216 |  |  |
| 17 | 31217 | 233.19.3.226 | 233.19.3.234 |
| 18 | 31218 |  |  |
| 19 | 31219 |  |  |
| 20 | 31220 |  |  |
| 21 | 31221 |  |  |
| 22 | 31222 |  |  |
| 23 | 31223 |  |  |
| 24 | 31224 |  |  |
| 25 | 31225 | 233.19.3.227 | 233.19.3.235 |
| 26 | 31226 |  |  |
| 27 | 31227 |  |  |
| 28 | 31228 |  |  |
| 29 | 31229 |  |  |
| 30 | 31230 |  |  |
| 31 | 31231 |  |  |
| 32 | 31232 |  |  |
| 33 | 31233 | 233.19.3.228 | 233.19.3.236 |
| 34 | 31234 |  |  |
| 35 | 31235 |  |  |

Note - Cboe reserves the right to add multicast addresses with prior notice, but no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

#### C2 Options Address/Unit Distribution

The following tables describe the unit distribution across the C2 Options Multicast Top feeds.

| Primary Datacenter | Gig-Shaped [WAT] 174.136.168.224/28 | Gig-Shaped [WBT] 174.136.168.240/28 |  |  |  |
|---|---|---|---|---|---|
| Unit | IP Port | Real-time MC | Gap Resp. MC | Real-time MC | Gap Resp. MC |
| 1 | 30251 | 224.0.131.240 | 224.0.131.244 | 233.130.124.240 | 233.130.124.244 |
| 2 | 30252 |  |  |  |  |
| 3 | 30253 |  |  |  |  |
| 4 | 30254 |  |  |  |  |
| 5 | 30255 |  |  |  |  |
| 6 | 30256 |  |  |  |  |
| 7 | 30257 |  |  |  |  |
| 8 | 30258 |  |  |  |  |
| 9 | 30259 | 224.0.131.241 | 224.0.131.245 | 233.130.124.241 | 233.130.124.245 |
| 10 | 30260 |  |  |  |  |
| 11 | 30261 |  |  |  |  |
| 12 | 30262 |  |  |  |  |
| 13 | 30263 |  |  |  |  |
| 14 | 30264 |  |  |  |  |
| 15 | 30265 |  |  |  |  |
| 16 | 30266 |  |  |  |  |
| 17 | 30267 | 224.0.131.242 | 224.0.131.246 | 233.130.124.242 | 233.130.124.246 |
| 18 | 30268 |  |  |  |  |
| 19 | 30269 |  |  |  |  |
| 20 | 30270 |  |  |  |  |
| 21 | 30271 |  |  |  |  |
| 22 | 30272 |  |  |  |  |
| 23 | 30273 |  |  |  |  |
| 24 | 30274 |  |  |  |  |
| 25 | 30275 | 224.0.131.243 | 224.0.131.247 | 233.130.124.243 | 233.130.124.247 |
| 26 | 30276 |  |  |  |  |
| 27 | 30277 |  |  |  |  |
| 28 | 30278 |  |  |  |  |
| 29 | 30279 |  |  |  |  |
| 30 | 30280 |  |  |  |  |
| 31 | 30281 |  |  |  |  |
| 32 | 30282 |  |  |  |  |
| 33 | 30283 |  |  |  |  |

Note - Cboe reserves the right to add multicast addresses with prior notice, but no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

| Secondary Datacenter | Gig-Shaped [WET] 170.137.17.88/29 |  |  |
|---|---|---|---|
| Unit | IP Port | Real-time MC | Gap Resp. MC |
| 1 | 31251 | 233.182.199.96 | 233.182.199.100 |
| 2 | 31252 |  |  |
| 3 | 31253 |  |  |
| 4 | 31254 |  |  |
| 5 | 31255 |  |  |
| 6 | 31256 |  |  |
| 7 | 31257 |  |  |
| 8 | 31258 |  |  |
| 9 | 31259 | 233.182.199.97 | 233.182.199.101 |
| 10 | 31260 |  |  |
| 11 | 31261 |  |  |
| 12 | 31262 |  |  |
| 13 | 31263 |  |  |
| 14 | 31264 |  |  |
| 15 | 31265 |  |  |
| 16 | 31266 |  |  |
| 17 | 31267 | 233.182.199.98 | 233.182.199.102 |
| 18 | 31268 |  |  |
| 19 | 31269 |  |  |
| 20 | 31270 |  |  |
| 21 | 31271 |  |  |
| 22 | 31272 |  |  |
| 23 | 31273 |  |  |
| 24 | 31274 |  |  |
| 25 | 31275 | 233.182.199.99 | 233.182.199.103 |
| 26 | 31276 |  |  |
| 27 | 31277 |  |  |
| 28 | 31278 |  |  |
| 29 | 31279 |  |  |
| 30 | 31280 |  |  |
| 31 | 31281 |  |  |
| 32 | 31282 |  |  |
| 33 | 31283 |  |  |

Note - Cboe reserves the right to add multicast addresses with prior notice, but no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

#### EDGX Options Address/Unit Distribution

The following tables describe the unit distribution across the EDGX Options Multicast Top feeds.

| Primary Datacenter | Gig-Shaped [EAT] 174.136.164.160/28 | Gig-Shaped [EBT] 174.136.164.176/28 |  |  |  |
|---|---|---|---|---|---|
| Unit | IP Port | Real-time MC | Gap Resp. MC | Real-time MC | Gap Resp. MC |
| 1 | 30751 | 224.0.62.8 | 224.0.62.12 | 224.0.73.8 | 224.0.73.12 |
| 2 | 30752 |  |  |  |  |
| 3 | 30753 |  |  |  |  |
| 4 | 30754 |  |  |  |  |
| 5 | 30755 |  |  |  |  |
| 6 | 30756 |  |  |  |  |
| 7 | 30757 |  |  |  |  |
| 8 | 30758 |  |  |  |  |
| 9 | 30759 | 224.0.62.9 | 224.0.62.13 | 224.0.73.9 | 224.0.73.13 |
| 10 | 30760 |  |  |  |  |
| 11 | 30761 |  |  |  |  |
| 12 | 30762 |  |  |  |  |
| 13 | 30763 |  |  |  |  |
| 14 | 30764 |  |  |  |  |
| 15 | 30765 |  |  |  |  |
| 16 | 30766 |  |  |  |  |
| 17 | 30767 | 224.0.62.10 | 224.0.62.14 | 224.0.73.10 | 224.0.73.14 |
| 18 | 30768 |  |  |  |  |
| 19 | 30769 |  |  |  |  |
| 20 | 30770 |  |  |  |  |
| 21 | 30771 |  |  |  |  |
| 22 | 30772 |  |  |  |  |
| 23 | 30773 |  |  |  |  |
| 24 | 30774 |  |  |  |  |
| 25 | 30775 | 224.0.62.11 | 224.0.62.15 | 224.0.73.11 | 224.0.73.15 |
| 26 | 30776 |  |  |  |  |
| 27 | 30777 |  |  |  |  |
| 28 | 30778 |  |  |  |  |
| 29 | 30779 |  |  |  |  |
| 30 | 30780 |  |  |  |  |
| 31 | 30781 |  |  |  |  |
| 32 | 30782 |  |  |  |  |
| 33 | 30783 |  |  |  |  |

Note - Cboe reserves the right to add multicast addresses with prior notice, but no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

| Secondary Datacenter | Gig-Shaped [EET] 174.136.176.112/28 |  |  |
|---|---|---|---|
| Unit | IP Port | Real-time MC | Gap Resp. MC |
| 1 | 31701 | 233.19.3.168 | 233.19.3.172 |
| 2 | 31702 |  |  |
| 3 | 31703 |  |  |
| 4 | 31704 |  |  |
| 5 | 31705 |  |  |
| 6 | 31706 |  |  |
| 7 | 31707 |  |  |
| 8 | 31708 |  |  |
| 9 | 31709 | 233.19.3.169 | 233.19.3.173 |
| 10 | 31710 |  |  |
| 11 | 31711 |  |  |
| 12 | 31712 |  |  |
| 13 | 31713 |  |  |
| 14 | 31714 |  |  |
| 15 | 31715 |  |  |
| 16 | 31716 |  |  |
| 17 | 31717 | 233.19.3.170 | 233.19.3.174 |
| 18 | 31718 |  |  |
| 19 | 31719 |  |  |
| 20 | 31720 |  |  |
| 21 | 31721 |  |  |
| 22 | 31722 |  |  |
| 23 | 31723 |  |  |
| 24 | 31724 |  |  |
| 25 | 31725 | 233.19.3.171 | 233.19.3.175 |
| 26 | 31726 |  |  |
| 27 | 31727 |  |  |
| 28 | 31728 |  |  |
| 29 | 31729 |  |  |
| 30 | 31730 |  |  |
| 31 | 31731 |  |  |
| 32 | 31732 |  |  |
| 33 | 31733 |  |  |

Note - Cboe reserves the right to add multicast addresses with prior notice, but no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

### Certification Environment Configuration

#### U.S. Options Unit/Product Distribution

| Unit | BZX/C1/C2/EDGX Symbol Range | Exceptions |
|---|---|---|
| 1 | A - AIPA~ |  |
| 2 | AIPB - AO~ |  |
| 3 | AP - AVGO~ |  |
| 4 | AVGP - BOIL~ |  |
| 5 | BOIM - CMPR~ | Excludes CBTX, CBTXW |
| 6 | CMPS - CSIQ~ |  |
| 7 | CSIR - DJTA~ |  |
| 8 | DJTB - FARO~ | Excludes DJX, DJXW |
| 9 | FARP - GLC~ |  |
| 10 | GLD - HAYW~ |  |
| 11 | HAYX - IYWA~ | Excludes IWM |
| 12 | IYWB - LMTA~ |  |
| 13 | LMTB - MES~ | Excludes MBTX, MBTXW |
| 14 | MET - MRM~ | Excludes MGTN, MGTNW |
| 15 | MRN - MSTR~ | Excludes MRUT |
| 16 | MSTS - NKEA~ | Excludes NANOS |
| 17 | NKEB - PDC~ | Excludes NVDA, OEX |
| 18 | PDD - RDDS~ | Excludes QQQ |
| 19 | RDDT - SEAA~ | Excludes RLG, RLV, RUI, RUT/RUTW |
| 20 | SEAB - SMHA~ | Excludes SIXB, SIXC, SIXE, SIXI, SIXR, SIXRE, SIXT, SIXU, SIXV, SIXY |
| 21 | SMHB - TEQ~ | Excludes SPEQX, SPESG, SPX/SPXW, SPY |
| 22 | TER - TTC~ | Excludes TSLA |
| 23 | TTD - VB~ | Excludes UKXM |
| 24 | VC - WYNN~ | Excludes VIX, VIXW |
| 25 | WYNO - Z~ | Excludes XEO, XSP, XSPBW |
| 26 | NVDA |  |
| 27 | TSLA |  |
| 28 | QQQ |  |
| 29 | IWM |  |
| 30 | SPY |  |

**Table 1. Units 31-35**

| Unit | BZX/C2 Symbol Range | C1 Symbol Range |
|---|---|---|
| 31 | DJX (C2 Only), DJXW (C2 Only), RUT (BZX and C2 Only), RUTW (C2 Only) | CBTX, CBTXW, DJX, DJXW, MBTX, MBTXW, MGTN, MGTNW, MRUT, OEX, RLG, RLV, RUI, RUT, RUTW, SIXB, SIXC, SIXE, SIXI, SIXR, SIXRE, SIXT, SIXU, SIXV, SIXY, SPEQX, SPESG, UKXM, XEO |
| 32 | N/A | NANOS, VIX, VIXW, XSP, XSPBW |
| 33 | N/A | SPX |
| 34 | N/A | SPXW |
| 35 | N/A | SPX/SPXW, Cross Product Spreads |

Note - Cboe reserves the right to add units and/or change symbol distribution with 48 hours of notice and no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

#### Certification Multicast Routing Parameters

| Primary Certification Data Center | Rendezvous Point |
|---|---|
| BZX, C2, EDGX | 74.115.128.129 |
| C1 | 74.115.128.131 |

#### BZX Options Address/Unit Distribution

The following tables describe the unit distribution across the certification BZX Options Multicast Top feeds.

| Primary Datacenter | Gig-Shaped [Cert] 174.136.174.112/28 |  |  |
|---|---|---|---|
| Unit | IP Port | Real-time MC | Gap Resp. MC |
| 1 | 32151 | 224.0.74.148 | 224.0.74.150 |
| 2 | 32152 |  |  |
| 3 | 32153 |  |  |
| 4 | 32154 |  |  |
| 5 | 32155 |  |  |
| 6 | 32156 |  |  |
| 7 | 32157 |  |  |
| 8 | 32158 |  |  |
| 9 | 32159 |  |  |
| 10 | 32160 |  |  |
| 11 | 32161 |  |  |
| 12 | 32162 |  |  |
| 13 | 32163 |  |  |
| 14 | 32164 |  |  |
| 15 | 32165 |  |  |
| 16 | 32166 |  |  |
| 17 | 32167 | 224.0.74.149 | 224.0.74.151 |
| 18 | 32168 |  |  |
| 19 | 32169 |  |  |
| 20 | 32170 |  |  |
| 21 | 32171 |  |  |
| 22 | 32172 |  |  |
| 23 | 32173 |  |  |
| 24 | 32174 |  |  |
| 25 | 32175 |  |  |
| 26 | 32176 |  |  |
| 27 | 32177 |  |  |
| 28 | 32178 |  |  |
| 29 | 32179 |  |  |
| 30 | 32180 |  |  |
| 31 | 32181 |  |  |
| 32 | 32182 |  |  |
| 33 | 32183 |  |  |

Note - Cboe reserves the right to add multicast addresses with prior notice, but no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

#### C1 Options Address/Unit Distribution

The following tables describe the unit distribution across the certification C1 Options Multicast Top feeds.

| Primary Datacenter | Gig-Shaped [Cert] 170.137.126.16/28 |  |  |
|---|---|---|---|
| Unit | IP Port | Real-time MC | Gap Resp. MC |
| 1 | 32201 | 233.103.126.4 | 233.103.126.6 |
| 2 | 32202 |  |  |
| 3 | 32203 |  |  |
| 4 | 32204 |  |  |
| 5 | 32205 |  |  |
| 6 | 32206 |  |  |
| 7 | 32207 |  |  |
| 8 | 32208 |  |  |
| 9 | 32209 |  |  |
| 10 | 32210 |  |  |
| 11 | 32211 |  |  |
| 12 | 32212 |  |  |
| 13 | 32213 |  |  |
| 14 | 32214 |  |  |
| 15 | 32215 |  |  |
| 16 | 32216 |  |  |
| 17 | 32217 | 233.103.126.5 | 233.103.126.7 |
| 18 | 32218 |  |  |
| 19 | 32219 |  |  |
| 20 | 32220 |  |  |
| 21 | 32221 |  |  |
| 22 | 32222 |  |  |
| 23 | 32223 |  |  |
| 24 | 32224 |  |  |
| 25 | 32225 |  |  |
| 26 | 32226 |  |  |
| 27 | 32227 |  |  |
| 28 | 32228 |  |  |
| 29 | 32229 |  |  |
| 30 | 32230 |  |  |
| 31 | 32231 |  |  |
| 32 | 32232 |  |  |
| 33 | 32233 |  |  |
| 34 | 32234 |  |  |
| 35 | 32235 |  |  |

Note - Cboe reserves the right to add multicast addresses with prior notice, but no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

#### C2 Options Address/Unit Distribution

The following tables describe the unit distribution across the certification C2 Options Multicast Top feeds.

| Primary Datacenter | Gig-Shaped [Cert] 174.136.160.80/28 |  |  |
|---|---|---|---|
| Unit | IP Port | Real-time MC | Gap Resp. MC |
| 1 | 32301 | 224.0.74.172 | 224.0.74.174 |
| 2 | 32302 |  |  |
| 3 | 32303 |  |  |
| 4 | 32304 |  |  |
| 5 | 32305 |  |  |
| 6 | 32306 |  |  |
| 7 | 32307 |  |  |
| 8 | 32308 |  |  |
| 9 | 32309 |  |  |
| 10 | 32310 |  |  |
| 11 | 32311 |  |  |
| 12 | 32312 |  |  |
| 13 | 32313 |  |  |
| 14 | 32314 |  |  |
| 15 | 32315 |  |  |
| 16 | 32316 |  |  |
| 17 | 32317 | 224.0.74.173 | 224.0.74.175 |
| 18 | 32318 |  |  |
| 19 | 32319 |  |  |
| 20 | 32320 |  |  |
| 21 | 32321 |  |  |
| 22 | 32322 |  |  |
| 23 | 32323 |  |  |
| 24 | 32324 |  |  |
| 25 | 32325 |  |  |
| 26 | 32326 |  |  |
| 27 | 32327 |  |  |
| 28 | 32328 |  |  |
| 29 | 32329 |  |  |
| 30 | 32330 |  |  |
| 31 | 32331 |  |  |
| 32 | 32332 |  |  |
| 33 | 32333 |  |  |

Note - Cboe reserves the right to add multicast addresses with prior notice, but no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

#### EDGX Options Address/Unit Distribution

The following tables describe the unit distribution across the certification EDGX Options Multicast Top feeds.

| Primary Datacenter | Gig-Shaped [Cert] 174.136.174.176/28 |  |  |
|---|---|---|---|
| Unit | IP Port | Real-time MC | Gap Resp. MC |
| 1 | 32451 | 224.0.74.152 | 224.0.74.154 |
| 2 | 32452 |  |  |
| 3 | 32453 |  |  |
| 4 | 32454 |  |  |
| 5 | 32455 |  |  |
| 6 | 32456 |  |  |
| 7 | 32457 |  |  |
| 8 | 32458 |  |  |
| 9 | 32459 |  |  |
| 10 | 32460 |  |  |
| 11 | 32461 |  |  |
| 12 | 32462 |  |  |
| 13 | 32463 |  |  |
| 14 | 32464 |  |  |
| 15 | 32465 |  |  |
| 16 | 32466 |  |  |
| 17 | 32467 | 224.0.74.153 | 224.0.74.155 |
| 18 | 32468 |  |  |
| 19 | 32469 |  |  |
| 20 | 32470 |  |  |
| 21 | 32471 |  |  |
| 22 | 32472 |  |  |
| 23 | 32473 |  |  |
| 24 | 32474 |  |  |
| 25 | 32475 |  |  |
| 26 | 32476 |  |  |
| 27 | 32477 |  |  |
| 28 | 32478 |  |  |
| 29 | 32479 |  |  |
| 30 | 32480 |  |  |
| 31 | 32481 |  |  |
| 32 | 32482 |  |  |
| 33 | 32483 |  |  |

Note - Cboe reserves the right to add multicast addresses with prior notice, but no migration period. Notice will be given that the distribution will change on a certain date. Care should be taken to support mappings in these tables via software configuration.

## Options Trade Condition Codes

The following table defines valid values for the Trade Condition field.

| Type | Field Value |
|---|---|
| a | Single Leg Auction Non ISO Cboe auction types include AIM, SAM |
| b | Single Leg Auction ISO Cboe auction types include AIM ISO, SAM ISO |
| c | Single Leg Cross Non ISO Cboe auction types include Cust to Cust AIM, QCC |
| d | Single Leg Cross ISO Cboe order type is Cust to Cust AIM ISO |
| e | Single Leg Floor Trade |
| f | Complex to Complex Electronic Trade Cboe auction type is COA. |
| g | Complex Auction Trade Cboe order types include C-AIM, C-SAM |
| h | Complex Cross Cboe auction types include Cust to Cust C-AIM, C-QCC |
| i | Complex Floor Trade This value will be deprecated and all complex floor executions will be reported as condition ‘m’. |
| j | Complex Electronic Trade Against Single Leg(s) |
| k | Complex with Stock Options Auction Trade Cboe auction types include C-AIM w/ Stock, C-SAM w/ Stock |
| m | Complex Floor Trade Against Single Leg(s) All complex floor executions will be reported as condition ‘m’. |
| n | Complex with Stock Electronic Trade Includes COA auctions done electronically |
| o | Complex with Stock Cross Cboe auction types include C-QCC w/ Stock |
| p | Complex with Stock Floor Trade |
| t | Complex Floor Trade of Proprietary Products Marked as "Combo Order" |
| u | Multilateral Compression Trade of Proprietary Products |
| v | Extended Hours Trade. Transaction represents a trade executed during the Curb session. |
| I | Electronic Trade |
| K* | Cabinet Order |
| O* | Opening Trade |
| S | ISO |
| X* | Trade Break |

*The Trade Condition values of `X` = Trade Break , `O=Opening Trade`, and `K=Cabinet Trade` will not be sent to OPRA.

## Connectivity

### Supported Extranet Carriers

Cboe has certified a number of carriers defined in the Cboe Titanium U.S. Equities/Options Connectivity Manual with respect to redistribution of Multicast data feeds. For more information on receiving Options Multicast Top through any of these providers, reach out to the vendor contact noted in the Extranet Providers section of the Connectivity Manual.

### Bandwidth Recommendation

The Gig-shaped feeds require 2 Gb/s of bandwidth. Cboe will use 90% of these respective bandwidths for Multicast Top to allow participants to use the same physical connection for order entry if desired.

## References

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/29/2017 | Initial version. |
| 1.0.1 | 12/11/2017 | Corrections to Two Side Update (Long) example message. Corrected message type for `Top Trade` example message. |
| 1.1.0 | 01/29/2018 | Added BZX and EDGX Options Top feeds. Effective in certification on 02/02/18 and production 03/09/18. |
| 1.1.1 | 02/05/2018 | Added C2 Options Production IP and Port information. Improved distribution of Symbol Mapping Messages Effective 3/2/2018. |
| 1.1.2 | 02/27/2018 | Added IP Addresses for the BZX and EDGX Options exchanges for NY5 and CH4. |
| 1.1.3 | 02/28/2018 | Corrected BZX Options Ips and Ports. |
| 1.1.4 | 03/08/2018 | Updated Unit Distribution ranges. |
| 1.1.5 | 03/14/2018 | Corrected the name of the EDGX Options Feed to EAT, EBT and EET. |
| 1.1.6 | 03/23/2018 | Unit Distribution ranges Effective Date updated to 4/14/18. |
| 1.1.7 | 06/21/2018 | Corrected `Trading Status` example message. Order Count on `Spin Response` is always zero. |
| 1.1.8 | 08/15/18 | Updated BZX Options Unit Distribution ranges to support RUT on new unit 33. |
| 1.1.9 | 08/21/18 | Removal of Customer Indicator for C2 Options effective 08/31/18. |
| 1.2.0 | 11/16/18 | Added support for C1 Options. |
| 1.2.1 | 12/06/18 | Added notes identifying Feature Pack 4 updates. |
| 1.2.2 | 12/21/18 | Removed Late Trade and Floor Trade values from `Top Trade` message, Trade Condition field, as these were added in error. Added note of clarification indicating a `Top Trade` message can also be sent when an auction executes against a non-displayed order, such as a contra response. |
| 1.2.3 | 02/05/19 | Removed Bit 4 - Cabinet Order information from relevant `Single Side Update` and `Two Side Update` messages, as C1 will not have an electronic book for Cabinet orders. |
| 1.2.4 | 02/14/19 | Added certification IP addresses and unit distribution information. |
| 1.2.5 | 03/05/19 | Added matching engine unit 33 information in support of XSP trading on EDGX Options effective 04/08/19. Added C1 certification primary data center rendezvous point IP address and C1 Certification symbol ranges. |
| 1.2.6 | 04/15/19 | Added Production IP addresses for C1 Options. Added DJX to C2 ME 33 in Unit/Product Distribution tables (effective 05/08/19). |
| 1.2.7 | 05/01/19 | Added notes indicating `Auction Summary`, `Options Auction Update`, and `Width Update` messages will be disseminated for C2 and EDGX options, effective with C1 Feature Pack 7. |
| 1.2.8 | 05/08/19 | Removed Trading Status field value `S` = Exchange Specific Suspension from `Trading Status` message, as this was added in error. Corrected C1 Production Gig-Shaped [CAT] and [CBT] source network IP addresses. Corrected description of `Width Update` message to indicate that message is only sent in the event that baseline MCW and OCW values are modified from their original state. Added Customer book type to single and two side updates to allow for supplying the top of Customer book. |
| 1.2.9 | 05/14/19 | Updated `Options Auction Update` message with Opening Condition = C (Crossed Composite Market), and added Composite Market Bid Price and Composite Market Offer Price fields. Added new `SOQ Strike Range Update` message. Updated example for `Options Auction Update` and added example for `SOQ Strike Range` messages. Added additional proprietary products to matching unit 31 in C1. |
| 1.2.10 | 05/20/19 | Added `Constituent Symbol Mapping` message with example. |
| 1.2.11 | 06/12/19 | Corrected certification and production C1 symbol range for units 9 and 20. |
| 1.2.12 | 08/02/19 | Added notes indicating `Options Auction Update` message Opening Condition field values ‘B’ and ‘S’ are C1 Only. |
| 1.2.13 | 09/24/19 | Updated OSI Symbol example values in `Symbol Mapping` and `Constituent Symbol Mapping` message type examples. |
| 1.2.14 | 10/31/19 | Corrected UKXM symbol exclusion entry in Unit Distribution table. Clarified description of `Time` message. Added Options Trade Condition Codes section (effective 1/13/20). |
| 1.2.15 | 11/12/19 | Added note indicating GTH will be applicable for C1 only as GTH is being sunset for C2 and EDGX (effective 11/22/19). |
| 1.2.16 | 12/19/19 | Updated Options Trade Condition Codes by adding ‘O’ =Opening Trade and correcting field value description for ‘p’by removing "Includes Complex Auctions on the Floor" (effective 01/13/20). |
| 1.2.17 | 01/06/20 | `Updated Options Trade Condition Code t`=Complex Floor Trade of Proprietary Products Marked as "Combo Order" |
| 1.2.18 | 01/08/20 | Removed `l`=Complex Auction Against Single Legs(s) from Options Trade Condition Codes table . |
| 1.2.19 | 01/15/20 | Added note indicating Options Auction Update and Auction Summary will be supported on BZX in support of new opening process (effective 01/30/20). |
| 1.2.20 | 01/21/20 | Added note to Options Trade Condition Code table indicating the value `i`=Complex Floor Trade will be deprecated effective 1/27/20. Upon the effective date all complex floor executions will be reported as condition ‘m’. |
| 1.2.21 | 08/27/20 | Corrected Unit Symbol Distribution tables to indicate QQQ is an exception for C1 Unit 20 as it has a dedicated location on Unit 28. Added SPESG to the Unit Symbol Distrbiution tables for C1 unti 31 (effective 9/21/20). |
| 1.2.22 | 10/05/20 | Added SPESG to the Unit Symbol Distribution table Exclusion entries for C1. |
| 1.2.23 | 10/20/20 | Added XSP to the Unit Symbol Distribution tables for BZX and removed it from EDGX (effective 11/2/20). |
| 1.2.24 | 10/27/20 | Corrected description of GTH Trading Status to include value of ‘R’ as this value is currently being disseminated. |
| 1.2.25 | 02/01/21 | Added MRUT to the Unit/Product Distribution tables for C1 unit 31 (effective 3/01/21). Added new updated Unit/Product Distribution tables with harmonized symbol ranges (effective 3/22/21). |
| 1.2.26 | 03/11/21 | Updated the Unit Symbols Distribution Exceptions entries (effective 3/22/21). |
| 1.2.27 | 03/25/21 | Added Binary Date field type to Section 2.2 - Data Types (effective 10/10/21 TBD 09/27/21 Q3 2021 ). Added new `Time Reference` message (effective 10/10/21 TBD 09/27/21 Q3 2021 ). Added EpochTime field to `Time` message (effective 10/10/21 TBD 09/27/21 Q3 2021 ). Updated description of Auction Type field on Options Auction Update and Auction Summary messages (TBD 09/27/21 Q3 2021). Updated description of GTH Trading Status field on Trading Status message (effective 02/07/22 TBD 09/27/21 Q3 2021 ). |
| 1.2.28 | 05/06/21 | Added `u`=Multilateral Compression Trade of Proprietary Products to Options Trade Condition Codes (effective TBD 07/06/21) |
| 1.2.29 | 05/13/21 | Updated Curb session effective date to 02/07/22 TBD 09/27/21. Added `v` = Extended Hours Trade Trade Condition code (effective 01/24/22 TBD 09/27/21 ). |
| 1.2.30 | 06/15/21 | Updated GTH extended session effective date to 11/21/21. |
| 1.2.31 | 06/18/21 | Updated Cboe Compression Service Multilateral Compression effective date to TBD 08/12/21. |
| 1.2.32 | 07/28/21 | Updated Cboe Compression Service Multilateral Compression effective date to 08/12/21. |
| 1.2.33 | 08/27/21 | Updated Curb session effective date to 02/07/22 TBD. |
| 1.2.34 | 09/09/21 | Added Trading Status field value `L` = Curb Trading (C1 Only) for `Trading Status` messages (effective 01/24/22 TBD ). GTH Trading Status field will not be used for Curb session. Updated description of Auction Type field on `Options Auction Update` and `Auction Summary` messages (effective TBD). |
| 1.2.35 | 09/30/21 | Updated effective date for new `Time Reference` message (C1 Only) , EpochTime field to `Time` message (C1 Options Only) , and Binary Date field type to Section 2.2 - Data Types to 10/10/21. Added new section 1.2 - '24x5 Feed Hours and System Restart (C1 Only) ' (effective 10/10/21). |
| 1.2.36 | 11/04/21 | Corrected example `Time` message values. Updated Curb session effective date to 02/07/22 . Updated effective date for `v` = Extended Hours Trade Trade Condition code to 01/24/22. Updated effective date for Trading Status field value ‘ `L` = Curb Trading' to 01/24/22. Removed note indicating AuctionType value O will be sent prior to Curb session. This value will only be sent for the RTH Opening. |
| 1.2.37 | 02/02/22 | Added NANOS to the C1 unit 32 Unit/Product Distribution tables (effective 03/14/22). |
| 1.2.38 | 03/01/22 | Removed XSP from the BZX unit 31 Unit/Product Distribution tables. |
| 1.2.39 | 11/07/22 | Moved XSP to the C1 unit 32 Unit/Product Distribution table (effective 12/04/22). |
| 1.2.40 | 03/30/23 | Clarified RUT is on BZX and C2 Unit 31. |
| 1.2.41 | 01/29/24 | Added MXACW, MXUSA, and MXWLD to the C1 unit 31 Unit/Product Distribution tables (effective 03/18/24). |
| 1.2.42 | 07/22/24 | Effective 08/26/24, GTH will be extended until 9:25 a.m. ET (C1 Only). |
| 1.2.43 | 11/22/24 | Added CBTX, CBTXW, MBTX, and MBTXW to the C1 unit 31 Unit/Product Distribution tables (effective 12/02/24). |
| 1.2.44 | 12/13/24 | Added new Unit/Product Distribution for Units 1-30 (effective 03/31/25). |
| 1.2.45 | 01/15/25 | Updated with Cboe Titanium branding. |
| 1.2.46 | 03/25/25 | Noted in Spin Servers : a `Time` message will be sent as the last message in a Spin if the last `Time` message sent on a Spin is older than the last received time from the internal market data producers. Added SPEQX to C1 unit 31 unit/product distribution (effective 04/14/25). |
| 1.2.47 | 07/08/25 | Updated Time Offset data type. Effective 09/08/25, Time Offset fields will be populated to nanosecond precision. |
| 1.2.48 | 08/21/25 | Updated the footnote within Options Trade Conditions Codes to indicate the Trade Condition values of `X` = Trade Break, `O`=Opening Trade, and `K`=Cabinet Trade will not be sent to OPRA. |
| 1.2.49 | 10/20/25 | Added MGTN and MGTNW to unit 31 in US Options Unit/Product Distribution and excluded MGTN and MGTNW from unit 14 (effective 12/08/25 TBD 11/17/25) . Updated Trading Status Message Fields to remove references to specific products traded during Curb and GTH sessions, replacing it with "Curb-eligible Products" and "GTH-eligible Products", respectively. |
| 1.2.50 | 11/06/26 | Updated effective date for MGTN and MGTNW to TBD. |
| 1.2.51 | 11/18/25 | Updated effective dates for MGTN and MGTNW to 12/08/25. |
| 1.2.52 | 01/12/26 | Updated 24x5 Feed Hours and System Restart to document the new time at which persisted orders are added back into the order book (effective 02/02/26). |
| 1.2.53 | 03/09/26 | Updated Introduction, Bandwidth Recommendation, and Limitations/Configurations to indicate the Multicast TOP feed bandwidth will increase from 1Gb/s to 2Gb/s (effective 05/04/26). |
| 1.2.54 | 04/01/26 | Removed references to MXEA, MXEF, MXACW, MXUSA, and MXWLD. Updated Time description in `Time` and `Time Reference` messages. Added XSPBW to C1 unit 32 Unit/Product Distribution tables (effective 06/15/26 06/01/26 ). |
| 1.2.55 | 04/15/26 | Updated Trading Status Message Fields to reflect planned expansion of C1 trading hours for select equity options, including the addition of a morning Global Trading Hours (GTH) session and afternoon Curb session, subject to regulatory review (effective 07/13/26 08/17/26 TBD). |
| 1.2.56 | 05/14/26 | Updated XSPBW effective date to 06/15/26. Updated U.S. Options Unit/Product Distribution to include DJXW (effective 05/18/26). |
| 1.2.57 | 06/12/26 | Updated planned expansion of C1 trading hours for select equity options to 08/17/26. |
| 1.2.58 | 07/21/26 | Removed VIX and VIXW exclusion from unit 23 and added VIX and VIXW exclusion to unit 24 U.S. Options Unit/Product Distribution tables. |
| 1.2.59 | 08/10/26 | Updated planned expansion of C1 trading hours for select equity options to TBD. |
