OUCH 5.0 Protocol Overview#

NASDAQ accepts limit orders from system participants and executes matching orders when possible. Non-matching orders may be added to the NASDAQ Limit Order Book, where they wait in price-time priority.

OUCH is a low-level, high-performance order entry protocol for sending, replacing, canceling, and receiving updates on orders. It is designed for proprietary trading systems requiring maximal throughput and minimal latency.

For market-wide visibility into all orders, the companion protocol ITCH must be used.

Architecture#

  • OUCH uses logical messages passed between client and exchange.

  • Each message type has a fixed length.

  • Messages from NASDAQ to client use a sequenced, guaranteed-delivery transport (e.g., SoupBinTCP).

  • Messages from client to NASDAQ are not guaranteed but safe for benign retransmission. All host-bound messages are designed so that they can be benignly resent for robust recovery from connection and application failures. Each physical OUCH host port is bound to a NASDAQ-assigned logical OUCH Account. On a given day, every order entered on OUCH is uniquely identified by the combination of the logical OUCH Account and the participant-created UserRefNum field.

  • Each OUCH port is bound to an OUCH Account, and each order must use a unique, strictly increasing UserRefNum.

Data Types#

  • Alpha fields: fixed-width, left-justified, space-padded.

  • Numeric fields: big-endian. Types:

    • Long (8 bytes)

    • Integer (4 bytes)

    • Short (2 bytes)

    • Byte (1 byte)

  • Prices: implied 4 decimals, unsigned.

  • Max supported price: $199,999.9900 (decimal, 7735939C hex).

  • Market order sentinel: To flag an order as a market order for a cross, use special price: $214,748.3647 (decimal, 7FFFFFFF hex).

  • UserRefNum: unsigned, strictly increasing. For a given OUCH port, the UserRefNum is used as a transaction identifier, and must be both unique and strictly increasing throughout the trading day. The UserRefNum begins at 1 and the system ignores new order requests identified with UserRefNums lower than the last one processed, assuming they are retransmissions.

  • UserRefIdx: optional multiplexing key.

  • ClOrdID: alphanumeric.

  • Optional attributes: encoded as TagValue (see below).

TagValue Element#

Field

Offset

Length

Type

Notes

Length

0

1

Numeric

Remaining length of element

OptionTag

1

1

Numeric

Option identifier (see Appendix A)

OptionValue

2

var

var

The option’s value

Fault Redundancy#

A single OUCH Account may be bound to multiple mirrored physical hosts. All hosts accept inbound messages and emit identical outbound messages. Clients may retransmit safely during failover.