The initial (and wrong) approach to design trading strategies consists on the following process: identifying an inefficiency in some market and design an algorithm to exploit that inefficiency, then optimize the variables to get the most profit from the market and finally try it live. If you follow this process, you will face what is known as curve-fitting, which means that you found the most optimized parameters for known data, but with new data the results will quickly go down to zero.
A good improvement to that approach is dividing your data into two sets (optimization and testing). The first set is used for optimization and the second set is used for testing. If you test the optimized parameters on the testing data set and results are similar, then the optimized parameters will be more robust against market changes. Most serious systems today are optimized this way (by serious I mean those designed to get money from the financial markets, not those designed to get money from uninformed customers). There are many details and small improvements to this process, such as using different optimization and testing data samples, calculating the probability of the system of being good by pure chance (not exploiting a real inefficiency), periodic optimizations, etc. But this approach has an implicit problem. By selecting the optimization set that matches the testing results you are performing a kind of curve fitting. That will lead you to worse live results than those seen in the testing set.
There are many other ways to generate your strategy settings, but that is not what I want to talk about today. I want to talk about robustness, about long term profitability and about being confident on the strategy you are trading. In fact, if your approach, no matter how strange it sounds, is able to survive the PROCESS test, then it will likely be able to make money in the future.
The key to success is in the process. That means ...
... what do you do to generate your settings? What is your PROCESS?
Ok, let's simulate how your process work.
... how do we test it?
The process of getting your trading settings is tested by a Walk Forward approach. This process, initially defined by Robert Pardo, essentially consists on defining the algorithm we use to research our settings and then deciding how often we reoptimize our system. Then, for every period we simulate live trading.
For example, let's say we have 15 years of EURUSD data, from 2001 to 2015, and we define the following:
- The data analysis window: Let's say we use here 4 years as our window size
- The process to generate our settings: in our example we will use traditional optimization 75% (3 year) and testing 25% (1 year) data split, then we choose the most stable one (the one with the best Sharpe ratio on both sets)
- Then we decide that we will reoptimize every 6 months
In our simulation, we "are" in 2005/January, and we have 4 years of data (2001/January to 2004/December). We research our settings with the data we have using our defined process. Then we "trade live" (test the results) for 6 months, from 2005/January to 2005/June, and add those results to our final backtest.
Then we perform the next step. We have again 4 years of data, from 2001/July to 2004/June. We apply the same algorithm to research our settings and "trade live" (test the results) for 6 months, from 2005/July to 2005/December, and add those results to our final backtest.
Repeating this process we will get a real backtest of what would have been our real results by using this strategy.
The process we use: RobinVOL Portfolio and RobinVOL 3
In RobinVOL 3 and RobinVOL portfolio we add additional elements to increase robustness:
- Multiple settings in different pairs and timeframes: this is essential to improve the shape of your equity curve
- Correlation analysis: we perform a correlation analysis and select those that are less correlated with the other strategies in the portfolio
- Commission optimization: if one strategy of the portfolio wants to buy, and another strategy wants to sell, we do nothing and manage both trades internally using a net position approach
We started to demo test our process in 2015/December, and we have had great results until now: Around 11% profit with 2% drawdown.
In summary, it is a walk forward approach, with a window of 24 months. For each rolling window of 24 months, we evaluate the sharpe ratio of about 100,000,000 settings, calculate correlation between them and select a portfolio of uncorrelated strategies to trade that month. The settings published every month corresponds to the last step of the walk forward simulation.
What we do in practice is adjusting our system to the behavior of the last two years. Traditionally we would be using something like 12 years in-sample/3 years out-of-sample, but with a walk forward approach, we are effectively using 2 years in-sample/13 years out-of-sample. The probability to curve fit that is near to zero.
The walk forward simulation repeats this whole process for each window and consolidated results:
- Analyze 2000/01 to 2002/01, select the best uncorrelated portfolio and then trade for a month (2002/02)
- Analyze 2000/02 to 2002/02, select the best uncorrelated portfolio and then trade for a month (2002/03)
- ... etc etc ...
- ... etc etc ...
- Analyze 2014/02 to 2016/02, select the best uncorrelated portfolio and then trade for a month (2016/03)
This is the results graph we are getting with this approach by aggregating all 1 month live trading periods (note that this graph is without compounding):
There are a lot of pending improvements in our process. Among other things, we want to:
* Increase the number of pairs analyzed (we are analyzing at the moment 21 Forex markets)
* Increase dramatically the timeframes analyzed. Currently we are just analyzing 5, 15 and 60 minutes. But RobinVOL 3 is able to trade on any timeframe (3 minutes, 7 minutes or whatever)
* Adjust the risk of settings based on trading frequency and sharpe ratio
* Incorporate different window sizes to our portfolio (trading both long term robust settings and short term quickly adapting settings at the same time)
* Add our Machine Learning module and other modules we have been developing this years
There are a lot of work to do, but we plan to release RobinVOL 3.0 as soon as possible and keep incorporating all the new features in subsequent versions.
If you want to know more about RobinVOL 3, please sign up for our newsletter. You can also buy now RobinVOL and upgrade for free to RobinVOL 3 when the time comes. To download monthly portfolio settings, please register.