ITCH Introduction
The ITCH protocol is widely used and considered an industry standard for market data dissemination. ITCH provides the public information required to build each full orderbook.
SoupBinTCP Transport
The point-to-point transport layer for ITCH payloads is SoupBinTCP v3.0. Details on this protocol can be found here.
Usernames and passwords in the SoupBinTCP Login Request Packet 'L' are case-sensitive for the NSX trading platform.
ITCH Soup data payloads will be sent by Nasdaq ME using the SoupBinTCP Sequenced Data Packet 'S'.
Reference Data Spin
At the beginning of each ITCH feed, static data messages will be sent to provide reference information about the exchange. Integer identifiers in these messages should be used as lookups when subsequent data messages are received throughout the feed (e.g. Orderbook, TickSizeTableId). See Messages to determine the messages sent as part of the reference data spin.
Decimals
The number of decimals in use for each orderbook is sent in the Orderbook Directory message [R] spin at the start of the day.
When a value is received in an ITCH Integer field in subsequent messages for that orderbook, the following formulas must be applied as appropriate to determine the actual value:
Price = Integer / 10 power PriceDecimals
Quantity = Integer / 10 power QuantityDecimals
Price Unavailable
Unless explicitly stated otherwise, a Price type field sent with a value of 0x7FFFFFFFFFFFFFFF (hex) or 9223372036854775807 (decimal) indicates that a price is not available (or not applicable).
Data Types
Data Type | Description |
---|---|
Alpha | Alpha numeric character(s), left justified and right padded with blank spaces (i.e. a char array) |
Signed Integer | Signed big-endian binary encoded (e.g. a 32 or 64 bit signed integer) |
Unsigned Integer | Unsigned big-endian binary encoded (e.g. a 32 or 64 bit unsigned integer) |
NullTerminatedChar | Alpha numeric character(s), left justified and null terminated (i.e. variable length). Maximum length includes the terminating null character. |