Hi, I am Darwin and I am new here.
tl;dr In the next weeks, I am planing to release my private Walk Forward Analyzer, but before I do this, first I want to make sure that also the beginners in mechanical trading understand why common backtests are quite useless and why walk forward analysis is better in so many ways, so I decided to start this discussion.
I WILL RELEASE THIS TOOL FOR FREE AND OPEN SOURCE!
And as people keep asking why I release free stuff and why I post this thread on multiple forums (actually, I want to post it on all of them, so tell me if I have missed one), let me explain my motivations:
I am targeting a job in the trading-economy, and this is not easy to get. Beeing known in the community would help me a lot to accomplish this goal, so I decided to release some of my private tools for free and/or open source to make myself a name over the next months. I am not here to sell you stuff, keep that in mind, please!
For the record: I do not claim that WFA is the holy grail in system testing, but I argue that it is way better than normal backtests.
THE GENERAL APPROACH TO SYSTEMATIC TRADING
Take a trading logic => Generate an EA that trades exactly like it => Optimise Parameters => Do a backtest => Trade it live => $$$
BUT: Everybody that has ever had an EA that was a money-printing machine in the backtests (and this is very, very easy to be done), knows that a good backtest does not imply profitable live trading.
And that is the problem. We need a test-method on whichs evaluation we can rely!
STATEMENT 1: Your parameter choices are not good
Well, every EA consists of 2 things:
- the logic/script itself
- the parameters (like periods for moving averages, stop loss values etc. Just everything that can be adjusted!)
The first thing is static and “given”. And a lot traders only focus on this part.
But, an EA can behave in very different ways, depending on the parameters. And there can be billions of possible parameter-combinations (=parameterset). There are 3 approaches to determine the parameterset for live trading.
1. the intuitive approach (non adapting):
The trader just chooses the parameters based on his expert knowledge.
But, there are just too many possible parametersets. You can’t just “guess” them without evaluation and testing.
It does not matter how good you are, you are never good enough to “think through” this huge amount of possibilities in a reliable fashion!
2. the “optimise on all data” approach (non adapting):
The trader chooses the parameters based on all past data.
So, the configuration/parameters that worked best for the last 12 years, for example, are chosen to be traded live.
But, to stay up-to-date it is not a very good method to optimise the parameters on so much and therefore OLD data.
Because the market today is not the same as it was 12 years ago.
3. the “optimise on the last few years” approach:
The trader chooses the parameters based on the last few years of data.
But you can not just take this approach without testing how this “optimisation method” would have worked in the past.
And this is exactly what a walk forward analysis will do: “Optimise on the last few years”, but it tests this approach on all data in the past!
STATEMENT 2: A non-adapting EA can never make longterm profits
I mean, there is an infinite amount of possible trading-systems AND an infinite amount of ways the market can change AND an “infinite” amount of possible parameters for your trading-system.
Considering this, would you really want to bet money on the fact that you have a trading system that will always work, in the same way, without adaption, on all future market conditions? I would not.
"But why shouldn’t I be able to put a traders knowledge into a script and trade it?"
Its simple: A trader always learns, he takes input from many sources, he has knowledge about the markets and therefore he adapts his trading strategy so he can always be as close to the markets as possible.
A simple EA script can’t do this, a Walk Forward Analysis can (to some extent).
Reason #1 why there are many “profitable” EAs out there
The EA really works, it has a sound strategy and was developed properly. But the markets always change, and they can change in infinite ways.
So, at some point, the traded market-inefficiency WILL(!) change, and the EA can not adapt to this change and therefore will lose its profitability.
Reason #2 why there are many “profitable” EAs out there
is that some of them, sound or unsound systems, are just lucky.
If you send 10.000 people to a casino and let them play for a while, just due to chance, some of them will make profit over some time.
The same is for EAs, if there are enough of them, some will really make profit (even if they are in fact useless).
But as they keep trading, they will lose, as the probabilities are against them (same as in a casino).
Reason #3 why there are many “profitable” EAs out there
is the huge risk some EAs take (grid trading, martingale systems etc).
These EAs take very huge risks to make small profits. But somewhen, the risk strikes, and at that point, the EA will to lose (all) money.
Reason #4 why there are many “profitable” EAs out there
is the small timespan on which they are profitable. Its no magic to make profit for months, but its hard to make it for many, many years.
STATEMENT 3: A backtest does not tell you anything about the future performance
Well, don’t get me wrong, I strongly hold the opinion that simulations on the past are the only way to really test a trading system.
But what does a backtest tell you? Just that your system performed well on the past.
But is trading really about having a system that represents the past?
No, trading is about designing a system on the past and then trade it in the future.
THIS IS A FUNDAMENTAL DIFFERENT QUESTION THAN WHAT A BACKTEST CAN TELL YOU!
You want to answer the question “how good is my live trading performance” with the answer to the question “how good did my system perform in the past”. That logic is flawed, of course.
"But if I use out-of-sample data to verify my backtest…"
Out of sample testing is a good idea. But you only have one optimisation-dataset and one test-dataset, which is not very reliable. Walk forward analysis, somehow, is out-of-sample testing on steroids. It uses the same method, but generates 10-1000 opti/test dataset-pairs.
"So, are all backtests useless?"
No, it can help you to get sound and good trading systems, if done right.
But my point is that a good performance in a backtest does not make sure the system is also good in live trading.
Trading is a game of probabilities, and the probability that an EA is profitable, only based on a good backtest, is very, very low.
"But why should a system that performed good over the past simply stop working"
The main reason is, and that might be the most important one, OVERFITTING.
That means, the EA tackles an “random” inefficiency of the market that was just there in the past, but that was no real thing.
I found a very good picture that explains overfitting:
You see? There are infinite of such useless “relationships” in the price data, and most EAs tackle one of them which gives them very good backtest results, but that was just due to luck, and these “relationships” will not hold in the past.
And as there are a lot more of these overfitted solutions than sound ones, the chances are very high that you optimised towards such an overfitted system.
The other reason is that the markets always change. So even if you have a non-overfitted, good performing backtest, you will run into serveral problems that you can read in Statement 2
THE SOLUTION: WALK FORWARD ANALYSIS
A Walk Forward Analyser is an external program that can take EVERY EXPERT ADVISOR and, using Metatrader4, do the analysis.
SO YES; YOU CAN CONTINUE TO USE YOUR ALREADY WRITTEN EAs!
Well, some of you will already know how a walk forward analysis works. For the others here is a short overview, as I will explain the process in more details in a future thread.
A WFA takes, for example, the data from 2000 to optimise your system, then tests it on 2001 (which is, from the point of optimisation, the “future” or “live trading”).
Then it walks forward and optimises the system on 2001, test it on 2002. Then optimise on 2002, test on 2003 etc.
Do this until you walked through your whole data and only consider the “live trading” in your evaluation.
You see? With this simple tactic you can tackle the 3 problems I have described above, the lack of adaptability, the need for a evaluated parameter selection process and the uselessness of a “past-performance”-backtest.
And then, when you want to trade the system live, you do the exact same thing that you have tested:
- Optimise on the last available data, with the same optimisation settings you tested in WFA
- Trade it in the future, with the same procedure you tested in WFA
And that is the main difference to normal backtests: YOU TRADE YOUR EA IN THE EXACT SAME WAY AS YOU TESTED IT!!!
So, this is what I wanted to say, now feel free to tell me what you think about this topic, please
- Darwin