when it comes to measuring the stability of a trading system, everyone has a different opinion about what they consider to be stable. For some, it is successful backtesting for a time range of 6 months, for others 1 year, 10 years – or even more? Should out-of-sample data be used? And if so, how much? Is all of this even enough? I have been plagued by these questions for my whole career as a trading system developer, and hence for the past 13 years. Just recently, in the last 5 years or so, I found it to be confirmed that the “the more data, the better”-approach always seems to lead to more stable trading systems in all of my experiments. So my choice was clear, I am going to take it to the extreme (like I always love to do with anything in life). I´ve purchased M1 data from a high-quality data brokerage service (the data that banks use to create their trading systems) which covers a time range from 1986 to 2021 for 28 currency pairs and started to code custom scripts to verify the quality of the data and to eventually fix even the smallest problems like wrong price-spikes and data-holes. Because developing a good trading system always starts with high-quality data, otherwise, you are getting distorted backtests and optimization results, which will do the system no good. After several weeks of work, I had finally manually fixed even the slightest problems in the data and it was time to start the server farm again, letting it search for a strategy that would:
- Pass a 50% in-sample optimization and have 50% out-of-sample results that look just as equally good as the in-sample portion.
- Additionally passes tests on at least 21 completely unseen symbols with an R-Squared (a measurement method of the stability of the growth of the equity curve) value of at least 55%
- Also survives heavy Monte Carlo tests with increased spread, increased slippage, 10% skipping of trades, and up to 50% randomized history data. Both of the last two steps make sure that it will work well with almost any broker in the long run so that different trades at different brokers (which happen with any EA in an over-the-counter market like Forex) do not matter if you just trade it long enough (1 to 2 years+).
It was not until the end of February 2021 until such a system finally came along, and you´ve guessed it right, it was Invesard, found after about 5 years of heavy number crunching (and high energy bills) as the only system that would fulfill all these criteria (and very well so). So now comes the really exciting part. I´ve decided to run it on even more unseen symbols. Symbols that it was never optimized on and that also have not been used in the 21 symbol cross-validation mentioned above. Following are the results of these tests.
Let’s first backtest it on the symbol it was created on: GBPUSD H1, 1986 to 2021, with separate long/short equity growth at the lower chart. It can be seen that it also has a very symmetric growth between long and short trades, both being almost perfectly aligned. Another important test that I use for stability, to not get a strategy that is biased to one side, regardless if the market goes up or down.:
Let’s start to go a bit more exotic in the next test. This is a backtest on AUDCAD H1. For this one, I´ve used Dukascopy data, as everyone seems to use that rather “a little problematic” data with all the holes and spikes that come with it, especially prior to 2012 and which is one of the reasons I never considered it for developing a trading system. Still, I´ve been asked to use that data over and over again, and so I´ve done just that. As we see, it makes a profit and a still pretty stable one on top. However, we can see that the long/short equity curves are not that well-aligned. I know that many traders would go ahead and trade it because the overall equity curve looks OK and stable, but it´s something I would not consider trading, as the internal stability is simply too low for my benchmark. However, we can see that the system, while fully optimized for GBPUSD H1, still does very well on a completely different and unseen symbol, which has nothing in common with GBPUSD, as both of the involved currencies (AUD and CAD) are not present in GBPUSD. On top, AUDCAD tends to have completely different properties of price movements, it tends to range and mean-reverse, while GBPUSD has a lot of breakouts/trend phases.:
And here is one more, this is EURJPY H1 (again Dukascopy data). Again, two completely new currencies are involved (EUR and JPY) that the system never saw before in that combination in any of its optimizations or cross-validations before. And mind you, this is still the Invesard version that was fully optimized for GBPUSD H1.:
Now I know that the following does not look *that* good, but, this is Crude Oil which we are backtesting Invesard on now! Again, with the GBPUSD H1 optimization and a fixed stop-loss of 70 pips. This has so few in common to GBPUSD as it ever could, and the fixed stop-loss of 70 pips, one would think, does make no sense on Crude Oil either and should destroy Invesard completely in this backtest. But it still manages to grow the capital.:
That is the reason why I believe it was worth all of the efforts, energy bills, and sleepless nights of optimizations for the last 5 years when “searching for” Invesard – that one universal strategy. Its underlying logic seems to have uncovered an edge that seems to exist in almost any financial instrument out there (which is also the reason why more versions of it, optimized for different symbols, will follow in the future). Something I have never discovered in my whole 13 years of trading system building before. It should hopefully serve us well for a long time to come…
Register at Binance