Cyan Spring ATS
Open Source Algorithmic Trading Software
- Strategy data - these are parameters for strategies
- Strategy logic - java codes that are built on top of Cyan Spring ATS framework
A Single-order strategy, or single-order strategy, involves in trading only one instrument and one side transaction(buy or sell). It is usually created from an order, e.g. buy 0005.HK 200000 @ $68.2. The strategy is considered completed when the order is fully filled. The typical usage, though not limited to, is to avoid market impact while trading some large volume of orders.
A single-order strategy usually takes a benchmark as its measurement of performance. Some commonly used single-order strategies are VWAP, TWAP, POV, IS, ICEBERG, SDMA etc.. This article provides some good information about single-order strategies.
Who are interested in
Both buy side and sell side may be interested in single-order strategy:
- Buy side - Mutual funds and hedge funds. They are the ones with orders of large volumes. If they do not want to use the sell side services, they may run an algo engine at their site and execute strategies through a broker DMA link.
- Sell side - electronic trading business of investment banks and prime service brokers. They must provide single-order strategy trading services for their clients(who dont want the hassle of running their own algo engine).
Strategy parameters controls the strategy behavior. For single-order strategies, strategy parameters are embedded in the order, or called Parent Order. Common parameters for single-order strategies are
- Strategy Name(VWAP/POV/ICEBERG/...)
- Price Limit
- Start Time
- End Time
- (Parameters customised for this strategy...)
There are also other parameters which are strategy specified. e.g. POV% parameter for POV, Display Quantity for ICEBERG.
POV stands for Percentage of Volume. It is used when you want to execute an order relatively quick but do not want to cause too much market impact. POV uses the POV% parameter to control its execution speed. Basically, it will try to make its executed volume to be POV% of the market executed volume.The formula:
X = POV% * MEV - OEVwhere
X - quantity to be executed
POV% - POV parameter. e.g. 30%
MEV - Market executed volume since strategy started
OEV - Order executed volume since strategy started
you may look at the classes in com.cyanspring.strategy.singleorder.pov package to see how it is implemented. The codes may look simple because most of the heavy duty jobs are already done by the strategy frame work.