Algo’s External
Interface
Alexander Liss
03/19/2009
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.