Backtesting is an important tool for the effective development of trading strategies. Backtesting simulates the performance of trading strategies using historical data. The historical data is fed into the strategies as if it were live data, and their performance is recorded. This allows identifying strategies with good historical performance and selecting model parameters to optimize the performance.
The expectation is that strategies that performed well in the past may also perform well in the future, but that is far from guaranteed. And conversely, strategies that performed poorly in the past are likely to perform poorly in the future.
But backtesting carries the risk of overfitting a strategy to past data (in-sample), by introducing too many model parameters and adjusting them to enhance historical performance. As a result, the future (out-of-sample) performance is likely to be poor.
Backtesting can require significant time to run on computers. So we've developed a fast backtesting engine written in Python and C++, with a convenient user interface. Once the user has specified their strategy, they can backtest it with different model parameters using sliders and other GUI widgets. After the strategy has been backtested, it can be deployed into paper trading to better evaluate its out-of-sample performance.