Showing posts with label OUCH. Show all posts
Showing posts with label OUCH. Show all posts

Nasdaq Ouch Specification - what do we learn

To accommodate HFT Nasdaq offers faster binary protocol: OUCH v4.

It is explicitly announced that OUCH is a limited-functionality fast order entry protocol. As such it is important to analyze supported functionality as every supported order type, message field, flow is there for a reason and can offer insight into what is used by HFT firms.

OUCH has limited support for different order types. It seems does not support pegged orders, iceberg orders, etc. On the other hand it supports Post-only orders, completely hidden orders. Assuming supported functionality is driven by needs of market makers and HFT ("new market makers"). Conclusion can be drawn as to the order types used by these firms, and it can be argued that pegged orders, iceberg orders, etc. are mainly buy-side trading tools, not HFT tools.

Another supported aspect is time in force. What is interesting is the way it is supported. Instead of traditional enum (IOC/DAY/GTC), one should specify number of seconds the order should be live before it is automatically canceled (special values provide support for IOC/Market Hours/System Hours designations). This will allow for example, for behavior when one flashes an order trying to trigger other market participants to join/adjust their quotes, without any real intention to trade at the flashed price.

Minimum acceptable quantity is supported for IOCs (as a special field on the new order message). What are the scenarios this can be used in?

Implicitly message sizes give out some information too: although it does not seem that all messages are designed with particular attention to minimize the size of the message, cancel order message is very small if compared to other messages (replace can be much smaller, but is not). In fact to send a cancel on an order it is sufficient to just set order token on a buffer prepared earlier and send it out. The whole message is just 19 bytes.

Note: order type is specified in "Display" field, with one char. It can be either "Post-only" or "Non-display", etc. (so it cannot be Post-only, non-display).

"Annonymous-Price to Comply" is the default type of order to use (if not Post-Only, not Hidden).

10Gig Fiber connection in data center is the fastest way to connect. Observed improvement is 16-22 microseconds on message turn-around (vs. 1 Gig).
Peak message rates comfortably supported on 1Gig connection are 2000 IN / 2500 OUT.

Post only functionality
OUCH supports "Post-Only" orders, but OUCH does not support order type similar to "Hide-not-Slide". One can send Post-Only, but it will be re-priced according to NBBO. FIX can be used to automatically slide, but there is no "Post-Only" designation in FIX, so one will potentially interact with hidden liquidity and pay fees and will also be on slower interface, if FIX is used. Possible solution is to detect when Post-only order is adjusted and if still convinced, cancel and re-submit at the intended price.