Designing an automated/algorithmic trading system(ATS) can be a challenging task especially when scalability, extensibility and configurability
are taken into consideration.
To start with, let's take a look at what are the common functional areas that an automated/algorithmic trading system(ATS)
needs to cover:
- Market data this includes the handling of real time quote feed, index feed etc
- Reference & static data this includes the basic info and/or statisctic info of the assets you wish to trade
- Downstream interface this is where the platform interface with your broker/exchange, sending order and receiving executions
- Upstream interface if you are a broker, this is where the platform recieves client orders from
- Order management an ATS requires an order management sub-system with more or less complexity depending on the requirements
- Strategy engine this is where your trading strategies are running. It handles most of the strategy requests
- GUI Unless you are very confidence with your system and you want to run it as a black box, most of the time you need a GUI to
monintor how your strategies are running.
Next, let's take a look at what are the NON-functional areas that an ATS needs to cover:
- Multi-Threading model most ATS choose a multi-threading model. This will allow the system to perform tasks in parallel.
- Events model An event drived system allows any component in the system to subscribe and process events that it is interested.
This brings several benefits such as: decoupling of components, processing request asynchronously, hiding low level messaging system details
- Persistence model people tend to think about databse when we come to the need of persisting data. A persistence model is more than
just a database. While using database as underlying support, persistence model also includes the object-relational mapping,
recovery strategy, data achive & truncation.
- Configuration model the system needs to be configurable to allow it run for different environments
- Distribuation model multiple servers may work as a cluster to share large work load when it needs
As you may see, an ATS can be quite complicate if one starts from scratch. If you are only interested in writing trading business logic and do not want to be bothered
with all the above complication of software infrastructure, you may choose to
pick an existing ATS platform as base to start with.
Cyan Spring ATS covers the functional and non-function requirements listed above. We also understand that each trading system may need to run in a different environment.
Cyan Spring ATS provides a software framework for users to customise the product and develop their own trading strategies. As versus to traditional API,
a software framework give you more power to customise your system, at the price of slight more
complicate for you to start with.
In the coming sections, we are going to discuss about the skill requirements of doing development on Cyan Spring ATS,
as well as going through the key components in Cyan Spring ATS.