# Cboe Titanium U.S. Options FIX Specification

Version 2.8.17 · August 17, 2026

## Introduction

Cboe members use a subset of the FIX 4.2 protocol for order entry and drop copies.

It is assumed that the reader is familiar with the FIX 4.2 protocol as described at http://www.fixprotocol.org. This document describes the differences between the Cboe implementation and the FIX 4.2 standard.

Please refer to https://www.cboe.com for updates and further information on policies and procedures.

### 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 highlights highlight key differences between the Cboe US Options Exchanges (BZX Options Exchange BZX only, Cboe Options Exchange C1 only, C2 Options Exchange C2 only, and EDGX Options Exchange EDGX only).

### Hours of Operation

Refer to Holidays & Hours for Cboe trading hours and holiday schedules. All times are listed in the Eastern Time zone (ET).

All orders are live upon acceptance by the Cboe Options Exchanges. Orders are rejected if they are received outside the sessions as defined in the Hours Of Operation table.

The 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 will allow 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 refer to the Cboe Titanium U.S. Options Opening Process specification.

The Cboe Options Exchanges do not support a closing auction, but do support Extended Trading for 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 and execution reports will be delivered.

#### 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

#### Times

All FIX timestamps are listed in Greenwich Mean Time (GMT) per FIX standard. Users are expected to synchronize their clocks with an external time source.

#### Prices

Users should program their systems to allow execution prices to be returned with up to four decimals.

**Table 1. Prices Example:**

| Examples | Description |
|---|---|
| 1.0010, 1.0001, 12.3456 | Accepted - Flex, Sub-Cabinet, Complex with Equity Legs otherwise rejected. |
| 1.0000, 1.00, 12.3400, 12.34, etc. | Accepted - round penny (extra trailing zeroes are fine). |

### 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 FIX 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 FIX ports. The Cboe NOC should be contacted in the event that a Member desires to connect from a new source IP range.

Each FIX 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 FIX 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, then 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.

#### Done For Day Restatements

Good ‘Til Cancel (GTC) and Good ‘Til Day (GTD) orders can result in orders persisting between sessions. The Cboe FIX protocol provides a mechanism for clients to request an end-of-day restatement of GTC/GTD orders to be persisted to the next trading session (see FIX 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. Customers may send Order Cancel Request messages for any open GTC and GTD orders any time prior to the cutoff.

Execution Report messages representing done for day orders will have ExecTransType = 3 (status), ExecType = 3 (DoneForDay), ExecRestatementReason = 1 (Good ‘Til Restatement), and OrdStatus = 3 (DoneForDay).

To enable Done For Day Restatements via port attribute setting, customers should contact the Cboe Trade Desk.

#### Carried Order Restatements

GTC, GTD, and DAY orders entered during partial holiday sessions can also result in orders persisting between multiple trading sessions. The Cboe FIX protocol provides a mechanism for clients to request restatement of orders that have been carried forward from the previous business day trading session (see FIX 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 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-symbol basis.

Execution Report messages representing carried orders will have ExecTransType = 3 (status), ExecType = D (Restated) and ExecRestatementReason = 1 (Good ‘Til Restatement).

To enable Carried Order Restatements via port attribute setting, customers should contact the Cboe Trade Desk.

#### Cancellation of Carried Orders Between Trading Sessions

GTC and GTD orders persist within the Cboe Options Exchanges between business days. On BZX, 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 will be updated to 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, `Order Cancel Request` 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 FIX Port Attributes for information on available port attributes).

#### Display Indicator Features

Display-Price Sliding (BZX Only)

If the original limit price of the unexecuted remainder of a day order does not lock or cross the NBBO, Cboe works the order at the original limit price while displaying it at the nearest permissible quoting increment. If the original limit price does lock or cross the NBBO, Cboe makes available Display-Price Sliding.

Display-Price Sliding adjusts the original limit price on entry to the locking price of the NBBO. It will be ranked and worked at a price locking the NBBO but will temporarily adjust the displayed price to the nearest permissible quoting increment. When the NBBO widens, the display price will be readjusted to the adjusted limit price. The display price may be temporarily less aggressive than the adjusted limit price or working price.

Multiple Display-Price Sliding does not permanently adjust the original limit price on entry, but allows for Display-Price slid orders to continue to have their display and working prices adjusted towards their original limit price based on changes to the prevailing NBBO.

Contra-side Post Only orders received when a Display-Price Slid order is working at a locking price with the NBBO will not result in a reject of a contra-side Post Only order but will instead result in the working price of the Display-Price Slid order to be repriced to one penny away from the locking price.

Price Adjust

If the limit price of an order does not lock or cross the NBBO, 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.

NoRescrapeAtLimit (BZX Only)

Applicable only to fully routable IOC orders (9303 = R and 59 = 3). After walking the price down to the limit, there will be no final scrape at Cboe, and the cancel code will state X: Expired rather than N: No Liquidity.

#### 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

1. NBBO = $1.00 x $4.00
2. Midpoint = $2.50 x 100% = $2.50 (min of 5.00 is used instead)
3. 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 will not be applicable for any Multi-Class Spread instruments that trade on the floor only. Fat Finger checks will remain applicable for Multi-Class complex instruments containing only SPX or SPXW legs as they are eligible for trading on the electronic book.

**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 |

See the Cboe Titanium U.S. Equities/Options Web Portal Port Controls Specification for additional details on how fat finger settings can be managed intraday by Members.

##### Maximum Open Order Limits

The exchange limits the Maximum number of open orders allowed on a FIX 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.

#### Risk Root

This document uses the term "Risk Root" to denote the underlying symbol in the context of Cboe Options Risk Management functionality. This informs what value must be sent in the defined RiskRoot fields when performing a mass cancel or resetting a risk trip.

See the Cboe Titanium U.S. Options Risk Management Specification for more details.

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

Cabinet orders are identified via PriceType (423) = 0 and must have a valid TimeInForce (59) of `Day` or `GTC`. Cabinet orders can support a position status of Open or Close, identified via OpenClose (77). 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).

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.

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.

Cabinet orders or executions are not disseminated on OPRA but will be available on the Cboe Titanium U.S. Equities/Options Multicast Depth of Book (PITCH) Specification and Cboe Titanium U.S. Options Multicast TOP Specification.

#### Flex Order Entry (C1 Only)

Orders for FLEX options may be entered using the `New Order Single`, `New Order Multileg`, `New Order Cross,` or `New Order Cross Multileg` message types. The OSI symbol specified in Symbol (55) will determine the type of FLEX product being traded.

Existing FLEX symbols can be traded during GTH sessions but currently new symbol creation is not permitted during GTH sessions. Effective July 13, 2026 FLEX symbol creation will be allowed for GTH-Eligible proprietary index and GTH-Eligible multilist options starting at 7:30 a.m. ET. FLEX symbol creation in GTH prior to 7:30 a.m. ET will continue to not be permitted. Additionally, during GTH or Curb sessions, trading of percentage FLEX or FLEX DAC orders will not be permitted. FLEX symbol creation is enabled during the Curb trading session.

**Table 1. FLEX Option Products**

| Underlying Security | Lead Char | Settlement Type | Exercise Style |
|---|---|---|---|
| Index | 1 | AM | American |
| Index | 2 | AM | European |
| Index | 3 | PM | American |
| Index | 4 | PM | European |
| Index | 5 | Asian | European |
| Index | 6 | Cliquet | European |
| Equity/ETF | 1 | PM | American |
| Equity/ETF | 2 | PM | European |

For example, an OSI of `3SPX` would be used to enter a FLEX order or cross for an SPX option that is PM settled and that has an American exercise style.

Asian settlement types further encode in the fifth character an observation day of month for index value observations.

**Table 2. FLEX Asian Settlement OSI Format**

| Lead Char | Symbol Abbr. | Observation Day of Month |
|---|---|---|
| 5 | `SPX` = SPX `RUT` = RUT `XSP` = XSP `DJX` = DJX | `1` = 1 `2` = 2 … `9` = 9 `0` = 10 `A` = 11 `B` = 12 … `U` = 31 |

For example, OSI `5RUTC` reads as "Asian RUT option having capped observation day of month 13."

Cliquet settlement types encode the underlying index in the second character, a cap return percentage in the third and fourth characters, an observation in the fifth character, and a creation day of month in the sixth.

**Table 3. FLEX Cliquet Settlement OSI Format**

| Lead Char | Symbol Abbr. | Cap % (whole) | Cap % (frac) | Obs. Day | Creation Day |
|---|---|---|---|---|---|
| 6 | `S` = SPX `R` = RUT `X` = XSP `D` = DJX | `A` = 0 `B` = 1 … `Z` = 25 | `A` = 00 `B` = 05 … `T` = 95 | `1` = 1 `2` = 2 … `9` = 9 `0` = 10 `A` = 11 `B` = 12 … `U` = 31 | `1` = 1 `2` = 2 … `9` = 9 `0` = 10 `A` = 11 `B` = 12 … `U` = 31 |

For example, OSI `6DCH8T` reads as "Cliquet DJX option having capped return percentage of 2.35%, observation day of month 8 and creation day of month of 30."

**Table 4. FLEX Micro OSI Format**

| Type | SPX | RUT | DJX |
|---|---|---|---|
| AM Amer | 1SPX9 | 1RUT9 | 1DJX9 |
| AM Euro | 2SPX9 | 2RUT9 | 2DJX9 |
| PM Amer | 3SPX9 | 3RUT9 | 3DJX9 |
| PM Euro | 4SPX9 | 4RUT9 | 4DJX9 |

If tag Symbol (55) is as FLEX OSI symbol, then expiration date, strike price, and call/put indicator are also required.

Alternatively, the Cboe Identifier for an existing FLEX symbol can be specified in Symbol (55).

FLEX can be traded as a percentage of the closing price of the underlying for the day by indicating PriceType (423) = 1. Price (44) and LegPrice (566) must be in percentage terms if and only if the strike price of the FLEX option is also in percentage terms. When a percentage Cboe symbol is specified for Symbol (55), but no PriceType (423) value is provided, the order will be rejected. FIX users may opt-in to receive restatement messages at the end of the day once the percentage price has been converted into dollars. Complex FLEX orders containing at least one option leg which is not a FLEX option may not be submitted using percentage terms.

FLEX orders initiating an auction are required to specify FLEXAuctionDuration (21010). The minimum valid value for FLEXAuctionDuration is 3,000 milliseconds. The maximum valid value is 300,000 milliseconds.

FLEX orders require Price (44) be provided. All complex FLEX orders must specify LegPrice (566) per leg, unless routed directly to the floor. When specifying FloorRoutingInst (22303) = D to route complex FLEX orders directly to the floor, leg prices are optional and can be provided for all legs, a subset of legs, or left blank. LegPrice (566) must be left blank for any Option Leg of a Complex FLEX Order that is not a FLEX Option. Complex FLEX orders responding to an auction should not specify any LegPrice (566).

##### FLEX Delta Adjusted At Close (C1 Only)

FLEX Delta Adjusted At Close (DAC) are limit orders for FLEX options that execute intraday and receive a delta-adjusted price based on that day’s official closing price of the underlying security or index value. FLEX DAC orders can be traded by indicating PriceType (423) = D. FLEX DAC orders are only supported for ETF/ETN/ETP and index products and are only executed via AIM, SAM, and single-sided auctions. The maximum number of legs on a FLEX DAC order is 99. Equity legs are allowed on FLEX orders. FLEX DAC orders allow up to 98 options legs and one equity leg. Complex FLEX DAC Orders may not contain option legs which are not for FLEX options.

FLEX DAC supports trading in all equity, ETF, and index options. Equity single leg options are only permitted to trade within the last 45 minutes of RTH. Equity option, single-leg DAC orders will be prevented from being submitted/executed/closed out on the day of their expiration date. These restrictions do not apply to complex DAC orders in equity options products, or to single-leg or complex DAC orders in ETF or index products.

For FLEX DAC orders, the execution price will be re-calculated at the close based on the following formula:

Initial execution price + (designated delta) x (actual change in underlying reference price versus official closing price)

A = I + (D * (C - R)), where:

- `A` = Adjusted price
- `I` = Initial execution price
- `D` = Delta (positive number for calls; negative number for puts)
- `R` = Underlying reference price
- `C` = Closing price for the underlying security or index

After the close, a `Trade Cancel/Correct` message (UCC message) is sent for each FLEX DAC execution. The message is marked as `Correct` (ExecTransType = 2) with the CorrectedPrice (9620). The `Trade Cancel/Correct` message (UCC message) will also include the Delta (22023), ReferencePrice (22025), ClosingPrice (22004), ClearingOptionalData (9324), and FeeCode (9882) fields.

#### 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
- Any FLEX order not participating in an auction
- 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 FIX Port Attributes for information on available port attributes, including Default FloorRoutingInst and Default FloorDestination).

**Table 1. Floor Destination Routing Instructions**

| 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, and 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 FIX protocol provides a mechanism for clients to request restatement of orders at the time of representation. See FIX Port Attributes and FIX Drop Port Attributes for information on available port attributes, including Floor Representation Restatements.

When enabled, 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 the FIX and BOE ports will also be sent to connected Order by Order Drop clients having the Floor Representation Restatements port attribute enabled.

Execution Report messages for floor representation will have ExecTransType (20) = 3 (Status), ExecType (150) = D (Restated) and ExecRestatementReason (378) = 7 (Represented in Crowd). The TransactTime (60) will be the recorded time of the representation.

To enable Floor Representation Restatements via port attribute setting, customers should complete a modification request using the Logical Port Request form within the Cboe Customer Web Portal.

##### Floor Clearing Edits

Orders executed on the Cboe Options trading floor may be edited after the trade has occurred using the Clearing Editor tool to correct trade entry errors. If a clearing edit is made to either side of a floor trade to adjust non-clearing related trade fields such as Price, Size, Symbol, etc, then this will result in a cancellation of the original trade (UCC message) and new orders/trades being created in the system for both sides of the trade. The new orders will have a system-generated ClOrdID (11) that begins with a tilde (~). The InitialClientOrderId (22020) field will contain the original ClOrdID (11) from the order that was routed to the Exchange and can be used to associate the trade cancel or new trade message with the original order.

Firms can use a FIX DROP port with the Allow Executions and Send Trade Breaks attributes enabled in order to receive a real-time notification when these cancellation and new trade events occur that result from a post trade clearing edit. Cancellation and new trade events resulting from floor clearing edits will not be sent to the originating FIX or BOE port where the order originated and are only available over FIX Drop. Firms are also encouraged to use the Clearing Editor tool to monitor for unmatched trades.

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

Market Maker Trade Notifications (MMTN) will be sent to Market Makers if they are identified as the contra party on a floor trade. MMTN messages will be sent to the Market Makers as `Execution Reports` messages with ExecType (150) = T over a designated FIX Drop port or a FIX or BOE order entry port. See FIX Port Attributes and FIX Drop Port Attributes for information on available port attributes related to the receipt of MMTN messages.

Market Makers that receive a notification of a trade are required to use `Floor Trade Confirmation` messages or `Add Floor Trade` messages to respond to MMTN messages if they agree with the terms of the trade in the `Execution Report`.

### Auction Orders

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

**Table 1. Auction Orders**

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

## Protocol

### Message Format

FIX messages are ASCII formatted. The user will be provided with a SenderCompId and SenderSubId that must be sent on every message. The TargetCompId for all messages the user sends will be `BATS`, `CBOE`, `CTWO`, or `EDGX`. All messages the user receives will have the Sender and Target fields swapped.

**Table 1. Message Format**

| Destination Exchange | TargetCompID |
|---|---|
| BZX Options | BATS |
| Cboe Options (C1) | CBOE |
| C2 Options | CTWO |
| EDGX Options | EDGX |

### Sequence Numbers

Sequence numbers, both inbound and outbound, will be reset to 1 each night during system down time.

Messages are processed in sequence order. Behind sequence messages (other than `Sequence Reset` - Reset) will cause an immediate logout. Ahead of sequence messages (other than a Resend Request) will trigger a message recovery via a `Resend Request`.

### Version Compatibility

Cboe uses the FIX 4.2 session protocol.

## Sessions

The following session messages are supported in both directions:

**Table 1. Session Messages**

| Message | Type | Comment |
|---|---|---|
| Logon | A | Begin session (or resume a broken session). |
| Heartbeat | 0 |  |
| Test Request | C |  |
| Resend Request | 2 |  |
| Reject | 3 | Malformed message or improper session level handling. |
| Sequence Reset | 4 | Both Gap Fill (GapFillFlag = Y) and Reset. |
| Logout | 5 | Used to gracefully close session. |

### Connectivity

**Table 1. Connectivity Messages**

| Attribute | Description | Value |
|---|---|---|
| IP Address | Address to connect to. | Supplied by Cboe. |
| TCP Port | Port to connect to. | Supplied by Cboe. |
| SenderCompID | Sent in every FIX message to Cboe. | Supplied by Cboe. |
| SenderSubID | Sent in every FIX message to Cboe. | Supplied by Cboe. |
| TargetCompID (BZX Options) | Sent in every FIX message to BZX Options. | "BATS" |
| TargetCompID (C1 Options) | Sent in every FIX message to C1 Options. | "CBOE" |
| TargetCompID (C2 Options) | Sent in every FIX message to C2 Options. | "CTWO" |
| TargetCompID (EDGX Options) | Sent in every FIX message to EDGX Options. | "EDGX" |
| TargetSubID | Sent in every FIX message to Cboe. | "TEST" for test system. "PROD" for production. |

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

### Logon Message Fields

**Table 1. Logon Message Fields**

| Tag | Field Name | Required | Description |
|---|---|---|---|
| 35 | MsgType | Y | A |
| 108 | HeartbeatInterval | Y | Client Heartbeat Interval (in seconds). |

The `Logon` message must be the first message sent by the user after the TCP connection is established. EncryptMethod is ignored (FIX level encryption is not supported).

Cboe will wait one second after a `Logon` message is received to ensure that no `Resend Request` messages are in flight from the Member. A `Heartbeat` message will be sent to indicate that the one second wait period has ended. Members should not send any orders prior to receiving this first Heartbeat from Cboe.

The IP Address of the user, the SenderCompId, SenderSubId and TargetCompId (defined in the Logon Message Fields table) and TargetSubId (TEST/ `PROD`) will be validated. If validation fails the connection will be dropped without a reject (to avoid corrupting the users sequence in the case that the user merely mistakenly connected to the wrong port).

If connection is unexpectedly broken, upon reconnection the user may receive a login reply with a sequence number greater than expected. This means that in-flight messages were missed (likely important execution reports). The user should issue a `Resend Request` message to retrieve the missed messages.

Similarly Cboe will issue a `Resend Request` message to the user for messages that it missed. The user may wish to send gap fill messages in place of new orders to avoid re-submission of potentially stale orders.

HeartbeatInterval must be specified by the user in the `Logon` message. This value will be clamped between 5 and 300 seconds and returned in the logon reply message. We recommend using as low a value as the reliability and latency of your telecommunications channel will allow.

#### Logon and Carried Order Restatement

If the Carried Order Restatements port attribute is set, unsolicited `Execution Report` messages representing `carried` orders loaded by the system at startup will be sent after the Logon response. Carried orders are orders that persist across trading days. Good ‘Til Cancel (GTC) and Good ‘Til Day (GTD) orders and Day orders persisting across holiday trading segments comprising a single business date are the only order types that will appear in Carried Order Restatements (see Carried Order Restatements).

### Heartbeat Message Fields

**Table 1. Heartbeat Message Fields**

| Tag | Field Name | Required | Description |
|---|---|---|---|
| 35 | MsgType | Y | 0 |
| 112 | TestReqID | N | Required in response to a `Test Request` message. |

A `Heartbeat` message should be sent if the agreed upon HeartbeatInterval has elapsed since the last message sent. If any message has been sent during the preceding HeartbeatInterval a `Heartbeat` message need not be sent.

### Test Request Message Fields

**Table 1. Test Request Message Fields**

| Tag | Field Name | Required | Description |
|---|---|---|---|
| 35 | MsgType | Y | 1 |
| 112 | TestReqID | Y | Auto-generated request ID. |

If a HearbeatInterval + 1 seconds have elapsed since the last message received, a Test Request should be issued. If another HearbeatInterval + 1 seconds go by without receiving a message, the TCP connection should be dropped. This ensures a broken TCP connection will be detected even if the TCP stack doesn’t notice (this has been observed to happen in WAN environments, particularly when a VPN is involved).

### Resend Request Message Fields

**Table 1. Resend Request Message Fields**

| Tag | Field Name | Required | Description |
|---|---|---|---|
| 35 | MsgType | Y | 2 |
| 7 | BeginSeqNo | Y | Sequence number of first message in range to be resent. |
| 16 | EndSeqNo | Y | 0 means + infinity |

A `Resend Request` message should be processed even if it is received ahead of sequence. Only after resending the requested range (all marked PossDupFlag = Y, including any gap fills) should `Resend Request` message be issued in the opposite direction.

Cboe will reject all orders received during FIX replay containing PossDupFlag = Y.

As discussed in the FIX 4.2 specification, it is possible to send an open or closed sequence range in a `Resend Request` message (an open range uses sequence zero as the EndSeqNo). Cboe will honor either type of request, but will always issue `Resend Request` messages with a closed sequence range.

### Reject Message Fields

**Table 1. Reject Message Fields**

| Tag | Field Name | Required | Description |
|---|---|---|---|
| 35 | MsgType | Y | 3 |
| 45 | RefSeqNum | Y | MsgSeqNum of rejected message. |
| 371 | RefTagID | N |  |
| 372 | RefMsgType | N |  |
| 373 | SessionRejectReason | N |  |
| 58 | Text | N |  |

Session level rejects are used to indicate violations of the session protocol or missing/bogus fields. These are to be expected during development and certification while the user adapts for Cboe, but should be extremely rare in production. Application layer rejects (like Order Reject and Cancel Reject) are normal.

### Sequence Reset Message Fields

**Table 1. Sequence Reset Message Fields**

| Tag | Field Name | Required | Description |
|---|---|---|---|
| 35 | MsgType | Y | 4 |
| 36 | NewSeqNo | Y | Next expected sequence number. |
| 123 | GapFillFlag | N | `Sequence Reset` - Gap Fill messages ( GapFillFlag = Y ) must be received in sequence. Any messages (including any Gap Fills) sent in response to a `Resend Request` should have PossDup = Y . Sequence Reset - Reset ( GapFillFlag not ‘Y’) is used only as a last resort, and always by human intervention, to allow an otherwise hopelessly confused session to be resumed. In these cases all chance at automatic message recovery are lost. |

### Logout Message Fields

**Table 1. Logout Message Fields**

| Tag | Field Name | Required | Description |
|---|---|---|---|
| 35 | MsgType | Y | 5 |
| 58 | Text | N | Indicates reason for Logout. |

Either side may issue a `Logout` message to gracefully close the session. The side that issues the logout should process messages normally until it sees the logout reply, and then break the TCP connection. Cboe will typically only request logout after the scheduled end of FIX session.

## FIX Messages

### Standard Message Header Message Fields

**Table 1. Standard Message Header Message Fields**

| Tag | Field Name | Req’d | Description |
|---|---|---|---|
| 8 | BeginString | Y | FIX.4.2 Must be first field in message. |
| 9 | BodyLength | Y | Length of message following BodyLength field up to and including the delimiter preceding the CheckSum field. Must be second field in message. |
| 35 | MsgType | Y | Must be third field in message. |
| 49 | SenderCompID | Y | ID of sender: Assigned by Cboe for messages sent to Cboe. ( TargetCompID for messages from Cboe) |
| 50 | SenderSubID | Y | Sub ID of sender: Assigned by Cboe for messages sent to Cboe. ( TargetSubID for messages from Cboe) |
| 56 | TargetCompID | Y | ID of destination: "BATS" for messages sent to (BZX Options only) "CBOE" for messages sent to (C1 Options only) "CTWO" for messages sent to (C2 Options only) "EDGX" for messages sent to (EDGX Options only) ( SenderCompID for messages from Cboe) |
| 57 | TargetSubID | Y | Sub ID of destination: "TEST" for messages sent to Cboe test system. "PROD" for messages sent to Cboe production system. ( SenderSubID for messages from Cboe) |
| 34 | MsgSeqNum | Y | Sequential sequence number for session. |
| 43 | PossDupFlag | N | `N` = (Default) `Y` = Indicates a message resend and should be used during FIX Replay. All inbound orders with ‘Y’ will be rejected by Cboe. |
| 52 | SendingTime | Y | GMT date-time that message was sent. If SendingTime Acknowlegement is different by 1 second or greater, the order will be rejected. |
| 122 | OrigSendingTime | N | For messages with PossDupFlag = Y, indicates time that message was first sent. |
| 115 | OnBehalfOfCompId | N | Identifies end-client EFID on messages to the exchange. Used to specify clearing information. |
| 116 | OnBehalfOfSubID | N | End-client sub identifier. 4 Characters alphanumeric, otherwise not validated. Recorded and returned in DeliverToSubID . Available via Drop. |
| 128 | DeliverToCompId | N | Identifies end-client on messages from Cboe. Used to specify clearing information. |
| 129 | DeliverToSubID | N | Returns OnBehalfOfSubID optionally sent by client. |
| 142 | SenderLocationID (C1 Only) | Y | Identifies messages sent from Cboe to Members. `F` = Floor `Not present` = For electronic execution |

### Standard Message Trailer

**Table 1. Standard Message Trailer**

| Tag | Field Name | Req’d | Description |
|---|---|---|---|
| 10 | CheckSum | Y | Modulo 256 checksum of all characters in message up to and including the delimiter preceding the CheckSum field. Three digits with leading zeroes if necessary. |

### User Defined FIX Fields

The following FIX fields are used by Cboe:

**Table 1. User Defined FIX Fields**

| Tag | Field Name | Description |
|---|---|---|
| 423 | PriceType (C1 only) | Refer to definition in `New Order Single`,`New Order Cross`, `New Order Cross Multileg`, and `New Order Multileg`. |
| 5937 | MarketingFeeCode (C1 and EDGX only) | Refer to definition in `Execution Report`. |
| 6253 | DrillThruProtection | Refer to definition in `New Order Cross Multileg` and `New Order Multileg`. |
| 6655 | CorrectedSize | Refer to definition in `Trade Cancel/Correct`. |
| 7692 | RiskReset | Refer to definition in `New Order Single`, `New Order Multileg`, `Order Cancel Request` and `Purge Request`. |
| 7694 | ContraCapacity | Refer to definition in `Execution Report`. |
| 7695 | MassCancelID | Refer to definition in `Order Cancel Request`, `Execution Report`, `Cancel Reject`, `Purge Request`, `Purge Acknowledgement` and `Purge Reject`. |
| 7698 | CustomGroupIDCnt | Refer to definition in `Purge Request`. |
| 7699 | CustomGroupID | Refer to definition in `New Order Single`, `New Order Multileg`, `Order Cancel Request`, and `Purge Request`. |
| 7700 | MassCancelInst | Refer to definition in `Order Cancel Request` and `Purge Request`. |
| 7928 | PreventMatch | Refer to definition in `New Order Single`,`New Order Cross`, `New Order Cross Multileg`, and `New Order Multileg`. |
| 7933 | RoutingFirmID | Refer to definition in `New Order Single`, `New Order Cross`, `New Order Cross Multileg, New Order Multileg`, `Order Cancel Request`, `Order Cancel/Replace Request`, and `Purge Request`. |
| 8020 | DisplayRange | Refer to definition in `New Order Single, New Order Multileg`, and `Execution Report`. |
| 8641 | NoOfSecurities | Refer to definition in `Security Definition`. |
| 9040 | AutoMatch (C1 and EDGX only) | Refer to definition in `New Order Cross` and `New Order Cross Multileg`. |
| 9044 | AutoMatchPrice (C1 and EDGX only) | Refer to definition in `New Order Cross Multileg` and `New Order Cross`. |
| 9303 | RoutingInst | Refer to definition in `New Order Single` and `New Order Multileg`. |
| 9324 | ClearingOptionalData | Refer to definition in `New Order Single`, `New Order Cross`, `New Order Cross Multileg`, `New Order Multileg`, `Add Floor Trade`, `Cancel Reject`, and `Execution Report`. |
| 9350 | RoutDeliveryMethod | Refer to definition in `New Order Single`. |
| 9370 | AuctionID | Refer to definition in `New Order Single`, `New Order Multileg`, and `Execution Report`. |
| 9400 | RoutStrategy | Refer to definition in `New Order Single`. |
| 9465 | OrderOrigin (C1 only) | Refer to definition in `New Order Single`, `New Order Multileg`, and `Execution Report`. |
| 9479 | DisplayIndicator | Refer to definition in `New Order Single`. |
| 9617 | ModifySequence | Refer to definition in `Execution Report`. |
| 9619 | CancelOrigOnReject | Refer to definition in `Order Cancel/Replace Request Cancel Reject`. |
| 9620 | CorrectedPrice | Refer to definition in `Trade Cancel/Correct`. |
| 9688 | OrigCompID | Refer to definition in `Execution Report`. |
| 9689 | OrigSubID | Refer to definition in `Execution Report`. |
| 9690 | WorkingPrice | Refer to definition in `Execution Report`. |
| 9691 | InitialDisplayPrice | Refer to definition in `Execution Report`. |
| 9730 | TradeLiquidityIndicator | Refer to definitions in `Execution Report` and `Trade Cancel/Correct`. |
| 9732 | AttributedQuote | Refer to definition in `New Order Single`, `New Order Cross`, `New Order Cross Multileg`, and `New Order Multileg`. |
| 9849 | LastPriority (C1 and EDGX only) | Refer to definition in `New Order Cross Multileg` and `New Order Cross`. |
| 9882 | FeeCode | Refer to definition in `Execution Report`. |
| 9946 | GiveUpFirmID (C1 and EDGX only) | Refer to definition in `New Order Cross Multileg` and `New Order Cross`. |
| 20012 | Held (C1 only) | Refer to definition in `New Order Single` and `New Order Multileg`, and `Execution Report`. |
| 21005 | FLEXHedgeExecInst (C1 only) | Refer to definition in `New Order Cross` and `New Order Cross Multileg`. |
| 21008 | FLEXPreFacilPrice (C1 only) | Refer to definition in `New Order Cross` and `New Order Cross Multileg`. |
| 21010 | FLEXAuctionDuration (C1 only) | Refer to definition in `New Order Single`, `New Order Cross`, `New Order Cross Multileg`, and `New Order Multileg`. |
| 21097 | FrequentTraderID (C1 only) | Refer to definition in `New Order Single` and `Order Cancel/Replace`. |
| 21098 | TradeThroughAlertType (C1 only) | Refer to definition in `Execution Report`. |
| 22002 | StrategyID (C1 only) | Refer to definition in `New Order Multileg` and `Execution Report`. |
| 22003 | ORS (C1 only) | Refer to definition in `New Order Single`, `New Order Cross`, `New Order Cross Multileg`, `New Order Multileg`, `Floor Trade Confirmation`, and `Execution Report`. |
| 22004 | ClosingPrice (C1 only) | Refer to definition in `Trade Cancel/Correct`. |
| 22005 | ComboOrder (C1 only) | Refer to definition in `New Order Multileg`, `Add Floor Trade`, and `Execution Report`. |
| 22006 | Compression (C1 only) | Refer to definition in `New Order Single`, `New Order Cross`, `New Order Cross Multileg`, `New Order Multileg`, and `Execution Report`. |
| 22008 | EquityPartyID (C1 and EDGX only) | Refer to definition in `New Order Cross Multileg` and `New Order Multileg`. |
| 22011 | EquityTradePrice (C1 and EDGX only) | Refer to definition in `New Order Cross`, `New Order Cross Multileg`, and `New Order Multileg`. |
| 22012 | EquityTradeSize (C1 and EDGX only) | Refer to definition in `New Order Cross`, `New Order Cross Multileg`, and `New Order Multileg`. |
| 22013 | EquityTradeVenue (C1 and EDGX only) | Refer to definition in `New Order Cross`, `New Order Cross Multileg`, and `New Order Multileg`. |
| 22014 | EquityBuyClearingFirm (C1 and EDGX only) | Refer to definition in the `New Order Cross`, `New Order Cross Multileg`, and `New Order Multileg`. |
| 22015 | EquitySellClearingFirm (C1 and EDGX only) | Refer to definition in `New Order Cross`, `New Order Cross Multileg`, and `New Order Multileg`. |
| 22016 | EquityExDestination (C1 and EDGX only) | Refer to definition in `New Order Cross Multileg` and `New Order Multileg`. |
| 22017 | SessionEligibility (C1 only) | Refer to definition in `New Order Single` and `New Order Multileg`. |
| 22018 | TiedHedge (C1 only) | Refer to definition in `New Order Multileg`. |
| 22019 | LegPositionEffects (C1 only) | Refer to definition in `New Order Cross Multileg`. |
| 22020 | InitialClientOrderId ( C1 only ) | Refer to definition in `Execution Report` and `Trade Cancel/Correct`. |
| 22023 | Delta (C1 only) | Refer to definition in `New Order Single`, `New Order Cross`, and `Execution Report`. |
| 22024 | LegDelta ( C1 only ) | Refer to definition in `New Order Cross Multileg`, `New Order Multileg`, and `Execution Report`. |
| 22025 | ReferencePrice (C1 only) | Refer to definition in `New Order Single`, `New Order Cross`, `New Order Cross Multileg`, `New Order Multileg`, and `Execution Report`. |
| 22026 | CrossInitiator (C1 and EDGX only) | Refer to definition in `New Order Cross Multileg` and `New Order Multileg`. |
| 22028 | CrossOnBehalfOfID (C1 and EDGX only) | Refer to definition in `New Order Cross Multileg` and `New Order Multileg`. |
| 22049 | FloorTraderAcr (C1 only) | Refer to definition in `Add Floor Trade` and `Execution Report`. |
| 22058 | SubreasonText | Refer to definition in `Execution Report`. |
| 22060 | EquityTransactTime (C1 and EDGX only) | Refer to definition in `New Order Cross`, `New Order Cross Multileg`, and `New Order Multileg`. |
| 22100 | FloorDestination (C1 only) | Refer to definition in `New Order Single`, `New Order Multileg` and `Execution Report`. |
| 22303 | FloorRoutingInst (C1 only) | Refer to definition in `New Order Single` and `New Order Multileg`. |
| 22624 | EquityLegShortSell (C1 and EDGX only) | Refer to definition in `New Order Cross Multileg` and `New Order Multileg`. |
| 25018 | CorrectedStrikePrice (C1 only) | Refer to definition in `Trade Cancel/Correct`. |
| 25019 | OccId | Refer to definition in `Execution Report`. |
| 25026 | StopPxType (effective TBD) | Refer to definition in `New Order Multileg` and `Execution Report`. |

### Order Protocol - Member to Cboe

FIX messages Members can send to Cboe.

#### New Order Single Message Fields

A `New Order Single` message is used to submit a single-leg order for both standard listed options and FLEX options. Complex orders must use the New Order Multileg Message Fields.

**Table 1. New Order Single Message Fields**

| Tag | Field Name | Req’d | Description |
|---|---|---|---|
| 35 | Standard Message Header | Y | MsgType= D |
| 97 | PossResend | N | `N` = (Default) indicates a new order. `Y` = Indicates an application level resend and is NOT SUPPORTED. For reasons of economy, Cboe does not track in primary storage the ClOrdID values of orders that are no longer live. For reasons of performance, Cboe does not access secondary storage to enforce unique ClOrdID values against orders that are no longer live. Without full duplicate ClOrdID value enforcement, it is not possible to safely implement the full behavior specified in the FIX 4.2 Protocol for PossResend = Y . To remain economical, fast and safe, all messages with PossResend = Y will be simply ignored. |
| 1 | Account | N | Up to 16 characters in ASCII range 33-126 are allowed. When clearing OCC, value is passed to clearing in the Customer ID field (max 10 characters). If the Send ClearingOptionalData FIX port attribute is set to 'No', the full 16 character value is also passed to clearing in the Optional Data field. When clearing Cboe Clear U.S., value is passed in the Customer Account Number field. |
| 11 | ClOrdId | Y | ID chosen by client. 20 characters or less. Characters in ASCII range 33-126 are allowed, except for comma, semicolon, pipe, ‘at’ symbol (@) and double quotes. A leading tilde (~) cannot be sent on any ClOrdId and will result in a reject. These are reserved for internal use by Cboe and could be received as a result of a system-generated ClOrdId . If the ClOrdId matches a live order it will be rejected as duplicate ( `unless PossResend` = Y, see above ). Note: Cboe only enforces the uniqueness of ClOrdID values among currently live orders, which includes long-lived, persisting GTC/GTD orders . However it is strongly recommend Users maintain unique ClOrdID values. |
| 60 | TransactTime | Y | Time the order was initiated/released. Required by FIX 4.2. |
| 77 | OpenClose | Y* | Indicates status of client position in the option. `O` = Open `C` = Close `N` = None* *Orders with OrderCapacity (47) = 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 OrderCapacity (47) = M will be permitted to submit OpenClose = O if the order has TimeInForce (59) = 3 (IOC) and RoutingInst (9303) = 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. |
| 167 | SecurityType | Y | Indicates the type of security `OPT` = Options |
| 200 | MaturityMonth | N | Indicates Maturity Month (YYYYMM) |
| 205 | MaturityDay | N | Expiration date day of the month Format: DD |
| 201 | PutOrCall | N | `0` = Put `1` = Call |
| 202 | StrikePrice | N | Strike Price for option, 0 - 999,999.999 |
| 55 | Symbol | Y | OSI root symbol (upper case) or Cboe format symbol (case sensitive) |
| 54 | Side | Y | `1` = Buy `2` = Sell |
| 38 | OrderQty | Y | Number of contracts for order, 1 to 999,999 |
| 111 | MaxFloor | N | Portion of OrderQty to display. The balance is reserve. `0` = Display entire quantity (Default). 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. Ignored if order is IOC. An order with a MaxFloor greater than 0 will be rejected for Cboe proprietary classes (such as DJX, RUT, SPX, XSP, and VIX). |
| 8020 | DisplayRange | N | Used for random replenishment of reserve orders. This is the random replenishment amount in contracts. The value specified will create a DisplayRange around MaxFloor . Value must be less than the value specified for MaxFloor. Example If MaxFloor = 20 and DisplayRange = 2 , the displayed quantity will be selected randomly from one of the following values: 18, 19, 20, 21, 22. |
| 40 | OrdType | Y | `1` = Market `2` = Limit `3` = Stop `4` = Stop Limit Stop/Stop Limit orders must be set to TimeInForce (59) = 0 (DAY), 1 (GTC), or 6 (GTD) . Note market and stop/stop limit orders are not supported during GTH or Curb sessions. |
| 44 | Price | N | If PriceType (423) = 0 Limit price of cabinet order $0.0001 - $0.01 If PriceType (423) = 1 Traded as percentage (FLEX Only) -999,999.99% to 999,999.99% If PriceType (423) = 2 or D Limit price for this order. Order rejected if priced finer than the minimum trading increment for the option. Numeric $0.01 - $999,999.99. |
| 99 | StopPx | N | The trigger price for Stop and Stop Limit orders. Required if OrdType (40) = 3 or 4. Stop and Stop Limit orders will trigger off bids and offers in addition to executions. Complex executions outside of the NBBO will not trigger Stop and Stop Limit Orders. Stop/Stop Limit orders will only elect based off of RTH quotes and trades. |
| 110 | MinQty | N | Optional minimum* fill quantity for Book-Only IOC orders. Ignored unless order is Book-Only IOC. Default is zero. *When removing liquidity, limits the minimum total fill size, which may be made up of several consecutive smaller fills. Not compatible with Step-Up Mechanism (SUM). |
| 47 | Rule80A (OrderCapacity) | Y | The capacity for the order. `C` = Customer `F` = Firm `M` = Market Maker `U` = Professional Customer `N` = Away Market Maker `B` = Broker-Dealer `J` = Joint Back Office `L` = Non-TPH Affiliate (C1 and C2 only) |
| 59 | TimeInForce | N | `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 Opening Process `3` = IOC. Portion not filled immediately is cancelled. Market orders are implicitly IOC. `4` = FOK. An IOC where the entire size must be filled, otherwise 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. |
| 22017 | SessionEligibility ( C1 only ) | N | `R` = (Default) Order participates in Regular Trading Hours only. `A` = Order participates in both Global and Regular Trading Hours. Also allows for participation in Curb Trading Session. `B` = Order participates in both Regular Trading Hours and Curb Session. |
| 126 | ExpireTime | N | Required for TimeInForce (59) = 6 (GTD) orders, specifies the date-time (in GMT) that the order expires. Values may be specified at a millisecond level. |
| 18 | ExecInst | N | Single value only (with no trailing space) `1` = Not held. Must be routed to the floor. (C1 only) 2 `f` = Intermarket Sweep (Directed or Book Only) 2 `r` = Settlement Liquidity 1,2 (C1 only) `G` = All or None (AON) (C1 and EDGX only) 1 requires TimeInForce (59) = 2 and Price (44) 2 Not compatible with Step-Up Mechanism (SUM) |
| 7692 | RiskReset | N | For use by Users 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 risk/lockout reset `C` = CustomGroupID lockout reset `G` = EFID Group 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 Custom Group ID level, inbound orders for the locked Custom Group ID will be rejected until this field is filled with the value ‘C’ on a `New Order` or `New Complex` message order that uses the locked Custom Group ID. 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 . |
| 7928 | PreventMatch | N | 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): User specified alphanumeric value 0-9, A-Z, or a-z. The Unique ID level (2 nd character) of both orders must match to prevent a trade. If specified on both orders, Trading Group ID (3 rd character) must match to prevent a trade. The MTP Modifier (1 st character) 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). |
| 9303 | RoutingInst | N | 1 st character `B` = Book Only (Not routable but will remove from local book) `P` = Post Only (Not routable) 1 `R` = (Default) Routable `S` = Super Aggressive - Cross or Lock (Order will be removed from book and routed to any quote that is crossing or locking the order) `X` = Aggressive - Cross only (Order will be removed from book and routed to any quote that is crossing) 2 nd 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) 2 1 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) . 2 Marketable, routable orders identified as RoutingInst (9303) = R, RS, S, SS, X or XS and RoutStrategy (9400) = `ROUT` and AuctionID (9370) not supplied or marketable non-routable orders identified as RoutingInst (9303) = BS and ExecInst (18) not ‘f’ and TimeInForce (59) not ‘4’ and MinQty (110) not supplied will be eligible to initiate a Step-Up Mechanism (SUM) auction before routing, posting to book with Price Adjust or cancelling off book. |
| 9350 | RoutDeliveryMethod | N | `RTI` = (Default) Route to Improve `RTF` = Route to Fill Route to Improve: Ability to receive price improvement will take priority over speed of execution. Route to Fill: Speed of execution will take priority over potential price improvement. Only applicable to RoutStrategy = `ROUT` . |
| 9400 | RoutStrategy | N | `ROUT` = Book + Street `DIRC` = Book + Directed IOC or Directed ISO if ExecInst = f 1 `SWPA` = Book + Sweep Street (Default) 1 `Must be specified when sending a non-Book Only ISO 9303` = R, `18` = f, otherwise the order will be rejected. |
| 100 | ExDestination | N | Used to specify the designated away venue for RoutStrategy (9400) = DIRC . `A` = NYSE Arca `E` = Nasdaq ISE `F` = MIAX Options Exchange `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 `X` = Nasdaq PHLX `Z` = BZX Options `g` = Nasdaq GEMX `m` = Nasdaq MRX `w` = MIAX Sapphire |
| 9479 | DisplayIndicator | N | `V` = (Default) As determined by port level setting (defaults to "S" for BZX only and to "P" for C1, C2, and EDGX) . `S` = Display-Price Sliding (this is to override an opt-out of Display-Price Sliding at the port level). (BZX only) `L` = Display-Price Sliding, but reject if order crosses NBBO on entry. (BZX only) `M` = Multiple Display-Price Sliding (BZX only) `P` = Price Adjust `m` = Multiple Price Adjust `R` = Reject the order if it cannot be booked and displayed without adjustment. `N` = NoRescrapeAtLimit (BZX only) See Display Indicator Features for more details on sliding options. |
| 439 | ClearingFirm | N | CMTA Number of the firm that will clear the trade. Must be supplied for CMTA orders and left unspecified for non-CMTA orders. |
| 440 | ClearingAccount | N | When OrderCapacity (47) is set to a value of ‘M’ or ‘N’ this field should be filled with desired market maker ID. When OrderCapacity (47) is set to a value of ‘M’ any unregistered Market Maker ID in this field will cause the quote or order to be rejected with a reason code of ‘A’ and sub-reason code ‘L’ . When using CMTA, this value is the Market Maker ID for the CMTA member instead of the Cboe member executing the trade. When FIX Port Attribute Reject Non-Market Maker With Clearing Account is set to 'Yes' (C1 and C2 only) orders with OrderCapacity (47) other than 'M' and 'N' with a specified value for ClearingAccount (440) will be rejected. Field value is reflected on Execution Reports including FIX Drop. |
| 9732 | AttributedQuote | N | Allow for order to be attributed to firm’s EFID in Cboe market data feeds. The order may also be included within attributed summary information displays related to quote/trade information on the Cboe web site. Must opt-in to support through the Cboe Trade Desk. `N` = (Default) Do not attribute firm Executing Firm ID to this order. `Y` = Attribute firm Executing Firm ID to this order. `C` = Attribute ClientID (109) only. `Z` = Attribute both EFID (115) and ClientID (109). |
| 109 | ClientID | N | User defined identifier for quote attribution. Four alpha characters or less. |
| 9324 | ClearingOptionalData | N | Up to 16 characters in ASCII range 33-126 are allowed, except for comma, semicolon and pipe characters. Value will be reflected back on Execution Reports including FIX Drop. FIX Port attribute Send ClearingOptionalData set to 'Yes' is required to pass value to clearing. |
| 1462 | TargetPartyID (C1 and EDGX only) | N | A valid ParentID of the Directed Market Maker (EDGX only) or Preferred Market Maker (C1 only) is required for Directed Orders. |
| 9370 | AuctionID (C1, C2 and EDGX only) | N | Auction order identifier supplied by Cboe. This identifier corresponds to the identifiers used in Cboe market data products. |
| 7933 | RoutingFirmID | N | Used to optionally convey the routing firm of the order. If supplied, value must be a valid EFID . |
| 7699 | CustomGroupID | N | Optional User-specified ID for the order. Cancellation by CustomGroupID available using Purge Port Protocol - Member to Cboe only. Integer 1-65535 |
| 21097 | FrequentTraderID (C1 only) | N | Identifies the frequent trader program in which the order is participating. Six alphanumeric characters or less (0-9, A-Z, or a-z). |
| 22003 | ORS (C1 only) | N | Order router subsidy eligible (used for billing purposes). `N` = No (Default) `Y` = Yes |
| 22006 | Compression (C1 only) | N | Order is a compression trade. `N` = No (Default) `Y` = Yes |
| 22303 | FloorRoutingInst (C1 only) | N | `D` = Direct. Do not attempt to process electronically 1 `E` = Electronic only (default) `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 (9303) must be set to B or R for simple orders; or B for FLEX instruments. |
| 22100 | FloorDestination (C1 only) | N | Floor route destination. Specifies a PAR workstation (ex. W001), or "PARO" to route to the Floor PAR Official of the underlying symbol. 4 characters or less (ASCII 33-126). |
| 423 | PriceType (C1 only) | N | `0` = Fixed cabinet trade price `1` = Percentage (when trading FLEX percentage instruments) `2` = (default) Price per unit (contract) `D` = FLEX DAC |
| 9465 | OrderOrigin (C1 only) | N | Floor acronym of Market Maker on whose behalf this order is being entered by a floor broker. |
| 20012 | Held (C1 only) | N | `Y` = Mark order as Held `N` = Mark order as Not Held Default value is ‘N’ if the order is direct routed to a Non-PAR Official on the floor. |
| 21010 | FLEXAuctionDuration (C1 only) | N | Duration of the FLEX Auction in milliseconds. The minimum valid value is 3,000 milliseconds. The maximum valid value is 300,000 milliseconds. Applicable only to FLEX instruments. |
| 21005 | FLEXHedgeExecInst (C1 only) | N | Hedge execution instruction to carry the hedge information for the order. Applicable only the FLEX instruments. |
| 21008 | FLEXPreFacilPrice (C1 only) | N | The pre-facilitation price for the hedge instruction. Applicable only to FLEX instruments. |
| 22021 | TerminalOperatorId (C1 only) | N | The ID associated with the operator logged into the terminal when an order is entered. 20 characters or less (ASCII 32-126). This field is recorded and returned in execution reports. Available via FIX Drop and Odrop. |
| 22022 | AdditionalClientInfo (C1 only) | N | Client information populated by the Member during order entry via terminal. 16 characters or less (ASCII 32-126). This field is recorded and returned in execution reports. Available via FIX Drop and Odrop. |
| 22023 | Delta (C1 only) | N | Designated delta of a FLEX DAC order. Valid values for call options are 0.0001 to 1.0000. Valid values for put options are -1.0000 to -0.0001. |
| 22025 | ReferencePrice (C1 only) | N | Reference price for underlying security or index of a FLEX DAC order. If a reference price is not specified, the system applies the current value of the underlying at the time of order entry. |
|  | Standard Message Trailer | Y |  |

#### 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 a AIM, QCC or SAM order). The two-sided order consists of a number of required fields including symbol, price, quantity, 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.

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

| Tag | Field Name | Req’d | Description |  |  |
|---|---|---|---|---|---|
| 35 | Standard Message Header | Y | MsgType = s |  |  |
| 97 | PossResend | N | `N` = (Default) indicates a new order. `Y` = Indicates an application level resend and is NOT SUPPORTED. For reasons of economy, Cboe does not track in primary storage the ClOrdID values of orders that are no longer live. For reasons of performance, Cboe does not access secondary storage to enforce unique ClOrdID values against orders that are no longer live. Without full duplicate ClOrdID value enforcement, it is not possible to safely implement the full behavior specified in the FIX 4.2 Protocol for PossResend = Y . To remain economical, fast and safe, all messages with PossResend = Y will be simply ignored. |  |  |
| 548 | CrossID | Y | Identifier for the cross order. 20 characters or less. Characters in ASCII range 33-126 are allowed, except for comma, semicolon, pipe, ‘at’ symbol (@) and double quotes. |  |  |
| 549 | CrossType | Y | 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 ) |  |  |
| 550 | CrossPrioritization | Y | Indicates which side of the cross order will be prioritized for execution. This identifies the Agency side. `1` = Buy `2` = Sell |  |  |
| 552 Repeating Group | NoSides | Y | Indicates the number of sides for the cross order. This value must be set to ‘2’. The first side is the Agency side, the second side is the Contra side. |  |  |
| ➔ | 54 | Side | Y | Required tag to start each repeated group. `1` = Buy `2` = Sell |  |
| ➔ | 9732 | AttributedQuote | N | Allow for order to be attributed to order’s EFID in Cboe market data feeds. The order may also be included within attributed summary information displays related to quote/trade information on the Cboe web site. Valid for Agency Side only. Ignored on Contra Side. `N` = (Default) Do not attribute EFID (115) to this order. `Y` = Attribute EFID (115) to this order. `C` = Attribute ClientID (109) only. `Z` = Attribute both EFID (115) and ClientID (109). |  |
| ➔ | 109 | ClientID | N | User-defined identifier for quote attribution if AttributedQuote (9732) = `C or Z` Four alpha characters or less. |  |
| ➔ | 1462 | TargetPartyID (C1 and EDGX only) | N | A valid ParentID of the Directed Market Maker (EDGX only) or Preferred Market Maker (C1 only) is required for Directed Orders. Valid for Agency Side only. Ignored on Contra Side. |  |
| ➔ | 7928 | PreventMatch | N | Cboe Match Trade Prevention: 3 characters (not space separated): 1 st character - MTP Modifier: `N` = Cancel Newest `O` = Cancel Oldest 2 nd character - Unique ID Level: `F` = Prevent Match at Cboe Exchange Member level `M` = Prevent Match at MPID 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. MTP instructions on the AIM order will be used to prevent executions against AIM responses only; executions against resting or unrelated orders will still be permitted. Responses may only employ "Cancel Newest", in which case the response will be cancelled and the auction order will continue. Valid for Agency Side only. Ignored on Contra Side. |  |
| ➔ | 78 Repeating Group | NoAllocs | Y | Number of Repeating Groups for contra-party responses. Should be set to ‘1’ for Agency side. |  |
| ➔ | ➔ | 80 | AllocQty | Y | Required tag to start each repeated group. Number of contracts for this party. |
| ➔ | ➔ | 11 | ClOrdId | Y | Day-unique ID chosen by client. 20 characters or less. Characters in ASCII range 33-126 are allowed, except for comma, semicolon, and pipe. A leading tilde (~) cannot be sent on any ClOrdId and will result in a reject. These are reserved for internal use by Cboe and could be received as a result of a system-generated ClOrdId . |
| ➔ | ➔ | 1 | Account | N | Up to 16 characters in ASCII range 33-126 are allowed. When clearing OCC, value is passed to clearing in the Customer ID field (max 10 characters). If the Send ClearingOptionalData FIX port attribute is not set to 'No', the full 16 character value is also passed to clearing in the Optional Data field. When clearing Cboe Clear U.S., value is passed in the Customer Account Number field. |
| ➔ | ➔ | 9324 | ClearingOptionalData | N | Up to 16 characters in ASCII range 33-126 are allowed, except for comma, semicolon and pipe characters. Value will be reflected back on Execution Reports including FIX Drop. FIX Port attribute Send ClearingOptionalData set to 'Yes' is required to pass value to clearing. |
| ➔ | ➔ | 47 | Rule80A (aka OrderCapacity) | Y | The capacity for the order. `C` = Customer `F` = Firm `M` = Market Maker `U` = Professional Customer `N` = Away Market Maker `B` = Broker-Dealer `J` = Joint Back Office `L` = Non-TPH Affiliate (C1 and C2 only) |
| ➔ | ➔ | 77 | OpenClose | Y | Indicates status of client position in the option. `O` = Open `C` = Close `N` = None* *Orders with OrderCapacity (47) = 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 OrderCapacity (47) = M will be permitted to submit OpenClose = O if the order has TimeInForce (59) = 3 (IOC) and RoutingInst (9303) = 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. |
| ➔ | ➔ | 439 | ClearingFirm | N | CMTA Number of the firm that will clear the trade. Must be supplied for CMTA orders and left unspecified for non-CMTA orders. |
| ➔ | ➔ | 440 | ClearingAccount | N | When OrderCapacity (47) is set to a value of "M" or "N" this field should be filled with desired market maker ID. When OrderCapacity (47) is set to a value of "M" any unregistered Market-Maker Accounts in this field will cause the quote or order to be rejected with a reason code of ‘A’ and sub-reason code ‘L’. When using CMTA, this value is the market maker ID for the CMTA member instead of the Cboe member executing the trade. When FIX Port Attribute Reject Non-Market Maker With Clearing Account is set to 'Yes' (C1 and C2 only) orders with OrderCapacity (47) other than 'M' and 'N' with a specified value for ClearingAccount (440) will be rejected. Field value is reflected on Execution Reports including FIX Drop |
| ➔ | ➔ | 9946 | GiveUpFirmID | Y | For the Agency Side, this field must equal the value of OnBehalfOfCompId (EFID). Each Contra allocation will use this field instead of OnBehalfOfCompId for clearing information. |
| ➔ | ➔ | 21097 | FrequentTraderID (C1 only) | N | Identifies the frequent trader program in which the order is participating. Six alphanumeric characters or less (0-9, A-Z, or a-z). |
| ➔ | ➔ | 22027 | AllocAdditionalClientInfo (C1 only) | N | Client information populated by the Member during order entry for two sided auction orders. Should not be populated if AdditionalClientInfo (22022) is populated, 16 characters or less (ASCII 32-126). This field value is recorded and returned in execution reports through AdditionalClientInfo (22022). Available via FIX Drop and Odrop. |
| 7933 | RoutingFirmID | N | Used to optionally convey the routing firm of the order. If supplied, value must be a valid EFID. |  |  |
| 18 | ExecInst | N | Single value only (with no trailing space) `f` = Intermarket Sweep (Directed or Book Only) `s` = Sweep 1 1 Requires CrossType (549) = 1 (AIM) |  |  |
| 167 | SecurityType | Y | Indicates the type of security `OPT` = Options |  |  |
| 200 | MaturityMonth | N | Indicates Maturity Month (YYYYMM) |  |  |
| 205 | MaturityDay | N | Expiration date day of the month Format: DD |  |  |
| 201 | PutOrCall | N | `0` = Put `1` = Call |  |  |
| 202 | StrikePrice | N | Strike Price for option, 0 - 99999.999 |  |  |
| 55 | Symbol | Y | OSI root symbol (upper case) or Cboe format symbol (case sensitive) |  |  |
| 38 | OrderQty | Y | Number of contracts for order, 1 to 999,999 |  |  |
| 40 | OrdType | N | `2` = Limit |  |  |
| 44 | Price | Y | Auction Price |  |  |
| 9040 | AutoMatch | N | `0` = Disabled `1` = Market `2` = Limit `3` = Market. No starting price adjustments. `4` = Limit. No starting price adjustments. Better-priced responses will be automatically matched by the Contra side. Indicates the type of Auto Match the Contra Order will use. Mutually exclusive with LastPriority (9849). |  |  |
| 9044 | AutoMatchPrice | N | Required if AutoMatch (9040) is set to ‘2’ or '4' , ignored otherwise. Sets the limit price at which the Contra Order will Auto Match. Format is the same as Price (44). |  |  |
| 9849 | LastPriority | N | `0` = Disabled `1` = Enabled 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 (9040). |  |  |
| 423 | PriceType (C1 only) | N | `1` = Percentage, when trading FLEX percentage instruments `2` = (Default) Price per unit (contract) `D` = FLEX DAC |  |  |
| 21010 | FLEXAuctionDuration (C1 only) | N | Duration of the FLEX Auction in milliseconds. The minimum valid value is 3,000 milliseconds. The maximum valid value is 300,000 milliseconds. Applicable only to FLEX instruments. |  |  |
| 21005 | FLEXHedgeExecInst (C1 only) | N | Hedge execution instruction to carry the hedge information for the order. Applicable only the FLEX instruments. |  |  |
| 22003 | ORS (C1 only) | N | Order router subsidy eligible (used for billing purposes). `N` = No (Default) `Y` = Yes |  |  |
| 22006 | Compression (C1 only) | N | Order is a compression trade. `N` = No (Default) `Y` = Yes When CrossType (549) = 4 this field should not be specified. |  |  |
| 22011 | EquityTradePrice | N | Price at which the equity associated with a QCC trade. Valid when CrossType (549) = 2 . |  |  |
| 22012 | EquityTradeSize | N | Number of shares executed in the equity associated with a QCC trade. Valid when CrossType (549) = 2 . |  |  |
| 22013 | EquityTradeVenue | N | Exchange venue where equity associated with a QCC traded. Valid when CrossType (549) = 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 |  |  |
| 22014 | EquityBuyClearingFirm | N | Clearing firm on buy side of the equity trade associated with a QCC trade. Valid when CrossType (549) = 2 . |  |  |
| 22015 | EquitySellClearingFirm | N | Clearing firm on sell side of the equity trade associated with a QCC trade. Valid when CrossType (549) = 2 . |  |  |
| 22060 | EquityTransactTime | N | GMT date-time of equity trade associated with a QCC trade. Valid when CrossType (549) = 2 . YYYYMMDD-HH:MM:SS.000 |  |  |
| 22021 | TerminalOperatorId (C1 only) | N | The ID associated with the operator logged into the terminal when an order is entered. 20 characters or less (ASCII 32-126). This field is recorded and returned in execution reports. Available via FIX Drop and Odrop. |  |  |
| 22022 | AdditionalClientInfo (C1 only) | N | Client information populated by the Member during order entry via terminal. Should not be populated if AllocAdditionalClientInfo (22027) is populated. 16 characters or less (ASCII 32-126). This field is recorded and returned in execution reports. Available via FIX Drop and Odrop. |  |  |
| 22023 | Delta (C1 only) | N | Designated delta of a FLEX DAC order. Valid values for call options are 0.0001 to 1.0000. Valid values for put options are -1.0000 to -0.0001. |  |  |
| 22025 | ReferencePrice (C1 only) | N | Reference price for underlying security or index of a FLEX DAC order. If a reference price is not specified, the system applies the current value of the underlying at the time of order entry. |  |  |

#### 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, quantity, 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.

Short Form

If the complex symbol is known at the time of entry, a short form of the `New Order Cross Multileg` message can be utilized. Note that Complex Symbol ID’s may be different between all Cboe Exchanges.

- Symbol (55) and Side (54) are required.
- NoLegs (555) and LegRefID (654) is required if specifying LegPrice (566) for FLEX. The order of the legs must match the Security Definition response, as legs can be re-ordered during security definition.
- The order of position effects in LegPositionEffects (22019) must match the Security Definition response, as legs can be re-ordered during security definition.
- Sending any additional fields in the legs repeating group (LegSymbol, LegCFICode, LegMaturityDate, LegStrikePrice, LegRatioQty, or LegSide) will result in the order being rejected to avoid confusion with an invalid long form request.

Long Form

If the complex symbol is not known, a long form of the request exists to enter the symbol legs at the same time as the order. The legs will be used to find an appropriate complex symbol in the Cboe Complex Order Book; the resulting symbol (if accepted by the system) will be returned on the `Execution Report` message in Symbol (55). A minimum of two (2) legs must be specified and a maximum of 16 legs will be allowed on complex orders. For non-FLEX Floor-Routed orders, a minimum of two (2), maximum of 100 total legs, including one (1) equity leg (C1 only) will be supported.

- If Symbol (55) or Side (54) are present and non-blank, the order will be rejected to avoid confusion with an invalid short form request.
- The order of position effects in LegPositionEffects (22019) must match the order of the symbol legs in the message.
- Each leg must be fully entered as described below. Table 1. New Order Cross Multileg Message Fields (C1 and EDGX Only) Tag Field Name Req’d Description 35 Standard Message Header Y MsgType = As 97 PossResend N `N` = (Default) indicates a new order. `Y` = Indicates an application level resend and is NOT SUPPORTED. For reasons of economy, Cboe does not track in primary storage the ClOrdID values of orders that are no longer live. For reasons of performance, Cboe does not access secondary storage to enforce unique ClOrdID values against orders that are no longer live. Without full duplicate ClOrdID value enforcement, it is not possible to safely implement the full behavior specified in the FIX 4.2 Protocol for PossResend = Y . To remain economical, fast and safe, all messages with PossResend = Y will be simply ignored. 548 CrossID Y Identifier for the cross order. 20 characters or less. Characters in ASCII range 33-126 are allowed, except for comma, semicolon, and pipe. 549 CrossType Y Type of auction order being submitted, corresponding to 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) 1 ( C1 Only ) `5` = Related Futures Cross (RFC) ( C1 Only ) 1 Entry of SPX versus SPXW as a complex spread is not supported for PCC. 54 Side Y Required for Short format only Represents Side of Agency Order. `1` = Buy `2` = Sell 55 Symbol Y Required for Short Format Only Cboe Complex Instrument ID 38 OrderQty Y Number of contracts for order, 1 to 999,999 40 OrdType N `2` = Limit 44 Price Y Price is from the perspective of the Agency Side. Accepted values will be -$999,999,999.90 to $999,999,999.90. Short form request 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) Long form request Net Auction Price of the Strategy. Positive Value, Debit Negative Value, Credit Even Order - 0 (Zero) Price must be in whole pennies for option-only spreads. Can be up to 4 decimal places for spreads with stock legs and FLEX instruments. 552 Repeating Group NoSides Y Indicates the number of sides for the cross order. This value must be set to ‘2’. The first side is the Agency side, the second side is the Contra side. ➔ 78 Repeating Group NoAllocs Y Number of Repeating Groups for contra-party responses. Max of 10 contra parties. Should be set to ‘1’ for Agency side. ➔ ➔ 80 AllocQty Y Required tag to 'start each repeated group. Number of contracts for this party. ➔ ➔ 11 ClOrdId Y Day-unique ID chosen by client. 20 characters or less. Characters in ASCII range 33-126 are allowed, except for comma, semicolon, and pipe. A leading tilde (~) cannot be sent on any ClOrdId and will result in a reject. These are reserved for internal use by Cboe and could be received as a result of a system-generated ClOrdId . ➔ ➔ 1 Account N Characters in ASCII range 33-126 are allowed. When clearing OCC, value is passed to clearing in the Customer ID field (max 10 characters). If the Send ClearingOptionalData FIX Port attribute is not set, the value is also passed to clearing in the Txt field. When clearing Cboe Clear U.S., value is passed in the Customer Account Number field. ➔ ➔ 9324 ClearingOptionalData N Up to 16 characters in ASCII range 33-126 are allowed, except for comma, semicolon and pipe characters. Value will be reflected back on Execution Reports including FIX Drop. FIX Port attribute Send ClearingOptionalData set to 'Yes' is required to pass value to clearing. ➔ ➔ 47 Rule80A (aka OrderCapacity ) Y The capacity for the order `C` = Customer `F` = Firm `M` = Market Maker `U` = Professional Customer `N` = Away Market Maker `B` = Broker-Dealer `J` = Joint Back Office `L` = Non-TPH Affiliate (C1 only) ➔ ➔ 439 ClearingFirm N CMTA Number of the firm that will clear the trade. Must be supplied for CMTA orders and left unspecified for non-CMTA orders. ➔ ➔ 440 ClearingAccount N When OrderCapacity (47) is set to a value of ‘M’ or ‘N’ this field should be filled with desired market maker ID. When OrderCapacity (47) is set to a value of ‘M’ any unregistered Market-Maker Accounts in this field will cause the quote or order to be rejected with a reason code of ‘A’ and sub-reason code ‘L’. When using CMTA, this value is the market maker ID for the CMTA member instead of the Cboe member executing the trade. When FIX Port Attribute Reject Non-Market Maker With Clearing Account is set to 'Yes' (C1 and C2 only) orders with OrderCapacity (47) other than 'M' and 'N' with a specified value for ClearingAccount (440) will be rejected. Field value is reflected on Execution Reports including FIX Drop. ➔ ➔ 9946 GiveUpFirmID Y For the Agency Side, this field must equal the value of OnBehalfOfCompId (EFID) . Each Contra allocation will use this field instead of OnBehalfOfCompId for clearing information. ➔ ➔ 22008 EquityPartyID N MPID used to clear the equity leg being cleared via the Exchange. Required if the complex order includes a stock leg. ➔ ➔ 22624 EquityLegShortSell N `5` = Sell Short (stock leg only) `6` = Sell Short Exempt (stock leg only) ➔ ➔ 21097 FrequentTraderID (C1 only) N Identifies the frequent trader program in which the order is participating. Six alphanumeric characters or less (0-9, A-Z, or a-z). ➔ ➔ 22019 LegPositionEffects Y A string of position effects with one value per leg. For example, if five legs, then this field must have five position effects specified. Ordering of position effects matches the order specified in LegRefID (654) repeating group (below), or the instrument definition if using a short form request. `O` = Open `C` = Close `N` = None* *Orders with an OrderCapacity (47) = 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 OrderCapacity (47) = M will be permitted to submit OpenClose = O if the order has a TimeInForce (59) = 3 (IOC) and RoutingInst (9303) = B . ➔ ➔ 22027 AllocAdditionalClientInfo (C1 only) N Client information populated by the Member during order entry for two sided auction orders. Should not be populated if AdditionalClientInfo (22022) is populated, 16 characters or less (ASCII 32-126). This field value is recorded and returned in execution reports through AdditionalClientInfo (22022). Available via FIX Drop and Odrop. 555 Repeating Group NoLegs Y Indicates the number of legs in this complex order. Minimum of 2, maximum of 16 total legs, including 1 equity leg. A minimum of 2, maximum of 100 total legs, including 1 equity leg are allowed on non-FLEX Floor-Routed orders (C1 only) . ➔ 654 LegRefID Y Required tag to start each repeated group. Leg ID chosen by client. Five alphanumeric or space characters or less. ➔ 600 LegSymbol Y OSI root symbol (upper case), underlying symbol, or Cboe format symbol (case sensitive). Not required for short form requests ➔ 608 LegCFICode N CFI Code for leg. Required if tag 600 is an OSI root. `OP` = Option Put `OC` = Option Call `E` = Equity. Required for equity legs of complex orders Not required for short form requests ➔ 611 LegMaturityDate N Indicates maturity date (YYYYMMDD) for the option contract in leg. Required if tag 600 is an OSI root. Not required for short form requests ➔ 612 LegStrikePrice N Indicates strike price for option contract in leg. Required if tag 600 is an OSI root. 0 - 999999.999 Not required for short form requests ➔ 623 LegRatioQty Y Ratio of number of contracts in this leg per order quantity. All legs must be reduced (i.e., 2:2 must be sent as 1:1) in order to be accepted by the system when using this message type. Accepted values will be 1 - 999,999. Not required for short form requests ➔ 624 LegSide Y Side is from the Agency side’s perspective: `1` = Buy `2` = Sell Not required for short form requests ➔ 566 LegPrice N Only applies for FLEX orders. If PriceType (423) = 1 Traded as percentage (FLEX Only) -999,999.99% to 999,999.99% If PriceType (423) = 2 or D Limit price for this order. Order rejected if priced finer than the minimum trading increment for the option. Numeric $0.01 - $999,999.99. ➔ 22024 LegDelta ( C1 only ) N Only applies for FLEX DAC orders. Indicates the specific delta value applied to each leg. For calls, the delta value for a call leg must be ≤ delta of the call leg with the next largest strike price. As the strike price increases, the delta should decrease. Valid values are 0.0001 to 1.0000. For Puts, the delta value for a put leg must be ≥ delta of the put leg with the next smallest strike price. As the strike price increases, the delta should increase. Valid values are -1.0000 to -0.0001. The maximum number of legs on a FLEX DAC order is 99. Equity legs are allowed on FLEX orders. FLEX DAC orders allow up to 98 options legs and one equity leg. 7933 RoutingFirmID N Used to optionally convey the routing firm of the order. If supplied, value must be a valid EFID. 6253 DrillThruProtection N Amount sender is willing to trade through SNBBO at time of order entry. A zero value provides full SNBBO protection. The amount should be entered as a non-negative dollar 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 the `New Order Cross Multileg` message do not have a minimum or maximum. 423 PriceType N `1` = Percentage, when trading FLEX percentage instruments `2` = (Default) Price per unit (contract) `D` = FLEX DAC 9040 AutoMatch N `0` = Disabled `1` = Market `2` = Limit `3` = Market. No starting price adjustments. `4` = Limit. No starting price adjustments. Better-priced responses will be automatically matched by the Contra side. Indicates the type of Auto Match the Contra Order will use. Mutually exclusive with LastPriority (9849). 9044 AutoMatchPrice N Required if AutoMatch is set to ‘2’ or '4', ignored otherwise. Sets the limit price at which the Contra Order will Auto Match. Format is the same as Price (44). AutoMatchPrice is from the perspective of the Contra Side. Short form request 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) Long form request Net Auction Price of the Strategy. Positive Value, Debit Negative Value, Credit Even Order - 0 (Zero) 9732 AttributedQuote N Allow for order to be attributed to order’s EFID in Cboe market data feeds. The order may also be included within attributed summary information displays related to quote/trade information on the Cboe web site. Applies to Agency Side only. `N` = (Default) Do not attribute EFID to this order. `Y` = Attribute EFID to this order. `C` = Atrribute ClientID (109) Only `Z` = Attribute both EFID (115) and ClientID (109) 109 ClientID N User defined identifier for quote attribution if AttributedQuote (9732) = C or Z . Applies to Agency Side only. 1462 TargetPartyID N Preferred Market Maker is required for Directed Orders. Applies to Agency Side only. 7928 PreventMatch N Cboe Match Trade Prevention: 3 characters (not space separated): 1 st character - MTP Modifier: `N` = Cancel Newest `O` = Cancel Oldest 2 nd character - Unique ID Level: `F` = Prevent Match at Cboe Exchange Member level `M` = Prevent Match at MPID 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. MTP instructions on the cross order will be used to prevent executions against responses only; executions against resting or unrelated orders will be permitted. Responses may only employ "Cancel Newest", in which case the response will be cancelled and the auction order will continue. Applies to Agency Side only. 9849 LastPriority N `0` = Disabled `1` = Enabled 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 (9040). 21010 FLEXAuctionDuration N Duration of the FLEX Auction in milliseconds. The minimum valid value is 3,000 milliseconds. The maximum valid value is 300,000 milliseconds. Applicable only to FLEX instruments. 21005 FLEXHedgeExecInst (C1 only) N Hedge execution instruction to carry the hedge information for the order. Applicable only the FLEX instruments. 22003 ORS (C1 only) N Order router subsidy eligible (used for billing purposes). `N` = No (Default) `Y` = Yes 22006 Compression (C1 only) N Order is a compression trade. `N` = No (Default) `Y` = Yes When CrossType (549) = 4 this field should not be specified. 22011 EquityTradePrice N Price at which the equity associated with a QCC traded. Valid when CrossType (549) = 2 . 22012 EquityTradeSize N Number of shares executed in the equity associated with a QCC trade. Valid when CrossType (549) = 2 . 22013 EquityTradeVenue N Exchange venue where equity associated with a QCC traded. Valid when CrossType (549) = 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 22014 EquityBuyClearingFirm N Clearing firm on buy side of the equity associated trade associated with a QCC. Valid when CrossType (549) = 2 . 22015 EquitySellClearingFirm N Clearing firm on sell side of the equity associated trade associated with a QCC. Valid when CrossType (549) = 2 . 22016 EquityExDestination (C1 and EDGX only) N Valid when LegSymbol (600) = Equity symbol. 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, then the equity match will be reported to TD Securities (USA) LLC (C). 22026 CrossInitiator (C1 and EDGX only) Y 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 is allowed on any stock/option order including FLEX or Non-FLEX orders of any ratio. 22028 CrossOnBehalfOfID (C1 and EDGX only) N 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. 22060 EquityTransactTime N GMT date-time of equity trade associated with a QCC trade. Valid when CrossType (549) = 2 . YYYYMMDD-HH:MM:SS.000 22021 TerminalOperatorId (C1 only) N The ID associated with the operator logged into the terminal when an order is entered. 20 characters or less (ASCII 32-126). This field is recorded and returned in execution reports. Available via FIX Drop and Odrop. 22022 AdditionalClientInfo (C1 only) N Client information populated by the Member during order entry via terminal. Should not be populated if AllocAdditionalClientInfo (22027) is populated. 16 characters or less (ASCII 32-126). This field is recorded and returned in execution reports. Available via FIX Drop and Odrop. 22025 ReferencePrice (C1 only) N Reference price for underlying security or index of a FLEX DAC order. If a reference price is not specified, the system applies the current value of the underlying at the time of order entry.

#### New Order Multileg Message Fields

A `New Order Multileg` message is used to submit a complex order. The message consists of all order details including a number of required fields such as Price (44), OrdQty (38), and relevant clearing information, as well as a number of optional fields. Complex orders in cross product spreads (i.e., SPX/SPXW, IWM/RUT, DIA/DJX, VIX/VXX) where the products do not operate on the same matching unit cannot leg into the simple book.

The `New Order Multileg` message supports two distinct styles of request:

Short Form

If the complex symbol is known at the time of entry, a short form of the `New Order Multileg` message can be utilized. Note that Complex Symbol ID’s may be different between all Cboe Options Exchanges.

- Symbol (55) and Side (54) are required.
- LegRefID (654) and LegPositionEffect (564) are required for each of the legs. The order of the legs (and LegPositionEffect) must match the Security Definition response, as legs can be re-ordered during security definition.
- Sending any additional fields in the legs repeating group (LegSymbol, LegCFICode, LegMaturityDate, LegStrikePrice, LegRatioQty, or LegSide) will result in the order being rejected to avoid confusion with an invalid long form request.

Long Form

If the complex symbol is not known, a long form of the request exists to enter the symbol legs at the same time as the order. The legs will be used to find an appropriate complex symbol in the Cboe Complex Order Book; the resulting symbol (if accepted by the system) will be returned on the `Execution Report` message in Symbol (55). A minimum of two (2) legs must be specified and a maximum of 16 legs will be accepted. For non-FLEX Floor-Routed orders, a minimum of two (2), maximum of 100 total legs, including one (1) equity leg (C1 only) will be supported.

- If Symbol (55) or Side (54) are present and non-blank, the order will be rejected to avoid confusion with an invalid short form request.
- Each leg must be fully entered as described below.

Please see the Cboe Titanium U.S. Options Complex Book Process for more information on complex orders.

**Table 1. New Order Multileg Message Fields**

| Tag | Field Name | Req’d | Description |  |
|---|---|---|---|---|
| 35 | Standard Message Header | Y | MsgType= AB |  |
| 97 | PossResend | N | `N` = (Default) Indicates a new order. `Y` = Indicates an application level resend and is NOT SUPPORTED. For reasons of economy, Cboe does not track in primary storage the ClOrdID values of orders that are no longer live. For reasons of performance, Cboe does not access secondary storage to enforce unique ClOrdID values against orders that are no longer live. Without full duplicate ClOrdID value enforcement, it is not possible to safely implement the full behavior specified in the FIX 4.2 Protocol for PossResend = Y . To remain economical, fast and safe, all messages with PossResend = Y will be simply ignored. |  |
| 1 | Account | N | Up to 16 characters in ASCII range 33-126 are allowed. When clearing OCC, value is passed to clearing in the Customer ID field (max 10 characters). If the Send ClearingOptionalData FIX port attribute is not set to 'No', the full 16 character value is also passed to clearing in the Optional Data field. When clearing Cboe Clear U.S., value is passed in the Customer Account Number field. |  |
| 9324 | ClearingOptionalData | N | Up to 16 characters in ASCII range 33-126 are allowed, except for comma, semicolon and pipe characters. Value will be reflected back on Execution Reports including FIX Drop. FIX Port attribute Send ClearingOptionalData set to 'Yes' is required to pass value to clearing. |  |
| 11 | ClOrdId | Y | ID chosen by client. 20 characters or less. Characters in ASCII range 33-126 are allowed, except for comma, semicolon, and pipe. A leading tilde (~) cannot be sent on any ClOrdId and will result in a reject. These are reserved for internal use by Cboe and could be received as a result of a system-generated ClOrdId . If the ClOrdId matches a live order it will be rejected as duplicate ( unless PossResend = Y, see above ). Note: Cboe only enforces the uniqueness of ClOrdID values among currently live orders, which includes long-lived, persisting GTC/GTD orders . However it is strongly recommend users maintain unique ClOrdID values. |  |
| 60 | TransactTime | Y | Time order initiated/released. Required by FIX 4.2. |  |
| 167 | SecurityType | Y | Indicates the type of security `MLEG` = Multileg |  |
| 54 | Side | Y | Required only for short form request `1` = Buy `2` = Sell |  |
| 55 | Symbol | Y | Required only for short form request Cboe Complex Order Book symbol (case sensitive) |  |
| 555 Repeating Group | NoLegs | Y | Indicates the number of legs in this complex order. Minimum of 2, maximum of 16 total legs, including 1 equity leg. A minimum of 2, maximum of 100 total legs, including 1 equity leg will be allowed on non-FLEX 'Floor-Routed' orders (C1 only) . |  |
| ➔ | 654 | LegRefID | Y | Required tag to start each repeated group. Leg ID chosen by client. Five alphanumeric or space characters or less. |
| ➔ | 600 | LegSymbol | Y | OSI root symbol (upper case) or Cboe format symbol (case sensitive) Not required for short form requests |
| ➔ | 608 | LegCFICode | N | CFI Code for leg. Required if tag 600 is an OSI root. `OP` = Option Put `OC` = Option Call `E` = Equity - Required for Equity legs of complex orders (C1 and EDGX Only) |
| ➔ | 611 | LegMaturityDate | N | Indicates maturity date (YYYYMMDD) for the option contract in leg. Required if tag 600 is an OSI root. |
| ➔ | 612 | LegStrikePrice | N | Indicates strike price for option contract in leg. Required if tag 600 is an OSI root. 0 - 999999.999 |
| ➔ | 623 | LegRatioQty | Y | Ratio of number of contracts in this leg per order quantity. All legs must be reduced (i.e., 2:2 must be sent as 1:1) in order to be accepted by the system when using this message type. Accepted values will be 1 -999,999. C2 and EDGX Only In addition, when reduced, the ratio between the smallest and largest leg must be no more than 1:3. Not required for short form requests |
| ➔ | 624 | LegSide | Y | `1` = Buy `2` = Sell `5` = Sell Short (stock leg only) `6` = Sell Short Exempt (stock leg only) Not required for short form requests |
| ➔ | 566 | LegPrice (C1 only) | N | Only applies for FLEX orders. This field is optional for complex FLEX orders that are routed directly to the floor using FloorRoutingInst (22303) = D . It can be included for all legs, a subset, or none. |
| ➔ | 564 | LegPositionEffect | Y* | Indicates status of client position in option for this leg. `O` = Open `C` = Close `N` = None* *Orders with an OrderCapacity (47) of ‘M’ or ‘N’ will not be required to specify LegPositionEffect on their orders or may specify a value of ‘N’, in which case <blank> will be sent to clearing. If the series is limited to closing only transactions, only OrderCapacity (47) = M will be permitted to submit OpenClose = O if the order has a TimeInForce (59) = 3 (IOC) and RoutingInst (9303) = B . |
| ➔ | 22024 | LegDelta ( C1 only ) | N | Only applies for FLEX DAC orders. Indicates the specific delta value applied to each leg. For Calls, the delta value for a call leg must be ≤ delta of the call leg with the next largest strike price. As the strike price increases, the delta should decrease. Valid values are 0.0001 to 1.0000. For Puts, the delta value for a put leg must be ≥ delta of the put leg with the next smallest strike price. As the strike price increases, the delta should increase. Valid values are -1.0000 to -0.0001. The maximum number of legs on a FLEX DAC order is 99. Equity legs are allowed on FLEX orders. FLEX DAC orders allow up to 98 options legs and one equity leg. |
| 7933 | RoutingFirmID | N | Used to optionally convey the routing firm of the order. If supplied, value must be a valid EFID. |  |
| 18 | ExecInst | N | Single value only (with no trailing space) `G` = All or None (AON). Order must be DAY and COA eligible (C1 and EDGX only) |  |
| 38 | OrderQty | Y | Number of contracts for order, 1 to 999,999 |  |
| 111 | MaxFloor (C2 Only) | N | Portion of OrderQty to display. The balance is reserve. `0` = Display entire quantity (Default). 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. Ignored if order is IOC. An order with a MaxFloor greater than 0 will be rejected for Cboe proprietary classes (such as DJX, RUT, SPX, XSP, and VIX). |  |
| 8020 | DisplayRange | N | Used for random replenishment of reserve orders. This is the random replenishment amount in contracts. The value specified will create a DisplayRange around MaxFloor . Value must be less than the value specified for MaxFloor. Example If MaxFloor = 20 and DisplayRange = 2 , the displayed quantity will be selected randomly from one of the following values: 18, 19, 20, 21, 22. |  |
| 40 | OrdType | Y | `1` = Market `2` = Limit `4` = Stop Limit (effective TBD) Note market and stop/stop limit orders are not supported during GTH or Curb sessions. |  |
| 44 | Price | Y | Accepted values will be -$999,999,999.90 to $999,999,999.90. Short form request Net 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) Long form request Net Price of the Strategy. Positive Value, Debit Negative Value, Credit Even Order - 0 (Zero) Price must be in whole pennies for option-only spreads. Can be up to 4 decimal places for spreads with stock legs and FLEX instruments. |  |
| 439 | ClearingFirm | N | CMTA Number of the firm that will clear the trade. Must be supplied for CMTA orders and left unspecified for non-CMTA orders. |  |
| 440 | ClearingAccount | N | When OrderCapacity (47) is set to a value of ‘M’ or ‘N’ this field should be filled with desired market maker ID. When OrderCapacity (47) is set to a value of ‘M’ any unregistered Market-Maker Accounts in this field will cause the quote or order to be rejected with a reason code of ‘A’ and sub-reason code ‘L’. When using CMTA, this value is the market maker ID for the CMTA member instead of the Cboe member executing the trade. When FIX Port Attribute Reject Non-Market Maker With Clearing Account is set to 'Yes' (C1 and C2 only) orders with OrderCapacity (47) other than 'M' and 'N' with a specified value for ClearingAccount (440) will be rejected. Field value is reflected on Execution Reports including FIX Drop |  |
| 6253 | DrillThruProtection | N | Amount sender is willing to trade through SNBBO at time of order entry. A zero value provides full SNBBO protection. The amount should be entered as a non-negative dollar 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 the `New Order Multileg` message do not have a minimum or maximum. |  |
| 9303 | RoutingInst | N | 1 st character `B` = Book Only (Default) Allowed to interact with single-leg orders and other complex orders `P` = Post Only 1 `D` = Complex Book Only. Allowed to interact with other complex orders only. Requires TimeInForce (59) = 0 (DAY) or 3 (IOC) AND OrderCapacity (47) = M. 2 nd character `L` = Do not Expose order via Complex Option Auction (COA) `S` = Expose order via Complex Option Auction (COA) 1 (Default) Non-IOC orders will default the 2 nd character to ‘S’ and IOC orders will default the 2 nd character to ‘L’ unless otherwise specified. 1 Post Only COA eligible orders RoutingInst (9303) = PS not supported . |  |
| 9732 | AttributedQuote | N | Allow for order to be attributed to firm’s Executing Firm ID (EFID) in Cboe market data feeds. The order may also be included within attributed summary information displays related to quote/trade information on the Cboe web site. Must opt-in to support through the Cboe Trade Desk. `N` = (Default) Do not attribute EFID (115) to this order. `Y` = Attribute EFID (115) to this order. `C` = Attribute ClientID (109) only. `Z` = Attribute both EFID (115) and ClientID (109). |  |
| 109 | ClientID | N | User-defined identifier for quote attribution if AttributedQuote (9732) = C or Z. |  |
| 1462 | TargetPartyID (C1 and EDGX only) | N | A valid ParentID of the Directed Market Maker (EDGX only) or Preferred Market Maker (C1 only) is required for Directed Orders. |  |
| 9370 | AuctionID | N | Auction order identifier supplied by Cboe. This identifier corresponds to the identifiers used in Cboe market data products. |  |
| 47 | Rule80A (aka OrderCapacity) | Y | The capacity for the order. `C` = Customer `F` = Firm `M` = Market Maker `U` = Professional Customer `N` = Away Market Maker `B` = Broker-Dealer `J` = Joint Back Office `L` = Non-TPH Affiliate (C1 and C2 only) `D` = Non-TPH Broker-Dealer (FLEX only) (C1 only) |  |
| 59 | TimeInForce | N | `0` = DAY (Default) Expires at end of market day. `1` = GTC. Remains in system until executed, canceled or option expires. `2` = At The Open. Will remain queued and only interact in the Opening Process. `3` = IOC. Portion not filled immediately is cancelled. `6` = GTD. Expires at specified ExpireTime for a specified day. |  |
| 22017 | SessionEligibility (C1 only) | N | `R` = (Default) Order participates in Regular Trading Hours only. `A` = Order participates in both Global and Regular Trading Hours. Also allows for participation in Curb Trading Session. `B` = Order participates in both Regular Trading Hours and Curb Session. |  |
| 126 | ExpireTime | N | Required for TimeInForce = 6 (GTD) orders. Specifies the date-time (in GMT) that the order expires. Values may be specified at a millisecond level. |  |
| 7928 | PreventMatch | N | Cboe Match Trade Prevention. 3 characters (not space separated): 1 st character - MTP Modifier ***: `N` = Cancel Newest `O` = Cancel Oldest `B` = Cancel Both 2 nd character - Unique ID Level: `F` = Prevent Match at Cboe Exchange Member level `M` = Prevent Match at MPID 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. *** Note: These values only apply on complex vs. complex matches. When a complex order with Match Trade Prevention interacts with a single-leg order with Match Trade Prevention, the complex order will always be cancelled. |  |
| 7692 | RiskReset | N | For use by Users using Cboe’s Risk Management tools to reset or release firm, symbol 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 `G` = EFID Group level risk/lockout reset 1 `C` = CustomGroupID lockout reset Single Character Values - without counter reset: `T` = Risk Root-level risk/lockout reset `E` = EFID risk/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, ‘FS’, ‘SC’, ‘FC’, and ‘SFC’ are all acceptable value;. For more information, see the Cboe Titanium U.S. Options Risk Management Specification . |  |
| 7699 | CustomGroupID | N | Optional User-specified ID for the order. Cancellation by CustomGroupID available using Purge Port Protocol - Member to Cboe only. Integer 1-65535 |  |
| 423 | PriceType (C1 only) | N | `1` = Percentage, when trading FLEX percentage instruments `2` = (Default) Price per unit (contract) `3` = Fixed amount (cash spread pricing) - only for complex orders routed to floor. `D` = FLEX DAC |  |
| 9465 | OrderOrigin (C1 only) | N | Floor acronym of Market Maker on whose behalf this order is being entered by a floor broker. |  |
| 20012 | Held (C1 only) | N | `Y` = Mark order as Held `N` = Mark order as Not Held Default value is ‘N’ if the order is direct routed to a Non-PAR Official on the floor |  |
| 21010 | FLEXAuctionDuration (C1 Only) | N | Duration of the FLEX Auction in milliseconds. The minimum valid value is 3,000 milliseconds. The maximum valid value is 300,000 milliseconds. Applicable only to FLEX instruments. |  |
| 21005 | FLEXHedgeExecInst (C1 only) | N | Hedge execution instruction to carry the hedge information for the order. Applicable only to FLEX instruments. |  |
| 21008 | FLEXPreFacilPrice (C1 only) | N | The pre-facilitation price for the hedge instruction. Applicable only to FLEX instruments. |  |
| 21097 | FrequentTraderID (C1 only) | N | Identifies the frequent trader program in which the order is participating. Six alphanumeric characters or less (0-9, A-Z, or a-z). |  |
| 22303 | FloorRoutingInst (C1 only) | N | `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 (9303) must be set to B for complex or FLEX instruments. |  |
| 22002 | StrategyID (C1 only) | N | 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 |  |
| 22003 | ORS (C1 only) | N | Order router subsidy eligible (used for billing purposes). `N` = No (Default) `Y` = Yes |  |
| 22005 | ComboOrder (C1 only) | N | Used to declare the order as a Combo (for regulatory relief if trading SPX on the floor). `N` = (Default) No `Y` = Yes |  |
| 22006 | Compression (C1 only) | N | Order is a compression trade. `N` = No (Default) `Y` = Yes |  |
| 22018 | TiedHedge (C1 only) | N | Order is a tied hedge. `N` = No (Default) `Y` = Yes |  |
| 22008 | EquityPartyID (C1 and EDGX only) | N | MPID used to clear the equity leg being cleared via the Exchange. |  |
| 22016 | EquityExDestination (C1 and EDGX only) | N | Valid when LegSymbol (600) = Equity symbol. 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, then the equity match will be reported to TD Securities (USA) LLC (C). |  |
| 22026 | CrossInitiator (C1 and EDGX only) | Y | 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 buyer/seller MPID. Note that Broker Choice is allowed on any stock/option order including FLEX or Non-FLEX orders of any ratio. |  |
| 22028 | CrossOnBehalfOfID (C1 and EDGX only) | N | 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. |  |
| 22624 | EquityLegShortSell (C1 and EDGX only) | N | `5` = Sell Short (stock leg only) `6` = Sell Short Exempt (stock leg only) Valid for short form requests only. |  |
| 22100 | FloorDestination (C1 only) | N | 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). |  |
| 22021 | TerminalOperatorId (C1 only) | N | The ID associated with the operator logged into the terminal when an order is entered. 20 characters or less (ASCII 32-126). This field is recorded and returned in execution reports. Available via Odrop. |  |
| 22022 | AdditionalClientInfo (C1 only) | N | Client information populated by the Member during order entry via terminal. 16 characters or less (ASCII 32-126). This field is recorded and returned in execution reports. Available via Odrop. |  |
| 22025 | ReferencePrice (C1 only) | N | Reference price for underlying security or index of a FLEX DAC order. If a reference price is not specified, the system applies the current value of the underlying at the time of order entry. |  |
| 99 | StopPx (effective TBD) | N | 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. |  |
| 25026 | StopPxType (effective TBD) | N | 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) |  |
|  | Standard Message Trailer | Y |  |  |

#### Security Definition Request Message Fields

A `Security Definition Request` 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 Security Definition Message Fields with the Cboe symbol in Symbol (55). A minimum of two legs must be specified and a maximum of sixteen option legs (16), one of which may be an equity leg (C1 and EDGX only), will be accepted. For non-FLEX Floor-Routed orders, a minimum of two (2), maximum of 100 total legs, including one (1) equity leg (C1 only) will be supported.

For non-FLEX instruments, a minimum of two legs must be specified and a maximum of sixteen option legs (16), one of which may be an equity leg (C1 and EDGX only), will be accepted. For FLEX instruments, a minimum of one leg must be specified and a maximum of 100 legs will be accepted. Equity legs are allowed on FLEX orders. FLEX instruments allow up to 99 options legs and one equity leg.

Simple and complex FLEX instruments may be created using the `Security Definition Request`.

**Table 1. Security Definition Request Message Fields**

| Tag | Field Name | Req’d | Description |  |
|---|---|---|---|---|
| 35 | Standard Message Header | Y | MsgType= c |  |
| 97 | PossResend | N | `N` = (Default) indicates a new order. `Y` = Indicates an application level resend and is NOT SUPPORTED. For reasons of economy, Cboe does not track in primary storage the ClOrdID values of orders that are no longer live. For reasons of performance, Cboe does not access secondary storage to enforce unique ClOrdID values against orders that are no longer live. Without full duplicate ClOrdID value enforcement, it is not possible to safely implement the full behavior specified in the FIX 4.2 Protocol for PossResend = Y . To remain economical, fast and safe, all messages with PossResend = Y will be simply ignored. |  |
| 11 | ClOrdId | Y | ID chosen by client. 20 characters or less. Characters in ASCII range 33-126 are allowed, except for comma, semicolon, and pipe. A leading tilde (~) cannot be sent on any ClOrdId and will result in a reject. These are reserved for internal use by Cboe and could be received as a result of a system-generated ClOrdId . If the ClOrdId matches a live order it will be rejected as duplicate ( `unless PossResend` = Y, see above ). Note: Cboe only enforces the uniqueness of ClOrdID values among currently live orders, which includes long-lived, persisting GTC/GTD orders . However it is strongly recommended users maintain unique ClOrdID values. |  |
| 60 | TransactTime | Y | Time request initiated/released. Required by FIX 4.2. |  |
| 167 | SecurityType | Y | Indicates the type of security `MLEG` = Multileg |  |
| 423 | PriceType | N | Required for FLEX instruments only. `1` = Percentage (when trading FLEX percentage instruments) `2` = (Default) Price per unit (contract) |  |
| 555 Repeating Group | NoLegs | Y | Indicates the number of legs in this complex order. For Non-FLEX instruments: a minimum of 2 legs, maximum of 16 legs. For FLEX instruments: a minimum of 1 leg, maximum of 100 legs. Equity legs are allowed on FLEX orders. FLEX instruments allow up to 99 options legs and one equity leg. For non-FLEX 'Floor-Routed' orders, a minimum of 2, maximum of 100 total legs, including 1 equity leg (C1 only) . |  |
| ➔ | 654 | LegRefID | Y | Required tag to start each repeated group. Leg ID chosen by client. Five alphanumeric or space characters or less. |
| ➔ | 600 | LegSymbol | Y | OSI root symbol (upper case) or Cboe format symbol (case sensitive). OSI root symbol (upper case) is required for FLEX instruments. |
| ➔ | 608 | LegCFICode | N | CFI Code for leg. Required if Tag 600 is an OSI root. `OP` = Option Put `OC` = Option Call `E` = Equity. Required for equity legs of complex orders (C1 only) (Not applicable to FLEX instruments). |
| ➔ | 611 | LegMaturityDate | N | Indicates maturity date (YYYYMMDD) for the option contract in leg. Required if tag 600 is an OSI root. |
| ➔ | 612 | LegStrikePrice | N | Indicates strike price for option contract in leg. Required if tag 600 is an OSI root. 0 - 999999.999 |
| ➔ | 623 | LegRatioQty | Y | Ratio of number of contracts in this leg per order quantity. All legs must be reduced (i.e., 2:2 must be sent as 1:1) in order to be accepted by the system when using this message type. C2 and EDGX Only : In addition, when reduced, the ratio between the smallest and largest leg must be no more than 1:3. Accepted values are 1 - 999,999. For simple (one legged) FLEX Instruments, this field is ignored. |
| ➔ | 624 | LegSide | Y | `1` = Buy `2` = Sell For simple (one legged) FLEX Instruments, this field is ignored. |

#### Order Cancel Request Message Fields

Request the cancellation of a single order or multiple orders on the FIX session. Note that `Order Cancel Request` messages do not apply to open orders across multiple sessions unless submitted on a Purge Port Protocol - Member to Cboe.

A single order cancellation uses the ClOrdID from a previous order using the OrigClOrdID (41) field.

`Order Cancel Request` 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 implemented using the MassCancelInst optional field.

- Specify the MassCancelInst (7700) field
- Specify the OnBehalfOfCompId (115) field, optionally specify Risk Root in Symbol (55) field, and optionally MassCancelID (7695) if the Acknowledgement Style is set to `S` or `B`.

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 and Purge Orders 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.

**Table 1. Order Cancel Request Message Fields**

| Tag | Field Name | Req’d | Description |
|---|---|---|---|
| 35 | Standard Message Header | Y | MsgType = F |
| 97 | PossResend | N | `Y` = Indicates an application level unsolicited resend. If ClOrdID has not yet been seen, the cancel is treated as normal. If ClOrdID already exists, the resent cancel is ignored. `N` = (Default) Indicates a new cancel. |
| 11 | ClOrdID | Y | ID chosen by user. 20 characters or less. Characters in ASCII range 33-126 are allowed, except for comma, semicolon, and pipe. A leading tilde (~) cannot be sent on any ClOrdId and will result in a reject. These are reserved for internal use by Cboe and could be received as a result of a system-generated ClOrdId . Duplicate cancel order ClOrdID s will be rejected (or ignored if PossResend = Y). |
| 41 | OrigClOrdID | Y | ClOrdID of the order to cancel. Either OrigClOrdID or OrderId must be populated. |
| 37 | OrderId | N | OrderID supplied by Cboe on the order acknowledgement. Optional but recommended for performance. Either OrigClOrdID or OrderId must be populated. |
| 60 | TransactTime | Y | Time cancel initiated/released. Required by FIX 4.2. |
| 55 | Symbol | N | Risk Root symbol for a mass cancel. |
| 77 | OpenClose | N | Open/Close position indicator `O` = Open `C` = Close `N` = None |
| 200 | MaturityMonth | N | Maturity Month |
| 205 | MaturityDay | N | Expiration date day of month Format: DD |
| 201 | PutOrCall | N | `0` = Put `1` = Call |
| 202 | StrikePrice | N | Strike Price for option 0 - 999,999.99 |
| 54 | Side | N | `1` = Buy `2` = Sell |
| 38 | OrderQty | N | Number of contracts for order. Must match original order. |
| 7700 | MassCancelInst | N | Used to perform Mass Cancel operation as opposed to a single order cancel. If MassCancelInst is provided, tags 37, 41, 77, 200, 205, 201, 202, 54 and 38 will be ignored. 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 below. EFID values specified in OnBehalfOfCompId (115) that are not allowed to clear for the firm will be rejected. 1 st Character : Clearing Firm Filter `A` = No filtering by EFID is performed. `F` = All orders that were sent under the EFID specified in OnBehalfOfCompId (115 ) will be cancelled. If "F" specified and OnBehalfOfCompId (115 ) is not provided, the Mass Cancel or Purge Order messages will be rejected. 2 nd Character : Acknowledgement Style `M` = (Default) Individual Execution Reports are sent for each cancelled order. `S` = Single Execution Report sent once all cancels have been processed. Single Execution Report will contain MassCancelId (7695 ) and CancelledOrderCount (7696 ). MassCancelId (7695) must be specified or the Order Cancel Request message will be rejected. `B` = Both Individual Execution Reports and summary Single Execution Report. Also requires MassCancelId (7695) to be specified, or the Order Cancel Request will be rejected. 3 rd Character : Lockout Instruction `N` = (Default) No lockout (Effective 09/28/26, this instruction will be required for all Mass Cancel messages) `L` = Lockout until corresponding Risk Reset received. Lockout can be used only with Clearing Firm Filter set to ‘F’, otherwise the `Order Cancel Request` will be rejected. Lockout will apply to all new orders and cancel/replace orders for the EFID (and Symbol (55), if specified), regardless of other filtering in the MassCancelInst . (Effective 09/28/26, Mass Cancel messages with Lockout Instruction = L will be rejected) 4 th Character : Instrument Type Filter (C2 and EDGX only) `B` = (Default) Cancel both Simple and Complex orders `S` = Cancel Simple orders only `C` = Cancel Complex orders only 5 th Character : GTC/GTD Order Filter `C` = (Default) Cancel GTC/GTD orders `P` = Don’t cancel (preserve) GTC/GTD orders If Symbol (55) is specified, it must contain a valid Risk Root, not the Cboe symbol name. By specifying Symbol (55), cancels will be limited to a single Risk Root. A self-imposed lockout can be released using the RiskReset (7692) field of the `New Order Single` or `New Order Multileg` message. For more information, see the Cboe Titanium U.S. Options Risk Management Specification . |
| 7695 | MassCancelID | N | Mass Cancel ID chosen by user. If the populated value ends in a space the message will be rejected. This field will be echoed back in the resulting order execution report when a single execution report Acknowledgement Style is selected. Mass Cancel requests containing a currently outstanding MassCancelID will be rejected. |
| 7933 | RoutingFirmID | N | Required if RoutingFirmID is populated on original order message. |
|  | Standard Message Trailer | Y |  |

#### Order Cancel/Replace Request

Only Price, OrderQty, OrdType, MaxFloor, 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 is maintained on an order or quote modification if there is a decrease in OrderQty with no other changes.
- Time priority is maintained on an order modification in the following cases:
  - An update to StopPx on an unelected stop order with no other changes
  - An update to MaxFloor with no other changes
- An order combining two or more of the specific items above does not lose priority.
- Time priority is lost in the following cases:
  - An order involving one of the items above and changes to any other attribute.
  - A quote modification decreasing size and changes to any other attribute.
  - An order or quote modification with no change to any attribute.

Other fields (including ExecInst) will be ignored, and the value from the original order will be re-used. Note that when a Day ISO is modified, the ISO designation is applied to the new order.

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 replace request overlaps partial fills for the current order, leaving the user in total control of the share exposure of the order.

MaxFloor if not specified is preserved from the original order and applied to the new size and price. A change in MaxFloor takes effect on the next reserve reload.

A `Cancel/Replace` message should not be issued until the ack for the previous `Cancel/Replace` message (or the acknowledgement for the first `Cancel/Replace` message) for that order has been received. The FIX handler will reject a new `Cancel/Replace` message if it has not seen the prior `Cancel/Replace` message from the Matching Engine.

`Cancel/Replace` message requests that merely reduce OrderQty may be overlapped if the existing ClOrdID is re-used. This is the only case where re-use of the existing ClOrdID is allowed.

A maximum of 1,295 `Cancel/Replace` 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 an `Order Cancel` message request.

Firms are advised to always send OnBehalfOf (115) on all `Cancel/Replace` requests as port level defaults are not honored on these messages.

**Table 1. Order Cancel/Replace Request Message**

| Tag | Field Name | Req’d | Description |
|---|---|---|---|
| 35 | Standard Message Header | Y | MsgType= G |
| 97 | PossResend | N | `Y` = Indicates an application level resend. If the ClOrdID does not indicate an already pending Cancel/Replace, the cancel is treated as normal. If ClOrdID does indicate an already pending Cancel/Replace then the resent Cancel/Replace is ignored. `N` = (Default) indicates a new cancel. |
| 1 | Account | N | Ignored - value preserved from original order |
| 11 | ClOrdId | Y | ID chosen by user. 20 characters or less. Characters in ASCII range 33-126 are allowed, except for comma, semicolon, and pipe. A leading tilde (~) cannot be sent on any ClOrdId and will result in a reject. These are reserved for internal use by Cboe and could be received as a result of a system-generated ClOrdId . Duplicate order ClOrdId s will be rejected (or ignored if PossResend = Y ). |
| 41 | OrigClOrdID | Y* | ClOrdID of the order to replace. In the case of multiple changes to a single order, this will be the ClOrdID of the most recent accepted change. *Either OrigClOrdID or OrderId must be populated. |
| 37 | OrderId | N | OrderId supplied by Cboe on the order acknowledgement. |
| 60 | TransactTime | Y | Time Cancel/Replace initiated/released. |
| 55 | Symbol | N | Ignored - value preserved from original order |
| 77 | OpenClose | N | Ignored - value preserved from original order |
| 200 | MaturityMonth | N | Ignored - value preserved from original order |
| 205 | MaturityDay | N | Ignored - value preserved from original order |
| 201 | PutOrCall | N | Ignored - value preserved from original order |
| 202 | StrikePrice | N | Ignored - value preserved from original order |
| 54 | Side | N | Must match original order. |
| 38 | OrderQty | Y | Number of contracts for order. This will modify the OrderQty of the current order; it does not directly set the remaining quantity. |
| 40 | OrdType | N | Defaults to original order value if not sent. `1` = Market `2` = Limit `3` = Stop `4` = Stop Limit May replace Limit with Market or Stop with Stop Limit and vice versa, but otherwise must match original order, if sent. Note market and stop/stop limit orders are not supported during GTH or Curb sessions. |
| 44 | Price | Y | Limit Price. Order rejected if priced finer than the minimum trading increment for the option. |
| 18 | ExecInst | N | Ignored. Value preserved from original order |
| 111 | MaxFloor | N | If specified, the displayed quantity of a reserve order may be changed on the next reload. |
| 99 | StopPx | N | Optional. Defaults to original order if not sent. Stop/Stop Limit orders will only elect based off of RTH quotes and trades. |
| 9619 | CancelOrigOnReject | N | `N` = (Default) Leave original order alive. `Y` = Cancel original order if replacement fails (an unsolicited cancel report will be sent for original order in this case). |
| 7933 | RoutingFirmID | N | Used to optionally convey the routing firm of the order. Required if RoutingFirmID is populated on `New Order Single` or `New Order Multileg` message. |
|  | Standard Message Trailer | Y |  |

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

TPHs having in-person Market Makers on the Cboe trading floor may optionally receive floor trade notifications as `Execution Report` messages with ExecType (150) = T. TPHs must enable and opt-in to the Market Maker Floor Trade Notifications port default to receive `Execution Report` messages with ExecType (150) = T.

TPHs are encouraged to use `Floor Trade Confirmation` messages to respond to floor broker allocations ( `Execution Report` messages having ExecType (150) = T) if they agree with the terms of the trade in the `Execution Report` message. 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. TPHs configured to be automatically endorsed on floor broker trades will not receive trade notifications and will therefore not be required to respond with a `Floor Trade Confirmation` message.

Floor Trade Confirmation reports submitted to acknowledge floor broker allocations for matching will reflect the Market Maker EFID configured in the Cboe Web Portal for floor transactions (senderIMID). The report will not reflect the OnBehalfOfCompID (115) sent on the `Floor Trade Confirmation` message.

The exchange will respond to a `Floor Trade Confirmation` message with an `Execution Report` message having either OrdStatus set to either `0` (new) or `8` (rejected).

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

| Tag | Field Name | Req’d | Description |
|---|---|---|---|
| 35 | Standard Message Header | Y | MsgType=U03 (Confirm Floor Trade) |
| 11 | ClOrdId | Y | Client order id to be used to identify this floor trade report in execution reports. A leading tilde (~) cannot be sent on any ClOrdId and will result in a reject. These are reserved for internal use by Cboe and could be received as a result of a system-generated ClOrdId . |
| 17 | ExecId | Y | Execution ID identifying the floor trade report to be confirmed. |
| 55 | Symbol | Y | OSI root symbol (upper case) or Cboe format symbol (case sensitive) |
| 200 | MaturityMonth | N | Indicates Maturity Month Format: YYYYMM |
| 205 | MaturityDay | N | Expiration date day of the month Format: DD |
| 201 | PutOrCall | N | `0` = Put `1` = Call |
| 202 | StrikePrice | N | Strike Price for option, 0 - 999,999.999 |
| 60 | TransactTime | Y | GMT date-time. Report send time (for audit) |
| 423 | PriceType | N | Indicates FLEX trade pricing. Only needs to be sent for FLEX trades with percentage pricing. `1` = Traded as percentage `2` = (Default) Price per unit (contract) |

#### 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 this FIX 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 ( `Execution Report` messages having ExecTransType = T) if they agree with the terms of the trade in the `Execution Report` message.

TPHs configured to be automatically endorsed on floor broker trades will not receive trade notifications and will therefore not be required to respond with an `Add Floor Trade` message.

Add Floor Trade reports submitted to acknowledge floor broker allocations for matching will reflect the Market Maker EFID configured in the Cboe Web Portal for floor transactions (senderIMID). The report will not reflect the OnBehalfOfCompID (115) sent on the `Add Floor Trade` message. The Exchange will respond to an `Add Floor Trade` message with an `Execution Report` message having either OrdStatus (39) set to either `0` (new) or `8` (rejected). Once the floor trade is matched the Exchange will send an `Execution Report` message having OrdStatus (39) set to `2` (filled).

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

| Tag | Field Name | Req’d | Description |
|---|---|---|---|
| 35 | Standard Message Header | Y | `MsgType` = U01 (Add Floor Trade) |
| 97 | PossResend | N | `N` = (Default) indicates a new order. `Y` = Indicates an application level resend and is NOT SUPPORTED. For reasons of economy, Cboe does not track in primary storage the ClOrdID values of orders that are no longer live. For reasons of performance, Cboe does not access secondary storage to enforce unique ClOrdID values against orders that are no longer live. Without full duplicate ClOrdID value enforcement, it is not possible to safely implement the full behavior specified in the FIX 4.2 Protocol for PossResend = Y . To remain economical, fast and safe, all messages with PossResend = Y will be simply ignored. |
| 11 | ClOrdId | Y | ID chosen by client. 20 characters or less. Characters in ASCII range 33-126 are allowed, except for comma, semicolon, and pipe. A leading tilde (~) cannot be sent on any ClOrdId and will result in a reject. These are reserved for internal use by Cboe and could be received as a result of a system-generated ClOrdId . If the ClOrdId matches a live order it will be rejected as duplicate ( `unless PossResend` = Y, see above ). Note: Cboe only enforces the uniqueness of ClOrdID values among currently live orders, which includes long-lived, persisting GTC/GTD orders. However it is strongly recommended users maintain unique ClOrdID values. |
| 55 | Symbol | Y | OSI root symbol (upper case) or Cboe format symbol (case sensitive) |
| 200 | MaturityMonth | N | Indicates Maturity Month Format: YYYYMM |
| 205 | MaturityDay | N | Expiration date day of the month Format: DD |
| 201 | PutOrCall | N | `0` = Put `1` = Call |
| 202 | StrikePrice | N | Strike Price for option, 0 - 999,999.999 |
| 442 | MultilegReportingType | N | `1` = (Default) Single-leg instrument execution `2` = Individual leg of a multi-leg instrument |
| 22005 | ComboOrder | N | Declare the order as a Combo (for regulatory relief if trading SPX on the floor). `N` = (Default) No `Y` = Yes |
| 76 | ExecBroker | N | Valid Cboe clearing firm number for trade matching (an OCC number) Field is ignored and is not validated. Default Market Maker EFID Association Tool in Web Portal is used to identify OCC give-up number. |
| 1 | Account | N | Up to 16 characters in ASCII range 33-126 are allowed. When clearing OCC, value is passed to clearing in the Customer ID field (max 10 characters). If the Send ClearingOptionalData FIX port attribute is not set to 'No', the full 16 character value is also passed to clearing in the Optional Data field. When clearing Cboe Clear U.S., value is passed in the Customer Account Number field. |
| 9324 | ClearingOptionalData | N | This field will be reflected back on execution reports and FIX DROP ports, and will be mapped to the OCC via the Optional Data field. 16 characters or less. Characters in ASCII range 33-126 are allowed, except for comma, semicolon, and pipe. |
| 440 | ClearingAccount | Y unless default within the Market Maker EFID Association Tool in Web Portal | When OrderCapacity (47) is set to a value of ‘M’ or ‘N’ this field should be filled with desired market maker ID. When OrderCapacity (47) is set to a value of ‘M’ any unregistered Market-Maker Accounts in this field will cause the quote or order to be rejected with a reason code of ‘A’ and sub-reason code ‘L’. When using CMTA, this value is the market maker ID for the CMTA user instead of the Cboe user executing the trade. This field will be passed through to the OCC Sub Account ID field and may be up to four alphanumeric characters. 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 BZX and EDGX Only. This field is recorded and returned in execution reports. Available via FIX Drop. ClearingAccount may be defaulted using the Market Maker EFID Association tool in the Web Portal. |
| 439 | ClearingFirm | N | CMTA Number of the firm that will clear the trade. Must be supplied for CMTA orders and left unspecified for non-CMTA orders. |
| 22049 | FloorTraderAcr | Y | Floor acronym of participant submitting trade. |
| 375 | ContraBroker | N | Floor-matched executions will identify the OCC Clearing Firm # of contra party on the execution. Field is ignored and is not validated. Default Market Maker EFID Association Tool in Web Portal is used to identify OCC give-up number. |
| 54 | Side | Y | `1` = Buy `2` = Sell |
| 38 | OrderQty | Y | Instrument quantity, 1 to 999,999. |
| 44 | Price | Y | Limit Price. Order rejected if priced finer than the minimum trading increment for the option. |
| 60 | TransactTime | Y | Time order initiated/released. GMT date-time. Report send time (for audit). |
| 77 | OpenClose | Y* | Indicates status of position in the option. `O` = Open `C` = Close `N` = None* *Orders with OrderCapacity (47) = 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 OrderCapacity (47) = M will be permitted to submit OpenClose = O if the order has TimeInForce (59) = 3 (IOC) and RoutingInst (9303) = 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. |
| 5179 | FloorTradeTime | Y | Time of the execution of the floor trade. GMT date-time that transaction occurred. |
| 337 | ContraTrader | Y | Floor-matched executions will identify the Floor acronym of contra party on the execution. |

#### Delete Floor Trade Message Fields (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 this FIX message type. The trade report to delete will be identified by the ExecId (17) of an `Execution Report` message. 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 an `Execution Report` message. If the floor trade report is successfully deleted, an `Execution Report` message will be issued with OrdStatus (39) = `4` (cancelled).

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

| Tag | Field Name | 'Req’d | Description |
|---|---|---|---|
| 35 | Standard Message Header | Y | `MsgType` = U02 (Delete Floor Trade) |
| 17 | ExecId | Y | ExecId of the trade to be deleted. |
| 11 | ClOrdID | Y | ClOrdID of the delete floor trade message. |
| 55 | Symbol | Y | OSI root symbol (upper case) or Cboe format symbol (case sensitive) |
| 60 | TransactTime | Y | GMT date-time of delete. |
| 200 | MaturityMonth | N | Indicates Maturity Month (YYYYMM) |
| 205 | MaturityDay | N | Expiration date day of the month Format: DD |
| 201 | PutOrCall | N | `0` = Put `1` = Call |
| 202 | StrikePrice | N | Strike Price for option, 0 - 999,999.999 |
| 54 | Side | Y | `1` = Buy `2` = Sell |

### Order Protocol - Cboe to Member

FIX messages sent from Cboe to Member.

#### Execution Report Message Fields

`Execution Report` messages with ExecType (150) = M are responses to Mass Cancel requests. Multiple `Execution Report` messages will be sent in response to Mass Cancel requests when MassCancelInst, 2nd character value = I. An `Execution Report` message will be sent for each matching unit followed by a final acknowledgment containing the total number of orders and quotes cancelled due to the cancel request across all matching units. This final acknowledgment will not include the MatchingUnit field.

Mass Cancel Execution Report are compact and will only carry fields as stated in the description of ExecType (150) that follows.

The MultilegReportingType (442) field can be used to determine whether a fill or partial fill corresponds to a complex instrument, a single-leg instrument that is part of a complex instrument execution, or a single-leg instrument fill only (field will not be present in this case). Similarly, the SecondaryExecID (527) field can be used to distinguish single-leg instrument executions from complex instrument executions and to identify single-leg instrument executions that comprise a complex instrument execution.

- If the SecondaryExecId (527) field is not present, the `Execution Report` message is associated with a simple instrument.
- If the SecondaryExecId (527) field is present and is identical to the ExecId (17) field, the `Execution Report` message represents a complex instrument execution for which associate individual leg `Execution Report` messages will follow.
- If the SecondaryExecId (527) field is present and not identical to the ExecId (17) field, the `Execution Report` message represents a single-leg execution that comprises a complex execution and the SecondaryExecId (527) field is set to the ExecId (17) field of the associated complex execution.

For complex order executions (150=1 or 2), `Execution Report` messages (i.e. fills) will be generated for the complex order (442=3) followed by `Execution Report` messages for each leg (442=2). 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. In addition, the symbology used on executions for complex orders, including the legs, will always be Cboe symbology.

**Table 1. Execution Report Message Fields**

| Tag | Field Name | Description |  |
|---|---|---|---|
| 35 | Standard Message Header | MsgType = 8 |  |
| 52 | SendingTime | GMT date-time that execution report was sent by Cboe. |  |
| 20 | ExecTransType | `0` = New `3` = Status ExecTransType = 3 (Status). Used for Done For Day and Carried Order Restatements if associated port attributes are set. |  |
| 442 | MultilegReportingType | `1` = Single-leg instrument execution `2` = Individual leg of a multi-leg instrument `3` = Multi-leg instrument |  |
| 17 | ExecID | Day-unique ID of execution message. |  |
| 19 | ExecRefID | Sent for FLEX restatements (150=D, 378=9). Refers to the ExecID (17) of the trade being restated. |  |
| 527 | SecondaryExecID | Indicates whether a fill or partial fill ( ExecType (150) = 1 or 2) 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 (527) 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 (527) of the associated complex execution. |  |
| 18 | ExecInst | ExecInst from order (if any) |  |
| 150 | ExecType | Reason for this execution report: `0` = New (acknowledgment of new order) `1` = Partial Fill `2` = Fill `3` = Done For Day `4` = Canceled `5` = Replaced `8` = Rejected `D` = Restated `M` = Mass Cancel Complete `P` = Purge Notification `T` = Floor Market Maker Trade Notification (C1 only) For Standard FIX Drop, only ‘1’ or ‘2’ will be sent and will always equal OrdStatus (39). For Order by Order FIX Drop, all ExecType values will be sent (see Order by Order FIX Drop ). When responding to a mass cancel request, ExecType is set to a value of ‘M’. This indicates the only tags present in this message are the following: Standard Message Header (35) SendingTime (52) ExecTransType (20) ExecType (150) MassCancelID (7695) CancelledOrderCount (7696) MatchingUnit (25017) = The MatchingUnit (25017) field is only sent when MassCancelInst , 2 nd character value = `I` . ExecType = T is a non-standard value optionally used to indicate the exec report is a notification to the MM firm that the MM identified in FloorTraderAcr (20049) is a contra to a floor execution. TPHs must enable and opt-in using the Market Maker Trade Notifications port default to receive `Execution Report` messages with ExecType = T . ExecType = 0 and OrdStatus (39) = 0 is used to indicate that `Add Floor Trade` and `Floor Trade Confirmation` messages have been accepted. ExecType = 4 is and OrdStatus (39) = 4 used to indicate a `Delete Floor Trade` message has been accepted. ExecType = 8 and OrdStatus (39) = 8 if `Add Floor Trade` , `Floor Trade Confirmation` or `Delete Floor Trade` message has been rejected . |  |
| 378 | ExecRestatementReason | Only present when ExecType (150) = D `1` = GTC/GTD Restatement `3` = Repricing of order `4` = State Change `5` = Reduction of OrdQty `6` = Price Sliding Reprice `7` = Represented in crowd. Issued on order restatement when the order has been represented on the floor (C1 only) . `8` = Reduction of OrdQty due to Equity Leg Reject . (C1 only) `9` = FLEX price restatement (C1 only) . The value ‘1’ is used for GTC/GTD Carried Order Restatements if associated port attribute is set. `A` = Floor Trade Restatement |  |
| 11 | ClOrdID | ClOrdID of the order being accepted, executed or rejected, -or- ClOrdID of the cancel or replace request , -or- ClOrdID of the order subject to unsolicited cancel ( OrigClOrdID will not be present). A ClOrdID that begins with a tilde (~) is a system generated ClOrdID . These are created by the system for quotes and when a clearing edit results in an unmatched trade. |  |
| 75 | TradeDate (C1 only) | Sent for FLEX restatements (150=D, 378=9). TradeDate is sent for all Execution Reports when ExecType (150) = 1 or 2. The ‘As of’ date for floor orders entered via the Trade Entry tool. Business date of the trade. |  |
| 41 | OrigClOrdID | ClOrdID of the order being cancelled or replaced. Used for a solicited Cancel or Cancel/Replace, otherwise not present. |  |
| 37 | OrderId | OrderId (supplied by Cboe). |  |
| 382 | NoContraBrokers | Only present on trades. Always ‘1’. |  |
| 375 | ContraBroker | Only present on trades. Simple Instrument Fills Internally matched simple executions will identify the OCC clearing number of the contra on the execution. This includes leg fill reports (442=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 (375) will be sent and populated on electronic, complex package fills (442=3) when the contra side is also a complex order. When legging in to the simple books ContraBroker (375) will be blank. ContraBroker (375) will be blank on complex package fills (442=3) executed on the Cboe Options trading floor ( C1 only ). Routed Fills All externally matched (routed, 9730=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 |  |
| 337 | ContraTrader | Only present on local book trades, not present on routed trades. Simple Instrument Fills Displays the EFID (Contra OnBehalfOfCompId ) of the contra side firm. This includes leg fill reports (442=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 (337) will be sent and populated on electronic, complex package fills (443=3) when the contra side is also a complex order. When legging in to the simple books ContraTrader will not be sent. ContraTrader (337) will not be sent on complex package fills executed on the Cboe Options trading floor ( C1 only ). |  |
| 39 | OrdStatus | State of order. `0` = New `1` = Partially Filled `2` = Filled `3` = DoneForDay `4` = Cancelled `5` = Replaced `6` = Pending Cancel `8` = Rejected `A` = Pending Ack `B` = Calculated ( C1 only ) used for FLEX restatements `E` = Pending Replace For Standard FIX Drop, only ‘1’ or ‘2’ will be sent and will always equal ExecType (150). For Order by Order FIX Drop, all execution information will be sent (see Order by Order FIX Drop ). |  |
| 534 Repeating Group | NoAffectedOrders (C1 and EDGX only) | Number of repeating AffectedOrigClOrdIDs (1824) included in this message resulting from an AIM or QCC order reject. Integer 0-10 Must request opt-in at firm or port level to receive this field. |  |
| ➔ | 1824 | AffectedOrigClOrdID (C1 and EDGX only) | Repeating Group of ClOrdIDs of the Agency and Contra sides of a AIM or QCC rejected order. Must request opt-in at firm or port level to receive this field. |
| 548 | CrossID | Copied from order. |  |
| 549 | CrossType | Copied from order. |  |
| 550 | CrossPrioritization | Copied from order. |  |
| 103 | OrdRejReason | Optional when ExecType is ‘8’ (Rejected). `0` = Broker option `1` = Unknown symbol `2` = Exchange closed `3` = Order exceeds limit `5` = Unknown order `6` = Duplicate order `8` = Stale order |  |
| 654 | LegRefID | Copied from order. Applies only to single-leg execution messages generated from a complex execution. |  |
| 1 | Account | Copied from order (available in FIX Drop). |  |
| 55 | Symbol | Copied from order. For Market Maker Trade Notifications ( ExecType (150) = T) then default will be OSI Symbology unless port attribute configured to send Cboe Symbol ID. |  |
| 167 | SecurityType | Indicates the type of security. `OPT` = Option (C1, C2, and EDGX only) `MLEG` = Complex package or option leg `EQ` = Equity leg (C1 and EDGX only) For C1, C2, and EDGX Options , the value of MLEG will only be used for the complex packages. A value of OPT or EQ will be used for each individual leg depending on the leg type. |  |
| 9465 | OrderOrigin (C1 only) | Copied from order. |  |
| 20012 | Held (C1 only) | Indicates if order is eligible to be marked as Held. Copied from order if present. |  |
| 21097 | FrequentTraderID (C1 only) | Copied from order. |  |
| 22002 | StrategyID (C1 only) | Copied from order. |  |
| 22003 | ORS (C1 only) | Copied from order. |  |
| 22005 | ComboOrder (C1 only) | Copied from order. |  |
| 22006 | Compression (C1 only) | Copied from order. |  |
| 555 Repeating Group | NoLegs | Copied from order. |  |
| ➔ | 654 | LegRefID | Copied from order. Applies only to complex orders or trades. |
| ➔ | 600 | LegSymbol | Copied from order. |
| ➔ | 608 | LegCFICode | Copied from order. |
| ➔ | 611 | LegMaturityDate | Copied from order. |
| ➔ | 612 | LegStrikePrice | Copied from order. |
| ➔ | 623 | LegRatioQty | Copied from order. |
| ➔ | 624 | LegSide | Copied from order. |
| ➔ | 564 | LegPositionEffect | Copied from order. |
| ➔ | 566 | LegPrice (C1 only) | Copied from order if complex order is FLEX. |
| 77 | OpenClose | Copied from order. |  |
| 200 | MaturityMonth | Copied from order. For Market Maker Trade Notifications ( ExecType (150) = T ) then default will be Cboe Symbol ID unless the port attribute is configured to send OSI Symbology. |  |
| 205 | MaturityDay | Copied from order. For Market Maker Trade Notifications ( ExecType (150) = T ) then default will be Cboe Symbol ID unless the port attribute is configured to send OSI Symbology. |  |
| 201 | PutOrCall | Copied from order. For Market Maker Trade Notifications ( ExecType (150) = T ) then default will be Cboe Symbol ID unless the port attribute is configured to send OSI Symbology. |  |
| 202 | StrikePrice | Copied from order. For Market Maker Trade Notifications ( ExecType (150) = T ) then default will be Cboe Symbol ID unless the port attribute is configured to send OSI Symbology. |  |
| 54 | Side | Copied from order. |  |
| 38 | OrderQty | Copied from order. This Tag is not supported on FLEX order restatements (150=D, 378=9). |  |
| 111 | MaxFloor | Copied from order. |  |
| 44 | Price | Copied from order. |  |
| 8020 | DisplayRange | Copied from order. |  |
| 59 | TimeInForce | Copied from order unless overridden by the system. For example, Market orders are implicitly IOC for `New Order Single` messages. |  |
| 47 | Rule80A (OrderCapacity) | Copied from order. Must request opt-in to "Echo Tag 47 on Ack" at firm or port level receive this field. |  |
| 22017 | SessionEligibility | Copied from order. |  |
| 126 | ExpireTime | Copied from order if TimeInForce ‘6’ (GTD). |  |
| 439 | ClearingFirm | Copied from order if present. |  |
| 440 | ClearingAccount | Copied from order if present. |  |
| 424 | DayOrderQty | For persisting GTC/GTD orders only. Contracts remaining to be filled for the order at the beginning of the current business day (i.e., OrderQty minus CumQty at the end of the previous business day). |  |
| 14 | CumQty | Cumulative quantity of contracts (or complex instruments) executed for this order over the life of the order, which may be multiple business days in the case of persisting GTC/GTD orders. Please see the Cboe Titanium U.S. Options Complex Book Process for C1 Floor Specific Handling. This value is not supported on FLEX order restatements (150=D, 378=9). |  |
| 425 | DayCumQty | For persisting GTC/GTD orders only. Cumulative quantity of contracts executed for the order during the current business day. |  |
| 32 | LastShares | Quantity of contracts (or complex instruments) traded on this fill (zero for non-fills). Must request opt-in at firm or port level for "Report MTP Fields" to receive this field on a MTP-triggered cancel/restatement where both sides were either reduced or cancelled (i.e. inbound Cancel Both or Decrement). With MTP, the number of contracts that would have matched. |  |
| 31 | LastPx | Price of this fill (zero for non-fills). Must request opt-in at firm or port level for Report MTP Fields to receive this field on a MTP-triggered cancel/restatement where both sides were either reduced or cancelled (i.e. inbound Cancel Both or Decrement). With MTP, the price at which LastShares would have matched. |  |
| 151 | LeavesQty | Quantity of contracts (or complex instruments) still open for further execution. Will be zero if order is dead, otherwise will be OrderQty minus CumQty . Note: It is possible for LeavesQty to be zero when ExecType = 5 indicating that the order is dead. This value is not supported on FLEX order restatements (150=D, 378=9). |  |
| 6 | AvgPx | Average price of executions for this order weighted by trade size. Zero if CumQty is zero or if MultiLegReportingType (442) is ‘2’. This value is not supported on FLEX order restatements (150=D, 378=9). |  |
| 426 | DayAvgPx | For persisting GTC/GTD orders only. Average price per contract of executions on current business date. Zero if DayCumQty is zero. |  |
| 99 | StopPx | Copied from order. |  |
| 198 | SecondaryOrderID | Present on a MTP triggered cancel/restatement, on a reserve reload restatement, and on an order modify acknowledgement that increases the size of a reserve order. Cboe OrderId of contra side of prevented match (MTP), or Cboe PITCH OrderId for displayed portion of reserve order after reload, or Cboe PITCH OrderId for the displayed portion of a reserve order after a Cancel/Replace increased the size of the reserve order. Must request opt-in at firm or port level for Report MTP Fields or Restate on Reload to receive this field. |  |
| 7694 | ContraCapacity | The capacity of the contra for this execution. `C` = Customer `F` = Firm `M` = Market Maker `U` = Professional Customer `N` = Away Market Maker `B` = Broker-Dealer `J` = Joint Back Office `L` = Non-Trading Permit Holder Affiliate (C1 and C2 only) Must request opt-in to Send Contra Capacity at firm or port level to receive this field. |  |
| 9730 | TradeLiquidityIndicator | Present for acknowledgements (150=0) and fills ( 150=1 or 150=2). For cross orders, present for fills only. 1 st Character `A` = Trade Added Liquidity `R` = Trade Removed Liquidity `X` = Routed `C` = Market Opening/Re-Opening Trade 2 nd Character `S` = Execution from Order that Set the NBBO `B` = Step-Up Mechanism (SUM) (C1 and EDGX only) `U` = Market Turner (C1 only) `b` = Automated Improvement Mechanism (AIM) (C1 and EDGX only) `Q` = QCC (C1 and EDGX only) `s` = Solicitation Auction Mechanism (SAM) (C1 and EDGX only) `P` = Position Compression Cross Mechanism (PCC) (C1 only) `F` = Related Futures Cross Mechanism (RFC) (C1 only) `C` = Cboe Compression Service (CCS) (C1 only) Must request opt-in port level to receive the 2 nd characters in this field. To allow for future expansion of this field, please ignore values with an unknown character in the 2 nd position. MTP For users who opt-in to Report MTP Fields functionality (at firm or port level), the A / R values may be presented on an MTP triggered cancel/restatement. State Change Tracking For users who opt-in to State Change Tracking at the port level, order acks ( ExecType = 0 ), modify acks ( ExecType = 5 ), and restatements ( ExecType = D with ExecRestatementReason = 4 ) will carry values defined as follows: `A` = Zero or more immediate partial remove fills followed by posting. `R` = Zero or more immediate partial remove fills followed by a cancel (or full fill). `X` = Zero or more immediate partial remove fills followed by routing. |  |
| 9882 | FeeCode | Specific fee code associated with execution. See the Fee Schedule for the respective market for possible values. |  |
| 5937 | MarketingFeeCode (C1 and EDGX only) | `P` = Penny Pilot `N` = Non-Penny Pilot `X` = Not Eligible for Marketing Fees `C` = Penny Auctions `E` = Non-Penny Auctions `R` = RUT |  |
| 9690 | WorkingPrice | Optional. Must be enabled at the port level. Only present on Accepted or Replaced, and only when order is fully or partially booked. If Price had to be adjusted to a less aggressive value to avoid crossing the NBBO, the adjusted price will be reported here, otherwise equals Price . |  |
| 9691 | InitialDisplayPrice | Optional. Must be enabled at the port level. Only present on Accepted or Replaced, and only when order is fully or partially booked. If order had to be temporarily displayed at a less aggressive value to avoid locking the NBBO, the initial displayed price will be reported here, otherwise equals WorkingPrice . |  |
| 9617 | ModifySequence | FIX Drop only. Base 36 number of times order has been replaced. |  |
| 9688 | OrigCompID | FIX Drop and Odrop only. TargetCompID of original FIX exec report. FIX Drop and Odrop ports must be configured to send this optional field. |  |
| 9689 | OrigSubID | FIX Drop and Odrop only. TargetSubID of original FIX exec report. FIX Drop and Odrop ports must be configured to send this optional field. |  |
| 21053 | ClearingSymbol (C1 only) | Sent on FLEX restatements (150=D, 378=9) only. 6 character Cboe symbol identifier. |  |
| 21050 | ClearingPrice (C1 only) | Value sent to the OCC for clearing on FLEX restatements (150=D, 378=9). |  |
| 60 | TransactTime | GMT date-time that transaction occurred. |  |
| 1462 | TargetPartyID (C1 and EDGX only) | Copied from order. |  |
| 58 | Text | If present, indicates reason for reject or cancel. Format is one letter reason code followed by colon and space followed by free form text (e.g., N: No Liquidity at price). See Reason Codes for a list of valid reason codes. |  |
| 22058 | SubreasonText | If present, indicates additional detail for the reject or cancel. Format is one letter code followed by colon and space followed by free form text (e.g. A: Risk Mgmt EFID level by User). See Order Subreason Codes for a list of valid subreason codes. |  |
| 7695 | MassCancelID | Copied from order. |  |
| 7696 | CancelledOrderCount | Number of orders cancelled from a mass cancel request MassCancelID. |  |
| 9370 | AuctionID | Exposed order identifier supplied by Cboe. This identifier corresponds to the identifiers used in Cboe market data products. |  |
| 6438 | CrossExclusionIndicator (C1 and EDGX only) | `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. |  |
| 7933 | Routing FirmID | Copied from order. |  |
| 6253 | DrillThruProtection | Copied from order. |  |
| 9324 | ClearingOptionalData | Copied from order. Requires port attribute Send ClearingOptionalData to enable sending this Tag. Available on FIXDROP. Optional when ExecType (150) is ‘4’ (Canceled) or ‘8’ (Rejected). |  |
| 21098 | TradeThroughAlertType (C1 only) | Indication of a type of 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 Diligence trade through |  |
| 22049 | FloorTraderAcr (C1 only) | Floor Broker, PAR Broker, or Market Maker Acronym responsible for the execution. Present if ExecType = T or for a floor order fill report. |  |
| 142 | SenderLocationID (C1 only) | `F` = Floor <blank> = (or not present) for electronic execution. |  |
| 423 | PriceType (C1 only) | `0` = Fixed cabinet trade price `1` = Percentage, when trading FLEX percentage instruments `2` = (Default) Price per unit (contract) `3` = Fixed amount (cash spread pricing) - only for complex orders routed to floor `D` = FLEX DAC |  |
| 22020 | InitialClientOrderId (C1 only) | Only available on FIX DROP. Not sent unless Send Initial Client Order ID port attribute is enabled. When a clearing edit of a floor trade results in a new trade ( `150` = 1 or 2 ) this field will be sent and populated with the original ClOrdId (11) from the order that was routed to the exchange. |  |
| 22021 | TerminalOperatorId (C1 only) | Copied from order. Available on Order-by-Order Drop (ODROP) and FIXDROP. Requires Send Terminal Info port attribute to enable sending these Tags. |  |
| 22022 | AdditionalClientInfo (C1 only) | Copied from order. This field will also reflect value from AllocAdditionalClientInfo (22027) if present. Available on Order-by-Order Drop (ODROP) and FIXDROP. Requires Send Terminal Info port attribute to enable sending these Tags. |  |
| 22023 | Delta (C1 only) | Copied from order if order is FLEX DAC. Available on FIXDROP. |  |
| 22024 | LegDelta ( C1 only ) | Copied from order if order is FLEX DAC. |  |
| 22025 | ReferencePrice (C1 only) | Copied from order if order is FLEX DAC. Available on FIXDROP. |  |
| 22100 | FloorDestination (C1 only) | Specifies the PAR workstation to which the order was routed on the floor. If the order was not routed to the floor, e.g. it was handled electronically, or ExecType = 1 (Partial Fill) or 2 (Fill) , then the field is not provided. This field is also included on Carried Order Restatements if the order was on the floor at the end of the previous trading day. 4 characters or less (ASCII 33-126). |  |
| 5179 | FloorTradeTime (C1 only) | GMT date-time that Floor Trade occurred. Present if ExecType (150) = T. Available on Standard FIX Drop when ExecType (150) = 1 (Partial Fill) or 2 (Fill). Available on FIX ports when Send Floor Trade Time port attribute is enabled. Available on BOE ports when requested on login. |  |
| 22016 | EquityExDestination (C1 and EDGX only) | Valid when LegSymbol (600) = Equity symbol and ExecType (150) = 1 or 2 . 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 |  |
| 25019 | OccId | Provides the OCC clearing number the trade cleared. Only available via FIX Drop and when Send OccId port attribute is enabled. |  |
| 25026 | StopPxType (effective TBD) | 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) |  |
|  | Standard Message Trailer |  |  |

* Not present when ExecType is Rejected (8) in response to a New Order Cross (MsgType = s).

##### State Change Tracking

Members wishing to track the state of their routable orders may opt-in to the following functionality at the port level by contacting the Cboe Trade Desk.

Order acks (ExecType = 0), modify acks (ExecType = 5), and restatements (ExecType = D with ExecRestatementReason = 4) will carry TradeLiquidityIndicator (9730) as follows:

- `A` = Zero or more immediate partial remove fills followed by posting.
- `R` = Zero or more immediate partial remove fills followed by a cancel (or full fill).
- `X` = Zero or more immediate partial remove fills followed by routing.

When an order returns from the router, a restatement will be generated with:

- ExecType (150) = D (Restated)
- ExecRestatementReason (378) = 4 (State Change)
- Text (58) = A (Admin)
- TradeLiquidityIndicator (9730) = A, X, or R (as defined above)
- Order details to match the order (OrdQty, Price, etc.)
- Cumulative execution details to match the current status (CumQty, LeavesQty, etc.)
- Current execution details zeroed (LastPx, LastShares, etc.)

#### Cancel Reject

Rejects an `Order Cancel Request` message or an `Order Cancel/Replace Request` message.

When a Cancel/Replace is rejected, by default the original order is left alive. A Cancel Reject should not be used as a sign that the original order has been cancelled. Even if the CancelOrigOnReject = Y option is being used, a separate unsolicited cancel will be sent to close out the original order.

**Table 1. Cancel Reject Message Fields**

| Tag | Field Name | Description |
|---|---|---|
| 35 | Standard Message Header | MsgType = 9 |
| 11 | ClOrdID | ClOrdID from the `Order Cancel` or `Order Cancel/Replace` message request. |
| 41 | OrigClOrdID | ClOrdID of the order that failed to be cancelled or replaced. |
| 37 | OrderId | OrderId of order that failed to be cancelled or replaced. "NONE" if CxlRejReason is Unknown (1). |
| 39 | OrdStatus | OrdStatus of order that failed to be cancelled or replaced. |
| 1 | Account | Copied from `Order Cancel` or `Order Cancel/Replace` message request. |
| 434 | CxlRejResponseTo | `1` = Cancel `2` = Cancel/Replace |
| 102 | CxlRejReason | `0` = Too late to cancel. `1` = Unknown order. `2` = Broker Option. `3` = Already pending cancel or pending replace. `4` = After Volatility Cutoff. Optional This field will not be reflected back on risk rejects. |
| 58 | Text | Free form text message. |
| 7695 | MassCancelID | MassCancelID from a mass cancel request. |
| 9324 | ClearingOptionalData | Up to 16 characters in ASCII range 33-126 are allowed, except for comma, semicolon and pipe characters. Value will be reflected back on Execution Reports including FIX Drop. FIX port attribute Send ClearingOptionalData set to 'Yes' is required to pass value to clearing. |
|  | Standard Message Trailer |  |

#### Trade Cancel/Correct Message Fields

Sends a trade cancel or correct message for trade breaks and adjustments.

`Trade Cancel/Correct` message (UCC) is an optional message that must be enabled at the port level. It may be enabled for current-day only or for all cancels and corrections. Only the Price and/or Size of a trade may be corrected, all other details remain the same. Trade cancels and corrections do not alter live order state.

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

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

| Tag | Field Name | Description |
|---|---|---|
| 35 | Standard Message Header | MsgType= UCC |
| 20 | ExecTransType | `1` = Trade Cancel `2` = Trade Correct |
| 17 | ExecID | Day-unique ID of execution message. Will be appended with '.B' or '.S' when opted-in by customers. |
| 19 | ExecRefID | Refers to the ExecID (17) of the message being cancelled/edited. The ExecID from the most recent trade correction will be included, if applicable. |
| 37 | OrderId | OrderId of the original trade being cancelled/corrected. |
| 11 | ClOrdID | ClOrdID of the original trade being cancelled/corrected. |
| 55 | Symbol | Copied from original trade being cancelled/corrected. |
| 77 | OpenClose | Copied from original trade being cancelled/corrected. |
| 200 | MaturityMonth | Copied from original trade being cancelled/corrected. |
| 205 | MaturityDay | Copied from original trade being cancelled/corrected. |
| 201 | PutOrCall | Copied from original trade being cancelled/corrected. |
| 202 | StrikePrice | Copied from original trade being cancelled/corrected. When an underlying index value change occurs after the FLEX percentage trade restatement time, this will be the original strike price (prior to correction). |
| 54 | Side | Copied from original trade being cancelled/corrected. |
| 9730 | TradeLiquidityIndicator | Copied from original trade being cancelled/corrected. |
| 128 | DeliverToCompId | Copied from Tag 115 (OnBehalfOfCompId). |
| 439 | ClearingFirm | Copied from original trade being cancelled/corrected (if present). |
| 440 | ClearingAccount | Copied from original trade being cancelled/corrected (if present). |
| 25018 | CorrectedStrikePrice (C1 only) | Only for FLEX order Trade Corrects. Corrected strike price. When an underlying index value change occurs after the FLEX percentage trade restatement time, this will be the new strike price. |
| 9620 | CorrectedPrice | Only for Trade Corrects. Corrected price. |
| 6655 | CorrectedSize | Only for Trade Corrects. Corrected size |
| 32 | LastShares | Quantity of contracts on the original trade being cancelled/corrected. |
| 31 | LastPx | Price on the original trade being cancelled/corrected. |
| 42 | OrigTime | GMT date-time of original trade. GMT date-time of original trade is in nanoseconds. |
| 60 | TransactTime | GMT date-time of cancel/correct. GMT date-time of cancel/correct is in nanoseconds. |
| 22020 | InitialClientOrderId (C1 only) | Only available on FIX DROP. Not sent unless Send Initial Client Order ID port attribute is enabled. When a clearing edit of a floor trade results in a trade cancellation ( `20` = 1 ) this field will be sent and populated with the original ClOrdId (11) from the order that was routed to the exchange. |
| 167 | SecurityType | Indicates the type of security `OPT` = Options `EQ` = Equity leg |
| 22004 | ClosingPrice (C1 only) | Closing price for the underlying security or index of a FLEX DAC order. |
| 9882 | FeeCode (C1 only) | Specific fee code associated with FLEX DAC execution. See the Fee Schedule for the respective market for possible values. |
| 9324 | ClearingOptionalData | Up to 16 characters in ASCII range 33-126 are allowed, except for comma, semicolon and pipe characters. Value will be reflected back on Execution Reports including FIX Drop. FIX port attribute Send ClearingOptionalData set to 'Yes' is required to pass value to clearing. |
| 5179 | FloorTradeTime (C1 only) | GMT date-time that Floor Trade occurred. Available on FIX Drop ports when Send Floor Trade Time port attribute is enabled. |

##### Trade Cancel/Correct FIX Drop Clearing Edit Message Fields

Users of FIX Drop ports may opt-in to receive post-trade clearing edits via UCC messages via two different methods. These messages communicate changes that have been made using the Cboe Titanium U.S. Options Clearing Editor Specification. This feature requires the Send Clearing Edits port attribute to be set to `1` or `2`.

The `wave method` message structure (`Send Clearing Edits` = 1) contains repeating groups of size and clearing information for each trade that communicate the previous and current trade details. Note that a single trade may be allocated into smaller trade records that total the original trade size. For example, a single trade for 10 contracts may be allocated into five smaller trade records of two contracts each where each smaller trade has a different CMTA. In this example, there would be six repeating groups. The first group will contain details of the original trade and associated clearing information and the next five would communicate the split of the original trade into five smaller pieces with different clearing information on each record. This is demonstrated below using ListSeqNo (67), WaveNo (105), AllocID (70), AllocShares (80), and AllocClearingFirm (25008).

Example: Single trade split into five smaller trade records with updated CMTA values:

| ListSeqNo | WaveNo | AllocID | AllocShares | AllocClearingFirm | Comments |
|---|---|---|---|---|---|
| 1 | 0 | 0 | 10 | 123 | Original trade details |
| 2 | 1 | 1 | 2 | 123 | Allocation 1 |
| 3 | 1 | 2 | 2 | 456 | Allocation 2 |
| 4 | 1 | 3 | 2 | 789 | Allocation 3 |
| 5 | 1 | 4 | 2 | 321 | Allocation 4 |
| 6 | 1 | 5 | 2 | 654 | Allocation 5 |

Note the when using Send Clearing Edits set to `1` a FIX Drop port will continue to receive all messages for a given trade even if some or all of the trade has been allocated to a different EFID or PartyID (448). This also means that if a trade was originally assigned a given EFID and then that trade was re-allocated to a new EFID or set of EFIDs, then messages are not sent to the FIX Drop ports associated with the new EFIDs after the re-allocation. Using Send Clearing Edits set to `2` allows for cleaner handling of allocations that involve EFID changes.

**Table 1. Trade Cancel/Correct FIX Drop Clearing Edit Message Fields**

| Tag | Field Name | Description |  |
|---|---|---|---|
| 35 | Standard Message Header | MsgType= UCC |  |
| 20 | ExecTransType | `5`=Clearing Edit |  |
| 17 | ExecID | Day-unique ID of execution message. Will be appended with '.B' or '.S' when opted-in by customers. |  |
| 78 Repeating Group | NoAllocs | Number of allocation groups (repeating group) |  |
| ➔ | 67 | ListSeqNo | Item number. Starts at ‘1’ and increments upwards. |
| ➔ | 105 | WaveNo | Trade record identifier. A ‘0’ indicates original trade and numbers greater than zero indicate revisions. Note that it is possible for a trade to be edited multiple times. |
| ➔ | 70 | AllocID | Clearing edit revision number. There will be multiple revisions contained under the same WaveNo if a single trade is allocated into multiple trade records. |
| ➔ | 25007 | AllocExecRefID | The ExecID of this allocation/trade. Only present when WaveNo = 0 and AllocID = 0 unless a trade is being allocated/split into multiple smaller pieces. In this case, the allocations will all contain this field, which provides the new ExecID for each allocation. |
| ➔ | 80 | AllocShares | Contracts allocated to this trade record |
| ➔ | 77 | OpenClose | OpenClose of the trade record |
| ➔ | 25008 | AllocClearingFirm | CMTA number of the trade record (if present) |
| ➔ | 1 | Account | Account (1) for the trade record (if present) |
| ➔ | 448 | PartyID | EFID of the trade record |
| ➔ | 523 | PartySubID | ClearingAccount (440) for the trade record (if present) |
| ➔ | 9324 | ClearingOptionalData | ClearingOptionalData (9324) for the trade record (if present) |
| ➔ | 25009 | AllocClOrdID | ClOrdID of the original trade being edited. |
| ➔ | 47 | Capacity (Rule80A) | Capacity of the order trade record |
| 37 | OrderId | OrderId of the original trade being edited. |  |
| 55 | Symbol | Copied from original trade being edited. |  |
| 200 | MaturityMonth | Copied from original trade being edited. |  |
| 205 | MaturityDay | Copied from original trade being edited. |  |
| 201 | PutOrCall | Copied from original trade being edited. |  |
| 202 | StrikePrice | Copied from original trade being edited. |  |
| 54 | Side | Copied from original trade being edited. |  |
| 9730 | TradeLiquidityIndicator | Copied from original trade being edited. |  |
| 128 | DeliverToCompId | Copied from Tag 115 (OnBehalfOfCompId). |  |
| 32 | LastShares | Quantity of contracts on the original trade being edited. |  |
| 31 | LastPx | Price on the original trade being edited. |  |
| 42 | OrigTime | GMT date-time of original trade. |  |
| 60 | TransactTime | GMT date-time of cancel/correct. |  |
| 440 | ClearingAccount | (if present) |  |
| 439 | ClearingFirm | (if present) |  |
| 11 | ClOrdID | Copied from the original trade being edited. |  |
| 19 | ExecRefID | The ExecID (17) of the trade that is being edited. ExecID from the original trade will be included. |  |

Users may also set the Send Clearing Edits port attribute to a value of `2`, which will result in cancel + new messaging when changes occur in the clearing editor, including allocations/splits that involve EFID changes. This setting eliminates the wave methodology that is described above and replaces it with individual cancel + new messages. When a clearing edit occurs, the original trade is cancelled with a message containing ExecTransType (20) = 6 and TradeAllocation (25011) = 0. Same size or smaller size pieces are likely to follow (assuming the trade has not been completely allocated away from the FIX Drop user to other EFIDs) with ExecTransType (20) = 6 and TradeAllocation (25011) = 1.

| ExecTransType | TradeAllocation | Message Type |
|---|---|---|
| 6 | 0 | Cancel/Bust |
| 6 | 1 | Edited trade |

**Table 2. Trade Cancel/Correct FIX Drop Clearing Edit Message Fields**

| Tag | Field Name | Description |
|---|---|---|
| 35 | Standard Message Header | MsgType= UCC |
| 20 | ExecTransType | `6`=Clearing Edit Allocation |
| 17 | ExecID | Day-unique id of execution message for this UCC message. Will be appended with '.B' or '.S' when opted-in by customers. |
| 37 | OrderId | OrderId of the original trade being edited. |
| 55 | Symbol | Copied from original trade being edited. |
| 200 | MaturityMonth | Copied from original trade being edited. |
| 205 | MaturityDay | Copied from original trade being edited. |
| 201 | PutOrCall | Copied from original trade being edited. |
| 202 | StrikePrice | Copied from original trade being edited. |
| 54 | Side | Copied from original trade being edited. |
| 9730 | TradeLiquidityIndicator | Copied from original trade being edited. |
| 128 | DeliverToCompId | The EFID on the trade being cancelled or the new EFID on the edited trade(s). |
| 32 | LastShares | Quantity of contracts on the original trade being cancelled or quantity of contracts on the edited trade(s). |
| 31 | LastPx | Price on the original trade being cancelled or price of the edited trade(s). |
| 42 | OrigTime | GMT date-time of original trade. |
| 60 | TransactTime | GMT date-time of allocation. |
| 77 | OpenClose | The open/close indicator on the trade being cancelled or the new open/close indicator on the edited trade(s). |
| 1 | Account | The Account on the trade being cancelled or the new Account on the edited trade(s). |
| 9324 | ClearingOptionalData | The ClearingOptionalData on the trade being cancelled or the new ClearingOptionalData on the edited trade(s). |
| 47 | Rule80A (OrderCapacity) | The capacity on the trade being cancelled or the new capacity on the edited trade(s). |
| 440 | ClearingAccount | The ClearingAccount on the trade being cancelled or the new ClearingAccount on the edited trade(s). |
| 439 | ClearingFirm | The CMTA on the trade being cancelled or the new CMTA on the edited trade(s). |
| 22021 | TerminalOperatorId (C1 only) | The TerminalOperatorId on the trade being cancelled or the new TerminalOperatorId on the edited trade(s). Requires the "Send Terminal Info" port attribute to be enabled. |
| 22022 | AdditionalClientInfo (C1 only) | The AdditionalClientInfo on the trade being cancelled or the new AdditionalClientInfo on the edited trade(s). Requires the "Send Terminal Info" port attribute to be enabled. |
| 11 | ClOrdID | Copied from the original trade being edited. |
| 19 | ExecRefID | ExecID (17) of the trade that is being cancelled/edited. The ExecID from the most recent trade correction will be included, if applicable. |
| 7694 | ContraCapacity | The capacity of the opposite side of the trade. Requires Send ContraCapacity port attribute to be enabled. |
| 25011 | TradeAllocation | A zero value will be sent to indicate the trade noted in ExecRefID (19) is being cancelled. A value of ‘1’ indicates a new trade allocation with ExecRefID (19) set to the value of the new ExecID for that allocation. `0` = Bust `1` = New trade allocation due to clearing edit |
| 9324 | ClearingOptionalData | Up to 16 characters in ASCII range 33-126 are allowed, except for comma, semicolon and pipe characters. Value will be reflected back on Execution Reports including FIX Drop. FIX Port attribute Send ClearingOptionalData set to 'Yes' is required to pass value to clearing. |

#### Security Definition Message Fields

This message is a response to a `Security Definition Request` message where the `Security Definition Request` message is accepted or rejected.

**Table 1. Security Definition Message Fields**

| Tag | Field Name | Description |  |
|---|---|---|---|
| 35 | Standard Message Header | MsgType= d |  |
| 11 | ClOrdID | ClOrdID from the `Security Definition Request` message request. |  |
| 167 | SecurityType | Copied from Security Definition Request. |  |
| 1 | Account | Copied from Security Definition Request. |  |
| 55 | Symbol | Cboe Symbol ID of created instrument. |  |
| 323 | SecurityResponseType | `1` = Accept As-Is (legs were not modified) `2` = Accept With Revisions (legs were modified) `5` = Reject Security Proposal ‘Accept As-Is’ only applies if the input legs matches exactly the complex security definition. Any re-ordering of legs, reduction of ratios, or other changes will result in a value of ‘Accept with Revisions’. |  |
| 555 Repeating Group | NoLegs | Copied from `Security Definition Request` message. Note ordering of legs may be different if SecurityResponseType (323) = 2. |  |
| ➔ | 654 | LegRefID | Copied from Security Definition Request. |
| ➔ | 600 | LegSymbol | Copied from Security Definition Request. |
| ➔ | 608 | LegCFICode | Copied from Security Definition Request. |
| ➔ | 611 | LegMaturityDate | Copied from Security Definition Request. |
| ➔ | 612 | LegStrikePrice | Copied from Security Definition Request. |
| ➔ | 623 | LegRatioQty | Copied from Security Definition Request. Note ratio may be reduced if SecurityResponseType (323) = 2. |
| ➔ | 624 | LegSide | Copied from Security Definition Request. |
| 8641 | NoOfSecurities | Number of complex strategies created by sender for this OSI Root. |  |
| 58 | Text | Free form text message. |  |
|  | Standard Message Trailer |  |  |

### Purge Port Protocol - Member to Cboe

A Purge port may be created using either the FIX or BOE protocol. For BOE Purge Port messaging please see the Cboe Titanium U.S. Options BOEv3 Specification.

#### Purge Request 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 `Order Cancel Request` 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 (7700) field. The OnBehalfOfCompId (115) (i.e. 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, then sending a blank OnBehalfOfCompId 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 (7699) or RiskRoot (55) field. If both RiskRoot and a list of CustomGroupID values are specified, the `Purge Request` message will be rejected. The items below should also be considered.

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

When specifying the RiskRoot (55) 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 a valid TransactTime (60). 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 Requests` messages 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.

**Table 1. Purge Request Message Fields**

| Tag | Field Name | Req’d | Description |  |
|---|---|---|---|---|
| 35 | Standard Message Header | Y | MsgType = F |  |
| 97 | PossResend | N | `Y` = Indicates an application level unsolicited resend. If ClOrdID has not yet been seen, the cancel is treated as normal. If ClOrdID already exists, the resent cancel is ignored. `N` = (Default) indicates a new cancel. |  |
| 7933 | RoutingFirmID | N | Used to optionally convey the routing firm of the order. |  |
| 60 | TransactTime | Y | Time cancel initiated/released. Required by FIX 4.2. |  |
| 7700 | MassCancelInst | Y | Used to perform Mass Cancel operation rather than single order cancel. If MassCancelInst is provided, tags 37, 41, 77, 200, 205, 201, 202, 54, and 38 will be ignored. 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 below. EFID values specified in OnBehalfOfCompId (115) that are not allowed to clear for the firm will be rejected. 1 st Character : Clearing Firm Filter `A` = No filtering by EFID is performed. `F` = All orders that were sent under the EFID specified in OnBehalfOfCompId (115 ) will be cancelled. If ‘F’ specified and OnBehalfOfCompId (115 ) is not provided, the Mass Cancel or Purge Orders messages will be rejected. 2 nd Character : Acknowledgement Style `M` = (Default) Individual Execution Reports are sent for each cancelled order. `S` = Single Execution Report sent once all cancels have been processed. Single Execution Report will contain MassCancelId (7695 ) and CancelledOrderCount (7696 ). MassCancelId (7695) must be specified or the Purge Request messages will be rejected. `B` = Both Individual Execution Reports and summary Single Execution Report. Also requires MassCancelId (7695) to be specified or the Purge Request messages will be rejected. `A` = Single Execution Report sent to the purge port and one Execution Report for each matching unit is sent to each order entry port with cancelled orders. `I` = Execution Reports sent for each matching unit impacted in a multi-unit cancel. A final acknowledgement is sent when the last matching unit has completed all requested cancellations. MassCancelId (7695) must be specified or the Purge Request message will be rejected. 3 rd Character : Lockout Instruction `N` = (Default) No lockout `L` = Lockout until corresponding Risk Reset received. Lockout can be used only with Clearing Firm Filter set to ‘F’, otherwise the Order Cancel Request message will be rejected. Lockout will apply to all new orders and cancel/replace orders for the EFID (and Symbol (55) or CustomGroupId (7699), if specified), regardless of other filtering in the MassCancelInst. 4 th Character : Instrument Type Filter `B` = (Default) Cancel both Simple and Complex orders `S` = Cancel Simple orders only `C` = Cancel Complex orders only 5 th Character : GTC/GTD Order Filter `C` = (Default) Cancel GTC/GTD orders `P` = Don’t cancel (preserve) GTC/GTD orders If Symbol (55) is specified, it must contain a valid Risk Root, not the Cboe symbol name. By specifying tag 55, cancels will be limited to a single Risk Root. A self-imposed lockout can be released using the RiskReset (7692) field of the `New Order Single` or `New Order Multileg` message. For more information, refer to the Cboe Titanium U.S. Options Risk Management Specification . |  |
| 7695 | MassCancelID | N | Mass Cancel ID chosen by user. If the populated value ends in a space the message will be rejected. This field will be echoed back in the resulting order execution report when a single execution report Acknowledgement Style is selected. Mass Cancel requests containing a currently outstanding MassCancelID will be rejected. |  |
| 55 | Symbol | N | Risk Root symbol (upper case). Limits cancellations to only orders with the specified Risk Root. |  |
| 7698 Repeating Group | CustomGroupIDCnt | N | Number of repeating CustomGroupIDs (7699) included in this message. Integer 0-10 |  |
| ➔ | 7699 | CustomGroupID | N | CustomGroupID (7699) to cancel. Only present if CustomGroupIDCnt (7698) is non-zero. Number of repeating groups must match number specified in CustomGroupIDCnt (7698). |
| 25017 | MatchingUnit | N | Matching unit number the `Purge Request` message will be sent toward. If blank or 0, the `Purge Request` message will be sent to all units. Incompatible with symbol-level purges, specifying both symbol and MatchingUnit (25017) will cause the `Purge Request` message to be rejected. If both MassCancelInst (7700) `lockout instruction` = L and MatchingUnit (25017 ) are specified, a lockout will occur and will impact only the specified matching unit. Subsequent risk resets will clear risk locks on all units. |  |
|  | Standard Message Trailer | Y |  |  |

### Purge Port Protocol - Cboe to Member

A Purge port may be created using either the FIX or BOE protocol. For BOE Purge Port messaging please refer to the Cboe Titanium U.S. Options BOEv3 Specification.

#### Purge Acknowledgment Message Fields

A response to a `Purge Request` message will only be sent when the MassCancelID (7695) is populated on a `Purge Request` message. This includes cases where the Acknowledgment Style of MassCancelInst is `S`, `B`, or `I`. Acknowledgment Style of `A` will also result in a `Purge Acknowledgment`.

**Table 1. Purge Acknowledgment Message Fields**

| Tag | Field Name | Description |
|---|---|---|
| 35 | Standard Message Header | MsgType = 8 |
| 52 | SendingTime | GMT date-time that execution report was sent by Cboe. |
| 20 | ExecTransType | `3` = Status |
| 150 | ExecType | Reason for this execution report: `M` = Mass Cancel Complete |
| 7695 | MassCancelID | Copied from original `Purge Request` message. |
| 7696 | CancelledOrderCount | Number of orders cancelled from a `Purge Request` message with the specified MassCancelID. |

#### Purge Reject Message Fields

Rejects a `Purge Request` message.

**Table 1. Purge Reject Message Fields**

| Tag | Field Name | Description |
|---|---|---|
| 35 | Standard Message Header | MsgType = 9 |
| 39 | OrdStatus | `8` = Rejected |
| 434 | CxlRejResponseTo | `1` = Cancel |
| 102 | CxlRejReason | `2` = Broker Option |
| 58 | Text | Free form text message with additional reject information. |
| 7695 | MassCancelID | MassCancelID from the `Purge Request` message |
|  | Standard Message Trailer |  |

#### Purge Notification Message Fields

When the Acknowledgment Style of MassCancelInst on a `Purge Request` message is `A`, one `Purge Notification` message will be sent to an order entry port for each matching unit that had orders from that port cancelled.

**Table 1. Purge Notification Message Fields**

| Tag | Field Name | Description |
|---|---|---|
| 35 | Standard Message Header | MsgType = 8 |
| 128 | DeliverToCompId | Identifies end-client EFID that was used to filter the purge, if it was used. If EFID was not used to filter the purge, this field will not be present. |
| 52 | SendingTime | GMT date-time that execution report was sent by Cboe. |
| 60 | TransactTime | GMT date-time that the system handled the purge request. |
| 150 | ExecType | Reason for this execution report: `P` = Purge Notification |
| 7695 | MassCancelID | Copied from original `Purge Request` message. |
| 7696 | CancelledOrderCount | Number of orders cancelled by the `Purge Request` message on the specified matching unit that originated on this port. |
| 25017 | MatchingUnit | Matching unit number on which orders were cancelled by the purge. |
| 55 | Symbol | Copied from original `Purge Request` message, if present. |
| 7697 | LockOut | Reported back with the following possible values. `Y` = Lockout `N` = No Lockout |

## Implementation Issues

### Automatic Cancel on Disconnect or Malfunction

All open orders for a member will be cancelled automatically if no messages have been received from the member for two heartbeat intervals. The set of open orders cancelled will include GTC and GTD orders if the CancelOnDisconnect port setting is configured to include GTC/GTD orders. This is done to prevent orders from being stuck in an unknown state in the event of telecommunications failure. Users should choose their heartbeat interval carefully based on the latency and reliability of their telecommunications channel. The minimum supported interval is 5 seconds, which is the recommended interval if supported by the latency and reliability of user telecommunications channels. Execution reports for the automatically cancelled orders are available upon reconnection. Users are responsible for rerouting orders to other market centers based on their business needs. All open orders may also be cancelled in the rare event of a complete or partial system malfunction.

### Access Fees Returned on Execution Reports

The access fee associated with each fill is calculated to 5 decimals and returned on each execution report. Negative numbers indicate liquidity rebates. Users should program their systems to read, validate, and pass along this field in order to avoid making software changes to their systems when the Cboe fee schedule changes. The sum of the access fees received during a month should equal the access fee charged or rebated on a member’s monthly bill, rounded to the nearest penny.

### Service Bureau Configuration

Service Bureaus require special configuration. OnBehalfOfCompId should be set for Order, Cancel and Cancel/Replace messages sent to Cboe. Orders with an unknown OnBehalfOfCompId will be rejected. ClOrdId values are required to be unique only within a given OnBehalfOfCompId. Execution Report and Cancel Reject messages sent by Cboe will have the DeliverToCompId set. Orders must be cancelled or replaced using the same OnBehalfOfCompId as was sent on the Order.

### Common Session Level Issues

Cboe uses FIX 4.2 as specified by the FPL document Version 4.2 (with Errata 20010501) with business level extensions described in our own FIX spec. The session level of the FPL spec is followed as closely as possible.

The version with errata cleared up many ambiguities with session level present in the earlier Version 4.2 (March 1, 2000).

Important notes direct from the public FPL spec (bold emphasis is from original spec, * added by Cboe, † added by Cboe):

#### FINANCIAL INFORMATION EXCHANGE PROTOCOL / FIX MESSAGE FORMAT AND DELIVERY / Ordered Message Processing

The FIX protocol assumes complete ordered delivery of messages between parties. Implementers should consider this when designing message gap fill processes. Two options exist for dealing with gaps, either request all messages subsequent to the last message received or ask for the specific message missed while maintaining an ordered list of all newer messages*. For example, if the receiver misses the second of five messages, the application could ignore messages 3 through 5 and generate a resend request for messages 2 through 5*, or, preferably 2 through 0 (where 0 represents infinity)*. Another option would involve saving messages 3 through 5 and resending only message 2. In both cases, messages 3 through 5 should not be processed before message 2*.

#### FINANCIAL INFORMATION EXCHANGE PROTOCOL / SESSION PROTOCOL / Logon

After the initiator has been authenticated, the acceptor will respond immediately* with a confirming Logon message.

#### FINANCIAL INFORMATION EXCHANGE PROTOCOL / SESSION PROTOCOL / Message Recovery

When the incoming sequence number does not match the expected number corrective processing is required. Note that the SeqReset-Reset message ([Cboe: this refers only to GapFillFlag=No 123=N] † to be used only to recover from a disaster scenario vs. normal resend request processing) is an exception to this rule as it should be processed without regards to its MsgSeqNum. If the incoming message has a sequence number less than expected and the PossDupFlag is not set, it indicates a serious error. It is strongly recommended that the session be terminated and manual intervention be initiated. If the incoming sequence number is greater than expected, it indicates that messages were missed and retransmission of the messages is requested via the Resend Request* (see Ordered Message Processing).

…

If there are consecutive administrative messages to be resent, it is suggested that only one SeqReset-GapFill message be sent in their place*. The sequence number of the SeqReset-GapFill message is the next expected outbound sequence number. The NewSeqNo field of the GapFill message contains the sequence number of the highest administrative message in this group plus 1*. For example, during a Resend operation there are 7 sequential administrative messages waiting to be resent. They start with sequence number 9 and end with sequence number 15. Instead of transmitting 7 Gap Fill messages (which is perfectly legal, but not network friendly), a SeqReset-GapFill message may be sent. The sequence number of the Gap Fill message is set to 9 because the remote side is expecting that as the next sequence number. The NewSeqNo field of the GapFill message contains the number 16, because that will be the sequence number of the next message to be transmitted.

Sequence number checking is a vital part of FIX session management. However, a discrepancy in the sequence number stream is handled differently for certain classes of FIX messages*. The table below lists the actions to be taken when the incoming sequence number is greater than the expected incoming sequence number.

NOTE: In ALL cases except the Sequence Reset - Reset message, the FIX session should be terminated if the incoming sequence number is less than expected and the PossDupFlag is not set. A `Logout` message with some descriptive text should be sent to the other side before closing the session.

**Table 1. Response by Message Type**

| Message Type | Action to Be Taken on Sequence # Mismatch |
|---|---|
| Logon | Must always be the first message transmitted. Authenticate and accept the connection. After sending a Logon confirmation back, send a ResendRequest* if a message gap was detected in the Logon sequence number. |

....

#### FINANCIAL INFORMATION EXCHANGE PROTOCOL / ADMINISTRATIVE MESSAGES / Resend Request

Note: the sending application may wish to consider the message type when resending messages*; e.g. if a new order is in the resend series and a significant time period has elapsed since its original inception, the sender may not wish to retransmit the order given the potential for changed market conditions. (The Sequence Reset-GapFill message is used to skip messages that a sender does not wish to resend*.)

#### FINANCIAL INFORMATION EXCHANGE PROTOCOL / ADMINISTRATIVE MESSAGES / Sequence Reset (Gap Fill)

The sequence reset message is used by the sending application to reset the incoming sequence number on the opposing side. This message has two modes: `Sequence Reset-Gap Fill` when GapFillFlag is `Y`* and `Sequence Reset-Reset` when GapFillFlag is N or not present. The `Sequence Reset-Reset` mode should ONLY be used to recover from a disaster situation which cannot be otherwise recovered via `Gap Fill` mode. The sequence reset message can be used in the following situations:

- During normal resend processing, the sending application may choose not to send a message (e.g. an aged order). The Sequence Reset - Gap Fill is used to mark the place of that message.
- During normal resend processing, a number of administrative messages are not resent, the Sequence Reset - Gap Fill message is used to fill the sequence gap* created.

...

The sending application will initiate the sequence reset. The message in all situations specifies NewSeqNo to reset as the value of the next sequence number immediately following the messages and/or sequence numbers being skipped*.

...

If the GapFillFlag field is present (and equal to Y), the MsgSeqNum should conform to standard message sequencing rules (i.e. the MsgSeqNum of the Sequence Reset-GapFill message should represent the beginning MsgSeqNum in the GapFill range* because the remote side is expecting that next message).

The sequence reset can only increase the sequence number. If a sequence reset is received attempting to decrease the next expected sequence number the message should be rejected and treated as a serious error. It is possible to have multiple ResendRequests issued in a row (i.e. 5 to 10 followed by 5 to 11). If sequence number 8, 10, and 11 represent application messages while the 5-7 and 9 represent administrative messages*, the series of messages as result of the Resend Request may appear as SeqReset-GapFill with NewSeqNo of 8, message 8, SeqReset-GapFill with NewSeqNo of 10, and message 10*. This could then followed by SeqReset-GapFill with NewSeqNo of 8, message 8, SeqReset-GapFill with NewSeqNo of 10, message 10, and message 11. One must be careful to ignore the duplicate SeqReset-GapFill which is attempting to lower the next expected sequence number. This can be detected by checking to see if its MsgSeqNum is less than expected. If so, the SeqReset-GapFill is a duplicate and should be discarded.

## FIX DROP

Cboe offers two types of FIX Drop ports, Standard FIX Drop and Order by Order FIX Drop. Neither port type accepts orders. Their purpose is to provide real-time information about order flow. The ports may be configured to send various combinations of order flow information related to specific member firms, clearing MPIDS, and/or sessions. With proper authorization (e.g. clearing or sponsored relationships), a single FIX Drop session can be used to obtain information about multiple Users.

### Standard FIX Drop

Standard FIX Drop ports only send execution information (i.e. execution reports where ExecType (Tag 150) is Partially Filled (1) or Filled (2)).

### Order by Order FIX Drop

Order by Order FIX Drop ports are designed to send more than execution information. Order by order drop ports function by watching the traffic that is returned over the associated FIX/BOE order entry ports. As a result, if a specific field is not enabled to be sent on a message from the Exchange to the FIX/BOE client, then that field will also not be present on the Order by Order FIX Drop. The system does not support delivery of execution reports from Routing Brokers that send orders on behalf of a firm. To receive Routing Broker execution reports a FIX Drop port is required.

All order message types are supported including, but not limited to, Acknowledgements (150=0), Partially Filled (150=1), Filled (150=2), Cancelled (150=4), Replaced (150=5), Restated (150=D), Rejected (150=8), Order Cancel Rejects (35=9), and optionally (if configured at the port level) Trade Breaks (35=UCC) and Floor Representation (378=7). Quotes sent over BOE Bulk Quoting ports as well as all BOE rejects are not available on Order by Order FIX DROP. Quote execution messages are available over ODROP, but will be returned more efficiently and with less latency over FIXDROP. If the Rejects/Cancels are due to incomplete clearing information, they may be unavailable on Order by Order FIX Drop ports.

Reject messages will be sent which originate from a FIX or BOEv3 order entry session. However, rejects originating from a BOEv2 order entry session will be suppressed.

Users of Order by Order FIX Drop must always be prepared to receive new/unknown FIX tag and FIX tag values for BOE/FIX ports being monitored. Cboe reserves the right to add new FIX tags and to update values distributed on Order by Order FIX Drop with no notice.

### FIX Drop Port Attributes

Unless specified, both types of Drop ports (FIX Drop and Order by Order Drop) can be configured with the following port attributes.

**Table 1. FIX Drop Port Attributes**

| Attribute | Default | Description |
|---|---|---|
| Send Trade Breaks | No | Enables Trade Break Messages (35=UCC). Please note that enabling trade breaks on Order by Order FIX Drop port is dependent on enabling trade breaks on corresponding BOE and/or FIX order entry ports. |
| Unique Wash Execution Ids | No | Appends a ‘.B’ or ‘.S’ to ExecID (17) on all trades. |
| Concatenate CompId and SubId | No | Requires all FIX traffic to contain concatenated (combined) Comp and Sub Id’s. |
| Send OrigCompID/OrigSubID | No | Send OrigCompID (9688) and OrigSubID (9689). |
| Send Account | No | Send Account (1). |
| Send 2nd Liquidity Character | No | Sends the second character in TradeLiquidityIndicator (9730). |
| Send OrdType | No | Send OrdType (40). Standard FIX Drop only. Order by Order FIX Drop will receive OrdType (40) based on FIX order entry port attribute Echo Tag 40 on Ack. |
| Send RoutingInst | No | Order by Order FIX Drop only. Send RoutingInst (9303), RoutDeliverMethod (9350) and RoutStrategy (9400). |
| Send ContraCapacity | No | Send ContraCapacity (7694). This attribute must also be set on the respective FIX ports in order for this field to be populated. |
| Floor Representation Restatements (C1 only) | No | Send order restatement execution reports when ExecRestatementReason (378) = 7 (Represented in Crowd). Please note that enabling floor representation restatements on Order by Order FIX Drop port is dependent on enabling floor representation restatements on corresponding BOE and/or FIX order entry ports. Order by Order FIX Drop only. |
| Send Floor Trade Restatements | No | Send order restatement execution reports when ExecRestatementReason (378) = A. If enabled, restatements will be sent when a floor trade is matched. This allows customers to obtain the final ExecID (17) on all floor trades following the matching process. |
| FLEX Percentage Trade Restatements (C1 only) | No | If the FLEX Percentage Trade Restatements port attribute is set, Execution Report messages will be sent at the end of the day for all FLEX trades that were done in percentage terms. These trades will be restated with prices in dollar terms. FLEX trade restatements will carry an ExecType (150) = D and ExecRestatementReason (378) = 9 . If the settlement price is revised, the trades will be restated with the corrected symbol (FLEX Percentage) and prices (FLEX Percentage and FLEX DAC). |
| Enable Market Maker Floor Trade Notifications (C1 only) | No | Standard FIX Drop only. Enables Market Maker floor trade notifications (Execution Reports with ExecType (150) = T). |
| Allow Executions (C1 only) | Yes | Standard FIX Drop only. Enables Execution Reports, except Execution Reports with ExecType (150) = T. |
| Send Clearing Edits | 0 | Standard FIX Drop only . Enables sending of clearing edits. See Trade Cancel/Correct Fix Drop Clearing Edit for details. `0` = Don’t send clearing edits `1` = Send clearing edits using wave method `2` = Send clearing edits using cancel + new method |
| Send Initial Client Order ID (C1 only) | No | Standard FIX Drop only. Send InitialClientOrderId (22020). If enabled, this will allow this Tag to be sent on `Execution Report` and `Trade Cancel/Correct` messages sent on FIX DROP ports. |
| Send Terminal Info (C1 only) | No | If enabled, this will allow TerminalOpeartorID (22021) and AdditionalClientInfo (22022) to be sent. AdditionalClientInfo (22022) will reflect any AllocAdditionalClientInfo (22027) value if present. |
| Send Floor Trade Time (C1 only) | No | Send FloorTradeTime (5179). |
| Send OccId | No | Send OccId (25019). |
| Microsecond Timestamp Granularity | No | Display microsecond level timestamp granularity for TransactTime (60), OrigTime (42), and SendingTime (52). These tags default to millisecond or second granularity. |
| Send Nanoseconds | No | Display nanosecond level timestamp granularity for TransactTime (60), and OrigTime (42), and SendingTime (52). If send nanoseconds and microseconds are both selected, nanoseconds will override. |

## FIX Port Attributes

The FIX Port Attributes table below lists FIX port attributes that are configurable on the port or EFID level. Changes to these attributes can be made by submitting a request to the Cboe Trade Desk through the Logical Port Request form.

**Table 1. FIX Port Attributes**

| Attribute | Default | Description |
|---|---|---|
| Allowed Executing Firm Id(s)* | All Executing Firm Ids | Executing Firm Id(s) allowed for trading on port. |
| Default Executing Firm Id | None | Default Executing Firm Id to use if none is sent. |
| Allow ISO* | Yes | Allows or disallows ISO orders. |
| Allow Directed ISO* | Yes | Allows or disallows ISO orders directed to other market centers. |
| Allow Test Symbols Only | No | Allow or disallow orders in non-test symbols. |
| Default Routing Instruction† | 9303=RS (C1 and EDGX) `9303` = R (BZX and C2) 9350=RTI 9400=SWPA | Specifies a default value for RoutingInst (9303), RoutDeliveryMethod (9350), and RoutStrategy (9400). Fields can be overridden at the order level. |
| Maximum Order Size* | 25,000 99,000 (C1) | Maximum number of contracts allowed per order. |
| Maximum Order Dollar Value* | Unlimited | Maximum order dollar value per order. |
| Default Price Sliding† | "S" (BZX) "P" (C2 and EDGX ) | Default price sliding behavior. See Display Indicator Features for more details.. |
| 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 that are 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 |
| 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 BZX, 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 |
| Market Maker Reject if Cancel on Disconnect disabled | No Yes (C1 only) | Rejection of Market Maker or Away-Market Maker orders if Cancel on Disconnect is not enabled. Non-Market Maker capacity orders are unaffected with this configuration. |
| Send Trade Breaks^ | No | Enables `Trade Cancel/Correct` messages (MsgType = UCC). |
| Default MTP Value*^† | None | Specifies Default value for PreventMatch (7928). |
| Report MTP Fields*^ | No | Enables LastPx (31), LeavesQty (32), and SecondaryOrderId (198) on `Execution Reports` messages caused by MTP. |
| 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 | Allows Sponsored Participant to override port default for MTP by using PreventMatch (7928) on order-level. |
| Concatenate CompId and SubId | No | Requires all FIX traffic to contain concatenated (combined) Comp and Sub Id’s. |
| Cancel on Reject† | No | Cancels an order upon a modify reject. |
| Report Working Price | No | Reports WorkingPrice (9690) and InitialDisplayPrice (9691). |
| Unique Wash Execution Ids | No | Appends a ‘.B’ or .S’ to ExecID (17) on all trades. |
| Enable State Change Tracking^ | No | Allows for tracking of the state of routable orders (see State Change Tracking). |
| Send 2nd Liquidity Character | No | Sends the second character in TradeLiquidityIndicator (9730). |
| Decrement Remainder Only^ | No | Enables ‘d’ option for MTP. See PreventMatch (7928) for details. |
| Restate on Reload^ (BZX, C1, and C2 only) | No | Generates FIX Restatement on reserve order reload with new PITCH Order Id in SecondaryOrderId (198), and populates the new PITCH Order ID in (198) of a Cancel/Replace acknowledgement that increases the size of a reserve order. |
| Echo Tag 40 on Ack | No | Return OrdType (40) value on acknowledgement. Note that this value will also be returned on Order by Order FIX DROP. |
| Echo Tag 47 on Ack | No | Return Rule80A/OrderCapacity (47) value on FIX Ack. Note that this value will also be returned on Order by Order FIX DROP. |
| Microsecond Timestamp Granularity | No | Display microsecond level timestamp granularity for TransactTime (60), OrigTime (42), and SendingTime (52). These tags default to millisecond or second granularity. |
| Fat Finger Protection* | Yes See Web Portal Port Controls Specification for updated defaults | 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. Fat Finger checks will not be applicable for any Multi-Class Spread instruments that trade on the floor only. Fat Finger checks will remain applicable for Multi-Class complex instruments containing only SPX or SPXW legs as they are eligible for trading on the electronic book. Please see the Cboe Titanium U.S. Equities/Options Web Portal Port Controls Specification for details. |
| Reject Orders on DROP Port Disconnect* | No | If all associated 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 has been reestablished. Note this parameter does not apply to Order-By-Order drop ports (ODROP). |
| Reject Orders on DROP Port Timeout (s)* | 30 seconds | Only applicable if "Reject Orders on DROP Port Disconnect" has been 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. |
| 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, Execution Report messages representing orders carried forward from the previous session will be sent. See Carried Order Restatements for details. |
| Done For Day Restatements | No | If the Done For Day Restatements port attribute is set, Execution Report messages representing orders persisted during the current day session to carry over to the next session will be sent after the end of trading for the associated product and before system recycle. See Architecture and Message in Flight Settings for details. |
| Send Routing Instruction | No | Include RoutingInst (9303) on Order by Order FIX Drop execution reports. |
| Send Contra Capacity | No | Include ContraCapacity (7694) on Execution Reports. |
| Default Attributed Quote*† | Never | Default value for AttributedQuote (9732). May override at order level. C† = Attribute ClientID (109) only ( C1 only ) `N` = Don’t Attribute (may override at order level) `Y` = Attribute EFID only `Z` = Attribute EFID and ClientID (109) X* = (Default) Never Attribute (may not be overridden at order level) *On EDGX and BZX , this setting may only be changed after executing Attribution Addendum to Exchange User Agreement. |
| Crossed Market Reject / Cancel | 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 which cause a loss in priority will result in a cancel of the original order if the NBBO is crossed upon receipt of the modify request. |
| Cancel on Regulatory Halt | All (BZX and 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 |
| Session Close Handling | Yes | Customize message that would normally be sent at the regular market (4PM ET) and session close. Also functional during early close situations. Options supported are as follows: `Yes` = A cancel message will be sent for all expired orders (excluding GTC/GTD Orders). `No` = No message will be sent and it is the customer’s responsibility to close all expired orders in their system. `DFD` = A DoneForDay message will be sent in place of the cancel message for each order (including GTC/GTD Orders) that is no longer eligible for execution. DoneForDay messages are sent via OrdStatus (39) = 3 and ExecType (150) = 3. |
| 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. |
| 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 EFID (115). Must call Cboe Trade Desk to reenable. |
| Firm Risk Reset | Disabled | `Disabled` = Requires manually resetting all firm-level risk trips by contacting the Cboe Trade Desk. `Enabled` = Allows firm-level risk resets using FIX or BOE RiskReset field (7692) of ‘F’. |
| Send Client Order IDs for AIM/SAM/QCC Rejects (C1 and EDGX Only) | No | Enable sending of AffectedOrigClOrdIDs (1824) for AIM, SAM, and QCC rejects. |
| Port Order Rate Threshold | 5,000 msgs/sec 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 the second no more than 4,999 additional non-session level messages will be allowed within that window. 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. Note: Order handler burst rates towards each matching unit may be limited as described in Architecture and Message in Flight Settings . |
| Symbol Order Rate Threshold | 5,000 msgs/sec | 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. Note: Order handler burst rates towards each matching unit may be limited as described in Architecture and Message in Flight Settings . |
| Reject Non-Market Maker With Clearing Account | Yes (C1 and C2 Only) No (BZX and EDGX Only) | 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 BZX and EDGX Only. |
| Default Account† | None | Default value of the Account (1) field to be used if none is sent on inbound messages. Up to 16 characters in the ASCII range 33-126 are allowed. |
| Default ClearingOptionalData† | None | Default ClearingOptionalData (9324) to be used if none is sent on inbound messages. Allows 16 characters or less (ASCII 33-126). |
| Default FloorRoutingInst (22303)† (C1 only) | E | `D` = Direct. Do not attempt to process electronically 1 `E` = Electronic only `X` = Route to floor if unable to process electronically. 1 1 If FloorRoutingInst is default to ‘D’ or ‘X’, then RoutingInst (9303) must be sent as ‘B’ or ‘R’ for simple orders; for complex or FLEX instruments RoutingInst (9303) must be sent as ‘B’. |
| Default FloorDestination (22100)† (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). |
| Floor Representation Restatements (C1 only) | No | Send order restatement execution reports when ExecRestatementReason (378) = 7 (Represented in Crowd). |
| Send Floor Trade Restatements | No | Send order restatement execution reports when ExecRestatementReason (378) = A. If enabled, restatements will be sent when a floor trade is matched. This allows customers to obtain the final ExecID (17) on all floor trades following the matching process. |
| Default EquityPartyID (22008)† (C1 and EDGX only) | None | Default EquityPartyID (22008) to be used if none is specified on inbound messages. |
| Default ClientID (109)† (C1 only) | None | Default ClientID (109) to be used if none is specified on inbound messages. |
| FLEX Percentage Trade Restatements (C1 only) | Yes | If the FLEX Percentage Trade Restatements port attribute is set, Execution Report messages will be sent at the end of the day for all FLEX trades that were done in percentage terms. These trades will be restated with prices in dollar terms. FLEX trade restatements will carry an ExecType (150) = D and ExecRestatementReason (378) = 9 . If the settlement price is revised, the trades will be restated with the corrected symbol (FLEX Percentage) and prices (FLEX Percentage and FLEX DAC). |
| Send ClearingOptionalData | Yes | If set to 'Yes' the value of ClearingOptionalData (9324) specified on incoming orders will be passed to clearing. When clearing OCC, if set to 'No', the value of Account (1) is passed to clearing in the Clearing Member Optional Data instead. |
| Enable Market Maker Floor Trade Notifications (C1 only) | No | Enables Market Maker floor trade notifications for specific Market Maker Acronyms on a port (`Execution Reports` with ExecType (150) = T). |
| Market Maker Floor Trade Notification Symbology (C1 only) | OSI | Specifies the symbology used on Market Maker Floor Trade Notifications. `Cboe` = Six character Cboe Symbol ID `OSI` = OSI Symbology |
| Send Terminal Info (C1 only) | No | If enabled, this will allow Send TerminalOpeartorID (22021) and AdditionalClientInfo (22022) to be sent on `Execution Report` messages back to the client. AdditionalClientInfo (22022) will reflect any AllocAdditionalClientInfo (22027) value on `Execution Report` message if present. |
| 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 |
| 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. |
| 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. |
| Default EquityExDestination (22016)† (C1 and EDGX only) | C | Default EquityExDestination (22016) to be used if none is specified on inbound messages. |
| Send Nanoseconds | False | Display nanosecond level timestamp granularity for TransactTime (60),OrigTime (42), and SendingTime(52). If send nanoseconds and send microseconds are both selected, nanoseconds will override. |

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

† Port attribute can be overridden via FIX on an order by order basis.

^ Requires certification.

## Reason Codes

### Order Reason Codes

The following is a list of reason codes used to indicate the reason 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 reason. Cboe may add additional values without notice. Users must gracefully ignore unknown values.

**Table 1. Order Reason Codes**

| Code | Description |
|---|---|
| A | Admin |
| D | Duplicate 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 NBBO |
| U | User requested |
| V | Would wash |
| W | AddLiquidityOnly order would remove |
| X | Order expired |
| Y | Symbol not supported |
| Z | Unforeseen reason |
| c | Close only |
| f | Risk management EFID level |
| f | Risk management Custom Group ID level |
| m | Market access risk limit exceeded |
| o | Max open orders count exceeded |
| r | Reserve reload |
| s | Risk management symbol level |
| t | Auctions |
| w | Would Remove on unslide |
| u | Limit up/down |
| x | Crossed market |
| y | Order received during replay |
| z | Session End |
| + | Risk management EFID Group level |

### Order Subreason Codes

The following is a list of subreason codes used to indicate additional detail for the 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.

**Table 1. Order Subreason Codes**

| 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 |

## References

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

For more information on Cboe Opening Process, please refer to the Cboe Titanium U.S. Options Opening Process.

## Support

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

## Revision History

| Version | Date | Description |
|---|---|---|
| 0.1 | 09/17/09 | Initial draft version. |
| 1.0 | 10/05/09 | Release 1.0 distributed. |
| 1.0.1 | 10/08/09 | Various minor updates. |
| 1.1.0 | 10/28/09 | New technical specification template and tag 115/128 info updates. |
| 1.1.1 | 01/29/10 | Added State Change Tracking. Removed 375=NYSE |
| 1.1.2 | 02/04/10 | Added Common Session Level Issues. |
| 1.1.3 | 03/04/10 | Corrected example for price data type. Corrected description for tag 116. |
| 1.1.4 | 03/05/10 | Updated description for tag 1 and 440. |
| 1.1.5 | 05/14/10 | Opt-in support added for MMTP Decrement method to work with other method types. Opt-in support added to allow Sponsored Participants to override port level MMTP settings on an order by order basis with approval of Sponsor. |
| 1.2.0 | 08/06/10 | Added FIX Drop section and updated DROP/FIX Drop references. |
| 1.3.0 | 08/27/10 | Updated 9303 definitions to match equity specification format. Bats Specific Fields section converted into a reference table. |
| 1.4.0 | 09/15/10 | Updated 9303 to add 3 rd character support for strategy definition (in support of Parallel routing strategies) that will be effective by 10/01/10. Corrected tag 375 ( Contra ) parameter for NASDAQ (NOMX). Replaced RECYCLE references with Re-Route. |
| 1.4.1 | 09/28/10 | Default routing strategy changing effective 10/01/10 to Parallel-D. |
| 1.4.2 | 10/08/10 | Added support for C2 in tag 9303. |
| 1.4.3 | 10/11/10 | Added tag 7692 (RiskReset). |
| 1.4.4 | 10/27/10 | Added support for C2 in tag 375. |
| 1.4.5 | 11/04/10 | Parallel T and Parallel 2D effective date noted. |
| 1.4.6 | 11/08/10 | Parallel T strategy reference removed. |
| 1.4.7 | 12/08/10 | Updated 9621 definition. |
| 1.4.8 | 12/20/10 | Added 9730=S in 2nd character position (optional feature). |
| 1.4.9 | 12/21/10 | Added MMTP reference for 7928=d. |
| 1.5.0 | 12/28/10 | Added Port Attributes section. Renamed MMTP to MTP. |
| 1.5.1 | 01/14/11 | Added tag 167 (SecurityType) to `Execution Report`. |
| 1.5.2 | 02/10/11 | Added tag 6655 (CorrectedSize) to the `Trade Cancel/Correct` message type. |
| 1.6.0 | 03/03/11 | Removing 9622 DiscretionAmount effective 04/01/11. |
| 1.6.1 | 03/25/11 | Allow for opt-in of echoing Tag 47 (Rule80A/OrderCapacity) on FIX Ack effective 04/01/11. |
| 1.6.2 | 04/01/11 | Removal of 9622 DiscretionAmount postponed. |
| 1.6.3 | 05/24/11 | Added Microsecond Timestamp Granularity port attribute to allow for microsecond level timestamps for certain tags. |
| 1.7.0 | 06/28/11 | Added Mass Cancel effective 07/01/11. Added support for Firm level Risk Management rule Risk Resets effective 07/15/11. |
| 1.7.1 | 07/12/11 | Added Fat Finger Protection port attribute definition. Added some clarification to Mass Cancel definition. |
| 1.7.2 | 07/22/11 | Added Echo Tag 40 on Ack and Reject Orders on DROP Port Disconnect port attribute definition. |
| 1.7.3 | 08/24/11 | Added 9622 DiscretionAmount . Added additional DROP Port Disconnect port attribute definitions. |
| 1.7.4 | 09/20/11 | Added support for Professional Customer capacity (effective date 11/01/11). Added tag 58 value for Market Access Risk Limit cancel or reject. |
| 1.7.5 | 11/07/11 | Added Notional Cutoff Aggregation Method, Limit Order Notional Cutoff, and Market Order Notional Cutoff to Port Attributes section. |
| 1.7.6 | 12/01/11 | Added clarification to tag 102 usage with regard to `Cancel Rejects` messages. |
| 1.7.7 | 12/08/11 | Added Send Routing Instruction to Port Attributes section. |
| 1.8.0 | 12/16/11 | Updated FIX Drop Port Attributes section and renamed Port Attributes section FIX Port Attributes. Added Send Contra Capacity Instruction to FIX Port Attributes and FIX Drop Port Attributes section. Add tag 58 value `o` = Max Open Orders Count Exceeded as a reject reason code. |
| 1.8.1 | 12/21/11 | Noted that Bats reserves the right to add new FIX tags and to update values distributed on Order by Order FIX Drop with no notice. |
| 1.8.2 | 01/05/12 | Added Multiple Display-Price Sliding (9479=M). |
| 1.8.3 | 01/17/12 | Added capability within Order Cancel Request message to specify a MassCancel (tag 7693) option that will limit cancel acknowledgements to a single Execution Report message. Effective 01/27/12. |
| 1.8.4 | 01/18/12 | Updated Multiple Display-Price Sliding effective date to effective pending SEC Approval. |
| 1.8.5 | 01/19/12 | Added capability to echo MassCancelID in `Cancel Reject` messages. |
| 1.8.6 | 01/25/12 | Correction to MassCancel (tag 7693) definition. MassCancel requests that contain tag 41 (OrigClOrdID) will be rejected. ClOrdID was noted incorrectly. |
| 1.9.0 | 02/01/12 | Added support for using either Net, Gross, or a combination of both Notional Cutoff Aggregation Methods to the Port Attributes section. Effective 02/03/12. Removed Notional Cutoff Aggregation Method attribute and added specific attributes for both Gross and Net Daily Risk Limit/Market Cutoffs. Effective 02/03/12. |
| 1.9.1 | 02/17/12 | `Trade Cancel/Correct` message section stated that tag 439 was copied from original order. This was not correct. Corrected to note that tag 115 is copied to tag 128. |
| 1.10.0 | 03/07/12 | Added AttributedQuote (9732). Effective 05/07/12. |
| 1.10.1 | 05/17/12 | Clarified tag 55 description. Updated PreventMatch tag 7928 to include a 3 rd character for Trading Group Id. Effective 05/25/12. |
| 1.11.0 | 05/25/12 | Post Only Orders will execute against resting orders if the value of price improvement associated with the execution equals or exceeds the sum of fees charged for the execution plus the value of the rebate that would have been provided if the order posted to the Bats book and subsequently provided liquidity. Effective 06/08/12. |
| 1.11.1 | 06/14/12 | Added support for NASDAQ BX in tags 9303 and 375. Effective 06/29/12. Clarified the cases in which Tag 198 SecondaryOrderID is sent. |
| 1.11.2 | 06/19/12 | Added reason code of `x` = Crossed Market to OrderRejectReason , ModifyRejectReason and CancelReason . Added Crossed Market Reject/Cancel to Port Attributes section. |
| 1.11.3 | 06/26/12 | Added support to allow Market Makers to facilitate trades in Closing Only Series using Opening IOC orders. Effective 06/29/12. |
| 1.11.4 | 08/07/12 | Updated Multiple Display-Price Sliding effective date to effective 08/24/12. |
| 1.11.5 | 09/05/12 | Added support for Miami Stock Exchange in tags 9303 and 375. |
| 1.11.6 | 09/26/12 | Mass Cancel requests containing a MassCancelID that is currently outstanding will be rejected. Effective 09/28/12. |
| 1.12.0 | 01/09/13 | Removed support for discretion orders (DiscretionAmount Tag 9622). Effective 02/01/13. |
| 1.12.1 | 01/23/13 | Added reason code of `u`=LimitUpDown to Text (Tag 58). |
| 1.13.0 | 04/04/13 | Include TradeLiquidityIndicator (Tag 9730) by default on order acknowledgements. Effective 06/06/13. Updated ExchangeAccessFee (Tag 9621) description. |
| 1.14.0 | 07/10/13 | CYCLE routing strategy, where 3rd character of RoutingInst (Tag 9303) = `C` to be deprecated in favor of Parallel routing strategies. Effective 09/03/13. |
| 1.14.1 | 08/05/13 | Details added to RoutingInst (Tag 9303), ExecInst (Tag 18), and ContraBroker (Tag 375) to support Gemini. |
| 1.14.2 | 10/21/13 | Added support for MassCancelLockOut to Order Cancel Request message type. |
| 1.14.3 | 12/10/13 | Updated CYCLE routing strategy where 3rd character of RoutingInst (Tag 9303) = `C` will be rejected effective 01/02/14. |
| 1.14.4 | 01/29/14 | Added reference to cancel on regulatory halt to the Port Attributes section. Effective 03/06/14. |
| 1.14.5 | 01/30/14 | Added maximum of 20% for Fat Finger Percentage in Port Attributes section. |
| 1.14.6 | 02/07/14 | Updated Hours of Operation to reflect Pre-Market Opening Process. |
| 1.14.7 | 03/14/14 | Add TradeLiquidityIndicator (Tag 9730) value of "C" for market opening/re-opening trade. |
| 1.15.0 | 06/05/14 | Added support for Random Replenishment, DisplayRange (8020). Effective 07/11/14. Added support for modification of displayed quantity, MaxFloor (111), on the next reload. Effective 07/11/14. Added support for TimeInForce (59) = `4` , FOK. Effective 07/11/14. Added support for OrdType (40) = `3` (Stop) and OrdType (40) = `4` (Stop Limit) orders as well as StopPx (99). Effective 07/11/14. |
| 1.16.0 | 07/31/14 | Added "Session Close Handling" Port Attribute. Effective 08/22/14. Added MTP Modifier of Cancel Smallest, PreventMatch (7928) = `S` . Effective 08/22/14. |
| 1.16.1 | 08/29/14 | Added Aggressive and Super Aggressive routing strategies to RoutingInst (9303). Effective 09/12/14. |
| 1.16.2 | 09/23/14 | Added support for Price Adjust and Multiple Price Adjust, DisplayIndicator (9479) = `P` and "m" respectively. Effective 10/17/14. |
| 1.16.3 | 10/27/14 | FeeCode (9882) support added for opt-in through the Bats Trade Desk effective 11/07/14. FeeCode (9882) will be distributed on all Execution Reports effective 11/21/14. ExchangeAccessFee (9621) will be deprecated effective 3/31/15. |
| 1.16.4 | 02/13/15 | Added support for Capacity (47) and ContraCapacity (7694) designations of Broker-Dealer, Non-Bats Market Maker and Joint Back Office. Effective 06/01/15 |
| 1.16.5 | 03/02/15 | Updated description of Unique Wash Execution Ids port attribute. Added language to `Logon` message clarifying behavior around one second wait period after `Logon` is received. |
| 1.17.0 | 07/01/15 | References in support of EDGX Options added. Added MarketingFeeCode (5937) and TargetPartyID (1462). ContraCapacity (7694) added to FIX DROP. |
| 1.17.1 | 08/21/15 | Updated description of Fat Finger Protection port attribute. Added Duplicative Order Protection port attributes. |
| 1.17.2 | 10/26/15 | Updated description of DisplayIndicator (FIX Tag 9479) with EDGX Options-specific behavior. |
| 1.17.3 | 10/31/15 | Updated values for MarketingFeeCode (FIX Tag 5937) to match current EDGX Options Fee Schedule. Updated description of TargetPartyID (FIX Tag 1462). Updated description of MassCancel (FIX Tag 7693). |
| 1.17.4 | 11/12/15 | Updated Pre-Market Queueing session start time to 7:30 a.m. ET effective 12/11/15 pending SEC approval. |
| 1.17.5 | 12/24/15 | Updated descriptions of TargetPartyID (FIX Tag 1462) and OrderCapacity (FIX Tag 47) for revised directed order functionality. Effective 01/19/16. |
| 2.0.0 | 01/21/16 | Added Mercury support to ContraBroker (FIX Tag 375) and RoutingInst (FIX Tag 9303). Added Routing V2 support to RoutingInst (FIX Tag 9303). Added three new fields in support of Routing V2: RoutDeliveryMethod (FIX Tag 9350), RoutStrategy (FIX Tag 9400), and ExDestination (FIX Tag 100). Changed major revision of spec to V2 to match equities FIX spec version convention. |
| 2.1.0 | 02/19/16 | Bats branding/logo changes. |
| 2.1.1 | 02/24/16 | Updated reason code for restatement messages ExecRestatementReason (FIX Tag 378). Effective 03/10/16 |
| 2.1.2 | 03/24/16 | Update description of RoutStrategy (v2) (FIX Tag 9400) to state routable ISOs must be sent with "DIRC". Updated the minimum value of the "Reject Orders on DROP Port Timeout (s)*" Port Attribute. Effective 04/25/16. |
| 2.1.3 | 05/17/16 | Updated Display Price Sliding and Price Adjust functionality. Effective 05/16/16. Added functionality for AuctionID and S as possible second character for RoutingInst . Effective 07/11/16. |
| 2.1.4 | 06/13/16 | Display Price Sliding support eliminated for EDGX Options Effective 07/11/16. |
| 2.1.5 | 07/13/16 | Added new second character to TradeLiquidityIndicator (FIX Tag 9730) of B for Step-Up Mechanism (SUM) |
| 2.1.6 | 08/03/16 | WAIT orders (FIX Tag 9303) = `C` will be eliminated upon migration to the Bats NextGen Matching Engine. Price Adjust behavior on BZX Options will be unified with EDGX Options Price Adjust behavior on the Bats NextGen Matching Engine. Refer to Release Notes on Bats Public Web Site for NextGen Matching Engine deployment schedule. |
| 2.1.7 | 08/19/16 | Added support for BAM Auction functionality (available in EDGX Options Certification 10/11/16 and EDGX Options Production 01/03/17) |
| 2.1.8 | 10/04/16 | Added support for RoutingFirmID (Tag 7933) on the `New Order Single` Message. Effective 01/03/17. |
| 2.1.9 | 11/11/16 | Removed legacy Display Price Sliding functionality. Added new second character to TradeLiquidityIndicator (FIX Tag 9730) of ‘b’ for Bats Auction Mechanism. Updated ClearingAccount to clarify and include Capacity of ‘N’. |
| 2.1.10 | 12/6/16 | Updated Fix Port Attribute for Market Maker Reject if Cancel on Disconnect disabled. |
| 2.1.11 | 01/24/17 | Removed legcy Routing v1 functionality Added support for MIAX Pearl routing. Updated RoutingFirmID (Tag 7933) for `Execution Report` , `Order Cancel Request` , and `Cancel` / `Replace Request` . Added Support for Qualified Contingent Cross (QCC) to include an updated CrossType (549). Effective 03/03/17. |
| 2.2.0 | 01/27/17 | Added Purge Port functionality. Effective 03/01/17. Added new RiskReset (7692) values to support reset by CustomGroupID (7699). Effective 03/01/17. |
| 2.2.1 | 03/06/17 | Added new opt-in AffectedOrigClOrdID (Tag 1824) repeating group to echo ClOrdID (Tag 11) of BAM and QCC rejects. Removed references to legacy DROP protocol. Added "Port Order Rate Threshold", "Symbol Order Rate Threshold", "Allow Test Symbols Only", and "Send Client Order IDs for BAM/QCC Rejects (EDGX Only) " Port Attributes. |
| 2.2.2 | 04/13/17 | Defined whether a FIX Tag is optional or required on all inbound message types. |
| 2.3.0 | 05/11/17 | Added support for Complex orders. Available in Certification effective 08/01/17 and in Production effective 10/23/17. Added Cancel on ME Disconnect Port Attribute. |
| 2.3.1 | 06/13/17 | Added LegRefID (654) to `New Order Multileg` message for both long and short form messages. Added LegRefID (654) to `Security Definition Request` and `Security Definition` messages. Added complex order Tags to `Execution Report` message. Updated available TimeInForce (59) and RoutingInst (9303) values when used with complex orders. |
| 2.3.2 | 06/27/17 | AvgPx (6) and CumQty (14) will be zero when MultiLegReportingType (442) is "2". |
| 2.3.3 | 07/07/17 | Symbology used on executions for complex orders, including the legs, will always be Bats symbology |
| 2.3.4 | 07/25/17 | Added SecondaryExecId (527) to Execution Report. Added new Mass Cancel/Purge Request specification style using MassCancelInst (7700) field (Available in Certification effective 8/14/17 and in Production effective 10/23/17). Added new Reason Codes section. |
| 2.3.5 | 08/04/17 | Added RiskReset and CustomGroupID to `New Complex Order` message. |
| 2.4.0 | 09/01/17 | References and fields in support of C2 Options added. Updated Mass Cancel and Purge fields to add additional filtering based on GTC orders and Complex instruments. Updated Cancel on Disconnect, Cancel on ME Disconnect, Cancel on DROP Port Disconnect and Cancel on Regulatory Halt to all provide GTC filter capability. |
| 2.4.1 | 09/15/17 | Added support for C2 Feature Pack 1. Available in Certification effective 9/15/17 and in Production effective 10/13/17. |
| 2.4.2 | 09/25/17 | Updated description of MassCancel (7693) and MassCancelInst (7600). Added TimeInForce (59)=2 (At The Open) for `New Order Single` effective 10/23/17. |
| 2.4.3 | 10/05/17 | Updated C2 Feature Pack 1 effective date from 10/6/17 to 10/13/17. Removed introduction of ContraTrader and ContraBroker and deprecated of ContraCapacity from C2 Feature Pack 1 release. |
| 2.4.4 | 10/17/17 | Cboe branding/logo changes. |
| 2.4.5 | 11/07/17 | Added C2 Feature Pack 2 enhancements for ContraTrader and ContraBroker values to be effective on 12/8/17. |
| 2.4.6 | 12/06/17 | Updated effective date of C2 Feature Pack 2 to 12/15/17. |
| 2.4.7 | 12/15/17 | Updated description of Leg Ref ID (654) to allow 5 alphanumeric or space characters or less. Updated effective date of C2 Feature Pack 2 to 01/05/18. |
| 2.4.8 | 12/27/17 | Added ‘Done For Day Restatements’ functionality including Section 1.5.1 introduction and new port attribute ‘Done For Day Restatements.’, which is disabled by default. Changed default for ‘Carried Order Restatements’ to disabled. Updated `Cancel/Replace Request` message to clarify when an order loses time priority. |
| 2.4.9 | 01/12/18 | Added GTC/GTD persistence across trading sessions to BZX and EDGX (Effective in EDGX on 1/26/18 and BZX on 2/2/18). |
| 2.5.0 | 02/20/18 | The TimeInForce value on an `Execution Report` may differ from what was sent in cases where the value is overridden by the system. Update GTC/GTD functionality to allow order cancelation after trading sessions ends. |
| 2.5.1 | 03/21/18 | Updated OSI Root to Underlying symbology for EDGX Options (effective 6/11/18) and BZX Options (effective 6/25/18). |
| 2.5.2 | 03/26/18 | Updating RoutStrategy (9400) default behavior to ‘SWPA’ for EDGX on 04/13/18 and BZX on 04/19/18. |
| 2.5.3 | 04/04/18 | Removed ‘P’ost Only as a valid RoutingInst value for New Order Multileg on C2. Changed the Default Attributed Quote value for EDGX to Never. |
| 2.5.4 | 04/10/18 | CumQty (14) to be populated on leg fills related to complex executions (effective 4/27/18). |
| 2.5.5 | 05/23/18 | Complex Orders with a RoutingInst (9303) = D must be Market Maker capacity. Corrected OSI to Underlying effective dates |
| 2.5.6 | 08/07/18 | Updated information about mass cancel message rate limitations. (effective 08/15/18) Added clarification to CxlRejReason (Tag 102) with reason of BrokerOptions on Cancel Rejects messages. |
| 2.5.7 | 10/19/18 | Added support for C1 Migration Feature Pack 1, including support for complex reserve orders, ClearingOptionalData (9324) and EFID Group level risk functionality. Available in Certification effective 11/2/18 and in Production effective 11/29/18. |
| 2.5.8 | 11/05/18 | Added Complex Post Only value of ‘P’ to RoutingInst (9303) (Effective in EDGX and C2 - TBD). |
| 2.6.0 | 11/16/18 | Add additional message types, references, and fields in support of Cboe Options migration to Bats Tech. |
| 2.6.1 | 11/27/18 | Added TradeLiquidityIndicator (9730) values for SAM and QCC. Updated effective date for Complex Post Only to TBD. Updated values for Default Attributed Order port attribute for Cboe Options Exchange. |
| 2.6.2 | 12/06/18 | Updated FIX Tag 1 ( Account ) description to match behavior per release of C1 Feature Pack 1. Added Send ClearingOptionalData to list of Fix Port Attributes. Added notes to ClientID (109) , AttributedQuote (9732) indicating availability in C1 Feature Pack 4. Updated FIX port attributes 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. |
| 2.6.3 | 12/20/18 | Attributing by ClientID (109) requires a value of "C" rather than "X" for the AttributedQuote (9732) field. |
| 2.6.4 | 01/11/19 | Corrected default value for Default FloorRoutingInst port attribute to ‘E’ for Electronic only. 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. |
| 2.6.5 | 01/17/19 | Removed Cancel/Correct references from `Execution Report` (35=8) message type description to ensure clarity on the fact that Cancel/Correct messages are only sent using the UCC (35=UCC) message type. Added effective dates for Complex Post Only (EDGX 01/30/19, C2 02/06/19). |
| 2.6.6 | 02/06/19 | Added Reason Code `‘z’` to section 8. Market Orders are not implicitly IOC for `New Order Multileg` orders. Added Simple Order Auction information related to BAM/AIM, SUM, and QCC for C1 Feature Pack 5. |
| 2.6.7 | 02/19/19 | Cabinet orders must be routed to the floor. Support added Floor Representation Restatements including new protocol feature section and new port attributes. Added FLEXHedgeExecInst (21005) and FLEXPreFacilPrice (21008) to `New Order Cross` and `New Order Cross Multileg.` Removed MultiClassSpd (22004). Tag is not needed. Changed TradingSessionID (336) to SessionEligibility (22017). Also changed tag values to be a single character, from ‘RTH’ and ‘ALL’ to ‘R’ and ‘A’. |
| 2.6.8 | 03/01/19 | Updated `New Order Multileg` message type to not support legging in to the simple book on cross product spreads. Added note indicating FIX Tag 111 (MaxFloor) and FIX Tag 8020 (DisplayRange) will be effective in C2 on 03/15/19 to support Complex Reserve orders. |
| 2.6.9 | 03/13/19 | Updated effective date for SAM auctions to TBD. |
| 2.6.10 | 03/18/19 | Added support for AON orders on EDGX effective with C1 Feature Pack 6. |
| 2.6.11 | 03/29/19 | Added new TiedHedge indicator tag to `New Order Multileg` . Moved FrequentTraderID to the Allocs repeating group of `New Order Cross` and `New Order Cross Multileg.` Removed FLEXPreFacilPrice from `New Order Cross` and `New Order Cross Multileg.` Added FLEXHedgeExecInst and FLEXPreFacilPrice to `New Order Single` and `New Order Multileg.` Updated `Delete Floor Trade` message descriptive text to specify that we only allow trade deletion by execID (deletion by clOrdID will not be supported). Replaced all references to BAM with AIM. Updated GTH trading hours to end at 9:15 a.m. ET. Renamed Late-Limit-On-Open orders to Settlement Liquidity orders. |
| 2.6.12 | 05/02/19 | Updated Price (44) description with supportive values based on PriceType (423) to support pricing as a percentage (FLEX only) or Cabinet orders. Updated SecurityType (167) on `Execution Reports` , including those sent to FIX DROP, to more accurately reflect how this will be used on the Cboe Options (C1) Exchange. In `New Order Cross Multileg` , removed LegPositionEffect (564) & ContraPositionEffects (22564), added LegPositionEffects (22019). Added clarification to MassCancelInst behavior when the Clearing Firm Filter is set to ‘F’. Clarified acceptable ASCII values for for Account and ClearingOptionalData . Added GTH times for DJX and XSP and added note to indicate C2 and EDGX will support SessionEligibility , 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. |
| 2.6.13 | 05/31/19 | Removed Market Maker Floor Trade Notifications from FIX port attributes and added to Drop Port attributes. Added FLEX Percentage Trade Restatements and Allow Executions to Drop Port Attributes. Added TradeLiquidityIndicator 2 nd character value of "U" for Market Turner on C1. Added Trade Cancel/Corect FIX Drop Clearing Edit section that is applicable to C1 only. Added Send Clearing Edits FIX Drop port attribute for C1 only. |
| 2.6.14 | 06/14/19 | Updated description of EquityTransactTime (22060) field. Added note indicating `New Order Cross Multileg` will be supported on EDGX, effective on EDGX with C1 Feature Pack 8. Added TimeInForce (59) value of ‘At the Close ‘, effective on BZX, C2, and EDGX with C1 Feature Pack 8. |
| 2.6.15 | 06/19/19 | Updated `Add Floor Trade` message for ContraBroker and ExecBroker fields. Fields are not validated if sent. Default Market Maker EFID Association Tool in Web Portal is used to identify OCC give-up number for these fields. ContraBroker and ExecBroker fields will be deprecated at a future date. |
| 2.6.16 | 06/21/19 | Added ExecRestatementReason(378) value of `3`=Repricing of order for use with SLOO order restatement reason. |
| 2.6.17 | 06/28/19 | Added notes indicating EquityExDestination, EquityLegShortSell, and EquityPartyID fields in the `New Order Cross Multileg` and `New Order Multileg` messages will be effective on EDGX with C1 Feature Pack 9 to support Complex Orders with equity legs. |
| 2.6.18 | 07/01/19 | Clarified preferred use of underlying when specifying RiskRoot field. Removed `Will be zero for ExecTransType (20)` = 3" (Status)" from description of ExecID (17) in `Execution Report` message . |
| 2.6.19 | 07/10/19 | Updated note indicating `New Order Cross Multileg` value for C-AIM will be supported on EDGX at a date TBD. |
| 2.6.20 | 07/16/19 | Corrected details for Execution Report fields OrigCompID (9688) and OrigSubID (9689) to indicate that both are FIX and ODROP only. |
| 2.6.21 | 07/25/19 | Corrected description of FrequentTraderID from "10 characters or less" to "6 characters or less". Corrected description of the ‘G’ value for the ExecInst (18) field in `New Order Multileg` message to include DAY instead of IOC. Added support for Market Maker Floor Trade Notifications for FIX port attributes to specify list of Market Maker Acronyms on a port. `Floor Trade Confirmation` messages now support full OSI Symbology in addition to Cboe Symbol ID. FloorRoutingInst of "D" or "X", only compatible when RoutingInst (9303) is set to "R". |
| 2.6.22 | 07/26/19 | Removal of Execution Report with ExecType (150) = F for Floor Trade Match Record and clarification around correct Execution Report messages for `Add Floor Trade` , `Floor Trade Confirmation` and `Delete Floor Trade` messages. |
| 2.6.23 | 08/07/19 | Added clarification for OpenClose (77) field in `New Order Single` and `New Order Cross` messages for orders with an OrderCapacity (47) of M or N. Added note indicating that if using OSI symbology to specify an equity leg in the `New Order Cross Multileg` message, the equity leg must the last element of the repeating group. Clarification on RoutingInst (9303) when FloorRoutingInst is "D" or "X" on `New Order Single` and `New Order Multileg` messages. Added note indicating that for Execution Reports, SecurityType (167) value of "EQ" will be effective on EDGX with C1 Feature Pack 9. The SecurityType (167) value of "OPT" will be effective on EDGX with C1 Feature Pack 9 and C2 on 9/6/19. Updated footnotes for FloorRoutingInst (22303) indicating when FloorRoutingInst is "D" or "X", RoutingInst (9303) must be set to "B" or "R" for simple orders; for complex or FLEX instruments RoutingInst (9303) must be set to "B". |
| 2.6.24 | 08/09/19 | Added note indicating C-AIM will be effective on EDGX 8/22/19. |
| 2.6.25 | 08/23/19 | Added PriceType (423) field in Execution Reports. Updated definition for Price (44) field in `New Order Single` message. Updated definition for Leg Price (566) field in `New Order Cross Multileg` message. Removed language indicating Cabinet orders can have a TimeInForce (59) value of "GTD" or "IOC" since GTD and IOC orders cannot route to the floor. Clarified ContraBroker (375) and ContraTrader (337) to provide detail about what information will be provided for trades on the Cboe Options trading floor. Added minimum and maximum valid values for FLEXAuctionDuration (21010). Additional detail added for ContraBroker (375) and ContraTrader (337) with respect to Cboe Options floor trades and complex trades. |
| 2.6.26 | 08/30/19 | Sorted table 4.3 - User Defined Fixed Fields numerically by FIX tag and changed font of some zeros to Consolas. Removed Rule80A Order Capacity (47) value of `D` = Non TPH Broker Dealer (FLEX only) as this value will no longer be accepted. |
| 2.6.27 | 09/9/19 | Series restricted to closing only will accept opening transactions from both M and N capacities. Clarified AutoMatchPrice (9044) descriptions. Corrected MultilegReportingType description in `Add Floor Trade` message to remove "4=Individual leg of a Combo multi-leg instrument: as this is not a valid value. |
| 2.6.28 | 09/17/19 | Added PriceType (423) field to `Floor Trade Confirmation` message. For `Execution Report` updated or added the following fields that are specific to FLEX restatement messages: OrdStatus (39) ClearingPrice (21050), ClearingSymbol (21053), ExecRefID (19), Rule80A/Capacity (47), TradeDate (75). Clarification added for rejects related to an invalid ExecInst (18) value. If a value is supported on one message type, but invalid for another message type, then that will result in a reject. |
| 2.6.29 | 09/23/19 | ClOrdID (11) values cannot start with a tilde (~) when sent on FIX messages to the Exchange. This prevents a potential conflict with a system generated ClOrdID . Added new InitialClientOrderId (22020) field to FIX Drop for `Trade Cancel/Correct` and `Execution Report` . This field is enabled by using new FIX Drop port attribute. Updated Default Routing Instruction Fix Port Attribute values for 9303. |
| 2.6.30 | 10/02/19 | Removed TimeInForce(59) value of "7=At The Close" for `New Order Multileg` message as this is not a valid value. |
| 2.6.31 | 10/03/19 | Added note indicating Cancel on ME Disconnect port attribute timeout is 15 minutes for C1. |
| 2.6.32 | 10/15/19 | Corrected TransactTime (60) description for `Add Floor Trade` message. Added Market Order NBBO Width Protection, Drill-Through Protection for Lmit Orders, and Exchange Default Fat Finger Limits subsections under Protocol Features. |
| 2.6.33 | 11/07/19 | Clarified time range during which Done For Day Restatement messages are sent for Floor Trades. Added notes indicating that the ‘at’ sign, pipe, and double quotes are not permitted in ClOrdID (11) or CrossID(548), effective 01/13/2020 . |
| 2.6.34 | 11/12/19 | Updated Hours of Operation table, indicating GTH will be sunset on C2 and EDGX effective 11/22/19. |
| 2.6.35 | 11/21/19 | Added note to the TradeDate (FIX Tag 75) indicating this field in Execution Reports will include the ‘As of’ date for floor orders entered via the Add Trade tool (effective 12/10/19). |
| 2.6.36 | 12/3/19 | 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 (9618), effective 12/16/19 (BZX only). |
| 2.6.37 | 12/9/19 | Added note indicating Post Only orders with DisplayIndicator (9479) = R will be cancelled back for C1, C2 and EDGX only. Updated LegPrice (566) description for `New Order Multileg` message indicating this field will be optional for complex FLEX orders when routed directly to the floor ( effective 12/16/19 1/6/20). |
| 2.6.38 | 12/13/19 | Updated effective date for leg price requirement changes onFLEX complex orders routed to PAR from 12/16/19 to 1/6/20. |
| 2.6.39 | 01/17/20 | Added note indicating that reason codes are followed by free-form text that may vary from the text listed in the specification, in order to provide clarification of the reject reason. Added note indicating that EDGX will support SAM and C-SAM auctions, effective 2/3/20. |
| 2.6.40 | 01/29/20 | Changed OrdType to Not Required on `New Order Cross` and `New Order Cross Multileg` messages. FLEX non-index percentage pricing will be available effective 2/18/20. Added note indicating RoutingFirmID (FIX Tag 7933) will be effective on BZX in the `New Order Single` message, effective 3/2/20. |
| 2.6.41 | 02/26/20 | Clarified description of TransactTime (60). Added TerminalOperatorId (FIX Tag 22021) and AdditionalClientInfo (FIX Tag 22022) to the `New Order Single` , `New Order Cross` , `New Order Cross Multileg` , `New Order Multileg` , and `Execution Report` messages. Also added Send Terminal Info FIX Drop and FIX Port attribute to support these new FIX Tags, effective 03/23/20 (C1 Only) . Added MXEA and MXEF to FLEX symbol abbreviation tables. |
| 2.6.42 | 03/10/20 | Updated values for LegRatioQty (623) and Price (44) for `New Order Multileg` and `New Order Cross Multileg` messages to support increase of maximum leg quantity and maximum package price for complex orders (effective on C1, C2, and EDGX 4/13/20). Corrected Price field accepted values for `New Order Single` message. LeavesQty (151) to be populated on single-leg instrument fills resulting from complex executions. |
| 2.6.43 | 03/13/20 | Changed effective date for addition of TerminalOperatorId (22021) and AdditionalClientInfo (22022) and addition of Send Terminal Info FIX Drop and FIX Port attribute to TBD (C1 Only). |
| 2.6.44 | 04/03/20 | Updated formatting Clarification on the usage of AllocExecRefID (25007) for clearing edits on FIXDROP. Updated effective date for addition of TerminalOperatorId (22021) and AdditionalClientInfo (22022) and addition of Send Terminal Info FIX Drop and FIX Port attribute to 4/7/20 (C1 Only) . Updated effective date for LeavesQty (151) to be populated on single-leg instrument fills resulting from complex executions to 4/9/20. |
| 2.6.45 | 04/22/20 | Added new value of "2" to Send Clearing Edits port attribute for FIX Drop. Defined new cancel + new clearing edit messaging in the Trade Cancel/Correct section (effective 5/13/20). |
| 2.6.46 | 04/27/20 | Noted notional exposure tracking to be deprecated on 5/8/20. |
| 2.6.47 | 04/28/20 | 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). |
| 2.7.0 | 05/22/20 | Added Maximum Open Order Limits section 1.5.4.5. Updated description of MassCancelID (Tag 7695) field to indicate that messages will be rejected if they contain a MassCancelID field whose value ends with a space (effective 6/5/20). Added new SubreasonText (22058) field to better inform members on the reason why an order was cancelled or rejected. Also added new RiskReset (7692) values to allow for rest or self-imposed lockout without resetting risk counters (effective 08/3/20). |
| 2.7.1 | 05/26/20 | Added PriceType (423) value of ‘D’, Delta (22023), ReferencePrice (22025), and LegDelta (22024) fields to support FLEX Delta Adjusted at Close (effective 09/14/20 07/20/20), (C1 Only). |
| 2.7.2 | 07/01/20 | Added clarifying statement for FLEX orders indicating that when a percentage Cboe symbol is specified for Symbol (55), but no PriceType (423) value is provided, the order will be rejected. Updated PriceType field in `New Order Single` , `New Order Multileg` , and `New Order Cross Multileg` messages to include values to support FLEX DAC. Corrected valid values for Delta field in `New Order Single` message. Added AllocAdditionalClientInfo (22027) to the `New Order Cross` and `New Order Cross Multileg messages` (effective 7/24/20), ( C1 only) . |
| 2.7.3 | 07/07/20 | Added EquityExDestination (22016) value of ‘P’ for Penserra (effective 08/10/20). Added CrossInitiator (22026) field in `New Order Cross Multileg` and `New Order Multileg` messages (effective 08/10/20) (C1 and EDGX Only) . Updated and removed values from SubreasonText (22058) and RiskReset (7692). |
| 2.7.4 | 07/08/20 | Updated effective date for fields supporting FLEX Delta Adjusted at Close to 09/14/20. Added deprecation date for legacy MassCancel (7693) and MassCancelLockout (7697) (effective 10/12/20). |
| 2.7.5 | 07/13/20 | Corrected description of Delta (22023) in User Defined FIX Fields table to indicate that the Delta field is available in the `New Order Cross` message. |
| 2.7.6 | 07/28/20 | Updated Drill-Through Amount table and default values for DrillThruProtection (6253) (effective 08/05/20). |
| 2.7.7 | 07/31/20 | Added FloorDestination (22100) field to Execution Reports (effective 08/26/20 09/09/20) ( C1 Only ). Corrected TradeLiquidityIndicator value for QCC from ‘q’to ‘Q’, |
| 2.7.8 | 08/05/20 | Updated `Execution Report` (Cancels and Rejects) and `Cancel Reject` message to include ClearingOptionalData (9324) field (effective 8/28/20). |
| 2.7.9 | 08/13/20 | Added FLEX Micro symbology to abbreviation tables (effective 9/18/20). |
| 2.7.10 | 08/20/20 | Added new `Purge Notification` message and Acknowledgement Style value of "A" for second character of MassCancelInst on `Purge Request` (effective 9/25/20). |
| 2.7.11 | 08/25/20 | Updated effective date for addition of FloorDestination (22100) field to Execution Reports to 09/09/20 (C1 Only). |
| 2.7.12 | 09/03/20 | Updated effective date for FLEX Micro Options to TBD (C1 Only). |
| 2.7.13 | 09/08/20 | Updated effective date for FLEX Delta Adjusted at Close to TBD (C1 Only). |
| 2.7.14 | 09/16/20 | Added note to `Trade Cancel/Correct` indicating message will support SecurityType (167) field (effective 10/08/20 for EDGX, effective 10/09/20 for BZX, C1, C2). |
| 2.7.15 | 09/28/20 | Added EquityExDestination (22016) values of ‘F’,’L’, and ‘S’ (effective 10/7/20). Corrected values supported by SecurityType (167) field on `Trade Cancel/Correct` message to include `EQ` = Equity . |
| 2.7.16 | 10/06/20 | Added CrossType (549) value of `4` = Position Compression Cross to `New Order Cross` and `New Order Cross Multileg` messages (C1 Only) . Updated description of Lockout (7697) field in `Purge Notification` message to indicate `Y` = lockout or `N` = no lockout. |
| 2.7.17 | 10/14/20 | Added TradeLiquidityIndicator , 2 nd character value of P=PCC ( (C1 Only) . Added note indicating Complex PCC orders cannot be composed of both SPX and SPXW in the same instrument. Updated drill-through procedures to be iterative (effective 11/9/20 on EDGX and 11/10/20 on BZX, C1, and C2) |
| 2.7.18 | 11/5/20 | For Compression (22006) in `New Order Cross` and `New Order Cross Multileg` , added note to indicate this field should not be specified for PCC orders ( CrossType (549) = `4` ). Removed information related to deprecated legacy Mass Cancel method. Added clarification to `Add Floor Trade` and `Floor Trade Confirmation` messages regarding use of Market Maker EFIDs configured for floor transactions in reports. Updated FLEX DAC effective date to 12/2/20 (C1 only) . Updated iterative drill-through procedures effective dates to 11/16/20 on EDGX and 11/17/20 on BZX, C1, and C2. |
| 2.7.19 | 11/17/20 | Corrected descriptions of MassCancelInst (7700) by removing note stating " If "F" specified and OnBehalfOfCompId (115 is provided but has a null value, the `Mass Cancel` or `Purge Orders` will be treated like "A" No filtering by EFID." |
| 2.7.20 | 12/17/20 | Added CrossType (549) value of `5` = Related Futures Cross to `New Order Cross Multileg` message (C1 Only) . Added TradeLiquidityIndicator , 2 nd character value of F=RFC (C1 Only) (effective 01/19/21). Added note to ClearingAccount (440) field indicating when Capacity (47) 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 ). |
| 2.7.21 | 01/14/21 | Clarified that invalid EFID values specified in OnBehalfOfCompId (115) will result in rejects of MassCancelInst (7700) or Purge Requests. |
| 2.7.22 | 02/03/21 | Updated effective date for changes to ClearingAccount (440) field indicating when Capacity (47) 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 03/01/21). |
| 2.7.23 | 02/10/21 | Added ‘Section 1.5.1 - Architecture’ to provide high level overview of protocol architecture and source IP blocking feature. Added new ‘Section 1.5.11 - Stale NBBO’ to describe system behavior when SIP NBBO is unavailable. Added "Forced Open Cancel Instruction" to FIX Port Attributes table (effective 3/12/21 for EDGX, 3/15/21 for BZX, C1, C2). |
| 2.7.24 | 02/22/21 | Added "EFID Filter for Purge Ports" to FIX Port Attributes table (effective 3/17/21). |
| 2.7.25 | 03/15/21 | Added value of `4`=AfterVolatilityCutoff to CxlRejReason (102) field on `Cancel Reject` message to reflect current system behavior. |
| 2.7.26 | 03/25/21 | 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.5.4 on cancellation of carried orders between trading sessions (effective 01/24/22 TBD 09/27/21 Q3 2021 ). Updated description of SessionEligibility message (effective 01/24/22 TBD 09/27/21 Q3 2021 ).Updated RiskReset on behavior between GTH and Curb session (effective 04/25/22 TBD 02/07/22 TBD 09/27/21 Q3 2021 ). FLEX symbol creation will be enabled during the Curb trading session (effective 04/25/22 TBD 02/07/22 TBD 09/27/21 Q3 2021 ). |
| 2.7.27 | 04/05/21 | Added note indicating Fat Finger checks are not applicable for any multi-class spread orders (effective 04/20/21). Fat Finger checks will remain applicable to SPX/SPXW orders. Added new ClosingPrice (22004) field to `Trade Cancel/Correct` (UCC) message (effective 05/06/21). Added note indicating the Delta (22023), ReferencePrice (22025) and ClosingPrice (22004) fields will be added to the `Trade Cancel/Correct` (UCC) message to provide additional FLEX DAC information (effective 05/06/21). |
| 2.7.28 | 04/14/21 | Corrected placement of Floor Routing Table in section 1.5.10. |
| 2.7.29 | 05/06/21 | Added `C`=Cboe Compression Service (CCS) to TradeLiquidityIndicator (9730) (C1 only) (Effective 08/12/21 07/06/21) |
| 2.7.30 | 05/13/21 | Updated Curb session effective date to 04/25/22 TBD 02/07/22 TBD 09/27/21. |
| 2.7.31 | 06/08/21 | Updated CumQty to include detail about C1 Floor Specific Handling. Removed FrequentTraderID (21097) from `Order Cancel/Replace Request` message as this functionality is not being used on the `Order Cancel/Replace Request` message. Added note to clarify that Order by Order FIX Drop ports do not support delivery of execution reports from Routing Brokers. Effective 08/25/21 08/09/21 , a maximum of 16 legs will be allowed on complex orders. |
| 2.7.32 | 06/15/21 | Updated effective date for extended GTH session to 11/21/21. Added note indicating the FeeCode (9882) field will be added to the `Trade Cancel/Correct` (UCC) message to provide additional FLEX DAC information (effective 07/14/21). |
| 2.7.33 | 06/18/21 | Updated Cboe Compression Service Multilateral Compression effective date to TBD 08/12/21. |
| 2.7.34 | 07/28/21 | Clarified description of FloorDestination (22100) for Execution Reports to indicate that 22100 is not provided for Partial or Filled executions. Updated Cboe Compression Service Multilateral Compression effective date to 08/12/21. |
| 2.7.35 | 08/02/21 | Updated effective date for 16 legs allowed on complex orders to 08/25/21. |
| 2.7.36 | 08/25/21 | Updated Curb session effective date to 04/25/22 TBD 02/07/22 TBD. |
| 2.7.37 | 09/09/21 | Added new value of "B" (RTH+Curb) for SessionEligibility message (effective 01/24/22 TBD). |
| 2.7.38 | 09/28/21 | Added new "I" value to MassCancelInst (7700) , indicating multi-unit cancel acknowledgments (effective 11/15/21). Added note indicating MatchingUnit (25017) will be returned in Execution Reports in response to Mass Cancel requests for multi-unit orders. Added note to the TradeDate (75) indicating this field in Execution Reports will be sent for fills and partial fills of orders (effective 11/21/21). |
| 2.7.39 | 10/21/21 | Added new subreason code `S`=Minimum size requirement not met (effective 11/28/21). |
| 2.7.40 | 11/04/21 | 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 . |
| 2.7.41 | 11/12/21 | Added new Held field (20012) to `New Order Single`, `New Order Multileg` , and `Execution Report` messages (effective 12/12/21) (C1 Only). |
| 2.7.42 | 12/03/21 | Updated description of Held field (20012) to indicate default value of ‘N’ applies when an order is directed to a Non-PAR official (effective 12/12/21) (C1 Only). |
| 2.7.43 | 12/10/21 | Added new ‘Send Floor Trade Time’ FIX Drop port attribute (effective 12/20/21) (C1 Only). |
| 2.7.44 | 12/22/21 | Added SenderLocationID field to Table 4.1 "Standard Message Header." Updated Logical Port Request form link. |
| 2.7.45 | 01/13/22 | Updated US Holiday Trading Hours graphic. Added a new MatchingUnit field to Purge Request messages (effective 02/11/22 for EDGX and 02/14/22 for C1, C2, and BZX). Updated Purge Request section indicating that CustomGroupID (7699) or EFID ( OnBehalfOfCompId (115)) purges with no RiskRoot (55) may be directed to a specific matching unit using the MatchingUnit (25017) optional field (effective 02/11/22 for EDGX and 02/14/22 for C1, C2, and BZX). |
| 2.7.46 | 01/21/22 | 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). |
| 2.7.47 | 02/01/22 | Updated Curb session effective date to 04/25/22 TBD. |
| 2.7.48 | 02/22/22 | Added a new section 1.5.6.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. |
| 2.7.49 | 03/14/22 | Changed effective date for updated Stop/Stop Limit Drill-Through Handling to TBD. Added FLEX Micro OSI format (effective 06/27/22). |
| 2.7.50 | 04/04/22 | Updated Curb session effective date to 04/25/22. Updated Cliquet settlement types description in section 1.5.9. |
| 2.7.51 | 06/13/22 | ExecBroker and ContraBroker will not be deprecated at a future date. Added PriceType (423) field to `Security Definition Request` messages to support FLEX instrument creation (effective 07/18/22). |
| 2.7.52 | 08/05/22 | Added new ‘Y’ value for PossDupFlag (43), indicating a message resend and should be used during FIX Replay. Noted in section 3.5 that Cboe will reject all orders received during FIX replay containing PossDupFlag =‘Y’. Updated FLEX Percentage Trade Restatements (C1 only) to include revised FLEX Percentage and FLEX DAC trades (effective 08/12/22). |
| 2.7.53 | 11/07/22 | The maximum allowed message rate is 1 msg/sec for test products. Added XSP to GTH and Curb sessions (effective 12/11/22). Updated OrdType (40) = 1 (Market) to indicate market and stop orders are not supported during GTH or Curb sessions. |
| 2.7.54 | 11/30/22 | FLEX DAC will support trading in single-name equity options (C1 only) (effective 12/19/22). Stop/Stop Limit orders will only elect based off of RTH quotes and trades (effective 12/18/22). |
| 2.7.55 | 01/24/23 | Updated Architecture and Message in Flight Settings section (BZX only) (effective 03/24/23). |
| 2.7.56 | 02/27/23 | Updated OpenClose (77) 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 (564) and LegPositionEffects (22019) 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` . |
| 2.7.57 | 03/01/23 | Formatting updates. |
| 2.7.58 | 03/29/23 | 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. |
| 2.7.59 | 04/17/23 | 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). |
| 2.7.60 | 06/13/23 | Updated sections 1.5.6.2 and 1.5.6.3 to include drill-through handling enhancements (effective 08/07/23 07/17/23 on C1, and 08/25/23 TBD on EDGX, C2 and BZX). Added FloorTradeTime (5179) to Execution Report (C1 only) . Updated ‘Send Floor Trade Time’ FIX Drop port attribute description (C1 only) . |
| 2.7.61 | 07/20/23 | Updated OpenClose (77) 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 (564) and LegPositionEffects (22019) 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` . Updated priority treatment of no-change quotes, 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). |
| 2.7.62 | 07/28/23 | Added new ExDestination (100) value of ‘M’ (MEMX) and new ContraBroker (375) value of ‘MEMX’ (effective 08/07/23). Updated effective dates for modifications to quotes or orders resulting in the same time priority behavior (effective 10/25/23 on C2, and 10/30/23 on BZX, C1, and EDGX). |
| 2.7.63 | 07/31/23 | Added two new Lead Characters ‘3’ and ‘4’ to support new cash-settled FLEX ETF options (effective 08/01/23). |
| 2.7.64 | 08/04/23 | Added CorrectedStrikePrice (25018) and updated description of StrikePrice (202) to indicate this will be the original strike price when an underlying index value change occurs after the FLEX percentage trade restatement time (C1 only) (effective 09/11/23). Updated effective dates for drill-through handling enhancements on C1, and updated drill-through parameter ranges (effective 08/07/23). Updated Purge Request to indicate MassCancelInst (7700) must be populated and OnBehalfOfCompId (115) is only required if a list of configured/allowed EFIDs has not been configured on the session. |
| 2.7.65 | 08/15/23 | Updated effective date for drill-through handling enhancements on C2, BZX, and EDGX (effective 08/25/23). |
| 2.7.66 | 08/29/23 | Updated NoLegs `New Order Multileg`, `New Order Cross Multileg`, and `Security Definition Request` messages to indicate that the number of allowable legs will be increased from 16 to 100 on non-FLEX 'Floor-Routed' orders (C1 only) (effective 09/25/23). |
| 2.7.67 | 10/30/23 | Updated the identical Purge message definition to include MatchingUnit (25017) (effective 11/13/23). |
| 2.7.68 | 11/07/23 | Added ClearingOptionalData (9324) to the `Trade Cancel/Correct` message. Added ClearingOptionalData (9324) to the `Trade Cancel/Correct FIX Drop Clearing Edit` message (effective 11/13/23). |
| 2.7.69 | 12/18/23 | Updated description of FrequentTraderID to "Six alphanumeric characters or less (0-9, A-Z, or a-z)". Updated TradeTime (5179) to FloorTradeTime (5179). Updated FloorTradeTime (5179) and ‘Send Floor Trade Time’ FIX Drop port attribute description (C1 only) (effective 01/16/24). |
| 2.7.70 | 01/10/24 | Added FloorTradeTime (5179) (C1 only) to the `Trade Cancel/Correct` message. Clarified that the "Default EquityPartyID" port attribute is applicable to C1 and EDGX only. Added new "Default EquityExDestination " port attribute (effective TBD 03/11/24 ). Effective TBD 03/11/24 , equity legs will be allowed on FLEX orders. FLEX orders will allow up to 99 options legs and one equity leg while FLEX DAC orders will allow up to 98 options legs and one equity leg. |
| 2.7.71 | 01/23/24 | Updated description of LegDelta (22024) to clarify valid values for call legs and put legs. |
| 2.7.72 | 02/02/24 | Updated section 1.5 to include latency expectations as well as Members/TPH's responsibility to monitor the status of the messages they send to the exchange. |
| 2.7.73 | 02/12/24 | Added EquityExDestination (22016) (C1 and EDGX only) to Execution Report (effective 04/29/24 03/11/24). |
| 2.7.74 | 03/08/24 | 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 equity legs allowed on FLEX orders and EquityExDestination (22016) (C1 and EDGX only) effective date to 04/29/24. |
| 2.7.75 | 04/15/24 | Added new "Send OccId " FIX Drop port attribute (effective 04/22/24). Clarified Account (1) accepts all characters in ASCII range 33-126. Noted a maximum of 1,295 `Cancel/Replace` requests may be made to a single order each trading day. |
| 2.7.76 | 06/21/24 | Added ExDestination (100) = `w` (MIAX Sapphire) and ContraBroker (375) = `SPHR`. |
| 2.7.77 | 07/01/24 | Added CrossOnBehalfOfID (FIX Tag 22028) to `New Order Cross Multileg` and `New Order Multileg` (C1 and EDGX only) (effective 07/22/24). |
| 2.7.78 | 07/22/24 | Added new Section 1.2 - Certification Requirement. Effective 08/26/24 , GTH will be extended until 9:25 a.m. ET (C1 only) . |
| 2.7.79 | 8/28/24 | Updated drill-through amounts (effective 09/16/24). |
| 2.7.80 | 09/03/24 | Removed pending drill-through changes. |
| 2.7.81 | 12/26/24 | Corrected typo in OrdType and TimeInForce descriptions. |
| 2.7.82 | 01/02/25 | Clarified equity single leg options are only permitted to trade within the last 45 minutes of RTH in FLEX Delta Adjusted At Close (C1 Only) . Corrected typos in CrossType and EquityLegShortSell descriptions. |
| 2.7.83 | 01/15/25 | Updated with Cboe Titanium branding. |
| 2.7.84 | 01/27/25 | 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 (9040) options '3' and '4'. AutoMatchPrice (9044) will be required if AutoMatch is set to '2' or '4'. (C1 and EDGX only) |
| 2.7.85 | 03/18/25 | Removed note that Market orders imply TimeInForce of IOC. 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) ). |
| 2.7.86 | 03/28/25 | Updated Wide Market Protection effective date to TBD. |
| 2.7.87 | 04/24/25 | Added Microsecond Timestamp Granularity to FIX Drop Port Attributes . Added notes regarding Complex FLEX orders to Flex Order Entry and FLEX Delta Adjusted At Close (effective 06/23/25). |
| 2.7.88 | 07/08/25 | Added "Send Nanoseconds" port attribute (effective 09/08/25). Updated OrigTime and TransactTime fields to indicate that GMT date-time of the original trade will be available in nanoseconds (effective 09/08/25). |
| 2.7.89 | 07/24/25 | Specification updated to indicate complex functionality is available for all Cboe Options Exchanges, with BZX Options complex functionality effective on 10/13/25. |
| 2.7.90 | 07/25/25 | Updated Cowen to TD Securities (USA) LLC. |
| 2.7.91 | 08/04/25 | Updated description of PriceType to include `2` = (Default) Price per unit (contract) on `Floor Trade Confirmation Messages.` |
| 2.7.92 | 08/15/25 | Added "Send Nanoseconds" port attribute to FIX Drop Port Attributes (effective 09/08/25). |
| 2.7.93 | 08/20/25 | Updated Carried Order Restatements to indicate that GTC and GTD 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.` |
| 2.7.94 | 09/11/25 | Updated New Order Multileg Message Fields to include new StrategyID (C1 Only) values `F` = CompressionForum ,`B` = BoxSpread, and `A` = BoxSwap. |
| 2.7.95 | 10/03/25 | Removed Complex Order language from Drill-Through Protection for Simple Limit Orders . Clarified language in Market/Limit Order Drill-Through for Complex Orders . |
| 2.7.96 | 10/07/25 | In Trade Cancel/Correct Message Fields and Trade Cancel/Correct FIX Drop Clearing Edit Message FIelds , updated ExecID to append '.B' or '.S' when opted-in by customers, and updated ExecRefID to include the ExecID from the most recent trade correction, instead of the ExecID from the original execution (effective 11/06/25 on EDGX, and 11/10/25 on BZX, C1, and C2). In the Execution Report Message Fields , updated ExecRestatementReason to include `A` = Floor Trade Restatement (effective 11/06/25 on EDGX, and 11/10/25 on BZX, C1, and C2). Added Send Floor Trade Restatements to FIX Drop Port Attributes (effective 11/06/25 on EDGX, and 11/10/25 on BZX, C1, and C2). |
| 2.7.97 | 10/20/25 | 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". |
| 2.7.98 | 11/10/25 | Updated BeginSeqNo description from "auto-generated request ID" to "Sequence number of first message in range to be resent" in Resend Request messages. |
| 2.7.99 | 11/25/25 | Removed Stale NBBO from the Cboe Titanium U.S. Options FIX specification. |
| 2.8.0 | 12/08/25 | Added Wide Market Protection (C1 only) and updated Drill-Through Protection for Simple Orders (effective 12/15/25). |
| 2.8.1 | 01/12/26 | Updated Carried Order Restatements to explain restatements will be sent at the new order carry over time (effective 02/02/26). |
| 2.8.2 | 01/13/26 | Added StopPxType (FIX Tag 25026) to Execution Report Message Fields, StopPxType and StopPx (FIX Tag 99) to New Order Multileg Message Fields, and value '4' to OrdType (FIX Tag 40) in New Order Multileg Message Fields (effective TBD 05/18/26 TBD). |
| 2.8.3 | 01/20/26 | Updated tables in Exchange Default Fat Finger Limits to clarify relevant products. |
| 2.8.4 | 02/18/26 | Removed Equity/ETF rows 3 and 4 from FLEX Option Products . Updated Nasdaq BX to Nasdaq Texas. Clarified in Order by Order FIX Drop : rejects originating from a BOEv2 order entry session will be suppressed. |
| 2.8.5 | 02/27/26 | In Wide Market Protection, updated WMP Determinants table to include all proprietary index products (effective 03/09/26). |
| 2.8.6 | 03/27/26 | Removed MXEA/MXEF references. |
| 2.8.7 | 04/06/26 | Updated effective date to TBD 05/18/26: Added StopPxType (FIX Tag 25026) to Execution Report Message Fields, StopPxType and StopPx (FIX Tag 99) to New Order Multileg Message Fields, and value '4' to OrdType (FIX Tag 40) in New Order Multileg Message Fields. |
| 2.8.8 | 04/15/26 | Updated Flex Order Entry (C1 Only), Exchange Default Fat Finger Limits, Hours of Operation, and Holiday Sessions (C1 Only) 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). |
| 2.8.9 | 04/17/26 | Updated Order Cancel/Replace messages to indicate that Firms are advised to always send OnBehalfOf (115) on all `Cancel` /Replace requests as port level defaults are not honored on these messages. |
| 2.8.10 | 05/14/26 | Updated effective date to TBD: Added StopPxType (FIX Tag 25026) to Execution Report Message Fields, StopPxType and StopPx (FIX Tag 99) to New Order Multileg Message Fields, and value '4' to OrdType (FIX Tag 40) in New Order Multileg Message Fields. |
| 2.8.11 | 06/12/26 | Updated planned expansion of C1 trading hours for select equity options to 08/17/26. |
| 2.8.12 | 06/29/26 | Updated Order Cancel Message Request Fields to deprecate Lockout instruction on Mass Cancel messages (effective 08/24/26) |
| 2.8.13 | 06/30/26 | Updated RoutingInst (FIX Tag 9303) in New Order Single Message FIelds, indicating `S`=Expose order via Step-Up Mechanism (SUM) will be applicable to C2 effective 09/04/26. |
| 2.8.14 | 07/06/26 | Updated Account to clarify how the value is passed to clearing for both Cboe Clear U.S. and OCC. Updated ClearingAccount to indicate that when FIX Port Attribute "Reject Non-Market Maker With Clearing Account" is set to 'Yes' (C1 and C2 only) orders with OrderCapacity other than 'M' and 'N' with a specified value for ClearingAccount will be rejected. Updated ClearingOptionalData to indicate that FIX Port Attribute "Send ClearingOptionalData" set to 'Yes' is required for the value to be passed to clearing. Updated description of "Default Account" FIX Port Attribute. Updated "Send ClearingOptionalData" Port Attribute to indicate if set to 'Yes' the value of ClearingOptionalData specified on incoming orders will be passed to clearing. |
| 2.8.15 | 08/06/26 | Added ContraBroker values IEX and MXTO, and ExDestination values I and J for IEX Options and MX2 Options. |
| 2.8.16 | 08/10/26 | Updated planned expansion of C1 trading hours for select equity options to TBD. |
| 2.8.17 | 08/17/26 | 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. |
