US Options Multicast Top Specification. Version 1.2.2

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "US Options Multicast Top Specification. Version 1.2.2"

Transcription

1 US Options Multicast Top Specification Version December 21, 2018

2 Contents 1 Introduction Overview Feed Connectivity Requirements Symbol Ranges, Units, and Sequence Numbers Options Specific Symbol Processing Gap Request Proxy and Message Retransmission Spin Servers Protocol Message Format Data Types Message Framing Sequenced Unit Header Heartbeat Messages Top Messages Time Unit Clear Symbol Mapping Refresh and Spin Messages Market Snapshot (BZX, C2 and EDGX Only) Market Update Messages Single Side Update Two Side Update Message Top Trade Message Options Auction Update (C1 Only) Auction Summary (C1 Only) Trading Status Width Update (C1 Only) End of Session Gap Request Proxy Messages Login Login Response Gap Request Gap Response Spin Messages Login All rights reserved Page 2

3 5.2 Login Response Spin Image Available Spin Request Spin Response Spin Finished Instrument Definition Request (C1 Only) Instrument Definition Response (C1 Only) Instrument Definition Finished (C1 Only) Spin Server Usage Example Message Types Gap Request Proxy Messages Spin Server Messages Top Messages Example Messages Login Message Login Response Message Gap Request Message Gap Response Message Spin Image Available Message Spin Request Message Spin Response Message Spin Finished Message Instrument Definition Request (C1 Only) Instrument Definition Response (C1 Only) Instrument Definition Finished (C1 Only) Time Message Unit Clear Market Snapshot (Short) Market Snapshot (Long) Single Side Update (Short) Single Side Update Expanded (Short) (C1 Only) Single Side Update (Long) Depricated with Feature Pack Single Side Update Expanded (Long) (C1 Only) Two Side Update (Short) Two Side Update Expanded (Short) (C1 Only) Two Side Update (Long) Two Side Update Expanded (Long) (C1 Only) Top Trade Top Trade (Condition = Trade Break) Options Auction Update Message (C1 Only) All rights reserved Page 3

4 7.27 Auction Summary Message (C1 Only) Symbol Mapping Message Symbol Mapping Message (C1 Only) Trading Status Message Trading Status Message (C1 Only) Width Update Message (C1 Only) Sequenced Unit Header with 2 Messages Multicast Configuration Production Environment Configuration Limitations/Configurations Unit/Product Distribution BZX Options Multicast Routing Parameters C1 Options Multicast Routing Parameters C2 Options Multicast Routing Parameters EDGX Options Multicast Routing Parameters BZX Options Address/Unit Distribution C1 Options Address/Unit Distribution C2 Options Address/Unit Distribution EDGX Options Address/Unit Distribution Certification Environment Configuration Unit/Symbol Distribution Certification Multicast Routing Parameters BZX Options Address/Unit Distribution C1 Options Address/Unit Distribution C2 Options Address/Unit Distribution EDGX Options Address/Unit Distribution Connectivity Supported Extranet Carriers Bandwidth Recommendation References Support All rights reserved Page 4

5 1 Introduction 1.1 Overview Note that this specification will be the standard Multicast Top specification to be used for the BZX Options, Cboe Options ( C1 ), C2 Options and EDGX Options Exchange platforms. This specification is for the Simple book only, refer to the US Options Complex Multicast Top Specification for Complex book information. Options participants may use the Multicast Top protocol to receive real-time top of book quotations direct from each exchange. Market data received through Multicast Top is less timely than receiving the same data from the Multicast PITCH Depth of Book feed. The Top protocol offers a significant reduction in the number of events and number of bytes of application data sent, compared to the US Options Multicast PITCH protocol. The quotations received via Multicast Top provide an aggregated size and do not indicate the size or number of individual orders at the best bid or ask. The Multicast Top protocol also provides last trade price and size and cumulative volume data. Complete depth of book market data can be received via the US Options Multicast PITCH protocol. Top cannot be used to enter orders. For order entry, refer to the appropriate US Options FIX or BOE Specification. All versions of the Multicast Top feed will be Gig-shaped (maximum 1 Gb/s) and will be available from one or both of Cboe s datacenters. Participants may choose to take one or more of the following Multicast Top feeds depending on their location and connectivity to Cboe. Multicast Top Feed Descriptions: Exchange Shaping Served From Data Center (Primary/Secondary) Multicast Feed ID BZX Options Gig Primary OAT BZX Options Gig Primary OBT BZX Options Gig Secondary OET C1 Options Gig Primary CAT C1 Options Gig Primary CBT C1 Options Gig Secondary CET C2 Options Gig Primary WAT C2 Options Gig Primary WBT C2 Options Gig Secondary WET EDGX Options Gig Primary EAT EDGX Options Gig Primary EBT EDGX Options Gig Secondary EET All rights reserved Page 5

6 1.2 Feed Connectivity Requirements US Options Multicast Top Gig-Shaped feeds are available to participants who meet the minimum bandwidth requirements to Cboe via cross-connect, dedicated circuit, or a supported carrier. Participants with sufficient connectivity may choose to take both the A and B feeds from Cboe s primary datacenter and arbitrate the feeds to recover lost data. Alternatively, participants may choose to arbitrate feeds from both datacenters. It should be noted that feeds from the secondary datacenter will have additional latency for those connected with Cboe in the primary datacenter due to proximity and business continuity processing. Multicast Top real-time events are delivered using a published range of multicast addresses divided by symbol range units. Dropped messages can be requested using a TCP/IP connection to one of Cboe s Multicast Top Gap Request Proxy ( GRP ) servers with replayed messages being delivered on a separate set of multicast ranges reserved for packet retransmission. Intraday, a spin of current top of book may be requested from a Spin Server. The following diagram is a logical representation Multicast Top feed message flow between Cboe and a participant feed handler that is listening to the A and B instances of two units: Feed Server Real-Time MC Feed Server Real-Time MC Gap Server Gap Response MC Gap Server Gap Response MC Spin Server TCP/IP Spin requests with open order responses Unit 1, Feed A Cboe Participant Receiving Host Spin Server TCP/IP Spin requests with open order responses Unit 1, Feed B Gap Response Proxy Feed A TCP/IP requests with ack/nack responses Gap Response Proxy Feed B TCP/IP requests with ack/nack responses All rights reserved Page 6

7 1.3 Symbol Ranges, Units, and Sequence Numbers Symbols will be separated into units and symbol distribution will not change intra-day. Cboe does, however, reserve the right to add multicast addresses or change the symbol distribution with 48 hours prior notice to participants. Care should be taken to ensure that address changes, address additions, and symbol distribution changes can be supported easily. Message sequence numbers are incremented by one for every sequenced message within a particular symbol unit. It is important to understand that one or more units will be delivered on a single multicast address. As with symbol ranges, unit distribution across multicast addresses will not change intra-day, but may change after notice has been given. Symbol distribution across units as well as unit distribution across multicast addresses are identical for real-time and gap response multicast addresses. 1.4 Options Specific Symbol Processing Cboe has implemented a symbol mapping mechanism (Symbol Mapping message) for the Multicast Top feeds, which maps each specific simple options contract to a six character, ASCII Symbol. This symbol mapping significantly reduces the size of the Multicast Top feed and allows participants to use the same symbol handling mechanisms for the Cboe operated equity, options, and futures exchanges. This symbol mapping is the same as the US Options Multicast PITCH feed. Mapping occurs on a continuous basis on each unit s multicast feed. Symbol Mapping messages will be un-sequenced and are sent from pre-market through the end of trading. The rate is variable and will be adjusted as bandwidth allows. Once the same contract has been seen twice, the user can be certain the full loop has been observed. In addition to the symbol mapping events available on the Multicast Top feed, a downloadable file with current mappings is available via the Cboe website. 1.5 Gap Request Proxy and Message Retransmission Requesting delivery of missed sequenced data is achieved by establishing a TCP connection to a Gap Request Proxy ( GRP ) port. This GRP port is specific to Multicast Top and is NOT shared with the Multicast PITCH GRP port. Participants who do not wish to request missed messages do not need to connect to a GRP port for any reason or listen to the multicast addresses reserved for message retransmission. Participants choosing to request missed data will need to connect to their assigned GRP port, log in, and request gap ranges as necessary. All gap requests will be responded to with a Gap Response message. A Gap Response Status code of A ccepted signals that the replayed messages will be delivered via the appropriate gap response multicast address. Any other Gap Response Status code will indicate the reason that the request cannot be serviced. All rights reserved Page 7

8 Gap requests are limited in message count, frequency, and age by the GRP. Gap requests will only be serviced if they are within a defined sequence range of the current multicast sequence number for the requested unit. Participants will receive a total daily allowance of gap requested messages. In addition, each participant is given renewable one second and one minute gap request limits. If more than one gap request is received for a particular unit/sequence/count combination within a short timeframe, all requests will receive a successful Gap Response message from the GRP, but only a single replayed message will be sent on the gap response multicast address. If overlapping gap requests are received within a short period of time, the gap server will only send the union of the sequence ranges across grouped gap requests. Participants will receive gap responses for their requested unit/sequence/count, but receivers should be prepared for the gap responses to be delivered via multicast in non-contiguous blocks. Gap acknowledgements or rejects will be delivered to users for every gap request received by the GRP. Users should be prepared to see replayed multicast data before or after the receipt of the gap response acknowledgement from the GRP. 1.6 Spin Servers A Spin Server is available for each unit. The server allows participants to connect via TCP and receive a spin of the inside book and symbols with limited trading conditions on that unit. By using the spin, a participant can get the current book quickly in the middle of the trading session without worry of gap request limits. The Spin Server for each unit is assigned its own address and/or TCP port. Upon successful login and periodically thereafter, a Spin Image Available message is sent which contains a sequence number indicating the most recent message applied to the book. Using a Spin Request message, a participant may request a spin for the orders up to a sequence number noted within one of the last ten Spin Image Available messages distributed. If the Spin Request submitted does not present a sequence number that matches one of the last ten Spin Image Available messages distributed, the spin will return orders up to the next closest sequence number reported through a Spin Image Available message that is greater than the sequence number requested. In the case a participant sends a sequence number in a Spin Request that is higher than the sequence number reported by the most recent Spin Image Available message, the next spin image to be generated will be returned when it is available. If the requested sequence number is still higher at that time, an O (Out of Range) error will be generated. A spin consists only of Market Snapshot and Time messages for symbols that have had orders that day or had a limited trading state (BZX, EDGX and C2 Only) Deprecated with Feature Pack 4. A spin for C1 Only (Effective in BZX, C2, and EDGX with Feature Pack 4) will consist of Two Side Update, One Side Update, TOP Trade, Trading Status and Time messages. While receiving the spin, All rights reserved Page 8

9 the participant must buffer multicast messages received. If the Spin Image Available message sequence number is the participant s reference point, multicast messages with larger sequence numbers should be buffered. If a non-spin Image Available sequence number is the participant s reference point which they send in their Spin Request, they should buffer from that point on, but note that within the spin they may receive sequence numbers beyond that point which they may disregard. When a Spin Finished message is received, the buffered messages must be applied to spun copy of the book to bring it current. Customers can also use the Spin Server to request a spin of all Symbol Mapping messages by sending an Instrument Definition Request (C1 Only) Effective in BZX, C2, and EDGX with Feature Pack 4. The Spin Server can only process one spin at a time. Customers will need to wait for a Spin Finished or Instrument Definition Finished message before submitting another request. Section 5 shows an example flow of messages between a participant and Cboe s Multicast Top feed and Spin Server. All rights reserved Page 9

10 2 Protocol Cboe users may use the Top protocol over multicast to receive real-time top of book quotations and execution information direct from Cboe. 2.1 Message Format The messages that make up the Top protocol are delivered using Sequenced Unit Header which handles sequencing and delivery integrity. All messages delivered via multicast as well as to/from the Gap Request Proxy ( GRP ) or Spin Server will use the Sequenced Unit Header for handling message integrity. All UDP delivered events will be self-contained. Developers can assume that UDP delivered data will not cross frame boundaries and a single Ethernet frame will contain only one Sequenced Unit Header with associated data. TCP/IP delivered events from the GRP may cross frames as the data will be delivered as a stream of data with the TCP/IP stack controlling Ethernet framing. The Top data feed is comprised of a series of dynamic length sequenced messages. Each message begins with Length and Message Type fields. Cboe reserves the right to add message types and grow the length of any message without notice. Participants should develop their decoders to deal with unknown message types and messages that grow beyond the expected length. Messages will only be grown to add additional data to the end of a message. 2.2 Data Types The following field types are used within the Sequenced Unit Header, GRP messages, and Top. Alphanumeric fields are left justified ASCII fields and space padded on the right. Binary fields are unsigned and sized to Length bytes and ordered using Little Endian convention (least significant byte first). Signed Binary fields are signed and sized to Length bytes and ordered using Little Endian convention (least significant byte first). Binary Price fields are unsigned Little Endian encoded 8 byte binary fields with 4 implied decimal places (denominator = 10,000). Binary Short Price fields are unsigned Little Endian encoded 2 byte binary fields with 2 implied decimal places (denominator = 100). Binary Long Price fields are unsigned Little Endian encoded 8 byte binary fields with 4 implied decimal places (denominator = 10,000). All rights reserved Page 10

11 Bit Field fields are fixed width fields with each bit representing a Boolean flag (the 0 bit is the lowest significant bit; the 7 bit is the highest significant bit). Multiplier fields are unsigned Little Endian encoded 4 byte binary fields with 1 implied decimal place (denominator = 10). Printable ASCII fields are left justified ASCII fields that are space padded on the right that may include ASCII values in the range of 0x20 0x7e. Time Offset are 4 byte unsigned Little Endian values that represent the number of nanoseconds since the last Time message. 2.3 Message Framing Top of book update messages will be combined into single UDP frame where possible to decrease message overhead and total bandwidth. The count of messages in a UDP frame will be communicated using the Sequenced Unit Header. Framing will be determined by the server for each unit and site. The content of the multicast across feeds (e.g. A/B) will be identical, but framing will not be consistent across feeds. Receiving processes that receive and arbitrate multiple feeds cannot use frame level arbitration to fill gaps. 2.4 Sequenced Unit Header The Sequenced Unit Header is used for all Multicast Top messages as well as messages to and from the Gap Request Proxy ( GRP ) and Spin Servers. Sequenced and un-sequenced data may be delivered using the Sequenced Unit Header. Unsequenced headers will have a 0 value for the Hdr Sequence field and potentially for the Hdr Unit field. All messages sent to and from the GRP and Spin Server are un-sequenced while multicast may contain both sequenced and un-sequenced messages. Sequenced messages have implied sequences with the first message having the sequence number contained in the header. Each subsequent message will have an implied sequence one greater than the previous message up to a maximum of count messages. Multiple messages can follow a Sequenced Unit Header, but a combination of sequenced and un-sequenced messages cannot be sent within one header. The sequence number for the first message in the next frame can be calculated by adding the Hdr Count field to the Hdr Sequence. This technique will work for sequenced messages and Heartbeats. Sequenced Unit Header Field Offset Length Value/Type Description Hdr Length 0 2 Binary Length of entire block of messages. Includes this header and Hdr Count messages to follow. All rights reserved Page 11

12 Hdr Count 2 1 Binary Number of messages to follow this header. Hdr Unit 3 1 Binary Unit that applies to messages included in this header. Hdr Sequence 4 4 Binary Sequence of first message to follow this header. Total Length = 8 bytes 2.5 Heartbeat Messages The Sequenced Unit Header with a count field set to 0 will be used for Heartbeat messages. During trading hours Heartbeat messages will be sent from the GRP, Spin Server, and all multicast addresses if no data has been delivered within one second. Heartbeat messages never increment the sequence number for a unit, but can be used to detect gaps on the real-time multicast channels during low update rate periods. Heartbeats on the real-time multicast addresses during trading hours will have an Hdr Sequence value equal to the sequence of the next sequenced message to be sent for the unit. Heartbeats on gap multicast addresses will always have the Hdr Sequence field set to 0. All Heartbeat messages sent to and from the GRP and Spin Server are considered un-sequenced and should have sequence and unit fields set to 0. Outside of trading hours Cboe sends Heartbeat messages on all real-time and gap channels with a sequence of 0 to help users validate multicast connectivity. Heartbeat messages might not be sent outside of normal trading hours. Cboe expects Heartbeat messages to be sent to the GRP on live connections no less than every 5 seconds. Failure to receive two consecutive Heartbeat messages will result in the GRP or Spin Server terminating the client connection. All rights reserved Page 12

13 3 Top Messages With the exception of Time messages, each Top message reflects the update of the top of book or execution of an order in the system. 3.1 Time A Time message is sent whenever the source time for a unit passes over a second boundary. All subsequent time offset fields for the same unit will use the new Time value as the base until another Time message is received for the same unit. The Time field is the number of seconds relative to midnight Eastern Time, which is provided in the Time Reference message. Time Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0x20 Time Message Time 2 4 Binary Number of whole seconds from midnight Eastern Time. Total Length = 6 bytes 3.2 Unit Clear The Unit Clear message instructs feed recipients to clear all market snapshots for the book in the unit specified in the Sequenced Unit Header. This message will be sent at startup each day. It would also be distributed in certain recovery events such as a data center fail-over. Unit Clear Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0x97 Unit Clear Message Time Offset 2 4 Binary Nanosecond offset from last unit timestamp. Total Length = 6 bytes 3.3 Symbol Mapping The Symbol Mapping message are sent as an unsequenced message. One unsequenced Symbol Mapping message for each Symbol are sent in a continuous loop as bandwidth allows. Members who consume the 5G-Shaped Multicast PITCH feeds will be able to receive the full list of symbols in approximately 5 minutes, and will allow for optimal distribution in situations where market data is susceptible to throttling as a result of high message burst rates. All 1 Gigabit-Shaped ( 1G- Shaped ) feeds will continue to complete the full loop of Symbol Mapping messages in approximately 30 minutes. All rights reserved Page 13

14 Symbol Mapping Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0x2E Symbol Mapping Message Feed Symbol 2 6 Printable Symbol right padded with spaces. ASCII OSI Symbol 8 21 Printable OSI Symbol ASCII Symbol Condition 29 1 Alphanumeric N = Normal C = Closing Only Underlying C1 Only Effective in BZX, C2, and EDGX with Feature Pack 4 Total Length = 30 bytes or 38 bytes for C1 3.4 Refresh and Spin Messages 30 8 Alphanumeric Symbol of underlying equity right padded with spaces Market Snapshot (BZX, C2 and EDGX Only) Deprecated with Feature Pack 4 A Market Snapshot message provides a snapshot of the price and size for the bid and ask, last trade price, total number of contracts traded, and the current trading status of a single symbol. The Market Snapshot message will be included during a Spin for all symbols traded so far this trading session. The Unit Timestamp field is provided because the timestamp for a Market Snapshot is the last time an event occurred on that Symbol. The Market Snapshot message comes in two variants: Market Snapshot (Long) and Market Snapshot (Short). The Market Snapshot (Short) is used whenever possible, but the Market Snapshot (Long) version is used if any of the Price fields cannot be represented by a Binary Short Price ($0.00 to $655.36) or any of the Quantity fields cannot be represented by an unsigned 16-bit value (65536). Market Snapshot (Short) Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0xB2 Market Snapshot (Short) Message Time Offset 2 4 Binary Nanosecond offset from Unit Timestamp in this message. Symbol 6 6 Printable Symbol right padded with spaces. ASCII Unit Timestamp 12 4 Binary Last unit timestamp expressed as number of whole seconds since the Epoch (Midnight, January 1, 1970 UTC). All rights reserved Page 14

15 Bid Price 16 2 Binary Short Bid price Price Bid Quantity 18 2 Binary Number of contracts on the bid side of the inside book (a zero value denotes there is no Bid). Ask Price 20 2 Binary Short Ask price Price Ask Quantity 22 2 Binary Number of contracts on the ask side of the inside book (a zero value denotes there is no Ask). Last Trade Price 24 2 Binary Short Price of last execution Price Last Trade Size 26 2 Binary Number of contracts traded on the last trade (if this value is 0 the Last Trade Price is invalid). Last Trade Condition 28 1 Alphanumeric Trade Condition for Last Trade (Space): Normal Trade S: Spread Trade X: Trade Break Total Volume 29 4 Binary Total number of contracts traded on the current trading session. Trading Status 33 1 Alphanumeric See Trading Status field of Trading Status message. Reserved 34 3 Alphanumeric Reserved for use in other markets. Bit Fields 37 1 Bit Field Customer bits set on BZX and EDGX only. Will always be zero for C2. Total Length = 38 bytes Bit 0: Reserved Bit 1: If set, bid has customer orders Bit 2: If set, ask has customer orders Bits Reserved Market Snapshot (Long) Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0xB3 Market Snapshot (Long) Message Time Offset 2 4 Binary Nanosecond offset from Unit Timestamp in this message. Symbol 6 6 Printable Symbol right padded with spaces. ASCII Unit Timestamp 12 4 Binary Last unit timestamp expressed as number of whole seconds since the Epoch (Midnight, January 1, 1970 UTC). Bid Price 16 8 Binary Price Bid price All rights reserved Page 15

16 Bid Quantity 24 4 Binary Number of contracts on the bid side of the inside book (a zero value denotes there is no Bid). Ask Price 28 8 Binary Price Ask price Ask Quantity 36 4 Binary Number of contracts on the ask side of the inside book (a zero value denotes there is no Ask). Last Trade Price 40 8 Binary Price Price of last execution Last Trade Size 48 4 Binary Number of contracts traded on the last trade (if this value is 0 the Last Trade Price is invalid). Last Trade Condition 52 1 Alphanumeric Trade Condition for Last Trade (Space): Normal Trade S: Spread Trade X: Trade Break Total Volume 53 4 Binary Total number of contracts traded on the current trading session. Trading Status 57 1 Alphanumeric See Trading Status field of Trading Status message. Reserved 58 3 Alphanumeric Reserved for use in other markets. Bit Fields 61 1 Bit Field Customer bits set on BZX and EDGX only. Will always be zero for C2. Total Length = 62 bytes 3.5 Market Update Messages Bit 0: Reserved Bit 1: If set, bid has customer orders Bit 2: If set, ask has customer orders Bits Reserved Market Update messages reflect real-time events to the current state of the market. These messages are always sequenced and may be recovered via the Gap Request Proxy ( GRP ) Single Side Update Single Side Update messages provide an updated price and size for a single side of a Symbol. The side is denoted by the Side field. One Single Side Update message may reflect one or more updates to the inside book that were processed at the same time, but will only be done so in a way that can be arbitrated between A/B feeds. Single Side Update messages come in four variants: Single Side Update (Short), Single Side Update Expanded (Short), Single Side Update (Long) and Single Side Update Expanded (Long). The Single Side Update (Short) message is used whenever possible, but the Single Side Update (Long) message is used whenever the Price cannot be represented by a Binary Short Price or the Quantity cannot be represented by an unsigned All rights reserved Page 16

17 16-bit integer. For C1, only the Expanded versions of the Single Side Update message will be used. Only the Customer bit in Bit Fields matching the Side field is valid. For example, if Side is B (bid), then only Bit 1 is valid. The value of Bit 2 may not be used (regardless of value). (BZX, C2, and EDGX Only) If any All or None size exists on both sides at a price level at or better than the firm quote, it will be represented by a separate message. If any Cabinet size exists, it will be represented in a separate message Single Side Update (Short) (BZX, C2 and EDGX Only) Deprecated with Feature Pack 4 Single Side Update (Short) Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0xB4 Single Side Update (Short) Message Time Offset 2 4 Binary Nanosecond offset from last unit timestamp. Symbol 6 6 Printable ASCII Symbol right padded with spaces. Side 12 1 Alphanumeric B = Bid Side S = Ask Side Price 13 2 Binary Short Price Price Quantity 15 2 Binary Number of contracts on the inside book (a zero value denotes there is no Bid/Ask). Bit Fields 17 1 Bit Field Customer bits set on BZX and EDGX only. Will always be zero for C2. Bit 0: Reserved Bit 1: If set, bid has customer orders (if Side = B) Bit 2: If set, ask has customer orders (if Side = S) Bits Reserved Total Length = 18 bytes Single Side Update Expanded (Short) (C1 Only) Effective in BZX, C2, and EDGX with Feature Pack 4 Single Side Update Expanded (Short) Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0xD4 Single Side Update Expanded (Short) Message Time Offset 2 4 Binary Nanosecond offset from last unit timestamp. Symbol 6 6 Printable ASCII Symbol right padded with spaces. Side 12 1 Alphanumeric B = Bid Side S = Ask Side All rights reserved Page 17

18 Bit Fields 13 1 Bit Field Bits Reserved Bit 3 - AON 0 = Price level is a firm quote 1 = Price Level is AON (All or None) Bit 4 - Cabinet Order 0 = Price level is a standard order 1 = Price Level is a Cabinet Order Bits Reserved Price 14 2 Binary Short Price Price Quantity 16 2 Binary Total number of contracts on the inside book (customer and non-customer). Customer Quantity Total Length = 20 bytes 18 2 Binary Number of customer contracts on the inside book. A zero value denotes that there are no customer contracts at the inside price Single Side Update (Long) (BZX, C2 and EDGX Only) Deprecated with Feature Pack 4 Single Side Update (Long) Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0xB5 Single Side Update (Long) Message Time Offset 2 4 Binary Nanosecond offset from last unit timestamp. Symbol 6 6 Printable ASCII Symbol right padded with spaces. Side 12 1 Alphanumeric B = Bid Side S = Ask Side Price 13 8 Binary Long Price Price Quantity 21 4 Binary Number of contracts on the inside book (a zero value denotes there is no Bid/Ask). Bit Fields 25 1 Bit Field Customer bits set on BZX and EDGX only. Will always be zero for C2. Bit 0: Reserved Bit 1: If set, bid has customer orders (if Side = B) Bit 2: If set, ask has customer orders (if Side = S) Bits Reserved Total Length = 26 bytes All rights reserved Page 18

19 Single Side Update Expanded (Long) (C1 Only) Effective in BZX, C2, and EDGX with Feature Pack 4 Single Side Update Expanded (Long) Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0xD5 Single Side Update Expanded(Long) Message Time Offset 2 4 Binary Nanosecond offset from last unit timestamp. Symbol 6 6 Printable ASCII Symbol right padded with spaces. Side 12 1 Alphanumeric B = Bid Side S = Ask Side Bit Fields 13 1 Bit Field Bits Reserved Bit 3 - AON 0 = Price level is a firm quote 1 = Price Level is AON (All or None) Bit 4 - Cabinet Order 0 = Price level is a standard order 1 = Price Level is a Cabinet Order Bits Reserved Price 14 8 Binary Long Price Price Quantity 22 4 Binary Total number of contracts on the inside book (customer and non-customer). Customer Quantity Total Length = 30 bytes 26 4 Binary Number of customer contracts on the inside book. A zero value denotes that there are no customer contracts at the inside price Two Side Update Message Two Side Update messages provide an updated price and size for both sides of a Symbol. One Two Side Update message may reflect one or more updates to the inside book that were processed at the same time, but will only be done so in a way that can be arbitrated between A/B feeds. Two Side Update messages come in four variants: Two Side Update (Long), Two Side Update Expanded (Long), Two Side Update (Short)and Two Side Update Expanded (Short). The Two Side Update (Short) message is used whenever possible, but the Two Side Update (Long) message is used whenever the Price cannot be represented by a Binary Short Price or the Quantity cannot be represented by an unsigned 16-bit integer. For C1, only the Expanded versions of the Two Side Update message will be used. If any All or None size exists on both sides at a price level at or better than the firm quote, it will be represented by a separate message. If any Cabinet size exists, it will be represented in a separate message. All rights reserved Page 19

20 Two Side Update (Short) (BZX, C2 and EDGX Only) Deprecated with Feature Pack 4 Two Side Update (Short) Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0xB6 Two Side Update (Short) Message Time Offset 2 4 Binary Nanosecond offset from Unit Timestamp in this message. Symbol 6 6 Printable ASCII Symbol right padded with spaces. Bid Price 12 2 Binary Short Price Bid price Bid Quantity 14 2 Binary Number of contracts on the bid side of the inside book (a zero value denotes there is no Bid). Ask Price 16 2 Binary Short Price Ask price Ask Quantity 18 2 Binary Number of contracts on the ask side of the inside book (a zero value denotes there is no Ask). Bit Fields 20 1 Bit Field Customer bits set on BZX and EDGX only. Will always be zero for C2. Bit 0: Reserved Bit 1: If set, bid has customer orders (if Side = B) Bit 2: If set, ask has customer orders (if Side = S) Bits Reserved Total Length = 21 bytes Two Side Update Expanded (Short) (C1 Only) Effective in BZX, C2, and EDGX with Feature Pack 4 Two Side Update Expanded (Short) Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0xD6 Two Side Update Expanded (Short) Message Time Offset 2 4 Binary Nanosecond offset from last unit timestamp. Symbol 6 6 Printable ASCII Symbol right padded with spaces. Bit Fields 12 1 Bit Field Bits Reserved Bit 3 - AON 0 = Price level is a firm quote 1 = Price Level is AON (All or None) Bit 4 - Cabinet Order 0 = Price level is a standard order 1 = Price Level is a Cabinet Order Bits Reserved Bid Price 13 2 Binary Short Price Bid Price All rights reserved Page 20

21 Bid Quantity 15 2 Binary Total number of contracts on the inside bid (customer and non-customer). A zero value indicates there is no bid. Bid Customer Quantity 17 2 Binary Number of customer contracts on the inside bid. A zero value denotes that there are no customer contracts at the inside price. Ask Price 19 2 Binary Short Price Ask Price Ask Quantity 21 2 Binary Total number of contracts on the inside ask (customer and non-customer). A zero value indicates there is no ask. Ask Customer Quantity Total Length = 25 bytes 23 2 Binary Number of customer contracts on the inside ask. A zero value denotes that there are no customer contracts at the inside price Two Side Update (Long) (BZX, C2 and EDGX Only) Deprecated with Feature Pack 4 Two Side Update (Long) Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0xB7 Two Side Update (Long) Message Time Offset 2 4 Binary Nanosecond offset from Unit Timestamp in this message. Symbol 6 6 Printable ASCII Symbol right padded with spaces. Bid Price 12 8 Binary Long Price Bid price Bid Quantity 20 4 Binary Number of contracts on the bid side of the inside book (a zero value denotes there is no Bid). Ask Price 24 8 Binary Long Price Ask price Ask Quantity 32 4 Binary Number of contracts on the ask side of the inside book (a zero value denotes there is no Ask). Bit Fields 36 1 Bit Field Customer bits set on BZX and EDGX only. Will always be zero for C2. Bit 0: Reserved Bit 1: If set, bid has customer orders (if Side = B) Bit 2: If set, ask has customer orders (if Side = S) Bits Reserved Total Length = 37 bytes All rights reserved Page 21

22 Two Side Update Expanded (Long) (C1 Only) Effective in BZX, C2, and EDGX with Feature Pack 4 Two Side Update Expanded (Long) Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0xD7 Two Side Update Expanded (Long) Message Time Offset 2 4 Binary Nanosecond offset from last unit timestamp. Symbol 6 6 Printable ASCII Symbol right padded with spaces. Bit Fields 12 1 Bit Field Bits Reserved Bit 3 - AON 0 = Price level is a firm quote 1 = Price Level is AON (All or None) Bit 4 - Cabinet Order 0 = Price level is a standard order 1 = Price Level is a Cabinet Order Bits Reserved Bid Price 13 8 Binary Long Price Bid Price Bid Quantity 21 4 Binary Total number of contracts on the inside bid (customer and non-customer). A zero value indicates there is no bid. Bid Customer Quantity 25 4 Binary Number of customer contracts on the inside bid. A zero value denotes that there are no customer contracts at the inside price. Ask Price 29 8 Binary Long Price Ask Price Ask Quantity 37 4 Binary Total number of contracts on the inside ask (customer and non-customer). A zero value indicates there is no ask. Ask Customer Quantity Total Length = 45 bytes Top Trade Message 41 4 Binary Number of customer contracts on the inside ask. A zero value denotes that there are no customer contracts at the inside price. The Top Trade message provides information about executions of orders on the book. Top Trade messages are necessary to calculate execution-based data. Top Trade messages do not alter the book. One or more Single Side Update or Two Side Update messages will follow a Top Trade message to reflect the updated book (for example, an aggressive order may take out one or more price levels and establish a new level on the opposite side). Any order may be executed in parts. A complete view of all executions can be built from all Top Trade messages. All rights reserved Page 22

23 The Top Trade message sends the trade price, trade quantity, execution id, and trade condition of a trade as well as the cumulative volume for the trading session. A Top Trade message will be sent for each execution, but not every Top Trade message indicates a trade. A Top Trade message can also be sent when an auction executes against a non-displayed order, such as a contra response. The Trade Condition value of X (Trade Break) is sent whenever an execution is broken. Trade breaks will contain the Symbol, Quantity, Price, and Execution Id of the original trade. The Total Volume field will be reduced by the number of shares reported in the Quantity field. Top Trade Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0xB8 Top Trade Message Time Offset 2 4 Binary Nanosecond offset from last unit timestamp. Symbol 6 6 Printable ASCII Symbol right padded with spaces. Quantity 12 4 Binary Incremental number of contracts executed or corrected (see Trade Condition). Price 16 8 Binary Long Price The execution price of the order. Execution Id 24 8 Binary Cboe generated day-unique execution identifier of this trade. Execution Id is also referenced in the Trade Break message. Total Volume 32 4 Binary Total number of contracts traded on the current trading session (may decrease if the Trade Condition field indicates a canceled trade). Trade Condition 36 1 Alphanumeric All values will be available on BZX, C2, and EDGX with the implementation of Feature Pack 4. (Space): Normal Trade O: Opening Trade (C1 Only) S: Spread Trade A: SPIM Trade (C1 Only) I: ISO Trade (C1 Only) C: Combo Trade (C1 Only) K: Cabinet Trade (C1 Only) X: Trade Break Total Length = 37 bytes All rights reserved Page 23

24 3.6 Options Auction Update (C1 Only) US Options Multicast Top Options Auction Update messages are used to disseminate price and size information during Opening and Re-Opening (halt) auctions. The Auction Update messages are sent every five seconds during an opening period. Refer to the Cboe Opening Process specification for more information. The Options Auction Update message has the following format: Options Auction Update Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0xD1 Options Auction Update Message Time offset 2 4 Binary Nanosecond offset from last unit timestamp. Symbol 6 8 Printable ASCII Symbol right padded with spaces. Auction Type 14 1 Alphanumeric G = GTH Opening O = RTH Opening H = Halt Re-Opening V = Volatility Opening Reference Price 15 8 Binary Long Collared Auction-Only Price Price Buy Contracts 23 4 Binary Cumulative Buy interest at the Reference Price. Sell Contracts 27 4 Binary Cumulative Sell interest at the Reference Price. Indicative Price 31 8 Binary Long Price Collared Volume Maximizing Imbalance Minimizing Price computed on combined Auction-Only and Continuous Book. Volume Maximizing Price computed on the Auction-Only Book. Auction Only Price 39 8 Binary Long Price Opening Condition 47 1 Alphanumeric O = Would open Q = Need quote to open B = Need more buyers S = Need more sellers Total Length = 48 bytes 3.7 Auction Summary (C1 Only) Auction Summary messages are used to disseminate the results of an auction. An Opening or Re- Opening Auction Summary message for each symbol is sent at the conclusion of its Opening or Re- Opening auction and represents Cboe opening price. The Auction Summary message has the following format: Auction Summary Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. All rights reserved Page 24

25 3.8 Trading Status US Options Multicast Top Message Type 1 1 0x96 Auction Summary Message Time offset 2 4 Binary Nanosecond offset from last unit timestamp. Symbol ID 6 8 Printable ASCII Symbol right padded with spaces. Auction Type 14 1 Alphanumeric G = GTH Opening O = RTH Opening H = Halt Re-Opening V = Volatility Opening Price 15 8 Binary Long Auction price. Price Quantity 23 4 Binary Cumulative number of contracts executed during the auction. Total Length = 27 bytes The Trading Status message is used to indicate the current trading status of an options contract. A Trading Status message will be sent whenever a security s trading status changes. The following summarizes the Trading Status values in the Cboe system: H = Halt state. Q = Queuing. Sent starting at 7:30AM ET once orders can be accepted for queuing in preparation for the market open. S = Suspended. Implied at system startup for all series. T = Trading. Sent when symbol is open for trading, sometime after 9:30AM ET. A Trading Status message will also be sent: For a Regulatory Halt Q ueuing Period in any symbol where the underlying has experienced a Regulatory Halt as well as the T rading resumption for the same instrument. In the event of an Exchange specific S uspension. Trading Status (BZX, C2 and EDGX) Deprecated with Feature Pack 4 Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0x31 Trading Status message Time Offset 2 4 Binary Nanosecond offset from last unit timestamp. Symbol 6 6 Printable ASCII Symbol right padded with spaces. Reserved 12 2 Alpha Reserved Trading Status 14 1 Alpha H = Halted Q = Queuing S = Exchange Specific Suspension T = Trading Reserved 15 3 Alphanumeric Reserved Total Length = 18 bytes All rights reserved Page 25

26 For C1 Options (Effective in BZX, C2, and EDGX with Feature Pack 4) the Trading Status field will be used to represent the status of the RTH Session (9:30am ET 4:15pm ET) and the GTH Trading Status field will be used to represent the status of the GTH Session (2am ET 9:30am ET). Trading Status (C1 Only) Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field Message Type 1 1 0x31 Trading Status message Time offset 2 4 Binary Nanosecond offset from last unit timestamp Symbol 6 6 Printable ASCII Symbol right padded with spaces. Reserved 12 2 Reserved Reserved Trading Status 14 1 Alpha H = Halted Q = Quote-Only R = Opening Rotation S = Exchange Specific Suspension T = Trading Reserved 15 1 Reserved Reserved GTH Trading Status 16 1 Alpha H = Halted Q = Quote-Only S = Exchange Specific Suspension T = Trading Reserved Alpha Reserved Total Length = 18 bytes 3.9 Width Update (C1 Only) The Width Update message is used to communicate opening quote width multiplier. This message will be sent at the beginning of the day for all underlyings and in the event that the exchange decides to change the quote width multiplier on a per underlying basis. For complete details on the opening collars see the Cboe Opening Process Specification. Width Update Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0xD2 Width Update Message Time Offset 2 4 Binary Nanosecond offset from last unit timestamp. Underlying 6 8 Printable ASCII Underlying right padded with spaces. Width Type 14 1 Alphanumeric R = Regular V = Volatility Multiplier 15 4 Multiplier Width multiplier Total Length = 19 bytes All rights reserved Page 26

27 3.10 End of Session The End of Session message is sent for each unit when the unit shuts down. No more sequenced messages will be delivered for this unit, but heartbeats from the unit may be received. End of Session Field Name Offset Length Type/(Value) Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0x2D End of Session Message Timestamp 2 4 Binary Nanosecond offset from last unit timestamp. Total Length = 6 bytes All rights reserved Page 27

28 4 Gap Request Proxy Messages US Options Multicast Top The following messages are used for initializing a TCP/IP connection to the Gap Request Proxy ( GRP ) and to request message retransmissions. Participants only need to implement the following messages if gap requests will be made. The following messages will not be delivered using multicast. 4.1 Login The Login message is the first message sent to the GRP by a user s process after the connection to the GRP is established. Failure to login before sending any other message type will result in the connection being dropped by the GRP. Login Field Offset Length Value/Type Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0x01 Login Message SessionSubId 2 4 Alphanumeric SessionSubId supplied by Cboe. Username 6 4 Alphanumeric Username supplied by Cboe. Filler 10 2 Alphanumeric (space filled) Password Alphanumeric Password supplied by Cboe. Total Length = 22 bytes 4.2 Login Response The Login Response message is sent by the GRP to a user s process in response to a Login message. The status field is used to reflect an accepted login or the reason the session was not accepted. If login fails, the connection will be dropped after the Login Response message is sent. Login Response Field Offset Length Value/Type Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0x02 Login Response Message Status 2 1 Alphanumeric Accepted or reason for reject. Total Length = 3 bytes Login Response - Status Codes A Login Accepted N Not authorized (Invalid Username/Password) B Session in use S Invalid Session All rights reserved Page 28

29 4.3 Gap Request The Gap Request message is used by a user s process to request retransmission of a sequenced message (or messages) by one of Cboe s gap servers. Gap Request Field Offset Length Value/Type Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0x03 Gap Request Message Unit 2 1 Binary Unit that the gap is requested for. Sequence 3 4 Binary Sequence of first message (lowest sequence in range). Count 7 2 Binary Count of messages requested. Total Length = 9 bytes 4.4 Gap Response The Gap Response message is sent by the GRP in response to a Gap Request message. The Unit and Sequence fields will match the values supplied in the Gap Request message. A Gap Response message, with a Status of Accepted or reason for failure, will be sent for each Gap Request message received by the GRP. Gap Response Field Offset Length Value/Type Description Length 0 1 Binary Length of this message including this field. Message Type 1 1 0x04 Gap Response Message Unit 2 1 Binary Unit the gap was requested for. Sequence 3 4 Binary Sequence of first message in request. Count 7 2 Binary Count of messages requested. Status 9 1 Alphanumeric Accepted or reason for reject*. Total Length = 10 bytes Gap Response - Status Codes A Accepted O Out of range (ahead of sequence or too far behind) D Daily gap request allocation exhausted M Minute gap request allocation exhausted S Second gap request allocation exhausted C Count request limit for one gap request exceeded I Invalid Unit specified in request U Unit is currently unavailable * - All non- A status codes should be interpreted as a reject. All rights reserved Page 29