We have a large number of vendor-developed backtesting platforms available in the market which can be very efficient in backtesting automated strategies, but to decide which ones will suit your requirements, needs some research. Ideally, custom development of a backtesting environment within a first-class programming language provides the most flexibility and third party platforms might make a number of assumptions. Despite this, the choice of available programming languages is large and diverse, which can often be overwhelming. When automating a strategy into systematic rules; the trader must be confident that its future performance will be reflective of its past performance. There are broadly two forms of backtesting system that are utilised to test this hypothesis; research back testers and event-driven back testers.
Research Backtesters
These tools do not fully simulate all aspects of market interaction but make approximations to provide rapid determination of potential strategy performance. While these tools are frequently used for backtesting and execution, they are not suitable for strategies that approach intraday trading at higher frequencies. They are widely used within the professional quantitative trading industry to get the “first draft” for all strategy ideas before going for a rigorous backtest in a more realistic environment.
Event-Driven Backtesting
In event-driven backtesting, the automated trading strategy is connected to a real-time market feed and a broker, such that the system receives new market information which will be sent to a system which triggers an event to generate a new trading signal. These systems run in a continuous loop and can have sub-components such as historic data handler and brokerage simulator; allowing backtesting very similar to live execution. The only drawback is that these systems have a complicated design and are more prone to bugs.
Choice of Programming Language
It plays an important role while developing a backtesting platform. Different languages have different pros and cons which when weighed carefully as per needs can boost system’s performance to a great extent. We’ve briefly discussed some the most commonly used languages below:
C++ : For ultimate execution speed, it offers the most flexibility for managing memory and optimising execution speed but can lead to subtle bugs and is difficult to learn.
C# and Java: Perform automatic Garbage Collection which leads to performance overhead but more rapid development. Both are good choices for developing a backtester as they have native GUI capabilities, numerical analysis libraries and offer fast execution speed.
MATLAB, R and Python: MATLAB is commercial IDE with multiple numerical libraries for scientific computation. It boasts high execution speed but is still less appealing to retails trades as it is quite expensive. R is a dedicated statistics scripting environment which is free, open-source, cross-platform and contains a wealth of freely-available statistical packages for carrying out extremely advanced analysis but lacks execution speed unless operations are vectorized. Python is another free open-source and cross-platform language which has a rich library for almost every task imaginable and a specialized research environment. Execution speed is more than sufficient for intraday traders trading on the time scale of minutes and above.
Let now discuss the top backtesting platforms available in the market under different categories:
Retail Backtesting Platforms
- TradeStation: Provides electronic order execution across multiple asset classes. Trading from charts and live P&L portfolio management.
- MetaTrader: The main offering is a FOREX Trading platform. These are custom scripts written in a proprietary language that can be used for automated trading.
Web-Based Platforms
- FMZ Quant: Supports coding in multiple languages(Python JavaScript C++ and M Language), with industry-leading high performance QPS/TPS backtesting engine, truly reproduces history, eliminates common quantitative traps, and promptly identifies strategies for deficiencies, thus better helping to invest in real-world investments.
- Quantopian: Quantopian is actually a Hedge Fund which provides this web-based Algo Trading platform which can be used for coding, backtesting, paper trading and live trading your algorithm. In addition, it provides an amazing Research Platform with flexible data access and custom plotting in IPython notebook. Currently provides US equities data.
Institutional Backtesting Software
- Deltix: Supports equities, options, futures, currencies, baskets and custom synthetic instruments. Provides an open and flexible architecture which allows seamless and robust integration with multiple data feeds (e.g. Bloomberg, Thomson/Reuters etc.) Widely used by quant funds, proprietary trading firms etc. Not often utilized by retail traders as the software licenses are out of their budget.
- Quanthouse: Like Deltix, Quanthouse is also mostly used by institutions due to high licensing costs. Provides an all-in-one solution for data collection, strategy development, historical backtesting and live execution across instruments and portfolios.
- AlgoTrader: It’s a Swiss-based firm that offers both an open-source and a commercial license for their system along with a web based front end. Supports forex, options, futures, stocks, ETF’s, Commodities, synthetic instruments and custom derivative spreads etc. Allows full historical backtesting and complex event processing.
There are many excellent options available for backtesting; determining the right solution is dependent upon budget, programming ability, the degree of customisation required, asset-class availability and whether the trading is to be carried out by a retail or a professional investor.