QIX Programming Specification Version Updated May 14, 2018

Similar documents
POUCH Specification. Version 1.1.3

Chi-X Japan CHIXOE Interface Specification

Quote Using Orders (QUO) (Previously OTTO Version 1.4d)

SoupBinTCP for Nasdaq Nordic. Version August 21, 2015

VWAP Query Protocol 1.2 Specification

Version Updated: February 27, 2018

Japannext PTS OUCH Trading Specification for Equities

Omega SOUP Interface Specification Guide

ArcaTrade Specification for Bonds

US Equities TOP Specification. Version 1.3.1

NYSE BONDS DEPTH OF BOOK CLIENT SPECIFICATION

NYSE UGW Binary Gateway Specification

SPECIFICATION BIVA X-STREAM EXTERNAL OUCH SPECIFICATION

XDP OPTIONS CLIENT SPECIFICATION

US Options Complex Multicast TOP Specification

US Options Complex Multicast PITCH Specification

OPTIONS PRICE REPORTING AUTHORITY

US Options Complex Multicast TOP Specification

Version 1.3. December 15, TRACE SP CTCI ver 1.3.

US Equities/Options Multicast Depth of Book (PITCH) Specification

Cboe Futures Exchange Multicast Depth of Book (PITCH) Specification. Version 1.1.5

US Options Complex Multicast PITCH Specification

BYX Exchange US Equities BOE Specification. Version

XDP INTEGRATED FEED CLIENT SPECIFICATION

Cboe Futures Exchange Multicast Depth of Book (PITCH) Specification. Version

Specialized Quote Interface (SQF) VERSION 6.4N October 31, 2017

NFX GLIMPSE INTERFACE SPECIFICATIONS NFX GLIMPSE. Version 4.00

UTP Snap-Shot 1.0 Version 1.0 Published October 2018

OPTIONS PRICE REPORTING AUTHORITY

M I T 303 B I T - M I L L E N N I U M E X C H A N GE. MITCH Specification. Issue 6.7 October 2014

Japannext PTS GLIMPSE Market Data Specification for Equities

XDP INTEGRATED FEED CLIENT SPECIFICATION

PHLX FIX INET SPECIFICATIONS. VERSION 2.7.g DECEMBER 8, 2017

Computer to-computer Interface (CTCI) for Trade Reporting Programming Specifications. October, Version

Cboe Options Exchanges Binary Order Entry Specification. Version 2.5.3

XDP Trades Client Specification NYSE Trades NYSE Arca Trades NYSE Amex Trades

XDP TRADES CLIENT SPECIFICATION

TABLE OF CONTENTS. TRACE Treasury Securities CTCI Specification ver 1.4

Cboe Options Exchanges Binary Order Entry Specification. Version 2.7.2

FIX DROP (NOM & BX Options) 2.3.c Updated Jan 28, 2017

US Options Multicast Top Specification. Version 1.1.6

Interface Specifications HKEX Orion Central Gateway Platform. FIX Trading Protocol

FIRM FIX ENGINE SESSION AND APPLICATION MANUAL

US Options Multicast Top Specification. Version 1.2.2

Japannext PTS ITCH Market Data Specification for Equities

INET NORDIC PORT REQUEST FORM

KGI HK Mobile Trader (AAstocks) - iphone User Manual

Cboe US Equities Binary Order Entry Specification. Version

NFX MARKET DATA FEED INTERFACE SPECIFICATIONS. NFX Market Data Feed

TAQ XDP INTEGRATED, TRADES AND BBO FEED CLIENT SPECIFICATION

NYSE Arca Trades. Customer Interface Specifications. Version 2.4

Cboe Futures Exchange Multicast TOP Specification. Version 1.1.3

BSE Open Message Bus for Equity Trading. Manual

Cboe Options Exchanges Binary Order Entry Specification. Version 2.8.6

Johannesburg Stock Exchange

KGI HK SP Mobile User Manual

XDP TRADES FEED CLIENT SPECIFICATION

Market Maker Direct Specification for Options

MARKET FEED CM, FAO & CD TICK BY TICK FEED

XDP OPENBOOK AGGREGATED CLIENT SPECIFICATION

Turquoise. TQ401 - Level 2 MITCH UDP Market Data. Issue January 2018

MIT203 - BIT - MILLENNIUM EXCHANGE. Native Trading Gateway

Japannext PTS FIX Trading Specification for Bonds

London Stock Exchange

Japannext PTS FIX Drop Copy Specification for Equities

Turquoise Equities. TQ601 - Guide to Application Certification. Issue December 2017

XDP OPTIONS CLIENT SPECIFICATION

Cboe FX ECN ITCH Protocol-v1.68

XDP TRADES FEED CLIENT SPECIFICATION

ITCH PROTOCOL SPECIFICATION DOCUMENT MARKET DATA

Cboe FX ECN ITCH Protocol-v1.65

ITCH - Glimpse Message Specification

XDP COMMON CLIENT SPECIFICATION

XDP TRADES FEED CLIENT SPECIFICATION

Qurrex mathcing module. Specification.

NYSE Imbalances feed

XDP COMMON CLIENT SPECIFICATION

Japannext PTS FIX Drop Copy Specification for Equities

NYSE Real-Time Reference Prices

Johannesburg Stock Exchange

Derivatives Market Data Feed Specifications (DMDF-UDP)

FIX Trading Gateway (FIX 5.0)

Turquoise Equities Trading Gateway (NATIVE)

Cboe Europe Multicast PITCH Specification

Japannext PTS FIX Trading Specification for Equities

XDP COMMON CLIENT SPECIFICATION

Specialized Quote Interface (SQF) VERSION 8.1 JANUARY 9, 2017

BSE Open Message Bus for Equity, Equity Derivatives & Currency Derivatives segment Trading. Manual

Turquoise Equities. TQ201 - FIX 5.0 Trading Gateway. Issue September 2013

Cboe Europe Multicast PITCH Specification

Borsa Italiana. MIT502 - Guide to Application Certification MIT502 - Guide to Application Certification. Issue 7.2 August 2017

ArcaBook Multicast. for. Equities. Customer Interface Specifications. Version 2.0

NASDAQ NORDIC Genium INET Pre-trade Risk Management Service Guide 2.2

XDP TRADES FEED CLIENT SPECIFICATION

BATS Chi-X Europe Multicast PITCH Specification

NSEMD Feed Specification. Version: 6.0 Date: September 21, National Stock Exchange India Limited. All rights reserved.

Post Trade Gateway (FIX 5.0)

price API / FIX Protocol 4.4

ISE, GEMX, & MRX Depth of Market Feed Specification VERSION 1.01 JUNE 13, 2017

NASDAQ OMX COMMODITIES Genium INET Pre-trade Risk Management Service Guide 1.0

Transcription:

QIX Programming Specification Version 218-1 Updated May 14, 218

Page 2 Confidentiality/Disclaimer This DRAFT Specification is being forwarded to you strictly for informational purposes solely for the purpose of developing or operating systems for your use that interact with systems of The Stock Market, Inc. () and its affiliates (collectively, the Corporations). This specification is proprietary to. reserves the right to withdraw, modify, or replace the specification at any time, without notice. No obligation is made by regarding the level, scope, or timing of 's implementation of the functions or features discussed in this specification. The specification is "AS IS," "WITH ALL FAULTS" and makes no warranties, and disclaims all warranties, express, implied, or statutory related to the specifications. THE CORPORATIONS ARE NOT LIABLE FOR ANY INCOMPLETENESS OR INACCURACIES. THE CORPORATIONS ARE NOT LIABLE FOR ANY CONSEQUENTIAL, INCIDENTAL, OR INDIRECT DAMAGES RELATING TO THE SPECIFICATIONS OR THEIR USE. It is further agreed by you by using this specification, that you agree not to copy, reproduce, or permit access to the information contained in, the specification except to those with a need-to-know for the purpose noted above. Copyright 27, The Stock Market, Inc., as an unpublished work. All Rights Reserved. QIX Programming Specification 4/26/217

Page 3 Contents 1.1 Publication History... 85 1.2 Overview of Changes for Integration to a Single Book... Error! Bookmark not defined. 1.3 Customer Support Information... 84 1.4 Data Standards... 4 1.4.1 Alphabetic, Numeric, and Alphanumeric Fields... 4 1.4.2 Price Fields... Error! Bookmark not defined. 1.4.3 Symbology... 4 1.4.4 Server Tracking Format... 4 1.4.5 Time In Force... 4 1.5 Message Sequencing... 5 2 Network Configuration... 6 2.1 Configuration Requirements... 6 3 Session Protocol... 7 3.1 Session Connection... 7 3.2 QIX Logical Packets... 7 3.3 Session ID Format... 8 3.4 Session Messages... 8 3.4.1 Login Request... 8 3.4.2 Login Accepted... 11 3.4.3 Logout Request... 12 4 Application Protocol... 13 4.1 Market Center Query/Response Message Formats... 14 4.1.1 Order Cancel 481 Version... 15 4.1.2 Quote Update 484 Version... 17 4.1.3 Quote Update 484 Version 1 (INET-Native Only)... 22 4.1.4 Quote Update 484 Version 2 (INET-Native Only)... 27 4.1.5 Host Settings 4824 Version... 32 4.1.6 Order Cancel/Replace 4833 Version 1... 36 4.1.7 Order Entry 4838 Version 1... 4 4.1.8 Order Modify 4839 Version (INET-Native Only)... 48 4.1.9 Message Gap Detect Reject 9996 Version... 51 4.1.1 Reset Client Sequence 9997 Version... 53 4.1.11 Standard Rejected 9999 Version... 55 4.2 Market Center Unsolicited Message Formats... 56 4.2.1 UM Registration 9998 Version Nasdaq-Native only... 57 4.2.2 Cancel/Reject 82 Version... 61 4.2.3 Cancel/Reject 82 Version 1... 64 4.2.4 Quote Update 83 Version... 67 4.2.5 Quote Update 83 Version 1... 69 4.2.6 Execution/Kill 811 Version... 71 4.2.7 Execution 811 Version 1... 75 4.2.8 Proprietary Quote 85 Version... 8 4.3 Debug Packet... 82 4.4 Heartbeat Packets... 83 4.4.1 QIX Server... 83 4.4.2 QIX Client... 83 QIX Programming Specification 4/26/217

Page 4 1 Data Standards At the session and application levels, all data fields will be fixed length. 1.1 Alphabetic, Numeric, and Alphanumeric Fields All alphabetic, numeric, and alphanumeric fields are right-justified and left-padded with spaces, except where noted. 1.2 Market Center Trading and OTCBB All price fields are 1 characters in length with the first 6 characters reserved for the dollar portion and the last 4 reserved for cents. The decimal point is implied. Dollar amounts should be pre-pended with zeroes. Cent amounts should be appended with zeroes. For example, $12.34 is 1234. 1.3 Symbology Listed security symbols are entered in CMS format, which uses space delimiters between the root symbol and any suffix. For example, OXY PRB. 1.4 Server Tracking Format The server provides the Server Tracking to you on a UM connection in all sequenced messages. The Sequence portion of the Server Tracking is used in the Login Request Message for requesting rewind service. Name Offset Length Value Description Sequence 8 numeric Right-justified, zero-filled. 8 2 alphanumeric 1 2 alphanumeric 1.5 Time In Force This is the list of valid TIFs used in QIX. Note that when specifying TIF, they are spaced padded on the right when shorter than 3 characters. TIF DAY IOC GTC X IOX OO OC GTX REG NXT ALX Meaning Live during market hours Immediate or cancel during market hours only Good-til-cancelled. Executable over multiple days, but only during market hours Live for all system hours Immediate or cancel for all system hours On open, only participates in the Opening Cross On close, only participates in the Closing Cross Good-til-cancelled. Executable over multiple days during all system hours Participate in all market hours intraday crosses Participate in the next intraday cross Participate in all intraday crosses QIX Programming Specification 4/26/217

Page 5 1.6 Message Sequencing supports optional inbound message sequencing on the Q/R connection. You can use this feature on a message-by-message basis; that is, you can choose to designate some inbound packets as sequenced and others as un-sequenced. Each query message contains a new Packet Type value, s, for sequenced and a new field, Client Sequence. You supply the incoming sequence number in messages that you designate as sequenced. QIX monitors the sequence number for message gaps. If you send a transaction with a sequence number greater than expected, QIX will send a new Message Gap Detected Reject message. QIX will continue to discard all messages until the expected sequence number is received or until you reset the sequence number via the new Reset Sequence message. When QIX receives a message with a sequence number less than expected, the session will be terminated. The Client Sequence will be reset to 1 by QIX each morning. Example #1 1. You connect and send a Login Request to QIX on the Q/R connection. 2. QIX validates the Login and responds with a Login Accepted message containing the expected sequence number, in this case, 1. 3. You then transmit sequence numbers 1 and 2 followed by 4. 4. QIX detects the gap and responds with a Message Gap Detected Reject. 5. If messages 5 and 6 are in flight, they will be discarded with no response back to you. 6. You send in sequence number 3 and continue. or 6. You send a Reset Sequence message to reset the number. Example #2 1. You connect and send a Login Request to QIX on the Q/R connection. 2. QIX validates the Login and responds with a Login Accepted message containing the expected sequence number, in this case, 2. 3. You send a message with sequence number 18. 4. QIX disconnects the session. QIX Programming Specification 4/26/217

Page 6 2 Network Configuration 2.1 Configuration Requirements All participants in QIX will be required to establish a minimum of two separate TCP/IP connections, each configured to a different port number. A UM delivery connection is used to transmit unsolicited messages to you. This connection also supports session level and control level messages, which are unsequenced. In order to receive your proprietary quote updates, you must establish a third QIX connection. Only Proprietary Quote UM traffic is sent on this connection. These messages are designated as sequenced, but sequence numbers are not applicable to this connection. When you log on to the Proprietary Quote connection, the server will begin transmitting the last value cache figures for each security that you currently hold a proprietary position in. This is true of your initial login as well as subsequent logins intraday. This connection also supports session level and control level messages, which are unsequenced. You use the Q/R connection to send traffic to and receive responses from applications. The Query/Response traffic to applications can be sequenced or unsequenced inbound. No rewind capability is offered on a Q/R connection. This connection also supports session level messages and control level messages that are unsequenced. QIX Programming Specification 4/26/217

Page 7 3 Session Protocol QIX uses a new, lightweight point-to-point session level protocol that is described in this section. 3.1 Session Connection 1. Immediately upon establishing a new TCP/IP socket connection to the server, you must send a Login Request Message to the UM Connection (a) and the Query/Response (Q/R) Connection (b). 2. You will receive a Login Response from the UM Connection (a) and the Q/R Connection (b). 3. You will receive Server Heartbeat Messages every five seconds from the UM Connection (a) and the Q/R Connection (b). 4. You respond immediately with your Heartbeat Message to the UM Connection (a) and the Q/R Connection (b). QIX Servers <- 1a. Login Request to UM Connection <- 4a. Heartbeat Response to UM Connection UM Connection -> 2a. Login Response from UM Connection -> 3a. Heartbeat Request from UM Connection <- 1b. Login Request to Q/R Connection <- 4b. Heartbeat Response to Q/R Connection Client -> 2b. Login Response from Q/R Connection -> 3b. Heartbeat Request from Q/R Connection Q/R Connection 3.2 QIX Logical Packets The QIX client and server communicate by exchanging a series of logical packets. QIX Programming Specification 4/26/217

Page 8 Each QIX logical packet begins with a 4-byte, ASCII, right-justified, and zero-filled message length (includes the trailer, but does not include itself) followed by a single-byte packet type, the transaction code, the message version number, the server tracking number, and 4 bytes of Reserved data for UMs or the client tracking number and client sequence number for Q/R. A variable length payload follows. The payload may not contain the linefeed character (ASCII 1 decimal, xa hex) or the pipe character (ASCII 124 decimal, x7c hex). The final component is a standard trailer consisting of a single terminating linefeed character (ASCII 1 decimal, xa hex). 3.3 Session ID Format The Session ID is defined as a 1-character alphanumeric string with this format: Name Offset Length Value Description Firm ID 4 alphanumeric Firm Name Date 4 3 DDD Julian day Session Type 7 1 alphabetic Session Type indicator. s = the session is recoverable (the UM connection) u = the session is non-recoverable (the Q/R connection) Session 8 2 alphanumeric System-assigned session number. This Session ID will be unique. It will be derived from information in the Firm ID and Session in the user configuration file. It is returned to you in the Login Accepted message. 3.4 Session Messages 3.4.1 Login Request You must send a Login Request Message immediately upon establishing any TCP/IP socket connection to the server. The session will be terminated within two heartbeat intervals if the Login Request Message is not received. If the server receives any other type message (other than a Debug Packet) any time a Login Request Message is expected, the connection will be dropped. Note: the reception of the Debug Packet does not satisfy the requirement to receive a Login Request Message within two heartbeat intervals. This message type is valid on all connections. QIX Programming Specification 4/26/217

Page 9 3.4.1.1 Sample UM Connection Login Request Message Length Packet Type Username Password Sequence Standard Trailer 26 l HERO 12345678 <\n> 3.4.1.2 Sample QR Connection Login Request Message Length Packet Type Username Password Sequence Standard Trailer 26 l HERO 12345678 <\n> Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 l (lower case L) = Login Request Packet Username 5 8 Password 13 8 QIX Programming Specification 4/26/217

Page 1 Sequence 21 8 This field pertains to UM connections and Proprietary Quote UM connections only, and is ignored for Q/R connections. Standard Trailer 29 1 This field can contain either spaces or a decimal number (right justified, zero-filled, greater than or equal to 1). If spaces are specified, the connection will provide data from this point in time onward, with no rewind. If a valid sequence number is specified the connection will provide all data from the specified sequence number onward (e.g., if the client logs in with sequence number 1, but the current sequence is 2, sequence number 1 onward will be provided). Specifying a sequence number of is treated the same as all spaces: the current sequence onward will be provided without rewind. Specify a sequence number of 1 to retrieve the complete history of the messages for the day. QIX Programming Specification 4/26/217

Page 11 3.4.2 Login Accepted The QIX server sends a Login Accepted message in response to a valid Login Request from you. This message type is valid on all connections. 3.4.2.1 Sample UM Login Accepted Response Message Length Packet Type Session ID Sequence Standard Trailer 2 a HERO355s K 1 <\n > 3.4.2.2 Sample QR Login Accepted Response Message Length Packet Type Session ID Sequence Standard Trailer 2 a HERO355s K 1 <\n > Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 a = Login Accepted Packet Session ID 5 1 The ID of the session that is now logged into. Sequence 15 8 For sequenced UM sessions, specifies the next sequence number to be transmitted by the server. For sequenced Q/R sessions, specifies the next expected Client Sequence on this connection. Standard Trailer 23 1 QIX Programming Specification 4/26/217

Page 12 3.4.3 Logout Request You send a Logout Request message to request that the connection be terminated. The server will immediately terminate the connection and close the associated TCP/IP socket. This message type is valid on all connections. 3.4.3.1 Sample Logout Request Message Length Packet Type Standard Trailer 2 o <\n > Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 o = Logout Request Packet Standard Trailer 5 1 QIX Programming Specification 4/26/217

Page 13 4 Application Protocol The application level messages implement a new API format based on the current message definitions. QIX Programming Specification 4/26/217

Page 14 4.1 Market Center Query/Response Message Formats Query/response messages can be sequenced or unsequenced inbound and are valid on the query/response connection only. QIX Programming Specification 4/26/217

Page 15 4.1.1 Order Cancel 481 Version This message allows you to cancel an Open, Not Available, or Purged order. Sample Order Cancel Request Message Length Packet Type Transaction Code Version Client Tracking Client Sequence Security Symbol Order Reference Standard Trailer 5 4 s 48 1 121514 12 1 MSBK 4J4FC MB <\n > 4.1.1.1 Query Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 s = sequenced u = unsequenced data packet Transaction Code 5 4 481 Version 9 2 Client Tracking 11 12 Alphanumeric, required to be unique, customer assigned. Echoed back in the 481 response. Client Sequence 23 8 If packet type = s, next message sequence number on this connection. Else, spacefilled. Security Symbol 31 14 The unique symbol which identifies an issue. Required field. Order Reference 45 12 Required order reference number associated with this order. Standard Trailer 57 1 QIX Programming Specification 4/26/217

Page 16 Sample Order Cancel Response Message Length Packet Type Transaction Code Version Client Tracking Result Code Order Reference Accepted Time Stamp Filler Standard Trailer 5 2 u 48 1 121514 12 6 4J4FC MB 241215152 946 <\n > 4.1.1.2 Response Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 u = unsequenced data packet Transaction Code 5 4 481 Version 9 2 Client Tracking 11 12 Alphanumeric, from the request. Result code 23 5 x x = source code 6 = normal host accept Order Reference 28 12 Reference associated with this order. Accepted Time Stamp 4 14 Date/Time of Accept. YYYYMMDDHHMMSS. Filler 54 1 space Standard Trailer 55 1 QIX Programming Specification 4/26/217

Page 17 4.1.2 Quote Update 484 Version This message allows you to update your bid price, ask price, and size in an issue and open, close, or withdraw your market position in an issue. Please note: values in the response message may be different than what is in the market. The correct values will be shown in the Quote Update message (83), and for updates (U) within Prop Quote (85). Sample Quote Update Request Message Length Packet Type Transaction Code Version Client Tracking Client Sequence Security Symbol Request Quote Code Bid Direction Bid Quote Price Bid Size 1 8 u 48 4 121514 2 MSBK U 78 Bid Reserve Size Ask Direction Ask Quote Price Ask Size Ask Reserve Size Filler Standard Trailer 89 N <\n > 4.1.2.1 Query Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 s = sequenced u = unsequenced data packet Transaction Code 5 4 484 Version 9 2 Client Tracking 11 12 Alphanumeric, required to be unique, customer assigned. Echoed back in the 484 response. Client Sequence 23 8 If packet type = s, next message sequence number on this connection. Else, space-filled. Security Symbol 31 14 The unique symbol which identifies an issue. Required field. For a listed security, QIX Programming Specification 4/26/217

Page 18 this symbol must be in CMS format. For example: OXY PRB ROY PR SCZ WD SRF CL FLA B Request Quote Code 45 1 Indicates the function of the request. U = update O = open C = close W = withdraw Bid Direction 46 1 Indicates how to treat the Bid Quote Price field. = decrement current bid quote by the amount in the Bid Quote Price field. 1 = increment current bid quote by the amount in the Bid Quote Price field. space = replace current bid quote by the amount in the Bid Quote Price field. Bid Quote Price 47 1 If Bid direction field has a value, then price is treated as an increment/decrement to current bid quote. Otherwise, price is used as a replacement Bid Quote Price. all spaces = no price entered Bid Size 57 5 of round lots in this security associated with the MP Bid Price. all spaces = carry size from previous quote Four zeroes = cancel specified quote Bid Reserve Size 62 7 of reserve shares associated with this MP Buy Side. Reserve size must be in actual shares in round lots. All spaces = no reserve size entered 69 6 Space-filled. Ask Direction 75 1 Indicates how to treat the Ask Quote Price field. = decrement current ask quote by the amount in the Ask Quote Price field. 1 = increment current ask quote by the amount in the Ask Quote Price field. space = replace current ask quote by the amount in the Ask Quote Price field. Ask Quote Price 76 1 If Ask direction field has a value, then price is treated as an increment/decrement to current ask quote. Otherwise, price is used as a replacement Ask Quote Price. all spaces = no price entered Ask Size 86 5 of round lots in this security QIX Programming Specification 4/26/217

Page 19 associated with the MP Ask Price. All spaces = carry size from previous quote Four zeroes = cancel specified quote Ask Reserve Size 91 7 of reserve shares associated with this MP Ask Side. of reserve shares associated with this MP Ask Side. Reserve size must be in actual shares in round lots. All spaces = no reserve size entered 98 6 Space-filled. Sell Type 14 1 S = Long Sell T = Short Sell, locate not required E = Short Sell Exempt t = Short Sell, locate required Any other values will represent Long Sell 15 4 Space-filled. 19 1 N Filler 11 1 space Standard Trailer 111 1 QIX Programming Specification 4/26/217

Page 2 Sample Quote Update Response Message Length Packet Type Transaction Code Version Client Tracking Result Code Security Symbol Response Quote Code Bid Quote Price Bid Size 1 6 u 48 4 121514 2 6 MSBK U 78 99 9 Bid Reserve Size Bid Refresh Amount Ask Quote Price Ask Size Ask Reserve Size Ask Refresh Amount Accepted Time Stamp Standard Trailer 1 999 89 999 1 999 241215141 653 <\n > 4.1.2.2 Response Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 u = unsequenced data packet Transaction Code 5 4 484 Version 9 2 Client Tracking 11 12 Alphanumeric, from the request. Result code 23 5 x x = source code 6 = normal host accept Security Symbol 28 14 Response Quote Code 42 1 U = Request was a quote update (U) O = Request opened (O) the position C = Request closed the position W = Request withdraws the position (W) Bid Quote Price 43 1 Bid price resulting from the quote update. if no price. Bid Size 53 4 of round lots in this security associated with the MP Bid Price. This field is right-padded with spaces Bid Reserve Size 57 6 of reserve shares associated with this MP Bid Side. This field is left padded with spaces QIX Programming Specification 4/26/217

Page 21 Bid Refresh Amount 63 6 Will contain the number of shares entered for the original Bid Size. This field is leftjustified, zero-filled. Ask Quote Price 69 1 Ask price resulting from the quote update. if no price. Ask Size 79 4 of round lots in this security associated with the MP Ask Price. This field is right-padded with spaces Ask Reserve Size 83 6 of reserve shares associated with this MP Ask Side. This field is left padded with spaces Ask Refresh Amount 89 6 Will contain the number of shares entered for the original Ask Size. This field is leftjustified, zero-filled. Accepted Time Stamp 95 14 Date/Time of Accept. YYYYMMDDHHMMSS. Standard Trailer 19 1 QIX Programming Specification 4/26/217

Page 22 4.1.3 Quote Update 484 Version 1 (INET-Native Only) This message allows you to update your bid price, ask price, and size in an issue and open, close, or withdraw your market position in an issue. Version 1 is designed for a service bureau configuration. Please note: values in the response message may be different than what is in the market. The correct values will be shown in the Quote Update message (83), and for updates (U) within Prop Quote (85). Sample Quote Update Request Message Length Packet Type Transaction Code Version Client Tracking Client Sequence Security Symbol Request Quote Code Bid Direction Bid Quote Price Bid Size 1 8 u 48 4 1 121514 2 MSBK U 78 Bid Reserve Size Ask Direction Ask Quote Price Ask Size Ask Reserve Size Give Up Filler Standard Trailer 89 N MPI D <\n > 4.1.3.1 Query Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 s = sequenced u = unsequenced data packet Transaction Code 5 4 484 Version 9 2 1 Client Tracking 11 12 Alphanumeric, required to be unique, customer assigned. Echoed back in the 484 response. Client Sequence 23 8 If packet type = s, next message sequence number on this connection. Else, space-filled. Security Symbol 31 14 The unique symbol which identifies an QIX Programming Specification 4/26/217

Page 23 issue. Required field. For a listed security, this symbol must be in CMS format. For example: OXY PRB ROY PR SCZ WD SRF CL FLA B Request Quote Code 45 1 Indicates the function of the request. U = update O = open C = close W = withdraw Bid Direction 46 1 Indicates how to treat the Bid Quote Price field. = decrement current bid quote by the amount in the Bid Quote Price field. 1 = increment current bid quote by the amount in the Bid Quote Price field. space = replace current bid quote by the amount in the Bid Quote Price field. Bid Quote Price 47 1 If Bid direction field has a value, then price is treated as an increment/decrement to current bid quote. Otherwise, price is used as a replacement Bid Quote Price. all spaces = no price entered Bid Size 57 5 of round lots in this security associated with the MP Bid Price. all spaces = carry size from previous quote Four zeroes = cancel specified quote Bid Reserve Size 62 7 of reserve shares associated with this MP Buy Side. Reserve size must be in actual shares in round lots. All spaces = no reserve size entered 69 6 Space-filled. Ask Direction 75 1 Indicates how to treat the Ask Quote Price field. = decrement current ask quote by the amount in the Ask Quote Price field. 1 = increment current ask quote by the amount in the Ask Quote Price field. space = replace current ask quote by the amount in the Ask Quote Price field. Ask Quote Price 76 1 If Ask direction field has a value, then price is treated as an increment/decrement to current ask quote. Otherwise, price is used as a replacement Ask Quote Price. all spaces = no price entered QIX Programming Specification 4/26/217

Page 24 Ask Size 86 5 of round lots in this security associated with the MP Ask Price. All spaces = carry size from previous quote Four zeroes = cancel specified quote Ask Reserve Size 91 7 of reserve shares associated with this MP Ask Side. of reserve shares associated with this MP Ask Side. Reserve size must be in actual shares in round lots. All spaces = no reserve size entered 98 6 Space-filled. Sell Type 14 1 S = Long Sell T = Short Sell, locate not required E = Short Sell Exempt t = Short Sell, locate required Any other values will represent Long Sell MMID 15 4 Must be filled out with the MMID of the firm to which this quote belongs 19 1 N Filler 11 1 space Standard Trailer 111 1 QIX Programming Specification 4/26/217

Page 25 Sample Quote Update Response Message Length Packet Type Transaction Code Version Client Tracking Result Code Security Symbol Response Quote Code Bid Quote Price Bid Size 11 u 48 4 1 121514 2 6 MSBK U 78 99 9 Bid Reserve Size Bid Refresh Amount Ask Quote Price Ask Size Ask Reserve Size Ask Refresh Amount Accepted Time Stamp MMID Standard Trailer 1 999 89 999 1 999 241215141 653 CAN T <\n > 4.1.3.2 Response Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 u = unsequenced data packet Transaction Code 5 4 484 Version 9 2 1 Client Tracking 11 12 Alphanumeric, from the request. Result code 23 5 x x = source code 6 = normal host accept Security Symbol 28 14 Response Quote Code 42 1 U = Request was a quote update (U) O = Request opened (O) the position C = Request closed the position W = Request withdraws the position (W) Bid Quote Price 43 1 Bid price resulting from the quote update. if no price. Bid Size 53 4 of round lots in this security associated with the MP Bid Price. This field is left-justified, zero-filled. Bid Reserve Size 57 6 of reserve shares associated with this MP Bid Side. This field is leftjustified, zero-filled. QIX Programming Specification 4/26/217

Page 26 Bid Refresh Amount 63 6 Will contain the number of shares entered for the original Bid Size. This field is leftjustified, zero-filled. Ask Quote Price 69 1 Ask price resulting from the quote update. if no price. Ask Size 79 4 of round lots in this security associated with the MP Ask Price. This field is left-justified, zero-filled. Ask Reserve Size 83 6 of reserve shares associated with this MP Ask Side. This field is leftjustified, zero-filled. Ask Refresh Amount 89 6 Will contain the number of shares entered for the original Ask Size. This field is leftjustified, zero-filled. Accepted Time Stamp 95 14 Date/Time of Accept. YYYYMMDDHHMMSS. MMID 19 4 MMID of the firm on this quote Standard Trailer 113 1 QIX Programming Specification 4/26/217

Page 27 4.1.4 Quote Update 484 Version 2 (INET-Native Only) This message allows you to update your bid price, ask price, and size in an issue and open, close, or withdraw your market position in an issue. Please note: value in this message may be different than what is in the market. The correct value will be shown in Quote Update message (83), and for updates (U) within Prop Quote (85). Sample Quote Update Request Message Length Packet Type Transaction Code Version Client Tracking Client Sequence Security Symbol Request Quote Code Bid Direction Bid Quote Price Bid Size 11 7 u 48 4 2 121514 2 MSBK U 78 Bid Reserve Size Ask Direction Ask Quote Price Ask Size Ask Reserve Size MMID Filler Time In Force Preference Standard Trailer 89 N CAN T 9999 8 NAD Q <\n> 4.1.4.1 Query Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 s = sequenced u = unsequenced data packet Transaction Code 5 4 484 Version 9 2 2 Client Tracking 11 12 Alphanumeric, required to be unique, customer assigned. Echoed back in the 484 response. Client Sequence 23 8 If packet type = s, next message sequence number on this connection. Else, space-filled. Security Symbol 31 14 The unique symbol which identifies an issue. Required field. For a listed security, this symbol must be in CMS format. For QIX Programming Specification 4/26/217

Page 28 example: OXY PRB ROY PR SCZ WD SRF CL FLA B Request Quote Code 45 1 Indicates the function of the request. U = update O = open C = close W = withdraw Bid Direction 46 1 Indicates how to treat the Bid Quote Price field. = decrement current bid quote by the amount in the Bid Quote Price field. 1 = increment current bid quote by the amount in the Bid Quote Price field. space = replace current bid quote by the amount in the Bid Quote Price field. Bid Quote Price 47 1 If Bid direction field has a value, then price is treated as an increment/decrement to current bid quote. Otherwise, price is used as a replacement Bid Quote Price. all spaces = no price entered Bid Size 57 5 of round lots in this security associated with the MP Bid Price. all spaces = carry size from previous quote Four zeroes = cancel specified quote Bid Reserve Size 62 7 of reserve shares associated with this MP Buy Side. Reserve size must be in actual shares in round lots. If the reserve size is set to spaces AND the size was set to spaces, then the size is set to previous setting (or 1 round lot if the previous setting was ), and the reserve size is set to the previous values minus the size. If the reserve size is set to spaces AND the size was NOT set to spaces, then the reserve size is set to. 69 6 Space-filled. Ask Direction 75 1 Indicates how to treat the Ask Quote Price field. = decrement current ask quote by the amount in the Ask Quote Price field. 1 = increment current ask quote by the amount in the Ask Quote Price field. space = replace current ask quote by the QIX Programming Specification 4/26/217

Page 29 amount in the Ask Quote Price field. Ask Quote Price 76 1 If Ask direction field has a value, then price is treated as an increment/decrement to current ask quote. Otherwise, price is used as a replacement Ask Quote Price. all spaces = no price entered Ask Size 86 5 of round lots in this security associated with the MP Ask Price. All spaces = carry size from previous quote Four zeroes = cancel specified quote Ask Reserve Size 91 7 of reserve shares associated with this MP Ask Side. of reserve shares associated with this MP Ask Side. Reserve size must be in actual shares in round lots. If the reserve size is set to spaces AND the size was set to spaces, then the size is set to previous setting (or 1 round lot if the previous setting was ), and the reserve size is set to the previous values minus the size. If the reserve size is set to spaces AND the size was NOT set to spaces, then the reserve size is set to. 98 6 Space-filled. Sell Type 14 1 S = Long Sell T = Short Sell, locate not required E = Short Sell Exempt t = Short Sell, locate required Any other values will represent Long Sell MMID 15 4 MMID to which this quote belongs 19 1 N Filler 11 1 space Time In Force 111 5 Zero padded and right justified number of seconds that the quote should stay open and be AQR d. 99999 = Open until system close 99998 = Open until market close Preference 116 4 The routing strategy to use. NADQ = only INET = only SCAN = Do a routing sweep once if marketable, then post and stay on Standard Trailer 12 1 QIX Programming Specification 4/26/217

Page 3 Sample Quote Update Response Message Length Packet Type Transaction Code Version Client Tracking Result Code Security Symbol Response Quote Code Bid Quote Price Bid Size 11 9 u 48 4 2 121514 2 6 MSBK U 78 99 9 Bid Reserve Size Bid Refresh Amount Ask Quote Price Ask Size Ask Reserve Size Ask Refresh Amount Accepted Time Stamp Time In Force Preference MMID Standard Trailer 1 999 89 999 1 999 241215141 653 9999 8 NAD Q CAN T <\n > 4.1.4.2 Response Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 u = unsequenced data packet Transaction Code 5 4 484 Version 9 2 2 Client Tracking 11 12 Alphanumeric, from the request. Result code 23 5 x x = source code 6 = normal host accept Security Symbol 28 14 Response Quote Code 42 1 U = Request was a quote update (U) O = Request opened (O) the position C = Request closed the position W = Request withdraws the position (W) Bid Quote Price 43 1 Bid price resulting from the quote update. if no price. QIX Programming Specification 4/26/217

Page 31 Bid Size 53 4 of round lots in this security associated with the MP Bid Price. This field is left-justified, zero-filled. Bid Reserve Size 57 6 of reserve shares associated with this MP Bid Side. This field is leftjustified, zero-filled. Bid Refresh Amount 63 6 Will contain the number of shares entered for the original Bid Size. This field is leftjustified, zero-filled. Ask Quote Price 69 1 Ask price resulting from the quote update. if no price. Ask Size 79 4 of round lots in this security associated with the MP Ask Price. This field is left-justified, zero-filled. Ask Reserve Size 83 6 of reserve shares associated with this MP Ask Side. This field is leftjustified, zero-filled. Ask Refresh Amount 89 6 Will contain the number of shares entered for the original Ask Size. This field is leftjustified, zero-filled. Accepted Time Stamp 95 14 Date/Time of Accept. YYYYMMDDHHMMSS. Time In Force 19 5 Zero padded and right justified number of seconds that the quote should stay open and be AQR d. 99999 = Open until system close 99998 = Open until market close Preference 114 4 The routing strategy to use. NADQ = only INET = only SCAN = Do a routing sweep once if marketable, then post and stay on Give Up 118 4 MPID of the firm on this quote Standard Trailer 122 1 QIX Programming Specification 4/26/217

Page 32 4.1.5 Host Settings 4824 Version This message allows you to view and update quote and order related values at the position level. Sample Host Settings Request Message Length Packet Type Transaction Code Version Client Tracking Client Sequence Security Symbol Type Auto Quote Refresh Indicator AQR Tick Value Bid 8 2 u 482 4 121514 19 MSBF N AQR Tick value Ask AQR Quote Bid Reserve Size AQR Quote Ask Reserve Size AQR Quote Bid Display Size AQR Quote Ask Display Size Standard Trailer <\n > 4.1.5.1 Query Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 s = sequenced u = unsequenced data packet Transaction Code 5 4 4824 Version 9 2 Client Tracking 11 12 Alphanumeric, required to be unique, customer assigned. Echoed back in the 4824 response. Client Sequence 23 8 If packet type = s, next message sequence number on this connection. Else, spacefilled. QIX Programming Specification 4/26/217

Page 33 Security Symbol 31 14 The unique symbol which identifies an issue. Required field. For a listed security, this symbol must be in CMS format. For example: OXY PRB ROY PR SCZ WD SRF CL FLA B 45 4 All spaces Type 49 1 = query 1 = update Auto Quote Refresh Indicator 5 1 AQR activation indicator. N = do not activate AQR Y = activate AQR S = Long Sell, activate AQR T = Short Sell, activate AQR E = Short Sell Exempt, activate AQR s = Long Sell, do not activate AQR t = Short Sell, do not activate AQR e = Short Sell Exempt, do not activate AQR l = Short Sell, do not activate AQR, locate required NOTE: previous values Y and N will no longer be supported in the response message, although we will accept those values in the request message. Both values will be converted to long sell. AQR Tick Value Bid 51 1 AQR price increment for the bid side. all spaces = no value entered AQR Tick Value Ask 61 1 AQR price increment for the ask side. all spaces = no value entered AQR Quote Bid Reserve Size AQR Quote Ask Reserve Size AQR Quote Bid Display Size AQR Quote ASK Display Size Standard Trailer 91 1 71 4 AQR reserve size for the bid quote in round lots. all spaces = no value entered 75 4 AQR reserve size for the ask quote in round lots. all spaces = no value entered 79 6 AQR display size for the bid quote in round lots. all spaces = no value entered 85 6 AQR display size for the ask quote in round lots. all spaces = no value entered QIX Programming Specification 4/26/217

Page 34 Sample Host Settings Response Message Length Packet Type Transaction Code Version Client Tracking Result code Security Symbol Auto Quote Refresh Indicator AQR Tick Value Bid AQR Tick value Ask 8 8 u 482 4 121514 19 6 MSBF N AQR Quote Bid Reserve Size AQR Quote Ask Reserve Size AQR Quote Bid Display Size AQR Quote Ask Display Size Standard Trailer Y Y <\n > 4.1.5.2 Response Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 u = unsequenced data packet Transaction Code 5 4 4824 Version 9 2 Client Tracking 11 12 Alphanumeric, from the request. Result code 23 5 x x = source code 6 = normal host accept Security Symbol 28 14 QIX Programming Specification 4/26/217

Page 35 42 1 Indicates whether the AQR is set. Auto Quote Refresh Indicator S = Long Sell, activate AQR T = Short Sell, activate AQR E = Short Sell Exempt, activate AQR s = Long Sell, do not activate AQR t = Short Sell, do not activate AQR e = Short Sell Exempt, do not activate AQR l = Short Sell, do not activate AQR, locate required NOTE: previous values Y and N will no longer be supported in the response message, although we will accept those values in the request message. Both values will be converted to long sell. AQR Tick Value Bid 43 1 AQR price increment for the bid side. all spaces = no value AQR Tick Value Ask 53 1 AQR price increment for the ask side. all spaces = no value AQR Quote Bid Reserve Size AQR Quote Ask Reserve Size AQR Quote Bid Display Size AQR Quote ASK Display Size 83 1 84 1 Standard Trailer 85 1 63 4 AQR reserve size for the bid quote in round lots. all spaces = no value 67 4 AQR reserve size for the ask quote in round lots. all spaces = no value 71 6 AQR display size for the bid quote in round lots. all spaces = no value entered 77 6 AQR display size for the ask quote in round lots. all spaces = no value entered QIX Programming Specification 4/26/217

Page 36 4.1.6 Order Cancel/Replace 4833 Version 1 This message allows you to cancel and replace an open order. You cannot change security symbol by this function; you must cancel the order and send a new one. This version is the result of the Routing Phase 2 project. Sample Order Cancel/Replace Request Message Length Packet Type Transaction Code Version Client Tracking Client Sequence Security Symbol Order Reference Order Side Order Quantity 16 8 u 483 3 1 121514 11 MSBF 4J4FC M7 B 2 Order Price Preferenced MPID Reserve Size Order Capacity Order Priority Order Time In Force Order Give Up User Order ID 8 DA Y Order Received Date Order Branch Sequence Dividend\Split Indicator Order Anonymous Flag Order Type Peg Type Peg Offset Peg Cap Price Discretionary Flag Discretionary Range Standard Trailer NO N N O N N <\n> 4.1.6.1 Query Field Name Offset Lengt Value / Comments h Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 s = sequenced u = unsequenced data packet QIX Programming Specification 4/26/217

Page 37 Field Name Offset Lengt h Value / Comments Transaction Code 5 4 4833 Version 9 2 1 Client Tracking 11 12 Alphanumeric. Required to be unique, customer assigned. Echoed back in the 4833 response. Client Sequence 23 8 If packet type = s, next message sequence number on this connection. Else, spacefilled. Security Symbol 31 14 As per Original Order. Order Reference 45 12 Order number associated with the original order. Order Side 57 2 As per Original Order. Order Quantity 59 6 of shares of replacement order. For midpoint pegged orders, this field must be. Order Price 65 1 Entered price of an order. 1-character standard price format or MKT = market price NBBO = pegged orders (not allowed for other exchange-listed securities) Preferenced MPID 75 4 As per Original Order. Reserve Size 79 6 Indicates the quantity of the Reserve size. Reserve size must be in shares either in round lot multiples or in mixed lots. all spaces = omitted 85 6 Space-filled. Order Capacity 91 1 Indicates on whose behalf the order was entered. If the host receives a space value, host will use firm profile value. A = agency P = principal R = riskless Order Priority 92 1 As per Original Order. 93 1 Space-filled. Order Time In Force 94 3 As per Original Order. Order Give Up 97 4 As per Original Order. User Order ID 11 2 Indicates order ID entered by MP for internal processing. all spaces = omitted 121 4 Space-filled. Order Received Date 125 8 As per Original Order. Order Branch Sequence 133 8 Branch ID/Sequence Branch sequence numbers that are not 1-4 alphabetic characters followed by 1-4 numeric characters will be rejected. 8 alphas or 8 numbers are not acceptable. all spaces = omitted Dividend/Split Indicator 141 3 As per original order. QIX Programming Specification 4/26/217

Page 38 Field Name Offset Lengt Value / Comments h 144 1 Space-filled. Order Anonymous Flag 145 1 Causes the user order to display anonymously if set. N = attributable Y = pre-trade and post-trade nonattributable 146 2 Space-filled. Order Type 148 1 As per original order. Peg Type 149 1 Signifies whether a pegged order is Regular or Reverse. Pegged orders are not allowed for a listed security H = Regular pegged order to NBBO. Q = Reverse pegged order to NBBO. M = Mid-point Pegged order to NBBO. N = Non-pegged order. R = Market Maker pegged order. Peg Offset 15 2 Applicable to Pegged orders and indicates the numerical offset that is applied to the current inside bid/offer to derive the current display price for the order. -99 = offset value if a pegged order spaces = non-pegged order Peg Cap Price 152 1 Standard 1 digit price format, or spacefilled if not a pegged order. Discretionary Flag 162 1 Indicates whether an order is discretionary. Y = discretionary order N = non-discretionary order Discretionary Range 163 2 Applied to the display price to establish the price range within which the discretionary order may be executed. For Discretionary orders, this is a required field. 1 99 spaces = non-discretionary order 165 6 Space-filled. Standard Trailer 171 1 Sample Order Cancel/Replace Response Message Length Packet Type Transaction Code Version Client Tracking Result code Order Reference Accepted Time Stamp Filler Standard Trailer 5 u 483 121514 6 4J4FC 241215152 <\n QIX Programming Specification 4/26/217

Page 39 2 3 1 11 MB 116 > 4.1.6.2 Response Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 u = unsequenced data packet Transaction Code 5 4 4833 Version 9 2 1 Client Tracking 11 12 Alphanumeric, from the request. Result code 23 5 x x = source code 6 = normal host accept Order Reference 28 12 Reference number associated with the replace order. Accepted Time Stamp 4 14 Date/Time of Accept. YYYYMMDDHHMMSS. Filler 54 1 space Standard Trailer 55 1 QIX Programming Specification 4/26/217

Page 4 4.1.7 Order Entry 4838 Version 1 This message allows you to enter orders into the Market Center system for potential delivery and execution. This version is the result of the Routing Phase 2 project. Sample Order Entry Request Message Length Packet Type Transaction Code Version Client Tracking Client Sequence Security Symbol Poss Dup Flag Order Side Order Quantity 15 8 u 483 8 1 121514 9 MSBK N B 1 Order Price Preferenced MPID Reserve Size Order Capacity Order Priority Order Time In Force Order Give Up User Order ID 79 DA Y Order Received Date Order Branch Sequence Dividend\Split Indicator Order Anonymous Flag Order Type Peg Type Peg Offset Peg Cap Price Discretionary Flag Discretionary Range Filler Standard Trailer N O N N <\n> 4.1.7.1 Query Message Length 4 ASCII, right-justified, zero-filled. Packet Type 4 1 s = sequenced u = unsequenced data packet Transaction Code 5 4 4838 QIX Programming Specification 4/26/217

Page 41 Version 9 2 1 Client Tracking 11 12 Alphanumeric. Required to be unique, customer assigned. Echoed back in the 4838 response. Note: If PossDup Flag = Y, this field must equal the Client Tracking of the original transaction. Client Sequence 23 8 If packet type = s, next message sequence number on this connection. Else, spacefilled. Security Symbol 31 14 The unique symbol which identifies an issue. Required field. For a listed security, this symbol must be in CMS format. For example: OXY PRB ROY PR SCZ WD SRF CL FLA B PossDup Flag 45 1 Required for retransmissions. Indicates possible retransmission of message with this Client Tracking. Y = possible duplicate N = original transmission Order Side 46 2 Describes the side of an order. B = buy S = sell SS = sell short SX = sell short Order Quantity 48 6 of shares of original order. Order Price 54 1 Entered price of an order. MKT = market price, NBBO = pegged orders (not allowed for listed securities), or 1-character standard price format. Preferenced MPID 64 4 Optional field. Here is a list of allowable values and how they are handled: NADQ = only order INET = only order DOTADOTD = Behaves similar to the SCAN strategies, except that the strategy only allows non-attributable orders. Any onopen, on-close Time in Force (TIF) instruction and all pre-market orders will be sent to the primary for the primary cross. NOTE: This strategy will only access the NYSE or NYSE MKT (AMEX) primary markets. Orders received in all other symbols will participate in the QIX Programming Specification 4/26/217

Page 42 cross instead of the primary. SCAN = First attempts to execute against orders available on the book at a price equal to or better than the NBBO. After executing any marketable orders on the book, the order will be displayed via TotalView-ITCH at the most aggressive price possible that would not result in a trade through for 2 to 3 milliseconds, after which it will then route to other markets. If shares remain unexecuted after routing they are posted on the book. Once the order is posted to the book, if it is subsequently locked or crossed, the system will not route out again. STGY = Behaves similar to SCAN, except that the order will route out again after posting to the book if the order is subsequently locked or crossed. DOTM = Behaves similar to the STGY strategies, except that the strategy only allows non-attributable orders. Any onopen, on-close close Time in Force (TIF) instruction and all pre-market orders will be sent to the primary for the primary cross. NOTE: This strategy will only access the NYSE or NYSE MKT (AMEX) primary markets. Orders received in all other symbols will participate in the cross instead of the primary. DOTI - Attempts to execute against orders in the book at a price equal to or better than the NBBO. If unfilled, it will then route to OMX BX (BX) where it will also attempt to execute at the NBBO or better. If still unfilled, the order will route to the NYSE or NYSE MKT (AMEX) where the order will remain until executed or cancelled. Any orders received with onopen or on-close Time in Force (TIF) instruction will be sent to the primary for the primary cross. NOTE: This strategy will only access the NYSE or NYSE MKT (AMEX) primary markets. QIX Programming Specification 4/26/217

Page 43 TFTY Routes to Nasdaq OMX BX, dark pools, and NYSE or AMEX without checking the book first. Directed Order Order routed directly to market center identified. See Directed Order Destination Code table MOPP - Route to all protected quotes for display size only. Depending on the time in force (TIF) on the order, the remaining shares will be posted to the book or be cancelled back to the entering party. Once an order posts to it is no longer eligible for routing. SKIP = Behaves like SCAN and opts out of sending orders to Dark Pools SKNY = Behaves like STGY and opts out of sending orders to Dark Pools SAVE - accesses BX,, NYSE, all other protected quotes and additional destinations. If shares remain unexecuted after routing they are posted on the book. Once the order is posted to the book, if it is subsequently locked or crossed, the system will not route out again. QSAV - Behaves like SAVE but routes to first. QTFY - Behaves like TFTY but routes to first. DOTZ Attempts to execute against orders in the book at a price equal to or better than the NBBO. If unfilled, the order will route to the NYSE or NYSE MKT (AMEX) where the order will remain until executed or cancelled. Any orders received with onopen or on-close Time in Force (TIF) instruction will be sent to the primary for the primary cross. NOTE: This strategy will only access the NYSE or NYSE MKT (AMEX) primary markets. LIST - Enables firms to participate in the opening and closing processes of each QIX Programming Specification 4/26/217

Page 44 security s primary listing market and also take advantage of s liquidity during the remainder of the trading day. CART - will enable firms to check the BX, PSX and book before (optionally) posting to the book SOLV - will be similar to the SAVE strategy but will route out again after posting if the book is subsequently locked or crossed. QSLV - QSLV is similar to QSAV except that it will route back out after posting on Nasdaq if crossed or locked. Reserve Size 68 6 Indicates the quantity of the Reserve size. Reserve size must be in shares either in round lot multiples or in mixed lots. all spaces = omitted 74 6 Space-filled Order Capacity 8 1 Indicates on whose behalf the order was entered. If the host receives a space value, host will use firm profile value. A = agency P = principal R = riskless Order Priority 81 1 Indicates which execution algorithm is to be utilized. If the host receives a space value, host will use price/time. Price improvement is not allowed for other exchange-listed securities. T = price/time I = imbalance only (Opening and Closing Cross) S = Intermarket Sweep (ISO) space = omitted y = Trade-at Intermarket Sweep Order 82 1 Always a space Order Time In Force 83 3 Defines the life of an order before it is canceled by the system if it is not executed or canceled by the participant. See Time In Force Order Give Up 86 4 Allows MP to indicate another MP who will execute the order. all spaces = omitted User Order ID 9 2 Indicates order ID entered by MP for internal processing. all spaces = omitted 11 4 Space-filled Order Received Date 114 8 Indicates Order Received entered by MP for QIX Programming Specification 4/26/217