Model & Backtest
The HAL Model
The portfolio is composed of a basket of 7 currency pairs, and for each pairs, the same algorithm is replicated but the calibration could be different. Indeed, each market has its specificities and the model works well but it depends on the liquidity factors and the accuracy of the data. I voluntary made the choice to use very simple mechanism. Indeed, the algorithm determines the position and the direction to hold each day at the London closing (18h00) and return a fixed position for the next day.
The following equation summarises the tree based approach I have:
SignalFX = I1 * I2 * R1
I1 determines the configuration type. A result of 0, 1 or -1 implied respectively a neutral, long or short position.
I2 is a momentum indicator (It could return the same value as I1). It’s an aspect of the model that I can improve but it’s very complex.
R1 is the risk model; it could return only 0 or 1 value.
The overall model is based on 6 parameters, 2 for the configuration and 4 for the momentum plus 2 parameters for the risk model. I tried to minimize the number of parameters because of optimization issues.
Finally, from an investment perspective, I monitor the risk with a Value at Risk 99% over a horizon of 5 days.
The Backtest
In order to achieve a reliable and accurate backtest, I’ve selected several key indicators and I’ve built an Excel spreadsheet to test my assumptions.
I list below the key indicators and the optimization rule:
- Net P&L : The profit and Lose results included transaction cost (maximise)
- Trade Ratio: number of order made on a fixed frequency (target)
- Hit Ratio: Number of positive P&L against negative (maximise)
- Max Drawdown: Maximun lose recorded (minimise)
I will present in this section the backtest of the alpha engine on the EUR/USD pair only and then present the results of the overall portfolio.
The following table (1) show the results of the first run of the model without any optimisation, the results were not satisfactory. Indeed, the trade ratio was to high and the level of the gross P&L was not high enough to compensate positively the transaction costs. The first step of the optimisation was to reduce by 2 or 3 the trade ratio and the second step to optimise the model parameters to increase the Hit ratio and decrease the max drawdown. The second table (2) show the final results.
Table 1: Alpha Engine backtest without optimization
Table 2: Table 1: Alpha Engine backtest with optimization
Remark: When you build you model, you need to identify the impact of each parameters on the key indicators. This is essential to understand the model behavior.
- decrease of the P&L (-50%)
- Drop of the trade ratio from 61% to 11%
- Increase of the Win ratio
- Drop of the Max drawdown from -2 180 $ to -545 $