# Cboe Titanium U.S. Options BOE Specification

Version 2.11.113 · August 17, 2026

## Introduction

This document describes Cboe Titanium U.S. Options Binary Order Entry (BOE), the Cboe proprietary order entry protocol. Please note that the Cboe Titanium U.S. Options BOE protocol will be sunset on 11/02/26.

Where applicable, the terminology (e.g., time in force) used in this document is similar to that used by the FIX protocol to allow those familiar with FIX to more easily understand BOE. This document assumes the reader has basic knowledge of the FIX protocol.

BOE fulfills the following requirements:

- CPU and memory efficiency. Message encoding, decoding, and parsing are simpler to code and can be optimized to use less CPU and memory at runtime.
- Application level simplicity. State transitions are simple and unambiguous. They are easy to apply to a Member's representation of an order.
- Session level simplicity. The session level protocol (login, sequencing, replay of missed messages, logout) is simple to understand.

While Cboe strives to preserve feature parity between FIX and BOE where possible, some features may only be available in one protocol or the other.

All binary values are in little Endian (used by Intel x86 processors), and not network byte order.

Each message is identified by a unique message type. Not all message types are used in all Cboe's trading environments globally. A listing of the supported message types is provided in Quote Reason Codes.

All communication is via standard TCP/IP.

### Certification Requirement

All customers must complete a formal certification in the appropriate Cboe Certification test environment before production orders or quotes will be accepted by Cboe. Formal certification scripts can be found in the Cboe Customer Web Portal. Customers may complete the formal certification using the Certification Tool app and selecting the applicable certification script. Customers are advised to test all functionality they plan to use in production in the Cboe Certification test environment.

### Document Format

Blue highlighted sections highlight key differences between the Cboe US Options Exchanges (Cboe Options Exchange C1 only, C2 Options Exchange C2 only, and EDGX Options Exchange EDGX only).

### Hours of Operation

All times noted are Eastern time zone (ET) based.

See the respective exchange websites for holiday schedules.

Cboe Options Exchanges support a Pre-Market Queuing Session that allows orders to be entered and queued prior to the start of the Global Trading Hours (GTH) session and the Regular Trading Hours (RTH) session. The GTH Queuing session allows GTH-eligible Product orders marked as both GTH and RTH only order to be entered and queued. C1 also supports a Curb session in addition to GTH and RTH sessions.

For more information on the Cboe Opening Process, please see the Cboe Titanium U.S. Options Opening Process specification.

Cboe Options Exchanges do not support a closing auction, but do support extended trading for options on select products. All orders remaining after the Regular Trading Session that are not eligible for Extended Trading will be cancelled automatically. All orders remaining after the Extended session will be cancelled automatically. Members will receive `Order Cancelled` messages for all automatically cancelled orders.

Product and session trading hours can be found on the Cboe website.

#### Holiday Sessions (C1 Only)

On certain U.S.-centric holidays, where European and/or Asian markets are open, trading is suspended for RTH and Curb but continues for GTH products eligible to trade on holidays, resulting in two sets of non-contiguous GTH sessions before RTH.

_(Figure: Figure 1. U.S. Holiday Trading Hours)_

On days where the market closes early, RTH will conclude at 1:15 p.m. ET and there will not be a subsequent Curb session. The market will remain closed until the next GTH session.

On certain International Holidays (i.e., New Year's Day) there is no GTH or RTH trading and the C1 Options market is closed. Notice is sent prior to holidays communicating the specific hours and sessions that will be available.

### Data Types

The following data types are used by BOE. The size of some data types varies by message. All data types have default values of binary zero, in both Member to Cboe and Cboe to Member contexts.

- Binary: Little Endian byte order, unsigned binary value. The number of bytes used depends on the context.
  - One byte: `FE`=254
  - Four bytes: `64 00 00 00`=100
- Signed Binary: Little Endian byte order, signed two's complement, binary value. The number of bytes used depends on the context.
  - One byte: `DF`=-33
  - Four bytes: `64 00 00 00`=+100
- Binary Price: Little Endian byte order value, signed two's complement, eight bytes in size, with four implied decimal places. So, if the value is -123,400, the actual value taking into account implied decimal places is -12.34.
  - `08 E2 01 00 00 00 00 00`=123,400/10, `000`=12.34
  - `F8 1D FE FF FF FF FF FF`= -123,400/10, `000`=-12.34
- Short Binary Price: Little Endian byte order value, signed two's complement, four bytes in size, with four implied decimal places. So, if the value is 12,300, the actual value taking into account implied decimal places is 1.23.
  - `0C 30 00 00`=12,300/10, `000`=1.23
- Signed Binary Fee: Little Endian byte order value, signed two's complement, eight bytes in size, with five implied decimal places. So, the value is -123,000 is -1.23 after taking account for the five implied decimal places.
  - `88 1F FE FF FF FF FF FF`=123,000/100, `000`=-1.23
- Alpha: Uppercase letters (A-Z) and lowercase letters (a-z) only. ASCII NUL (0x00) filled on the right, if necessary. The number of bytes used depends on the context.
- Alphanumeric: Uppercase letters (A-Z), lowercase letters (a-z) and numbers (0-9) only. ASCII NUL (0x00) filled on the right, if necessary.
- Text: Printable ASCII characters only. ASCII NUL (0x00) filled on the right, if necessary.
- DateTime : Little Endian byte order, eight bytes. The date and time, in UTC, represented as nanoseconds past the UNIX epoch (00:00:00 UTC on 1 January 1970). This field is populated using nanoseconds. For example: 1,294,909,373,757,324, `000` = 2011-01-13 09:02:53.757324 UTC.
- Date: Little Endian byte order, unsigned binary value, 4 bytes in size. The YYYYMMDD expressed as an integer.

### Optional Fields and Bit fields

Some messages such as `New Order` message and `Modify Order` message have a number of optional fields. A count and number of bitfields in the message specify which optional fields will be present at the end of the message. If a bit is set, the field will be present. Fields are appended to the end of the message. There is no implicit framing between the optional fields. In order to decode the optional fields, they must be appended in a particular order to the end of the message. The fields of the first bitfield are appended first, lowest order bit first. Next, the fields of the next bitfield are appended, lowest order bit first. This continues for all bitfields. While certain reserved bits within a defined bitfield are used within another Cboe market and will be ignored, bits that are reserved for future expansion must be set to 0 when noted in the bitfield description.

The size, data type, and values for each field are described in List of Optional Fields.

Note that the set of optional fields returned for each Cboe to Member message type is determined at session login (using the `Login Request` message); hence, the exact size and layout of each message received by the client application can be known in advance. Any requested optional field, which is irrelevant in a particular context, will still be present in the returned message, but with all bytes set to binary zero (0x00).

Each return message from Cboe to Member indicates the optional fields which are present, even though the Member indicated during login which optional fields are to be sent. The reason for the inclusion (and duplication) is so that each message can be interpreted on its own, without having to find the corresponding login request or response to know which optional fields are present. So, for example, in a log file, decoding a message requires only that single message.

Example messages are shown with each message type, which should help to make this concept clear.

### Protocol Features

The exchange does not guarantee messages sent by Members/TPHs to the exchange, including through protocols such as TCP. Members/TPHs are responsible to monitor the status of the messages they send to the exchange.

#### Architecture and Message in Flight Settings

Each BOE order handler process will allow a single TCP connection from a member. Connection attempts from unknown source IP ranges will be blocked to prevent unauthorized access to BOE ports. The Cboe NOC should be contacted in the event that a Member desires to connect from a new source IP range.

Each BOE order handler will connect, using a proprietary UDP protocol, to all matching units. Connections from order handlers to matching engines are latency equalized. The connections between order handlers and matching units are governed by an internal flow control mechanism to control burst rates.

The number of messages in flight between an order handler and a matching engine is 128. In addition, when the total number of unacknowledged messages exceeds 1,024, the BOE order handler will stop reading from the member-facing TCP socket. This will cause the order handler to stop removing bytes from the TCP receive buffer, and will prevent the member from sending more TCP data once the member’s send buffer is full.

When the total number of unacknowledged messages falls below 960, the reading of the member facing TCP socket will be resumed.

For message in flight counting purposes the following logic will be used:

- A new order message will count as one message;
- A new complex order with up to 100 legs will count as one message;
- A new order cross or new complex order cross auction message with one agency side and up to 10 contra parties will count as one message;
- A quote update with up to 20 individual quote sides will count as one message.
- In contrast, a single TCP segment sent by a member containing two quote update messages, each with five quote sides, will count as two messages

Cboe may either update the message in flight or the total number of unacknowledged messages settings with notice. Changes to reduce either limit will be made only with two weeks’ notice. Cboe reserves the ability to increase either limit immediately with notice.

#### Complex Instruments and Signed Prices (C1, C2, and EDGX only)

All price fields in the BOE protocol are signed values capable of accommodating complex instruments that can be negative (See Data Types) for a description and an example of using the Binary Price type with a negative price). For an example of the use of the Binary Price type with negative price values in an application message, see the example BOE message in New Complex Order Message Fields (C1, EDGX, and C2 Only).

#### Done For Day Restatements

Good ‘Til Cancel (GTC) and Good ‘Til Day (GTD) orders can result in order persisting between sessions. The Cboe BOE protocol provides a mechanism for clients to request end-of-day restatement of GTC/GTD orders that will be persisted to the next trading session. See BOE Port Attributes for information on available port attributes, including Done For Day Restatements.

When enabled, Done For Day Restatement messages are sent to connected clients after the trading session ends, for each order that will persist to the next trading session. Any time prior to the cutoff, customers may send `Cancel Order` messages for any open GTC and GTD orders.

Done For Day Restatements are represented using `Order Acknowledgment` messages with the following optional attributes set:

- BaseLiquidityIndicator = A (Added Liquidity), bitfield 5, bit position 7
- SubLiquidityIndicator = D (Done For Day), bitfield 7, bit position 1

To receive Done For Day Restatements, the Done For Day Restatement port attribute must be set (contact Cboe Trade Desk), and customers must register to receive BaseLiquidityIndicator and SubLiquidityIndicator optional fields on `Order Acknowledgment` messages via the `Logon Request` message (See Login Request Message Fields for details on registering to receive optional fields on a per-message basis). If the Done For Day Restatement port attribute is set and the bitfield Logon Message registration for the `Order Acknowledgment` message does not include but BaseLiquidityIndicator and SubLiquidityIndicator, the logon attempt will fail.

#### Carried Order Restatements

GTC, GTD, and DAY orders entered during partial holiday sessions can also persist between multiple trading sessions. The Cboe BOE protocol provides a mechanism for clients to request restatement of orders that have been carried forward from the previous business day trading session. See BOE Port Attributes for information on available port attributes, including Carried Order Restatements.

When enabled, Carried Order Restatements are sent to connected clients for each product on the Options Exchange for which orders have been carried forward from the previous business day trading session. Persisted orders are added back into the order book starting at approximately 15 minutes prior to the scheduled queuing time for each underlying symbol, after connection establishment and before regular trading activity messages on a per-product basis.

Carried Order Restatements are represented using `Order Acknowledgment` messages with the following optional attributes set:

- BaseLiquidityIndicator = A (Added Liquidity), bitfield 5, bit position 7
- SubLiquidityIndicator = C (Carried), bitfield 7, bit position 1

To receive Carried Order Restatements, the Carried Order Restatement port attribute must be set (contact CFE Trade Desk), and customers must register to receive BaseLiquidityIndicator and SubLiquidityIndicator optional fields on `Order Acknowledgment` messages via the `Logon Request` message (See Login Request Message Fields for details on registering to receive optional fields on a per-message basis). If the Carried Order Restatement port attribute is set and the bitfield Logon Message registration for the Order Acknowledgment message does not include but BaseLiquidityIndicator and SubLiquidityIndicator, the logon attempt will fail.

#### Cancellation of Carried Orders Between Trading Sessions

GTC and GTD orders persist within the Cboe Options Exchanges between business days. On EDGX and C2 the latest time when GTC/GTD orders may be cancelled is 4:45 p.m. ET.

On C1 Options the latest time when GTC/GTD orders may be cancelled is 5:15 p.m. ET (15 minutes following the close of the Curb Session).

GTC, GTD, and Day orders also persist between multiple GTH trading sessions on the same business day in connection with a holiday. On US holidays, `Cancel Order` messages for GTC orders may be issued until 11:45 a.m. ET, which is 15 minutes after the first GTH session ends at 11:30 a.m. ET. After the cancellation period, cancellation requests will be rejected with reason `O: Order known, but cannot be canceled at this time` until after the system restart completes. The Multi-Segment Holiday Day Order Handling port attribute will enable Members to designate if Day orders are cancelled or preserved across holiday trading segments comprising a single business date. See BOE Port Attributes for information on available port attributes.

#### Display Indicator Features

Orders are eligible for all of the sliding features described below. Quotes are eligible for the sliding behaviors described below if they are received with a price that locks the NBBO and with a PostingInstruction eligible for price sliding. Quotes that also cross the NBBO or displayed Cboe book will be accepted if within a configurable buffer range through the NBBO or displayed Cboe book. The buffer is set to 5% with a minimum of $0.05 and a maximum of $1.00.

Price Adjust (C1, C2, and EDGX Only)

If the limit price of an order does not lock or cross the NBBO, then the order will be ranked and displayed at the nearest permissible quoting increment.

If the limit price of a Price Adjust eligible order locks or crosses the NBBO, the limit price will be adjusted on entry to the locking price of the NBBO, while the displayed price and ranked price will be temporarily adjusted to the nearest permissible quoting increment. Price Adjust orders will never be ranked at the locking price or at a non-displayable price increment. If the NBBO widens, the displayed price and ranked price will be readjusted to the adjusted limit price.

The limit price of a Multiple Price Adjust order will not be permanently adjusted on entry if the limit price crosses the NBBO. The displayed price and ranked price will be the nearest permissible quoting increment and will be adjusted towards the original limit price based on changes in the prevailing NBBO.

#### Default Exchange Risk Protections

##### Market Order NBBO Width Protection for Simple Orders

Market Orders are rejected if the NBBO width is greater than 100% of the midpoint (with a minimum value of $5.00 and maximum value of $10.00).

Example

- NBBO = $1.00 x $4.00
- Midpoint = $2.50 x 100% = $2.50 (minimum of 5.00 is used instead)
- NBBO Width= $4.00 - $1.00 = $3.00

Even though the width is greater than 100% of the midpoint, Market Orders entered are accepted since the $5.00 minimum applies in this example.

##### Drill-Through Protection for Simple Orders

Each simple limit order will be assigned a drill-through price that allows simple orders to be executed up to an initial capped price through the contra side NBBO at time of order entry. For information on how this drill-through behavior is leveraged within a separate protection feature, see Wide Market Protection.

The drill-through mechanism will then repeatedly post the order at a more aggressive price. If the order reaches its limit price at any time during the iterative drill-through process, the order will remain at its limit price and the drill-through protection mechanism will not continue. The preset duration is 200 ms for C1 Proprietary Index Products and 1 second for all other products on BZX, C1, C2, and EDGX. Effective 08/24/26, the preset duration will be 100 ms for all products on all Exchanges.

Adjustments that would lock or invert an away displayed market will initiate a SUM auction.

Market orders submitted with a TimeInForce (FIX Tag 59) of `Day` along with elected stop orders are eligible for iterative drill-through price protection.

- Sell market orders will drill-through down to the minimum tick for the class where they will rest until cancelled or executed in full.
- Buy market orders will drill-through to the maximum allowable price for the class where they will rest until cancelled or executed in full.
- Market orders submitted with a TimeInForce of `IOC` will trade on arrival, capped at the first drill-through price level.

Separate stop and stop limit orders elected as a result of the same election trigger (NBBO update or last sale) will all use the same drill-through reference price. This may include orders with multiple stop prices if the election trigger covers multiple price levels. When multiple stop orders are elected as a result of the same election trigger, they are sequenced in time priority based on their order entry time.

- If an iterative drill-through protection is in progress, newly-elected stop and stop limit orders will join the current drill-through price. The newly-elected stop and stop limit orders will be prioritized behind orders already in drill-through.
- If no iterative drill-through is in progress, the initial drill-through reference price for stop and stop limit orders elected by the same market data event will be set to the contra side NBBO.

Triggered Market-On-Close and Limit-On-Close orders are handled the same as elected stop and stop limit orders with respect to drill-through reference price and priority.

- Existing market-width checks prevent market orders from executing if the bid/ask width is wider than a specified amount. This protection will be bypassed for triggered Market-On-Close orders and triggered stop orders.
- Existing Fat Finger limit price reasonability checks reject limit orders priced at an overly-aggressive level. Such protections will be bypassed for triggered Limit-On-Close orders and triggered stop limit orders.

The Drill-Through Price is calculated by taking the NBB or NBO and subtracting or adding, respectively, the Drill-Through Amount from the Drill-Through Price table. Calculated drill-through prices at an invalid pick increment for the class will be widened to the next valid tick.

**Table 1. Drill-Through Price**

| NBBO Price | Drill-Through Amount (All Symbols) |
|---|---|
| $0.00 - $5.00 | $0.10 |
| $5.01 - $20.00 | $0.20 |
| $20.01 - $50.00 | $0.30 |
| $50.01 - $100.00 | $0.40 |
| $100.01 & Above | $0.50 |

##### Wide Market Protection (C1 only)

Wide market protection (WMP) initiates a pause on inbound orders and elected stop/stop limit orders when the NBBO is deemed "wide" based on pre-established parameters. Specifically, the NBBO is considered wide if there is no NBO or if the bid/ask spread is wider than the WMP Determinant based on the NBB (Bid Price) in the table below. Inbound limit orders and triggered stop limit orders are subject to WMP if the NBBO is deemed to be wide and their price is marketable.

Orders subject to WMP will begin a drill-through process per Drill-Through Protection (above) using an initial drill-through display price as determined by WMP benchmark pricing. If a drill-through is in progress, the orders will join that process. WMP will not be initiated within 30 seconds prior to the close of the RTH or Curb trading sessions; however, any current drill-through processing will continue. Effective 08/24/26, WMP will be initiated up until the close of the RTH or Curb trading sessions and any current drill-through processing will continue.

WMP is applied to all proprietary index products.

###### WMP Benchmark Price Determinations

1. Last trade price, if more aggressive than or equal to the same-side NBBO
2. NBBO midpoint
3. Same-side NBB/NBO +/- the NBBO Adjustment Amount (NAA), as follows:
  1. Buy orders: NBB + NAA
  2. Sell orders: NBO - NAA
  3. If there is no NBO, sell orders use NBB + WMP Determinant

**Table 1. Wide Market Protection Determinants**

| NBB Price | WMP Determinant | NBBO Adjustment Amount (NAA) |
|---|---|---|
| ≤ $3.00 | ≥ $1.50 | $0.75 |
| $3.01-$5.00 | ≥ $2.00 | $1.00 |
| $5.01-$10.00 | ≥ $2.50 | $1.30 |
| $10.01-$20.00 | ≥ $4.00 | $2.00 |
| $20.01-$50.00 | ≥ $5.00 | $2.50 |
| $50.01-$100.00 | ≥ $10.00 | $4.50 |
| $100.01 - $200.00 | ≥ $23.00 | $6.00 |
| $200.01+ | ≥ $36.00 | $6.00 |

###### Subsequent Drill-through Pricing

If the market is wide and the order has been paused at the benchmark price, the order will be handled by iterative drill-through logic. The order paused at its benchmark price will be considered the initial drill-through iteration, and subsequent iterations will use existing drill-through logic. Note that drill-through amounts and timers may be modified.

Following the current drill through logic, new incoming market and limit orders will join the protected order(s) at the current drill-through price. All existing drill-through logic for handling the priority of orders in a bundle will be applied. Market-Maker quotes, Immediate or Cancel (IOC) orders, and Intermarket Sweep Orders (ISO) will bypass drill-through protection and can book or trade ahead of the drill-through bundle. If an away market or Market-Maker quote (but not an order) is displayed more aggressively than the drill-through price, the drill-through bundle will move to that price.

To mitigate risk of orders being un-executed towards the end of a trading day, WMP will be bypassed starting at a configurable amount of time prior to the close of the RTH and Curb sessions for the series. Note this timer does not apply to Global Trading Hours (GTH).

During the end of session timeframe:

1. WMP will be disabled. If no drill-through is in-progress, new non-marketable limit orders will simply book, and marketable limits and market orders will execute and be eligible to initiate drill-through after their initial execution.
2. Post-execution drill-through will continue to remain active and enabled. Any drill-through in progress will continue as normal. This includes drill-through which was previously initiated by WMP. At the end of the timer and the RTH session, any RTH-only orders will be cancelled, and any drill-through that is in progress will continue for orders eligible for the Curb session. This follows existing drill-through functionality. WMP will be reactivated at the start of the Curb session and will function the same as it does in RTH.
3. Inbound orders and newly elected stop and stop limit orders will continue to join drill-through in progress.

##### Market/Limit Order Drill-Through for Complex Orders

Default Drill-Through Protections will be applied to all complex limit and market orders that will cap the price of the order relative to the SNBBO at the time of order entry. Exchange defaults are 5% through the contra-side of the SNBBO. For orders other than SPX/SPXW, the price cap level will be no larger than $0.25 through the contra-side SNBBO. For SPX/SPXW, the price cap level will be no larger than $2.00 through the contra-side SNBBO. The price cap level will be no smaller than $0.02 through the contra-side SNBBO for all orders.

For complex orders not specifying a drill-through override with DrillThruProtection (FIX 6253), the drill-through mechanism will repeatedly post the order at a more aggressive price. If an order reaches its limit price at any time during the iterative drill-through process, the order will remain at its limit price and the drill-through protection mechanism will not continue. The preset duration is 200 ms for C1 Proprietary Index Products and 1 second for all other products on BZX, C1, C2, and EDGX. Effective 08/24/26, the preset duration will be 100 ms for all products on all Exchanges.

Sell market orders will drill through to the minimum tick for the class, where they will rest until cancelled or executed in full. Buy market orders will drill through to the maximum allowable price for the class, where they will rest until cancelled or executed in full. Market orders submitted with a TimeInForce of `IOC` will trade on arrival, capped at the first drill-through price level.

Customers can optionally set more or less restrictive Drill-Through Protections on individual orders using DrillThruProtection on the `New Order Multileg` message. Eligible complex orders may also initiate a COA throughout the iterative process.

##### Exchange Default Fat Finger Limits

Fat Finger Checks are mandatory for both Pre-Market and Regular Sessions and applied to both simple and complex orders. The following Exchange defaults are applied if not specified by the user. Fat Finger checks are not applicable for any Multi-Class Spread instruments that trade on the floor only. Fat Finger checks are applicable for Multi-Class complex instruments containing only SPX or SPXW legs as they are eligible for trading on the electronic book. See the Cboe Titanium U.S. Equities/Options Web Portal Port Controls Specification for details on managing fat finger settings intraday.

**Table 1. Pre-Open Curb/GTH Session (Eligible GTH Products, Excluding Exception Classes)**

| Limit Price Range | Fat Finger % Default | Fat Finger Dollar-Based Limit Default |
|---|---|---|
| $0.00 - $1.99 | No Value | $1.00 |
| $2.00 - $5.00 | No Value | $1.50 |
| $5.01 - $10.00 | No Value | $2.00 |
| $10.01 - $20.00 | No Value | $3.00 |
| $20.01 - $50.00 | No Value | $4.00 |
| $50.01 - $100.00 | No Value | $6.00 |
| $100.01 & Above | 8% | Not Valid |

**Table 2. Regular Session (Excluding Exception Classes)**

| Limit Price Range | Fat Finger % Default | Fat Finger Dollar-Based Limit Default |
|---|---|---|
| $0.00 - $1.99 | No Value | $0.50 |
| $2.00 - $5.00 | No Value | $0.75 |
| $5.01 - $10.00 | No Value | $1.00 |
| $10.01 - $20.00 | No Value | $1.50 |
| $20.01 - $50.00 | No Value | $2.00 |
| $50.01 - $100.00 | No Value | $3.00 |
| $100.01 & Above | 4% | Not Valid |

SPX and SPXW are considered Exception Classes and have unique Fat Finger default values for the Pre-Open and Regular sessions.

**Table 3. Exception Class Pre-Open Curb/GTH Session (SPX)**

| Limit Price Range | Fat Finger % Default | Fat Finger Dollar-Based Limit Default |
|---|---|---|
| $0.00 - $1.99 | No Value | $15.00 |
| $2.00 - $5.00 | No Value | $15.00 |
| $5.01 - $10.00 | No Value | $15.00 |
| $10.01 - $20.00 | No Value | $15.00 |
| $20.01 - $50.00 | No Value | $20.00 |
| $50.01 - $100.00 | No Value | $20.00 |
| $100.01 & Above | No Value | $25.00 |

**Table 4. Exception Class Regular Session (SPX)**

| Limit Price Range | Fat Finger % Default | Fat Finger Dollar-Based Limit Default |
|---|---|---|
| $0.00 - $1.99 | No Value | $1.00 |
| $2.00 - $5.00 | No Value | $1.50 |
| $5.01 - $10.00 | No Value | $2.00 |
| $10.01 - $20.00 | No Value | $3.00 |
| $20.01 - $50.00 | No Value | $4.00 |
| $50.01 - $100.00 | No Value | $6.00 |
| $100.01 & Above | 16% | Not Valid |

##### Default Fat Finger Limits for Quote Updates

Quotes that cross the NBBO or displayed Cboe book will be accepted if within a configurable buffer range through the NBBO or displayed Cboe book. The buffer is set to 5% with a minimum of $0.05 and a maximum of $1.00.

##### Maximum Open Order Limits

The exchange limits the maximum number of open orders allowed on a BOE or BOE Quote port to 200,000 per port. New orders will be rejected once this limit is breached until the number of open orders drops back below 200,000. Note this limit is only for orders and does not include open quotes sent over a BOE Quote port.

#### Risk Root

This document uses Risk Root to describe Cboe Options Risk Management functionality that is applied at the symbol-level. The Risk Root is defined as the underlying symbol. This impacts what value must be sent in the defined RiskRoot fields when performing a mass cancel or a risk trip reset.

#### Market Maker Trade Notifications (C1 Only)

Floor Trade Notifications (MMTNs) will be sent to Market Makers if they are identified as the contra party of a floor trade. MMTN messages will be sent over a designated FIXDrop or BOE order entry port. See BOE Port Attributes for information on available port attributes related to MMTNs.

Market Makers that receive a Floor Trade Notification should use the Floor Trade Confirmation message to respond to the NNTN if they agree with the terms of the trade. Alternatively, a Market Maker can use the `Add Floor Trade` message to enter their own version of the trade.

#### Cabinet and Sub-Cabinet Orders (C1 Only)

Cabinet orders are identified via PriceType = 0 and must have a valid TimeInForce of Day or GTC. Cabinet orders can support a position status of Open or Close indentified via the OpenClose field. Cabinet orders will only trade with other cabinet orders on the floor and therefore require direct or default floor routing instructions as described in Floor Routing (C1 Only).

##### Valid Pricing

Orders in non-penny classes must have a limit price less than or equal to $0.01 and orders in penny classes must have a limit price less than $0.01. Limit prices may be up to 4 decimal places.

##### Invalid Pricing

Orders in penny or non-penny classes priced greater than $0.01 and orders in penny classes priced equal to $0.01 will be rejected. Orders with a limit price that locks or crosses a resting non-cabinet order will be rejected.

##### Market Data

Cabinet orders or executions will not be disseminated on OPRA but will be available on the US Options Multicast PITCH and TOP feeds.

#### Auction Orders

For more information on the following Auction Only Orders, please see the Cboe Titanium U.S. Options Opening Process.

| Order Type | Order Entry Details |  |
|---|---|---|
| Market-On-Open (MOO) | OrdType = `1 (Market)` | TimeInForce = `2 (At the open)` |
| Limit-On-Open (LOO) | OrdType = `2 (Limit)` Price = `[price]` | TimeInForce = `2 (At the open)` |
| Settlement Liquidity On Open (SLOO) | OrdType = `2 (Limit)` Price = `[price]` | TimeInForce = `2 (At the open)` ExecInst = `r (Settlement Liquidity)` |

#### Port Types

All BOE port types may be ordered using the Logical Port Request tool on the Customer Web Portal. Port attribute changes may also be requested through this tool by submitting a Modify request for one or more existing BOE ports.

##### BOE Order Ports

Standard BOE ports support simple and complex order entry but do not support the usage of `Quote Update` message types and `Purge Orders` message types. The attempted usage of any of these message types on standard BOE order ports will result in a rejection of the disallowed message.

Standard BOE ports are limited to 5,000 inbound messages per second. Once the inbound limit is reached new orders are rejected, modifies are handled as cancels, and cancels are processed normally.

##### BOE Bulk Quoting Ports

BOE Bulk Quoting ports are intended for use by market makers quoting large numbers of simple options series using `Quote Update` messages and complex series using `Complex Quote Update` messages. As a result, they are unthrottled in terms of number of messages that may be accepted within any given period of time from a TPH. However, market makers may still experience poor performance on Bulk Quoting ports if excessive message traffic is sent.

The PreventMatch field may not be specified on `Quote Update` or `Complex Quote Update` messages and Match Trade Prevention is only available if defaulted at the port level. For Bulk Quoting ports, only Cancel Newest, Cancel Oldest, or Cancel Both are permitted. If a Bulk Quoting port is not configured with both a default MTP Modifier and Unique ID Level, Match Trade Prevention will be disabled.

**Table 1. Bulk Quoting Port Order Acceptance**

| Message | Simple/Complex | Accepted over Bulk Quoting Port? | Other Conditions |
|---|---|---|---|
| Quote Update | Simple | Yes |  |
| Quote Update (Short) | Simple | Yes |  |
| Complex Quote Update | Complex | Yes |  |
| Complex Quote Update (Short) | Complex | Yes |  |
| New Order | Simple | Yes | Must have a TimeInForce value of Day or GTD with a same day expiration on C1, C2, and EDGX. |
| New Order (Auction Response) | Simple | Yes |  |
| New Order Cross (AIM or QCC) | Simple | No |  |
| New Order Cross Multileg | Simple | No |  |
| Purge Orders | Simple/Complex | No |  |
| Reset Risk | Simple/Complex | Yes |  |
| New Complex Instrument | Complex | Yes |  |
| Quote Update | Complex | No |  |
| New Complex Order | Complex | Yes | Must be Post Only ( RoutingInst = P). Must have a TimeInForce value of Day or GTD with a same day expiration on C1, C2, and EDGX. |
| New Complex Order (COA Response) | Complex | Yes |  |

Bulk Quoting Port Quote/Order Behavior Matrix

The following matrix describes the liquidity removal behavior of quotes and orders sent on Bulk Quoting ports. Bulk Quoting ports are available for use by all customers but only Market Makers may use `Quote Update` and `Complex Quote Update` messages. On C1, C2, and EDGX Options, only registered Market Makers are allowed to remove resting Market Maker liquidity using `New Order` messages.

Once a quote or order is posted to the exchange book, liquidity removal against any contra capacity is always allowed in the case that a subsequent event causes the resting quote or order to be re-evaluated, such as the Opening/Re-Opening Process.

- Only Market-Makers can send `Quote Update` and `Complex Quote Update` messages, and such messages can only be sent on a Bulk Quoting Port.
- Liquidity removal using a `New Order` message on Bulk Quoting ports is restricted to appointed Market-Makers only. Removal of any resting order with a `New Order` message by a Market-Maker when not appointed in the class will result in an `Order Rejected` message with OrderRejectReason set to `A` = Market maker must be registered to remove liquidity on quoting port.
- Liquidity removal using `Complex Quote Update` messages on Bulk Quoting ports is not allowed and will result in a QuoteResult reject of `P` = Rejected, can't post.
- `New Order` messages can be sent over FIX/BOE Ports and Bulk Quoting Ports by all capacities. However, on C1, C2, and EDGX, non-Market-Maker `New Order` messages sent over a Bulk Quoting Port must be marked Post-Only and thus cannot remove liquidity.

**Table 2. Bulk Quoting Port Quote/Order Behavior Matrix**

|  | Bulk Quoting Port | FIX/BOE Port |  |  |  |  |
|---|---|---|---|---|---|---|
|  | C2 | EDGX | C1 | C2 | EDGX | C1 |
| Can a Market-Maker send `New Order` messages? | Yes | Yes | Yes | Yes | Yes | Yes |
| Can a Market-Maker send `Quote Update` messages? | Yes | Yes | Yes | No | No | No |
| Can a Market-Maker send `Complex Quote Update` messages? | N/A | N/A | Yes | N/A | N/A | No |
| Can a non-Market-Maker send `New Order` messages? | Yes | Yes | Yes | Yes | Yes | Yes |
| Can a non-Market-Maker send `Quote Update` messages? | No | No | No | No | No | No |
| Can a non-Market-Maker send `Complex Quote Update` messages? | N/A | N/A | No | N/A | N/A | No |
| Can an aggressing Market-Maker remove a resting Market-Maker quote or order? | No | No | No | Yes | Yes | Yes |
| Can an aggressing Market-Maker remove a resting non-Market-Maker order? | Yes | Yes | Yes | Yes | Yes | Yes |
| Can an aggressing non-Market-Maker remove a resting Market-Maker quote or order? | No | No | No | Yes | Yes | Yes |
| Can an aggressing non-Market-Maker remove a resting non-Market-Maker order? | No | No | No | Yes | Yes | Yes |

* Under no circumstances can an order submitted with a `Complex Quote Update` message remove resting liquidity on entry to the order book.

##### BOE Purge Ports

BOE Purge Ports support a single `Purge Orders` message type. Members may use this port type to request a cancellation of groups of orders, including orders across multiple BOE Order or Bulk Quoting ports.

#### Floor Routing (C1 Only)

All orders routed to the floor must include explicit routing instructions that includes two features: 1) floor routing instruction indicating Direct or Default routing behavior and 2) floor destination information. Floor routing behavior is specified in FloorRoutingInst (22303). Direct routing sends the order to the indicated PAR workstation, while default routing indicates that electronic execution is preferred, but the order may be routed to the indicated PAR if it cannot be processed electronically.

Examples of conditions which cause default routing to the Floor include:

- a complex order having an AON contingency
- a complex order with multiple underlying components
- not held orders

Floor destination instructions are specified in FloorDestination (22100), indicating a PAR workstation (ex. W001) to route to on the floor (or `PARO` to route to the Floor PAR Official of the underlying symbol) if not specified on the inbound message. See BOE Port Attributes for information on available port attributes, including Default FloorRoutingInst and Default FloorDestination.

**Table 1. Floor Routing Handling**

| Order Tags/Port Settings | Handling of the Order |  |  |  |  |
|---|---|---|---|---|---|
| Order Floor Destination | Order FloorRoutingInst | Port Default Floor Destination | Port Default FloorRoutingInst | Orders Only Executed on Floor (i.e. complex AON) | All Other Order Types |
|  |  |  | E (default) | Reject: ineligible for electronic book | Process electronically |
|  |  |  | D | Reject: requires a floor destination | Reject: requires a floor destination |
|  |  |  | X | Reject: requires a floor destination | Reject: requires a floor destination |
|  |  | W001 | E (default) | Reject: ineligible for electronic book | Process electronically |
|  |  | W001 | D | Route to floor: W001 | Route to floor: W001 |
|  |  | W001 | X | Route to floor: W001 | Process electronically |
| W009 |  |  | E (default) | Reject: ineligible for electronic book | Process electronically |
| W009 |  | W001 | D | Route to floor: W009 | Route to floor: W009 |
| W009 |  |  | X | Route to floor: W009 | Process electronically |
| W009 | E |  |  | Reject: ineligible for electronic book | Process electronically |
| W009 | D |  |  | Route to floor: W009 | Route to floor: W009 |
| W009 | X |  |  | Route to floor: W009 | Process electronically |
|  | E |  |  | Reject: ineligible for electronic book | Process electronically |
|  | D |  |  | Reject: requires a floor destination | Reject: requires a floor destination |
|  | X |  |  | Reject: requires a floor destination | Process electronically |

E = Electronic only D = Direct X = Route to floor if unable to process electronically

##### Floor Representation Restatements (C1 Only)

Orders routed to the trading floor will be represented to the open outcry crowd before being traded in the crowd. The Cboe BOE protocol provides a mechanism for clients to receive restatement of orders at the time of representation.

BOE Floor Representation Restatements are sent to connected clients for each order when the floor broker reports representation of the order to the crowd. Floor Representation Restatements sent to BOE ports will also be sent to connected Order by Order Drop clients having the Floor Representation Restatements port attribute enabled.

`Order Restated` messages for floor representation will have RestatementReason = `F` (Represented on Floor). The TransactTime (60) will be the recorded time of the representation.

## Session

### Message Header Fields

Each message has a ten byte header. The two initial StartOfMessage bytes are present to aid in message reassembly for network capture purposes. The MatchingUnit field is only populated on sequenced, non-session level messages sent from Cboe to the Member. Messages from Member to Cboe and all session level messages must always set this value to 0.

**Table 1. Message Header Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | Message type. |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. For session level traffic, the unit is set to 0. For messages from Member to Cboe, the unit must be 0. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Messages from Cboe to Member are sequenced distinctly per matching unit. Messages from Member to Cboe are sequenced across all matching units with a single sequence stream. Member can optionally send a 0 sequence number on all messages from Member to Cboe. Cboe highly recommends that Members send sequence numbers on all inbound messages. |

### Login, Replay and Sequencing

Session level messages, both inbound (Member to Cboe) and outbound (Cboe to Member) are unsequenced.

Inbound (Member to Cboe) application messages are sequenced. Upon reconnection, Cboe informs the Member of the last processed sequence number; the Member may choose to resend any messages with sequence numbers greater than this value. A gap forward in the Member's incoming sequence number is permitted at any time and is ignored by Cboe. Gaps backward in sequence number (including the same sequence number used twice) are never permitted and will always result in a `Logout` message being sent and the connection being dropped.

Most (but not all) outbound (Cboe to Member) application messages are monotonically sequenced per matching unit. Each message's documentation will indicate whether it is sequenced or unsequenced. While matching units on BOE correspond directly to matching units on Multicast PITCH, sequence numbers do not.

Upon reconnection, a Member sends the last received sequence number per matching unit in a `Login Request` message. Cboe will respond with any missed messages. However, when the NoUnspeciedUnitReplay flag is enabled in the `Login Request` message, Cboe will exclude messages from unspecified matching units during replay. Cboe will send a `Replay Complete` message when replay is finished. If there are no messages to replay, a `Replay Complete` message will be sent immediately after a `Login Response` message. Cboe will reject all orders during replay.

Assuming a Member has requested replay messages using a properly formatted `Login Request` message after a disconnect, any unacknowledged orders remaining with the Member after the `Replay Complete` message is received should be assumed to be unknown to Cboe.

Unsequenced messages will not be included during replay.

A session is identified by the username and session sub-identifier (both supplied by Cboe). Only one concurrent connection per username and session sub-identifier is permitted.

If a login is rejected, an appropriate `Login Response` message will be sent and the connection will be terminated.

### Sequence Reset

A reset sequence operation is not available for Binary Order Entry. However, a Member can send a `Login Request` message with NoUnspecifiedUnitReplay field enabled, and NumberOfUnits field set to zero. Then, upon receiving a `Login Response` message from Cboe, the Member can use the LastReceivedSequenceNumber field as the sequence starting point for sending future messages.

### Heartbeats

`Client Heartbeat` messages are sent from Member to Cboe and `Server Heartbeat` messages are sent from Cboe to Member if no other data has been sent in that direction for one second. Like other session level messages, heartbeats from Cboe to the Member do not increment the sequence number. If Cboe receives no inbound data or heartbeats for 5 seconds, a `Logout` message will be sent and the connection will be terminated. Members are encouraged to have a one second heartbeat interval and to perform similar connection staleness logic.

### Logging Out

To gracefully log out of a session, a `Logout Request` message should be sent by the Member. Cboe will finish sending any queued data for that port and will then respond with its own `Logout` message and close the connection. After receipt of a `Logout Request` message, Cboe will ignore all other inbound (Member to Cboe) messages except for `Client Heartbeat` messages.

## Session Messages

### Member to Cboe

#### Login Request Message Fields

A `Login Request` message must be sent as the first message upon connection.

A number of repeating parameter groups, some of which may be required, are sent at the end of the message. Ordering of parameter groups is not important. New parameter groups may be added in the future with no notice.

**Table 1. Login Request Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x37` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |
| SessionSubID | 10 | 4 | Alphanumeric | Session Sub ID supplied by Cboe. |
| Username | 14 | 4 | Alphanumeric | Username supplied by Cboe. |
| Password | 18 | 10 | Alphanumeric | Password supplied by Cboe. |
| NumberOfParam Groups | 28 | 1 | Binary | A number, n (possibly 0), of parameter groups to follow. |
| ParamGroup1 |  |  |  | First parameter group. |
| … |  |  |  |  |
| ParamGroupn |  |  |  | Last parameter group. |

Unit Sequences Parameter Group

This parameter group includes the last consumed sequence number per matching unit received by the Member. Cboe uses these sequence numbers to determine what outbound (Cboe to Member) traffic, if any, was missed by the Member. If this parameter group is not sent, it's assumed the Member has not received any messages (e.g., start of day).

The Member does not need to include a sequence number for a unit if they have never received messages from it. For example, if the Member has received responses from units 1, 3, and 4, the `Login Request` message need not include unit 2. If the Member wishes to send a value for unit 2 anyway, 0 would be the only allowed value.

Only one instance of this parameter group may be included.

**Table 2. Login Request - Unit Sequences Parameter Group**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| ParamGroupLength | 0 | 2 | Binary | Number of bytes for the parameter group, including this field. |
| ParamGroupType | 2 | 1 | Binary | `0x80` |
| NoUnspecified UnitReplay | 3 | 1 | Binary | Flag indicating whether to replay missed outgoing (Cboe to Member) messages for unspecified units. `0x00` = False (Replay Unspecified Units) `0x01` = True (Suppress Unspecified Units Replay) |
| NumberOfUnits | 4 | 1 | Binary | A number, n (possibly 0), of unit/sequence pairs to follow, one per unit from which the Member has received messages. |
| UnitNumber 1 |  | 1 | Binary | A unit number. |
| UnitSequence1 |  | 4 | Binary | Last received sequence number for the unit. |
| … |  |  |  |  |
| UnitNumber n |  | 1 | Binary | A unit number. |
| UnitSequencen |  | 4 | Binary | Last received sequence number for the unit. |

Return Bitfields Parameter Group

This parameter group, which may be repeated, indicates which attributes of a message will be returned by Cboe for the remainder of the session. This allows Members to tailor the echoed results to the needs of their system without paying for bandwidth or processing they do not need.

Listing of the return bitfields which are permitted per message is contained in Return Bitfields Per Message.

**Table 3. Login Request - Return Bitfields Parameter Group**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| ParamGroupLength | 0 | 2 | Binary | Number of bytes for the parameter group, including this field. |
| ParamGroupType | 2 | 1 | Binary | `0x81` |
| MessageType | 3 | 1 | Binary | Return message type for which the bitfields are being specified (e.g., 0x25 for an `Order Acknowledgment` message). |
| NumberOfReturn Bitfields | 4 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield1 | 5 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldn |  | 1 | Binary | Last bit field. |

Note this example is for illustrative purposes only. Actual login messages will contain specification of return bitfields for a larger set messages and each return bitfield specification will be complete, whereas the example below is only an illustration for purposes of demonstrating the construction of the `Login Request` message.

**Table 4. Login Request Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `3D 00` | 61 bytes |
| MessageType | `37` | `Login Request` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages |
| SessionSubID | `30 30 30 31` | 0001 |
| Username | `54 45 53 54` | `TEST` |
| Password | `54 45 53 54 49 4E 47 00 00 00` | `TESTING` |
| NumberOfParam Groups | `03` | 3 parameter groups |
| ParamGroupLength | `0F 00` | 15 bytes for this parameter group |
| ParamGroupType | `80` | `0x80` = Unit Sequences |
| NoUnspecified UnitReplay | `01` | True (replay only specified units) |
| NumberOfUnits | `02` | Two unit/sequence pairs to follow; |
| UnitNumber1 | `01` | Unit 1 |
| UnitSequence1 | `4A BB 01 00` | Last received sequence of 113,482 |
| UnitNumber 2 | `02` | Unit 2 |
| UnitSequence2 | `00 00 00 00` | Last received sequence of 0 |
| ParamGroupLength | `08 00` | 8 bytes for this parameter group |
| ParamGroupType | `81` | `0x81`=`Return Bitfields` |
| MessageType | `25` | `0x25`=`Order Acknowledgment` |
| NumberOfReturn Bitfields | `03` | 3 bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `41` | Symbol, Capacity |
| ReturnBitfield3 | `05` | Account, ClearingAccount |
| ParamGroupLength | `0B 00` | 11 bytes for this parameter group |
| ParamGroupType | `81` | `0x81` =`Return Bitfields` |
| MessageType | `2C` | `0x2C`=`Order Execution` |
| NumberOfReturn Bitfields | `06` | 6 bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `41` | Symbol, Capacity |
| ReturnBitfield3 | `07` | Account, ClearingFirm, ClearingAccount |
| ReturnBitfield4 | `00` | No bitfields from byte 4 |
| ReturnBitfield5 | `40` | BaseLiquidityIndicator |
| ReturnBitfield6 | `00` | No bitfields from byte 6 |

#### Logout Request Message Fields

To end the session, the Member should send a `Logout Request` message. Cboe will finish sending any queued data and finally respond with a `Logout` message and close the connection.

A Member may simply close the connection without logging out, but may lose any queued messages by doing so.

**Table 1. Logout Request Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x02` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |

**Table 2. Logout Request Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `08 00` | 8 bytes |
| MessageType | `02` | `Logout Request` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages |

#### Client Heartbeat Message Fields

See Heartbeats for more information about heartbeats and the session level protocol.

**Table 1. Client Heartbeat Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x03` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |

**Table 2. Client Heartbeat Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `08 00` | 8 bytes |
| MessageType | `03` | `Client Heartbeat` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages |

### Cboe to Member

#### Login Response Message Fields

`A Login Response` message is sent in response to a `Login Request` message. On a successful login, the LoginResponseStatus will be set to `A`. On a failed login, LoginResponseStatus will be set to a value other than `A`, and LoginResponseText will be set to an appropriate failure description. The length of the LoginResponse will vary depending on acceptance or rejection of the LoginRequest and the parameter groups included on the LoginResponse. Customers should be prepared to handle variable length LoginResponse messages.

Cboe will verify Return Bitfields at login time. If the Return Bitfields in a Return Bitfields Parameter Group are invalid, LoginResponseStatus will be set to `F`, and LoginResponseText will include a description of which byte and bit are invalid. This is done to ensure that reserved fields are not used, and only options that apply to the local market are set. See Return Bitfields Per Message for additional information.

Note that two sets of sequence numbers are available on the `Login Response` message. The set of sequence numbers in the body are the actual Cboe to Member sequence numbers indicating the highest sequence numbers available per matching unit. If specified during login, the Unit Sequences Parameter Group will be returned as an echo of the sequence numbers the Member presented during login as the highest received. If the sequence numbers are different, the gap will be filled by Cboe during the replay. A subset of units can be provided in the `Login Request` message; however, all units will be provided in the `Login Response` message.

**Table 1. Login Response Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x24` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for session level messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |
| LoginResponseStatus | 10 | 1 | Alphanumeric | Accepted, or the reason for the rejection. `A` = Login Accepted `N` = Not authorized (invalid username/password) `D` = Session is disabled `B` = Session in use `S` = Invalid session `Q` = Sequence ahead in Login message `I` = Invalid unit given in Login message `F` = Invalid return bit field in login message `M` = Invalid Login Request message structure |
| LoginResponseText | 11 | 60 | Text | Human-readable text with additional information about the reason for rejection. ASCII NUL (0x00) filled on the right, if necessary. |
| NoUnspecified UnitReplay | 71 | 1 | Binary | Echoed back from the original `Login Request` message. |
| LastReceived SequenceNumber | 72 | 4 | Binary | Last inbound (Member to Cboe) message sequence number processed by Cboe. |
| NumberOfUnits | 76 | 1 | Binary | A number, n, of unit/sequence pairs to follow, one per unit. A pair for every unit will be sent, even if no messages have been sent to this port today. For unsuccessful logins, this will be 0. |
| UnitNumber 1 |  | 1 | Binary | A unit number. |
| UnitSequence1 |  | 4 | Binary | Highest available Cboe to Member sequence number for the unit. |
| … |  |  |  |  |
| UnitNumber n |  | 1 | Binary | A unit number. |
| UnitSequencen |  | 4 | Binary | Highest available Cboe to Member sequence number for the unit. |
| NumberOfParam Groups |  | 1 | Binary | Echoed back from the original `Login Request` message. |
| ParamGroup1 |  |  |  | Echoed back from the original `Login Request` message. |
| … |  |  |  |  |
| ParamGroupn |  |  |  | Echoed back from the original `Login Request` message. |

**Table 2. Login Response Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `88 00` | 136 bytes |
| MessageType | `24` | `Login Response` |
| MatchingUnit | `00` | Always 0 for session messages |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages |
| LoginResponseStatus | `41` | `A` = Login Accepted |
| LoginResponseText | `41 63 63 65 70 74 65 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | `Accepted` |
| NoUnspecified | `01` | True (replay only specified units) |
| UnitReplay |  |  |
| Last Received | `54 4A 02 00` | Last sequence Cboe received of 150,100 |
| Sequence Number |  |  |
| NumberOfUnits | `04` | Four unit/sequence pairs to follow; |
| UnitNumber 1 | `01` | Unit 1 |
| UnitSequence 1 | `4A BB 01 00` | Actual last sequence of 113,482 |
| UnitNumber 2 | `02` | Unit 2 |
| UnitSequence 2 | `00 00 00 00` | Actual last sequence of 0 |
| UnitNumber 3 | `02` | Unit 3 |
| UnitSequence3 | `00 00 00 00` | Actual last sequence of 0 |
| UnitNumber 4 | `02` | Unit 4 |
| UnitSequence 4 | `79 A1 00 00` | Actual last sequence of 41,337 |
| NumberOfParamGroups | `03` | 3 parameter groups |
| ParamGroupLength | `14 00` | 20 bytes for this parameter group |
| ParamGroupType | `80` | `0x80` = Unit Sequences |
| NoUnspecified | `01` | True (replay unspecified units) |
| UnitReplay |  |  |
| NumberOfUnits | `03` | Three unit/sequence pairs to follow; |
| UnitNumber 1 | `01` | Unit 1 |
| UnitSequence 1 | `4A BB 01 00` | Last received sequence of 113,482 |
| UnitNumber 2 | `02` | Unit 2 |
| UnitSequence 2 | `00 00 00 00` | Last received sequence of 0 |
| UnitNumber 3 | `04` | Unit 4 |
| UnitSequence 3 | `79 A1 00 00` | Last received sequence of 41,337 |
| ParamGroupLength | `08 00` | 8 bytes for this parameter group |
| ParamGroupType | `81` | `0x81` = Return Bitfields |
| MessageType | `25` | `0x25` = `Order Acknowledgment` |
| NumberOfReturnBitfields | `03` | 3 bitfields to follow |
| ReturnBitfield 1 | `00` | No bitfields from byte 1 |
| ReturnBitfield 2 | `41` | Symbol, Capacity |
| ReturnBitfield 3 | `05` | Account, ClearingAccount |
| ParamGroupLength | `0C 00` | 12 bytes for this parameter group |
| ParamGroupType | `81` | `0x81` = Return Bitfields |
| MessageType | `2C` | `0x2C` = `Order Execution` |
| NumberOfReturn Bitfields | `07` | 7 bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield 2 | `41` | Symbol, Capacity |
| ReturnBitfield 3 | `07` | Account, ClearingFirm, ClearingAccount |
| ReturnBitfield 4 | `00` | No bitfields from byte 4 |
| ReturnBitfield 5 | `40` | BaseLiquidityIndicator |
| ReturnBitfield 6 | `00` | No bitfields from byte 6 |
| ReturnBitfield 7 | `01` | SubLiquidityIndicator |

#### Logout Message Fields

A `Logout` message is usually sent in response to a `Logout Request` message. Any queued data is transmitted, a `Logout` message is sent, and Cboe will close the connection. However, a `Logout` message may also be sent if the Member violates the protocol specification (e.g., by moving backwards in sequence number).

A `Logout` message is also sent for any ports that are connected when the Cboe Options Exchanges shut down. The shut down time for Cboe Options Exchanges is variable each day but is scheduled to occur at 17:30 ET. The message is sent without first receiving a logout request from the Member. The message contains LogoutReason = `E` for End of Day.

The `Logout` message contains the last transmitted sequence number for each unit, allowing the Member to check that their last received sequence number matches.

**Table 1. Logout Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x08` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for session level messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |
| LogoutReason | 10 | 1 | Alphanumeric | The reason why the Logout message was sent. `U` = User Requested `E` = End of Day `A` = Administrative `!` = Protocol Violation |
| LogoutReasonText | 11 | 60 | Text | Human-readable text with additional information about the reason for logout. Particularly useful if LogoutReason = ! (Protocol Violation). |
| LastReceived SequenceNumber | 71 | 4 | Binary | Last inbound (Member to Cboe) message sequence number processed by Cboe. |
| NumberOfUnits | 75 | 1 | Binary | A number, n (possibly 0), of unit/sequence pairs to follow, one per unit from which the client has received messages. |
| UnitNumber 1 |  | 1 | Binary | A unit number. |
| UnitSequence1 |  | 4 | Binary | Highest available sequence number for the unit. |
| … |  |  |  |  |
| UnitNumber n |  | 1 | Binary | A unit number. |
| UnitSequencen |  | 4 | Binary | Highest available sequence number for the unit. |

**Table 2. Logout Response Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `55 00` | 85 bytes |
| MessageType | `08` | Logout |
| MatchingUnit | `00` | Always 0 for session level messages |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages |
| LogoutReason | `55` | `U` = User Requested |
| LogoutReasonText | `55 73 65 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | `User` |
| LastReceived | `54 5A 02 00` | Last Cboe received sequence of 150,100 |
| SequenceNumber |  |  |
| NumberOfUnits | `02` | Two unit/sequence pairs to follow; |
| UnitNumber 1 | `01` | Unit 1 |
| UnitSequence1 | `4A BB 01 00` | Last sent sequence of 113,482 |
| UnitNumber 2 | `02` | Unit 2 |
| UnitSequence2 | `00 00 00 00` | Last sent sequence of 0 |

#### Server Heartbeat Message Fields

See Heartbeats for more information about heartbeats and the session level protocol.

**Table 1. Server Heartbeat Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x09` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for session level messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |

**Table 2. Server Heartbeat Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `08 00` | 8 bytes |
| MessageType | `09` | `Server Heartbeat` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages |

#### Replay Complete Message Fields

See Login, Replay and Sequencing for more information.

**Table 1. Replay Complete Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x13` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for session level messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |

**Table 2. Replay Complete Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `08 00` | 8 bytes |
| MessageType | `13` | `Replay Complete` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages |

## Application Messages

### Member to Cboe

#### New Order Message Fields

A `New Order` message consists of a number of required fields followed by a number of optional fields. The optional fields used are specified by setting bits in the NewOrderBitfields. Fields must be appended at the end of the message, starting with the lowest order enabled bit in the first bit field first.

Permitted input optional fields are described in New Order.

**Table 1. New Order Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x38` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| ClOrdID | 10 | 20 | Text | Corresponds to ClOrdID (11) in Cboe FIX. ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol (@) and double quotes. If the ClOrdID matches a live order, the order will be rejected as duplicate. Note: Cboe only enforces uniqueness of ClOrdID values among currently live orders, which includes long-lived, persisting GTC/GTD orders . However, we strongly recommend that you keep your ClOrdID values unique. |
| Side | 30 | 1 | Alphanumeric | Corresponds to Side (54) in Cboe FIX. `1` = Buy `2` = Sell |
| OrderQty | 31 | 4 | Binary | Corresponds to OrderQty (38) in Cboe FIX. Order quantity. System limit is 999,999 contracts. |
| NumberOfNewOrderBitfields | 35 | 1 | Binary | Bitfield identifying which bitfields are set. Field values must be appended to the end of the message. |
| NewOrderBitfield¹ | 36 | 1 | Binary | Bitfield identifying fields to follow. |
| …. |  |  |  |  |
| NewOrderBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

Required Order Attributes:

The following are required to be sent on new orders:

- Some form of symbology (see Symbology below);
- Price (limit orders) or Price and/or OrdType (limit or market orders. Note market and stop/stop limit orders are not supported during GTH or Curb sessions); and,
- Capacity;

All price fields (Price, StopPx) must be entered as non-negative values.

All other values have defaults. See List of Optional Fields for information about each optional field, including its default value.

**Table 2. New Order Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `59 00` | 89 bytes |
| MessageType | `38` | `New Order` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| Side | `31` | Buy |
| OrderQty | `64 00 00 00` | 100 contracts |
| NumberOfNewOrder Bitfields | `04` | Four bitfields to follow |
| NewOrderBitfield1 | `04` | Price |
| NewOrderBitfield2 | `C1` | Symbol, Capacity, RoutingInst |
| NewOrderBitfield3 | `01` | Account |
| NewOrderBitfield4 | `17` | MaturityDate, StrikePrice, PutOrCall, OpenClose |
| Price | `70 17 00 00 00 00 00 00` | 0.60 |
| Symbol | `4D 53 46 54 00 00 00 00` | MSFT |
| Capacity | `43` | `C` = Customer |
| RoutingInst | `52 00 00 00` | `R` = Routable |
| Account | `44 45 46 47 00 00 00 00 00 00 00 00 00 00 00 00` | DEFG |
| MaturityDate | `EF DB 32 01` | 2011-03-19 |
| StrikePrice | `98 AB 02 00 00 00 00 00` | 17.50 |
| PutOrCall | `31` | `1` = Call |
| OpenClose | `4F` | `O` = Open |

#### New Order Cross Message Fields (C1 and EDGX Only)

A `New Order Cross` message contains the details for both the agency (initiating) and contra side(s) of a cross order (such as an AIM order). The message consists of a number of required fields including Symbol, Price, OrderQty, and relevant clearing information for all parties, as well as a number of optional fields.

The first order in the list is the agency order, while the rest are contra side responses. There is a maximum of ten (10) contra-parties that can be supplied with the order, for a total of eleven (11) repeating groups, as described below.

In each repeating group, the Side, AllocQty, ClOrdID, Capacity, OpenClose, and ClearingFirm are always required. Beyond that, the bits in the NewOrderCrossBitfields control which fields are expected. Any fields that are specified in NewOrderCrossBitfields that appear in the repeating groups should not be supplied in the optional fields that come after the repeating groups.

Permitted input optional fields are described in New Order Cross (C1 and EDGX Only).

**Table 1. New Order Cross Message Fields (C1 and EDGX Only)**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x41` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| CrossID | 10 | 20 | Text | Corresponds to CrossID (548) in Cboe FIX. Day-unique identifier for the cross order chosen by the client. Characters in the ASCII range 33- 126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes. |
| CrossType | 30 | 1 | Alphanumeric | Corresponds to CrossType (549) in Cboe FIX. Type of auction order being submitted. This indicates the type of auction that will be initiated upon order entry. `1` = Automated Improvement Mechanism (AIM) `2` = Qualified Contingent Cross (QCC) `3` = Solicitation Cross (SAM) `4` = Position Compression Cross (PCC) (C1 Only) |
| CrossPrioritization | 31 | 1 | Alphanumeric | Corresponds to CrossPrioritization (550) in Cboe FIX. Indicates which side of the cross order will be prioritized for execution. This identifies the Agency side. `1` = Buy `2` = Sell |
| Price | 32 | 8 | Binary Price | Corresponds to Price (44) in Cboe FIX. Auction Price. Must be non-negative. |
| OrderQty | 40 | 4 | Binary | Corresponds to OrderQty (38) in Cboe FIX. Order quantity. System limit is 999,999 contracts. |
| NumberOfNewOrderCrossBitfields | 44 | 1 | Binary | Bitfield identifying which bitfields are set |
| NewOrderCrossBitfield¹ | 45 | 1 | Binary | Bitfield identifying fields to follow. |
| …. |  |  |  |  |
| NewOrderCrossBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| GroupCnt |  | 2 | Binary | Number of order allocations represented by re- peating groups included in this cross order. Must be at least 2 (One agency and one contra), and no more than 11. |
| Repeating Groups of… |  |  |  |  |
| Side |  | 1 | Alphanumeric | Corresponds to Side (54) in Cboe FIX. `1` = Buy `2` = Sell |
| AllocQty |  | 4 | Binary | Corresponds to AllocQty (80) in Cboe FIX. Number of contracts for this party. |
| ClOrdID |  | 20 | Text | Corresponds to ClOrdID (11) in Cboe FIX. Day-unique ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes. If the ClOrdID matches a live order, the order will be rejected as duplicate. Note: Cboe only enforces uniqueness of ClOrdID values among currently live orders. However, we strongly recommend that you keep your ClOrdID values day-unique. |
| Capacity |  | 1 | Alpha | Corresponds to OrderCapacity (47) in Cboe FIX. `C` = Customer `M` = Market Maker `F` = Firm `U` = Professional Customer `N` = AwayMarket Maker `B` = Broker-Dealer `J` = Joint Back Office |
| OpenClose |  | 1 | Alphanumeric | Corresponds to OpenClose (77) in Cboe FIX. Indicates status of client position in the option leg. `O` = Open `C` = Close `N` = None* *Option legs with Capacity = `M` or ‘N’ will not be required to specify OpenClose on their legs or may optionally specify a value of ‘N’, unless the series is limited to closing only. If the leg is limited to closing only transactions, only Capacity = `M` will be permitted to submit OpenClose = `O` if the order has `TimeInForce` = ‘3’ (IOC) and RoutingInst = `B` , or the order has a RoutingInst = `P` . An Open position cannot trade with an Open position for series limited to Closing Only transactions, even if the inbound IOC from the aggressing market maker is sent with that combination of tags. |
| GiveUpFirmID |  | 4 | Alpha | Corresponds to GiveUpFirmID (9946) in Cboe FIX. EFID that will clear the trade. |
| Account (Optional) |  | 16 | Text | See List of Optional Fields. |
| CMTANumber (Optional) |  | 4 | Binary | See List of Optional Fields. |
| ClearingAccount (Optional) |  | 4 | Text | See List of Optional Fields. |
| ClearingOptionalData (Optional) |  | 16 | Text | See List of Optional Fields. |
| FrequentTraderID (Optional) |  | 6 | Text | See List of Optional Fields. |
| Optional fields. . . |  |  |  | Optional fields as set in the bitmap. Note, optional fields that occur in the repeating groups appear above, repeating per group, not within this block. |

Required Order Attributes:

- Some form of symbology (see Cboe Titanium U.S. Symbology Reference)
- Agency order’s Side must match the cross order’s CrossPrioritization
- Each contra-party allocation must have the opposite Side
- Each side’s cumulative AllocQty must equal the cross order’s OrderQty

**Table 2. New Order Cross Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `B0 00` | 176 bytes |
| MessageType | `41` | `New Order Cross` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| CrossID | `4E 5A 31 56 37 42 4A 5F 41 63 63 65 70 74 42 75 79 00 00 00` | NZ1V7BJ_AcceptBuy |
| CrossType | `31` | `1` = AIM Order |
| CrossPrioritization | `31` | `1` = Agency Buy |
| Price | `20 4E 00 00 00 00 00 00` | $2.00 |
| OrderQty | `64 00 00 00` | 100 contracts |
| NumberOfNewOrderCrossBitfields | `02` | Two bitfields to follow |
| NewOrderCrossBitfield1 | `41` | Symbol, TargetPartyID |
| NewOrderCrossBitfield2 | `30` | CMTANumber, ClearingAccount |
| GroupCnt | `03 00` | Three repeating groups to follow |
| Side | `31` | `1` = Buy |
| AllocQty | `64 00 00 00` | 100 contracts |
| ClOrdID | `51 4C 37 53 5A 37 43 5F 61 67 65 6E 63 79 00 00 00 00 00 00` | QL7SZ7C_agency |
| Capacity | `43` | `C` = Customer |
| OpenClose | `43` | `C` = Close |
| GiveUpFirmID | `44 45 46 47` | DEFG |
| CMTANumber | `00 00 00 00` | No CMTANumber for this order |
| ClearingAccount | `00 00 00 00` | No ClearingAccount for this order |
| Side | `32` | `2` = Sell |
| AllocQty | `28 00 00 00` | 40 contracts |
| ClOrdID | `51 4C 39 4B 38 55 56 5F 63 6F 6E 74 72 61 31 00 00 00 00 00` | QL9K8UV_contra1 |
| Capacity | `46` | `F` = Firm |
| OpenClose | `4F` | `O` = Open |
| GiveUpFirmID | `41 42 43 44` | ABCD |
| CMTANumber | `27 02 00 00` | 551 |
| ClearingAccount | `57 58 59 5A` | WXYZ |
| Side | `32` | `2` = Sell |
| AllocQty | `3C 00 00 00` | 60 contracts |
| ClOrdID | `51 4C 39 54 35 59 44 5F 63 6F 6E 74 72 61 32 00 00 00 00 00` | QL9T5YD_contra2 |
| Capacity | `46` | `F` = Firm |
| OpenClose | `4F` | `O` = Open |
| GiveUpFirmID | `41 42 43 44` | ABCD |
| CMTANumber | `7B 00 00 00` | 123 |
| ClearingAccount | `57 58 59 5A` | WXYZ |
| Symbol | `30 30 51 30 6B 41 00 00` | 00Q0kA |
| Target Party ID | `43 44 45 46` | CDEF |

#### New Complex Order Message Fields (C1, EDGX, and C2 Only)

A `New Complex Order` message contains the details required to enter an order on a complex instrument created with previously entered `New Complex Instrument` message request. The message is similar to a `New Order` message with an additional repeating group of the positions for each leg. The positions must be in the order returned by the system in the `Complex Instrument Accepted` message response, not the order supplied in the `New Complex Instrument` message request. Complex orders in cross product spreads (i.e., SPX/SPXW, IWM/RUT, DIA/DJX, VIX/VXX, MNX/NDX) where the products do not operate on the same matching unit cannot leg into the simple book.

Permitted input optional fields are described in New Complex Order (C1, C2, and EDGX Only).

**Table 1. New Complex Order Message Fields (C1, EDGX, and C2 Only)**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x4B` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| ClOrdID | 10 | 20 | Text | Corresponds to ClOrdID (11) in Cboe FIX. ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, and pipe. If the ClOrdID matches a live order, the order will be rejected as duplicate. Note: Cboe only enforces uniqueness of ClOrdID values among currently live orders, which includes long-lived, persisting GTC/GTD orders . However, we strongly recommend that you keep your ClOrdID values unique. |
| Side | 30 | 1 | Alphanumeric | Corresponds to Side (54) in Cboe FIX. `1` = Buy `2` = Sell |
| OrderQty | 31 | 4 | Binary | Corresponds to OrderQty (38) in Cboe FIX. Order quantity. System limit is 999,999 contracts. |
| NumberOfNewComplexOrderBitfields | 35 | 1 | Binary | Bitfield identifying which bitfields are set. Field values must be appended to the end of the message. |
| NewComplexOrderBitfield¹ | 36 | 1 | Binary | Bitfield identifying fields to follow. |
| …. |  |  |  |  |
| NewComplexOrderBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| NoLegs |  | 1 | Binary | Corresponds to NoLegs (555) in Cboe FIX. Indicates the number of repeating groups to fol- low. Must be a minimum of 2 and a maximum of 16. |
| Repeating Group ComplexLegOrderInfo must occur the number of times specified in NoLegs . Each field occurs in each group in order as shown below. Optional fields occur only if corresponding bits in bitfields are set. Table 2. New Complex Order Message Fields (C1, EDGX, and C2 Only) LegPositionEffect 1 Alphanumeric Corresponds to LegPositionEffect (564) in Cboe FIX. Indicates status of client position in option for this leg. `O` = Open `C` = Close `N` = None* *Only Orders with an OrderCapacity of ‘M’ or ‘N’ will be allowed to specify ‘N’ for LegPositionEffect . If the leg is limited to closing only transactions, only Capacity = `M` will be permitted to submit OpenClose = `O` if the order has `TimeInForce` = ‘3’ (IOC) and RoutingInst = `B` . | LegPositionEffect | 1 | Alphanumeric | Corresponds to LegPositionEffect (564) in Cboe FIX. Indicates status of client position in option for this leg. `O` = Open `C` = Close `N` = None* *Only Orders with an OrderCapacity of ‘M’ or ‘N’ will be allowed to specify ‘N’ for LegPositionEffect . If the leg is limited to closing only transactions, only Capacity = `M` will be permitted to submit OpenClose = `O` if the order has `TimeInForce` = ‘3’ (IOC) and RoutingInst = `B` . |
| LegPositionEffect | 1 | Alphanumeric | Corresponds to LegPositionEffect (564) in Cboe FIX. Indicates status of client position in option for this leg. `O` = Open `C` = Close `N` = None* *Only Orders with an OrderCapacity of ‘M’ or ‘N’ will be allowed to specify ‘N’ for LegPositionEffect . If the leg is limited to closing only transactions, only Capacity = `M` will be permitted to submit OpenClose = `O` if the order has `TimeInForce` = ‘3’ (IOC) and RoutingInst = `B` . |  |
| Optional fields… |  |  |  | Optional fields as set in the bitmap. Note, optional fields that occur in the repeating groups appear above, repeating per group, not within this block. |

Required Order Attributes:

The following are required to be sent:

- Symbol
- Price only (limit orders) or Price and/or OrdType (limit or market orders. Note market and stop/stop limit orders are not supported during GTH or Curb sessions); and,
- Capacity
- LegPositionEffect

All other values have defaults. See List of Optional Fields for additional information about each optional field, including its default value.

**Table 3. New Complex Order Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `4D 00` | 77 bytes |
| MessageType | `4B` | `New Complex Order` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| Side | `31` | Buy |
| OrderQty | `64 00 00 00` | 100 contracts |
| NumberOfNewOrder Bitfields | `02` | Two bitfields to follow |
| NewOrderBitfield1 | `E4` | Price, Symbol, Capacity, RoutingInst |
| NewOrderBitfield2 | `01` | Account |
| NoLegs | `03` | Three legs |
| LegPositionEffect | `4F` | `O` = Open |
| LegPositionEffect | `4F` | `O` = Open |
| LegPositionEffect | `4F` | `O` = Open |
| Price | `38 FF FF FF FF FF FF FF` | -0.02 |
| Symbol | `30 30 30 30 43 31 00 00` | 0000C1 |
| Capacity | `43` | `C` = Customer |
| RoutingInst | `42 00 00 00` | `B` = Book only, COA eligible |
| Account | `44 45 46 47 00 00 00 00 00 00 00 00 00 00 00 00` | DEFG |

#### New Order Cross Multileg Message Fields (C1 and EDGX Only)

A `New Order Cross Multileg` message contains the details for both the agency (initiating) and contra side(s) of a cross order (such as an AIM order). The two-sided order consists of a number of required fields including Symbol, Price, OrderQty, and relevant clearing information for both the agency and contra sides, as well as a number of optional fields. A maximum of ten (10) contra-parties will be accepted per order.

`Cross Order Acknowledgement`, `Cross Order Rejected`, and `Cross Order Cancelled` message types will be used by the Exchange to respond to `New Order Cross Multileg` messages.

Permitted input optional fields are described in New Order Cross Multileg (C1 and EDGX Only).

**Table 1. New Order Cross Multileg Message Fields (C1 and EDGX Only)**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x5A` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| CrossID | 10 | 20 | Text | Corresponds to CrossID (548) in Cboe FIX. Day-unique identifier for the cross order chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes will not be allowed. |
| CrossType | 30 | 1 | Alphanumeric | Corresponds to CrossType (549) in Cboe FIX. Type of auction order being submitted. This indicates the type of auction that will be initiated upon order entry. `1` = Automated Improvement Mechanism (AIM) `2` = Qualified Contingent Cross (QCC) `3` = Solicitation Cross (SAM) `4` = Position Compression Cross (PCC)* (C1 Only) `5` = Related Futures Cross (RFC) (C1 Only) *Entry of SPX versus SPXW as a complex spread is not supported for PCC. |
| CrossPrioritization | 31 | 1 | Alphanumeric | Corresponds to CrossPrioritization (550) in Cboe FIX. Indicates which side of the cross multileg order will be prioritized for execution. This identifies the Agency side. `1` = Buy `2` = Sell |
| Price | 32 | 8 | Binary Price | Corresponds to Price (44) in Cboe FIX. Auction Price. |
| OrderQty | 40 | 4 | Binary | Corresponds to OrderQty (38) in Cboe FIX. Order quantity. System limit is 999,999 contracts. |
| NumberOfNewOrderCrossMultilegBitfields | 44 | 1 | Bit Field | Bitfield identifying which bitfields are set. |
| NewOrderCrossMultilegBitfield¹ | 45 | 1 | Bit Field | Bitfield identifying fields to follow. |
| …. |  |  |  |  |
| NewOrderCrossMultilegBitfieldᶯ |  | 1 | Bit Field | Last bitfield. |
| GroupCnt |  | 2 | Binary | Number of order allocations represented by repeating groups included in this cross order. Must be at least 2 (One agency and one contra), and no more than 11. |
| Repeating Groupsof… |  |  |  |  |
| Side |  | 1 | Alphanumeric | Corresponds to Side (54) in Cboe FIX. `1` = Buy `2` = Sell |
| AllocQty |  | 4 | Binary | Corresponds to AllocQty (80) in Cboe FIX. Number of contracts for this party. |
| ClOrdID |  | 20 | Text | Corresponds to ClOrdID (11) in Cboe FIX. Day-unique ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes. If the ClOrdID matches a live order, the order will be rejected as duplicate. Note: Cboe only enforces uniqueness of ClOrdID values among currently live orders. However, we strongly recommend that you keep your ClOrdID values day-unique. |
| Capacity |  | 1 | Alpha | Corresponds to OrderCapacity (47) in Cboe FIX. `C` = Customer `M` = Market Maker `F` = Firm `U` = Professional Customer `N` = Away Market Maker `B` = Broker-Dealer `J` = Joint Back Office `L` = Non-Trading Permit Holder Affiliate |
| GiveUpFirmID |  | 4 | Alpha | Corresponds to GiveUpFirmID (9946) in Cboe FIX. EFID that will clear the trade. |
| LegPositionEffects |  | 12 | Alpha | Indicates status of the client position in the option for each complex option leg. This value String of characters ‘O’, ‘C’, and ‘N’, equal in length to the number of option legs of the instrument. If an equity leg is present it will always be the last leg, and the position effect must be set to ‘N’. This field can be used for complex instruments with up to 12 legs. For more than 12 legs, fill this field with spaces (0x20) and use the optional LegPositionEffectsExt field. `O` = Open `C` = Close `N` = None* *Orders with Capacity = `M` or ‘N’ will not be required to specify a position effect on their orders or may specify a value of ‘N’, in which case<blank> will be sent to clearing. If the leg is limited to closing only transactions, only Capacity = `M` will be permitted to submit OpenClose = `O` if the order has `TimeInForce` = ‘3’ (IOC) and RoutingInst = `B` . |
| Account (Optional) |  | 16 | Text | See List of Optional Fields. |
| CMTANumber (Optional) |  | 4 | Binary | See List of Optional Fields. |
| ClearingAccount (Optional) |  | 4 | Text | See List of Optional Fields. |
| ClearingOptionalData (Optional) |  | 16 | Text | See List of Optional Fields. |
| EquityPartyId (Optional) |  | 4 | Alpha | See List of Optional Fields. |
| EquityLegShortSell (Optional) |  | 1 | Alpha | See List of Optional Fields. |
| FrequentTraderID (Optional) |  | 6 | Text | See List of Optional Fields. |
| LegPositionEffectsExt (Optional) |  | 16 | Alpha | See List of Optional Fields. |
| Optional fields. . . |  |  |  | Optional fields as set in the bitmap. Note, optional fields that occur in the repeating groups appear above, repeating per group, not within this block. |

Required Order Attributes:

- Some form of symbology (see Symbology below)
- Agency order’s Side must match the cross order’s CrossPrioritization
- Each contra-party allocation must have the opposite Side
- Each side’s cumulative AllocQty must equal the cross order’s OrderQty

**Table 2. New Order Cross Multileg Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `15 01` | 277 bytes |
| MessageType | `5A` | New Order Cross Multileg |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| CrossID | `4E 5A 31 56 37 42 4A 5F 41 63 63 65 70 74 42 75 79 00 00 00` | NZ1V7BJ_AcceptBuy |
| CrossType | `31` | `1`=AIM Order |
| CrossPrioritization | `31` | `1`=Agency Buy |
| Price | `A8 61 00 00 00 00 00 00` | $2.50 |
| OrderQty | `64 00 00 00` | 100 contracts |
| NumberOfNewOrderCrossMultileg Bitfields | `05` | Five bitfields to follow |
| NewOrderCrossMultilegBitfield1 | `61` | Symbol, TargetPartyID,AttributedQuote |
| NewOrderCrossMultilegBitfield2 | `30` | CMTANumber, ClearingAccount |
| NewOrderCrossMultilegBitfield3 | `01` | ClientID |
| NewOrderCrossMultilegBitfield4 | `00` | No bitfields from byte 4 |
| NewOrderCrossMultilegBitfield5 | `04` | LegPositionEffectsExt |
| GroupCnt | `03 00` | Three repeating groups to follow |
| Side | `31` | `1`=Buy |
| AllocQty | `64 00 00 00` | 100 contracts |
| ClOrdID | `51 4C 37 53 5A 37 43 5F 61 67 65 6E 63 79 00 00 00 00 00 00` | QL7SZ7C_agency |
| Capacity | `43` | `C`=Customer |
| GiveUpFirmID | `44 45 46 47` | DEFG |
| LegPositionEffects | `20 20 20 20 20 20 20 20 20 20 20 20` | Not used when there are more than 12 legs |
| CMTANumber | `00 00 00 00` | No CMTANumber for this order |
| ClearingAccount | `00 00 00 00` | No ClearingAccount for this order |
| LegPositionEffectsExt | `43 4F 43 4F 43 4F 43 4F 43 4F 43 4F 43 4F 43 4F` | COCOCOCOCOCOCOCO - Instrument has 16 legs, alternating Close and Open legs |
| Side | `32` | `2`=Sell |
| AllocQty | `28 00 00 00` | 40 contracts |
| ClOrdID | `51 4C 39 4B 38 55 56 5F 63 6F 6E 74 72 61 31 00 00 00 00 00` | QL9K8UV_contra1 |
| Capacity | `46` | `F`=Firm |
| GiveUpFirmID | `41 42 43 44` | ABCD |
| LegPositionEffects | `20 20 20 20 20 20 20 20 20 20 20 20` | Not used when there are more than 12 legs |
| CMTANumber | `27 02 00 00` | 551 |
| ClearingAccount | `57 58 59 5A` | WXYZ |
| LegPositionEffectsExt | `4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F` | OOOOOOOOOOOOOOOO - Instrument has 16 legs, Open on all legs |
| Side | `32` | `2`=Sell |
| AllocQty | `3C 00 00 00` | 60 contracts |
| ClOrdID | `51 4C 39 54 35 59 44 5F 63 6F 6E 74 72 61 32 00 00 00 00 00` | QL9T5YD_contra2 |
| Capacity | `46` | `F`=Firm |
| GiveUpFirmID | `41 42 43 44` | ABCD |
| LegPositionEffects | `20 20 20 20 20 20 20 20 20 20 20 20` | Not used when there are more than 12 legs |
| CMTANumber | `7B 00 00 00` | 123 |
| ClearingAccount | `57 58 59 5A` | WXYZ |
| LegPositionEffectsExt | `43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43` | CCCCCCCCCCCCCCCC - Instrument has 16 legs, Clsoe on all legs |
| Symbol | `30 30 51 30 6B 41 00 00` | 00Q0kA |
| Target Party ID | `43 44 45 46` | CDEF |
| AttributedQuote | `5A` | `Z`=Attribute EFID and Client ID |
| ClientID | `52 32 44 32` | R2D2 |

#### Cancel Order Message Fields

Request to cancel either a single order or mass cancellation of a group of orders. Note that this does not apply to open orders across multiple sessions.

A single order cancellation references the ClOrdID from a previous order (OrigClOrdID field). An Order Cancel Request message cannot be used to cancel a single quote, referencing a previous OrderID from a quote will be rejected.

`Cancel Order` messages for GTC and GTD orders may continue to be issued anytime after the trading session ends. All other order message types received after the market closes will be rejected. See Cancellation of Carried Orders Between Trading Sessions for more details on when orders are allowed to be cancelled following the close of trading.

Mass cancellation of a group of orders can be done with the MassCancelInst optional field.

- Specify the MassCancelInst optional field.
- Specify the ClearingFirm field, optionally the RiskRoot field, and optionally MassCancelId if the Acknowledgement Style is set to `S` or `B`.
- Risk lockout is optionally specified using the MassCancelInst field. Effective x/x/x, Mass Cancel messages with Lockout Instruction = L will be rejected.
- EFID values specified in OnBehalfOfCompId that are not allowed to clear for the firm will be rejected.

When specifying the RiskRoot field, using the underlying symbol is strongly recommended. Mass cancellations are always performed at the risk root (underlying) level.

The system limits the rate at which identical Mass Cancel requests can be submitted to the system. Requests are restricted to ten (10) messages per second per port.

An identical Mass Cancel message is defined as a message having all of the same CustomGroupID, Symbol, Clearing Firm, Instrument Type Filter and GTC Order Filter field values, as a previously received message.

All Members that send mass cancellations must include the SendTime field. This is required to ensure that a valid cancellation send time is captured and reported to the CAT.

Permitted input optional fields are described in Cancel Order.

**Table 1. Cancel Order Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x39` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| OrigClOrdID | 10 | 20 | Text | Corresponds to OrigClOrdID (41) in Cboe FIX. ClOrdID of the order to cancel. For mass cancel requests, must be empty (all zeroes). |
| NumberOf CancelOrder Bitfields | 30 | 1 | Binary | Bitfield identifying bitfields which are set. May be 0. Field values must be appended to the end of the message. |
| CancelOrder Bitfield¹ | 31 | 1 | Binary | Bitfield identifying fields to follow. Only present if NumberOfCancelOrderBitfields is non-zero. |
| … |  |  |  |  |
| CancelOrder Bitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Cancel Order Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `2A 00` | 42 bytes |
| MessageType | `39` | `Cancel Order` |
| MatchingUnit | `0` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence Number 100 |
| OrigClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| NumberOfCancel | `02` | Two bitfields to follow |
| OrderBitfields |  |  |
| CancelOrderBitfield1 | `01` | ClearingFirm |
| CancelOrderBitfield2 | `08` | SendTime |
| ClearingFirm | `54 45 53 54` | TEST |
| SendTime | `E0 7A B9 DA 13 3B 42 16` | 1,603,909,373,757,324,000 = Wed, Oct 28, 2020 at 14:22:53.757324 ET. |

**Table 3. Mass Cancel Order Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `54 00` | 84 bytes |
| MessageType | `39` | `Cancel Order` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence Number 100 |
| OrigClOrdID | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | (empty) |
| NumberOfCancel | `02` | Two bitfields to follow |
| OrderBitfields |  |  |
| CancelOrderBitfield1 | `19` | ClearingFirm, RiskRoot, MassCancelId |
| CancelOrderBitfield2 | `09` | MassCancelInst, SendTime |
| ClearingFirm | `54 45 53 54` | TEST |
| RiskRoot | `4D 53 46 54 00 00` | MSFT |
| MassCancelId | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| MassCancelInst | `46 53 4C 42 00 00 00 00 00 00 00 00 00 00 00 00` | `F` = Cancel orders matching clearing firm TEST `S` = Single ack `N` = No lockout `B` = Cancel simple and complex |
| SendTime | `E0 7A B9 DA 13 3B 42 16` | 1,603,909,373,757,324,000 = Wed, Oct 28, 2020 at 14:22:53.757324 ET. |

#### Modify Order Message Fields

Request to modify an order. The order attributes to be modified are selected using NumberOfModifyBitfields and some number of bitfields to follow. Price, OrderQty, OrdType, MaxFloor (C1 and C2 only), and StopPx may be adjusted. OrdType may be adjusted from Limit to Market (market and stop/stop limit orders are not supported during GTH or Curb sessions).

- Time priority will be maintained on an order modification in the following cases:
  - A decrease in OrderQty with no other changes
  - An update to StopPx on an unelected stop order with no other changes
  - An update to MaxFloor with no other changes
- An order modification combining two or more of the specific items above will not lose priority.
- An order modification involving one of the items above and changes to any other attribute will lose priority.
- An order modification with no change to any attribute will lose priority.

Changes in OrderQty result in an adjustment of the current order's OrderQty. The new OrderQty does not directly replace the current order's LeavesQty. Rather, a delta is computed from the current OrderQty and the replacement OrderQty. This delta is then applied to the current LeavesQty. If the resulting LeavesQty is less than or equal to zero, the order is cancelled. This results in safer behavior when the modification request overlaps partial fills for the current order, leaving the Member in total control of the share exposure of the order.

A `Modify Order` message should not be issued until the `Order Acknowledgement` message for the previous `New Order` or `Order Modified` message for the previous `Modify Order` message has been received. The BOE handler will reject a new `Modify Order` message if it has not been accepted or it has not seen the result of the prior modification from the Matching Engine. However, `Modify Order` requests that merely reduce OrderQty may be overlapped if the existing ClOrdID is reused, as long as the trading identifier has not been opted-in to daily limit trading risk controls. This is the only case where reuse of the ClOrdID is allowed.

The OrderQty and Price fields in the optional field block must be present on allModify Ordermessage requests. Messages sent without OrderQty or Price fields will be rejected. Price is optional for market orders.

A maximum of 1,295 `Modify Order` message requests may be made to a single order each trading day. Once the 1,295th modification is made, the next user-generated message on the order should be a `Cancel Order` message request.

Permitted input optional fields are described in Modify Order.

**Table 1. Modify Order Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x3A` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| ClOrdID | 10 | 20 | Text | New ClOrdID for this order. |
| OrigClOrdID | 30 | 20 | Text | Corresponds to OrigClOrdID (41) in Cboe FIX. ClOrdID of the order to replace. In the case of multiple changes to a single order, this will be the ClOrdID of the most recently accepted change. |
| NumberOf ModifyOrderBitfields | 50 | 1 | Binary | Bitfield identifying bitfields which are set. May be 0. Field values must be appended to the end of the message. |
| ModifyOrder Bitfield1 | 51 | 1 | Binary | Bitfield identifying fields to follow. |
| … |  |  |  |  |
| ModifyOrder Bitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Modify Order Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `3E 00` | 82 bytes |
| MessageType | `3A` | `Modify Order` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence Number 100 |
| ClOrdID | `41 42 43 31 32 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC124 |
| OrigClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| NumberOfModify | `01` | One bitfield to follow |
| OrderBitfields |  |  |
| ModifyOrderBitfield1 | `0C` | OrderQty, Price |
| OrderQty | `64 00 00 00` | 100 contracts |
| Price | `08 E2 01 00 00 00 00 00` | 12.34 |

#### Quote Update Message Fields

Request to enter or update one or more quotes. `Quote Update` message requests will be forwarded in their entirety to the matching engine instance as a single message and will be applied in a single transaction. Optional bitfields are not supported for any response messages for quotes. The system will only accept `Quote Update` message requests entered via a BOE Bulk Quoting port that are marked with the Capacity = `M` (Market Maker). A valid registered Market-Maker account value must be provided in the ClearingAccount field or the system will respond with the `QuoteUpdateRejected` message containing the QuoteRejectReason =`C`(InvalidClearing).

All options in a single `Quote Update` message must trade under a single risk root. Requests which include options trading under multiple risk roots will be rejected in their entirety.

A quote is unique per port, EFID, and side. You may quote multiple price levels of depth using either multiple EFIDs on a single port or with the same EFID on multiple ports.

Quote requests are one-sided. To delete a quote, send an update with a zero price and/or size.

Quotes may utilize simple options only; complex options quotes may not be submitted.

By default quotes are valid for a given trading date, which may span multiple calendar dates in the event of a holiday. Quotes may be cancelled at the end of a given trading segment rather than carried forward to the next segment by updating the Multi-Segment Holiday Day Order Handling Port attribute.

Quotes may be marked post only. Quotes that cross the NBBO or displayed Cboe book will be accepted if within a configurable buffer range through the NBBO or displayed Cboe book. The buffer is set to 5% with a minimum of $0.05 and a maximum of $1.00. If a quote would be displayed at a price that locks the NBBO, it will be accepted/slid or rejected based on the PostingInstruction on the quote. Quotes can be opted out of the price-sliding functionality by specifying Book Only, No Slide or Post Only, No Slide in the PostingInstruction field on the quote message.

On BZX only, quote prices at non-displayable increments are permitted. Prices will be adjusted to the most aggressive non-locking price. Quotes may work (but not display) to lock an away market. Once posted, quotes act as a Display Price Sliding order. C2 and EDGX quotes act as Price Adjust orders.

If a quote modification is rejected, the resting quote being modified is also cancelled.

Executions, unsolicited cancels, and unsolicited modification response messages from the exchange are different from those for orders. They are optimized for efficiency and contain some different data elements (e.g., QuoteUpdateID) than the respective messages for orders.

The PreventMatch field may not be specified on the `Quote Update` message and Match Trade Prevention is only available if defaulted at the port level. For Bulk Quoting ports, only Cancel Newest, Cancel Oldest, or Cancel Both are permitted. If a Bulk Quoting port is not configured with both a default MTP Modifier and Unique ID Level, Match Trade Prevention will be disabled.

The Quote Execution message will be the only Quote related message available over ODROP and FIXDROP.

`Quote Update` requests sent without any changes to the currently resting quote (no change quotes) will result in a loss of priority and will be reported back with a QuoteResult = `L`(Modified; loss of priority) in the `Quote Update Acknowledgement` message.

- Time priority will be maintained on a quote modification if there is a decrease in OrderQty with no other changes.
- A quote modification decreasing size and changes to any other attribute will lose priority.
- A quote modification with no change to any attribute will lose priority. Table 1. Quote Update Message Fields Field Offset Length Data Type Description StartOfMessage 0 2 Binary Must be `0xBA 0xBA.` MessageLength 2 2 Binary Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. MessageType 4 1 Binary `0x55` MatchingUnit 5 1 Binary Always 0 for inbound (Member to Cboe) messages. SequenceNumber 6 4 Binary The sequence number for this message. QuoteUpdateID 10 16 Text ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes. Responses, both to the Quote Update and any Quote Executions, Quote Cancellations, and Quote Modification messages will include this identifier. Note: Cboe strongly recommends that QuoteUpdateID be kept unique for a trading day, and CAT reporting requirements mandate that QuoteUpdateID is unique for each Quote Update message sent to the Exchange. ClearingFirm 26 4 Alpha EFID that will clear the trade. If left blank, the port attribute value of ‘Default EFID’ is used. ClearingAccount 30 4 Alpha Corresponds to OnBehalfOfSubID (116) and ClearingAccount (440) in Cboe FIX. See List of Optional Fields for additional information. CMTANumber 34 4 Binary Corresponds to ClearingFirm (439) in Cboe FIX. See List of Optional Fields for additional information. Account 38 16 Text Corresponds to Account (1) in Cboe FIX. See List of Optional Fields for additional information. CustomGroupID 54 2 Binary Optional. Used to group orders for use in `Purge Orders` . Set to 0 if functionality not needed. Capacity 56 1 Alpha Corresponds to OrderCapacity (47) in Cboe FIX. See List of Optional Fields for additional information. Reserved 57 15 Binary Reserved for future expansion. To maintain forward compatibility, fill with 0. SendTime 72 8 DateTime All Market Maker (Capacity=M) quote updates must populate with a timestamp representing the UTC time when the quote was sent by the Market Maker to the exchange. This timestamp is required to be at least in millisecond granularity but the CAT NMS Plan requires that Industry Members report the SendTime with the finest increment that is supported by the Industry Member. The SendTime is required in order to report Market Maker quotes to the CAT in accordance with the CAT NMS Plan. Market Makers are required to provide a valid, non-zero value for this field for any `Quote Update` messages entered via a BOE Bulk Quoting port. A zero value for SendTime will result in a rejection of the entire `Quote Update` message. PostingInstruction 80 1 Text `P` = Post Only (do not remove liquidity) `B` = Book Only (allow removal of liquidity, available for Market Makers only) `N` = Book Only, No Slide `R` = Post Only, No Slide (do not remove liquidity) `I` = Book Only IOC SessionEligibility (C1 only) 81 1 Text `R` = Regular Trading Hours (RTH) only `A` = Participates in both Global and Regular Trading Hours. Also allows for participation in Curb Trading Session. `B` = Participates in both RTH and Curb Session. Note market and stop/stop limit orders are not supported during GTH and Curb sessions. QuoteCnt 82 1 Binary Number of repeating groups included in this quote update. Allowed values are 1-20. Repeating Groups of … Symbol 6 Alphanumeric Cboe native identifier Side 1 Text `1` = Buy `2` = Sell OpenClose 1 Text Corresponds to OpenClose (77) in Cboe FIX. See List of Optional Fields for additional information. Price 8 Binary Price Limit price. To cancel an existing quote, specify a size of 0. OrderQty 4 Binary Order quantity. System limit is 999,999 contracts. To cancel an existing quote, specify a size of 0. Reserved 12 Binary Reserved for future expansion. To maintain forward compatibility, fill with 0.

**Table 2. Quote Update Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x55` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| QuoteUpdateID | 10 | 16 | Text | ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes. Responses, both to the Quote Update and any Quote Executions, Quote Cancellations, and Quote Modification messages will include this identifier. Note: Cboe strongly recommends that QuoteUpdateID be kept unique for a trading day, and CAT reporting requirements mandate that QuoteUpdateID is unique for each quote submitted to the exchange. |
| ClearingFirm | 26 | 4 | Alpha | EFID that will clear the trade. If left blank, the port attribute value of ‘Default EFID’ is used. |
| ClearingAccount | 30 | 4 | Alpha | Corresponds to OnBehalfOfSubID (116) and ClearingAccount (440) in Cboe FIX. See List of Optional Fields for additional information. |
| CMTANumber | 34 | 4 | Binary | Corresponds to ClearingFirm (439) in Cboe FIX. See List of Optional Fields for additional information. |
| Account | 38 | 16 | Text | Corresponds to Account (1) in Cboe FIX. See List of Optional Fields for additional information. |
| CustomGroupID | 54 | 2 | Binary | Optional. Used to group orders for use in `Purge Orders`. Set to 0 if functionality not needed. |
| Capacity | 56 | 1 | Alpha | Corresponds to OrderCapacity (47) in Cboe FIX. Value must be set to M. |
| Reserved | 57 | 15 | Binary | Reserved for future expansion. To maintain forward compatibility, fill with 0. |
| SendTime | 72 | 8 | DateTime | All Market Maker (Capacity=M) quote updates must populate with a timestamp representing the GMT time when the quote was sent by the Market Maker to the exchange. This timestamp is required to be at least in millisecond granularity but the CAT NMS Plan requires that Industry Members report the SendTime with the finest increment that is supported by the Industry Member. The SendTime is required in order to report Market Maker quotes to the CAT in accordance with the CAT NMS Plan. Market Makers are required to provide a valid, non-zero value for this field for any `Quote Update` messages entered via a BOE Bulk Quoting port. A zero value for SendTime will result in a rejection of the entire `Quote Update` message. |
| PostingInstruction | 80 | 1 | Text | `P` = Post Only (do not remove liquidity) `B` = Book Only (allow removal of liquidity, available for Market Makers only) `N` = Book Only, No Slide `R` = Post Only, No Slide (do not remove liquidity) `I` = Book Only IOC |
| SessionEligibility (C1 only) | 81 | 1 | Text | `R` = Regular Trading Hours (RTH) only `A` = Participates in both Global and Regular Trading Hours. Also allows for participation in Curb Trading Session. `B` = Participates in both RTH and Curb Session. Note market and stop/stop limit orders are not supported during GTH and Curb sessions. |
| QuoteCnt | 82 | 1 | Binary | Number of repeating groups included in this quote update. Allowed values are 1-20. |
| Repeating Groups of … |  |  |  |  |
| Symbol |  | 6 | Alphanumeric | Cboe native identifier |
| Side |  | 1 | Text | `1` = Buy `2` = Sell |
| OpenClose |  | 1 | Text | Corresponds to OpenClose (77) in Cboe FIX. See List of Optional Fields for additional information. |
| Price |  | 8 | Binary Price | Limit price. To cancel an existing quote, specify a price of 0. |
| OrderQty |  | 4 | Binary | Order quantity. System limit is 999,999 contracts. To cancel an existing quote, specify a size of 0. |
| Reserved |  | 12 | Binary | Reserved for future expansion. To maintain forward compatibility, fill with 0. |

**Table 3. Quote Update Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `91 00` | 145 bytes |
| MessageType | `55` | `Quote Update` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| QuoteUpdateID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| ClearingFirm | `41 42 43 44` | ABCD |
| ClearingAccount | `57 58 59 5A` | WXYZ |
| CMTANumber | `31 32 33 34` | 1234 |
| Account | `44 45 46 47 41 42 43 44 00 00 00 00 00 00 00 00` | DEFGABCD |
| CustomGroupID | `C8 00` | 200 |
| Capacity | `4D` | `M` = Market Maker |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |
| SendTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| PostingInstruction | `50` | P (Post Only) |
| SessionEligibility | `52` | R (RTH Only) |
| QuoteCnt | `02` | Two Quotes |
| Symbol | `30 30 36 69 70 41` | 006ipA |
| Side | `31` | `1` = Buy |
| OpenClose | `4F` | `O` = Open |
| Price | `C8 32 00 00 00 00 00 00` | 1.30 |
| OrderQty | `64 00 00 00` | 100 contracts |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |
| Symbol | `30 30 34 63 53 73` | 004cSs |
| Side | `32` | `2` = Sell |
| OpenClose | `4F` | `O` = Open |
| Price | `AC 07 01 00 00 00 00 00` | 6.75 |
| OrderQty | `F4 01 00 00` | 500 contracts |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |

#### Quote Update (Short) Message Fields

A shorter version of `Quote Update` messages which restricts the information which can be presented. Uses less bandwidth than the `Quote Update` message but messages presented to the Matching Engine are identical between both `Quote Update` and `Quote Update (Short)` messages. The system will only accept Quote Update requests entered via a BOE Bulk Quoting port that are marked with the Capacity = `M` (Market Maker).

`Quote Update (Short)` message does not allow sending Account but a default for this field may be set at the port level. CMTANumber may never be included on a `Quote Update (Short)` message.

This message uses a smaller format Price and OrderQty on each quote update.

All other comments concerning `Quote Update` messages in the previous section apply to `Quote Update (Short)` equally.

**Table 1. Quote Update (Short) Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x59` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| QuoteUpdateID | 10 | 16 | Text | ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes. Responses, both to the Quote Update and any Quote Executions, Quote Cancellations, and Quote Modification messages will include this identifier. Note: Cboe strongly recommends that QuoteUpdateID be kept unique for a trading day, and CAT reporting requirements mandate that QuoteUpdateID is unique for each quote submitted to the exchange. |
| ClearingFirm | 26 | 4 | Alpha | EFID that will clear the trade. If left blank, the port attribute value of ‘Default EFID’ is used. |
| ClearingAccount | 30 | 4 | Alpha | Corresponds to OnBehalfOfSubID (116) and ClearingAccount (440) in Cboe FIX. See List of Optional Fields for additional information. |
| CustomGroupID | 34 | 2 | Binary | Optional. Used to group orders for use in `Purge Orders` messages. Set to 0 if functionality not needed. |
| Capacity | 36 | 1 | Alpha | Corresponds to OrderCapacity (47) in Cboe FIX. Value must be set to M. |
| Reserved | 37 | 3 | Binary | Reserved for future expansion. To maintain forward compatibility, fill with 0. |
| SendTime | 40 | 8 | DateTime | All Market Maker (Capacity=M) quote updates must populate with a timestamp representing the UTC time when the quote was sent by the Market Maker to the exchange. This timestamp is required to be at least in millisecond granularity but the CAT NMS Plan requires that Industry Members report the SendTime with the finest increment that is supported by the Industry Member. The SendTime is required in order to report Market Maker quotes to the CAT in accordance with the CAT NMS Plan. Market Makers are required to provide a valid, non-zero value for this field for any `Quote Update` messages entered via a BOE Bulk Quoting port. A zero value for SendTime will result in a rejection of the entire `Quote Update` message. |
| PostingInstruction | 48 | 1 | Text | `P` = Post Only (do not remove liquidity) `B` = Book Only (allow removal of liquidity, available for Market Makers only) `N` = Book Only, No Slide `R` = Post Only, No Slide (do not remove liquidity) `I` = Book Only IOC |
| SessionEligibility (C1 only) | 49 | 1 | Text | `R` = Regular Trading Hours (RTH) only `A` = Participates in both Global and Regular Trading Hours. Also allows for participation in Curb Trading Session. `B` = Participates in both RTH and Curb Session |
| QuoteCnt | 50 | 1 | Binary | Number of repeating groups included in this quote update. Allowed values are 1-20. |
| Repeating Groups of … |  |  |  |  |
| Symbol |  | 6 | Alphanumeric | Cboe native identifier |
| Side |  | 1 | Text | `1` = Buy `2` = Sell |
| OpenClose |  | 1 | Text | Corresponds to OpenClose (77) in Cboe FIX. See List of Optional Fields for additional information. |
| Price |  | 4 | Short Binary Price | Limit price. To cancel an existing quote, specify a size of 0. |
| OrderQty |  | 2 | Binary | Order quantity. System limit is 999,999 contracts. To cancel an existing quote, specify a size of 0. |
| Reserved |  | 2 | Binary | Reserved for future expansion. To maintain forward compatibility, fill with 0. |

**Table 2. Quote Update (Short) Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `91 00` | 145 bytes |
| MessageType | `59` | `Quote Update (Short)` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| QuoteUpdateID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| ClearingFirm | `41 42 43 44` | ABCD |
| ClearingAccount | `57 58 59 00` | WXY |
| CustomGroupID | `C8 00` | 200 |
| Capacity | `4D` | `M` = Market Maker |
| Reserved | `00 00 00` | Reserved |
| SendTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| PostingInstruction | `50` | P (Post Only) |
| SessionEligibility | `52` | R (RTH Only) |
| QuoteCnt | `02` | Two Quotes |
| Symbol | `30 30 36 69 70 41` | 006ipA |
| Side | `31` | `1` = Buy |
| OpenClose | `4F` | `O` = Open |
| Price | `C8 32 00 00` | 1.30 |
| OrderQty | `64 00` | 100 contracts |
| Reserved | `00 00` | Reserved |
| Symbol | `30 30 34 63 53 73` | 004cSs |
| Side | `32` | `2` = Sell |
| OpenClose | `4F` | `O` = Open |
| Price | `AC 07 01 00` | 6.75 |
| OrderQty | `F4 01` | 500 contracts |
| Reserved | `00 00` | Reserved |

#### Complex Quote Update Message Fields (C1 Only)

Request to enter or update one or more quotes for quotable complex options. Quotable complex instruments are defined by the exchange and are disseminated on Cboe U.S. Options Multicast PITCH and TOP data feeds as Exchange Designated Complex Instrument Definition messages.

`Complex Quote Update` message requests will be forwarded in their entirety to the matching engine instance as a single message and will be applied in a single transaction. Optional bitfields are not supported for any response messages for quotes. The system will only accept `Complex Quote Update` message requests entered via a BOE Bulk Quoting port that are marked with the `Capacity` value of `M` = Market Maker. A valid registered Market-Maker account value must be provided in the ClearingAccount field or the system will respond with the `Quote Update Rejected` message containing the QuoteRejectReason value of `C` = InvalidClearing.

All options in a single `Complex Quote Update` message must trade under a single risk root. Requests which include options trading under multiple risk roots will be rejected in their entirety.

A quote is unique per port, EFID, and side. You may quote multiple price levels of depth using either multiple EFIDs on a single port or with the same EFID on multiple ports.

Complex quote requests are one-sided. To delete a quote, send an update with a zero size.

`Complex Quote Update` messages may be submitted for exchange designated complex options only; simple options quotes and quotes for complex options that are not exchange designated complex options may not be submitted. One or more unsupported options presented in the message repeating group will cause the `Complex Quote Update` to be rejected in its entirety with a `Quote Update Rejected` being returned to the user.

By default, complex quotes are valid for a given trading date, which may span multiple calendar dates in the event of a holiday. Complex quotes may be cancelled at the end of a given trading segment rather than carried forward to the next segment by updating the Multi-Segment Holiday Day Order Handling Port attribute.

Complex quotes are post-only. Individual quotes in a `Complex Quote Update` message that lock or cross the displayed Cboe complex book or SBBO will be rejected. Each individual quote that is rejected for this reason is indicated to the user with the QuoteResult value `P` = Rejected, can't post in the associated `Quote Update Acknowledgment` message.

If a complex quote modification is rejected, the resting complex quote being modified is also cancelled. Executions, unsolicited cancels, and unsolicited modification response messages from the exchange are different from those for orders. They are optimized for efficiency and contain some different data elements (e.g., QuoteUpdateID) than the respective messages for orders.

The PreventMatch field may not be specified on the `Complex Quote Update` message, and Match Trade Prevention is only available if defaulted at the port level.

Executions involving complex quotes submitted using the `Complex Quote Update` message are reported to the user via the `Complex Quote Execution` message.

The `Complex Quote Execution` message will be the only complex quote related message available over ODROP and FIXDROP.

`Complex Quote Update` requests sent without any changes to the currently resting quote (no change quotes) will result in a loss of priority and will be reported back with a QuoteResult value of L (Modified; loss of priority) in the `Quote Update Acknowledgement` message. In addition:

- Time priority will be maintained on a complex quote modification if there is a decrease in OrderQty with no other changes.
- A complex quote modification decreasing size and changes to any other attribute will lose priority.
- A complex quote modification with no change to any attribute will lose priority.

**Table 1. Complex Quote Update Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x84` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| QuoteUpdateID | 10 | 16 | Text | ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes. Responses, both to the Quote Update and any Quote Executions, Quote Cancellations, and Quote Modification messages will include this identifier. Note: Cboe strongly recommends that QuoteUpdateID be kept unique for a trading day, and CAT reporting requirements mandate that QuoteUpdateID be unique for each quote submitted to the exchange. |
| ClearingFirm | 26 | 4 | Alpha | EFID that will clear the trade. If left blank, the port attribute value of ‘Default EFID’ is used. |
| ClearingAccount | 30 | 4 | Alpha | Corresponds to OnBehalfOfSubID (116) and ClearingAccount (440) in Cboe FIX. See List of Optional Fields for additional information. |
| CMTANumber | 34 | 4 | Binary | Corresponds to ClearingFirm (439) in Cboe FIX. See List of Optional Fields for additional information. |
| Account | 38 | 16 | Text | Corresponds to Account (1) in Cboe FIX. See List of Optional Fields for additional information. |
| CustomGroupID | 54 | 2 | Binary | Used to group orders for use in `Purge Orders`. Set to 0 if functionality not needed. |
| Capacity | 56 | 1 | Alpha | Corresponds to OrderCapacity (47) in Cboe FIX. Value must be set to M. |
| Reserved | 57 | 15 | Binary | Reserved for future expansion. To maintain forward compatibility, fill with 0. |
| SendTime | 72 | 8 | DateTime | All Market Maker (Capacity=M) complex quote updates must populate with a timestamp representing the GMT time when the quote was sent by the Market Maker to the exchange. This timestamp is required to be at least in millisecond granularity but the CAT NMS Plan requires that Industry Members report the SendTime with the finest increment that is supported by the Industry Member. The SendTime is required in order to report Market Maker complex quotes to the CAT in accordance with the CAT NMS Plan. Market Makers are required to provide a valid, non-zero value for this field for any `Quote Update` messages entered via a BOE Bulk Quoting port. A zero value for SendTime will result in a rejection of the entire `Quote Update` message. |
| PostingInstruction | 80 | 1 | Text | Value must be set to `R` as `Complex Quote Update` messages are post-only and cannot remove liquidity on entry to the book. `R` = Post Only, No Slide (do not remove liquidity) |
| SessionEligibility | 81 | 1 | Text | `R` = Regular Trading Hours (RTH) only `B` = Participates in both RTH and Curb Session. |
| QuoteCnt | 82 | 1 | Binary | Number of repeating groups included in this quote update. Allowed values are 1-20. |
| Repeating Groups of … |  |  |  |  |
| Symbol |  | 6 | Alphanumeric | Cboe native identifier |
| Side |  | 1 | Text | `1` = Buy `2` = Sell |
| OpenClose |  | 1 | Text | Corresponds to OpenClose (77) in Cboe FIX. The value specified for OpenClose applies to all single leg executions comprising a complex quote execution See List of Optional Fields for additional information. |
| Price |  | 8 | Binary Price | Limit price. |
| OrderQty |  | 4 | Binary | Order quantity. System limit is 999,999 contracts. To cancel an existing quote, specify a size of 0. |
| Reserved |  | 12 | Binary | Reserved for future expansion. To maintain forward compatibility, fill with 0. |

**Table 2. Complex Quote Update Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `91 00` | 145 bytes |
| MessageType | `84` | `Complex Quote Update` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| QuoteUpdateID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| ClearingFirm | `41 42 43 44` | ABCD |
| ClearingAccount | `57 58 59 5A` | WXYZ |
| CMTANumber | `31 32 33 34` | 1234 |
| Account | `44 45 46 47 41 42 43 44 00 00 00 00 00 00 00 00` | DEFGABCD |
| CustomGroupID | `C8 00` | 200 |
| Capacity | `4D` | `M` = Market Maker |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |
| SendTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| PostingInstruction | `52` | R (Post Only) |
| SessionEligibility | `52` | R (RTH Only) |
| QuoteCnt | `02` | Two Quotes |
| Symbol | `54 31 47 51 35 33` | T1GQ53 |
| Side | `31` | `1` = Buy |
| OpenClose | `4E` | `N` = None |
| Price | `C8 32 00 00 00 00 00 00` | 1.30 |
| OrderQty | `64 00 00 00` | 100 |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |
| Symbol | `54 31 47 51 35 34` | T1GQ54 |
| Side | `32` | `2` = Sell |
| OpenClose | `4E` | `N` = None |
| Price | `AC 07 01 00 00 00 00 00` | 6.75 |
| OrderQty | `F4 01 00 00` | 500 |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |

#### Complex Quote Update (Short) Message Fields (C1 Only)

A shorter version of `Complex Quote Update` messages which restricts the information which can be presented. Uses less bandwidth than the `Complex Quote Update` message but messages presented to the Matching Engine are identical between both `Complex Quote Update` and `Complex Quote Update (Short)` messages.The system will only accept `Complex Quote Update (Short)` requests entered via a BOE Bulk Quoting port that are marked with the Capacity value `M` = Market Maker.

`Complex Quote Update (Short)` message does not allow sending Account but a default for this field may be set at the port level. CMTANumber may never be included on a `Quote Update (Short)` message.

This message uses a smaller format Price and OrderQty on each complex quote update.

All other comments concerning `Complex Quote Update` messages in the previous section apply to `Complex Quote Update (Short)` equally.

**Table 1. Complex Quote Update (Short) Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x86` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| QuoteUpdateID | 10 | 16 | Text | ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes. Responses, both to the Quote Update and any Quote Executions, Quote Cancellations, and Quote Modification messages will include this identifier. Note: Cboe strongly recommends that QuoteUpdateID be kept unique for a trading day, and CAT reporting requirements mandate that QuoteUpdateID be unique for each quote submitted to the exchange. |
| ClearingFirm | 26 | 4 | Alpha | EFID that will clear the trade. If left blank, the port attribute value of ‘Default EFID’ is used. |
| ClearingAccount | 30 | 4 | Alpha | Corresponds to OnBehalfOfSubID (116) and ClearingAccount (440) in Cboe FIX. See List of Optional Fields for additional information. |
| CustomGroupID | 34 | 2 | Binary | Used to group orders for use in `Purge Orders`. Set to 0 if functionality not needed. |
| Capacity | 36 | 1 | Alpha | Corresponds to OrderCapacity (47) in Cboe FIX. Value must be set to M. |
| Reserved | 37 | 3 | Binary | Reserved for future expansion. To maintain forward compatibility, fill with 0. |
| SendTime | 40 | 8 | DateTime | All Market Maker ( Capacity = `M` ) complex quote updates must populate with a timestamp representing the GMT time when the quote was sent by the Market Maker to the exchange. This timestamp is required to be at least in millisecond granularity but the CAT NMS Plan requires that Industry Members report the SendTime with the finest increment that is supported by the Industry Member. The SendTime is required in order to report Market Maker complex quotes to the CAT in accordance with the CAT NMS Plan. Market Makers are required to provide a valid, non-zero value for this field for any `Quote Update` messages entered via a BOE Bulk Quoting port. A zero value for SendTime will result in a rejection of the entire `Quote Update` message. |
| PostingInstruction | 48 | 1 | Text | Value must be set to `R` as `Complex Quote Update` messages are post-only and cannot remove liquidity on entry to the book. `R` = Post Only, No Slide (do not remove liquidity) |
| SessionEligibility (C1 only) | 49 | 1 | Text | `R` = Regular Trading Hours (RTH) only `B` = Participates in both RTH and Curb Session. |
| QuoteCnt | 50 | 1 | Binary | Number of repeating groups included in this quote update. Allowed values are 1-20. |
| Repeating Groups of … |  |  |  |  |
| Symbol |  | 6 | Alphanumeric | Cboe native identifier |
| Side |  | 1 | Text | `1` = Buy `2` = Sell |
| OpenClose |  | 1 | Text | Corresponds to OpenClose (77) in Cboe FIX. The value specified for OpenClose applies to all single leg executions comprising a complex quote execution See List of Optional Fields for additional information. |
| Price |  | 4 | Short Binary Price | Limit price. |
| OrderQty |  | 2 | Binary | Order quantity. System limit is 999,999 contracts. To cancel an existing quote, specify a size of 0. |
| Reserved |  | 2 | Binary | Reserved for future expansion. To maintain forward compatibility, fill with 0. |

**Table 2. Complex Quote Update(Short) Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `51 00` | 81 bytes |
| MessageType | `86` | `Complex Quote Update (Short)` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| QuoteUpdateID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| ClearingFirm | `41 42 43 44` | ABCD |
| ClearingAccount | `57 58 59 00` | WXY |
| CustomGroupID | `C8 00` | 200 |
| Capacity | `4D` | `M` = Market Maker |
| Reserved | `00 00 00` | Reserved |
| SendTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| PostingInstruction | `52` | R (Post Only) |
| SessionEligibility | `52` | R (RTH Only) |
| QuoteCnt | `02` | Two Quotes |
| Symbol | `54 31 47 51 35 33` | T1GQ53 |
| Side | `31` | `1` = Buy |
| OpenClose | `4F` | `O` = Open |
| Price | `C8 32 00 00` | 1.30 |
| OrderQty | `64 00` | 100 |
| Reserved | `00 00` | Reserved |
| Symbol | `54 31 47 51 35 34` | T1GQ54 |
| Side | `32` | `2` = Sell |
| OpenClose | `4F` | `O` = Open |
| Price | `AC 07 01 00` | 6.75 |
| OrderQty | `F4 01` | 500 |
| Reserved | `00 00` | Reserved |

#### Purge Orders Message Fields

Request to cancel a group of orders across all the firm's sessions. This differs from a mass cancel request sent via a `Cancel Order` message as the purge is applied across all of the firm's sessions, not just the session on which the message was received.

A purge requires populating the MassCancelInst field. The ClearingFirm (EFID) is also required if a list of configured/allowed EFIDS has not been configured on the session. If a list of configured EFIDs is present, sending a blank (0x00) ClearingFirm value will result in the purge applying to all configured EFIDs. In addition, a firm may choose to further filter the purge to target specific orders using either the CustomGroupID or RiskRoot fields. If both RiskRoot and a list of CustomGroupID values are specified, the `Purge Orders` message request will be rejected. The items below should also be considered.

- Users must specify the MassCancelId if the Acknowledgement Style is set to `S` or `B`.
- Users may Initiate a self-imposed, risk lockout using the MassCancelInst field.
- EFID values specified in the ClearingFirm field that are not allowed to clear for the firm will be rejected.
- CustomGroupID or EFID (ClearingFirm) purges with no RiskRoot may be directed to a specific matching unit using the MatchingUnit optional field. If MatchingUnit is zero or not specified, these purge types will be sent to all matching units starting with unit 1. Note that this may result in self-imposed, risk lockouts occurring on select units while other units are still trading.

When specifying the RiskRoot field, using the underlying symbol is strongly recommended. Mass cancellations are always performed at the risk root (underlying) level.

All Members that send purges must include the SendTime field. This is required to ensure that a valid cancellation send time is captured and reported to CAT.

The system limits the rate at which identical `Purge Orders` message requests can be submitted to the system. Requests are restricted to ten (10) messages per second per port.

An identical purge message is defined as a message having all of the same CustomGroupID, Symbol, Clearing Firm, MatchingUnit, Lockout Instruction, Instrument Type Filter and GTC Order Filter field values, as a previously received message.

Permitted input optional fields are described in Purge Orders.

**Table 1. Purge Orders Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x47` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| Reserved | 10 | 1 | Binary | Reserved for future expansion. To maintain forward compatibility, fill with 0. |
| NumberOfPurgeOrdersBitfields | 11 | 1 | Binary | Bitfield identifying bitfields which are set. May be 0. Field values must be appended to the end of the message. |
| PurgeOrderBitfield¹ | 12 | 1 | Binary | Bitfield identifying fields to follow. Only present if NumberOfPurgeOrdersBitfields is non-zero. |
| CustomGroupIDCnt | 13 | 1 | Binary | Number of repeating CustomGroupID included in this message. Integer 0-10. |
| CustomGroupID¹ |  | 2 | Binary | First CustomGroupID. Only present if CustomGroupIDCnt is non-zero. |
| … |  |  |  |  |
| CustomGroupIDᶯ |  | 2 | Binary | Last CustomGroupID. |
| Optional fields. . . |  |  |  |  |

**Table 2. Purge Orders Message with CustomGroupID and Lockout Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `41 00` | 65 bytes |
| MessageType | `47` | `Purge Orders` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| Reserved | `00` | Reserved |
| NumberOfPurgeOrderBitfields | `02` | Two bitfields to follow |
| PurgeOrdersBitfield1 | `15` | ClearingFirm,MassCancelInst, MassCancelID |
| PurgeOrdersBitfield2 | `40` | SendTime |
| CustomGroupIDCnt | `02` | Two CustomGroupIDs to follow |
| CustomGroupID1 | `BF BE` | First CustomGroupID of 48831 |
| CustomGroupID2 | `CO BE` | Second CustomGroupID of 48832 |
| ClearingFirm | `54 45 53 54` | TEST |
| MassCancelInst | `46 53 4C 42 00 00 00 00 00 00 00 00 00 00 00 00` | `F` = Cancel orders matching clearing firm TEST `S` = Single ack `L` = Lockout both CustomGroupIDs `B` = Cancel simple and complex |
| MassCancelID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| SendTime | `E0 7A B9 DA 13 3B 42 16` | 1,603,909,373,757,324,000 = Wed, Oct 28, 2020 at 14:22:53.757324 ET. |

**Table 3. Purge Orders Message with Product Level Filter and no Lockout Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `43 00` | 67 bytes |
| MessageType | `47` | `Purge Orders` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| Reserved | `00` | Reserved |
| NumberOfPurge | `02` | Two bitfields to follow |
| OrderBitfields |  |  |
| PurgeOrdersBitfield1 | `1D` | ClearingFirm, MassCancelInst, RiskRoot, MassCancelID |
| PurgeOrdersBitfield2 | `40` | SendTime |
|  |  |  |
| CustomGroupIDCnt | `00` | No CustomGroupIDs to follow |
| ClearingFirm | `54 45 53 54` | TEST |
| MassCancelInst | `46 53 4E 42 00 00 00 00 00 00 00 00 00 00 00 00` | `F` = Cancel orders matching clearing firm TEST `S` = Single ack `N` = No lockout `B` = Cancel simple and complex |
| RiskRoot | `41 42 43 00 00 00` | ABC |
| MassCancelID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| SendTime | `E0 7A B9 DA 13 3B 42 16` | 1,603,909,373,757,324,000 = Wed, Oct 28, 2020 at 14:22:53.757324 ET. |

#### Reset Risk Message Fields

Reset or release Firm, Risk Root, or Custom Group ID level lockout conditions resulting from risk profile trips or self-imposed lockouts issued via `Cancel Order` or `Purge Orders` messages. Risk resets can be performed using this message or by using the RiskReset field on a `New Order` message.

When specifying the RiskRoot field, using the underlying symbol is strongly recommended. Risk Resets are always performed at the risk root (underlying) level.

Only one unique risk reset of a given type (EFID Group, EFID, Risk Root, CustomGroupID, and TargetMatchingUnit) is allowed per 100 milliseconds per port. Additional resets will be ignored (RiskResetResult = <space>). For example, a customer may reset risk for CustomGroupID = 1 and may not reset risk again for CustomGroupID = 1 until 100 milliseconds has elapsed. This restriction is designed to safeguard the trading platform from excessive risk messaging. On C1 only, if a risk limit is tripped or manually locked out at the end of the RTH session, the trip/lockout will persist into the Curb session.

CustomGroupID or EFID (ClearingFirm) risk resets may be directed to a specific matching unit using the TargetMatchingUnit optional field. If TargetMatchingUnit is zero, the risk reset will be sent to all matching units starting with unit 1.

**Table 1. Reset Risk Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x56` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| RiskStatusID | 10 | 16 | Text | Unique identifier for this Reset Risk request. Response message will have this corresponding identifier. Note: Cboe only enforces uniqueness of RiskStatusID values among currently unacknowledged requests. However, we strongly recommend that you keep your RiskStatusID values day-unique. |
| RiskReset | 26 | 8 | Text | Corresponds to RiskReset (7692) in Cboe FIX. Indicates Risk Root, Firm, or CustomGroupID lockout reset. See List of Optional Fields for allowed values. |
| TargetMatchingUnit | 34 | 1 | Binary | Direct the reset risk to a specific matching unit. A zero value will cause the reset risk to be sent to all matching units. Ignored for risk root level resets. |
| Reserved | 35 | 3 | Binary | Reserved for future expansion. To maintain forward compatibility, fill with 0. |
| ClearingFirm | 38 | 4 | Alpha | Risk will be reset for this EFID. |
| RiskRoot | 42 | 6 | Alphanumeric | Populate with Risk Root for resets at the Risk Root level. Leave empty for resets at the EFID level. |
| CustomGroupID | 48 | 2 | Binary | Populate with an identifier for resets including a CustomGroupID. Set to 0 to ignore. |

**Table 2. Reset Risk Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `30 00` | 48 bytes |
| MessageType | `56` | `Reset Risk` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| RiskStatusID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| RiskReset | `53 46 00 00 00 00 00 00` | `SF` = Symbol and EFID level reset |
| TargetMatchingUnit | `00` | `0` = target all matching units |
| Reserved | `00 00 00` |  |
| ClearingFirm | `54 45 53 54` | TEST |
| RiskRoot | `41 42 43 00 00 00` | ABC |
| CustomGroupID | `00 00` | No CustomGroupID |

**Table 3. Reset Risk Message Targeting a Matching Unit Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `30 00` | 48 bytes |
| MessageType | `56` | `Reset Risk` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| RiskStatusID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| RiskReset | `53 46 00 00 00 00 00 00` | `SF` = Symbol and EFID level reset |
| TargetMatchingUnit | `1A` | `26` = target matching unit 26 |
| Reserved | `00 00 00` |  |
| ClearingFirm | `54 45 53 54` | TEST |
| RiskRoot | `00 00 00 00 00 00` | No RiskRoot |
| CustomGroupID | `00 00` | No CustomGroupID |

#### New Complex Instrument Message Fields (C1, C2, and EDGX Only)

A `New Complex Instrument` message is used to request that the system create a complex strategy. The resulting symbol (if accepted by the system) will be returned in a `Complex Instrument Accepted` message; a `Complex Instrument Rejected` message will be sent if it is not accepted. All legs must have the same underlying product which can be different OSI Roots (i.e. XYZ and XYZ1).

A ClearingFirm must be sent on each `New Complex Instrument` message unless a Default Executing Firm ID is set at the port-level.

Permitted input optional fields are described in New Complex Instrument (C1, C2, and EDGX Only).

**Table 1. New Complex Instrument Message Fields (C1, C2, and EDGX Only)**

| Field | Offset | Length | Data Type | Description |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| MessageType | 4 | 1 | Binary | `0x4C` |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| ClOrdID | 10 | 20 | Text | Corresponds to ClOrdID (11) in Cboe FIX. Day-unique ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes. If the ClOrdID matches a live order, the order will be rejected as duplicate. Note: Cboe only enforces uniqueness of ClOrdID values among currently live orders. However, we strongly recommend that you keep your ClOrdID values day-unique. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| NumberOfNewComplexInstrumentBitfields | 30 | 1 | Binary | Bitfield identifying which bitfields are set. Field values must be appended to the end of the message. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| NewComplexInstrumentBitfield¹ | 31 | 1 | Binary | Bitfield identifying fields to follow. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| …. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| NewComplexInstrumentBitfieldᶯ |  | 1 | Binary | Last bitfield. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| NoLegs |  | 1 | Binary | Corresponds to NoLegs (555) in Cboe FIX. Indicates the number of repeating groups to fol- low. Must be a minimum of 2 and a maximum of 16. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| Repeating Group ComplexLeg must occur the number of times specified in NoLegs . Each field occurs in each group, in order as shown below. Optional fields occur only if corresponding bits in bitfields are set. Table 2. New Complex Instrument Message Fields (C1, C2, and EDGX Only) LegSymbol 8 Alphanumeric Corresponds to LegSymbol (600) in Cboe FIX. Entire Cboe format symbol or OSI Root. Must send LegCFICode , LegMaturityDate , and LegStrikePrice if using OSI format. LegCFICode (Optional) 6 Alphanumeric Corresponds to LegCFICode (608) in Cboe FIX. CFI Code for leg. Required if LegSymbol is in OSI format. `OP` = Options Put `OC` = Options Call `E` = Equity LegMaturityDate (Optional) 4 Date Corresponds to LegMaturityDate (611) in Cboe FIX. Required if LegSymbol is in OSI format. LegStrikePrice (Optional) 8 Binary Price Corresponds to LegStrikePrice (612) in Cboe FIX. Option strike price. System maximum is 99,999,999. Must be non-negative. Required if LegSymbol is in OSI format. LegRatioQty 4 Binary Corresponds to LegRatioQty (623) in Cboe FIX. Ratio of number of contracts in this leg per order quantity. Accepted values are 1-999,999. LegSide 1 Alphanumeric Corresponds to LegSide (624) in Cboe FIX. `1` = Buy `2` = Sell | LegSymbol | 8 | Alphanumeric | Corresponds to LegSymbol (600) in Cboe FIX. Entire Cboe format symbol or OSI Root. Must send LegCFICode , LegMaturityDate , and LegStrikePrice if using OSI format. | LegCFICode (Optional) | 6 | Alphanumeric | Corresponds to LegCFICode (608) in Cboe FIX. CFI Code for leg. Required if LegSymbol is in OSI format. `OP` = Options Put `OC` = Options Call `E` = Equity | LegMaturityDate (Optional) | 4 | Date | Corresponds to LegMaturityDate (611) in Cboe FIX. Required if LegSymbol is in OSI format. | LegStrikePrice (Optional) | 8 | Binary Price | Corresponds to LegStrikePrice (612) in Cboe FIX. Option strike price. System maximum is 99,999,999. Must be non-negative. Required if LegSymbol is in OSI format. | LegRatioQty | 4 | Binary | Corresponds to LegRatioQty (623) in Cboe FIX. Ratio of number of contracts in this leg per order quantity. Accepted values are 1-999,999. | LegSide | 1 | Alphanumeric | Corresponds to LegSide (624) in Cboe FIX. `1` = Buy `2` = Sell |
| LegSymbol | 8 | Alphanumeric | Corresponds to LegSymbol (600) in Cboe FIX. Entire Cboe format symbol or OSI Root. Must send LegCFICode , LegMaturityDate , and LegStrikePrice if using OSI format. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| LegCFICode (Optional) | 6 | Alphanumeric | Corresponds to LegCFICode (608) in Cboe FIX. CFI Code for leg. Required if LegSymbol is in OSI format. `OP` = Options Put `OC` = Options Call `E` = Equity |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| LegMaturityDate (Optional) | 4 | Date | Corresponds to LegMaturityDate (611) in Cboe FIX. Required if LegSymbol is in OSI format. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| LegStrikePrice (Optional) | 8 | Binary Price | Corresponds to LegStrikePrice (612) in Cboe FIX. Option strike price. System maximum is 99,999,999. Must be non-negative. Required if LegSymbol is in OSI format. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| LegRatioQty | 4 | Binary | Corresponds to LegRatioQty (623) in Cboe FIX. Ratio of number of contracts in this leg per order quantity. Accepted values are 1-999,999. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| LegSide | 1 | Alphanumeric | Corresponds to LegSide (624) in Cboe FIX. `1` = Buy `2` = Sell |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| Optional fields… |  |  |  | Optional fields as set in the bitmap. Note, optional fields that occur in the repeating groups appear above, repeating per group, not within this block. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |

**Table 3. New Complex Instrument Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `61 00` | 97 bytes |
| MessageType | `4C` | `New Complex Instrument` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| NumberOfNewComplex InstrumentBitfields | `01` | One bitfield to follow |
| NewComplexInstrumentBitfield1 | `0F` | LegCFICode, LegMaturityDate, LegStrikePrice, ClearingFirm |
| NoLegs | `02` | Two legs |
| LegSymbol | `4D 53 46 54 00 00 00 00` | MSFT |
| LegCFICode | `4F 43 00 00 00 00` | `OC` = Option Call |
| LegMaturityDate | `EF DB 32 01` | 2011-03-19 |
| LegStrikePrice | `98 AB 02 00 00 00 00 00` | 17.50 |
| LegRatioQty | `02 00 00 00` | Ratio of 2 |
| LegSide | `31` | Buy |
| LegSymbol | `4D 53 46 54 00 00 00 00` | MSFT |
| LegCFICode | `4F 50 00 00 00 00` | `OP` = Option Put |
| LegMaturityDate | `F6 DB 32 01` | 2011-03-26 |
| LegStrikePrice | `30 E6 02 00 00 00 00 00` | 19.00 |
| LegRatioQty | `01 00 00 00` | Ratio of 1 |
| LegSide | `32` | Sell |
| ClearingFirm | `54 45 53 54` | TEST |

#### Add Floor Trade Message Fields (C1 Only)

TPHs having in-person Market Makers on the Cboe trading floor can enter their version of a floor trade via the `Add Floor Trade` message type.

This message may be used to report any floor trades, but is primarily meant to be used to report floor trades between Market Makers. TPHs are encouraged to use `Floor Trade Confirmation` messages to respond to floor broker allocations ( `Floor Trade Notification` messages) if they agree with the terms of the trade.

The Exchange will respond to an `Add Floor Trade` message with an `Add Floor Trade Rejected` message or an `Order Acknowledgement` message followed by one or more `Order Executed` messages.

**Table 1. Add Floor Trade Message Fields (C1 Only)**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x5C` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| ClOrdID | 10 | 20 | Text | Corresponds to ClOrdID (11) in Cboe FIX. Day-unique ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes. If the ClOrdID matches a live order, the order will be rejected as duplicate. Note: Cboe only enforces uniqueness of ClOrdID values among currently live orders. However, we strongly recommend that you keep your ClOrdID values day-unique. |
| Symbol | 30 | 8 | Alphanumeric | Corresponds to Symbol (55) in Cboe FIX. Entire Cboe format symbol or OSI symbol if using long format. |
| PutOrCall | 38 | 1 | Alphanumeric | Corresponds to PutOrCall (201) in Cboe FIX. `0` = Put `1` = Call NULL (0x00) filled if using Cboe format symbol. |
| StrikePrice | 39 | 8 | Binary Price | Corresponds to StrikePrice (202) in Cboe FIX. Strike Price for option, 0 - 999,999.99 NULL (0x00) filled if using Cboe format symbol. |
| MaturityDate | 47 | 4 | Date | Corresponds to MaturityMonth (200) and MaturityDay (205) in Cboe FIX. NULL (0x00) filled if using Cboe format symbol. |
| MultilegReportingType | 51 | 1 | Alphanumeric | Corresponds to MultilegReportingType (442) in Cboe FIX. Indicates the type of `Order Execution` message. `1` = Single-leg instrument `2` = Individual leg of multi-leg instrument |
| ComboOrder | 52 | 1 | Alpha | Corresponds to ComboOrder (22005) in Cboe FIX. Declare the order as a Combo (for regulatory relief if trading SPX on the floor). `N` = (Default) No `Y` = Yes |
| Account | 53 | 16 | Text | Corresponds to Account (1) in Cboe FIX. Characters in ASCII range 33-126 are allowed. When clearing OCC, the value is passed to clearing in the Clearing Member Optional Data field (16 characters) and the Customer ID field (max 10 characters). The value may be made available in the Member's clearing file. When clearing Cboe Clear U.S., the value is passed to clearing in the Customer Account Number field. |
| ClearingOptionalData | 69 | 16 | Text | Corresponds to ClearingOptionalData (9324) in Cboe FIX. This field will be reflected back on Execution Reports. This value is passed through to clearing. |
| ClearingAccount | 85 | 4 | Text | Corresponds to ClearingAccount (440) in Cboe FIX. This field is returned in Execution Reports including FIX Drop. When Capacity is set to a value of M or N for Market Maker, this field should be filled with the desired market maker ID. When using CMTA, this value is the Market Maker ID for the CMTA member instead of the Cboe member executing the trade. This value is passed through to clearing. If OrderCapacity (47) is not set to ‘M’ or ‘N’ and ClearingAccount is populated, the order will be rejected by default on C1 and C2 and will be accepted by default for EDGX Only. |
| CMTANumber | 89 | 4 | Binary | Corresponds to CMTANumber (439) in Cboe FIX. CMTA Number of the firm that will clear the trade. Must be specified for CMTA orders and left unspecified for non-CMTA orders. |
| FloorTraderAcronym | 93 | 3 | Alpha | Floor acronym of participant submitting trade. |
| Side | 96 | 1 | Alphanumeric | Corresponds to Side (54) in Cboe FIX. `1` = Buy `2` = Sell |
| OrderQty | 97 | 4 | Binary | Corresponds to OrderQty (38) in Cboe FIX. Order quantity. System limit is 999,999 contracts. |
| Price | 101 | 8 | Binary Price | Corresponds to Price (44) in Cboe FIX. Limit price. Order rejected if priced finer than the minimum trading increment for the option. |
| TransactionTime | 109 | 8 | DateTime | Report send time (for audit). |
| OpenClose | 117 | 1 | Alphanumeric | Corresponds to OpenClose (77) in Cboe FIX. Indicates status of client position in the option. `O` = Open `C` = Close `N` = None* *Orders with Capacity = `M` or ‘N’ will not be required to specify OpenClose on their orders or may optionally specify a value of ‘N’, unless the series is limited to closing only. If the series is limited to closing only transactions, only Capacity = `M` will be permitted to submit OpenClose = `O` if the order has `TimeInForce` = ‘3’ (IOC) and RoutingInst = `B` , or the order has a RoutingInst = `P` . An Open position cannot trade with an Open position for series limited to Closing Only transactions, even if the inbound IOC from the aggressing market maker is sent with that combination of tags. |
| FloorTradeTime | 118 | 8 | Date Time | Trade time |
| ContraTrader | 126 | 4 | Alphanumeric | Displays the EFID (ClearingFirm) of the contra side firm on all internally matched executions. |
| Reserved | 130 | 16 | Reserved | Reserved |

**Table 2. Add Floor Trade Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `90 00` | 144 bytes |
| MessageType | `5C` | `Add Floor Trade` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| Symbol | `30 30 36 69 70 41 00 00` | 006ipA |
| PutorCall | `00` |  |
| StrikePrice | `00 00 00 00 00 00 00 00` |  |
| MaturityDate | `00 00 00 00` |  |
| MultilegReportingType | `31` | `1`=Single leg instrument |
| ComboOrder | `4E` | `N`=No |
| Account | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` |  |
| ClearingOptionalData | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` |  |
| ClearingAccount | `41 42 43 00` | ABC |
| CMTANumber | `00 00 00 00` |  |
| FloorTraderAcronym | `44 45 46` | DEF |
| Side | `31` | `1`=Buy |
| OrderQty | `64 00 00 00` | 100 contracts |
| Price | `C8 32 00 00 00 00 00 00` | 1.30 |
| TransactionTime | `00 5C DB E2 27 12 B4 15` | 1,563,894,933,123,456,000 |
| OpenClose | `4F` | `O`=Open |
| FloorTradeTime | `68 23 4A 8B 27 12 B4 15` | 1,563,894,931,654,321,000 |
| ContraTrader | `57 58 59` | WXY |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |

#### Floor Trade Confirmation Message Fields (C1 Only)

TPHs are encouraged to use `Floor Trade Confirmation` messages to respond to `Floor Trade Notification` messages if they agree with the terms of the trade. Alternatively, an `Add Floor Trade` message may be used to enter their version of the floor trade. If the floor trade notification is not known to the user (for example, if the TPH is misidentified as a contra party to a floor trade), the message can be disregarded; a response is not required.

The Exchange will respond to a Floor Trade Confirmation message with an Order Executed message or Floor Trade Confirmation Rejected message.

**Table 1. Floor Trade Confirmation Message Fields (C1 Only)**

| Field | Offset | Length | Data Type | Description |  |  |  |  |  |  |  |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |  |  |  |  |  |  |  |  |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |  |  |  |  |  |  |  |  |
| MessageType | 4 | 1 | Binary | `0x5B` |  |  |  |  |  |  |  |  |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |  |  |  |  |  |  |  |  |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |  |  |  |  |  |  |  |  |
| ClOrdID | 10 | 20 | Text | Corresponds to ClOrdID (11) in Cboe FIX. Day-unique ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes. If the ClOrdID matches a live order, the order will be rejected as duplicate. Note: Cboe only enforces uniqueness of ClOrdID values among currently live orders. However, we strongly recommend that you keep your ClOrdID values day-unique. |  |  |  |  |  |  |  |  |
| ExecID | 30 | 8 | Binary | Corresponds to ExecID (17) in Cboe FIX. Execution ID. Unique across all matching units on a given day. Note: ExecIDs will be represented on ODROP and FIXDROP ports as nine character, base 36 ASCII. Leading zeros should be added if the converted base 36 value is shorter than nine characters. Table 2. Example Conversion Decimal Base 36 28294005440239 A1234B567 76335905726621 R248BC23H 728557228187 09AP05V2Z | Decimal | Base 36 | 28294005440239 | A1234B567 | 76335905726621 | R248BC23H | 728557228187 | 09AP05V2Z |
| Decimal | Base 36 |  |  |  |  |  |  |  |  |  |  |  |
| 28294005440239 | A1234B567 |  |  |  |  |  |  |  |  |  |  |  |
| 76335905726621 | R248BC23H |  |  |  |  |  |  |  |  |  |  |  |
| 728557228187 | 09AP05V2Z |  |  |  |  |  |  |  |  |  |  |  |
| Symbol | 38 | 8 | Alphanumeric | Corresponds to Symbol (55) in Cboe FIX. Entire Cboe format symbol or OSI symbol if using long format. |  |  |  |  |  |  |  |  |
| PutOrCall | 46 | 1 | Alphanumeric | Corresponds to PutOrCall (201) in Cboe FIX. `0` = Put `1` = Call NULL (0x00) filled if using Cboe format symbol. |  |  |  |  |  |  |  |  |
| StrikePrice | 47 | 8 | Binary Price | Corresponds to StrikePrice (202) in Cboe FIX. Strike Price for option, 0 - 999,999.99 NULL (0x00) filled if using Cboe format symbol. |  |  |  |  |  |  |  |  |
| MaturityDate | 55 | 4 | Date | Corresponds to MaturityMonth (200) and MaturityDay (205) in Cboe FIX. NULL (0x00) filled if using Cboe format symbol. |  |  |  |  |  |  |  |  |
| TransactionTime | 59 | 8 | DateTime | Report send time (for audit). |  |  |  |  |  |  |  |  |
| PriceType | 67 | 1 | Alphanumeric | Corresponds to PriceType (423) in Cboe FIX. `1` = Traded as percentage `2` = (Default) Price per unit (contract) |  |  |  |  |  |  |  |  |
| Reserved | 68 | 15 | Reserved | Reserved |  |  |  |  |  |  |  |  |

**Table 3. Floor Trade Confirmation Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `51 00` | 81 bytes |
| MessageType | `5B` | `Floor Trade Confirmation` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| ExecID | `01 F0 B7 D9 71 21 00 00` | D19800001 (base 36) |
| Symbol | `30 30 36 69 70 41 00 00` | 006ipA |
| PutorCall | `00` |  |
| StrikePrice | `00 00 00 00 00 00 00 00` |  |
| MaturityDate | `00 00 00 00` |  |
| TransctionTime | `00 5C DB E2 27 12 B4 15` | 1,563,894,933,123,456,000 |
| PriceType | `32` | `2` = Price per unit |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |

#### Delete Floor Trade (C1 Only)

TPHs having in-person Market Makers on the Cboe trading floor can request the deletion of their version of a floor trade via the Delete Floor Trade message type. The trade report to delete will be identified by the ExecId. The TPH entering the floor trade deletion message must be on the specified side of the identified trade. The Exchange will respond to a `Delete Floor Trade` message with a `Delete Floor Trade Reject` message or with a `Delete Floor Trade Acknowledgement` message if the floor trade report is successfully deleted.

| Field | Offset | Length | Data Type | Description |  |  |  |  |  |  |  |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |  |  |  |  |  |  |  |  |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |  |  |  |  |  |  |  |  |
| MessageType | 4 | 1 | Binary | `0x5D` |  |  |  |  |  |  |  |  |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |  |  |  |  |  |  |  |  |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |  |  |  |  |  |  |  |  |
| ClOrdID | 10 | 20 | Text | Corresponds to ClOrdID (11) in Cboe FIX. Day-unique ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes If the ClOrdID matches a live order, the order will be rejected as duplicate. Note: Cboe only enforces uniqueness of ClOrdID values among currently live orders. However, we strongly recommend that you keep your ClOrdID values day-unique. |  |  |  |  |  |  |  |  |
| ExecID | 30 | 8 | Binary | Corresponds to ExecID (17) in Cboe FIX. Execution ID. Unique across all matching units on a given day. Note: ExecIDs will be represented on ODROP and FIXDROP ports as nine character, base 36 ASCII. Leading zeros should be added if the converted base 36 value is shorter than nine characters. Table 1. Example Conversion Decimal Base 36 28294005440239 A1234B567 76335905726621 R248BC23H 728557228187 09AP05V2Z | Decimal | Base 36 | 28294005440239 | A1234B567 | 76335905726621 | R248BC23H | 728557228187 | 09AP05V2Z |
| Decimal | Base 36 |  |  |  |  |  |  |  |  |  |  |  |
| 28294005440239 | A1234B567 |  |  |  |  |  |  |  |  |  |  |  |
| 76335905726621 | R248BC23H |  |  |  |  |  |  |  |  |  |  |  |
| 728557228187 | 09AP05V2Z |  |  |  |  |  |  |  |  |  |  |  |
| Symbol | 38 | 8 | Alphanumeric | Corresponds to Symbol (55) in Cboe FIX. Entire Cboe format symbol or OSI symbol if using long format. |  |  |  |  |  |  |  |  |
| PutOrCall | 46 | 1 | Alphanumeric | Corresponds to PutOrCall (201) in Cboe FIX. `0` = Put `1` = Call NULL (0x00) filled if using Cboe format symbol. |  |  |  |  |  |  |  |  |
| StrikePrice | 47 | 8 | Binary Price | Corresponds to StrikePrice (202) in Cboe FIX. Strike Price for option, 0 - 999,999.99 NULL (0x00) filled if using Cboe format symbol. |  |  |  |  |  |  |  |  |
| MaturityDate | 55 | 4 | Date | Corresponds to MaturityMonth (200) and MaturityDay (205) in Cboe FIX. NULL (0x00) filled if using Cboe format symbol. |  |  |  |  |  |  |  |  |
| Side | 59 | 1 | Alphanumeric | Corresponds to Side (54) in Cboe FIX. `1` = Buy `2` = Sell |  |  |  |  |  |  |  |  |
| Reserved | 60 | 16 | Reserved | Reserved |  |  |  |  |  |  |  |  |

**Table 2. Delete Floor Trade Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `4A 00` | 74 bytes |
| MessageType | `5D` | `Delete Floor Trade` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| ExecID | `01 F0 B7 D9 71 21 00 00` | D19800001 (base 36) |
| Symbol | `30 30 36 69 70 41 00 00` | 006ipA |
| PutorCall | `00` |  |
| StrikePrice | `00 00 00 00 00 00 00 00` |  |
| MaturityDate | `00 00 00 00` |  |
| Side | `31` | Buy |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |

### Cboe to Member

#### Order Acknowledgment Message Fields

`Order Acknowledgment` messages are sent in response to `New Order` and `New Complex Order` messages. The message corresponds to a FIX Execution Report with ExecType (150) = 0 (New).

Per the instructions given in a Return Bitfields Parameter Group on the `Login Request` (see Login Request Message Fields), optional fields may be appended to echo back information provided in the original `New Order` message. Fields which have been requested to be echoed back but which were not filled in will still be sent, but filled with binary zero ( `0x00`).

Permitted return optional fields are described in Order Acknowledgment.

**Table 1. Order Acknowledgment Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x25` |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per matching unit. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | Echoed back from the original order. |
| OrderID | 38 | 8 | Binary | Corresponds to OrderID (37) in Cboe FIX. Order identifier supplied by Cboe. This identifier corresponds to the identifiers used in Cboe market data products. |
| ReservedInternal | 46 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturnBitfields | 47 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 48 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Order Acknowledgment Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `4E 00` | 78 bytes |
| MessageType | `25` | `Order Acknowledgment` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `03` | Three bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `41` | Symbol, Capacity |
| ReturnBitfield3 | `05` | Account, ClearingAccount |
| Symbol | `31 32 33 61 42 63 00 00` | 123aBc |
| Capacity | `50` | `P` = Principal |
| Account | `41 42 43 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC |
| ClearingAccount | `00 00 00 00` |  |

**Table 3. Minimal Order Acknowledgment Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `2E 00` | 46 bytes |
| MessageType | `25` | `Order Acknowledgment` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `00` | No bitfields to follow |

#### Cross Order Acknowledgment Message Fields (C1 and EDGX Only)

`Cross Order Acknowledgment` messages are sent in response to `New Order Cross` and `New Order Cross Multileg` messages. The message corresponds to a FIX Execution Report with ExecType (150) = 0 (New). In FIX, multiple execution reports could be generated from one new cross order message.

Per the instructions given in a Return Bitfields Parameter Group on the `Login Request` message (see Login Request Message Fields), optional fields may be appended to echo back information provided in the original `New Order Cross` message. Fields which have been requested to be echoed back but which were not filled in will still be sent, but filled with binary zero (0x00).

In each repeating group, the ClOrdID and OrderId are always returned. Beyond that, the bits specified in the optional return bitfields parameter group control which fields are returned. Any fields that appear in the repeating groups will not appear in the optional fields that come after the repeating groups.

Permitted return optional fields are described in Cross Order Acknowledgment (C1 and EDGX only).

**Table 1. Cross Order Acknowledgment Message Fields (C1 and EDGX Only)**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x43` |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per matching unit. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| CrossID | 18 | 20 | Text | Corresponds to CrossID (548) in Cboe FIX. Echoed back from the original order. |
| AuctionId | 38 | 8 | Binary | Corresponds to AuctionId (9370) in Cboe FIX. Auction order identifier supplied by Cboe. This identifier corresponds to the identifiers used in Cboe market data products. |
| ReservedInternal | 46 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturnBitfields | 47 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 48 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| GroupCnt |  | 2 | Binary | Number of order allocations represented by repeating groups included in this message. |
| Repeating Groupsof… |  |  |  |  |
| ClOrdId |  | 20 | Text | Echoed back from the original order. |
| OrderId |  | 8 | Binary | OrderId assigned by the matching engine. |
| Side (Optional) |  | 1 | Alphanumeric | See List of Optional Fields. |
| AllocQty (Optional) |  | 4 | Binary | See List of Optional Fields. |
| Capacity (Optional) |  | 1 | Alpha | See List of Optional Fields. |
| OpenClose (Optional) |  | 1 | Alphanumeric | See List of Optional Fields. |
| GiveUpFirmID (Optional) |  | 4 | Alpha | See List of Optional Fields. |
| Account (Optional) |  | 16 | Text | See List of Optional Fields. |
| CMTANumber (Optional) |  | 4 | Binary | See List of Optional Fields. |
| ClearingAccount (Optional) |  | 4 | Text | See List of Optional Fields. |
| Optional fields. . . |  |  |  | Optional fields as set in the bitmap. Note, optional fields that occur in the repeating groups appear above, repeating per group, not within this block. |

**Table 2. Cross Order Acknowledgment Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `91 00` | 145 bytes |
| MessageType | `43` | `Cross Order Acknowledgment` |
| MatchingUnit | `02` | Matching Unit 2 |
| SequenceNumber | `01 00 00 00` | Sequence number 1 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| CrossID | `4E 5A 31 56 37 42 4A 5F 41 63 63 65 70 74 42 75 79 00 00 00` | NZ1V7BJ_AcceptBuy |
| AuctionId | `01 C0 91 A2 94 AB 78 04` | 2G4GYK000001 (base 36) |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `02` | Two bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `41` | Symbol, Capacity |
| GroupCnt | `03 00` | Three repeating groups to follow |
| ClOrdID | `4E 5A 31 56 37 47 4E 5F 61 67 65 6E 63 79 00 00 00 00 00 00` | NZ1V7GN_agency |
| OrderID | `02 C0 91 A2 94 AB 78 04` | 2G4GYK000002 (base 36) |
| Capacity | `43` | `C` = Customer |
| ClOrdID | `4E 5A 31 56 37 4B 46 5F 63 6F 6E 74 72 61 31 00 00 00 00 00` | NZ1V7KF_contra1 |
| OrderID | `03 C0 91 A2 94 AB 78 04` | 2G4GYK000003 (base 36) |
| Capacity | `46` | `F` = Firm |
| ClOrdID | `4E 5A 31 56 37 4E 48 5F 63 6F 6E 74 72 61 32 00 00 00 00 00` | NZ1V7NH_contra2 |
| OrderID | `04 C0 91 A2 94 AB 78 04` | 2G4GYK000004 (base 36) |
| Capacity | `46` | `F` = Firm |
| Symbol | `30 30 51 30 6B 41 00 00` | 00Q0kA |

#### Quote Update Acknowledgment Message Fields

`Quote Update Acknowledgment` messages are sent in response to `Quote Update` and `Complex Quote Update` messages. The effect of each requested update will be found in this response. The ordering between request and response is preserved.

For quotes which may remove liquidity or which may post and cause additional Matching Engine action to be taken, such as the early termination of an in progress auction, QuoteResult values of `D` or `d` will be returned. In these cases, executions, cancellations, or modifications (as needed) will immediately follow as additional messages. PITCH messaging behavior may also change (e.g. Delete+Add rather than standard Order Modified) for these cases to ensure correct sequencing of events.

In some cases, a new OrderID will be assigned for an existing quote. There are currently two situations where this occurs, but others may be added in the future:

1. An order which has received a large number of quote updates over its life will be assigned a new OrderID if receiving an update which would cause a loss in priority.
2. A quote update sent to modify the PostingInstruction will be assigned a new OrderID if there is an existing quote in that symbol on that port and for that EFID.

If using the OrderID in your system or to correlate with an OrderID on PITCH, always be prepared to receive an update on an `Quote Update Acknowledgment` message.

**Table 1. Quote Update Acknowledgment Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x51` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. MatchingUnit will be set to 0.Unsequenced application message. MatchingUnit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. SequenceNumber will be set to 0.This will be an unsequenced application message. The sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| QuoteUpdateID | 18 | 16 | Text | Echoed back from the `Quote Update` or `Complex Quote Update` request. |
| QuoteRejectReason | 34 | 1 | Text | Reason for rejection of an entire `Quote Update` message by the matching engine. If an error is indicated, then no quotes were entered or updated. QuoteCnt will be 0. <space> = Success See Quote Reason Codes for a list of possible quote reject codes. Additional reasons may be added in the future without warning. |
| Reserved | 35 | 17 | Binary | Reserved for future expansion. Filled with 0. |
| QuoteCnt | 52 | 1 | Binary | Number of repeating groups included in this acknowledgment. Allowed values are 1-20. |
| Repeating Groups of … |  |  |  |  |
| OrderID |  | 8 | Binary | Order ID assigned by the matching engine. Corresponds to order ID on PITCH. |
| QuoteResult |  | 1 | Text | Result of the quote request. Acceptance: `A` = New Quote `I` = IOC Quote Accepted `L` = Modified; loss of priority `R` = Modified; retains priority (size reduction) `N` = No change, matches existing quote `D` = New Quote, but may remove liquidity `d` = Modified, but may remove liquidity `V` = No change, existing constituent series quote modify attempt after cutoff time (C1 only) Cancellation: `U` = User cancelled (zero size/price requested) Rejection: `a` = Admin `O` = Rejected, doesn’t match a known quote `P` = Rejected, can’t post `f` = Risk management firm or Custom Group ID level `S` = Rejected, symbol not found `p` = Rejected, invalid price `r` = Invalid Remove `s` = Risk management risk root level `u` = Rejected, other reason `+` = Risk management EFID Group level `c` = Rejected, closing only series `v` = Rejected, attempt to add constituent series quote after cutoff time (C1 only) Additional reasons indicating a reject may be added in the future with no notice. |
| SubLiquidityIndicator |  | 1 | Text | `N` = Normal `S` = NBBO Setter `J` = NBBO Joiner `U` = Market Turner (C1 only) `<space>` = No quote on book New values may be added in the future without warning. |
| Subreason |  | 1 | Text | Additional detail for a quote rejection. See Order and Quote Subreason Codes for a list of possible subreasons. |
| Reserved |  | 5 | Binary | Reserved for future expansion. Filled with 0. |

**Table 2. Quote Update Acknowledgment Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `53 00` | 83 bytes |
| MessageType | `51` | `Quote Update Acknowledgment` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| QuoteUpdateID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| QuoteRejectReason | `20` | <space> = Success |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` |  |
| QuoteCnt | `02` | Two Quotes |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| QuoteResult | `64` | `d` = Modified, but may remove liquidity |
| SubLiquidityIndicator | `4E` | `N` = Normal |
| Subreason | `20` | <space> = None |
| Reserved | `00 00 00 00 00` |  |
| OrderID | `06 10 1E B7 5E 39 2F 02` | 171WC1000006 (base 36) |
| QuoteResult | `4C` | `L` = Modified, loss of priority |
| SubLiquidityIndicator | `53` | `S` = NBBO Setter |
| Subreason | `20` | <space> = None |
| Reserved | `00 00 00 00 00` |  |

#### Order Rejected Message Fields

`Order Rejected` messages are sent in response to a `New Order` message which must be rejected. This message corresponds to a FIX Execution Report with ExecType (150) = 8 (Rejected). `Order Rejected` messages are unsequenced.

Permitted return optional fields are described in Order Rejected.

**Table 1. Order Rejected Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x26` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | Echoed back from the original order. |
| OrderRejectReason | 38 | 1 | Text | Reason for an order rejection. See Order Reason Codes for a list of possible reasons. |
| Text | 39 | 60 | Text | Human readable text with more information about the reject reason. |
| ReservedInternal | 99 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 100 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 101 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Order Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `85 00` | 133 bytes |
| MessageType | `26` | `Order Rejected` |
| MatchingUnit | `0` | Unsequenced message, `unit` = 0 |
| SequenceNumber | `00 00 00 00` | Unsequenced message, `sequence` = 0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderRejectReason | `44` | D |
| Text | `44 75 70 6C 69 63 61 74 65 20 43 6C 4F 72 64 49 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Duplicate ClOrdID |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `04` | Four bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `01` | Symbol |
| ReturnBitfield3 | `06` | ClearingFirm, ClearingAccount |
| ReturnBitfield4 | `0F` | MaturityDate, StrikePrice, PutOrCall, OpenClose |
| Symbol | `54 4E 44 4D 00 00 00 00` | TNDM |
| ClearingFirm | `54 45 53 54` | TEST |
| ClearingAccount | `00 00 00 00` | (empty) |
| MaturityDate | `EF DB 32 01` | 2011-03-19 |
| StrikePrice | `98 AB 02 00 00 00 00 00` | 17.50 |
| PutOrCall | `31` | `1` = Call |
| OpenClose | `4F` | `O` = Open |

#### Cross Order Rejected Message Fields (C1 and EDGX Only)

`Cross Order Rejected` messages are sent in response to a `New Order Cross` and `New Order Cross Multileg` messages which must be rejected. This message corresponds to a FIX Execution Report with ExecType (150) = 8 (Rejected). `Order Rejected` messages are unsequenced.

Permitted return optional fields are described in Cross Order Rejected (C1 and EDGX Only).

**Table 1. Cross Order Rejected Message Fields (C1 and EDGX Only)**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x44` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| CrossID | 18 | 20 | Text | Echoed back from the original order. |
| OrderRejectReason | 38 | 1 | Text | Reason for an order rejection. See Order Reason Codes for a list of possible reasons. |
| Text | 39 | 60 | Text | Human readable text with more information about the reject reason. |
| ReservedInternal | 99 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 100 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 101 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Cross Order Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `59 00` | 89 bytes |
| MessageType | `44` | `Cross Order Rejected` |
| MatchingUnit | `0` | Unsequenced message, `unit` = 0 |
| SequenceNumber | `00 00 00 00` | Unsequenced message, `sequence` = 0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderRejectReason | `41` | A |
| Text | `53 65 72 69 65 73 20 6E 6F 74 20 63 75 72 72 65 6E 74 6C 79 20 74 72 61 64 69 6E 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Series not currently trading |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `02` | Two bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `01` | Symbol |
| Symbol | `30 30 51 30 6B 41 00 00` | 00Q0kA |

#### Quote Update Rejected Message Fields

`Quote Update Rejected` messages are sent in response to `Quote Update` and `Complex Quote Update` messages when the entire quote block is rejected by the order handler. No existing quotes are updated or cancelled as a result.

**Table 1. Quote Update Rejected Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x58` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| QuoteUpdateID | 18 | 16 | Text | Echoed back from the `Quote Update` or `Complex Quote Update` request. |
| QuoteRejectReason | 34 | 1 | Text | Reason for rejection of an entire `Quote Update` message. See Quote Reason Codes for a list of possible quote reject codes. Additional reasons may be added in the future without warning. |
| Reserved | 35 | 17 | Binary | Reserved for future expansion. Filled with 0. |

**Table 2. Quote Update Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `32 00` | 50 bytes |
| MessageType | `58` | `Quote Update Rejected` |
| MatchingUnit | `0` | Unsequenced message, `unit` = 0 |
| SequenceNumber | `00 00 00 00` | Unsequenced message, `sequence` = 0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| QuoteUpdateID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| QuoteRejectReason | `4D` | `M` = symbols not on same matching engine |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |

#### Order Modified Message Fields

`Order Modified` messages are sent in response to a `Modify Request` message to indicate that the order has been successfully modified.

Note: You must opt-in to receiving LeavesQty in Order Modified messages. In some cases, the last message to be received on an order's lifecycle will be an `Order Modified` message. The way to know the order is no longer live is to inspect LeavesQty. An example of this would be modification of an order whilst an execution is being generated, resulting in the order being reduced to zero outstanding quantity.

Permitted return optional fields are described in Order Modified.

**Table 1. Order Modified Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x27` |
| MatchingUnit | 5 | 1 | Binary | The Matching Unit which created this message. Matching units in BOE correspond to Matching Units on Multicast PITCH. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per Matching Unit. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | Client order ID. This is the ClOrdID from the Modify Order message. |
| OrderID | 38 | 8 | Binary | Corresponds to OrderID (37) in Cboe FIX. The unique OrderID . Modifications do not change the OrderID . |
| ReservedInternal | 46 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 47 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 48 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Order Modified Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `35 00` | 63 bytes |
| MessageType | `27` | `Order Modified` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `05` | Five bitfields to follow |
| ReturnBitfield1 | `04` | Price |
| ReturnBitfield2 | `00` | No fields from byte 2 |
| ReturnBitfield3 | `00` | No fields from byte 3 |
| ReturnBitfield4 | `00` | No fields from byte 4 |
| ReturnBitfield5 | `02` | LeavesQty |
| Price | `08 E2 01 00 00 00 00 00` | 12.34 |
| LeavesQty | `00 00 00 00` | 0 (order done) |

#### Order Restated Message Fields

`Order Restated` messages are sent to inform the Member that an order has been asynchronously modified

for some reason without an explicit `Modify Order` message request having been sent. Some example (non-exhaustive) reasons for `Order Restated` messages being sent:

- A reserve (iceberg) order has been reloaded (C1 and C2 Only).
- An order's remaining quantity was decremented because of a prevented wash trade.
- An order is represented on the Cboe Options Trading Floor (C1 Only).
- A routed order has returned to rest on the book after matching liquidity on another market.

Members should be prepared to accept and apply `Order Restated` messages for any reason. The return bitfields indicate the characteristics of the order which have changed. Optional fields will be present at the end of the message with the new values.

Note: You must opt-in to receiving LeavesQty in Order Restated messages. In some cases, the last message to be received on an order's lifecycle will be an `Order Restated` message. The way to know the order is no longer live is to inspect LeavesQty. An example of this would be restatement of an order in some cases due to PreventMatch being set to `d`.

Permitted return optional fields are described in Order Restated.

**Table 1. Order Restated Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x28` |
| MatchingUnit | 5 | 1 | Binary | The Matching Unit which created this message. Matching units in BOE correspond to Matching Units on Multicast PITCH. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per Matching Unit. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | The ClOrdID is the identifier from the open order. |
| OrderID | 38 | 8 | Binary | Corresponds to OrderID (37) in Cboe FIX. The unique OrderID . For informational purposes only. Restatements do not change the OrderID . |
| RestatementReason | 46 | 1 | Alphanumeric | The reason for this Order Restated message. `E` = Reduction of OrdQty due to Equity Leg Reject (C1 only) `F` = Represented on Floor (C1 only) `L` = Reload `P` = Price Sliding Reprice `Q` = Liquidity Updated `R` = Reroute `S` = Ship and Post (SWP) `W` = Wash `f` = Unsolicited Floor Action (C1 only) Cboe reserves the right to add new values as necessary without prior notice. |
| ReservedInternal | 47 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 48 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 49 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Order Restated Message for a Reserve (Iceberg) Reload Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `41 00` | 65 bytes |
| MessageType | `28` | `Order Restated` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| RestatementReason | `4C` | `L`=Reload |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `06` | Six bitfields to follow |
| ReturnBitfield1 | `00` | No fields from byte 1 |
| ReturnBitfield2 | `00` | No fields from byte 2 |
| ReturnBitfield3 | `00` | No fields from byte 3 |
| ReturnBitfield4 | `00` | No fields from byte 4 |
| ReturnBitfield5 | `02` | LeavesQty |
| ReturnBitfield6 | `01` | SecondaryOrderID |
| LeavesQty | `64 00 00 00` | 100 contracts |
| SecondaryOrderID | `0A 10 1E B7 5E 39 2F 02` | 171WC100000A (base 36) |

#### Quote Restated Message Fields

`Quote Restated` messages are sent to inform the Member that an order has been asynchronously modified for some reason by the Exchange. For quotes, this could happen if the MTP decrement method has been used by an inbound order against a resting quote. Additional reasons may be added in the future.

This message may be expanded in length in the future with new fields added to the end. To maintain forward compatibility, be prepared to receive a message longer than the documented length and to gracefully ignore those extra fields.

**Table 1. Quote Restated Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x52` |
| MatchingUnit | 5 | 1 | Binary | The Matching Unit which created this message. Matching units in BOE correspond to Matching Units on Multicast PITCH. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per Matching Unit. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| QuoteUpdateID | 18 | 16 | Text | Echoed back from the most recent `Quote Update` or `Complex Quote Update` request for this quote. |
| OrderID | 34 | 8 | Binary | Corresponds to OrderID (37) in Cboe FIX. The unique OrderID . For informational purposes only. Restatements do not change the OrderID . |
| LeavesQty | 42 | 4 | Binary | New quantity available for execution |
| WorkingPrice | 46 | 8 | Binary | New working price |
| Symbol | 54 | 6 | Alphanumeric | Cboe native identifier |
| Side | 60 | 1 | Alphanumeric | `1` = Buy `2` = Sell |
| RestatementReason | 61 | 1 | Alphanumeric | The reason for this Quote Restated message. `Q` = Liquidity `W` = Wash Cboe reserves the right to add new values as necessary without prior notice. |

**Table 2. Quote Restated Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `3C 00` | 60 bytes |
| MessageType | `52` | `Quote Restated` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| QuoteUpdateID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| LeavesQty | `14 00 00 00` | 20 contracts |
| WorkingPrice | `AC 07 01 00 00 00 00 00` | 6.75 |
| Symbol | `30 30 34 63 53 73` | 004cSs |
| Side | `31` | `1`=Buy |
| RestatementReason | `4C` | `L`=Reload |

#### User Modify Rejected Message Fields

`User Modify Rejected` messages are sent in response to a `Modify Order` message for an order which cannot be modified. `User Modify Rejected` messages are unsequenced.

This message corresponds to a FIX Execution Report with MsgType (35) = 9 (Order Cancel Reject) and CxlRejResponseTo (434) = 2 (Order Cancel/Replace Request).

Permitted return optional fields are described in User Modify Rejected.

**Table 1. User Modify Rejected Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x29` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | The ClOrdID of the modify request which was rejected. |
| ModifyRejectReason | 38 | 1 | Text | Reason for a modify rejection. See Order Reason Codes for a list of possible reasons. |
| Text | 39 | 60 | Text | Human readable text with more information about the reject reason. |
| ReservedInternal | 99 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 100 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 101 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. User Modify Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `63 00` | 99 bytes |
| MessageType | `29` | `User Modify Rejected` |
| MatchingUnit | `00` | Unsequenced Message, `unit` = 0 |
| SequenceNumber | `00 00 00 00` | Unsequenced Message, `sequence` = 0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| ModifyRejectReason | `50` | Pending Fill |
| Text | `50 65 6E 64 69 6E 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Pending |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn | `00` | No optional fields |
| Bitfields |  |  |

#### Order Cancelled Message Fields

An order has been cancelled. Permitted return optional fields are described in Order Cancelled.

**Table 1. Order Cancelled Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x2A` |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per matching unit. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | The order which was cancelled. |
| CancelReason | 38 | 1 | Text | Reason for the order cancellation. See Order Reason Codes for a list of possible reasons. |
| ReservedInternal | 39 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 40 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 41 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Order Cancelled Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `48 00` | 72 bytes |
| MessageType | `2A` | `Order Cancelled` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| CancelReason | `55` | `U` = User Requested |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `05` | Five bitfields to follow |
| ReturnBitfield1 | `00` | No fields from byte 1 |
| ReturnBitfield2 | `00` | No fields from byte 2 |
| ReturnBitfield3 | `06` | ClearingFirm, ClearingAccount |
| ReturnBitfield4 | `00` | No fields from byte 4 |
| ReturnBitfield5 | `01` | OrigClOrdID |
| ClearingFirm | `54 45 53 54` | TEST |
| ClearingAccount | `31 32 33 34` | 1234 |
| OrigClOrdID | `41 42 43 31 32 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC121 |

#### Quote Cancelled Message Fields

A `Quote Cancelled` message will be sent to indicate an unsolicited cancellation of a quote entered with a `Quote Update` or `Complex Quote Update` message. An unsolicited cancellation is used, for example, when a resting quote is cancelled due to MTP with an inbound order or quotes are being cancelled due to a risk trip.

This message may be expanded in length in the future with new fields added to the end. To maintain forward compatibility, be prepared to receive a message longer than the documented length and to gracefully ignore those extra fields.

**Table 1. Quote Cancelled Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x53` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. MatchingUnit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. SequenceNumber will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| QuoteUpdateID | 18 | 16 | Text | Echoed back from the most recent `Quote Update` or `Complex Quote Update` request for this quote. |
| OrderID | 34 | 8 | Binary | Order ID assigned by the matching engine |
| Symbol | 42 | 6 | Alphanumeric | Cboe native identifier |
| Side | 48 | 1 | Alphanumeric | `1` = Buy `2` = Sell |
| CancelReason | 49 | 1 | Text | Reason for the quote cancellation. See Order Reason Codes for a list of possible reasons. |
| CancelSubreason | 50 | 1 | Text | Additional detail for the quote cancellation. See Order and Quote Subreason Codes for a list of possible reasons. |

**Table 2. Quote Cancelled Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `31 00` | 49 bytes |
| MessageType | `53` | `Quote Cancelled` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| QuoteUpdateID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| Symbol | `30 30 36 69 70 41` | 006ipA |
| Side | `32` | `2` = Sell |
| CancelReason | `55` | `U` = User |
| CancelSubreason | `42` | `B` = Purge/mass cancel symbol level by user |

#### Cross Order Cancelled Message Fields (C1 and EDGX Only)

A `New Order Cross` message has been cancelled. Individual order allocations from the original `New Order Cross` and `New Order Cross Multileg` message will be echoed back in the repeating groups.

In each repeating group, the ClOrdID and OrderId are always returned. Beyond that, the bits specified in the optional return bitfields parameter group control which fields are returned. Any fields that appear in the repeating groups will not appear in the optional fields that come after the repeating groups.

Permitted return optional fields are described in Cross Order Cancelled (C1 and EDGX Only).

**Table 1. Cross Order Cancelled Message Fields (C1 and EDGX Only)**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x46` |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per matching unit. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| CrossID | 18 | 20 | Text | The cross order which was cancelled. |
| CancelReason | 38 | 1 | Text | Reason for the order cancellation. See Order Reason Codes for a list of possible reasons. |
| ReservedInternal | 39 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 40 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 41 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| GroupCnt |  | 2 | Binary | Number of order allocations represented by repeating groups included in this message. |
| Repeating Groupsof… |  |  |  |  |
| ClOrdID |  | 20 | Text | Copied from original cross order. |
| OrderID |  | 8 | Binary | The order id of the cross order that was cancelled. |
| Side (Optional) |  | 1 | Alphanumeric | See List of Optional Fields. |
| AllocQty (Optional) |  | 4 | Binary | See List of Optional Fields. |
| Capacity (Optional) |  | 1 | Alpha | See List of Optional Fields. |
| OpenClose (Optional) |  | 1 | Alphanumeric | See List of Optional Fields. |
| GiveUpFirmID (Optional) |  | 4 | Alpha | See List of Optional Fields. |
| Account (Optional) |  | 16 | Text | See List of Optional Fields. |
| CMTANumber (Optional) |  | 4 | Binary | See List of Optional Fields. |
| ClearingAccount (Optional) |  | 4 | Text | See List of Optional Fields. |
| Optional fields. . . |  |  |  | Optional fields as set in the bitmap. Note, optional fields that occur in the repeating groups appear above, repeating per group, not within this block. |

**Table 2. Cross Order Cancelled Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `8A 00` | 138 bytes |
| MessageType | `46` | `Cross Order Cancelled` |
| MatchingUnit | `02` | Matching Unit 2 |
| SequenceNumber | `01 00 00 00` | Sequence number 1 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `4E 5A 31 56 37 42 4A 5F 41 63 63 65 70 74 42 75 79 00 00 00` | NZ1V7BJ_AcceptBuy |
| CancelReason | `55` | `U` = User Requested |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `02` | Two bitfields to follow |
| ReturnBitfield1 | `00` | No fields from byte 1 |
| ReturnBitfield2 | `41` | Symbol, Capacity |
| GroupCnt | `03 00` | Two repeating groups to follow |
| ClOrdID | `4E 5A 31 56 37 47 4E 5F 61 67 65 6E 63 79 00 00 00 00 00 00` | NZ1V7GN_agency |
| OrderID | `02 C0 91 A2 94 AB 78 04` | 2G4GYK000002 (base 36) |
| Capacity | `43` | `C` = Customer |
| ClOrdID | `4E 5A 31 56 37 4B 46 5F 63 6F 6E 74 72 61 31 00 00 00 00 00` | NZ1V7KF_contra1 |
| OrderID | `03 C0 91 A2 94 AB 78 04` | 2G4GYK000003 (base 36) |
| Capacity | `46` | `F` = Firm |
| ClOrderID | `4E 5A 31 56 37 4E 48 5F 63 6F 6E 74 72 61 32 00 00 00 00 00` | NZ1V7NH_contra2 |
| OrderID | `04 C0 91 A2 94 AB 78 04` | 2G4GYK000004 (base 36) |
| Capacity | `46` | `F` = Firm |
| Symbol | `30 30 51 30 6B 41 00 00` | 00Q0kA |

#### Cancel Rejected Message Fields

A `Cancel Rejected` message is sent in response to a `Cancel Order` message to indicate that the cancellation cannot occur. `Cancel Rejected` messages are unsequenced.

Permitted return bitfields are described in Cancel Rejected.

**Table 1. Cancel Rejected Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x2B` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | The order whose cancel was rejected. |
| CancelRejectReason | 38 | 1 | Text | Reason for the order cancellation. See Order Reason Codes for a list of possible reasons. |
| Text | 39 | 60 | Text | Human readable text with more information about the reject reason. |
| ReservedInternal | 99 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 100 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 101 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Cancel Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `63 00` | 99 bytes |
| MessageType | `2B` | `Cancel Rejected` |
| MatchingUnit | `00` | Unsequenced Message, `unit` = 0 |
| SequenceNumber | `00 00 00 00` | Unsequenced Message, `sequence` = 0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| CancelRejectReason | `4A` | J |
| Text | `54 4F 4F 20 4C 41 54 45 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | TOO LATE |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn | `00` | No optional fields |
| Bitfields |  |  |

#### Order Execution Message Fields

An `Order Execution` message is sent for each fill on an order.

Rather than returning a monetary value indicating the rebate or charge for an execution, the FeeCode is an indication of a fee classification corresponding to an item on the venue's fee schedule.

For executions involving complex orders (C1, C2, and EDGX only), an `Order Execution` message will be generated for the complex order, with MultilegReportingType = 3, followed by `Order Execution` messages for each leg, with MultilegReportingType = 2. You must opt-in to receiving this optional field on `Order Execution` messages at login in order to receive this field. If both sides of a complex/spread trade are on the same order entry session, Cboe does not guarantee that the leg executions will not be interleaved between sides.

The symbology used on executions for complex orders, including the legs, will always be Cboe symbology.

Permitted return bitfields are described in Order Execution.

**Table 1. Order Execution Message Fields**

| Field | Offset | Length | Data Type | Description |  |  |  |  |  |  |  |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |  |  |  |  |  |  |  |  |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |  |  |  |  |  |  |  |  |
| MessageType | 4 | 1 | Binary | `0x2C` |  |  |  |  |  |  |  |  |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. |  |  |  |  |  |  |  |  |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per matching unit. |  |  |  |  |  |  |  |  |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |  |  |  |  |  |  |  |  |
| ClOrdID | 18 | 20 | Text | Order receiving the execution. |  |  |  |  |  |  |  |  |
| ExecID | 38 | 8 | Binary | Corresponds to ExecID (17) in Cboe FIX. Execution ID. Unique across all matching units on a given day. Note: ExecIDs will be represented on ODROP and FIXDROP ports as nine character, base 36 ASCII. Leading zeros should be added if the converted base 36 value is shorter than nine characters. Table 2. Example Conversion Decimal Base 36 28294005440239 A1234B567 76335905726621 R248BC23H 728557228187 09AP05V2Z | Decimal | Base 36 | 28294005440239 | A1234B567 | 76335905726621 | R248BC23H | 728557228187 | 09AP05V2Z |
| Decimal | Base 36 |  |  |  |  |  |  |  |  |  |  |  |
| 28294005440239 | A1234B567 |  |  |  |  |  |  |  |  |  |  |  |
| 76335905726621 | R248BC23H |  |  |  |  |  |  |  |  |  |  |  |
| 728557228187 | 09AP05V2Z |  |  |  |  |  |  |  |  |  |  |  |
| LastShares | 46 | 4 | Binary | Corresponds to LastShares (32) in Cboe FIX. Executed share quantity. |  |  |  |  |  |  |  |  |
| LastPx | 50 | 8 | Binary Price | Corresponds to LastPx (31) in Cboe FIX. Price of this fill. Note the use of Binary Price type to represent positive and negative prices, which can occur with complex instruments. |  |  |  |  |  |  |  |  |
| LeavesQty | 58 | 4 | Binary | Corresponds to LeavesQty (151) in Cboe FIX. Quantity still open for further execution. If zero, the order is complete. |  |  |  |  |  |  |  |  |
| BaseLiquidity Indicator | 62 | 1 | Alphanumeric | Indicates whether the trade added or removed liquidity. `A` = Added Liquidity `R` = Removed Liquidity `X` = Routed to Another Market `C` = Auction/Uncrossing |  |  |  |  |  |  |  |  |
| SubLiquidityIndicator | 63 | 1 | Alphanumeric | Cboe may add additional values without notice. Members must gracefully ignore unknown values. ASCII NUL ( `0x00` ) = No additional information `S` = Execution from order that set the NBBO `B` = Step Up Mechanism (C1 and EDGX Only) `U` = Market Turner (C1 Only) `b` = AIM (C1 and EDGX Only) `Q` = QCC (C1 and EDGX Only) `s` = SAM (C1 and EDGX Only) `P` = PCC (C1 Only) `F` = RFC (C1 Only) |  |  |  |  |  |  |  |  |
| ContraBroker | 64 | 4 | Alphanumeric | Corresponds to ContraBroker (375) in Cboe FIX. Simple Instrument Fills Internally matched simple executions will identify the clearing number of the contra on the execution. This includes leg fill reports ( MultilegReportingType =2) that are sent as a result of a complex trade. Executions matched on the C1 trading floor will contain a value of ‘FBKR’ for ContraBroker for the first reporter of a Broker to Broker floor trade otherwise, this will identify the OCC clearing number of the contra (C1 only) . Complex Package Fills ContraBroker will be sent and populated on electronic, complex package fills ( MultilegReportingType =3) when the contra side is also a complex order. When legging in to the simple books ContraBroker will be blank. ContraBroker will be blank on complex package fills ( MultilegReportingType =3) executed on the Cboe Options trading floor (C1 only) . Routed Fills All externally matched (routed, BaseLiquidityIndicator = X) executions will identify the away exchange with the following possible values. `AMEX` = Routed to NYSE American `ARCA` = Routed to NYSE Arca `BATS` = Routed to Cboe BZX Options `BOX` = Routed to BOX `CBOE` = Routed to Cboe Options `CTWO` = Routed to C2 Options `EDGX` = Routed to Cboe EDGX Options `EMLD` = Routed to MIAX Emerald `GMNI` = Routed to Nasdaq GEMX `IEX` = Routed to IEX Options `ISE` = Routed to Nasdaq ISE `MEMX` = Routed to MEMX `MERC` = Routed to Nasdaq MRX `MIAX` = Routed to MIAX Options Exchange `MXTO` = Routed to MX2 Options `NOMX` = Routed to Nasdaq `NOBX` = Routed to Nasdaq Texas `PERL` = Routed to MIAX PEARL `PHLX` = Routed to Nasdaq PHLX `SPHR` = Routed to MIAX Sapphire |  |  |  |  |  |  |  |  |
| ReservedInternal | 68 | 1 | Binary | Reserved for Cboe internal use. |  |  |  |  |  |  |  |  |
| NumberOfReturn Bitfields | 69 | 1 | Binary | Number of bitfields to follow. |  |  |  |  |  |  |  |  |
| ReturnBitfield¹ | 70 | 1 | Binary | Bitfield identifying fields to return. |  |  |  |  |  |  |  |  |
| … |  |  |  |  |  |  |  |  |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |  |  |  |  |  |  |  |  |
| Optional fields… |  |  |  |  |  |  |  |  |  |  |  |  |

**Table 3. Order Execution Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `53 00` | 83 bytes |
| MessageType | `2C` | `Order Execution` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| ExecID | `01 F0 B7 D9 71 21 00 00` | D19800001 (base 36) |
| LastShares | `64 00 00 00` | 100 contracts |
| LastPx | `08 E2 01 00 00 00 00 00` | 12.34 |
| LeavesQty | `14 00 00 00` | 20 contracts |
| BaseLiquidityIndicator | `41` | `A` = Added |
| SubLiquidityIndicator | `00` | (unset) |
| ContraBroker | `42 41 54 53` | BATS |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `03` | Three bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `00` | No bitfields from byte 2 |
| ReturnBitfield3 | `46` | ClearingFirm, ClearingAccount, OrderQty |
| ClearingFirm | `54 45 53 54` | TEST |
| ClearingAccount | `31 32 33 43` | 1234 |
| OrderQty | `78 00 00 00` | 120 contracts |

#### Quote Execution Message Fields

A `Quote Execution` message is used to indicate an execution has occurred on a resting non-complex quote (i.e., quote introduced to the exchange using the `Quote Update` message).

This message may be expanded in length in the future with new fields added to the end. To maintain forward compatibility, be prepared to receive a message longer than the documented length and to gracefully ignore those extra fields.

**Table 1. Quote Execution Message Fields**

| Field | Offset | Length | Data Type | Description |  |  |  |  |  |  |  |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |  |  |  |  |  |  |  |  |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |  |  |  |  |  |  |  |  |
| MessageType | 4 | 1 | Binary | `0x54` |  |  |  |  |  |  |  |  |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. |  |  |  |  |  |  |  |  |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per matching unit. |  |  |  |  |  |  |  |  |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |  |  |  |  |  |  |  |  |
| QuoteUpdateID | 18 | 16 | Text | Echoed back from the most recent `Quote Update` request for this quote. |  |  |  |  |  |  |  |  |
| OrderID | 34 | 8 | Binary | Order ID assigned by the matching engine |  |  |  |  |  |  |  |  |
| ExecID | 42 | 8 | Binary | Corresponds to ExecID (17) in Cboe FIX. Execution ID. Unique across all matching units on a given day. Note: ExecIDs will be represented on FIXDROP ports as nine character, base 36 ASCII. Leading zeros should be added if the converted base 36 value is shorter than nine characters. Table 2. Example Conversion Decimal Base 36 28294005440239 A1234B567 76335905726621 R248BC23H 728557228187 09AP05V2Z | Decimal | Base 36 | 28294005440239 | A1234B567 | 76335905726621 | R248BC23H | 728557228187 | 09AP05V2Z |
| Decimal | Base 36 |  |  |  |  |  |  |  |  |  |  |  |
| 28294005440239 | A1234B567 |  |  |  |  |  |  |  |  |  |  |  |
| 76335905726621 | R248BC23H |  |  |  |  |  |  |  |  |  |  |  |
| 728557228187 | 09AP05V2Z |  |  |  |  |  |  |  |  |  |  |  |
| Symbol | 50 | 6 | Alphanumeric | Cboe native identifier |  |  |  |  |  |  |  |  |
| ClearingFirm | 56 | 4 | Alpha | Echoed back from the original quote |  |  |  |  |  |  |  |  |
| LastShares | 60 | 4 | Binary | Coresponds to LastShares (32) in Cboe FIX. Number of contracts being traded. |  |  |  |  |  |  |  |  |
| LastPx | 64 | 8 | Binary Price | Corresponds to LastPx (31) in Cboe FIX. Price of this fill. |  |  |  |  |  |  |  |  |
| LeavesQty | 72 | 4 | Binary | Corresponds to LeavesQty (151) in Cboe FIX. Quantity still open for further execution. If zero, the order is complete. |  |  |  |  |  |  |  |  |
| ContraTrader | 76 | 4 | Alphanumeric | Displays the EFID (ClearingFirm) of the contra side firm. |  |  |  |  |  |  |  |  |
| ContraCapacity | 80 | 1 | Alphanumeric | Capacity of the contra for this execution. |  |  |  |  |  |  |  |  |
| Side | 81 | 1 | Alphanumeric | `1` = Buy `2` = Sell |  |  |  |  |  |  |  |  |
| BaseLiquidityIndicator | 82 | 1 | Alpha | Indicates whether the trade added or removed liquidity. `A` = Added Liquidity `R` = Removed Liquidity `C` = Auction/Uncrossing |  |  |  |  |  |  |  |  |
| SubLiquidityIndicator | 83 | 1 | Alpha | Cboe may add additional values without notice. Members must gracefully ignore unknown values. ASCII NUL ( `0x00` ) = No additional information `S` = Execution from order that set the NBBO `B` = Step Up Mechanism (C1 and EDGX Only) `U` = Market Turner (C1 Only) `b` = AIM (C1 and EDGX Only) `s` = SAM (C1 and EDGX Only) |  |  |  |  |  |  |  |  |
| FeeCode | 84 | 2 | Alphanumeric | Corresponds to FeeCode (9882) in Cboe FIX. |  |  |  |  |  |  |  |  |
| MarketingFeeCode | 86 | 2 | Alphanumeric | Corresponds to MarketingFeeCode (5937) in Cboe FIX. EDGX Only. Will be blank on other Exchanges. |  |  |  |  |  |  |  |  |

**Table 3. Quote Execution Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `56 00` | 86 bytes |
| MessageType | `54` | `Quote Execution` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| QuoteUpdateID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| ExecID | `01 F0 B7 D9 71 21 00 00` | D19800001 (base 36) |
| Symbol | `30 30 36 69 70 41` | 006ipA |
| ClearingFirm | `41 42 43 44` | ABCD |
| LastShares | `64 00 00 00` | 100 contracts |
| LastPx | `70 17 00 00 00 00 00 00` | 0.60 |
| LeavesQty | `00 00 00 00` | 0 (order done) |
| ContraTrader | `41 42 43 44` | ABCD |
| ContraCapacity | `43` | `C` = Customer |
| Side | `31` | `1` = Buy |
| BaseLiquidity Indicator | `41` | `A` = Added |
| SubLiquidityIndicator | `4E` | `N` = Normal |
| FeeCode | `41 42` | AB |
| MarketingFeeCode | `58 59` | XY |

#### Complex Quote Execution Message Fields (C1 Only)

A `Complex Quote Execution` message is used to indicate an execution has occurred on a resting complex quote (i.e., quote introduced to the exchange using the `Complex Quote Update` message).

The execution of a complex quote will produce multiple `Complex Quote Execution` messages. The first will be the package-level fill having MultilegReportingType = 3 (entire multi-leg instrument package) and the complex symbol in the Symbol field. This will be followed by the leg execution messages having the leg symbol in the Symbol field and MultiLegReportingType = 2 (individual leg of mutil-leg instrument) or (for the last fill of the execution) MultiLegReportingType = 4 (last individual leg of a multi-leg instrument).

This message may be expanded in length in the future with new fields added to the end. To maintain forward compatibility, be prepared to receive a message longer than the documented length and to gracefully ignore those extra fields.

**Table 1. Complex Quote Execution Message Fields**

| Field | Offset | Length | Data Type | Description |  |  |  |  |  |  |  |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |  |  |  |  |  |  |  |  |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |  |  |  |  |  |  |  |  |
| MessageType | 4 | 1 | Binary | `0x87` |  |  |  |  |  |  |  |  |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. |  |  |  |  |  |  |  |  |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per matching unit. |  |  |  |  |  |  |  |  |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |  |  |  |  |  |  |  |  |
| QuoteUpdateID | 18 | 16 | Text | Echoed back from the most recent `Complex Quote Update` request for this quote. |  |  |  |  |  |  |  |  |
| OrderID | 34 | 8 | Binary | Order ID assigned by the matching engine |  |  |  |  |  |  |  |  |
| ExecID | 42 | 8 | Binary | Corresponds to ExecID (17) in Cboe FIX. Execution ID. Unique across all matching units on a given day. Note: ExecIDs will be represented on FIXDROP ports as nine character, base 36 ASCII. Leading zeros should be added if the converted base 36 value is shorter than nine characters. Table 2. Example Conversion Decimal Base 36 28294005440239 A1234B567 76335905726621 R248BC23H 728557228187 09AP05V2Z | Decimal | Base 36 | 28294005440239 | A1234B567 | 76335905726621 | R248BC23H | 728557228187 | 09AP05V2Z |
| Decimal | Base 36 |  |  |  |  |  |  |  |  |  |  |  |
| 28294005440239 | A1234B567 |  |  |  |  |  |  |  |  |  |  |  |
| 76335905726621 | R248BC23H |  |  |  |  |  |  |  |  |  |  |  |
| 728557228187 | 09AP05V2Z |  |  |  |  |  |  |  |  |  |  |  |
| Symbol | 50 | 6 | Alphanumeric | Cboe native identifier |  |  |  |  |  |  |  |  |
| ClearingFirm | 56 | 4 | Alpha | Echoed back from the original quote |  |  |  |  |  |  |  |  |
| LastShares | 60 | 4 | Binary | Corresponds to LastShares (32) in Cboe FIX. Number of contracts being traded. |  |  |  |  |  |  |  |  |
| LastPx | 64 | 8 | Binary Price | Corresponds to LastPx (31) in Cboe FIX. Price of this fill. |  |  |  |  |  |  |  |  |
| LeavesQty | 72 | 4 | Binary | Corresponds to LeavesQty (151) in Cboe FIX. Quantity still open for further execution. If zero, the order is complete. |  |  |  |  |  |  |  |  |
| ContraTrader | 76 | 4 | Alphanumeric | Displays the EFID (ClearingFirm) of the contra side firm. |  |  |  |  |  |  |  |  |
| ContraCapacity | 80 | 1 | Alphanumeric | Capacity of the contra for this execution. |  |  |  |  |  |  |  |  |
| Side | 81 | 1 | Alphanumeric | `1` = Buy `2` = Sell |  |  |  |  |  |  |  |  |
| BaseLiquidityIndicator | 82 | 1 | Alpha | Indicates whether the trade added or removed liquidity. `A` = Added Liquidity `R` = Removed Liquidity `C` = Auction/Uncrossing |  |  |  |  |  |  |  |  |
| SubLiquidityIndicator | 83 | 1 | Alpha | Cboe may add additional values without notice. Members must gracefully ignore unknown values. ASCII NUL ( `0x00` ) = No additional information `b` = AIM `Q` = QCC `s` = SAM |  |  |  |  |  |  |  |  |
| FeeCode | 84 | 2 | Alphanumeric | Corresponds to FeeCode (9882) in Cboe FIX. |  |  |  |  |  |  |  |  |
| MarketingFeeCode | 86 | 2 | Alphanumeric | Corresponds to MarketingFeeCode (5937) in Cboe FIX. EDGX Only. Will be blank on other Exchanges. |  |  |  |  |  |  |  |  |
| MultilegReportingType | 88 | 1 | Alphanumeric | Corresponds to MultilegReportingType (442) in Cboe FIX. Indicates the type of `Complex Order Execution` message `2` = Individual leg of mutil-leg instrument `3` = Entire multi-leg instrument package. `4` = Last individual leg of a multi-leg instrument. |  |  |  |  |  |  |  |  |
| SecondaryExecID | 89 | 8 | Binary | If SecondaryExecID is the same as ExecID , the fill represents a complex execution for which the associated single leg fills will follow. The value of SecondaryExecID for single leg fills associated with a complex execution will contain the ExecID value associated with the complex execution `Complex Quote Execution Message` . |  |  |  |  |  |  |  |  |

**Table 3. Complex Quote Execution Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `61 00` | 97 bytes |
| MessageType | `87` | `Complex Quote Execution` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| QuoteUpdateID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| ExecID | `01 F0 B7 D9 71 21 00 00` | D19800001 (base 36) |
| Symbol | `54 30 36 69 70 41` | T06ipA |
| ClearingFirm | `41 42 43 44` | ABCD |
| LastShares | `64 00 00 00` | 100 contracts |
| LastPx | `70 17 00 00 00 00 00 00` | 0.60 |
| LeavesQty | `00 00 00 00` | 0 (order done) |
| ContraTrader | `41 42 43 44` | ABCD |
| ContraCapacity | `43` | `C`=Customer |
| Side | `31` | `1`=Buy |
| BaseLiquidity Indicator | `41` | `A`=Added |
| SubLiquidityIndicator | `4E` | `N`=Normal |
| FeeCode | `41 42` | AB |
| MarketingFeeCode | `0000` | (blank) |
| MultilegReportingType | `32` | `3`=Entire multi-leg instrument package |
| SecondaryExecID | `01 F0 B7 D9 71 21 00 00` | Same as ExecID |

#### Trade Cancel or Correct Message Fields

Used to relay a trade which has been cancelled (busted) or corrected (price or size change only). The CorrectedPrice and optional CorrectedSize fields will be set to 0 for cancelled trades and to the new trade price and/or size for corrected trades. `Trade Cancel or Correct` messages can be sent for same day as well as previous day trades.

Trade cancels or corrections to complex instruments will result in individual `Trade Cancel or Correct` messages being sent for each leg. No cancels or corrections will be sent for complex instruments.

Permitted return bitfields are described in Trade Cancel or Correct.

**Table 1. Trade Cancel or Correct Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x2D` |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per matching unit. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | ClOrdID of the order whose fill is being cancelled or corrected. |
| OrderID | 38 | 8 | Binary | Corresponds to OrderID (37) in Cboe FIX. Order whose fill is being cancelled or corrected. |
| ExecRefID | 46 | 8 | Binary | Corresponds to ExecRefID (19) in Cboe FIX. Refers to the ExecID of the fill being cancelled or corrected. |
| Side | 54 | 1 | Alphanumeric | Side of the order. |
| BaseLiquidity Indicator | 55 | 1 | Alphanumeric | Indicates whether the trade added or removed liquidity. `A` = Added Liquidity `R` = Removed Liquidity `X` = Routed to Another Market `C` = Auction/Uncrossing |
| ClearingFirm | 56 | 4 | Alpha | Echoed back from the original order. |
| ClearingAccount | 60 | 4 | Text | Echoed back from the original order. |
| LastShares | 64 | 4 | Binary | Number of shares of the trade being cancelled. |
| LastPx | 68 | 8 | Binary Price | Price of the trade being cancelled. Note the use of Binary Price type to represent positive and negative prices, which can occur with complex instruments. |
| CorrectedPrice | 76 | 8 | Binary Price | For trade corrections, this is the new trade price. For trade breaks, this is set to 0. |
| OrigTime | 84 | 8 | DateTime | Corresponds to OrigTime (42). The date and time of the original trade, in GMT. The UTC date and time of the original trade are available in nanoseconds. |
| ReservedInternal | 92 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturnBitfields | 93 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 94 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Trade Cancel or Correct Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `76 00` | 118 bytes |
| MessageType | `2D` | `Trade Cancel or Correct` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| ExecRefID | `01 F0 B7 D9 71 21 00 00` | D19800001 (base 36) |
| Side | `31` | Buy |
| BaseLiquidity Indicator | `41` | `A`=Added |
| ClearingFirm | `54 45 53 54` | TEST |
| ClearingAccount | `00 00 00 00` | (empty) |
| LastShares | `64 00 00 00` | 100 contracts |
| LastPx | `70 17 00 00 00 00 00 00` | 0.60 |
| CorrectedPrice | `00 00 00 00 00 00 00 00` | 0 (cancelled) |
| OrigTime | `E0 BA 75 95 15 4C EB 11` | 1,291,209,373,757,324,000 |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `04` | Four bitfields to follow |
| ReturnBitfield1 | `00` | No fields from byte 1 |
| ReturnBitfield2 | `01` | Symbol |
| ReturnBitfield3 | `00` | No fields from byte 3 |
| ReturnBitfield4 | `17` | MaturityDate, StrikePrice, PutOrCall, OpenClose |
| Symbol | `30 30 51 30 6B 41 00 00` | 00Q0kA |
| MaturityDate | `EF DB 32 01` | 2011-03-19 |
| StrikePrice | `98 AB 02 00 00 00 00 00` | 17.50 |
| PutOrCall | `31` | `1`=Call |
| OpenClose | `4F` | `O`=Open |

#### Purge Rejected Message Fields

A `Purge Rejected` message is sent in response to a `Purge Orders` message to indicate that the mass cancellation cannot occur. `Purge Rejected` messages are unsequenced.

Permitted return bitfields are described in Purge Rejected.

**Table 1. Purge Rejected Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x48` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| PurgeRejectReason | 18 | 1 | Text | Reason for a purge rejection. See Order Reason Codes for a list of possible reasons. |
| Text | 19 | 60 | Text | Human readable text with more information about the reject reason. |
| ReservedInternal | 79 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturnBitfields | 80 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield1 | 81 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldn |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Purge Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `72 00` | 114 bytes |
| MessageType | `48` | `Purge Rejected` |
| MatchingUnit | `00` | Unsequenced Message, `unit` = 0 |
| SequenceNumber | `00 00 00 00` | Unsequenced Message, `sequence` = 0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| PurgeRejectReason | `41` | A |
| Text | `41 44 4D 49 4E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ADMIN |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `0F` | 15 bitfields to follow |
| ReturnBitfield1 | `00` | No fields from byte 1 |
| ReturnBitfield2 | `00` | No fields from byte 2 |
| ReturnBitfield3 | `00` | No fields from byte 3 |
| ReturnBitfield4 | `00` | No fields from byte 4 |
| ReturnBitfield5 | `00` | No fields from byte 5 |
| ReturnBitfield6 | `00` | No fields from byte 6 |
| ReturnBitfield7 | `00` | No fields from byte 7 |
| ReturnBitfield8 | `00` | No fields from byte 8 |
| ReturnBitfield9 | `00` | No fields from byte 9 |
| ReturnBitfield10 | `00` | No fields from byte 10 |
| ReturnBitfield11 | `00` | No fields from byte 11 |
| ReturnBitfield12 | `00` | No fields from byte 12 |
| ReturnBitfield13 | `00` | No fields from byte 13 |
| ReturnBitfield14 | `00` | No fields from byte 14 |
| ReturnBitfield15 | `08` | MassCancelID |
| MassCancelID | `54 45 53 54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | TEST |

#### Reset Risk Acknowledgment Message Fields

Response to a `Reset Risk` message request.

**Table 1. Reset Risk Acknowledgment Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x57` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| RiskStatusID | 10 | 16 | Text | Unique identifier for this Reset Risk request. Response message will have this corresponding identifier. |
| RiskResetResult | 26 | 1 | Text | <space> = Ignored; exceeds 1 reset per 100 milliseconds `C` = Rejected; exceeds Custom Group ID limit `D` = Rejected; automatic risk resets are disabled `E` = Rejected; empty ResetRisk field `F` = Rejected; exceeds firm reset limit `I` = Rejected; incorrect data center `M` = Rejected; invalid matching unit `S` = Rejected; exceeds risk root reset limit `U` = Rejected; invalid RiskRoot `Y` = Success `c` = Rejected; invalid EFID/ ClearingFirm `y` = Rejected; in replay Additional reject values may be added in the future with no notice. |

**Table 2. Risk Reset Acknowledgment Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `19 00` | 25 bytes |
| MessageType | `57` | `Risk Reset Acknowledgement` |
| MatchingUnit | `00` | Unsequenced Message, `unit` = 0 |
| SequenceNumber | `00 00 00 00` | Unsequenced Message, `sequence` = 0 |
| RiskStatusID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| RiskResetResult | `00` | `Y` = Success |

#### Mass Cancel Acknowledgment Message Fields

A `Mass Cancel Acknowledgment` message is an unsequenced message sent when a `Cancel Order` or `Purge Orders` message requesting a mass cancellation has completed canceling all individual orders.

Multiple `Mass Cancel Acknowledgment` messages will be sent in response to Mass Cancel requests for multi-unit orders (MassCancelInst, 2nd character = `I`). An acknowledgment message will be sent for each matching unit followed by a final acknowledgment containing the total number of orders cancelled due to the purge request across all matching units. This final acknowledgment will have a SourceMatchingUnit value of 0.

**Table 1. Mass Cancel Acknowledgment Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x36` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application. Message. Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| MassCancelID | 18 | 20 | Text | Copied from the MassCancelID passed on the original `Cancel Order` or `Purge Orders` messages. This field corresponds to MassCancelID (7695) in Cboe FIX. |
| CancelledOrder Count | 38 | 4 | Binary | Number of orders cancelled. This field corresponds to CancelledOrderCount (7696) in Cboe FIX. |
| ReservedInternal | 42 | 1 | Binary | Reserved for Cboe internal use. |
| SourceMatchingUnit | 43 | 1 | Binary | Matching unit number on which orders were cancelled by `Purge Orders` . The default value of this field is '0' unless MassCancelInst , 2nd character = ‘I'. This field corresponds to MatchingUnit (25017) in Cboe FIX. |

**Table 2. Mass Cancel Acknowledgment Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA` | Start of message bytes. |
| MessageLength | `29 00` | 41 bytes |
| MessageType | `36` | `Mass Cancel Acknowledgment` |
| MatchingUnit | `00` | Unsequenced Message, unit = 0 |
| SequenceNumber | `00 00 00 00` | Unsequenced Message, sequence = 0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| MassCancelID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| CancelledOrderCount | `63 00 00 00` | 99 orders were cancelled |
| ReservedInternal | `00` | Ignore |
| SourceMatchingUnit | `00` |  |

#### Purge Notification Message Fields

A `Purge Notification` message is an unsequenced message sent when the Acknowledgement Style of a Purge Request is `A`. One `Pure Notification` message is sent for each matching unit that cancelled orders for that order entry port.

Permitted return bitfields are described in Purge Notification.

**Table 1. Purge Notification Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x63` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application. Message. Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time that the mass cancel was completed in the matching engine. |
| MassCancelID | 18 | 20 | Text | Copied from the MassCancelID passed on the original `Cancel Order` or `Purge Orders`. This field corresponds to MassCancelID (7695) in Cboe FIX. |
| CancelledOrder Count | 38 | 4 | Binary | Number of orders cancelled from the specified matching unit that originated on this port. This field corresponds to CancelledOrderCount (7696) in Cboe FIX. |
| SourceMatchingUnit | 42 | 1 | Binary | The matching unit on which the orders were cancelled. This field corresponds to MatchingUnit (25017) in Cboe FIX. |
| ClearingFirm | 43 | 4 | Alpha | EFID used to filter the purge. If EFID was not used, this will be blank. This field corresponds to OnBehalfOfCompId (115) in Cboe FIX. |
| RiskRoot | 47 | 6 | Text | Copied from original Purge Orders, if present. This field corresponds to Symbol (55) in Cboe FIX. |
| MassCancelLockOut | 53 | 1 | Alpha | Reported back with the following possible values. `Y` = Lockout `N` = No Lockout This field corresponds to Lockout (7697) in Cboe FIX. |
| ReservedInternal | 54 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturnBitfields | 55 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield | 56 | 1 | Binary | Bitfield identifying fields to return. |
| Optional fields. . . |  |  |  |  |

**Table 2. Purge Notification Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA` | Start of message bytes. |
| MessageLength | `38 00` | 56 bytes |
| MessageType | `63` | `Purge Notification` |
| MatchingUnit | `00` | Unsequenced Message, unit = 0 |
| SequenceNumber | `00 00 00 00` | Unsequenced Message, sequence = 0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| MassCancelID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| CancelledOrderCount | `63 00 00 00` | 99 orders were cancelled |
| SourceMatchingUnit | `03` | Matching Unit 3 |
| ClearingFirm | `54 45 53 54` | TEST |
| RiskRoot | `4D 53 46 54 00 00` | MSFT |
| MassCancelLockOut | `31` | `Y` = lockout |
| ReservedInternal | `00` | Ignore |
| NumberOfReturnBitfields | `0` | 0 |

#### Complex Instrument Accepted Message Fields (C1, C2, and EDGX Only)

The `Complex Instrument Accepted` message is used to indicate acceptance of a complex strategy. The leg order sent back may differ from the originating request; RevisedLegs indicates if the leg order has been altered from the original request.

Permitted return bitfields are described in Complex Instrument Accepted (C1, C2 and EDGX Only).

**Table 1. Complex Instrument Accepted Message Fields (C1, C2, and EDGX Only)**

| Field | Offset | Length | Data Type | Description |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| MessageType | 4 | 1 | Binary | `0x4D` |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per matching unit. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| ClOrdID | 18 | 20 | Text | Echoed back from the original request. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| Symbol | 38 | 8 | Alphanumeric | The complex instrument id. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| RevisedLegs | 46 | 1 | Alphanumeric | Indicates if the legs on the created complex strategy have been reordered from the original request. If the legs were reordered, the order of the Open-Close fields on a `New Complex Order` must be the order returned by the exchange, not the order from the original request. `1` = Legs were not reordered `2` = Legs were reordered |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| NoOfSecurities | 47 | 4 | Binary | Corresponds to NoOfSecurities (8641) in Cboe FIX. Indicates the number of securities created by the member in the trading session. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| ReservedInternal | 51 | 1 | Binary | Reserved for Cboe internal use. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| NumberOfReturnBitfields | 52 | 1 | Binary | Number of bitfields to follow. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| ReturnBitfield¹ | 53 | 1 | Binary | Bitfield identifying fields to follow. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| … |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| NoLegs |  | 1 | Binary | Echoed back from the original request. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| Repeating Group ComplexLeg must occur the number of times specified in NoLegs . Each field occurs in each group, in order as shown below. Optional fields occur only if corresponding bits in bitfields are set. Table 2. Complex Instrument Accepted Message Fields (C1, C2, and EDGX Only) LegSymbol 8 Alphanumeric Corresponds to LegSymbol (600) in Cboe FIX. Entire Cboe format symbol or OSI Root. Must send LegCFICode , LegMaturityDate , and LegStrikePrice if using OSI format. LegCFICode 6 Alphanumeric Corresponds to LegCFICode (608) in Cboe FIX. CFI Code for leg. Required if LegSymbol is in OSI format. `OP` = Options Put `OC` = Options Call `E` = Equity LegMaturityDate 4 Date Corresponds to LegMaturityDate (611) in Cboe FIX. Required if LegSymbol is in OSI format. LegStrikePrice 8 Binary Price Corresponds to LegStrikePrice (612) in Cboe FIX. Option strike price. System maximum is 99,999,999. Must be non-negative. Required if LegSymbol is in OSI format. LegRatioQty 4 Binary Corresponds to LegRatioQty (623) in Cboe FIX. Ratio of number of contracts in this leg per order quantity. Accepted values must be between 1 and 999,999. LegSide 1 Alphanumeric Corresponds to LegSide (624) in Cboe FIX. `1` = Buy `2` = Sell | LegSymbol | 8 | Alphanumeric | Corresponds to LegSymbol (600) in Cboe FIX. Entire Cboe format symbol or OSI Root. Must send LegCFICode , LegMaturityDate , and LegStrikePrice if using OSI format. | LegCFICode | 6 | Alphanumeric | Corresponds to LegCFICode (608) in Cboe FIX. CFI Code for leg. Required if LegSymbol is in OSI format. `OP` = Options Put `OC` = Options Call `E` = Equity | LegMaturityDate | 4 | Date | Corresponds to LegMaturityDate (611) in Cboe FIX. Required if LegSymbol is in OSI format. | LegStrikePrice | 8 | Binary Price | Corresponds to LegStrikePrice (612) in Cboe FIX. Option strike price. System maximum is 99,999,999. Must be non-negative. Required if LegSymbol is in OSI format. | LegRatioQty | 4 | Binary | Corresponds to LegRatioQty (623) in Cboe FIX. Ratio of number of contracts in this leg per order quantity. Accepted values must be between 1 and 999,999. | LegSide | 1 | Alphanumeric | Corresponds to LegSide (624) in Cboe FIX. `1` = Buy `2` = Sell |
| LegSymbol | 8 | Alphanumeric | Corresponds to LegSymbol (600) in Cboe FIX. Entire Cboe format symbol or OSI Root. Must send LegCFICode , LegMaturityDate , and LegStrikePrice if using OSI format. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| LegCFICode | 6 | Alphanumeric | Corresponds to LegCFICode (608) in Cboe FIX. CFI Code for leg. Required if LegSymbol is in OSI format. `OP` = Options Put `OC` = Options Call `E` = Equity |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| LegMaturityDate | 4 | Date | Corresponds to LegMaturityDate (611) in Cboe FIX. Required if LegSymbol is in OSI format. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| LegStrikePrice | 8 | Binary Price | Corresponds to LegStrikePrice (612) in Cboe FIX. Option strike price. System maximum is 99,999,999. Must be non-negative. Required if LegSymbol is in OSI format. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| LegRatioQty | 4 | Binary | Corresponds to LegRatioQty (623) in Cboe FIX. Ratio of number of contracts in this leg per order quantity. Accepted values must be between 1 and 999,999. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| LegSide | 1 | Alphanumeric | Corresponds to LegSide (624) in Cboe FIX. `1` = Buy `2` = Sell |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| Optional fields… |  |  |  | Optional fields as set in the bitmap. Note, optional fields that occur in the repeating groups appear above, repeating per group, not within this block. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |

**Table 3. Complex Instrument Accepted Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `7C 00` | 124 bytes |
| MessageType | `4D` | `Complex Instrument Accepted` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| Symbol | `5A 4E 4B 38 46 43 00 00` | ZNK8FC |
| RevisedLegs | `31` | Legs were not reordered |
| NoOfSecurities | `04 00 00 00` | Four complex strategies created by sender |
| ReservedInteral | `00` | Ignore |
| NumberOfReturnBitfields | `0D` | 13 bitfields to follow |
| ReturnBitfield1 | `00` | No fields from byte 1 |
| ReturnBitfield2 | `00` | No fields from byte 2 |
| ReturnBitfield3 | `00` | No fields from byte 3 |
| ReturnBitfield4 | `00` | No fields from byte 4 |
| ReturnBitfield5 | `00` | No fields from byte 5 |
| ReturnBitfield6 | `00` | No fields from byte 6 |
| ReturnBitfield7 | `00` | No fields from byte 7 |
| ReturnBitfield8 | `00` | No fields from byte 8 |
| ReturnBitfield9 | `00` | No fields from byte 9 |
| ReturnBitfield10 | `00` | No fields from byte 10 |
| ReturnBitfield11 | `00` | No fields from byte 11 |
| ReturnBitfield12 | `00` | No fields from byte 12 |
| ReturnBitfield13 | `06` | LegCFICode, LegMaturityDate, LegStrikePrice |
| NoLegs | `02` | Two legs |
| LegSymbol | `4D 53 46 54 00 00 00 00` | MSFT |
| LegCFICode | `4F 43 00 00 00 00` | `OC` = Option Call |
| LegMaturityDate | `EF DB 32 01` | 2011-03-19 |
| LegStrikePrice | `98 AB 02 00 00 00 00 00` | 17.50 |
| LegRatioQty | `02 00 00 00` | Ratio of 2 |
| LegSide | `31` | Buy |
| LegSymbol | `4D 53 46 54 00 00 00 00` | MSFT |
| LegCFICode | `4F 50 00 00 00 00` | `OP` = Option Put |
| LegMaturityDate | `F6 DB 32 01` | 2011-03-26 |
| LegStrikePrice | `30 E6 02 00 00 00 00 00` | 19.00 |
| LegRatioQty | `01 00 00 00` | Ratio of 1 |
| LegSide | `32` | Sell |

**Table 4. Minimal Complex Instrument Accepted Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `47 00` | 71 bytes |
| MessageType | `4D` | `Complex Instrument Accepted` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| Symbol | `5A 4E 4B 38 46 43 00 00` | ZNK8FC |
| RevisedLegs | `30` | Legs accepted as sent |
| NoOfSecurities | `04 00 00 00` | Four complex strategies created by sender |
| NumberOfReturnBitfields | `00` | No bitfields follow |
| NoLegs | `02` | Two legs |
| LegSymbol | `30 30 51 30 6B 41 00 00` | 00Q0kA |
| LegRatioQty | `02 00 00 00` | Ratio of 2 |
| LegSide | `31` | Buy |
| LegSymbol | `30 30 51 33 6B 43 00 00` | 00Q3kC |
| LegRatioQty | `01 00 00 00` | Ratio of 1 |
| LegSide | `32` | Sell |

#### Complex Instrument Rejected Message Fields (C1, C2, and EDGX Only)

The `Complex Instrument Rejected` message is used to indicate that a requested complex strategy has been rejected. `Complex Instrument Rejected` messages are unsequenced.

Permitted return bitfields are described in Complex Instrument Rejected (C1, C2, and EDGX Only ).

**Table 1. Complex Instrument Rejected Message Fields (C1, C2, and EDGX Only)**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x4E` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | Echoed back from the original request. |
| OrderRejectReason | 38 | 1 | Text | Reason for an order rejection. See Order Reason Codes for a list of possible reasons. |
| Text | 39 | 60 | Text | Human readable text with more information about the reject reason. |
| NoOfSecurities | 99 | 4 | Binary | Indicates the number of securities created by the member in this trading session. |
| ReservedInternal | 103 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 104 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 105 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Complex Instrument Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `67 00` | 103 bytes |
| MessageType | `4E` | `Complex Instrument Rejected` |
| MatchingUnit | `0` | Unsequenced message, unit = 0 |
| SequenceNumber | `00 00 00 00` | Unsequenced message, sequence = 0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderRejectReason | `44` | D |
| Text | `44 75 70 6C 69 63 61 74 65 20 43 6C 4F 72 64 49 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Duplicate ClOrdID |
| NoOfSecurities | `04 00 00 00` | Four complex strategies created by sender |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `00` | No bitfields follow |

#### Floor Trade Notification Message Fields (C1 Only)

TPHs having in-person Market Makers on the Cboe trading floor may optionally receive `Floor Trade Notification` messages. TPHs must request the Enable Floor Trade Notifications port attribute be enabled for one or more floor acronyms in order to receive these messages. TPHs are encourage to use `Floor Trade Confirmation` messages to respond to `Floor Trade Notification` messages if they agree with the terms of the trade. Alternatively, an `Add Floor Trade` message may be used to enter their version of the floor trade. If the floor trade notification is not known to the Market Maker (for example, if the TPH is misidentified as a contra party to the floor trade), the message can be disregarded; a response is not required. TPHs configured to be automatically endorsed to floor trades will not receive a `Floor Trade Notification` message; only an `Order Executed` message.

**Table 1. Floor Trade Notification Message Fields (C1 Only)**

| Field | Offset | Length | Data Type | Description |  |  |  |  |  |  |  |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |  |  |  |  |  |  |  |  |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |  |  |  |  |  |  |  |  |
| MessageType | 4 | 1 | Binary | `0x62` |  |  |  |  |  |  |  |  |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |  |  |  |  |  |  |  |  |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |  |  |  |  |  |  |  |  |
| ExecID | 10 | 8 | Binary | Corresponds to ExecID (17) in Cboe FIX. Execution ID. Unique across all matching units on a given day. Note: ExecIDs will be represented on ODROP and FIXDROP ports as nine character, base 36 ASCII. Leading zeros should be added if the converted base 36 value is shorter than nine characters. Table 2. Example Conversion Decimal Base 36 28294005440239 A1234B567 76335905726621 R248BC23H 728557228187 09AP05V2Z | Decimal | Base 36 | 28294005440239 | A1234B567 | 76335905726621 | R248BC23H | 728557228187 | 09AP05V2Z |
| Decimal | Base 36 |  |  |  |  |  |  |  |  |  |  |  |
| 28294005440239 | A1234B567 |  |  |  |  |  |  |  |  |  |  |  |
| 76335905726621 | R248BC23H |  |  |  |  |  |  |  |  |  |  |  |
| 728557228187 | 09AP05V2Z |  |  |  |  |  |  |  |  |  |  |  |
| Symbol | 18 | 8 | Alphanumeric | Corresponds to Symbol (55) in Cboe FIX. Entire Cboe format symbol or OSI symbol if using long format. |  |  |  |  |  |  |  |  |
| PutOrCall | 26 | 1 | Alphanumeric | Corresponds to PutOrCall (201) in Cboe FIX. `0` = Put `1` = Call NULL (0x00) filled if using Cboe format symbol. |  |  |  |  |  |  |  |  |
| StrikePrice | 27 | 8 | Binary Price | Corresponds to StrikePrice (202) in Cboe FIX. Strike Price for option, 0 - 999,999.99 NULL (0x00) filled if using Cboe format symbol. |  |  |  |  |  |  |  |  |
| MaturityDate | 35 | 4 | Date | Corresponds to MaturityMonth (200) and MaturityDay (205) in Cboe FIX. NULL (0x00) filled if using Cboe format symbol. |  |  |  |  |  |  |  |  |
| OrderQty | 39 | 4 | Binary | Corresponds to OrderQty (38) in Cboe FIX. System limit is 999,999 contracts. |  |  |  |  |  |  |  |  |
| Price | 43 | 8 | Binary Price | Corresponds to Price (44) in Cboe FIX. Execution price. |  |  |  |  |  |  |  |  |
| Side | 51 | 1 | Alphanumeric | Corresponds to Side (54) in Cboe FIX. `1` = Buy `2` = Sell |  |  |  |  |  |  |  |  |
| ContraTrader | 52 | 4 | Alpbanumeric | Displays the Contra Trader floor acronym. |  |  |  |  |  |  |  |  |
| FloorTraderAcronym | 56 | 3 | Alpha | Floor Acronym of participant submitting trade. |  |  |  |  |  |  |  |  |
| FloorTradeTime | 59 | 8 | DateTime | Trade time |  |  |  |  |  |  |  |  |
| TradeThroughAlertType | 67 | 1 | Alphanumeric | Corresponds to TradeThroughAlertType (21098) in Cboe FIX. Indication of a type of trade through. `0` = No trade through `1` = NBBO `2` = BBO (local best bid or offer) `3` = SBBO (market quote of complex derived by legs) `4` = Book trade through (trade through customer size) `5` = Due Dilligence trade through |  |  |  |  |  |  |  |  |
| PriceType | 68 | 1 | Alphanumeric | Corresponds to PriceType (423) in Cboe FIX. `2` = (Default) Price per unit (contract) |  |  |  |  |  |  |  |  |
| Reserved | 69 | 15 | Reserved | Reserved |  |  |  |  |  |  |  |  |

**Table 3. Floor Trade Notification Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `52 00` | 82 bytes |
| MessageType | `62` | `Floor Trade Notification` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| ExecID | `01 F0 B7 D9 71 21 00 00` | D19800001 (base 36) |
| Symbol | `30 30 36 69 70 41 00 00` | 006ipA |
| PutorCall | `00` |  |
| StrikePrice | `00 00 00 00 00 00 00 00` |  |
| MaturityDate | `00 00 00 00` |  |
| OrderQty | `64 00 00 00` | 100 |
| Price | `C8 32 00 00 00 00 00 00` | 1.30 |
| Side | `31` | `1` = Buy |
| ContraTrader | `41 41 41 41` | AAAA |
| FloorTraderAcronym | `42 42 42` | BBB |
| FloorTradeTime | `68 23 4A 8B 27 12 B4 15` | 1,563,894,931,654,321,000 |
| TradeThroughAlertType | `30` | `0` = No trade through |
| PriceType | `32` | `2` = Price per unit |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |

#### Add Floor Trade Rejected Message Fields (C1 Only)

The `Add Floor Trade Rejected` message is used to indicate that a requested `Add Floor Trade` message has been rejected. `Add Floor Trade Rejected` messages are unsequenced.

**Table 1. Add Floor Trade Rejected Message Fields (C1 Only)**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x5F` |
| MatchingUnit | 5 | 1 | Binary | Always 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| ClOrdID | 10 | 20 | Text | Echoed back from the original request. |
| Symbol | 30 | 8 | Alphanumeric | Corresponds to Symbol (55) in Cboe FIX. Entire Cboe format symbol or OSI symbol if using long format. |
| PutOrCall | 38 | 1 | Alphanumeric | Corresponds to PutOrCall (201) in Cboe FIX. `0` = Put `1` = Call NULL (0x00) filled if using Cboe format symbol. |
| StrikePrice | 39 | 8 | Binary Price | Corresponds to StrikePrice (202) in Cboe FIX. Strike Price for option, 0 - 999,999.99 NULL (0x00) filled if using Cboe format symbol. |
| MaturityDate | 47 | 4 | Date | Corresponds to MaturityMonth (200) and MaturityDay (205) in Cboe FIX. NULL (0x00) filled if using Cboe format symbol. |
| MultilegReportingType | 51 | 1 | Alphanumeric | Echoed back from the original request. |
| ComboOrder | 52 | 1 | Alpha | Echoed back from the original request. |
| Account | 53 | 16 | Text | Echoed back from the original request. |
| ClearingOptionalData | 69 | 16 | Text | Echoed back from the original request. |
| ClearingAccount | 85 | 4 | Text | Echoed back from the original request.. |
| CMTANumber | 89 | 4 | Binary | Echoed back from the original request. |
| FloorTraderAcronym | 93 | 3 | Alpha | Echoed back from the original request. |
| Side | 96 | 1 | Alphanumeric | Echoed back from the original request. |
| OrderQty | 97 | 4 | Binary | Echoed back from the original request. |
| Price | 101 | 8 | Binary Price | Echoed back from the original request. |
| TransactionTime | 109 | 8 | DateTime | Echoed back from the original request. |
| OpenClose | 117 | 1 | Alphanumeric | Echoed back from the original request. |
| FloorTradeTime | 118 | 8 | DateTime | Echoed back from the original request. |
| ContraTrader | 126 | 4 | Alphanumeric | Echoed back from the original request. |
| Reserved | 130 | 16 | Reserved | Reserved |
| RejectText | 146 | 60 | Text | Human readable text with more information about the reject reason. |

**Table 2. Add Floor Trade Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `CC 00` | 204 bytes |
| MessageType | `5F` | `Add Floor Trade Rejected` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `00 00 00 00` | Unsequenced message, `sequence` = 0 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| Symbol | `30 30 36 69 70 41 00 00` | 006ipA |
| PutorCall | `00` |  |
| StrikePrice | `00 00 00 00 00 00 00 00` |  |
| MaturityDate | `00 00 00 00` |  |
| MultilegReportingType | `31` | `1` = Single leg instrument |
| ComboOrder | `4E` | `N` = No |
| Account | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` |  |
| ClearingOptionalData | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` |  |
| ClearingAccount | `41 42 43 00` | ABC |
| CMTANumber | `00 00 00 00` |  |
| FloorTraderAcronym | `41 41 41` | AAA |
| Side | `31` | `1` = Buy |
| OrderQty | `64 00 00 00` | 100 contracts |
| Price | `C8 32 00 00 00 00 00 00` | 1.30 |
| TransactionTime | `00 5C DB E2 27 12 B4 15` | 1,563,894,933,123,456,000 |
| OpenClose | `4F` | `O` = Open |
| FloorTradeTime | `68 23 4A 8B 27 12 B4 15` | 1,563,894,931,654,321,000 |
| ContraTrader | `57 58 59` | WXY |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |
| RejectText | `41 3A 20 46 6C 6F 6F 72 54 72 61 64 65 72 41 63 72 6F 6E 79 6D 3D 41 41 41 20 64 6F 65 73 20 6E 6F 74 20 68 61 76 65 20 61 20 66 6C 6F 6F 72 20 70 65 72 6D 69 74 00 00 00 00 00 00` | A:FloorTraderAcronym=AAA does not have a floor permit |

#### Floor Trade Confirmation Rejected Message Fields (C1 Only)

The `Floor Trade Confirmation Rejected` message is used to indicate that a requested `Floor Trade Confirmation` message has been rejected. `Floor Trade Confirmation Rejected` messages are unsequenced.

**Table 1. Floor Trade Confirmation Rejected Message Fields (C1 Only)**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x5E` |
| MatchingUnit | 5 | 1 | Binary | Always 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| ClOrd | 10 | 20 | Text | Echoed back from the original request. |
| ExecID | 30 | 8 | Binary | Echoed back from the original request. |
| Symbol | 38 | 8 | Alphanumeric | Corresponds to Symbol (55) in Cboe FIX. Entire Cboe format symbol or OSI symbol if using long format. |
| PutOrCall | 46 | 1 | Alphanumeric | Corresponds to PutOrCall (201) in Cboe FIX. `0` = Put `1` = Call NULL (0x00) filled if using Cboe format symbol. |
| StrikePrice | 47 | 8 | Binary Price | Corresponds to StrikePrice (202) in Cboe FIX. Strike Price for option, 0 - 999,999.99 NULL (0x00) filled if using Cboe format symbol. |
| MaturityDate | 55 | 4 | Date | Corresponds to MaturityMonth (200) and MaturityDay (205) in Cboe FIX. NULL (0x00) filled if using Cboe format symbol. |
| TransactionTime | 59 | 8 | DateTime | Echoed back from the original request. |
| PriceType | 67 | 1 | Alphanumeric | Corresponds to PriceType (423) in Cboe FIX. `2` = (Default) Price per unit (contract) |
| Reserved | 68 | 15 | Reserved | Reserved |
| RejectText | 83 | 60 | Text | Human readable text with more information about the reject reason. |

**Table 2. Floor Trade Confirmation Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `8D 00` | 141 bytes |
| MessageType | `5E` | `Floor Trade Confirmation Rejected` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `00 00 00 00` | Unsequenced message, sequence = 0 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| ExecID | `00 00 00 00 00 00 00 00` |  |
| Symbol | `30 30 36 69 70 41 00 00` | 006ipA |
| PutorCall | `00` |  |
| StrikePrice | `00 00 00 00 00 00 00 00` |  |
| MaturityDate | `00 00 00 00` |  |
| TransactionTime | `68 23 4A 8B 27 12 B4 15` | 1,563,894,931,654,321,000 |
| PriceType | `32` | `2` = Price per unit |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |
| RejectText | `41 3A 20 45 78 65 63 49 64 3A 20 45 78 65 63 75 74 69 6F 6E 49 64 20 65 6D 70 74 79 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | A: ExecId: ExecutionId empty |

#### Delete Floor Trade Rejected Message Fields (C1 Only)

The `Delete Floor Trade Rejected` message is used to indicate that a requested `Delete Floor Trade` message has been rejected. Delete `Floor Trade Rejected` messages are unsequenced.

**Table 1. Delete Floor Trade Rejected Message Fields (C1 Only)**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x60` |
| MatchingUnit | 5 | 1 | Binary | Always 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| ClOrdID | 10 | 20 | Text | Echoed back from the original request. |
| ExecID | 30 | 8 | Binary | Echoed back from the original request. |
| Symbol | 38 | 8 | Alphanumeric | Corresponds to Symbol (55) in Cboe FIX. Entire Cboe format symbol or OSI symbol if using long format. |
| PutOrCall | 46 | 1 | Alphanumeric | Corresponds to PutOrCall (201) in Cboe FIX. `0` = Put `1` = Call NULL (0x00) filled if using Cboe format symbol. |
| StrikePrice | 47 | 8 | Binary Price | Corresponds to StrikePrice (202) in Cboe FIX. Strike Price for option, 0 - 999,999.99 NULL (0x00) filled if using Cboe format symbol. |
| MaturityDate | 55 | 4 | Date | Corresponds to MaturityMonth (200) and MaturityDay (205) in Cboe FIX. NULL (0x00) filled if using Cboe format symbol. |
| Side | 59 | 1 | Alphanumeric | Echoed back from the original request. |
| Reserved | 60 | 16 | Reserved | Reserved |
| RejectText | 76 | 60 | Text | Human readable text with more information about the reject reason. |

**Table 2. Delete Floor Trade Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `86 00` | 134 bytes |
| MessageType | `60` | `Delete Floor Trade Rejected` |
| MatchingUnit | `00` | Always 0 |
| SequenceNumber | `00 00 00 00` | Unsequenced message, sequence = 0 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00` | ABC123 |
| ExecID | `01 F0 B7 D9 71 21 00 00` | D19800001 (base 36) |
| Symbol | `30 30 36 69 70 41 00 00` | 006ipA |
| PutorCall | `00` |  |
| StrikePrice | `00 00 00 00 00 00 00 00` |  |
| MaturityDate | `00 00 00 00` |  |
| Side | `31` | 1=Buy |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |
| RejectText | `55 6E 6B 6E 6F 77 6E 20 73 79 6D 62 6F 6C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Unknown symbol |

#### Delete Floor Trade Acknowledgement Message Fields (C1 Only)

A `Delete Floor Trade Acknowledgment` message is an unsequenced message sent when a `Delete Floor Trade` message requesting has completed.

**Table 1. Delete Floor Trade Acknowledgement Message Fields (C1 Only)**

| Field | Offset | Length | Data Type | Description |  |  |  |  |  |  |  |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |  |  |  |  |  |  |  |  |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |  |  |  |  |  |  |  |  |
| MessageType | 4 | 1 | Binary | `0x61` |  |  |  |  |  |  |  |  |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |  |  |  |  |  |  |  |  |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |  |  |  |  |  |  |  |  |
| ClOrdID | 10 | 20 | Text | Echoed back from the original request. |  |  |  |  |  |  |  |  |
| ExecID | 30 | 8 | Binary | Corresponds to ExecID (17) in Cboe FIX. Execution ID. Unique across all matching units on a given day. Note: ExecIDs will be represented on ODROP and FIXDROP ports as nine character, base 36 ASCII. Leading zeros should be added if the converted base 36 value is shorter than nine characters. Table 2. Example Conversion Decimal Base 36 28294005440239 A1234B567 76335905726621 R248BC23H 728557228187 09AP05V2Z | Decimal | Base 36 | 28294005440239 | A1234B567 | 76335905726621 | R248BC23H | 728557228187 | 09AP05V2Z |
| Decimal | Base 36 |  |  |  |  |  |  |  |  |  |  |  |
| 28294005440239 | A1234B567 |  |  |  |  |  |  |  |  |  |  |  |
| 76335905726621 | R248BC23H |  |  |  |  |  |  |  |  |  |  |  |
| 728557228187 | 09AP05V2Z |  |  |  |  |  |  |  |  |  |  |  |
| Reserved | 68 | 16 | Reserved | Reserved |  |  |  |  |  |  |  |  |

**Table 3. Delete Floor Trade Acknowledgement Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `24 00` | 82 bytes |
| MessageType | `61` | `Delete Floor Trade Acknowledgement` |
| MatchingUnit | `00` | Always 0 |
| SequenceNumber | `00 00 00 00` | Unsequenced message, `sequence` = 0 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| ExecID | `01 F0 B7 D9 71 21 00 00` | D19800001 (base 36) |
| Reserved | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Reserved |

## Input Bitfields Per Message

**Table 1. Bitfield Table Legend**

| Entry | Description |
|---|---|
| R | Indicates that the field must be specified for a message |
| O | Indicates that the field can be specified for a message |
| - | Indicates that the field cannot be specified for a message |
| (Blank) | Indicates that the field is not used by Cboe Options and cannot be specified for a message |

Input messages containing invalid fields (i.e., Blank) will be rejected. In the case of rejected input messages, the associated `Reject` message sent back to the customer will contain a RejectReason code non-optional field (See Order Reason Codes) and a Text non-optional field containing descriptive text.

### New Order

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | ClearingFirm | O |  | 6 | 1 | DisplayRange | O |
| 2 | ClearingAccount | O |  | 2 | StopPx | O |  |  |
| 4 | Price | O |  | 4 | RoutStrategy | O |  |  |
| 8 | ExecInst | O |  | 8 | RouteDeliveryMethod | O |  |  |
| 16 | OrdType | O |  | 16 | ExDestination | O |  |  |
| 32 | TimeInForce | O |  | 32 | EchoText | O |  |  |
| 64 | MinQty | O |  | 64 | AuctionId | O |  |  |
| 128 | MaxFloor | O |  | 128 | RoutingFirmID | O |  |  |
| 2 | 1 | Symbol | R |  | 7 | 1 | AlgorithmicIndicator |  |
| 2 | SymbolSfx |  |  | 2 | CustomGroupId | O |  |  |
| 4 | Currency |  |  | 4 | ClientQualifiedRole |  |  |  |
| 8 | IdSource |  |  | 8 | InvestorQualifiedRole |  |  |  |
| 16 | SecurityId |  |  | 16 | ExecutorQualifiedRole |  |  |  |
| 32 | SecurityExchange |  |  | 32 | CtiCode |  |  |  |
| 64 | Capacity | R |  | 64 | ManualOrderIndicator |  |  |  |
| 128 | RoutingInst | O |  | 128 | OperatorId |  |  |  |
| 3 | 1 | Account | O |  | 8 | 1 | (Reserved) |  |
| 2 | DisplayIndicator | O |  | 2 | (Reserved) |  |  |  |
| 4 | (Reserved) |  |  | 4 | ClearingOptionalData | O |  |  |
| 8 | DiscretionAmount |  |  | 8 | ClientIDAttr | O |  |  |
| 16 | PegDifference |  |  | 16 | FrequentTraderID | O |  |  |
| 32 | PreventMatch | O |  | 32 | Compression | O |  |  |
| 64 | LocateReqd |  |  | 64 | FloorDestination | O |  |  |
| 128 | ExpireTime | O |  | 128 | FloorRoutingInst | O |  |  |
| 4 | 1 | MaturityDate | O |  | 9 | 1 | OrderOrigin | O |
| 2 | StrikePrice | O |  | 2 | ORS | O |  |  |
| 4 | PutOrCall | O |  | 4 | PriceType | O |  |  |
| 8 | RiskReset | O |  | 8 | (Reserved) |  |  |  |
| 16 | OpenClose | O |  | 16 | (Reserved) |  |  |  |
| 32 | CMTANumber | O |  | 32 | (Reserved) |  |  |  |
| 64 | TargetPartyID | O |  | 64 | CrossTradeFlag |  |  |  |
| 128 | (Reserved) |  |  | 128 | (Reserved) |  |  |  |
| 5 | 1 | SessionEligibility | O |  | 10 | 1 | Held | O |
| 2 | AttributedQuote | O |  | 2 | LocateBroker |  |  |  |
| 4 | BookingType |  |  | 4 | (Reserved) |  |  |  |
| 8 | ExtExecInst |  |  | 8 | (Reserved) |  |  |  |
| 16 | ClientID |  |  | 16 | (Reserved) |  |  |  |
| 32 | InvestorID |  |  | 32 | (Reserved) |  |  |  |
| 64 | ExecutorID |  |  | 64 | (Reserved) |  |  |  |
| 128 | OrderOrigination |  |  | 128 | (Reserved) |  |  |  |

### New Order Cross (C1 and EDGX Only)

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Symbol | R |  | 3 | 1 | ClientIDAttr | O |
| 2 | MaturityDate | O |  | 2 | EquityTradePrice | O |  |  |
| 4 | StrikePrice | O |  | 4 | EquityTradeSize | O |  |  |
| 8 | PutOrCall | O |  | 8 | EquityTradeVenue | O |  |  |
| 16 | ExecInst | O |  | 16 | EquityTransactTime | O |  |  |
| 32 | AttributedQuote | O |  | 32 | EquityBuyClearingFirm | O |  |  |
| 64 | TargetPartyID | O |  | 64 | EquitySellClearingFirm | O |  |  |
| 128 | PreventMatch | O |  | 128 | SessionEligibility | O |  |  |
| 2 | 1 | AutoMatch | O |  | 4 | 1 | Compression | O |
| 2 | AutoMatchPrice | O |  | 2 | ORS | O |  |  |
| 4 | LastPriority | O |  | 4 | FrequentTraderID | O |  |  |
| 8 | Account | O |  | 8 | (Reserved) |  |  |  |
| 16 | CMTANumber | O |  | 16 | (Reserved) |  |  |  |
| 32 | ClearingAccount | O |  | 32 | (Reserved) |  |  |  |
| 64 | RoutingFirmID | O |  | 64 | (Reserved) |  |  |  |
| 128 | ClearingOptionalData | O |  | 128 | (Reserved) |  |  |  |

### New Complex Order (C1, C2, and EDGX Only)

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | ClearingFIrm | O |  | 5 | 1 | EquityLegShortSell | O |
| 2 | ClearingAccount | O |  | 2 | FloorDestination | O |  |  |
| 4 | Price | O |  | 4 | FloorRoutingInst | O |  |  |
| 8 | OrdType | O |  | 8 | MultiClassSprd | O |  |  |
| 16 | TimeInForce | O |  | 16 | OrderOrigin | O |  |  |
| 32 | Symbol | O |  | 32 | ORS | O |  |  |
| 64 | Capacity | O |  | 64 | PriceType | O |  |  |
| 128 | RoutingInst | O |  | 128 | StrategyID | O |  |  |
| 2 | 1 | Account | O |  | 6 | 1 | (Reserved) |  |
| 2 | PreventMatch | O |  | 2 | ExecInst | O |  |  |
| 4 | ExpireTime | O |  | 4 | TiedHedge | O |  |  |
| 8 | CMTANumber | O |  | 8 | (Reserved) |  |  |  |
| 16 | TargetPartyID | O |  | 16 | (Reserved) |  |  |  |
| 32 | AttributedQuote | O |  | 32 | (Reserved) |  |  |  |
| 64 | EchoText | O |  | 64 | (Reserved) |  |  |  |
| 128 | AuctionId | O |  | 128 | (Reserved) |  |  |  |
| 3 | 1 | RoutingFirmID | O |  | 7 | 1 | (Reserved) |  |
| 2 | DrillThruProtection | O |  | 2 | (Reserved) |  |  |  |
| 4 | RiskReset | O |  | 4 | (Reserved) |  |  |  |
| 8 | CustomGroupId | O |  | 8 | (Reserved) |  |  |  |
| 16 | LegSide |  |  | 16 | (Reserved) |  |  |  |
| 32 | EquityPartyId | O |  | 32 | (Reserved) |  |  |  |
| 64 | (Reserved) |  |  | 64 | (Reserved) |  |  |  |
| 128 | ClearingOptionalData | O |  | 128 | Held | O |  |  |
| 4 | 1 | ClientIDAttr | O |  | 8 | 1 | (Reserved) |  |
| 2 | FrequentTraderID | O |  | 2 | CrossInitiator | O |  |  |
| 4 | SessionEligibility | O |  | 4 | CrossOnBehalfOfID | O |  |  |
| 8 | MaxFloor | O |  | 8 | StopPx Effective TBD | O |  |  |
| 16 | DisplayRange | O |  | 16 | StopPxType Effective TBD | O |  |  |
| 32 | ComboOrder | O |  | 32 | (Reserved) |  |  |  |
| 64 | Compression | O |  | 64 | (Reserved) |  |  |  |
| 128 | EquityExDestination | O |  | 128 | (Reserved) |  |  |  |

### New Order Cross Multileg (C1 and EDGX Only)

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Symbol | R |  | 4 | 1 | EquityPartyId | O |
| 2 | (Reserved) |  |  | 2 | EquityLegShortSell | O |  |  |
| 4 | (Reserved) |  |  | 4 | Reserved |  |  |  |
| 8 | (Reserved) |  |  | 8 | Reserved |  |  |  |
| 16 | ExecInst | O |  | 16 | DrillThruProtection | O |  |  |
| 32 | AttributedQuote | O |  | 32 | PriceType |  |  |  |
| 64 | TargetPartyID | O |  | 64 | EquityExDestination | O |  |  |
| 128 | PreventMatch | O |  | 128 | Compression | O |  |  |
| 2 | 1 | AutoMatch | O |  | 5 | 1 | ORS | O |
| 2 | AutoMatchPrice | O |  | 2 | FrequentTraderID | O |  |  |
| 4 | LastPriority | O |  | 4 | CrossInitiator | O |  |  |
| 8 | Account | O |  | 8 | LegPositionEffectsExt | O |  |  |
| 16 | CMTANumber | O |  | 16 | CrossOnBehalfOfID | O |  |  |
| 32 | ClearingAccount | O |  | 32 | (Reserved) |  |  |  |
| 64 | RoutingFirmID | O |  | 64 | (Reserved) |  |  |  |
| 128 | ClearingOptionalData | O |  | 128 | (Reserved) |  |  |  |
| 3 | 1 | ClientIDAttr | O |  |  |  |  |  |
| 2 | EquityTradePrice | O |  |  |  |  |  |  |
| 4 | EquityTradeSize | O |  |  |  |  |  |  |
| 8 | EquityTradeVenue | O |  |  |  |  |  |  |
| 16 | EquityTransactTime | O |  |  |  |  |  |  |
| 32 | EquityBuyClearingFirm | O |  |  |  |  |  |  |
| 64 | EquitySellClearingFirm | O |  |  |  |  |  |  |
| 128 | SessionEligibility | O |  |  |  |  |  |  |

### Cancel Order

| Byte | Bit | Field |  |
|---|---|---|---|
| 1 | 1 | ClearingFirm | O |
| 2 | MassCancelLockout |  |  |
| 4 | MassCancel |  |  |
| 8 | RiskRoot | O |  |
| 16 | MassCancelID | O |  |
| 32 | RoutingFirmID | O |  |
| 64 | ManualOrderIndicator |  |  |
| 128 | OperatorId |  |  |
| 2 | 1 | MassCancelInst | O |
| 2 | Symbol |  |  |
| 4 | SymbolSfx |  |  |
| 8 | SendTime | R |  |
| 16 | (Reserved) |  |  |
| 32 | (Reserved) |  |  |
| 64 | (Reserved) |  |  |
| 128 | (Reserved) |  |  |

ClearingFirm is required for service bureau ports. SendTime is required for all `Cancel Order` messages.

### Modify Order

| Byte | Bit | Field |  |
|---|---|---|---|
| 1 | 1 | ClearingFirm | O |
| 2 | (Reserved) |  |  |
| 4 | OrderQty | R |  |
| 8 | Price | R |  |
| 16 | OrdType | O |  |
| 32 | CancelOrigOnReject | O |  |
| 64 | ExecInst | O |  |
| 128 | Side | - |  |
| 2 | 1 | MaxFloor | O |
| 2 | StopPx | O |  |
| 4 | RoutingFirmID | O |  |
| 8 | ManualOrderIndicator |  |  |
| 16 | OperatorId |  |  |
| 32 | FrequentTraderID | - |  |
| 64 | (Reserved) |  |  |
| 128 | LocateBroker |  |  |

The OrderQty and Price fields in the optional field block must be present on all `Modify Order` message requests. Messages sent without both fields will be rejected. Price is optional for market orders.

ClearingFirm is required for service bureau ports.

### Purge Orders

| Byte | Bit | Field |  |
|---|---|---|---|
| 1 | 1 | ClearingFirm | O |
| 2 | MassCancelLockout |  |  |
| 4 | MassCancelInst | O |  |
| 8 | RiskRoot | O |  |
| 16 | MassCancelID | O |  |
| 32 | RoutingFirmID | O |  |
| 64 | ManualOrderIndicator |  |  |
| 128 | OperatorId |  |  |
| 2 | 1 | Symbol |  |
| 2 | SymbolSfx |  |  |
| 4 | (Reserved) |  |  |
| 8 | (Reserved) |  |  |
| 16 | (Reserved) |  |  |
| 32 | (Reserved) |  |  |
| 64 | SendTime | R |  |
| 128 | MatchingUnit | O |  |

ClearingFirm is required for service bureau ports. SendTime is required for all `Purge Orders` messages.

### New Complex Instrument (C1, C2, and EDGX Only)

| Byte | Bit | Field |  |
|---|---|---|---|
| 1 | 1 | LegCFICode | O |
| 2 | LegMaturityDate | O |  |
| 4 | LegStrikePrice | O |  |
| 8 | ClearingFirm | O |  |
| 16 | (Reserved) |  |  |
| 32 | (Reserved) |  |  |
| 64 | (Reserved) |  |  |
| 128 | (Reserved) |  |  |

## Return Bitfields Per Message

**Table 1. Bitfield Table Legend**

| Entry | Description |
|---|---|
| R | Indicates that the field must be specified for a message |
| O | Indicates that the field can be specified for a message |
| - | Indicates that the field cannot be specified for a message |
| (Blank) | Indicates that the field is not used by Cboe Options and cannot be specified for a message |

### Order Acknowledgment

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | O |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | O |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | O |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | O |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | O |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | O |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | O |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode | O |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | O |  | 2 | TargetPartyID | O |  | 2 | EquityPartyId | O |  |  |  |
| 4 | ClearingAccount | O |  | 4 | AuctionId | O |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | O |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | O |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | O |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType | - |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization | - |  | 128 | ClientIDAttr | O |  |  |  |
| 4 | 1 | MaturityDate | O |  | 10 | 1 | CrossId | O |  | 16 | 1 | FrequentTraderID | O |
| 2 | StrikePrice | O |  | 2 | AllocQty | O |  | 2 | SessionEligibility | O |  |  |  |
| 4 | PutOrCall | O |  | 4 | GiveUpFirmID | O |  | 4 | ComboOrder | O |  |  |  |
| 8 | OpenClose | O |  | 8 | RoutingFirmID | O |  | 8 | Compression | O |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | O |  |  |  |
| 32 | CorrectedSize | O |  | 32 | CrossExclusionIndicator | O |  | 32 | FloorRoutingInst | O |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | O |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | O |  |  |  |
| 5 | 1 | OrigClOrdID | O |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType | O |
| 2 | LeavesQty | O |  | 2 | InvestorID |  |  | 2 | StrategyID | O |  |  |  |
| 4 | LastShares | O |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | O |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | O |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | O |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | O |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | O |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | O |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | O |  |  |  |
| 4 | ContraCapacity | O |  | 4 | OperatorId |  |  | 4 | Subreason | - |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | O |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | O |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | O |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxTypeEffective TBD | O |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Cross Order Acknowledgment (C1 and EDGX only)

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | - |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | - |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | - |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | - |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | - |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode | - |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | - |  | 2 | TargetPartyID | O |  | 2 | EquityPartyId | O |  |  |  |
| 4 | ClearingAccount | O |  | 4 | AuctionId | O |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | O |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType | O |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization | O |  | 128 | ClientIDAttr | O |  |  |  |
| 4 | 1 | MaturityDate | O |  | 10 | 1 | CrossId | O |  | 16 | 1 | FrequentTraderID | O |
| 2 | StrikePrice | O |  | 2 | AllocQty | O |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | O |  | 4 | GiveUpFirmID | O |  | 4 | ComboOrder | - |  |  |  |
| 8 | OpenClose | O |  | 8 | RoutingFirmID | O |  | 8 | Compression | O |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | - |  |  |  |
| 32 | CorrectedSize | - |  | 32 | CrossExclusionIndicator | - |  | 32 | FloorRoutingInst | - |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | - |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | - |  |  |  |
| 5 | 1 | OrigClOrdId | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType |  |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID | - |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | O |  |  |  |
| 4 | ContraCapacity | - |  | 4 | OperatorId |  |  | 4 | Subreason | - |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | - |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | O |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | O |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Order Rejected

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | O |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | O |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | O |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | O |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | O |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode | O |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | O |  | 2 | TargetPartyID | O |  | 2 | EquityPartyId | O |  |  |  |
| 4 | ClearingAccount | O |  | 4 | AuctionId | O |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | O |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | O |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | O |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType | - |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization | - |  | 128 | ClientIDAttr | O |  |  |  |
| 4 | 1 | MaturityDate | O |  | 10 | 1 | CrossId | O |  | 16 | 1 | FrequentTraderID | O |
| 2 | StrikePrice | O |  | 2 | AllocQty | O |  | 2 | SessionEligibility | O |  |  |  |
| 4 | PutOrCall | O |  | 4 | GiveUpFirmID | O |  | 4 | ComboOrder | O |  |  |  |
| 8 | OpenClose | O |  | 8 | RoutingFirmID | O |  | 8 | Compression | O |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | O |  |  |  |
| 32 | CorrectedSize | O |  | 32 | CrossExclusionIndicator | O |  | 32 | FloorRoutingInst | O |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | O |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | O |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType | O |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID | O |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | O |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | O |  |  |  |
| 4 | ContraCapacity | O |  | 4 | OperatorId |  |  | 4 | Subreason | O |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | O |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | O |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | O |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | O |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Cross Order Rejected (C1 and EDGX Only)

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | - |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | - |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | - |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | - |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | - |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | - |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | - |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | - |  | 9 | 1 | MarketingFeeCode | - |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | - |  | 2 | TargetPartyID | O |  | 2 | EquityPartyId | O |  |  |  |
| 4 | ClearingAccount | - |  | 4 | AuctionId | - |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | - |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType | O |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization | O |  | 128 | ClientIDAttr | - |  |  |  |
| 4 | 1 | MaturityDate | O |  | 10 | 1 | CrossId | O |  | 16 | 1 | FrequentTraderID | O |
| 2 | StrikePrice | O |  | 2 | AllocQty | - |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | O |  | 4 | GiveUpFirmID | - |  | 4 | ComboOrder | - |  |  |  |
| 8 | OpenClose | - |  | 8 | RoutingFirmID | O |  | 8 | Compression | O |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | - |  |  |  |
| 32 | CorrectedSize | - |  | 32 | CrossExclusionIndicator | - |  | 32 | FloorRoutingInst | - |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | - |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | - |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType |  |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID | - |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | O |  |  |  |
| 4 | ContraCapacity | - |  | 4 | OperatorId |  |  | 4 | Subreason | O |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | - |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | - |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | O |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Order Modified

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | O |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | O |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | O |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | O |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | - |  | 64 | ExDestination | O |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode | O |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | O |  | 2 | TargetPartyID | O |  | 2 | EquityPartyId | - |  |  |  |
| 4 | ClearingAccount | O |  | 4 | AuctionId | O |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | O |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | O |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | O |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType | - |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization | - |  | 128 | ClientIDAttr | - |  |  |  |
| 4 | 1 | MaturityDate | - |  | 10 | 1 | CrossId | O |  | 16 | 1 | FrequentTraderID | O |
| 2 | StrikePrice | - |  | 2 | AllocQty | O |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | - |  | 4 | GiveUpFirmID | O |  | 4 | ComboOrder | O |  |  |  |
| 8 | OpenClose | - |  | 8 | RoutingFirmID | O |  | 8 | Compression | O |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | O |  |  |  |
| 32 | CorrectedSize | - |  | 32 | CrossExclusionIndicator | O |  | 32 | FloorRoutingInst | O |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | O |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | O |  |  |  |
| 5 | 1 | OrigClOrdID | O |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType | O |
| 2 | LeavesQty | O |  | 2 | InvestorID |  |  | 2 | StrategyID | O |  |  |  |
| 4 | LastShares | O |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | O |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | O |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | O |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | O |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | O |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | O |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | - |  |  |  |
| 4 | ContraCapacity | O |  | 4 | OperatorId |  |  | 4 | Subreason | - |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | O |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | - |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | - |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | O |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Order Restated

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | O |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | O |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | O |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | O |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | O |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode | O |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | O |  | 2 | TargetPartyID | O |  | 2 | EquityPartyId | - |  |  |  |
| 4 | ClearingAccount | O |  | 4 | AuctionId | O |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | O |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | O |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | O |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType | - |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization | - |  | 128 | ClientIDAttr | O |  |  |  |
| 4 | 1 | MaturityDate | O |  | 10 | 1 | CrossId | O |  | 16 | 1 | FrequentTraderID | O |
| 2 | StrikePrice | O |  | 2 | AllocQty | O |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | O |  | 4 | GiveUpFirmID | O |  | 4 | ComboOrder | O |  |  |  |
| 8 | OpenClose | O |  | 8 | RoutingFirmID | O |  | 8 | Compression | O |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | O |  |  |  |
| 32 | CorrectedSize | O |  | 32 | CrossExclusionIndicator | O |  | 32 | FloorRoutingInst | O |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | O |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | O |  |  |  |
| 5 | 1 | OrigClOrdID | O |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType | O |
| 2 | LeavesQty | O |  | 2 | InvestorID |  |  | 2 | StrategyID | O |  |  |  |
| 4 | LastShares | O |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | O |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | O |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | O |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | O |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | O |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | O |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | - |  |  |  |
| 4 | ContraCapacity | O |  | 4 | OperatorId |  |  | 4 | Subreason | - |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | O |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | - |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | - |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | O |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### User Modify Rejected

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | - |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | - |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | - |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | - |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | - |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | - |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | - |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | - |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | - |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | - |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | - |  | 9 | 1 | MarketingFeeCode | - |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | - |  | 2 | TargetPartyID | - |  | 2 | EquityPartyId | - |  |  |  |
| 4 | ClearingAccount | - |  | 4 | AuctionId | - |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | - |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | - |  | 64 | CrossType | - |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | - |  | 128 | CrossPrioritization | - |  | 128 | ClientIDAttr | - |  |  |  |
| 4 | 1 | MaturityDate | - |  | 10 | 1 | CrossId | O |  | 16 | 1 | FrequentTraderID | - |
| 2 | StrikePrice | - |  | 2 | AllocQty | O |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | - |  | 4 | GiveUpFirmID | O |  | 4 | ComboOrder | - |  |  |  |
| 8 | OpenClose | - |  | 8 | RoutingFirmID | O |  | 8 | Compression | - |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | - |  |  |  |
| 32 | CorrectedSize | - |  | 32 | CrossExclusionIndicator | O |  | 32 | FloorRoutingInst | - |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | - |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | - |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType | - |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID | - |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | - |  |  |  |
| 4 | ContraCapacity | - |  | 4 | OperatorId |  |  | 4 | Subreason | - |  |  |  |
| 8 | AttributedQuote | - |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | - |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | - |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | - |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Order Cancelled

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | O |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | O |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | O |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | O |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | O |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode | O |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | O |  | 2 | TargetPartyID | O |  | 2 | EquityPartyId | O |  |  |  |
| 4 | ClearingAccount | O |  | 4 | AuctionId | O |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | O |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | O |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | O |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType | - |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization | - |  | 128 | ClientIDAttr | - |  |  |  |
| 4 | 1 | MaturityDate | O |  | 10 | 1 | CrossId | O |  | 16 | 1 | FrequentTraderID | O |
| 2 | StrikePrice | O |  | 2 | AllocQty | O |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | O |  | 4 | GiveUpFirmID | O |  | 4 | ComboOrder | O |  |  |  |
| 8 | OpenClose | O |  | 8 | RoutingFirmID | O |  | 8 | Compression | O |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | O |  |  |  |
| 32 | CorrectedSize | O |  | 32 | CrossExclusionIndicator | O |  | 32 | FloorRoutingInst | O |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | O |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | O |  |  |  |
| 5 | 1 | OrigClOrdID | O |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType | O |
| 2 | LeavesQty | O |  | 2 | InvestorID |  |  | 2 | StrategyID | O |  |  |  |
| 4 | LastShares | O |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | O |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | O |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | O |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | O |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | O |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | O |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | O |  |  |  |
| 4 | ContraCapacity | O |  | 4 | OperatorId |  |  | 4 | Subreason | O |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | O |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | O |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | O |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | O |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Cross Order Cancelled (C1 and EDGX Only)

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | - |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | - |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | - |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | - |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | - |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode | - |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | O |  | 2 | TargetPartyID | O |  | 2 | EquityPartyId | O |  |  |  |
| 4 | ClearingAccount | - |  | 4 | AuctionId | O |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | O |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType | O |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization | O |  | 128 | ClientIDAttr | - |  |  |  |
| 4 | 1 | MaturityDate | O |  | 10 | 1 | CrossId | O |  | 16 | 1 | FrequentTraderID | O |
| 2 | StrikePrice | O |  | 2 | AllocQty | O |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | O |  | 4 | GiveUpFirmID | O |  | 4 | ComboOrder | - |  |  |  |
| 8 | OpenClose | O |  | 8 | RoutingFirmID | O |  | 8 | Compression | O |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | - |  |  |  |
| 32 | CorrectedSize | - |  | 32 | CrossExclusionIndicator | - |  | 32 | FloorRoutingInst | - |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | - |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | - |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType |  |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID | - |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | O |  |  |  |
| 4 | ContraCapacity | - |  | 4 | OperatorId |  |  | 4 | Subreason | - |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | - |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | - |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | O |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Cancel Rejected

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | O |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus | - |  |  |  |
| 3 | 1 | Account | - |  | 9 | 1 | MarketingFeeCode | O |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | - |  | 2 | TargetPartyID | O |  | 2 | EquityPartyId | - |  |  |  |
| 4 | ClearingAccount | - |  | 4 | AuctionId | O |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | O |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | O |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | - |  | 64 | CrossType | - |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | - |  | 128 | CrossPrioritization | - |  | 128 | ClientIDAttr | - |  |  |  |
| 4 | 1 | MaturityDate | O |  | 10 | 1 | CrossId | O |  | 16 | 1 | FrequentTraderID | - |
| 2 | StrikePrice | O |  | 2 | AllocQty | O |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | O |  | 4 | GiveUpFirmID | O |  | 4 | ComboOrder | - |  |  |  |
| 8 | OpenClose | O |  | 8 | RoutingFirmID | O |  | 8 | Compression | - |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | - |  |  |  |
| 32 | CorrectedSize | O |  | 32 | CrossExclusionIndicator | O |  | 32 | FloorRoutingInst | - |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | - |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | - |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType | - |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID | - |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | - |  |  |  |
| 4 | ContraCapacity | - |  | 4 | OperatorId |  |  | 4 | Subreason | - |  |  |  |
| 8 | AttributedQuote | - |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | - |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | O |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | - |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | O |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Order Execution

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | O |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | O |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | O |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx | O |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx | O |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | O |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | O |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | O |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | O |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | O |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | O |  | 16 | SecondaryExecId | O |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | O |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | O |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | O |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode | O |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | O |  | 2 | TargetPartyID | O |  | 2 | EquityPartyId | O |  |  |  |
| 4 | ClearingAccount | O |  | 4 | AuctionId | O |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | O |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | O |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | O |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType | O |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization | O |  | 128 | ClientIDAttr | O |  |  |  |
| 4 | 1 | MaturityDate | O |  | 10 | 1 | CrossId | O |  | 16 | 1 | FrequentTraderID | O |
| 2 | StrikePrice | O |  | 2 | AllocQty | O |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | O |  | 4 | GiveUpFirmID | O |  | 4 | ComboOrder | O |  |  |  |
| 8 | OpenClose | O |  | 8 | RoutingFirmID | O |  | 8 | Compression | O |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | O |  |  |  |
| 32 | CorrectedSize | O |  | 32 | CrossExclusionIndicator | O |  | 32 | FloorRoutingInst | O |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | O |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | O |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType | O |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID | O |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | O |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID | O |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | O |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | O |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | O |  |  |  |
| 4 | ContraCapacity | O |  | 4 | OperatorId |  |  | 4 | Subreason | - |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate | O |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | O |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | O |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | O |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | O |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | O |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | O |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Trade Cancel or Correct

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | - |  | 7 | 1 | SubLiquidityIndicator | O |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | - |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | - |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | - |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | - |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | - |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | - |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | - |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | - |  | 9 | 1 | MarketingFeeCode | O |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | - |  | 2 | TargetPartyID | O |  | 2 | EquityPartyId | - |  |  |  |
| 4 | ClearingAccount | - |  | 4 | AuctionId | O |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | O |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | - |  | 64 | CrossType | - |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | - |  | 128 | CrossPrioritization | - |  | 128 | ClientIDAttr | - |  |  |  |
| 4 | 1 | MaturityDate | O |  | 10 | 1 | CrossId | O |  | 16 | 1 | FrequentTraderID | - |
| 2 | StrikePrice | O |  | 2 | AllocQty | - |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | O |  | 4 | GiveUpFirmID | O |  | 4 | ComboOrder | - |  |  |  |
| 8 | OpenClose | O |  | 8 | RoutingFirmID | O |  | 8 | Compression | - |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | - |  |  |  |
| 32 | CorrectedSize | O |  | 32 | CrossExclusionIndicator | O |  | 32 | FloorRoutingInst | - |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | - |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | - |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType | - |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID | - |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | - |  |  |  |
| 4 | ContraCapacity | - |  | 4 | OperatorId |  |  | 4 | Subreason | - |  |  |  |
| 8 | AttributedQuote | - |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | - |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | - |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | - |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Purge Rejected

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | - |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | - |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | - |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | - |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | - |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | - |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | - |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | - |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | - |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | - |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | - |  | 9 | 1 | MarketingFeeCode | - |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | - |  | 2 | TargetPartyID | - |  | 2 | EquityPartyId | - |  |  |  |
| 4 | ClearingAccount | - |  | 4 | AuctionId | - |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | O |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | - |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | - |  | 64 | CrossType | - |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | - |  | 128 | CrossPrioritization | - |  | 128 | ClientIDAttr | - |  |  |  |
| 4 | 1 | MaturityDate | - |  | 10 | 1 | CrossId | - |  | 16 | 1 | FrequentTraderID | - |
| 2 | StrikePrice | - |  | 2 | AllocQty | - |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | - |  | 4 | GiveUpFirmID | - |  | 4 | ComboOrder | - |  |  |  |
| 8 | OpenClose | - |  | 8 | RoutingFirmID | - |  | 8 | Compression | - |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | - |  |  |  |
| 32 | CorrectedSize | - |  | 32 | CrossExclusionIndicator | - |  | 32 | FloorRoutingInst | - |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | - |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | - |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType | - |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID | - |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | - |  |  |  |
| 4 | ContraCapacity | - |  | 4 | OperatorId |  |  | 4 | Subreason | - |  |  |  |
| 8 | AttributedQuote | - |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | - |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | - |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | - |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Purge Notification

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | - |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | - |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | - |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | - |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | - |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | - |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | - |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | - |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | - |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | - |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | - |  | 9 | 1 | MarketingFeeCode | - |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | - |  | 2 | TargetPartyID | - |  | 2 | EquityPartyId | - |  |  |  |
| 4 | ClearingAccount | - |  | 4 | AuctionId | - |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | - |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | - |  | 64 | CrossType | - |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | - |  | 128 | CrossPrioritization | - |  | 128 | ClientIDAttr | - |  |  |  |
| 4 | 1 | MaturityDate | - |  | 10 | 1 | CrossId | - |  | 16 | 1 | FrequentTraderID | - |
| 2 | StrikePrice | - |  | 2 | AllocQty | - |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | - |  | 4 | GiveUpFirmID | - |  | 4 | ComboOrder | - |  |  |  |
| 8 | OpenClose | - |  | 8 | RoutingFirmID | - |  | 8 | Compression | - |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | - |  |  |  |
| 32 | CorrectedSize | - |  | 32 | CrossExclusionIndicator | - |  | 32 | FloorRoutingInst | - |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | - |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | - |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType | - |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID | - |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | - |  |  |  |
| 4 | ContraCapacity | - |  | 4 | OperatorId |  |  | 4 | Subreason | - |  |  |  |
| 8 | AttributedQuote | - |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | - |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | - |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | - |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Complex Instrument Accepted (C1, C2 and EDGX Only)

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | - |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | - |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | - |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | - |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | - |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | - |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | - |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | O |
| 2 | SymbolSfx |  |  | 2 | EchoText | - |  | 2 | LegMaturityDate | O |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | - |  | 4 | LegStrikePrice | O |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | - |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | - |  | 9 | 1 | MarketingFeeCode | - |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | - |  | 2 | TargetPartyID | - |  | 2 | EquityPartyId | - |  |  |  |
| 4 | ClearingAccount | - |  | 4 | AuctionId | - |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | - |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | - |  | 64 | CrossType | - |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | - |  | 128 | CrossPrioritization | - |  | 128 | ClientIDAttr | - |  |  |  |
| 4 | 1 | MaturityDate | - |  | 10 | 1 | CrossId | - |  | 16 | 1 | FrequentTraderID | - |
| 2 | StrikePrice | - |  | 2 | AllocQty | - |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | - |  | 4 | GiveUpFirmID | - |  | 4 | ComboOrder | - |  |  |  |
| 8 | OpenClose | - |  | 8 | RoutingFirmID | - |  | 8 | Compression | - |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | - |  |  |  |
| 32 | CorrectedSize | - |  | 32 | CrossExclusionIndicator | - |  | 32 | FloorRoutingInst | - |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | - |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | - |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType | - |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID | - |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | - |  |  |  |
| 4 | ContraCapacity | - |  | 4 | OperatorId |  |  | 4 | Subreason | - |  |  |  |
| 8 | AttributedQuote | - |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | - |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | - |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | - |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Complex Instrument Rejected (C1, C2, and EDGX Only )

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | - |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty | - |
| 2 | PegDifference |  |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty | - |  |  |  |
| 4 | Price | - |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty | - |  |  |  |
| 8 | ExecInst | - |  | 8 | Text |  |  | 8 | AvgPx | - |  |  |  |
| 16 | OrdType | - |  | 16 | Bid |  |  | 16 | DayAvgPx | - |  |  |  |
| 32 | TimeInForce | - |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | - |  | 64 | LargeSize |  |  | 64 | DrillThruProtection | - |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType | - |  |  |  |
| 2 | 1 | Symbol | - |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode | - |
| 2 | SymbolSfx |  |  | 2 | EchoText | - |  | 2 | LegMaturityDate | - |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | - |  | 4 | LegStrikePrice | - |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId | - |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | - |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader | - |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | - |  | 9 | 1 | MarketingFeeCode | - |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | - |  | 2 | TargetPartyID | - |  | 2 | EquityPartyId | - |  |  |  |
| 4 | ClearingAccount | - |  | 4 | AuctionId | - |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount |  |  | 32 | CmtaNumber | - |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | - |  | 64 | CrossType | - |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | - |  | 128 | CrossPrioritization | - |  | 128 | ClientIDAttr | - |  |  |  |
| 4 | 1 | MaturityDate | - |  | 10 | 1 | CrossId | - |  | 16 | 1 | FrequentTraderID | - |
| 2 | StrikePrice | - |  | 2 | AllocQty | - |  | 2 | SessionEligibility | - |  |  |  |
| 4 | PutOrCall | - |  | 4 | GiveUpFirmID | - |  | 4 | ComboOrder | - |  |  |  |
| 8 | OpenClose | - |  | 8 | RoutingFirmID | - |  | 8 | Compression | - |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination | - |  |  |  |
| 32 | CorrectedSize | - |  | 32 | CrossExclusionIndicator | - |  | 32 | FloorRoutingInst | - |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd | - |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin | - |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType | - |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID | - |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType | - |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID | - |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym | - |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode | - |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator | - |  |  |  |
| 4 | ContraCapacity | - |  | 4 | OperatorId |  |  | 4 | Subreason | - |  |  |  |
| 8 | AttributedQuote | - |  | 8 | TradeDate | - |  | 8 | CrossTradeFlag |  |  |  |  |
| 16 | ExtExecInst |  |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held | - |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker |  |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData | - |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime | - |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination | - |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID | - |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions |  |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty |  |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StopPxType Effective TBD | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

## List of Optional Fields

The following are descriptions of optional fields which may be sent or received.

| Field | Length | Data Type | Description |
|---|---|---|---|
| Account | 16 | Text | Corresponds to Account (1) in Cboe FIX. Characters in ASCII range 33-126 are allowed. Value is reflected back on Execution Reports. When clearing OCC, the value is passed to clearing in the Clearing Member Optional Data field (16 characters) and the Customer ID field (10 characters). When clearing Cboe Clear U.S., the value is passed in the Customer Account Number field. |
| AllocQty (C1 and EDGX only) | 4 | Binary | Corresponds to AllocQty (80) in Cboe FIX. Number of contracts for this party. |
| AttributedQuote | 1 | Alphanumeric | Optional. Allows for an order to be attributed to a firm's Executing Broker ID in Cboe market data feeds. On a `New Order Cross` and `New Order Cross Multileg` message, this field is only applicable to the Agency order. `N` = Do not attribute firm Executing Broker ID to this order (Default) `Y` = Attribute firm Executing Broker ID to this order `C` = Attribute ClientID only. `Z` = Attribute both ClearingFirm (EFID) and ClientID |
| AuctionId (C1, C2, and EDGX only) | 8 | Binary | Corresponds to AuctionId (9370) in Cboe FIX. Auction order identifier supplied by Cboe. This identifier corresponds to the identifiers used in Cboe market data products. |
| AutoMatch (C1 and EDGX only) | 1 | Alphanumeric | Corresponds to AutoMatch (9040) in Cboe FIX. Better-priced responses will be matched by the Contra side. Indicates the type of Auto Match the Contra Order will use. Mutually exclusive with LastPriority . Limit type Auto Match orders require AutoMatchPrice to be supplied. `0` = Disabled (Default) `1` = Market `2` = Limit `3` = Market. No starting price adjustments. `4` = Limit. No starting price adjustments. |
| AutoMatchPrice (C1 and EDGX only) | 8 | Binary Price | Corresponds to AutoMatchPrice (9044) in Cboe FIX. Sets the limit price at which the Contra Order will Auto Match. Required if AutoMatch = 2 (Limit) or 4 (Limit. No starting price adjustments) , ignored otherwise. Format is the same as Price. AutoMatchPrice is from the perspective of the Contra Side. Net Auction Price of the Strategy. Buy Orders: Positive Value, Debit Negative Value, Credit Even Order - 0 (Zero) Sell Orders: Positive Value, Credit Negative Value, Debit Even Order - 0 (Zero) |
| AvgPx | 8 | Binary Price | Corresponds to AvgPx (6) in Cboe FIX. Average price of executions for this order weighted by trade size. Zero if CumQty field is zero or if MultilegReportingType = 2. |
| BaseLiquidityIndicator | 1 | Alphanumeric | Indicates whether the trade added or removed liquidity. `A` = Added Liquidity `R` = Removed Liquidity `X` = Routed to Another Market `C` = Auction/Uncrossing |
| CancelOrigOnReject | 1 | Alpha | Corresponds to CancelOrigOnReject (9619) in Cboe FIX. Indicates handling of original order on failure to modify. `N` = Leave original order alone `Y` = Cancel original order if modification fails |
| Capacity | 1 | Alpha | Corresponds to OrderCapacity (47) in Cboe FIX. The capacity of the order. `C` = Customer `M` = Market Maker (this must be used for all Quote Update messages) `F` = Firm `U` = Professional Customer `N` = Away Market Maker `B` = Broker-Dealer `J` = Joint Back Office `L` = Non-Trading Permit Holder Affiliate (C1 and C2 only) |
| ClearingAccount | 4 | Text | Corresponds to OnBehalfOfSubID (116) and ClearingAccount (440) in Cboe FIX. Supplemental identifier. Recorded and made available in Execution Reports. Available via FIX Drop feeds. Value is passed through to clearing. When Capacity is set to ‘M’ or ‘N’ , this field should be filled with the desired market maker ID. When Capacity is set to ‘M’, any unregistered Market-Maker accounts in this field will cause an order to be rejected with a reason code of ‘A’ and sub-reason code ‘L’ and a quote to be rejected with a reason code of ‘C’. When using CMTA, this value is the market maker ID for the CMTA member instead of the Cboe member executing the trade. If Capacity is a value other than 'M' or 'N', this field can be blank or filled out with an optional string. |
| ClearingFirm | 4 | Alpha | Corresponds to OnBehalfOfCompID (115) Cboe FIX. EFID that will clear the trade. Port attribute value of ‘Default EFID’ is used if not provided. |
| ClearingOptionalData | 16 | Text | Corresponds to ClearingOptionalData (9324) in Cboe FIX. This field will be reflected back on Execution Reports including FIX Drop. Value is passed through to clearing. |
| ClientIDAttr | 4 | Text | Corresponds to ClientID (109) Cboe FIX. User defined identifier for quote attribution. |
| CMTANumber | 4 | Binary | Corresponds to ClearingFirm (439) in Cboe FIX. CMTA Number of the firm that will clear the trade. Must be specified for CMTA orders and left unspecified for non-CMTA orders. |
| ComboOrder (C1 only) | 1 | Alpha | Corresponds to ComboOrder (22005) in Cboe FIX. Declare the order as a Combo (for regulatory relief if trading SPX on the floor). `N` = (Default) No `Y` = Yes |
| Compression (C1 only) | 1 | Alpha | Corresponds to Compression (22006) in Cboe FIX. Order is a compression trade. `N` = (Default) No `Y` = Yes When CrossType (549) = `4` , this field should not be specified. |
| ContraCapacity | 1 | Alphanumeric | Capacity of the contra for this execution. See Capacity for allowed values. |
| ContraTrader | 4 | Alphanumeric | Corresponds to ContraTrader (337) in Cboe FIX. Only present on local book trades, not present on routed trades. Simple Instrument Fills Displays the EFID (Contra ClearingFirm ) of the contra side firm. This includes leg fill reports ( MultilegReportingType =2) that are sent as a result of a complex trade. For Cboe Options floor trades, displays the Contra Floor Acronym (C1 only) . Complex Package Fills ContraTrader will be sent and populated on electronic, complex package fills ( MultilegReportingType =3) when the contra side is also a complex order. When legging in to the simple books ContraTrader will be blank. ContraTrader will also be blank on complex package fills executed on the Cboe Options trading floor (C1 only) . |
| CorrectedSize | 4 | Binary | Corresponds to CorrectedSize (6655) in Cboe FIX. Number of shares after trade adjustment. |
| CrossExclusion Indicator (C1 and EDGX only) | 1 | Alpha | Corresponds to CrossExclusionIndicator (6438) in Cboe FIX. `N` = Contracts were executed in auction against Contra party or against a resting order when auction was initiated `Y` = Contracts were executed in auction against another party |
| CrossID (C1 and EDGX only) | 20 | Text | Corresponds to CrossID (548) in Cboe FIX. Day-unique identifier for the cross order chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes. |
| CrossInitiator (C1 and EDGX only) | 4 | Alpha | Corresponds to CrossInitiator (22026) in Cboe FIX. MPID field required on orders routed to destinations via NYSE Chicago using EquityExDestination (22016). Should be populated with the originator or routing broker MPID. May or may not be the same as the agency/contra MPID. Note that Broker Choice will be allowed on any stock/option order including orders of any ratio. |
| CrossOnBehalfOfID (C1 and EDGX only) | 4 | Alpha | Optional identifier of the initiating customer on orders routed to destinations via NYSE Chicago using EquityExDestination (22016). Populate with the order initiator’s MPID or any other identifier of choice. Should be populated if not the same broker specified in CrossInitiator (22026). Note that Broker Choice is allowed on any stock/option order including FLEX or Non-FLEX orders of any ratio. |
| CrossType | 1 | Alphanumeric | Corresponds to CrossType (549) in Cboe FIX. Type of auction order being submitted. This indicates the type of auction that will be initiated upon order entry. `1` = Automated Improvement Mechamism (AIM) `2` = Qualified Contingent Cross (QCC) `3` = Solicitation Cross (SAM) (C1 and EDGX only) `4` = Position Compression Cross (PCC)* (C1 Only) `5` = Related Futures Cross (RFC) (C1 Only) *Entry of SPX versus SPXW as a complex spread is not supported for PCC. |
| CrossPrioritization (C1 and EDGX only) | 1 | Alphanumeric | Corresponds to CrossPrioritization (550) in Cboe FIX. Indicates which side of the cross order will be prioritized for execution. This identifies the Agency side. `1` = Buy `2` = Sell |
| CumQty | 4 | Binary | Corresponds to CumQty (14) in Cboe FIX Cumulative quanity of contracts executed for the order over the life of the order, which may be multiple business days in the case of persisting GTC/GTD orders. Please refer the Complex Book Process Specification for special C1 Floor Specific Handling. |
| CustomGroupID | 2 | Binary | Corresponds to CustomGroupID (7699) in Cboe FIX for `New Order` and `Purge Orders` messages. Used to group orders for use in `Purge Orders` messages where multiple orders can be cancelled by specifying a list of CustomGroupIDs . |
| DayAvgPx | 8 | Binary Price | Corresponds to DayAvgPx (426) in Cboe FIX. Applicable to persisting GTC/GTD orders only. Average price per contract of executions on current business date. Zero if DayCumQty is zero. |
| DayCumQty | 4 | Binary | Corresponds to DayCumQty (425) in Cboe FIX. Applicable to persisting GTC/GTD orders only. Cumulative quantity of contracts executed for the order during the current business day. |
| DayOrderQty | 4 | Binary | Corresponds to DayOrderQty (424) in Cboe FIX. Applicable to persisting GTC/GTD orders only. Contracts remaning to be filled for the order at the beginning of the current business day (i.e., OrderQty - CumQty at the end of the previous business day). |
| DisplayIndicator | 1 | Alphanumeric | Corresponds to DisplayIndicator (9479) in Cboe FIX. `V` = Default. As determined by port level setting (default to S) `P` = Price Adjust `m` = Multiple Price Adjust `R` = Reject the order if it cannot be booked and displayed without adjustment. See Display Indicator Features for details on sliding options. |
| DisplayPrice | 8 | Binary Price | Only present when order is fully or partially booked. If the order has to be displayed at a less aggressive price for some reason, then that price will be reported here, otherwise equals Price. |
| DisplayRange | 4 | Binary | Corresponds to DisplayRange (8020) in Cboe FIX. Used for random replenishment of reserve orders. Random replenishment establishes a range of possible values for the order quantity that is to be displayed. For example, if MaxFloor = 2,000 and DisplayRange = 200, the displayed quantity will be selected from one of the following values: 1,800, 1,900, 2,000, 2,100, or 2,200. Must be specified in round lots. |
| DrillThruProtection (C1, C2, and EDGX only) | 8 | Binary Price | Corresponds to DrillThruProtection (6253) in Cboe FIX. Amount sender is willing to trade through the SNBBO. A zero price provides full SNBBO protection. The price should be entered as a non-negative value. Exchange default values are 5% of the opposite of the SNBBO, with a minimum value of $0.02, a maximum value of $2.00 for SPX/SPXW, and a maximum value of $0.25 for non-SPX/SPXW. Values provided on a `New Complex Order` message do not have a minimum or maximum. |
| EchoText | 64 | Text | Corresponds to Text (58) in Cboe FIX. Free format text string. May be echoed back on Cboe to Member messages. |
| EquityBuyClearingFirm (C1 and EDGX only) | 4 | Text | Corresponds to EquityBuyClearingFirm (22014) in Cboe FIX. Clearing firm on buy side of the equity trade associated with a QCC trade. Valid when CrossType = `2` . |
| EquityExDestination (C1 and EDGX only) | 1 | Alphanumeric | Corresponds to EquityExDestination (22016) in Cboe FIX. Valid when an equity symbol is present in the complex instrument. Exchange venue to which equity leg matching will be submitted. Supported values are: `C` = TD Securities (USA) LLC (default) `P` = Penserra via NYSE Chicago `F` = FOG Equities via NYSE Chicago `L` = Libucki & Co. via NYSE Chicago `S` = SRT Securities via NYSE Chicago If buyer and seller do not provide matching venues, the equity match will be reported to TD Securities (USA) LLC. |
| EquityLegShortSell (C1 and EDGX only) | 1 | Alphanumeric | Corresponds to EquityLegShortSell (22624) in Cboe FIX. `5` = Sell Short (for stock leg) `6` = Sell Short Exempt (for stock leg) |
| EquityPartyId (C1 and EDGX only) | 4 | Alpha | Corresponds to EquityPartyId (22008) in Cboe FIX. MPID used to clear the equity leg being cleared via the Exchange. |
| EquitySellClearingFirm (C1 and EDGX only) | 4 | Text | Corresponds to EquitySellClearingFirm (22015) in Cboe FIX. Clearing firm on sell side of the equity trade associated with a QCC trade. Valid when CrossType = `2` . |
| EquityTradePrice (C1 and EDGX only) | 8 | Binary Price | Corresponds to EquityTradePrice (22011) in Cboe FIX. Price at which the equity associated with a QCC trade. Valid when CrossType = `2` . |
| EquityTradeSize (C1 and EDGX only) | 4 | Binary | Corresponds to EquityTradeSize (22012) in Cboe FIX. Number of shares executed in the equity associated with a QCC trade. Valid when CrossType = `2` . |
| EquityTradeVenue (C1 and EDGX only) | 1 | Text | Corresponds to EquityTradeVenue (22013) in Cboe FIX. Exchange venue where equity associated with a QCC traded. Valid when CrossType = `2` . `A` = NYSE American `B` = Nasdaq Texas `C` = NYSE National `I` = Investors Exchange `J` = Cboe EDGA Exchange `K` = Cboe EDGX Exchange `M` = CHX `N` = NYSE `P` = NYSE Arca `Q` = Nasdaq `X` = Nasdaq PSX `Y` = Cboe BYX Exchange `Z` = Cboe BZX Exchange |
| EquityTransactTime (C1 and EDGX only) | 8 | DateTime | Corresponds to EquityTransactTime (22060) in Cboe FIX. Time of equity trade associated with a QCC trade. Valid when CrossType = `2` . |
| ExDestination | 1 | Text | Corresponds to ExDestination (100) in Cboe FIX. Used to specify the designated away venue for RoutStrategy = DIRC. `A` = NYSE ARCA `E` = Nasdaq ISE `F` = MIAX `P` = MIAX PEARL `D` = MIAX Emerald `G` = EDGX Options `H` = C2 `I` = IEX Options `J` = MX2 Options `K` = BOX `M` = MEMX `N` = Nasdaq `S` = Nasdaq Texas `U` = NYSE AMERICAN `W` = Cboe Options (C1) `X` = Nasdaq PHLX `Z` = BZX Options `g` = Nasdaq GEMX `m` = Nasdaq MRX `w` = MIAX Sapphire |
| ExecInst | 1 | Text | Corresponds to ExecInst (18) in Cboe FIX. `1` = Not held. Must be routed to the floor. (C1 only) `f` = Intermarket Sweep (Directed or Cboe) `r` = Settlement Liquidity 1 (C1 only) `G` = All or None (AON) (C1 and EDGX only) `s` = Sweep 2 (C1 and EDGX only) ASCII NULL (0x00) = no special handling 1 Requires TimeInForce = 2 and Price . 2 Used for `New Order Cross` and `New Order Cross` `Multileg` messages only. Requires CrossType = 1 (AIM). |
| ExecLegCFICode | 6 | Alphanumeric | Corresponds to LegCFICode (608) in Cboe FIX. CFI Code for leg on execution. `OP` = Options Put `OC` = Options Call `E` = Equity |
| ExpireTime | 8 | DateTime | Corresponds to ExpireTime (126) in Cboe FIX. Required for TimeInForce = 6 orders, specifies the date-time (in UTC) that the order expires. |
| FeeCode | 2 | Alphanumeric | Corresponds to FeeCode (9882) in Cboe FIX. Indicates fee associated with an execution. Fee codes are published in the pricing schedule. New fee codes may be sent with little or no notice. Members are encouraged to code their systems to accept unknown fee codes. |
| FloorDestination (C1 only) | 4 | Text | Corresponds to FloorDestination (22100) in Cboe FIX. Specifies a default PAR workstation (ex. W001) to route to on the floor (or ‘PARO’ to route to the Floor PAR Official of the underlying symbol) if not specified on inbound messages. |
| FloorRoutingInst (C1 only) | 1 | Alphanumeric | Corresponds to FloorRoutingInst (22303) in Cboe FIX. `D` = Direct (do not attempt to process electronically) 1 `E` = Electronic only `X` = Route to floor if unable to process electronically 1 <blank> = Port level default The default value for any given port can be changed by requesting an update to the "Default FloorRoutingInst" port attribute. 1 When FloorRoutingInst is D or X, RoutingInst must be set to B or R for simple orders; or B for complex instruments. |
| FrequentTraderID (C1 only) | 6 | Text | Corresponds to FrequentTraderId (21097) in CFE FIX. Identifies the frequent trader program in which the order is participating. |
| GiveUpFirmID (C1 and EDGX only) | 4 | Alpha | Corresponds to GiveupFirmID (9946) in Cboe FIX. For the Agency Side, this field must equal the value of ClearingFirm (EFID). Each Contra allocation will use this field instead of ClearingFirm for clearing information. |
| Held (C1 only) | 1 | Alpha | Corresponds to Held (20012) in Cboe FIX. Indicates if order should be designated as 'Held' upon order entry. `N` = Mark order as Not Held `Y` = Mark order as Held Default value is 'N' if the order is direct routed to a Non-PAR Official on the floor. |
| LastPriority (C1 and EDGX only) | 1 | Alphanumeric | Corresponds to LastPriority (9849) in Cboe FIX. When enabled, allocation will go to other participants’ responses before requiring the Contra Order to satisfy remaining contracts of the Agency Order. Mutually exclusive with AutoMatch . `0` = Disabled (Default) `1` = Enabled |
| LastPx | 8 | Binary Price | Corresponds to LastPx (31) in Cboe FIX. Price of this fill. |
| LastShares | 4 | Binary | Corresponds to LastShares (32) in Cboe FIX. Executed share quantity. |
| LeavesQty | 4 | Binary | Corresponds to LeavesQty (151) in Cboe FIX. Quantity still open for further execution. If zero, the order is complete. |
| LegCFICode (C1, C2, and EDGX only) | 6 | Alphanumeric | Corresponds to LegCFICode (608) in Cboe FIX. CFI Code for leg. `OP` = Options Put `OC` = Options Call `E` = Equity (C1 and EDGX only) |
| LegMaturityDate (C1, C2, and EDGX only) | 4 | Date | Corresponds to LegMaturityDate (611) in Cboe FIX. Required if LegSymbol is in OSI format. |
| LegPositionEffectsExt | 16 | Alpha | Indicates status of the client position in the option for each complex option leg. This value String of characters ‘O’, ‘C’, and ‘N’, is equal in length to the number of option legs of the instrument. If an equity leg is present it will always be the last leg, and the position effect must be set to ‘N’. `O` = Open `C` = Close `N` = None* *Orders with Capacity = `M` or `N` or will not be required to specify a position effect on their orders or may specify a value of ‘N’, in which case a <blank> will be sent to clearing. If the leg is limited to closing only transactions, only Capacity = `M` will be permitted to submit OpenClose = `O` if the order has TimeInForce = `3` (IOC) and RoutingInst = `B` . If this field is present it will be used instead of the LegPositionEffects field in the `New Cross Order Multileg` message. This field is intended to be used with complex instruments containing greater than 12 legs, however it can be used with a complex instrument with 12 or fewer legs. |
| LegStrikePrice (C1, C2, and EDGX only) | 8 | Binary Price | Corresponds to LegStrikePrice (612) in Cboe FIX. Option strike price. System maximum is 999,999.99. Must be non-negative. Required if LegSymbol is in OSI format. |
| MarketingFeeCode (C1 and EDGX only) | 2 | Alphanumeric | Corresponds to MarketingFeeCode (5937) in Cboe FIX. `P` = Penny Pilot `N` = Non-Penny Pilot `X` = Not Eligible for Marketing Fees |
| MassCancelID | 20 | Text | Corresponds to MassCancelID (7695) in Cboe FIX. If the populated value ends in a space the message will be rejected. Mass cancel requests containing a currently outstanding MassCancelID will be rejected. This field will be echoed back in the resulting response message when the single acknoweldgement style is selected. |
| MassCancelInst | 16 | Text | Corresponds to MassCancelInst (7700) in Cboe FIX. Used for specification of `Purge Orders` message functionality and optionally used for specification of Mass Cancel functionality associated with the `Cancel Order` message. At least one character must be provided (Clearing Firm Filter). Contiguous characters must be specified up to total length. Truncated/unspecified characters will default to values indicated (D) below. EFID values specified in OnBehalfOfCompId that are not allowed to clear for the firm will be rejected. 1 st Character: Clearing Firm Filter `A` = No filtering by clearing firm relationship is performed. `F` = All orders that were sent under the clearing relationship specified in ClearingFirm optional field. If ‘F’ specified and the ClearingFirm field is not provided, the Mass Cancel or Purge Orders message will be rejected. If ‘F’ specified and the ClearingFirm field is provided but is blank (NULL), the Mass Cancel or Purge Orders message will be treated like ‘A’, and no filtering by clearing firm relationship is performed. 2 nd Character: Acknowledgement Style `M` = (D) Order Cancelled messages are sent for each cancelled order. If ‘M’ is set and the MassCancelID optional field is specified but the value is not blank (NULL), then the Mass Cancel message will be rejected. For a Purge Orders message ‘M’ will be accepted with a non-blank MassCancelID value. `S` = A single Mass Cancel Acknowledgement message is sent once all cancels have been processed. The MassCancelID optional field must be specified or the Mass Cancel or Purge Orders message will be rejected. `B` = Both individual Order Cancelled and Mass Cancel Acknowledgement messages will be sent. Also requires MassCancelID optional filed to be specified or the Mass Cancel or Purge Orders message will be rejected. `A` = A single Mass Cancel Acknowledgement message is sent to the purge port and one Purge Notification message for each matching unit with cancelled orders is sent to the order entry ports that originated those orders. The message type must be Purge Orders message; Mass Cancel messages specifying this style will be rejected. The CancelledOrderCount field of the purge port message will contain a count of all cancelled orders. The same field of the order entry port messages will contain a count of all cancelled orders from the specified matching unit that originate from the port. The MassCancelID optional field must be specified or the Purge Orders will be rejected. `I` = A single Mass Cancel Acknowledgement message is sent for each matching unit impacted in a multi-unit cancel. The message type must be Purge Orders; Mass Cancel messages specifying this style will be rejected. A final acknowledgement is sent when the last matching unit has completed all requested cancellations. MassCancelId (7695) must be specified, or the Purge Order will be rejected . 3 rd Character: Lockout Instruction `N` = (D) No lockout `L` = Lockout until corresponding a risk reset is received. Lockout can be used only with Clearing Firm Filter set to ‘F’, otherwise the Mass Cancel or Purge Orders message will be rejected. Lockout will apply to all new orders for the ClearingFirm (and ProductName or CustomGroupIDs , if specified), regardless of other filtering in the Purge Orders or Cancel Order message. Effective 09/28/26, Mass Cancel messages with Lockout Instruction = L will be rejected. 4 th Character: Instrument Type Filter (C1, C2, and EDGX Only) `B` = (D) Cancel both single leg and complex orders `S` = Cancel single leg orders only `C` = Cancel complex orders only 5 th Character: GTC Order Filter `C` = (D) Cancel GTC and GTD orders `P` = Don’t cancel (preserve) GTC and GTD orders If the RiskRoot optional field is specified, it must contain a valid symbol (e.g., ‘MSFT’), in which case only orders associated with the specified RiskRoot will be cancelled. A self-imposed lockout can be released using the RiskReset field of the `New Order` or `New Complex Order` message or by sending a `Reset Risk` message. If RiskRoot optional field is specified, a symbol level reset is required, otherwise a EFID level reset is required to release a lockout. For more information, see the Cboe Titanium U.S. Options Risk Management Specification . If a risk limit is tripped or manually locked out at the end of the RTH session, the trip/lockout will persist into the Curb session (C1 only) . |
| MatchingUnit | 1 | Binary | Corresponds to MatchingUnit (25017) in Cboe FIX. Matching unit number the `Purge Orders` message will be sent toward. If blank or 0, the `Purge Orders` message will be sent to all units. Incompatible with symbol-level purges, specifying both symbol and MatchingUnit will cause the `Purge Orders` message to be rejected. If both MassCancelInst lockout instruction = `L` and MatchingUnit are specified, a lockout will occur and will impact only the specified matching unit. Subsequent risk resets will clear risk locks on all units. |
| MaturityDate | 4 | Date | Corresponds to MaturityMonth (200) and MaturityDay (205) in Cboe FIX. |
| MaxFloor | 4 | Binary | Corresponds to MaxFloor (111) in Cboe FIX. Portion of OrderQty to display. The balance is reserve. Zero displays the entire quantity. The displayed quantity of each order at a price level is decremented first. When displayed quantity is fully decremented, it is reloaded up to MaxFloor from reserve. `Default` = 0 An order with a MaxFloor greater than 0 will be rejected for Cboe proprietary classes (such as DJX, RUT, SPX, XSP, and VIX). |
| MinQty | 4 | Binary | Corresponds to MinQty (110) in Cboe FIX. Minimum fill quantity for IOC orders which only interact with liquidity on the target book. Ignored for other orders. |
| MultiClassSprd (C1 only) | 1 | Alpha | Indicates an option is part of a multi-class spread. `N` = (Default) No `Y` = Yes |
| MultilegReportingType (C1, EDGX, and C2 only) | 1 | Alphanumeric | Corresponds to MultilegReportingType (442) in Cboe FIX Indicates the type of `Order Execution` message. `1` = Single-leg instrument `2` = Individual leg of multi-leg instrument `3` = Entire multi-leg instrument package `4` = Last individual leg of multi-leg instrument |
| NoOfSecurities (C1, C2, and EDGX only) | 4 | Binary | Corresponds to NoOfSecurities (8641) in Cboe FIX. Indicates the number of securities created by the member in this trading session. |
| OpenClose | 1 | Alphanumeric | Corresponds to OpenClose (77) in Cboe FIX. Indicates status of client position in the option. `O` = Open `C` = Close `N` = None* *Orders with Capacity = `M` or `N` will not be required to specify OpenClose on their orders. A value of `N` may optionally be specified unless the series is limited to closing only. If the series is limited to closing only transactions, only Capacity = `M` will be permitted to submit OpenClose = `O` if the order has TimeInForce = `3` (IOC) and RoutingInst = `B` , or the order has RoutingInst = `P` . An Open position cannot trade with an Open position for series limited to Closing Only transactions, even if the inbound IOC from the aggressing market maker is sent with that combination of tags. |
| OrderOrigin (C1 only) | 3 | Alphanumeric | Corresponds to OrderOrigin (9465) in Cboe FIX. Floor acronym of Market Maker on whose behalf this order is being entered by a floor broker. |
| OrderQty | 4 | Binary | Corresponds to OrderQty (38) in Cboe FIX. Order quantity. System limit is 999,999 contracts. |
| OrdType | 1 | Alphanumeric | Corresponds to OrdType (40) in Cboe FIX. `1` = Market `2` = Limit (default) `3` = Stop `4` = Stop Limit Stop/Stop Limit orders must be set to TimeInForce = `0` (DAY), `1` (GTC), or `6` (GTD). Note market and stop/stop limit orders are not supported during GTH or Curb sessions. |
| OrigClOrdID | 20 | Text | Corresponds to OrigClOrdID (41) in Cboe FIX. |
| OrigCrossID | 20 | Text | Corresponds to OrigCrossID (551) in Cboe FIX. |
| ORS (C1 only) | 1 | Alpha | Corresponds to ORS (22003) in Cboe FIX. Order router subsidy eligibility (used for billing purposes). `N` = (Default) No `Y` = Yes |
| PreventMatch | 3 | Alpha | Corresponds to PreventMatch (7928) in Cboe FIX. Three characters: 1 st character - MTP Modifier: `N` = Cancel Newest `O` = Cancel Oldest `B` = Cancel Both `S` = Cancel Smallest `D` = Decrement larger / Cancel Smaller `d` = Same as D above, but only decrement LeavesQty. Do not restate OrderQty 2 nd character - Unique ID Level: `F` = Prevent Match at Firm(Member) Level `M` = Prevent Match at EFID Level 3 rd character - Trading Group ID (optional): Member specified alphanumeric value 0-9, A-Z, or a-z. The Unique ID level (character 2) of both orders must match to prevent a trade. If specified on both orders, Trading Group ID (character 3) must match to prevent a trade. The MTP Modifier (character 1) of the inbound order will be honored, except that if the inbound order specifies Decrement and the resting order does not, and the resting order is larger, then both orders will be cancelled. This exception is to protect the order entry software for the resting order from receiving an unexpected restatement message. If order entry software is prepared to handle unexpected restatement messages, this exception may be overridden at the port level by requesting "Allow MTP Decrement Override" functionality. Uses of MTP Modifier `D` or `d` ( and users of "Allow MTP Decrement Override" functionality must be prepared to receive an `Order Restated` message that decrements LeavesQty (and, for method `D` , OrdQty as well). On a `New Order Cross` message, only `N` and `O` are supported for the MTP modifier. MTP instructions on AIM orders will be used to prevent executions against AIM responses only; they will permit executions against resting or unrelated orders. Responses may only employ N (Cancel Newest) in which case the response will be cancelled and the auction order will continue. On a `New Order Cross` message, this field is only applicable to the Agency order. |
| Price | 8 | Binary Price | Corresponds to Price (44) in Cboe FIX. Limit price. Required for limit orders ( OrdType = 2). If specified on market orders ( OrdType = 1), the order will be rejected. This field is also used to specify an optional cap price for pegged orders. For complex orders, net pricing of the strategy. Four implied decimal places. (EDGX and C2 only) Buy orders: Positive value, Debit Negative value, Credit Even order, 0 (Zero) Sell orders: Positive value, Credit Negative value, Debit Even order, 0 (Zero) |
| PriceType (C1 only) | 1 | Alphanumeric | Corresponds to PriceType (423) in Cboe FIX. `0` = Fixed cabinet trade price `2` = (Default) Price per unit (contract) `3` = Fixed amount (cash spread pricing) - only for complex orders routed to the floor |
| PutOrCall | 1 | Alphanumeric | Corresponds to PutOrCall (201) in Cboe FIX. `0` = Put `1` = Call |
| RevisedLegs (C1, C2, and EDGX only) | 1 | Alphanumeric | Indicates if the legs on the created complex strategy have been reordered from the original request. If the legs were reordered, the order of the OpenClose fields on a `New Complex Order` message must be the order returned by the exchange, not the order from the original request. `1` = Legs were not reordered `2` = Legs were reordered |
| RiskReset | 8 | Text | Corresponds to RiskReset (7692) in Cboe FIX. For use by customers using Cboe's Risk Management tools to reset or release EFID Group, EFID, Risk Root, or Custom Group ID level lockout conditions resulting from risk profile trips or self-imposed lockouts issued via `Cancel Order` or `Purge Orders` messages. Single Character Values - with counter reset: `S` = Risk Root level risk/lockout reset `F` = EFID level risk/lockout reset `C` = CustomGroupID lockout reset `G` = EFID Group level risk/lockout reset Single Character Values - without counter reset: `T` = Risk Root-level self-imposed lockout reset `E` = EFID self-imposed lockout reset Values may be combined together to allow for resets of multiple risk trips or self-imposed lockouts in a single message. For example, ‘GS’, ‘SC’, ‘FC’, and ‘SFC’ are all acceptable values. The single character values with no counter reset will release a self-imposed lockout condition only without resetting any counters related to active risk rules. This may be useful for time based risk rules where the lockout may be released without resetting any risk values being tracked back to zero. If a conflicting value is provided the lockout release with counter reset will take precedence. For example, ‘ST’ will release any lockout and reset any applicable root-level rule counters to zero. When a resting or inbound order is executed and a Risk Root level risk profile limit is reached, resting orders on the associated Risk Root will be cancelled and inbound orders on the Risk Root will be rejected until this field is filled with the value S on a subsequent `New Order` or `New Complex Order` message corresponding to a symbol on the same Risk Root. All active Risk Root level rules in the risk profile are reset at this time. Individual rules cannot be reset on their own. If an EFID-level rule is tripped, this tag can be filled with the value ‘F’ to reset all EFID-level rules. While this will reset EFID-level rules, it is possible that both EFID and Risk Root level rules are currently tripped. Setting this field to ‘F’ will not clear Risk Root-level rules and the order may still be rejected. To clear both Risk Root and EFID-level rules, set this field to ‘SF’ to reset all associated Risk Root and EFID-level lockouts. If orders have been locked out at the CustomGroupID level, inbound orders for the locked CustomGroupID will be rejected until this field is filled with a ‘C’ value on a `New Order` or `New Complex` message order that uses the locked CustomGroupID . EFID and EFID Group resets are not allowed by default . Customers should contact the Cboe Trade Desk to reset these limits or request a change to the "EFID Risk Reset" port setting using the Logical Port Request form. If a risk limit is tripped or manually locked out at the end of the RTH session, the trip/lockout will persist into the Curb session (C1 only) . For more information, see the Cboe Titanium U.S. Options Risk Management Specification . |
| RiskRoot | 6 | Text | Corresponds to Symbol (55) in Cboe FIX. The underlying symbol. |
| RouteDeliveryMethod | 3 | Text | Corresponds to RouteDeliveryMethod (9350) in Cboe FIX. `RTI` = Route to improve (default if not specified). Ability to receive price improvement will take priority over speed of execution. `RTF` = Route to Fill. Speed of execution will take priority over potential price improvement. Only applicable to RoutStrategy = ROUT |
| RoutingFirmID | 4 | Alpha | Corresponds to RoutingFirmID (7933) in Cboe FIX. Used to optionally convey the routing firm of the order. If supplied, value must be a valid member EFID. May be combined with MassCancelInst with Firm Filter set to ‘F’ in a mass cancel request. |
| RoutingInst | 4 | Text | Corresponds to RoutingInst (9303) in Cboe FIX. 1 st character: `B` = Book Only (not routable, will remove from local book) `P` = Post Only (not routable)* `R` = Routable `S` = Super Aggressive - Cross or Lock (order will be removed from the book and routed to any quote that is locking or crossing the order) `X` = Aggressive - Cross Only (order will be removed from the book and routed to any quote that is crossing the order 2nd character: ( C1, EDGX , and effective 09/04/26 C2 only ) `L` = Do Not Expose order via Step-Up Mechanism (SUM) `S` = Expose order via Step Up Mechanism (SUM)** *Post Only orders with DisplayIndicator (9479) = R will be cancelled back even if they would be immediately executable with price improvement (C1, C2, and EDGX only) . **Routable Orders identified with RoutingInst = R, RS, S, SS, X, or XS, RoutStrategy = ROUT, and AuctionId not supplied, or Non-Routable Orders identified with RoutingInst = BS, ExecInst not f, TimeInForce not 4, and MinQty not supplied will participate in the Step-Up Mechanism (SUM) before routing, booking, or cancelling back. |
| RoutingInst (Complex) (C1, C2, and EDGX only) | 4 | Text | Corresponds to RoutingInst (9303) in Cboe FIX. 1 st character: `B` = Book Only (will remove from local book), allowed to interact with both single-leg and other complex orders. `D` = Complex Book Only, allowed to interact with other complex orders only.* `P` = Post Only (adds liquidity only) 2 nd character: `L` = Do Not Expose order via Complex Options Auction (COA) `S` = Expose order via Complex Options Auction (COA)** *Only valid if TimeInForce = Day or IOC, otherwise rejected. **All non-IOC complex orders will be eligible for COA unless otherwise specified. |
| RoutStrategy | 6 | Text | Corresponds to RoutStrategy (9400) in Cboe FIX. All exchanges: `ROUT` = Book + Street `DIRC` = Book + Directed IOC or Directed ISO if ExecInst = f* `SWPA` = (default) Book + Sweep Street * ExDestination must also be populated. Must be specified when sending non-book only ISO, otherwise the order will be rejected. |
| SecondaryExecID (C1, C2, and EDGX only) | 8 | Binary | Indicates whether a fill or partial fill is a complex instrument fill or a single leg fill that comprises a complex execution. If SecondaryExecID (527) is not present, the fill is a single leg fill only. If SecondaryExecID is present and is the same as the ExecID (17), the fill represents a complex execution for which associated single leg fills will follow. Single leg fills associated with a complex execution will contain a SecondaryExecID of the associated complex execution. |
| SecondaryOrderID | 8 | Binary | Corresponds to SecondaryOrderID (198) in Cboe FIX. Denotes an alternative OrderID which is present on Cboe market data feeds (for example, to hide that a reserve (iceberg) order has reloaded). Or, OrderID of the contra side of a prevented match. |
| SendTime | 8 | DateTime | UTC timestamp when the mass cancel or purge was sent by the Market Maker to the Exchange. This timestamp is required to be at least in millisecond granularity but the CAT NMS Plan requires Industry Members to report the SendTime with the finest increment supported by the Industry Member. This is required to be populated whenever a mass cancel or purge message is expected to cancel one or more Market Maker ( capacity =M) quotes that were submitted using the `Quote Update` message so that the appropriate timestamp can be captured and sent to the CAT. This field must be populated on all Cancel Order and `Purge Order` messages. |
| SenderLocationID (C1 only) | 1 | Alphanumeric | Corresponds to SenderLocationID (142) in Cboe FIX. `F` = Floor <blank> = (or not present) for electronic execution. |
| SessionEligibility (C1 only) | 1 | Alpha | Corresponds to SessionEligibility (22017) in Cboe FIX. `R` = (default) Order participates in Regular Trading Hours `A` = Order participates in both Global and Regular Trading Hours. Also allows for participation in Curb Trading Session. `B` = Order participates in both RTH and Curb Session. |
| Side | 1 | Alphanumeric | Corresponds to Side (54) in Cboe FIX. `1` = Buy `2` = Sell `5` = Sell Short (stock leg only) (C1 and EDGX only) `6` = Sell Short Exempt (stock leg only) (C1 and EDGX only) |
| StopPx | 8 | Binary Price | Corresponds to StopPx (99) in Cboe FIX. For simple orders: Stop price. Required if OrdType = 3 (Stop) or 4 (Stop Limit). Stop and Stop Limit orders will only be triggered off Last Sale Eligible trades. Stop/Stop Limit orders will only elect based off of RTH quotes and trades. For complex orders (effective TBD) : The trigger price for stop-limit complex orders. Required if OrdType (40) = 4. Only one trigger condition can be designated per order. The stop limit trigger conditions are as follows: Net price of the complex strategy: an order will trigger when either the same side Market-Maker SBBO equals or betters the designated threshold price, or a trade in the same complex instrument occurs via COB, COA, AIM, SAM, or PAR at or better than the designated threshold price. Underlying price : an order will trigger when a designated threshold price of the underlying security is either (i) at or above the underlying price or index level or (ii) at or below the underlying price or index level. For (i) the underlying price designated must be higher, and for (ii) the underlying price designated must be lower, than the current value of the equity same side NBBO or index level. If not, the order will be rejected. Equity: triggers when the underlying security bid (ask) is equal to or higher (lower) than the designated stop price, or a trade occurs at a price equal to or higher (lower) than the stop price. Index: triggers when the underlying index level is equal to or higher (lower) than the designated threshold price. This trigger does not include any bid/ask component. |
| StopPxType (effective TBD) | 1 | Text | Indicates what kind of stop price is being sent. `L` = Fixed limit price `B` = Fixed underlying bid price or index level (complex orders only) `A` = Fixed underlying ask price or index level (complex orders only) |
| StrategyID (C1 only) | 1 | Alphanumeric | Corresponds to StrategyID (22002) in Cboe FIX. Used to declare when a strategy is used. `C` = Conversion `R` = Reversal `M` = Merger `S` = Short stock interest `J` = Jelly roll `F` = CompressionForum `B` = BoxSpread `A` = BoxSwap |
| StrikePrice | 8 | Binary Price | Corresponds to StrikePrice (202) in Cboe FIX. Strike Price for option, 0 - 999,999.99 |
| SubLiquidityIndicator | 1 | Alphanumeric | Additional information about an execution. Cboe may add additional values without notice. Members must gracefully ignore unknown values. ASCII NUL (0x00) = No Additional Information `S` = Execution from order that set the NBBO `B` = Step Up Mechanism (C1 and EDGX Only) `U` = Market Turner (C1 Only) `b` = AIM (C1 and EDGX Only) `C` = Carried `D` = Done For Day `Q` = QCC (C1 and EDGX Only) `s` = SAM (C1 and EDGX Only) |
| Subreason | 1 | Alphanumeric | Additional detail for an order reject or cancellation. Corresponds to the first character in Subreason (22058) in Cboe FIX. See Order Reason Codes for a list of possible subreasons. |
| Symbol | 8 | Alphanumeric | Corresponds to Symbol (55) in Cboe FIX. Entire Cboe format symbol |
| TargetPartyID (C1 and EDGX only) | 4 | Alpha | Corresponds to TargetPartyID (1462) in Cboe FIX. A valid Parent ID of the Directed Market Maker (EDGX only) or Preferred Market Maker (C1 only) . Required for directed orders. On a `New Order Cross` message, this field is only applicable to the Agency order. |
| TiedHedge (C1 only) | 1 | Alpha | Corresponds to TiedHedge (22018) in Cboe FIX. Order is a tied hedge. `N` = (Default) No `Y` = Yes |
| TimeInForce | 1 | Alphanumeric | Corresponds to TimeInForce (59) in Cboe FIX. `0` = Day - (Default) Expires at end of market day. `1` = GTC* - Remains in system until executed, cancelled or option expires. `2` = At the Open - Will remain queued and only interact in the Cboe Opening Process (C2 and EDGX only) or the Cboe Opening Auction (C1 only). `3` = IOC - Portion not filled immediately is cancelled. Market orders are implicitly IOC for non-complex orders. `4` = FOK - An IOC where the entire size must be filled, else the order will be cancelled back. Not compatible with Step-Up Mechanism (SUM). `6` = GTD* - Expires at specified ExpireTime for a specified day. `7` = At the Close - Orders held for execution until 180 seconds before series is scheduled to close. *Bulk Quoting Ports only support TimeInForce = Day or GTD with a same day expiration on C1, C2, and EDGX. |
| TradeDate | 4 | Date | Corresponds to TradeDate (75) in Cboe FIX. |
| TradeThroughAlertType (C1 only) | 1 | Alphanumeric | Corresponds to TradeThroughAlertType (21098) in Cboe FIX. Indication of a type of trade through. `0` = No trade through `1` = NBBO `2` = BBO (local best bid or offer) `3` = SBBO (market quote of complex derived by legs) `4` = Book trade through (trade through customer size) `5` = Due Dilligence trade through |
| WorkingPrice | 8 | Binary Price | Corresponds to WorkingPrice (9690) in Cboe FIX. Only present if an order is fully or partially booked. If price had to be adjusted to a less aggressive value for some reason, the adjusted price will be reported here, otherwise equals price. |

## Reason Codes

### Order Reason Codes

The following is a list of all order related reason codes used by Cboe. These reason codes are used in a variety of contexts (order cancellations and order rejections). All reasons are not valid in all contexts. The reason code will be followed by free form text. The specific text the system delivers may vary from the text listed below, to provide clarification of the reject reason. Cboe may add additional reason codes without notice. Members must gracefully ignore unknown values.

| Code | Description |
|---|---|
| A | Admin |
| D | Duplicate identifier (e.g., ClOrdID) |
| F | Could not reflect to consolidated quote (OPRA) |
| H | Halted |
| I | Incorrect data center |
| J | Too late to cancel |
| K | Order rate threshold exceeded |
| L | Order would lock or Cross NBBO |
| M | Order size exceeded |
| N | Ran out of liquidity to execute against |
| O | ClOrdID doesn't match a known order |
| P | Can't modify an order that is pending fill |
| Q | Waiting for first trade |
| R | Routing Unavailable |
| T | Fill would trade through the NBBO |
| U | User requested |
| V | Would wash |
| W | Add liquidity only order would remove |
| X | Order expired |
| Y | Symbol not supported |
| Z | Unforeseen reason |
| c | Only Close transactions accepted |
| f | Risk management EFID or Custom Group ID level |
| m | Market access risk limit exceeded |
| o | Max open orders count exceeded |
| r | Reserve reload |
| s | Risk management risk root level |
| w | Would remove on unslide |
| x | Crossed market |
| y | Order received by Cboe during replay |
| z | Session End |
| + | Risk management EFID Group level |
| 4 | After volatility cutoff |

### Quote Reason Codes

The following is a list of all quote reason codes used by Cboe. All reasons are not valid in all contexts. The reason code will be followed by free form text. The specific text the system delivers may vary from the text listed below, to provide clarification of the reject reason. Cboe may add additional reason codes without notice. Members must gracefully ignore unknown values.

| Code | Description |
|---|---|
| C | Invalid EFID (ClearingFirm) |
| D | Invalid WashId |
| E | Invalid SessionEligibility |
| F | Not enabled for quotes |
| I | Incorrect data center |
| L | Invalid QuoteCnt |
| M | Symbols not on same matching engine |
| P | Invalid PostingInstruction |
| Q | Invalid QuoteUpdateID |
| R | Risk root does not match across quotes |
| S | Symbol not found |
| U | Message unable to be sent to Matching Engine |
| W | Invalid WashPreventType |
| a | Admin |
| c | Invalid Capacity |
| d | Close only |
| f | Risk management EFID or Custom Group ID level |
| m | Invalid WashMethod |
| n | Exceedes max notional value per order |
| o | Invalid Open/Close |
| p | Risk management risk root level |
| r | Invalid Remove |
| s | Invalid Side |
| t | Invalid SendTime |
| u | Symbol range unreachable |
| x | Exceeds max size per order |
| y | Quote received by Cboe during replay |

### Order and Quote Subreason Codes

The following is a list of subreason codes used to indicate additional detail for order rejections or cancellations. The code will be followed by free form text. The specific text the system delivers may vary from the text listed below, to provide clarification of the reject or cancel reason. Cboe may add additional values without notice. Users must gracefully ignore unknown values.

| Code | Description |
|---|---|
| A | Purge/mass cancel EFID level by user |
| B | Purge/mass cancel Symbol level by user |
| C | Purge/mass cancel Custom Group ID level by user |
| E | EFID level lockout by Cboe Trade Desk admin |
| J | Firm disconnect |
| K | ME disconnect |
| L | Unregistered MM Account |
| S | Minimum size requirement not met |
| T | Cboe Trade Desk admin |
| f | Risk management EFID level by rule |
| s | Risk management Symbol level by rule |
| + | Risk management EFID Group level by rule |

## List of Message Types

**Table 1. Member to Cboe**

| Message Name | Level | Type | Sequenced |
|---|---|---|---|
| `Login Request` | Session | `0x37` | No |
| `Logout Request` | Session | `0x02` | No |
| `Client Heartbeat` | Session | `0x03` | No |
| `New Order` | Application | `0x38` | Yes |
| `New Order Cross` | Application | `0x41` | Yes |
| `New Complex Order` | Application | `0x4B` | Yes |
| `New Order Cross Multileg` | Application | `0x5A` | Yes |
| `Cancel Order` | Application | `0x39` | Yes |
| `Modify Order` | Application | `0x3A` | Yes |
| `Quote Update` | Application | `0x55` | Yes |
| `Reset Risk` | Application | `0x56` | Yes |
| `Quote Update (Short)` | Application | `0x59` | Yes |
| `Purge Orders` | Application | `0x47` | Yes |
| `New Complex Instrument` | Application | `0x4C` | Yes |

**Table 2. Cboe to Member**

| Message Name | Level | Type | Sequenced |
|---|---|---|---|
| `Login Response` | Session | `0x24` | No |
| `Logout` | Session | `0x08` | No |
| `Server Heartbeat` | Session | `0x09` | No |
| `Replay Complete` | Session | `0x13` | No |
| `Order Acknowledgment` | Application | `0x25` | Yes |
| `Cross Order Acknowledgment` | Application | `0x43` | Yes |
| `Order Rejected` | Application | `0x26` | No |
| `Cross Order Rejected` | Application | `0x44` | No |
| `Order Modified` | Application | `0x27` | Yes |
| `Order Restated` | Application | `0x28` | Yes |
| `User Modify Rejected` | Application | `0x29` | No |
| `Order Cancelled` | Application | `0x2A` | Yes |
| `Cross Order Cancelled` | Application | `0x46` | Yes |
| `Cancel Rejected` | Application | `0x2B` | No |
| `Order Execution` | Application | `0x2C` | Yes |
| `Trade Cancel or Correct` | Application | `0x2D` | Yes |
| `Purge Rejected` | Application | `0x48` | No |
| `Mass Cancel Acknowledgment` | Application | `0x36` | No |
| `Complex Instrument Accepted` | Application | `0x4D` | Yes |
| `Complex Instrument Rejected` | Application | `0x4E` | No |
| `Quote Update Acknowledgment` | Application | `0x51` | Yes |
| `Quote Restated` | Application | `0x52` | Yes |
| `Quote Cancelled` | Application | `0x53` | Yes |
| `Quote Execution` | Application | `0x54` | Yes |
| `Risk Reset Acknowledgment` | Application | `0x57` | No |
| `Quote Update Rejected` | Application | `0x58` | No |

## BOE Port Attributes

The table below lists BOE port attributes that are configurable on the port or firm level. Changes to these attributes can be made by contacting the Cboe Trade Desk. Port Attribute changes made intra-day by the Cboe Trade Desk will not affect existing quotes or orders. In order for the desired intra-day port attribute to be applied to existing quotes or orders, you must first cancel or send a quote with zero price and size and then re-enter the order or quote.

| Attribute | Default | Description |
|---|---|---|
| Allow Directed ISO * | Yes | Allow or disallow ISO orders directed to other market centers. |
| Allow ISO * | Yes | Allow or disallow ISO orders. |
| Allow MTP Decrement Override * ^ | No | Overrides the exception that requires both the resting and inbound order to be marked as "Decrement". |
| Allow Sponsored Participant MTP Control *^ | No | Allow Sponsored Participant to override port default for match trade prevention by using PreventMatch on the order level. |
| Allow Test Symbols Only | Disabled | Allow or disallow orders in non-test symbols |
| Allowed Clearing Executing Firm ID(s) * | All EFIDS | Executing Firm ID(s) allowed for trading on the port. |
| Cancel on Disconnect | All | Cancels open orders upon order handler session disconnect; both graceful and ungraceful. If Cancel On Disconnect is set, open orders in Symbols not in Closed state at the time of the disconnect are cancelled. `All` = Cancel Day and GTC/GTD orders `Day` = Cancel only Day orders `None` = Disabled BOE Quoting ports require Cancel on Disconnect set to All or Day. Default will be used if not specified. |
| Cancel on ME Disconnect | All | Controls whether orders are cancelled or preserved on a Matching Unit failover and provides for the ability to preserve GTC/GTD orders. For C2 and EDGX , in any event, if a failover takes longer than 5 minutes, all orders are cancelled (including GTC/GTD Orders). For C1 if a failover takes longer than 15 minutes, all orders are cancelled (including GTC/GTD Orders). `All` = Cancel Day and GTC/GTD orders `Day` = Cancel only Day orders `None` = Disabled BOE Bulk Quoting ports require Cancel on ME Disconnect set to All or Day. Default will be used if not specified. |
| Cancel on Regulatory Halt | All (EDGX Only) None (C1 and C2 Only) | Cancels open orders upon receipt of a Regulatory Halt. `All` = Cancel Day and GTC/GTD orders `Day` = Cancel only Day orders `None` = Disabled |
| Cancel on Reject + | No | Cancels an order upon a modify reject. |
| Cancel Open Orders on DROP Port Disconnect * | None | Only applicable if "Reject Orders on DROP Port Disconnect" has been enabled. When the last Standard FIX DROP port associated with an order handler session has disconnected, open orders, associated with the session are cancelled. `All` = Cancel Day and GTC/GTD orders `Day` = Cancel only Day orders `None` = Disabled Note this parameter applies to Standard FIX DROP ports and not Order-By-Order DROP ports (ODROP). |
| Carried Order Restatements | No | If the Carried Order Restatements port attribute is set, unsolicited `Order Acknowledgement` messages representing GTC/GTD orders loaded by the system at startup will be sent after the Login Response message and before any other messages for each product. Note that Carried Orders are restated to customers using `Order Acknowledgement` messages with BaseLiquidityIndicator = A and SubLiquidityIndicator = C. Note that any changes made to any port attribute will not be enforced on carried GTC orders. Members wishing to apply updated port attributes to resting GTC orders must cancel those orders and resubmit them following the effective time of the port attribute change. |
| Crossed Market Cancel / Reject $ | No | Reject new orders when the NBBO in the security is crossed. Routable orders will have any remaining quantity cancelled back when the order returns to the book. Order modifications causing a loss in priority will result in a cancel of the original order if the NBBO is crossed upon receipt of the modify request. Quotes are always accepted, even in a crossed market. |
| Default Account | None | Default Account to be used if none is sent on inbound messages. Allows up to 16 characters (ASCII 33-126). |
| Default Attributed Quote *+ | X | Default value for AttributedQuote . May override at order level. C† = Attribute ClientIDAttr only (C1 only) `N` = Don’t Attribute (may override at order level) `Y` = Attribute EFID only `Z` = Attribute EFID and ClientIDAttr X* = (Default) Never Attribute (may not be overridden at order level) *This setting may only be changed after executing Attribution Addendum to Exchange User Agreement ( EDGX only ). |
| Default ClearingOptionalData | None | Default ClearingOptionalData to be used if none is sent on inbound messages. Allows 16 characters or less (ASCII 33-126). |
| Default ClientIDAttr | None | Default ClientIDAttr to be used if none is specified on inbound messages. |
| Default EquityExDestination† (C1 and EDGX only) | C | Default EquityExDestination to be used if none is specified on inbound messages. |
| Default EquityPartyID (C1 and EDGX only) | None | Default EquityPartyID to be used if none is specified on inbound messages. |
| Default Executing Firm ID | None | Default Executing Firm ID to use if none is sent on a `New Order` or `New Complex Order` message. |
| Default FloorDestination (C1 only) | None | Specifies a default PAR workstation (ex. W001) to route to on the floor (or ‘PARO’ to route to the Floor PAR Official of the underlying symbol) if not specified on inbound messages. 4 characters or less (ASCII 33-126). |
| Default FloorRoutingInst* (C1 only) | E | `D` = Direct. Do not attempt to process electronically `E` = Electronic only `X` = Route to floor if unable to process electronically. *When FloorRoutingInst = D or X, RoutingInst (9303) must be set to B or R for simple orders, or B for complex instruments. |
| Default MTP Value *^+ | None | Specifies default value for PreventMatch. |
| Default Price Sliding | P ( EDGX/C2 only ) | Default price sliding behavior. See DisplayIndicator for details. |
| Default Routing Instruction + | 9303=RS 9350=RTI 9400=SWPA | Specifies a default value for routing. Fields can be overridden at the order level. The defaults are RoutingInst = RS, RouteDeliveryMethod = RTI, and RoutStrategy = SWPA. |
| Done For Day Restatements | No | If the Done For Day Restatements port attribute is set, unsolicited `Order Acknowledgement` messages representing GTC/GTD orders that will be carried into the next session will be sent after the end of the trading session and before the system is recycled. Note that Done For Day Restatements are restated to customers using `Order` `Acknowledgement` messages with BaseLiquidityIndicator = A and SubLiquidityIndicator = D. |
| Duplicative Order Protection Action $ | 1 | Action taken when Duplicative Order Protection criteria is met: 1 = Not enabled. 2 = Reject any offending orders. 3 = Disable port for ClearingFirm . Must call Cboe Trade Desk to reenable. |
| Duplicative Order Protection Order Count Threshold $ | None | Number of consecutive orders with the same ClearingFirm, Price, OrdQty, and Symbol that must be seen to initiate Duplicative Order Protection Action. |
| EFID Filter for Purge Ports | None | Specify up to ten EFIDs per purge port for which purges will be permitted. If a purge request specifies an EFID not included in the list of configured EFIDs, the purge request will be rejected. If a purge port is configured with multiple EFIDs and a purge request is sent without any EFIDs specified, the purge will be applied only to the list of configured EFIDs. |
| EFID Risk Reset | Disabled | Configures how risk may be reset after a risk trip. Disabled = (Default). Will require manually resetting all EFID Group and EFID-Level Risk trips by contacting the Trade Desk. Enabled = Will allow EFID Group and EFID-level Risk resets using RiskReset of ‘F’ or ‘G’. |
| Enable Market Maker Floor Trade Notifications (C1 only) | No | Enables Market Maker Floor Trade Notifications for specific Market Maker acronyms on a port. |
| Fat Finger Protection *$ | None ( EDGX only ) See specification for defaults ( C2 only ) | Orders entered through the NBBO by a specified percentage or dollar based limit price tolerance will be rejected. Limits may be different for different price ranges and price ranges may vary across markets. Please see the Cboe Titanium U.S. Equities/Options Web Portal Port Controls Specification for details. |
| Forced Open Cancel Instruction | DoNotCancel | Specifies order handling during a forced opening. `DoNotCancel` = Preserve Orders (Default) `CancelMarket` = Cancel Open Market Orders Only (preserve Limit Orders) `CancelAll` = Cancel All Open Orders |
| Market Maker Floor Trade Notification Symbology (C1 only) | Cboe | Specifies the symbology used on Market Maker Floor Trade Notifications. `Cboe` = Six character Cboe Symbol ID `OSI` = OSI Symbology ( PutOrCall , StrikePrice , and MaturityDate will be returned) |
| Market Maker Reject if Cancel on Disconnect disabled | No | Rejection of Market Maker or Away-Market Maker orders if Cancel on Disconnect is not enabled. Non-Market Maker capacity order swill be unaffected with this confuration. |
| Maximum Order Dollar Value * | Unlimited | Maximum dollar value per order. |
| Maximum Order Size * | 25,000 | Maximum order quantity |
| Multi-Segment Holiday Day Order Handling (C1 only) | None | Controls whether Day ( TimeInForce (59) = 0) orders are cancelled or preserved across holiday trading segments comprising a single business date. `None` = All Day orders on the book are carried between trading segments `Cancel` = All Day orders on the book at the conclusion of the current trading segment are cancelled back. |
| Port Order Rate Threshold | 5,000 msgs/s 1 msg/sec for test products. | The maximum allowed message rate on the session. When the first non-session level message is received, a one second window begins, during which no more than 4,999 additional non-session level messages are allowed. If the rate is exceeded, all new orders in the time window are rejected, modifies are treated as cancels, and cancels are processed. Maximum value is 5,000 msgs/sec. For Bulk Quoting ports, the default threshold is unlimited. Note: Order handler burst rates towards each matching unit may be limited as described in Architecture and Message in Flight Settings . |
| Reject Orders on DROP Port Disconnect * | No | If all Standard FIX DROP ports associated with an order entry session experience disconnection, new orders will be rejected until at least one Standard FIX DROP port session is reestablished. Note this parameter does not apply to Order-By-Order drop ports (ODROP). |
| Reject Orders on DROP Port Timeout (seconds) * | 30 seconds | Only applicable if "Reject Orders on DROP Port Disconnect" is enabled. When the last Standard FIX DROP port associated with an order entry session has disconnected, begin rejecting orders on the order entry session if a Standard FIX DROP session has not been reestablished within this timeout. Minimum value allowed is 0 seconds. |
| Send Trade Breaks ^ | No | Enables sending of `Trade Cancel or Correct` messages. |
| Symbol Order Rate Threshold | 5,000 msgs/s | Functions the same as the Port Order Rate Threshold, but is calculated at the symbol level. It is capped by the Port Order Rate Threshold. Maximum value is 5,000 msgs/sec. For Bulk Quoting ports, the default threshold is unlimited. Note: Order handler burst rates towards each matching unit may be limited as described in ‘ Architecture and Message in Flight Settings ’. |

* Sponsored Participants require written approval from Sponsors to update these settings on ports associated with a Sponsor’s MPID.

+ Port attribute can be overridden on an order-by-order basis.

^ Requires certification.

$ Not supported for quotes.

## Support

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

## Revision History

| Date | Description |
|---|---|
| June 16, 2014 | Version 2.0.2 First public release of US Options BOE Version 2 specification. |
| July 1, 2014 | Version 2.0.3 Added Hours of Operations section. Corrected Cancel on Disconnect options. |
| July 3, 2014 | Version 2.0.4 Added field descriptions for FeeCode and EchoText . |
| July 7, 2014 | Version 2.0.5 Removed all return bits from `User Modify Rejected V2` messages. No optional return fields are allowed. Corrected a number of optional return bits. Added RoutingInst , RoutStrategy , RouteDeliveryMethod , and ExDestination as optional return bits (byte 8). |
| July 9, 2014 | Version 2.0.6 Corrected instances where ContraCapacity and CorrectedSize may be requested as optional return fields. |
| August 15, 2014 | Version 2.0.7 Added field descriptions for RoutStrategy , ExDestination , and StopPx . |
| August 22, 2014 | Version 2.0.8 Added Super Aggressive When Odd Lot RoutingInst value. |
| August 26, 2014 | Version 2.0.9 Added Reason Code of `w` (Would Remove on Unslide). |
| August 28, 2014 | Version 2.0.10 Corrected `Bulk Order V2` input bitelds. |
| September 3, 2014 | Version 2.0.11 Removed SymbolSfx from allowed fields for `New Order V2` . Removed DiscretionAmount and PartyID from allowed return bitfields for a number of messages. Corrected data type for AcceptedCount and RejectedCount to be Binary (not Text). Corrected data type for BulkOrderRejectReasons and OrderRejectReason to be Text (not Binary). Removed AccessFee from allowed return bitelds for `Order Restated V2` . Added clarification on BulkOrderIDs , AskOrderID , and BidOrderID . Added clarification on BulkRejectReasons , AskRejectReason and BidRejectReason . |
| September 8, 2014 | Version 2.0.12 Removed ContraBroker from List of Optional fields. |
| September 9, 2014 | Version 2.0.13 Removed AccessFee from `Order Execution V2` allowed return bitfields. |
| October 10, 2014 | Version 2.0.14 Claried ability to reuse ClOrdId with `Modify Orders` when daily limit trading risk controls are enabled. |
| November 13, 2014 | Version 2.0.15 Corrected `New Order V2` input bitelds to note that DisplayIndicator is per- mitted. |
| January 8, 2015 | Version 2.0.16 Corrected `Order Execution V2` return bitfields to note that SubLiquidityIndicator is not allowed - it's already available in the message body. Minor correction of PreventMatch text (no functional change). |
| February 19, 2015 | Version 2.0.17 Added new Capacity values of N, B, and J, effective June 1, 2015. |
| June 10, 2015 | Version 2.0.18 Added Reason Code value of T. |
| June 23, 2015 | Version 2.1.0 Updated for EDGX Options. Added new fields TargetPartyID and MarketingFeeCode . Updated descriptions to note which fields are BZX Options or EDGX Options specific. |
| June 23, 2015 | Version 2.1.1 Added Duplicative Order Protection port attributes. |
| October 26, 2015 | Version 2.1.2 Added reason code of T. Updated DisplayIndicator description to note that, per EDGX Options Exchange rules, Display Price Sliding may not be combined with the Post Only instruction. |
| October 27, 2015 | Version 2.1.3 Added EDGX as possible ContraBroker value. |
| October 31, 2015 | Version 2.1.4 Corrected values for MarketingFeeCode . Changed text to note that TargetPartyID is simply copied back on all response messages. |
| November 11, 2015 | Version 2.1.5 Updated Pre-Market Queuing Session time to 7:30am, beginning December 11, 2015, pending SEC approval. |
| December 24, 2015 | Version 2.1.6 Updated description of TargetPartyID and Capacity for revised directed order functionality. Added Firm Risk Reset port attribute. Updated description of ClearingFirm . |
| January 19, 2016 | Version 2.1.7 Added Mercury as possible ExDestination and ContraBroker value. |
| February 17, 2016 | Version 2.1.8 Updated for new branding. |
| February 25, 2016 | Version 2.1.9 Added new RestatementReason value of P. |
| March 23, 2016 | Version 2.1.10 Updated description of RoutStrategy to state that routable ISOs must be sent using DIRC. Updated the minimum value of "Reject Orders on DROP Port Timeout" to be 0 seconds. |
| May 16, 2016 | Version 2.1.11 Added new field AuctionID and added S as a possible second character for RoutingInst , along with information about the Step-Up Mechanism (SUM). AuctionID replaced EffectiveTime in `New Order V2` and all of the return bitfields. |
| June 10, 2016 | Version 2.1.12 Display Price Sliding support eliminated for EDGX Options effective July 11, 2016. |
| June 28, 2016 | Version 2.1.13 Added new SubLiquidityIndicator of B for Step Up Mechanism. |
| August 3, 2016 | Version 2.1.14 WAIT orders will be eliminated upon migration of BZX Options to its next generation matching engine. Refer to Release Notes on Bats' public web site for deployment schedule. |
| August 17, 2016 | Version 2.1.15 Corrected ExDestination value of EDGX Options to be G. |
| September 2, 2016 | Version 2.2.0 Add new message types and fields to support cross orders ( EDGX Only ). Includes `New Order Cross` , `Cross Order Acknowledgment` , `Cross Order Rejected` , `Cross Order Cancelled` , and supporting fields. Effective 11/11/2016. |
| October 4, 2016 | Version 2.2.1 Add RoutingFirmID as a valid field for single order messages. |
| November 11, 2016 | Version 2.2.2 Added new SubLiquidityIndicator of b for Bats Auction Mechanism. Updated Display Price Sliding to indicate it is BZX only . Added clarification that ClearingAccount is required when Capacity is M or N. |
| December 15, 2016 | Version 2.2.3 Removed RoutingInst value of C (Book Only WAIT order). Claried which RoutingInst values are allowed for `Bulk Orders` . Added port param for rejecting MM capacity orders if Cancel on Disconnect is disabled. |
| January 24, 2017 | Version 2.2.4 Added support for MIAX Pearl routing. Added 2 (Qualied Contingent Cross) as an acceptable CrossType for `New Order Cross` messages. |
| January 27, 2017 | Version 2.2.5 Added new message types and fields to support purge ports. Includes `Purge Orders V2` , `Purge Rejected V2` , and supporting fields. Modified `New Order V2` message input bitfields to include the optional CustomGroupID field. Effective Date March 1, 2017. Added RoutingFirmID to `Modify Order V2` and `Cancel Order V2` messages. |
| February 27, 2017 | Version 2.2.6 Correct MassCancel field description in `Purge Orders V2` message examples from lockout to single ack. |
| March 2, 2017 | Version 2.2.7 Add new field type Date . |
| March 22, 2017 | Version 2.2.8 Remove Suppress Cancels on Sessions Close port attribute. |
| March 22, 2017 | Version 2.2.9 Add descriptions of port attributes "Allow Test Symbols Only", "Port Order Rate Threshold", and "Symbol Order Rate Threshold". |
| May 11, 2017 | Version 2.3.0 Add new message types and fields to support complex orders ( EDGX Only ). Includes `New Complex Order` , `New Complex Instrument` , `Complex Instrument Accepted` , `Complex Instrument Rejected` , and supporting fields. Effective 10/23/2017. |
| June 13, 2017 | Version 2.3.1 Removed support for TimeInForce value of 4 (Fill-or-Kill) on complex orders. Added clarification of valid TimeInForce values used with RoutingInst value of D on complex orders. Corrected options for port attribute "Cancel on Disconnect". |
| July 7, 2017 | Version 2.3.2 Corrected field type and size of RevisedLegs . Fixed naming inconsistency of A ttributedQuote sometimes being called AttributedOrder . Claried symbology use on `Order Execution V2` messages for complex orders. |
| July 25, 2017 | Version 2.3.3 Added SecondaryExecId to `Order Execution V2` . Added new Mass Cancel/Purge Request specication style using MassCancelInst field Effective 10/23/2017. |
| July 28, 2017 | Version 2.3.4 Updated description of use of MassCancelInst field in `Purge Orders V2` message Effective 10/23/2017. |
| August 3, 2017 | Version 2.3.5 Added RiskReset and CustomGroupId to `New Complex Order` message. |
| August 7, 2017 | Version 2.3.6 Corrected size of NoOfSecurities field in message description and examples. |
| August 9, 2017 | Version 2.3.7 Added ClearingFirm optional field to `New Complex Instrument` message. |
| August 14, 2017 | Version 2.3.8 Corrected `Purge Orders` message biteld ordering and added RoutingFirmID . |
| September 1, 2017 | Version 2.4.0 Removed references to V2 as the V1 specification was deprecated. Added C2-specific references. Updated Cancel on Disconnect, Cancel on ME Disconnect, Cancel on DROP Port Disconnect and Cancel on Regulatory Halt to all provide GTC filtering. |
| September 15, 2017 | Version 2.4.1 Added support for C2 Feature Pack 1. Available in Certification effective 9/15/17 and in Production effective 10/13/17. |
| October 5, 2017 | Version 2.4.2 Updated explanatory text for MassCancelInst lockout behavior. TimeInForce = 2 (At the open) is supported effective 10/23/17. Updated C2 Feature Pack 1 effective date from 10/6/17 to 10/13/17. Removed introduction of ContraTrader and ContraBroker and deprication of ContraCapacity from C2 Feature Pack 1 release. Removed Side and OrderQty from the New Complex Instrument example. |
| October 17, 2017 | Version 2.4.3 Updated Symbol in `Complex Instrument Accepted` message to indicate this is the complex instrument id. Cboe branding/logo changes. |
| November 7, 2017 | Version 2.4.4 Updated to indicate that Bulk Order Acknowledgements are unsequenced. Corrected various spelling erorrs, field name and case inconsistencies. Updated Return Order Bitfields for Cross Order Acknowledgement, Cross Order Rejected and Cross Order Cancelled. Added C2 Feature Pack 2 enhancements for ContraTrader and ContraBroker values effective on 12/8/17. |
| December 6, 2017 | Version 2.4.5 Corrected `Cross Order Cancelled` message type to 0x46. Updated effective date of C2 Feature Pack 2 to 12/15/17. |
| December 15, 2017 | Version 2.4.6 Updated effective date of C2 Feature Pack 2 to 01/05/18 Corrected length of DrillThruProtection field. It is eight bytes. |
| December 27, 2017 | Version 2.4.7 Added Done For Day Restatement functionality. Protocol feature section 1.6.2 added to describe the feature. Done For Day Restatements port attribute added to enable and disable feature, which defaults to disabled. Default for Carried Order Restatements changed from enabled to disabled. Updated `Modify Order` message to clarify when an order loses time priority. |
| January 12, 2018 | Version 2.4.8 Fixed incorrect GroupCnt and MessageLength in Bulk Order example. Added GTC/GTD persistence across trading sessions to BZX and EDGX (Effective in EDGX on 1/26/18 and BZX on 2/2/18). |
| January 24, 2018 | Version 2.4.9 Removed reference to EFID needing to be registered in the underlying and Capacity needing to be set to ‘M’ in order to send Bulk Orders for C2 in section 4.1.6. GTCs and GTDs that expire on a future date cannot be sent on Bulk Order Ports. Added ‘L ’ reason code to the list of reason codes in Section 8. |
| January 30, 2018 | Version 2.4.10 Added Post Only restriction for `Bulk Order` message on EDGX Options effective 3/23/18. |
| February 20, 2018 | Version 2.5.0 Update GTC/GTD functionality to allow order cancelation after trading sessions ends. |
| March 21, 2018 | Version 2.5.1 Updated OSI Root to Underlying symbology for EDGX Options (effective 6/11/18) and BZX (effective 6/25/18) Options. Removed AllocQty as an available return bitfield on `Trade Cancel or Correct` message. |
| March 26, 2018 | Version 2.5.2 Updating RoutStrategy (9400) default behavior to ‘SWPA’ for EDGX on 04/13/18 and BZX on 04/19/18. |
| April 4, 2018 | Version 2.5.3 Removed Post Only as a valid RoutingInst for Complex Orders on C2. Changed Default Attributed Quote on EDGX to Never. |
| April 10, 2018 | Version 2.5.4 CumQty to be populated on leg fills related to complex executions (effective 4/27/18). |
| April 26, 2018 | Version 2.6.0 Added optional fields to the `Purge Rejected` message to accommodate optional return of the MassCancelId field from the associated `Purge Request` message (Effective 6/29/18). Added RestatementReason = S for Ship and Post restatements. |
| May 23, 2018 | Version 2.6.1 Defined StrikePrice in the List of Optional Fields. Corrected the defintion of LegStrikePrice to an eight byte, Binary Price field. Corrected OSI to Underlying Symbology effective dates. Additional clarification regarding valid RoutingInst values for BOE Bulk on EDGX and C2. |
| May 30, 2018 | Version 2.6.2 MassCancelId moved to bit 8 from bit 1 in byte 15 of the Return Bitfields for a `Purge Rejected` message. |
| June 29, 2018 | Version 2.6.3 Updated MassCancelInst to indicate that 4 th character is applicable to both C2 and EDGX. Added detail for 5 th character, which was missing from the BOE specification. Corrected example for `Purge Rejected` message. |
| August 7, 2018 | Version 2.6.4 Updated information about mass cancel message rate limitations (effective 08/15/18). |
| September 20, 2018 | Version 2.6.5 For Cancel Rejected message added MassCancelId as an optional bitfield. (effective 9/14/18) Updated Bulk Port Order information to indicate that simple and complex auction responses are now accepted over Bulk Order Ports. (effective 10/5/18). |
| October 8, 2018 | Version 2.7.0 Added support for new message types and fields to support new quoting interface. Added effective dates for deprecating `Bulk Order` message type. Added support for `Risk Reset` message. |
| October 19, 2018 | Version 2.7.1 Added "R" Quote Reject Reason. Added support for C1 Migration Feature Pack 1, including support for complex reserve orders, ClearingOptionalData and EFID Group level risk functionality. Available in Certification effective 11/2/18 and in Production effective 11/29/18. |
| October 26, 2018 | Version 2.7.2 Added Side as a required field for `Quote Cancelled` and `Quote Restated` messages. |
| November 5, 2018 | Version 2.7.3 Clarifications added to the liquidity removal behavior for BOE Bulk/Quoting ports effective with C1 Feature Pack 2. Added Complex Post Only value of 'P' to RoutingInst (effective in EDGX and C2 TBD). |
| November 9, 2018 | Version 2.7.4 Added support for short form `Quote Update` message effective with C1 Feature Pack 2. |
| November 16, 2018 | Version 2.8.0 New message types, references, and fields in support of Cboe Options migration to Bats Tech. |
| November 20, 2018 | Version 2.8.1 Added SubLiquidityIndicator values for QCC and SAM. Updated definition for the value 'K' of Quote Restated message RestatementReason field. TradingSessionID was named incorrectly and has been replaced by SessionEligibility . This field corresponds to Tag 336 in Cboe FIX. Allowed values have been changed as well as associated input and return bits. For `Reset Risk` message, corrected RiskRoot field length to 6. For `Bulk Order` message example, corrected OsiRoot to RiskRoot . Corrected name of optional field from OsiRoot to RiskRoot . |
| November 27, 2018 | Version 2.8.2 Added additional RiskResetResult values. Added `r` = invalid remove QuoteResult value. Noted that Capacity changes will not be honored when modifying a quote. Updated Default Attributed Quote port attribute for Cboe Options Exchange. Corrected `New Order Cross Multileg` message type to 0x5A. Udpated effective date for Complex Post only to TBD. |
| December 6, 2018 | Version 2.8.3 Added QuoteReason codes D, m, u, and W. Removed incorrect MaxFloor and DisplayRange bit fields from New Order Cross Multileg. Updated port attribute details for Cancel on Regulatory Halt to indicate Cancel All is default for BZX and EDGX and Cancel None is default for for C1 and C2. Added note to the optional fields, Attributed Quote and ClientIDAttr , indicating values available in C1 Feature Pack 4. Added note to Default Attributed Quote and Default ClientIDAttr port attributes indicating values available in C1 Feature Pack 4. |
| December 20, 2018 | Version 2.8.4 For `Reset Risk Acknowledgement` message, added <space>=Ignored value to RiskResetResult field. Updated `New Order Cross Multileg` , Price field description to remove "Must be non-negative". Updated optional field ExecInst description to indicate it is used for `New Order Cross Multileg` . "Invalid Remove" quote result was incorrectly identified as ‘s’ and was updated to be ‘r’ in `Quote Update Acknowledgement` message. Attributing by ClientIDAttr requires a value of "C" rather than "X" for the AttributedQuote field. Clarified use case and allowable granularity for SendTime on `Quote Update` message. |
| January 11, 2019 | Version 2.8.5 Updated description of FloorDestination . Corrected default value Default FloorRoutingInst port attribute to 'E' for Electonic only. Regarding `Login Response` , clarified that while a subset of units can be provided in the `Login Request` , all units will be provided in the `Login Response` . Added support for MIAX Emerald routing (effective 03/01/19). Added Floor Routing protocol feature for C1. Added support for Not Held orders ( ExecInst (18) = 1) for C1. Updated descriptions for Cancel on Disconnect and Cancel on ME Disconnect Port Attributes for Bulk Quoting Ports. |
| January 17, 2019 | Version 2.8.6 Updated description of intra-day changes made to Port Attributes. For the `Quote Update Acknowledgement` message, removed "J" as a value for QuoteResult as it was replaced by newer rejection values . Added effective date for Complex Post only (EDGX 01/30/19 , C2 02/06/19) . |
| February 06, 2019 | Version 2.8.7 Added Order Reason Code ' `z` ' to section 8.1. Market orders are implicitly IOC for non-complex orders only. Added Simple Order Auction information related to BAM/AIM, SUM, and QCC for C1 Feature Pack 5. |
| February 19, 2019 | Version 2.8.8 Support added for Floor Represenation restatements. Additional Protocol Feature added. Added SessionEligibility of "A" to `Quote Update` message. Updated reference to SessionEligibility FIX Tag, from 336 to 22017 . |
| March 1, 2019 | Version 2.8.9 Added new value of `f` = Unsolicited Floor Action to RestatementReason field on `Order Restated` message . Updated `New Complex Order` message type to not support legging in to the simple book on cross product spreads. |
| March 13, 2019 | Version 2.8.10 Updated effective date for SAM auctions to 04/29/19. |
| March 18, 2019 | Version 2.8.11 Added note identifying deprecation of RestatementReason Q = Liquidity on `RestatementReason` field. Added notes identifying tags supporting AON Orders effective in C1 Feature Pack 6. |
| March 29, 2019 | Version 2.9.0 Removed `Bulk Order` message types and optional fields. Updated defaults for Cancel on Regulatory Halt port attribute. Replaced all references to BAM with AIM. Added TiedHedge optional field to `New Complex Order` message.Moved FrequentTraderID to the repeating group of `New Order Cross` and `New Order Cross Multileg` messages. Updated GTH trading hours to end at 9:15 a.m. ET. Renamed Late-Limit-On-Open orders to Settlement Liquidity orders. |
| April 16, 2019 | Version 2.9.1 Added clarification setting and using Match Trade Prevention (MTP) with BOE Bulk Quoting Ports and `Quote Update` messages. |
| May 2, 2019 | Version 2.9.2 Added EquityPartyId to Return Bitfields for `Order Acknowledgement` , `Cross Order Acknowledgement` , `Order Rejected` , `Cross Order Rejected` , `Order Cancelled` , `Cross Order Cancelled` and `Order Execution` messages. Added EquityPartyId to the Input Bitfields for `New Complex Order` and `New Order Cross Multileg` . Added clarification to MassCancelInst behavior when the Clearing Firm Filter is set to ‘F’. Updated instructions for handling of LegPositionEffect for complex symbols with an equity leg. Updated GTH and added SessionEligibility field on QuoteUpdate message for C2 and EDGX, effective with C1 Feature Pack 7. Added note indicating reserve orders ( MaxFloor greater than 0) will be rejected for Cboe proprietary classes, effective with C1 Feature Pack 7. Updated effective date for SAM auctions to TBD. |
| May 15, 2019 | Version 2.9.3 Added clarification to the Bulk Quote port order acceptance table on page 10. Added PostingInstruction values of 'N' and 'R' on the `Quote Update` and `Quote Update Short` messages. Added note indicating `Quote Update Acknowledgement` and `Quote Cancelled` messages will be unsequenced effective 07/08/19. |
| May 31, 2019 | Version 2.9.4 Added SubLiquidityIndicator value of "U" for Market Turner on C1. Corrections to `New Complex Order` example. |
| June 14, 2019 | Version 2.9.5 Added QuoteResult values of a, c, v, and V to `Quote Update Acknowledgement message` . Corrected corresponding FIX Tag value for EquityTransactTime . Added note indicating `New Order Cross Multileg` message will be supported on EDGX, effective on EDGX with C1 Feature Pack 8. Added TimeInForce optional field value of ‘ `7` = At the Close ‘, effective on BZX, C2, and EDGX with C1 Feature Pack 8. |
| June 28, 2019 | Version 2.9.6 Added notes indicating EquityExDestination, EquityLegShortSell, and EquityPartyID optional fields will be effective on EDGX with C1 Feature Pack 9. Add clarification to `Quote Update Acknowledgement` messages and `Quote Cancelled` message regarding messages changing to unsequenced effective 07/08/19. |
| July 10, 2019 | Version 2.9.7 Clarified preferred use of underlying symbol when specifying RiskRoot field. Updated effective date for C-AIM on EDGX to TBD. |
| July 16, 2019 | Version 2.9.8 Clarified statement regarding availability of Quote related messages over ODROP and FIXDROP as Quote Execution messages will be the only Quote related messages available. |
| July 31, 2019 | Version 2.10.0 Added `Add Floor Trade, Add Floor Trade Rejected, Floor Trade Confirmation, Floor Trade Confirmation Rejected, Delete Floor Trade, Delete Floor Trade Rejected` and `Delete Floor Trade Acknowledgement` message types for C1 only . Added TradeThroughAlertType and SenderLocationID optional return bitfields for `Order Execution` message only for C1 only . Corrected MessageType hexadecimal value to 0x28 in `Order Restated` message example. Added Enable Floor Trade Notifications and Floor Trade Notification Symbology in the Port Attributes section. |
| August 9, 2019 | Version 2.10.1 Added clarification for OpenClose field in `New Order Cross` and `Add Floor Trade` messages for orders with OrderCapacity of M or N. Changed Return Bitfield EquityNBBOProtect to "Reserved". Updated notes for FloorRoutingInst to indicate that when FloorRoutingInst is "D" or "X", RoutingInst must be set to "B" or "R" for simple orders. Updated effective date for C-AIM on EDGX to 8/22/19. |
| August 23, 2019 | Version 2.10.2 Added FloorTraderAcronym as an optional return bit (byte 17) for the `Order Execution` message. Removed language indicating Cabinet and Sub-cabinet orders can have a TimeInForce (59) value of "GTD" or "IOC" since GTD and IOC orders cannot route to the floor. Updated Order Modified Return Bitfield to indicate Symbol field on second byte can be specified for a message. Clarified ContraBroker and ContraTrader to provide detail about what information will be provided for trades on the Cboe Options trading floor and for complex trades. |
| August 30, 2019 | Version 2.10.3 Removed note indicating a new OrderID will be assigned for an existing quote on a quote update. Added clarification to Crossed Market Cancel/Reject port setting indicating quotes are always accepted, even in a crossed market. |
| September 5, 2019 | Version 2.10.4 Series restricted to closing only will accept opening transactions from both M and N capacities. |
| September 18, 2019 | Verstion 2.10.5 Removed "3=Entire multi-leg instrument package" from MultilegReportingType in `Add Floor Trade message` as this value is not valid. Added PriceType field to `Floor Trade Confirmation` , `Floor Trade Notification` , and `Floor Trade Confirmation Rejected.` Clarification added for rejects related to an invalid ExecInst value. If a value is supported on one message type, but invalid for another message type, then that will result in a reject. Self imposed risk lockouts will impact ability to send new orders or quotes, but not impact the ability to modify or cancel resting orders or quotes that are still live. |
| October 2, 2019 | Version 2.10.6 Corrected PriceType field example for `Floor Trade Confirmation` , `Floor Trade Notification` , and `Floor Trade Confirmation Rejected` messages. |
| October 3, 2019 | Version 2.10.7 Added note indicating Cancel on ME Disconnect port attribute timeout is 15 minutes for C1. |
| October 15, 2019 | Version 2.10.8 Added values to Side optional field for "5=Sell Short (stock leg only)" and "6=Sell Short Exempt (stock leg only)" (C1 and EDGX only) . Added Market Order NBBO Width Protection, Drill-Through Protection for Lmit Orders, and Exchange Default Fat Finger Limits subsections under Protocol Features. |
| November 7, 2019 | Version 2.10.9 Added notes indicating that the ‘at’ sign, pipe, and double quote characters are not permitted in the ClOrdID, CrossID, and QuoteUpdate fields (effective 01/13/20). |
| November 12, 2019 | Version 2.10.10 Updated Hours of Operation table, indicating GTH will be sunset on C2 and EDGX effective 11/22/19. |
| December 3, 2019 | Version 2.10.11 Added notes indicating system will change RoutingInst = Q to ‘P’ upon the deprecation of Partial Post Only at Limit . They system will also ignore MaxRemovePct , effective 12/16/19 ( BZX only ). |
| January 14, 2020 | Version 2.10.12 Added note indicating that reason codes are followed by free-form text that may vary from the text listed in the specification, to provide clarification of the reject reason. `Added F` = Could not reflect to consolidated quote (OPRA) as reason code. Added SendTime as optional input bitfield (byte 2) on the `Cancel Order` and `Purge Order` messages (effective 3/31/20). |
| January 17, 2020 | Version 2.10.13 Added note indicating that EDGX will support SAM and C-SAM auctions, effective 2/3/20. |
| January 28, 2020 | Version 2.10.14 Added note to the Quote Update section, clarifying that a zero value price and/or size can be used to delete a quote. Updated description of SendTime field in `Quote Update` message and List of Optional Fields table. |
| January 30, 2020 | Version 2.10.15 Added note indicating RoutingFirmID will be effective on BZX effective 3/2/20. |
| February 3, 2020 | Version 2.10.16 Added ExecLegCFICode as an optional return bit (byte 17) for the `Order Execution` message. Effective on C1, C2, and EDGX 2/19/20. |
| March 10, 2020 | Version 2.10.17 Updated Return Bitfield tables with bytes 16 and 17. Updated LegRatioQty for `New Complex Instrument` and `Complex Instrument Accepted` messages to support increase of maximum leg quantity and maximum package price for complex orders (effective on C1, C2, and EDGX 04/13/20). |
| March 27, 2020 | Version 2.10.18 Updated Quotes Reason Codes for ‘n’ and ‘x’ (effective on 03/19/20 for EDGX, 03/20/20 for C2 and BZX, and 03/23/20 for C1). Added notes indicating `Quote Update` messages entered via a BOE Bulk Quoting port will only be supported for Market Makers (capacity = `M` ) and a valid, non-zero value for the SendTime refiled for any Quote Update messages (effective 4/24/20). Made a small correction in the `Complex Instrument Accepted` message example. |
| April 22, 2020 | Version 2.10.19 Updated Quote Reason Code ‘t’. Updated the AutoMatchPrice description for more clarity. Effective date updated to 7/10/20 for BOE Bulk Quoting port support restriction to Market Makers and requirement for non-zero SendTime value. |
| April 27, 2020 | Version 2.10.20 Noted Notional Exposure Tracking to be deprecated on 5/8/20. |
| April 28, 2020 | Version 2.10.21 Added note indicating the rate limit at which identical Mass Cancel and Purge Order messages will be accepted will be changed from 20 to 10 messages per second per port (effective 5/27/20). Clarified description of Capacity value 'N' from "Non-Cboe Market Maker" to "Away Market Maker". |
| May 22, 2020 | Version 2.11.0 Added Maximum Open Order Limits section. Updated ContraBroker field values in Example Order Execution Message. Updated `New Order Cross` message table. Added note indicating the rate limit at which identical Risk Reset messages will be accepted will be changed from 1 per second to 1 per 100 ms per port (effective 5/27/20). Added new Subreason and CancelSubreason fields to better inform members on the reason why an order was cancelled or rejected. Also added newe RiskReset values to allow for rest or self-imposed lockout without resetting risk counters (effective 8/3/20). |
| July 7, 2020 | Version 2.11.1 Added EquityExDestination (22016) value of ‘P’ for Penserra (effective 8/10/20). Added CrossInitiator (22026) field in `New Order Cross Multileg` and `New Order Multileg` messages (C1 and EDGX Only) (effective 8/10/20). Updated and removed values from SubreasonText (22058) and RiskReset (7692). |
| July 8, 2020 | Version 2.11.2 Added date for deprecation of MassCancel and MassCancelLockout messages (effective 10/12/20). |
| July 28, 2020 | Version 2.11.3 Clarified SubLiquidityIndicator value of `B` = Step Up Mechanism ( C1 and EDGX Only ). Updated Drill-Through Amount table and default values for DrillThruProtection ( effective 08/05/20 ). |
| August 5, 2020 | Version 2.11.4 Updated Return Bitfield tables for `Order Rejected` , `Order Canceled` , and `Cancel Rejected` messages to indicate ClearingOptionalData is an optional field (effective 08/28/20). Corrected SubLiquidityIndicator value for QCC from 'q' to 'Q'. |
| August 20, 2020 | Version 2.11.5 Added new `Purge Notification` message and Acknowledgement Style value of "A" for second character of MassCancelInst optional field (effective 9/25/20). |
| September 23, 2020 | Version 2.11.6 Added `Purge Notification` to return bitfields section. No optional fields may be selected for `Purge Notification` but fields may be added over time. Updated note for Order Execution message, adding C1 as applicable platform for complex orders. |
| September 28, 2020 | Version 2.11.7 Added EquityExDestination (22016) values of 'F',’L’, and ‘S’ (effective 10/7/20). |
| October 6, 2020 | Version 2.11.8 Added CrossType value of ' `4` = Position Compression Cross ("PCC") on New Order Cross and New Order Cross Multileg messages (C1 Only) (effective 10/28/20 10/29/20). Updated description of MassCancelLockout field in `Purge Notification` message to indicate `Y` = lockout or 'N' =no lockout. |
| October 14, 2020 | Version 2.11.9 Added note indicating Complex PCC orders cannot be composed of both SPX and SPXW in the same instrument. Added SubLiquidityIndicator value of `P` = PCC (C1 Only) (effective 10/28/20 10/29/20). Updated drill-through procedures to be iterative (effective 11/9/20 on EDGX and 11/10/20 on BZX, C1, and C2) |
| October 29, 2020 | Version 2.11.10 Added note to description of Capacity optional field indicating the Capacity field must be set to M for all `Quote Update` messages. Updated description of CrossType in List of Optional Fields to include '4'=PCC ( (C1 Only) and added note to Compression description to indicate when CrossType = `4` Compression field should not be specified (effective 10/28/20 10/29/20). Updated the `Floor Trade Notification` message due to a typo in the offset of the MaturityDate field and all fields that come after it in the message. Added SendTime as required field for `Cancel Order` and `Purge Order` messages (effective 01/29/21). |
| November 2, 2020 | Version 2.11.11 Corrected `Cancel Order` message description and updated examples. Corrected `Purge Order` message description by adding Reserved field in place of deprecated MassCancelInst and updated example. |
| November 5, 2020 | Version 2.11.12 Updated iterative drill-through procedures effective date (effective 11/16/20 on EDGX and 11/17/20 on BZX, C1, and C2) |
| December 17, 2020 | Version 2.11.13 Added CrossType value of ' `5` = Related Futures Cross ("RFC") on New Order Cross Multileg message (C1 Only) (effective 01/19/21). Added SubLiquidityIndicator value of `F` = RFC (C1 Only) (effective 01/19/21). Added note to ClearingAccount field indicating when Capacity is set to "M" for Market-Maker, any unregistered accounts in this field will cause the quote or order to be rejected with a reason code of "A" and sub-reason code "L". Added new subreason code, `L` = Unregistered MM Account ( effective 02/08/21 ). |
| January 14, 2021 | Version 2.11.14 Clarified description of 2 nd character (Acknowledgement Style) value "M" for MassCancelInst field. Clarified that invalid EFID values specified in OnBehalfOfCompId will result in rejects of MassCancelInst or Purge Requests. Added notes to `QuoteUpdate` message and ClearingAccount field indicating when Capacity is set to "M" for Market-Maker, any unregistered accounts in this field will cause the quote sent via the Quoting Interface to be rejected with a reason code of "C" ( effective 02/08/21 ). |
| February 3, 2021 | Version 2.11.15 Updated effective date for changes to `QuoteUpdate` message and ClearingAccount field indicating when Capacity is set to "M" for Market-Maker, any unregistered accounts in this field will cause the quote sent via the Quoting Interface to be rejected with a reason code of "C" (effective 03/01/21). |
| February 10, 2021 | Version 2.11.16 Added Section 1.6.1 - Architecture to provide high level overview of protocol architecture and source IP blocking feature. Added Section 1.6.12 - Stale NBBO to describe system behavior when SIP NBBO is unavailable. Added "Forced Open Cancel Instruction" to Port Attributes table (effective 3/12/21 for EDGX, 3/15/21 for BZX, C1, C2). |
| February 22, 2021 | Version 2.11.17 Added "EFID Filter for Purge Ports" to Port Attributes table (effective 3/17/21). |
| March 25, 2021 | Version 2.11.18 Section 1.6.12 (Floor Routing) - Corrected list of example conditions which cause default routing to theFloor. Added Curb session hours (effective 04/25/22 TBD 02/07/22 TBD 09/27/21 Q3 2021 ). Added new section 1.3.1 on holiday sessions (effective 11/21/21 Q4 2021 ). Added new section 1.6.5 on cancellation of carried orders between trading sessions (effective 04/25/22 TBD 02/07/22 TBD 09/27/21 Q3 2021 ). Updated description of SessionEligibility message (effective 01/24/22 TBD 09/27/21 Q3 2021 ). Updated 4.1.10 on risk reset between GTH and Curb session (effective 04/25/22 TBD 02/07/22 TBD 09/27/21 Q3 2021 ). |
| April 5, 2021 | Version 2.11.19 Added note indicating Fat Finger checks are not applicable for any floor-based Multi-Class Spread limit orders(effective 04/20/21). |
| April 15, 2021 | Version 2.11.20 Updated section 4.1.7 to clarify quote cancellation behavior when a trading day spans multiple calendar days. |
| May 13, 2021 | Version 2.11.21 Updated Curb session related effective dates to 01/24/22 TBD 09/27/21 . |
| June 08, 2021 | Version 2.11.22 Updated CumQty Section for C1 Floor Specific Handling. Removed FrequentTraderID from `Modify Order` message as this functionality is not being used on the `Modify Order` message. Added new optional field LegPositionEffectsExt to accommodate maximum of 16 legs allowed on complex orders (effective 08/25/21 08/09/21 ). |
| June 15, 2021 | Version 2.11.23 Updated effective date for extended GTH session to 11/21/21. |
| August 2, 2021 | Version 2.11.24 Updated Modify Order Input Bitfield table to indicate that FrequentTradeID cannot be requested for the `Modify Order` message. Updated effective date for optional field LegPositionEffectsExt to accommodate maximum of 16 legs on complex orders (effective 08/25/21). |
| August 24, 2021 | Version 2.11.25 Updated sections 4.1.7 (Quote Update) and 1.6.6 (Display Indicator Features) to note that quotes will be accepted if priced through the NBBO within a configurable buffer (effective 09/15/2021). |
| August 25, 2021 | Version 2.11.26 Updated Curb session effective date to 01/24/22 TBD . |
| September 9, 2021 | Version 2.11.27 Added new value of "B" (RTH+Curb) for SessionEligibility message (effective 01/24/22 TBD ). |
| September 28, 2021 | Version 2.11.28 Added new "I" value to MassCancelInst , indicating multi-unit cancel acknowledgments; added new SourceMatchingUnit field to `Mass Cancel Acknowledgement` . (effective 11/15/21). Added TradeDate to list of Optional Fields and added note indicating TradeDate will be available on the `Order Execution` message (effective 11/21/21). |
| October 15, 2021 | Version 2.11.29 Added ‘I’ value to PostingInstruction on `Quote Update` and `Quote Update Short` messages (Effective 12/10/21 for EDGX and 12/12/21 for BZX/C1/C2). |
| October 21, 2021 | Version 2.11.30 Added new subreason code `S` = Minimum size requirement not met (effective 11/28/21). |
| November 4, 2021 | Version 2.11.31 Updated Curb session effective date to 04/25/22 TBD 02/07/22 . Updated Hour of Operation to eliminate Sunday 7:15 p.m. GTH Order Acceptance time. Updated Holiday Session Figure 1. Updated effective date for new SessionEligibility message value of "B" (RTH+Curb) to 01/24/22. Added clarification to description of MassCancelInst value 'I' to indicate that message type must be `Purge Orders` ; `Mass Cancel` . |
| November 12, 2021 | Version 2.11.32 Added new optional Held field that will be available on `New Order` , `New Order Complex` , and Execution Report messages (C1 Only) (effective 12/12/21). |
| December 1, 2021 | Version 2.11.33 Added note to section 1.6.6 indicating certain functionality is BZX only. Corrected reference to FIX Tag 439 (ClearingFirm). Added clarifying note to section 1.6.7.5 to indicate that Quotes that cross the NBBO or displayed Cboe book will be accepted if within a configurable buffer. Added `I` = IOC Quote Accepted to QuoteResult field. |
| December 3, 2021 | Version 2.11.34 Clarified description of optional Held field to indicate default value of 'N' applies when an order is directed to a Non-PAR Official (C1 Only) (effective 12/12/21). |
| December 16, 2021 | Version 2.11.35 A `Logout` message will also be sent for any ports that are connected when the Options Exchanges shut down (effective 01/09/22). |
| January 13, 2022 | Version 2.11.36 Updated US Holiday Trading Hours graphic. Noted that CAT reporting requirements mandate that QuoteUpdateID is unique for each Quote Update message sent to the Exchange. Added a new MatchingUnit field to Optional Fields and Purge Order Bitfield (effective 02/11/22 for EDGX and 02/14/22 for C1, C2, and BZX). Updated Purge Orders section indiciating that CustomGroupID or EFID ( ClearingFirm ) purges with no RiskRoot may be directed to a specific matching unit using the MatchingUnit optional field (effective 02/11/22 for EDGX and 02/14/22 for C1, C2, and BZX). |
| January 21, 2022 | Version 2.11.37 Duplicative Order Protection Time Threshold to be sunset (effective 02/27/22). Duplicative Order Protection Order Count will look at consecutive orders (effective 02/27/22). |
| February 1, 2022 | Version 2.11.38 Updated Curb session effective date to 04/25/22 TBD . |
| February 22, 2022 | Version 2.11.39 Added a new section 1.6.7.3 to detail Stop or Stop Limit Orders Drill-Through Handling (TBD effective 03/28/22 ). Noted that if both sides of a complex/spread trade are on the same order entry session, Cboe does not guarantee that the leg executions will not be interleaved between sides. |
| March 7, 2022 | Version 2.11.40 MaxRemovePct field to be sunset on BZX (effective 05/06/22), C1 (effective 05/08/22), and C2/EDGX (effective 05/09/22). |
| March 14, 2022 | Version 2.11.41 Changed effective date for updated Stop/Stop Limit Drill-Through Handling to TBD. |
| April 4, 2022 | Version 2.11.42 Updated Curb session effective date to 04/25/22. |
| November 7, 2022 | Version 2.11.43 Updated OrdType = 1 (Market) to indicate market and stop orders are not supported during GTH or Curb sessions. The maximum allowed message rate is 1 msg/sec for test products. The length of LoginResponse will vary depending on acceptance or rejection of the LoginRequest . Added XSP to GTH and Curb sessions (effective 12/11/22). |
| November 30, 2022 | Version 2.11.44 Stop/Stop Limit orders will only elect based off of RTH quotes and trades (effective 12/18/22). |
| January 24, 2023 | Version 2.11.45 Updated Architecture and Message in Flight Settings section (BZX only) (effective 03/24/23). |
| February 27, 2023 | Version 2.11.46 Updated OpenClose to indicate if the leg is limited to closing only transactions, only Capacity = `M` or ‘N’ will be permitted to submit OpenClose = `O` if the order has `TimeInForce` = ‘3’ (IOC) and RoutingInst = `B` , or the order has a RoutingInst = `P` . Updated LegPositionEffect, LegPositionEffects and LegPositionEffectsExt to indicate if the leg is limited to closing only transactions, only Capacity = `M` or ‘N’ will be permitted to submit OpenClose = `O` if the order has `TimeInForce` = ‘3’ (IOC) and RoutingInst = `B` . |
| March 29, 2023 | Version 2.11.47 An Open position cannot trade with an Open position for series limited to Closing Only transactions, even if the inbound IOC from the aggressing market maker is sent with that combination of tags. |
| April 17, 2023 | Version 2.11.48 Added effective dates to Architecture and Message in Flight Settings section (effective 04/28/23 on EDGX, 05/12/23 on C2, and 5/29/23 on C1). |
| May 2, 2023 | Version 2.11.49 Updated Bulk Quoting Port Quote/Order Behavior Matrix section. |
| May 15, 2023 | Version 2.11.50 Added TargetMatchingUnit to the `Reset Risk` message (effective 06/12/23). |
| June 13, 2023 | Version 2.11.51 Updated sections 1.6.7.2 and 1.6.7.3 to include drill-through handling enhancements (effective 08/07/23 07/17/23 on C1). |
| June 15, 2023 | Version 2.11.52 Updated priority treatment of no-change quotes, added new QuoteResult value of ‘O’ (Unknown quote), and noted modifications to quotes or orders will result in the same time priority behavior (effective 10/25/23 08/16/23 on C2, and 10/30/23 08/21/23 on BZX, C1, and EDGX). |
| July 20, 2023 | Version 2.11.53 Added RiskResetResult = `M` (invalid matching unit). Updated OpenClose to indicate if the leg is limited to closing only transactions, only Capacity = `M` will be permitted to submit OpenClose = `O` if the order has `TimeInForce` = ‘3’ (IOC) and RoutingInst = `B` , or the order has a RoutingInst = `P` . Updated LegPositionEffect, LegPositionEffects and LegPositionEffectsExt to indicate if the leg is limited to closing only transactions, only Capacity = `M` will be permitted to submit OpenClose = `O` if the order has `TimeInForce` = ‘3’ (IOC) and RoutingInst = `B` |
| July 28, 2023 | Version 2.11.54 Clarified that Price is optional on `Modify Order` requests for market orders. Added new ExDestination value of ‘M’ (MEMX) and added new ContraBroker value of ‘MEMX’ (effective 08/07/23). Updated effective dates for priority treatment of no-change quotes, new QuoteResult value of ‘O’ (Unknown quote), and modifications to quotes or orders that will result in the same time priority behavior (effective 10/25/23 on C2, and 10/30/23 on BZX, C1, and EDGX). |
| August 4, 2023 | Version 2.11.55 Updated effective dates for drill-through handling enhancements on C1, and updated drill-through parameter ranges (effective 08/07/23). Updated `Purge Orders` to indicate that MassCancelInst must be populated and ClearingFirm is only required if a list of configured/allow EFIDs has not been configured on the session. |
| August 15, 2023 | Version 2.11.56 Updated effective date for drill-through handling enhancements on C2, BZX, and EDGX (effective 08/25/23). |
| August 22, 2023 | Version 2.11.57 TransactionTime in `Mass Cancel Acknowledgement` messages will indicate the time the event occurred in the Cboe Matching Engine (effective 09/05/23). |
| October 30, 2023 | Version 2.11.58 Updated the identical Purge message definition to include MatchingUnit (effective 11/13/23). |
| December 18, 2023 | Version 2.11.59 Clarified that if OrderCapacity is not set to "M: or "N" and ClearingAccount is populated, the order will be (by default) rejected on C1 and C2 and accepted on BZX and EDGX Only. Updated TradeTime to FloorTradeTime . Added new return bitfield, FloorTradeTime , which will be available as byte 19, bit 1 of the `Order Execution` message (C1 only) (effective 01/16/24). |
| January 10, 2024 | Version 2.11.60 Clarified that the "Default EquityPartyID " port attribute is applicable to C1 and EDGX only. Added a new "Default EquityExDestination " port attribute (effective 04/29/24 03/11/24 ). |
| February 2, 2024 | Version 2.11.61 Updated section 1.6 to include latency expectations as well as Members/TPH's responsibility to monitor the status of the messages they send to the exchange. |
| February 12, 2024 | Version 2.11.62 Added new return bitfield, EquityExDestination , which will be available as byte 19, bit 2 of the Order Execution message (C1 and EDGX only) (effective 04/29/24 03/11/24 ). |
| March 8, 2024 | Version 2.11.62 Clarified the CrossInitiator (C1 and EDGX only) description to indicate that the MPID field is required on orders routed to destinations via NYSE Chicago using EquityExDestination (22016). Updated EquityExDestination port attribute and bitfield effective date to 04/29/24. |
| April 22, 2024 | Version 2.11.63 Clarified Account (1) accepts all characters in ASCII range 33-126. Noted a maximum of 1,295 `Modify Order` requests may be made to a single order each trading day. |
| June 21, 2024 | Version 2.11.64 Clarified that RiskResetResult value `<space>` = Ignored; exceeds 1 reset per 100 milliseconds in `Reset Risk Ackowlegement` messages. Added ExDestination (100) = `w` (MIAX Sapphire) and ContraBroker (375) = `SPHR` . |
| July 1, 2024 | Version 2.11.65 Added CrossOnBehalfOfID (FIX Tag 22028) to `New Complex Order` and `New Order Cross Multileg` (C1 and EDGX only) (effective 07/22/24). |
| July 22, 2024 | Version 2.11.66 Added new Section 1.2 - Certification Requirement. Effective 08/26/24, GTH will be extended until 9:25 a.m. ET (C1 only) . |
| August 28, 2024 | Version 2.11.67 Updated drill-through amounts (effective 09/16/24). |
| September 3, 2024 | Version 2.11.68 Removed pending drill-through changes. |
| December 6, 2024 | Version 2.11.69 Added BZX Options will sunset BOEv2 effective 03/24/25 02/23/25 . |
| January 15, 2025 | Version 2.11.70 Updated with Cboe Titanium branding. |
| January 27, 2025 | Version 2.11.71 Effective 02/10/25, members can optionally choose to reject the AIM auction rather than have the starting price adjusted to meet NBBO requirements using AutoMatch options '3' and '4'. AutoMatchPrice will be required if AutoMatch is set to '2' or '4'. (C1 and EDGX only) |
| February 10, 2025 | Version 2.11.72 Updated BZX Options BOEv2 sunset date to effective 03/24/25. |
| March 18, 2025 | Version 2.11.73 Added new section to Drill-Through Protection for Simple Limit Orders for Wide Market Protection (effective 04/03/25 TBD (EDGX) and 04/07/25 TBD (C1, C2, BZX) ) Removed note that Market orders imply TimeInForce of IOC. |
| March 24, 2025 | Version 2.11.74 Removed BZX Options from this specification. |
| March 28, 2025 | Version 2.11.75 Updated Wide Market Protection effective date to TBD. |
| March 31, 2025 | Version 2.11.76 Corrected table configuration in Bulk Quoting Port Quote/Order Behavior Matrix . |
| April 11, 2025 | Version 2.11.77 Effective 04/25/25 on EDGX and 04/28/25 on BZX, C1, and C2, any `Quote Update` message with a QuoteCnt larger than '1' and a PostingInstruction = `I` (Book Only, IOC) will be rejected. |
| May 30, 2025 | Version 2.11.78 Removed that orders may be included with attributed summary information displays related to quote/trade information on the Cboe website from AttributedQuote . |
| July 2, 2025 | Version 2.11.79 Added new `Complex Quote Update` , `Complex Quote Update (Short)` , and `Complex Quote Execution` messages (effective 09/15/25 08/18/25 ). Updated `Quote Update Acknowledgment` message fields to indicate it is sent in response to `Quote Update` and `Complex Quote Update` messages (effective 09/15/25 08/18/25 ).. Updated `Quote Update Rejected` message fields to indicate it is sent in response to `Quote Update` and `Complex Quote Update` messages (effective 09/15/25 08/18/25 ). Updated `Quote Update Acknowledgment,` `Quote Update Rejected` , `Quote Restated` , and `Quote Cancelled` message fields to indicate they are sent in response to `Quote Update` and `Complex Quote Update` messages (effective 09/15/25 08/18/25 ). Updated BOE Bulk Quoting Ports description, Order Acceptance table, and Order Behavior Matrix to add the new `Complex Quote Update` message for introducing complex instrument quotes (effective 09/15/25 08/18/25 ). |
| July 8, 2025 | Version 2.11.80 Effective 09/08/25, the DateTime data type will begin populating the nanoseconds portion. Added "Send Nanoseconds" port attribute (effective 09/08/25). Updated OrigTime to indicate that the GMT date and time of the original trade will be available in nanoseconds (effective 09/08/25). |
| July 25, 2025 | Version 2.11.81 Updated Cowen to TD Securities (USA) LLC. |
| August 4, 2025 | Version 2.11.82 Updated description of PriceType to include `1` = Traded as percentage on `Floor Trade Confirmation Messages` . |
| August 11, 2025 | Version 2.11.83 Updated `Complex Quote Update` , `Complex Quote Update (Short)` , and `Complex Quote Execution` messages and complex order functionality effective date to 09/15/25. |
| August 12, 2025 | Version 2.11.84 Updated Quote Update Acknowledgment message to indicate that for quotes which may remove liquidity or which may post and cause additional Matching Engine action to be taken QuoteResult values of `D` or `d` will be returned. In these cases, executions, cancellations, or modifications (as needed) will immediately follow as additional messages. |
| August 15, 2025 | Version 2.11.85 Updated CustomGroupIDCnt description to indicate a maximum of 10 integers are allowed. |
| August 20, 2025 | Version 2.11.86 Updated Carried Order Restatements to indicate that GTC, GTD, and Day orders entered during partial holiday sessions can also persist between multiple trading sessions. Updated Cancellation of Carried Orders Between Trading Sessions to indicate that at the scheduled end of trading for a product, cancellation requests for persisted orders in that product will be rejected with reason `O: Order known, but cannot be canceled at this time until after the system restart completes.` |
| September 8, 2025 | Version 2.11.87 Removed "Send Nanoseconds" port attribute. |
| September 11, 2025 | Version 2.11.88 Updated List of Optional Fields to include new StrategyID (C1 Only) values `F` = CompressionForum , `B` = BoxSpread , and `A` = BoxSwap . |
| September 15, 2025 | Version 2.11.89 Corrected length of the Price field in the repeating group of the `Complex Quote Update (Short)` message from 8 to 4. Corrected length of price Reserved field in the body of the `Complex Quote Update (Short)` message from 15 to 3. Corrected length of the Reserved field in the repeating group of the `Complex Quote Update (Short)` message from 12 to 2. Corrected offset values in the `Complex Quote Update (Short)` message. Corrected MessageLength field in `Complex Quote Update (Short)` message from 145 to 81 bytes. Removed effective dates (effective 09/15/25) for Complex Quoting messages and fields. |
| October 3, 2025 | Version 2.11.90 Removed Complex Order language from Drill-Through Protection for Simple Limit Orders . Clarified language in Market/Limit Order Drill-Through for Complex Orders |
| October 20, 2025 | Version 2.11.91 Renamed "Drill-Through Protection for Simple Limit Orders" to "Drill-Through Protection for Simple Orders". Updated Hours of Operation to remove reference to specific products traded in GTH, replacing it with "GTH-eligible Products". |
| October 31, 2025 | Version 2.11.92 Cboe Titanium U.S. Options BOE protocol will be sunset on ​11/02/26. |
| November 25, 2025 | Version 2.11.93 Removed Stale NBBO from the Cboe Titanium U.S. Options BOE specification |
| December 8, 2025 | Version 2.11.94 Added Wide Market Protection (C1 only) and updated Drill-Through Protection for Simple Orders (effective 12/15/25). |
| December 16, 2025 | Version 2.11.95 Clarified that NumberOfPurge is NumberOfPurgeOrderBitfields in Table 51 of Purge Order messages . |
| January 7, 2026 | Version 2.11.96 Added new SubLiquidityIndicator value `U` = Market Turner (C1 Only) for Quote Execution messages. Removed SubLiquidityIndicator value `Q` = QCC (C1 and EDGX Only) from Quote Execution messages. |
| January 12, 2026 | Version 2.11.97 Updated Carried Order Restatements to explain restatements will be sent at the new order carry over time (effective 02/02/26). |
| January 13, 2026 | Version 2.11.98 Added StopPxType (FIX Tag 25026) and StopPx (FIX Tag 99) to New Complex Order (C1, C2, and EDGX Only) , and StopPxType to byte 19 in Return Bitfields Per Message (effective TBD 05/18/26 TBD ). |
| January 20, 2026 | Version 2.11.99 Updated tables in Exchange Default Fat Finger Limits to clarify relevant products. |
| February 10, 2026 | Version 2.11.100 Updated Nasdaq BX to Nasdaq Texas. Added TargetMatchingUnit to the set of values that make a `Reset Risk` message unique (effective 02/16/26). |
| February 27, 2026 | Version 2.11.101 In Wide Market Protection, updated WMP Determinants table to include all proprietary index products (effective 03/09/26). |
| April 6, 2026 | Version 2.11.102 Updated effective date to TBD 05/18/26 : Added StopPxType (FIX Tag 25026) and StopPx (FIX Tag 99) to New Complex Order (C1, C2, and EDGX Only) , and StopPxType to byte 19 in Return Bitfields Per Message . |
| April 15, 2026 | Version 2.11.103 Updated Exchange Default Fat Finger Limits , Holiday Sessions (C1 Only) and Hours of Operation 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. |
| May 14, 2026 | Version 2.11.104 Updated effective date to TBD: Added StopPxType (FIX Tag 25026) and StopPx (FIX Tag 99) to New Complex Order (C1, C2, and EDGX Only) , and StopPxType to byte 19 in Return Bitfields Per Message . |
| June 12, 2026 | Version 2.11.105 Updated planned expansion of C1 trading hours for select equity options to 08/17/26. |
| June 29, 2026 | Version 2.11.106 Updated Cancel Order Message Fields and List of Optional Fields to deprecate Lockout instruction on Mass Cancel messages (effective 08/24/26). |
| June 30, 2026 | Version 2.11.107 Updated RoutingInst (FIX Tag 9303) in List of Optional Fields , indicating `S` = Expose order via Step-Up Mechanism (SUM) will be applicable to C2 effective 09/04/26. |
| July 6, 2026 | Version 2.11.108 Updated Account to indicate that when clearing OCC, the value is passed to clearing in the Clearing Member Optional Data field (16 characters) and the Customer ID field (10 characters). When clearing Cboe Clear U.S., the value is passed in the Customer Account Number field on List of Optional Fields and Add Floor Trade Messages . Updated Default Account Port Attribute description to Default Account to be used if none is sent on inbound messages. Allows up to 16 characters (ASCII 33-126). |
| July 7, 2026 | Version 2.11.109 Updated Order Reason Codes to include code 4=After volatility cutoff. |
| August 6, 2026 | Version 2.11.110 Added ContraBroker values IEX and MXTO, and ExDestination values I and J for IEX Options and MX2 Options. |
| August 10, 2026 | Version 2.11.111 Updated planned expansion of C1 trading hours for select equity options to TBD. |
| August 14, 2026 | Version 2.11.112 Noted that Cabinet and Sub-Cabinet Orders (C1 Only) require direct or default floor routing instructions. |
| August 17, 2026 | Version 2.11.113 Effective 08/24/26, the drill-through preset duration will be 100 ms for all products on all Exchanges, and WMP will be initiated up until the close of the RTH or Curb trading sessions. Updated effective date to 09/28/26 for deprecate Lockout instruction on Mass Cancel messages. |
