# Cboe Titanium U.S. Equities TOP Specification

Version 1.3.9 · June 30, 2026

## Introduction

Cboe members may use the TOP protocol to receive real-time top of book quotations direct from Cboe. Market data received through TOP is more timely than obtaining the same data via the consolidated feed. The TOP protocol offers approximately 66% reduction in the number of events and 84% reduction in the number of bytes of application data sent, compared to the Cboe TCP PITCH protocol.

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

This specification will be the standard TOP specification used for Cboe BYX Exchange, BZX Exchange, EDGA Exchange, and EDGX Exchange platforms within the NY5 data center.

Complete depth of book market data can be received via the Cboe PITCH protocol.

TOP cannot be used to enter orders. For order entry, refer to the appropriate Cboe FIX or BOE Specification.

### Typography

Example messages are shown in a `constant width` typeface. Some invisible ASCII characters are shown using special characters:

- Space (0x20); shown as an underscore _
- New line (0x0A); shown as «

### Data Types

The data types used are similar to the data types used in Cboe PITCH.

- Numeric fields are a string of ASCII digits, right justified and zero filled on the left. For example, for a six place numeric field, `000123` represents 123.
- Alpha and Alphanumeric fields are left justified and space padded on the right. For example, for a six place alpha field for symbol ZVZZT is represented as `ZVZZT_`.
- Prices are decimal with either extended form (8 whole number digits followed by 6 decimal places), long form (6 whole number digits followed by 4 decimal digits), or short form (3 whole number digits followed by 2 decimal digits). The whole number portion is zero filled on the left; the decimal portion is zero filled on the right. The decimal point is implied by position and does not explicitly appear in the field. For an extended form price, `00000012340000` represents 12.34. For a long form price, `0000123400` represents 12.34. For a short form price, `01234` represents 12.34.
- Boolean fields contain either `Y` or `N`.
- Timestamp fields are 8 whole number milliseconds past midnight, Eastern Time, right justified and zero filled on the left, with no decimal point. For example, `32483556` represents 9:01:23.556 am. Negative offsets are possible and will have a minus sign '-' in the left most location. Negative values represent time before midnight Eastern Time.

## Protocol

### Message Format

The TOP data feed is comprised of a series of fixed-length, line-oriented, unsequenced messages. The length of each message is dependent upon the message type. Each message consists of non-control ASCII bytes.

## Sessions

The client connects to an assigned host and port using a TCP/IP socket.

### Connectivity

| Attribute | Description | Input |
|---|---|---|
| IP Address | Address to connect to. | Supplied by Cboe. |
| TCP Port | Port to connect to. | Supplied by Cboe. |
| Password | Sent upon initial successful connection. | Supplied by Cboe. |

For information on connectivity options to Cboe, see Cboe Titanium U.S. Equities/Options Connectivity Manual.

### Logon

Upon connection, the member must send a `Logon` message. The message indicates whether the member would like a spin of the current top of book for all symbols. The server will respond with either a `Logon Accepted` or `Logon Rejected` message. If a spin was requested, a `Spin` message is sent for each symbol, followed by a `Spin Done` message. If updates occur during the spin, you will receive `Seconds`, `Milliseconds`, `Long/Short Bid Update`, `Long/Short Ask Update`, `Long/Short Two-Sided Update`, and `Long/Short Trade` messages before receiving the `Spin Done` message. Seconds and Milliseconds messages are used to interleave timestamp information between messages, preventing duplicate timestamp information from being embedded in multiple messages.

### Heartbeat

The client must send `Client Heartbeat` messages once per second. If a client heartbeat isn't received for five seconds, the connection is terminated. The server will send `Server Heartbeat` messages once per second if no other messages have been sent in the last second.

## Logon Related Messages

### Logon Message Fields (Client)

**Table 1. Logon Message Fields (Client)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `L` | `Logon` message |
| Username | 1 | 6 | Alphanumeric | Username, assigned by Cboe |
| Password | 7 | 10 | Alphanumeric | Password, assigned by Cboe |
| Spin Flag | 17 | 1 | Boolean | If `Y`, spin current top of book |
| \n | 18 | 1 | `\n` | End of message |

### Logon Accepted Message Fields (Server)

**Table 1. Logon Accepted Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `C` | Logon Accepted message |
| \n | 1 | 1 | `\n` | End of message |

### Logon Rejected Message Fields (Server)

**Table 1. Logon Rejected Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `J` | `Logon Rejected` message |
| Reject Reason | 1 | 1 | Alpha | `A` = Authentication or authorization problem (currently the only reason sent) |
| \n | 2 | 1 | `\n` | End of message |

### Example

Successful login:

```
LABC___pass______Y«
C«
```

Rejected login:

```
LABC___pass______Y«
JA«
```

## Spin Related Messages

### Spin Message (Server)

If a spin was requested in the `Logon` message, `Spin` messages will be sent for any symbol which has had a visible order placed for it that day. If the connection is established prior to market open, no orders will have been placed and zero `Spin` messages will be sent. If a symbol has had orders that day but currently has no orders, a `Spin` message will be sent with zero price and quantity for each side. If a symbol has a one-sided quote, zero price and quantity will be sent for the side which has no orders.

The timestamp reflected in the `Spin` message is the time at which the update to the top of book occurred, not the time when the `Spin` message was sent to the member.

#### Expanded Spin Message Fields (Server)

The following expanded version of the `Spin` message (server) accommodates larger symbol sizes possible through the ISRA plan.

**Table 1. Expanded Spin Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `s` | `Spin` message |
| Timestamp | 1 | 8 | Timestamp | Time of top of book update; milliseconds since midnight, Eastern time |
| Symbol | 9 | 8 | Alpha | Symbol |
| Bid Price | 17 | 10 | Price | Bid price; 0 if no bids |
| Bid Quantity | 27 | 6 | Numeric | Bid quantity; 0 if no bids |
| Ask Price | 33 | 10 | Price | Ask price; 0 if no offers |
| Ask Quantity | 43 | 6 | Numeric | Ask quantity; 0 if no offers |
| Last Trade Time | 49 | 8 | Timestamp | Time of last trade; milliseconds since midnight, Eastern time |
| Last Trade Price | 57 | 10 | Price | Last trade price; 0 if no trades |
| Last Trade Size | 67 | 6 | Numeric | Last trade size; 0 if no trades |
| Cumulative Volume | 73 | 9 | Numeric | Cumulative volume executed today; 0 if no trades |
| Halt Status | 82 | 1 | Alpha | `H` = Halted `T` = Trading |
| Reg SHO Action | 83 | 1 | Alpha | `0` = No price test in effect `1` = Reg SHO price test restriction in effect |
| Reserved1 | 84 | 1 | Alpha | Reserved |
| Reserved2 | 85 | 1 | Alpha | Reserved |
| `\n` | 86 | 1 | `\n` | End of message |

### Extended Spin Message Fields (Server)

The following extended version of the `Spin` Message (server) accommodates larger prices. This would only be sent if the price exceeds the maximum allowed for a long form price data type.

**Table 1. Extended Spin Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `S` | `Spin` message |
| Timestamp | 1 | 8 | Timestamp | Time of top of book update; milliseconds since midnight, Eastern time |
| Symbol | 9 | 8 | Alpha | Symbol |
| Bid Price | 17 | 14 | Price | Bid price; 0 if no bids |
| Bid Quantity | 31 | 6 | Numeric | Bid quantity; 0 if no bids |
| Ask Price | 37 | 14 | Price | Ask price; 0 if no offers |
| Ask Quantity | 51 | 6 | Numeric | Ask quantity; 0 if no offers |
| Last Trade Time | 57 | 8 | Timestamp | Time of last trade; milliseconds since midnight, Eastern time |
| Last Trade Price | 65 | 14 | Price | Last trade price; 0 if no trades |
| Last Trade Size | 79 | 6 | Numeric | Last trade size; 0 if no trades |
| Cumulative Volume | 85 | 9 | Numeric | Cumulative volume executed today; 0 if no trades |
| Halt Status | 94 | 1 | Alpha | `H` = Halted `T` = Trading |
| Reg SHO Action | 95 | 1 | Alpha | `0` = No price test in effect `1` = Reg SHO price test restriction in effect |
| Reserved1 | 96 | 1 | Alpha | Reserved |
| Reserved2 | 97 | 1 | Alpha | Reserved |
| `\n` | 98 | 1 | `\n` | End of message |

### Spin Done Message Fields (Server)

Once all `Spin` messages have been sent, a `Spin Done` message is sent. A `Spin Done` message is not sent if a spin wasn't requested during logon.

**Table 1. Spin Done Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `D` | `Spin Done` message |
| \n | 1 | 1 | `\n` | End of message |

### Example

Spin of TESTA (two sided quote), TESTB (one sided quote, offer only), and ZVZZT (no current quote):

```
s34348112TESTA___00001234000002000000123500001000343470000000123400000100000120100T0__«
s34399808TESTB___00000000000000000000971200000900343461100000971100000200000030300T0__«
S34344716TESTC___01234567800000000200012345679000000001000343470001234567850000000100000120000T0__«
s34250522ZVZZT___00000000000000000000000000000000000000000000000000000000000000000T0__«
D«
```

## Heartbeat Messages

### Server Heartbeat Message Fields (Server)

A `Server Heartbeat` message is sent once per second if no update messages have been sent.

**Table 1. Server Heartbeat Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `H` | `Server Heartbeat` message |
| \n | 1 | 1 | `\n` | End of message |

### Client Heartbeat Message Fields (Client)

A `Client Heartbeat` message should be sent once per second by the client. If a `Client Heartbeat` is not received for five seconds, the connection will be terminated.

**Table 1. Client Heartbeat Message Fields (Client)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `R` | `Server Heartbeat` message |
| \n | 1 | 1 | `\n` | End of message |

## Time Update Messages

### Seconds Message Fields (Server)

Sent for every second for which at least one message is being generated.

**Table 1. Seconds Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | - | 1 | `T` | `Seconds` message |
| Seconds | 1 | 5 | Numeric | Number of seconds since midnight; e.g., 32400 = 9:00am |
| \n | 6 | 1 | `\n` | End of message |

### Milliseconds Message Fields (Server)

Sent for every millisecond for which at least one message is being generated.

**Table 1. Milliseconds Message Fields (Server)**

| Field Name | Offset | Length | Value | Description |
|---|---|---|---|---|
| Message Type | - | 1 | `M` | `Milliseconds` message |
| Milliseconds | 1 | 3 | Numeric | Number of milliseconds since last Second message |
| \n | 4 | 1 | `\n` | End of message |

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

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

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

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

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

**Table 1. Time Reference**

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

## Top of Book Update Messages

There are extended, expanded, long and short forms of bid and ask updates. Short form messages are sent if the symbol is less than five characters, the price is less than or equal to 999.99, and the size can be expressed in five characters. Expanded form messages are sent if the symbol is greater than six characters and accommodate larger symbol sizes possible through the ISRA plan. Extended form messages are sent if the price exceeds the maximum allowed for a long form price data type.

### Bid/Ask Update Messages

Replace the previous Top of Book bid/offer for a symbol.

#### Extended Bid Update Message Fields (Server)

**Table 1. Extended Bid Update Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `N` | `Extended Bid Update` message |
| Symbol | 1 | 8 | Alpha | Symbol |
| Bid Price | 9 | 14 | Price | Bid price; 0 if no bids |
| Bid Quantity | 23 | 6 | Numeric | Bid size; 0 if no bids |
| \n | 29 | 1 | `\n` | End of message |

#### Expanded Bid Update Message Fields (Server)

**Table 1. Expanded Bid Update Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `E` | `Expanded Bid Update` message |
| Symbol | 1 | 8 | Alpha | Symbol |
| Bid Price | 9 | 10 | Price | Bid price; 0 if no bids |
| Bid Quantity | 19 | 6 | Numeric | Bid size; 0 if no bids |
| \n | 25 | 1 | `\n` | End of message |

#### Long Bid Update Message Fields (Server)

**Table 1. Long Bid Update Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `B` | `Long Bid Update` message |
| Symbol | 1 | 6 | Alpha | Symbol |
| Bid Price | 7 | 10 | Price | Bid price; 0 if no bids |
| Bid Quantity | 17 | 6 | Numeric | Bid size; 0 if no bids |
| \n | 23 | 1 | `\n` | End of message |

#### Short Bid Update Message Fields (Server)

**Table 1. Short Bid Update Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `b` | `Short Bid Update` message |
| Symbol | 1 | 4 | Alpha | Symbol |
| Bid Price | 5 | 5 | Price | Bid price; 0 if no bids |
| Bid Quantity | 10 | 5 | Numeric | Bid size; 0 if no bids |
| \n | 15 | 1 | `\n` | End of message |

#### Extended Ask Update Message Fields (Server)

**Table 1. Extended Ask Update Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `n` | `Extended Ask Update` message |
| Symbol | 1 | 8 | Alpha | Symbol |
| Ask Price | 9 | 14 | Price | Ask price; 0 if no offers |
| Ask Quantity | 23 | 6 | Numeric | Ask size; 0 if no offers |
| \n | 29 | 1 | `\n` | End of message |

#### Expanded Ask Update Message Fields (Server)

**Table 1. Expanded Ask Update Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `e` | `Expanded Ask Update` message |
| Symbol | 1 | 8 | Alpha | Symbol |
| Ask Price | 9 | 10 | Price | Ask price; 0 if no offers |
| Ask Quantity | 19 | 6 | Numeric | Ask size; 0 if no offers |
| \n | 25 | 1 | `\n` | End of message |

#### Long Ask Update Message Fields (Server)

**Table 1. Long Ask Update Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `A` | `Long Ask Update` message |
| Symbol | 1 | 6 | Alpha | Symbol |
| Ask Price | 7 | 10 | Price | Ask price; 0 if no offers |
| Ask Quantity | 17 | 6 | Numeric | Ask size; 0 if no offers |
| \n | 23 | 1 | `\n` | End of message |

#### Short Ask Update Message Fields (Server)

**Table 1. Short Ask Update Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `a` | `Short Ask Update` message |
| Symbol | 1 | 4 | Alpha | Symbol |
| Ask Price | 5 | 5 | Price | Ask price; 0 if no offers |
| Ask Quantity | 10 | 5 | Numeric | Ask size; 0 if no offers |
| \n | 15 | 1 | `\n` | End of message |

### Two-Sided Update Messages

Replaces both the previous bid and offer for a symbol.

#### Expanded Two-Sided Update Message Fields (Server)

**Table 1. Expanded Two-Sided Update Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `F` | `Long Two-Sided Update` message |
| Symbol | 1 | 8 | Alpha | Symbol |
| Bid Price | 9 | 10 | Price | Bid price; 0 if no bids |
| Bid Quantity | 19 | 6 | Numeric | Bid size; 0 if no bids |
| Ask Price | 25 | 10 | Price | Ask price; 0 if no offers |
| Ask Quantity | 35 | 6 | Numeric | Ask size; 0 if no offers |
| \n | 41 | 1 | `\n` | End of message |

#### Long Two-Sided Update Message Fields (Server)

**Table 1. Long Two-Sided Update Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `U` | `Long Two-Sided Update` message |
| Symbol | 1 | 6 | Alpha | Symbol |
| Bid Price | 7 | 10 | Price | Bid price; 0 if no bids |
| Bid Quantity | 17 | 6 | Numeric | Bid size; 0 if no bids |
| Ask Price | 23 | 10 | Price | Ask price; 0 if no offers |
| Ask Quantity | 33 | 6 | Numeric | Ask size; 0 if no offers |
| \n | 39 | 1 | `\n` | End of message |

#### Short Two-Sided Update Message Fields (Server)

**Table 1. Short Two-Sided Update Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `u` | `Short Two-Sided Update` message |
| Symbol | 1 | 4 | Alpha | Symbol |
| Bid Price | 5 | 5 | Price | Bid price; 0 if no bids |
| Bid Quantity | 10 | 5 | Numeric | Bid size; 0 if no bids |
| Ask Price | 15 | 5 | Price | Ask price; 0 if no offers |
| Ask Quantity | 20 | 5 | Numeric | Ask size; 0 if no offers |
| \n | 25 | 1 | `\n` | End of message |

#### Extended Two-Sided Update Message Fields (Server)

**Table 1. Extended Two-Sided Update Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `d` | `Long Two-Sided Update` message |
| Symbol | 1 | 8 | Alpha | Symbol |
| Bid Price | 9 | 14 | Price | Bid price; 0 if no bids |
| Bid Quantity | 23 | 6 | Numeric | Bid size; 0 if no bids |
| Ask Price | 29 | 14 | Price | Ask price; 0 if no offers |
| Ask Quantity | 43 | 6 | Numeric | Ask size; 0 if no offers |
| \n | 49 | 1 | `\n` | End of message |

### Example

`Long/Short Bid Update` and `Long/Short Ask Update` messages interleaved with Seconds and Milliseconds messages ( `Client Heartbeat` messages are not shown):

```
T34348«
M110«
aQID_0394500200«
bRIMM1312200100«
bRIMM1312200400«
M118«
BZVZZT_0000123400001100«
M801«
BZVZZT_0000123500000100«
UQQQQ__00004870002402000000487100000200«
T34349«
M009«
aSPY_1417005500«
bIWM_0727700500«
BQQQQ__0000487000240000«
uQID_039441200000394500300«
```

## Trade Messages

When an execution occurs, a message is sent which includes the cumulative volume and last price and size. Multiple executions which occur concurrently will be compressed into a single update for bandwidth savings. TOP does not send a trade message for every individual fill.

As with book updates, short, long, expanded, and extended form execution messages will be sent. The expanded version of the `Trade` message accommodates larger symbol sizes possible through the ISRA plan. The extended version of the `Trade` message accommodates prices that exceed the maximum allowed for a long form price data type.

In the event of a trade break or correction, it is possible that the cumulative volume will decrease from the previous update.

### Extended Trade Message Fields (Server)

**Table 1. Extended Trade Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `r` | `Extended Trade` message |
| Symbol | 1 | 8 | Alpha | Symbol |
| Last Price | 9 | 14 | Price | Last trade price |
| Last Quantity | 23 | 6 | Numeric | Last trade quantity |
| Cumulative Volume | 29 | 9 | Numeric | Cumulative number of shares traded today |
| \n | 38 | 1 | `\n` | End of message |

### Expanded Trade Message Fields (Server)

**Table 1. Expanded Trade Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `f` | `Expanded Trade` message |
| Symbol | 1 | 8 | Alpha | Symbol |
| Last Price | 9 | 10 | Price | Last trade price |
| Last Quantity | 19 | 6 | Numeric | Last trade quantity |
| Cumulative Volume | 25 | 9 | Numeric | Cumulative number of shares traded today |
| \n | 34 | 1 | `\n` | End of message |

### Long Trade Message Fields (Server)

**Table 1. Long Trade Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `V` | `Long Trade` message |
| Symbol | 1 | 6 | Alpha | Symbol |
| Last Price | 7 | 10 | Price | Last trade price |
| Last Quantity | 17 | 6 | Numeric | Last trade quantity |
| Cumulative Volume | 23 | 9 | Numeric | Cumulative number of shares traded today |
| \n | 32 | 1 | `\n` | End of message |

### Short Trade Message Fields (Server)

**Table 1. Short Trade Message Fields (Server)**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `v` | `Short trade` message |
| Symbol | 1 | 4 | Alpha | Symbol |
| Last Price | 5 | 5 | Price | Last trade price |
| Last Quantity | 10 | 5 | Numeric | Last trade quantity |
| Cumulative Volume | 15 | 7 | Numeric | Cumulative number of shares traded today |
| \n | 22 | 1 | `\n` | End of message |

### Example

Trade messages interleaved with quote updates:

```
T34348«
M110«
bRIMM1312200400«
bRIMM1312200100«
vRIMM13122003001200400«
M801«
VSPY___0001379800000100024250601«
```

## Administrative Messages

### Trading Status Message Fields

The `Trading Status` message is used to indicate the current trading status of a security. A `Trading Status` message will be sent whenever a security's trading status changes.

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

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

**Table 1. Trading Status Message Fields**

| Field Name | Offset | Length | Type/(Value) | Description |
|---|---|---|---|---|
| Message Type | 0 | 1 | `t` | `Trading Status` Message |
| Symbol | 1 | 8 | Alpha | Symbol |
| Halt Status | 9 | 1 | Alpha | `A` = Accepting Order for Queuing `H` = Halted `Q` = Quote-Only (Cboe Listings) `S` = Exchange Specific Suspension `T` = Trading |
| Reg SHO Action | 10 | 1 | Alphanumeric | `0` = No price test in effect `1` = Reg SHO price test restriction in effect |
| Reserved1 | 11 | 1 | Alpha | Reserved |
| Reserved2 | 12 | 1 | Alpha | Reserved |
| \n | 13 | 1 | `\n` | End of message |

## References

For more information on Cboe Symbology, please refer to the 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 | 06/16/08 | Initial Version 1.0. |
| 1.0.1 | 06/26/08 | Corrected Typos in symbology table. |
| 1.0.2 | 10/06/08 | Revised wording to reflect transition to Bats Exchange. |
| 1.0.3 | 12/03/08 | Moved Symbology reference to a separate document. |
| 1.0.4 | 08/26/09 | Removed SRO quote reference. |
| 1.1.0 | 01/12/10 | Expanded form messages created to support larger symbol size. |
| 1.1.1 | 04/06/10 | Converted specification to new document format. Implemented support for 8 character symbols. |
| 1.1.2 | 04/15/10 | Updated FIX reference for BYX. |
| 1.2.0 | 10/23/10 | Added Trading Status message definition (Message Type = `t` ). Added Trading Status fields to Expanded Spin Message (Message Type = `s` ). Deprecated Short Spin Message (Message Type = `S` ). |
| 1.2.1 | 04/16/14 | Reference added for availability of the TOP protocol to EDGA and EDGX platforms that will be implemented in the NY5 datacenter. |
| 1.2.2 | 02/18/15 | Update to Time Update Message (Milliseconds) to indicate messages are sent from Server and not by Client. |
| 1.2.3 | 02/27/15 | Updated Trading Status message with new Halt Status definitions. |
| 1.3.0 | 02/19/16 | Bats branding/logo changes. |
| 1.3.1 | 10/17/17 | Cboe branding/logo changes. |
| 1.3.2 | 07/14/21 | Updated Cboe Symbology Reference Hyperlink/Trade Desk email. |
| 1.3.3 | 03/15/24 | Added new `Extended Spin (server)`, `Extended Bid Update (Server)`, `Extended Ask Update (Server)`, and `Extended Trade (Server)` messages (effective 06/17/24). |
| 1.3.4 | 05/09/24 | Added new Extended Two-Sided Update (server) message (effective 06/17/24). |
| 1.3.5 | 05/21/24 | Updated `Extended Two-Sided Update` Message Type to "d" (effective 06/17/24). |
| 1.3.6 | 09/06/24 | Effective 11/13/24, `Trading Status` messages will be sent upon system start up rather than at the start of order acceptance. |
| 1.3.7 | 10/09/24 | Effective 11/13/24, clarified initial `Trading Status` messages will be sent upon system start up in addition to sending at the start of order acceptance. |
| 1.3.8 | 01/15/25 | Updated with Cboe Titanium branding. |
| 1.3.9 | 06/30/26 | Updated Timestamp data type to indicate that negative offsets are possible and will have a minus sign '-' in the left most location. Added Time Reference Message Fields , effective 11/02/26 on BZX and EDGX. |
