Any area in automated trading needs a quality check, so the strategy’s or algorithm’s performance needs to be tested on historical data. The piece of software that does this testing is called a backtester.
So, backtester is a software module that receives 3 components as input data: market data, the automated trading strategy (algorithm) and a specified time range. Backtester performs testing of the specified strategy with the specified settings, for specific time range and provides a list of transactions and the final result of the trading period. Without such testing on historical data, your automated strategies lose a number of advantages, such as:
a) you don’t know the effectiveness of your strategy is;
b) you can miss significant technological errors;
c) there is no understanding of how much your strategy is protected from crisis and anomalous periods;
d) the process of analyzing and finalizing strategies becomes simply meaningless.
But despite a number of advantages and necessities, there are three main dangers while applying or developing a backtester:
1. Incorrect or inaccurate testing.
This is the worst could happen. Such backtesters are not only lead to a huge loss of time, but also can lead to big unjustified financial losses.
2. Non-flexible or poorly designed architectural-wise backtesters.
It seems to me that this is the most common problem. In many backtesters, it is impossible to test complex strategies, simply because something is not provided by poorly-designed architecture.
3. Developing strategies is too complicated and time consuming.
Most often this applies to home-made backtesters, in which there are no mechanisms that simplify the development. In this case, everything can be fine, except that it takes a lot of time to develop.
In our example, at the very beginning of our algorithmic trading path, we chose the option to develop a backtester in-house. We took a long way of trials and errors before we got an adequate and convenient tool for analysis. The most flexible backtester is such that you can easily customize for any need. A good option would also be to work with someone who can change or adapt the backtester to your goals. Flexibility and extensibility of functionality is extremely important!
Bogdan Ivaniuk. CTO, London Analytics