Algo’s External Interface
As car controls do not reflect internal workings of a car, but provide ways to control the car intuitively, algo’s External Interface does not need to reflect internal workings of the algo, but rather has to provide ways to control algo execution intuitively.
An algo allows stretching a trade over the set by a trader trading interval. The algo generates series of chilled orders (new and replaces) of various types and cancel them, if needed.
Ideally, vwap price achieved this way should match some vwap price computed for the trades observed on the market. There are situations, when this criterion is not useful, for example, when the name is traded thinly and algo’s trading seriously affects the market, or when the algo is designed to exploit market inefficiency and to trade better, than average.
Market is unpredictable and it makes sense to set various hard limits of algo’s trading that it does not trade, when market situation is not conducive to trading.
Limit Price is an obvious such hard limit.
Often it is useful to request restriction of trading, that algo does not move market in adverse direction. In this case, the algo sets hard limits on its trading volume and frequency of trading to limit trading, when there is limited liquidity on the market.
When a trader has developed intuitive understanding of how frequency and size of child orders should be distributed over the trading interval, and has some anticipation of market behavior, he attempts to shape the sequence of child orders and cancellations.
In absence of anticipation of market behavior, he could request child orders to be distributed evenly (sizes and frequency) over the trading interval.
When there is a good chance that current distribution of market trading (volume and frequency) is similar to distribution exhibited in the past, one could use the forecast of this distribution and the trader could request to use this forecast instead of distributing trades evenly over the trading interval.
In many trading intervals, market trading is distributed evenly. In such cases using of this form of forecast does not improve results of trading. However often, in the beginning and in the end of trading day, distribution is not even and the use of such forecast could be helpful.
Other factors could be considered, when one distributes child orders over the trading interval.
One could expect there is a dangerously high probability of price movement in adverse direction and request orders distribution, where as much as possible is sent upfront to mitigate effect of this possibility on vwap price.
Sometimes, it is important to trade as close as possible to the closing price, then orders should be distributed in the way that as much as possible is sent close to the end of trading day. Note that in this case, the use of forecast of trade distribution in the end of trading day is helpful, but it is usually not exposed in the External Interface.
When there is sufficient liquidity on the market, a trader could request this distribution to roughly follow the way the market trades and to keep low profile – set some low soft limits on volume and frequency of algo trading.
This limitation could be combined with described above distribution of child orders.
Note that soft limits are set in addition to hard limits, even when they look similar – they do not interfere.
Normally, a trader has a lot of time to sell or buy a name and he is more concerned with not moving market in adverse direction. In this case completing the trade in a given time period is not an issue – later a new trade could be initiated with the rest of the order. However, sometimes anticipated events press the trader to complete the trade in time. To fit in this limitation, the trader has to trade less efficiently – he has to pay the price for the urgency of the trade.
Ideally, a trader should specify how much he is ready to pay for the trade completion and the algo should figure out how to redistribute orders to achieve completion, when it is possible with this limit on trading cost. However, many algos are not sophisticated to this degree and they require more detailed guidance.
Usually, the trader has to specify a level of urgency, where higher urgency leads to distribution of orders (price, sizes and frequency), which has more chances of completion. In addition, special “cleanup at the end” trading logic could be requested, which allows trading in the end of trading interval with potentially high trading cost.
Sophisticated traders exploit market inefficiencies caused by mistakes of other traders or by circumstances forcing traders to trade inefficiently. To exploit such inefficiencies, one needs sophisticated and highly controllable algos.
In these algos, shaping of the distribution of child orders is defined in terms of rules defined in terms of a few trading characteristics taken together.
For example, a limit on volume and frequency could be tied to the price or price change.
There are different classes of algos.
Low frequency algo keeps relatively long interval between child orders allowing market to “forget” the previous order, when it sees the next one. This type of algos is well known and broadly used. It is used with long trading intervals. It is easy to monitor and easy to interpret what it is doing and why.
High frequency algo instead of relying on long interval between child orders reacts to various market events. This type of algos is relatively new and often used with short trading intervals. When level of liquidity is high, it trades substantially differently for low frequency algo. It could be difficult to monitor visually, because it trades fast.
It could be two different algos shaped the same way – high and low frequency. They are used differently, as a sports car is driven differently from an ordinary car.
As a sports car requires special precautions from a driver, a high frequency algo might need more hedging than a low frequency algo.
A trader chooses the type of algo according to his needs and understanding of market conditions.
It is possible to send a few child orders practically simultaneously to different destinations – to a market and to alternative trading systems. An algo could do this on each its step, and this option is provided to a trader.
While an order is processed, a trader could realize that situation on the market is changed or that this particular algo is not trading well in current market situation. In such case, the trader could switch the algo to another one. Then, all child orders generated by previous algo are cancelled and a new algo starts.
Similar approach could be used when an algo failed to complete the order in a give time interval. A new algo could be started to complete the remainder of the order.