Showing posts with label Nasdaq. Show all posts
Showing posts with label Nasdaq. Show all posts

Technical notes on HFT orders

To facilitate HFT trading and rebate strategies exchanges/ECNs introduced order types that allow to send limit orders that will:
  • be posted only (order will not take liquidity against resting orders)
  • can be temporarily hidden in order to comply with RegNMS but will light up asap (this helps to get to the top of the queue without resorting to bombarding exchange with new orders at the time quote moves)
Following is description of the functionality offered by major market centers in this area.

BATS:

To send limit order that will potentially lock NBBO, but will be posted at submitted price and will light up as soon as possible (based on 04/20/2009 conversation with BATS trading desk):
  • set RoutingInst (9303) = P (BATS Only Post Only)
  • do not set 9479 (DisplayIndicator)
Order will reject rather then remove liquidity if there is something on the other side.

So this order should be sent in the following scenario: Market is one cent wide and is about to tick down. BATS bid fades. If we want to be at the top of the queue on the offer on the new quote, we would send this order with new offer. The order will be booked, but will not display until other markets fade the old bid.

DIRECT EDGE

In Direct Edge terminology there is "Hide-Not-Slide" order that is used in the fashion similar to "BATS Only Post Only". If on entry order locks other market it will be booked at the entry price, but will be hidden to comply with RegNMS. As soon as price level is free, order will light up.

Hide Not Slide:
If, upon entry, a Hide Not Slide order is locking or crossing the NBBO, it will be ranked at the locking price and displayed 1 tick worse than the contra quote. This order retains its book priority until filled, cancelled or expired. Alternative posting options to Hide Not Slide are: Price Adjust (new book priority), Single Re-Price, or Cancel

  • Tag 9215 (LiqProvOnly) Liquidity Provider Flag = Y (Add Liquidity only)
  • Tag 18 (ExecInst) = h (Hide Not Slide); if locking or crossing the NBBO, order will be adjusted to post as follows: Hidden orders will be booked at the locking price. Displayed orders will be displayed at a compliant price (1 tick worse than the NBBO) and also be booked as hidden at the locking price.

ARCA

Arca has a PNP Blind (Post-no-preference Blind) order type to support posting functionality. This is supported on both FIX and ArcaDirect interfaces. ArcaDirect offers faster order entry interface with more consistent latency (better holds at peak times).

The PNP-Blind orders is similar to Hide-Not-Slide (Direct Edge) and Bats-only-Post-only (Bats) order types.

The order should be designated as follows:
  • Extended Execution Instructions field = 'A' (Add liquidity only)
  • ExtendedPNP = 'B' (Extended PNP Blind)
Definition of the "Post No Preference Blind" (PNP B) Order:
Marketable Contra Orders will first execute against the PNP B Orders, then the rest of the book. PNP B Orders will be ranked in time priority regardless of the price of the order when they are
blind. When the PBBO moves away from the price of the PNP B but the prices continue to overlap; the PNP B will remain blind but adjust its price to the PBBO. When the PBBO moves away from the price of the PNP B and there is no longer price overlap, the PNP lights up and becomes a regular limit order including standing its ground.

NASDAQ

Nasdaq OUCH supports "Post Only" orders but does not support order type that will hold order at entry price and will temporary hide order to comply with RegNMS, automatically lighting it up when price level frees up. See Nasdaq OUCH analysis for details.

To submit the order specify: Display = "P" (Post Only)

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.