## 4 exchange feeds without TCP/multicast

  • eSpeed
  • Dalian Commodity Exchange
  • SGX Securities Market Direct Feed
  • CanDeal (http://www.candeal.com) mostly Canadian dollar debt securities

I have evidence (not my imagination) to believe that these exchange data feeds don’t use vanilla TCP or multicast but some proprietary API (based on them presumably).

I was told other China feeds (probably Shenzhen feed) is also API-based.

ESpeed would ship a client-side library. Downstream would statically link or dynamically link it into parser. The parser then communicates to the server in some proprietary protocol.

IDC is not an  exchange but we go one level deeper, requiring our downstream to provide rack space for our own blackbox “clientSiteProcessor” machine. I think this machine may or may not be part of a typical client/server set-up, but it communicates with our central server in a proprietary protocol.


what hours2expect execution msg{typical U.S.exchanges

There was a requirement that within 90 seconds, any execution on any online or traditional broker system need to be reported to the “official” exchange. For each listed security, there’s probably a single “official” listing exchange.

Take IBM for example.

  • On NYSE, executions only take place after 9.30am, usually after an opening auction.
  • On-line electronic brokers operate 24/7 so an execution could happen and get reported any time. However, NYSE data feed only publishes it after 4am by right. I don’t know how strict this timing is. If your feed shows it before 4am I guess you are free to discard it. Who knows it might be a test message.


Asia catch`up with U.S.exchanges

Thanks Sonny,

I could imagine that u.s. exchanges are more advanced in terms of trading rules, operational complexity, matching engine, order types … because presumably u.s. exchanges have more volume and more variations in securities. It’s like a bigger, older hospital is more sophisticated since it has treated many more patients.

On the other hand, I read more than once (over the last 7 years) that in terms of pure latency the bigger exchanges in the U.S. are often slower, but only moderately, so everything still works fine. I don’t know any capacity concerns on the horizon. Some of the smaller exchanges in Asia were aggressive to beat the bigger exchanges on latency. World #1 fastest exchange is now Bombay.

Good sharing.


OPRA: name-based sharding by official feed provider

https://www.opradata.com/specs/48_Line_Notification_Common_IP_Multicast_Specification.pdf shows 48 multicast groups each for a subset of the option symbols. When there were 24 groups, the symbols starting with RU to SMZZZ were too heavy too voluminous for one multicast group, more so than the other 23 groups.

Our OPRA parser instance is simple and efficient (probably stateless) so presumably capable of handling multiple OPRA multicast groups per instance. We still use one parser per MC group for simplicity and ease of management.

From: Chen, Tao
Sent: Tuesday, May 30, 2017 8:24 AM
To: Tan, Victor
Subject: RE: OPRA feed volume

Opra data is provided by SIAC(securities industry automation corporation). The data is disseminated on 53 multicast channels. TP runs 53 instances of parser and 48 instances of rebus across 7 servers to handle it.

nyse opening auction mkt data

There are various order types usable before the 9.30 opening auction (and also before a halted security comes back). We might receive these orders in the Level 2 feed. I guess the traders use those orders to test the market before trading starts. Most of these orders can be cancelled, since there’s no execution.

The Imbalance data is a key feature by the exchange auction engine, and possibly very valuable to traders. It has

  • indicative match price, which at 9.30 becomes final match price
  • imbalance at that match price

The auction engine looks at all the orders placed and works out an optimal match price to maximize execution volume. Traders would monitor that value published by exchange, and adjust their orders. This adjustment would be implemented in an execution algorithm.

total number@exchange tickers+symbols

In one major market data provider, there are 20 to 30 million “instruments”, mostly derivatives. Globally there are more than 300,000 stocks on various trading venues, as of 2017.

This site aggregates 300 to 400 “sources”. Each source could be a data feed or a distinct trading venue. For example, Nyse has at least 3 independent trading venues — nyse classic, Arca and Amex.

liquidity = immediacy + resiliency

A Market (a particular exchange or an instrument) shows its true liquidity upon a Client-market-order. The other types of order are typically market-maker orders, which are (always?) limit orders.

#1 obvious sign of every illiquid product — wide bid/ask.
#2 obvious sign — tiny sizes of quotes (i.e. limit orders)

Now the defining features of a Liquid instrument. Look at EUR/USD…
1) Immediacy — client order is immediately filled. It’s necessary but not sufficient to have a tight bid/ask spread.

2) Resiliency — low-impact. Minimal impact on equilibrium price even in the face of a large trade. Depth of market. If there are relatively large bid/ask volumes close to the best bid/ask, then impact will be low.

2a) strong demand — large bids around mid-price
2b) firm and adequate supply — large offers around mid-price

Even the largest instrument in the world — EUR/USD can show a (temporary) drop in mid-price after a 100mio trade.

dark pools – a few observations

Most common Alt Trading Service is the dark pool, often operated by a sell-side bank (GS, Normura etc).

A “transparent” exchange (my own lingo) provides the important task of _price_discovery_. A dark pool doesn’t. It receives the price from the exchanges and executes trades at the mid-quote.

Market order can’t specify a price. You can think of a market buy order as a marketable limit order with price = infinity. Therefore, when a market order hits a limit order, they execute at the limit price. When 2 limit orders cross, they execute at the “earlier” limit price.

Therefore, on the exchange, I believe all trades execute either on the best bid price or best ask. I guess all the mid-quote executions happen on the ATS’s.

Dark pool is required to report trades to the regulator, but often with a few sec longer delay than an exchange.

Dark pool may define special order types beside the standard types like limit orders or market orders.

Forex is quote driven, not order driven. Forex has no exchange. The dominant market is the interbank market. Only limit orders [1] are used. However, within a private market operated by a single dealer, a “market order” type can be defined. I feel the rules are defined by the operator, rather than some exchange regulator.

[1] A Forex limit order is kind of fake – unlike the exchange’s guarantee, when you hit a fake limit order that dealer may withdraw it! I believe this is frowned upon by the market operator (often a club of FX banks), so dealers are pressured to avoid this practice. But I guess a dealer may need this “protection” in a fast market.

StopLoss order ineffective when markets crash

In terms of execution price, I feel limit orders are honored by the exchange (FX has no exchange), whereas StopLoss is a “best-effort” promise.  Key is the “rollback” strategy.
* For a limit buy/sell, if the sell-side can’t fulfill your order, you roll back to the original empty position.
* For a SL sell (for simple illustration) order, you already have a long position. When market moves against you, that position has very low MV, potentially $0 MV. If sell-side can’t fulfil your specified price, you can’t rollback to original position. Instead you must grab the next best and exit at an inferior price than specified. 

Yes, your loss will be $2100. The stop loss will not limit your loss to just $1000. These are exception cases which cannot be foreseen. Even for daily trade, if it is volatile and if the currency pair is not actively traded, your loss will depend on the next best price.

Subject: stop loss order ineffective when market crashes

You mentioned FX stoploss order may fail to work. I’d like to learn more from your first hand experience.

This is what I know from reading/discussing.. —

Suppose I have bought USD/SGD at 1.23 so I place a SL sell at 1.22, to limit my loss to S$0.01 (S$1000 loss for a USD100k notional). When market crashes on a Monday morning after a weekend, it opens at 1.211/1/212 (bid/ask), so my SL and other people’s SL execute at whatever best bid price there is, which is 1.211 at Monday open and drops further. My long is eventually unwound at 1.209. Loss is  S$2100. In this story, the StopLoss order doesn’t limit my loss at S$1000.

Is this similar to your experience?

Stop orders — LimitOrder, StopLoss, TakeProfit …

See posts on limit^stop orders…

To understand stop orders, it’s instructional to contrast Limit orders vs Stop orders.

Your Limit B/S order gets executed when market moves … in your favor.
Your Stop B/S order gets executed when market moves  … against you, regardless whether you have an open position or not.
** Stop S is a Sell. You prepare a Stop S Below the mkt. It’s executed when mkt moves Down, but before Down too much. (If you buy and then quickly Execute a Stop Sell, you end up buy-high-sell-low. This would be due to a miscalculated buy and you want to cut loss quickly.)
** Stop B is a Buy. You prepare a Stop B Above the mkt. It’s executed when mkt moves Up, but before Up too much.

Stop orders are mostly used for SL. Other uses tend to be related to SL.

For example, after an FX trade at 1.22, you often prepare an offset trade SL and a similar offset trade TP. You prepare both but only one of them will get executed. SL and TP will box up your 1.22 “position open price”, i.e. one of them placed at a higher and the other at a lower price around your position.

For a buy@1.22
* the StopLoss is a sell at Lower price — at a Loss (buy high sell low)
* the TakeProfit is a sell at Higher price.

Now, the TP is just a regular limit order, while the SL is a stop order.

I think the exchange only knows LO and market orders. I think the exchange order book consists of LO only.

Here’s a fundamental difference between LO and SO. When triggered, stop orders become a market order available for execution at the next available market price. Stop orders guarantee execution but do not guarantee a particular price. Therefore, stop orders may incur slippage — There is a substantial risk that stop-loss orders left to protect open positions held overnight may be executed significantly worse than their specified price. I guess this would hapen when mkt moves against you too fast and too many like-minded investors have a SL order at the same price. Therefore, Saxo only told me SL order “usually” does limit the losses.

In contrast, LO is price-guaranteed by the exchange (though not sure about FX where there’s no exchange).