I’d like to introduce an updated version of the Challenger EA. After seeing it crashed on the rally of EURUSD on the first week of April 2021, I had to go back and look at what happened. The algorithm is already Tier-1 performer, there’s nothing much to change but there’s one aspect which can make the whole difference.
Just as reminder, the system managed to get us a partnership deal with institutional funds, all automated. See http://quantisfx.com/challenger-ea/
Looking back at the data, I found out the algorithm was opening multiple trades within a very short amount of time which only increases my exposure since it does take and manages basket of trades. This is actually the same issue which happened back in September 2020 which brought my ~10% drawdown all the way down to 34%. Back then I thought I fixed it by implementing a certain parameter. Backtests were showing very good returns at safer risk so I went ahead with it and deployed the V2 update live.
Fast forward 7 months, same thing happens. Since my algorithm has been proven to be an overall top performer, I cannot go and start re-writing/implementing too many things which would possibly negatively affect the performance. Looking at what I have already worked on and implemented, I found a way to adapt this originally very scalper EA to a day trading/swing trading EA. Same logic for entries, exits and money management but I have now introduced a formula which will adapt the basket of trades depending on current market volatility.
Another feature which I implemented is by changing the “sensitivity” or precision of the backtests. One of the most common errors in backtesting EA’s is trying to overfit or over optimized the equity curve. You most likely have seen them before, they usually have a perfect bell curve going straight to the moon. These are achieved by using smaller incremental steps in parameters. For example, let’s say you have an algorithm which opens trades depending on the moving average. If you backtests using the moving average from a range of [1; 50] using steps of 1, you will backtest your EA 50 times. If you use steps of 2, you will backtest 25 times. Steps of 5, 10 times. You get the point. The bigger the steps the less precise it becomes but also means it is now more robust since parameters are now looking for the overall picture as you decrease your precision. The initial settings were using parameters with a precision of 1 and range of [1;20]. I have now re-optimized all pairs using a range of [1;20] and step of 4. I have thus decreased the precision by a factor of 4 which prevents overfitting while validating the robustness of the algorithm.
It is important to find the other parameters which are closely connected to the parameter you want to optimize since as you change 1 value, the “whole” system has now changed behavior. Because I don’t want to break an already winning algorithm, I had only a few parameters to re-optimized all at once to give a better representation of the portfolio. This required 125 different tests for each pairs(7) making it a total of 875 tests. Out of each 125 tests per pair, I would only take the best performing settings based on Total Profit, Number of Trades and Max Drawdown($).
All backtests results were performed under these settings:
Starting Balance: 10,000$
Starting Lots: 0.01
Spread: 5 pips
Period: 2016/01/01 – 2021/01/01
Money Management: Disabled
Before we start to analyze the above data, I have to mention these were done with the Auto Money Management disabled, meaning that it will always start a new basket of trades with the 1st trade at the specified lot, 0.01 lot for our testing purposes. This adds another level of credibility to the performance of the EA since all we want is to see a straight line going up, confirming the mechanics of the algorithm without having the money management aspect biasing our results. If we can obtain a straight line using fixed starting lots, then if we had use Auto Money Management, we would be able to exponentially grow our account. Learn to walk before trying to run.
You will notice in one of the backtests, GBPUSD_V2_10000, we actually ended up losing all our money. This is a clear sign that this mechanical behavior causing the crash could happen again on any other currency, hence the much needed update. I have created 2 sets of portfolio showing the entire evolution of 2 years of work which is basically 2 updates, not bad considering it was almost the same issue which needed a better approach as we switch from automated scalper to automated day/swing trader.
Let’s view the data from another perspective using different lots size using last 5 years data, 2016-2020
Even though we are using tick data(most precise data available) and modelling quality of 99.9%, I know by experience you can have up to 30% differential (good/bad) between backtests simulated data and live account performance. Using this notion, let’s evaluate the outcome of a 50% negative margin error:
Even with a negative 50% margin error(reducing Net Profit by half and doubling our Max DD), we would still manage to “double” our money within 5 years using less than ~10% drawdown at risk. Too good to be true, I know.
The resemblance in performance and spike from the backtests and live account performance is quite interesting considering backtests are usually not as accurate as we might believe from the 99.9% modeling quality indicator shown from the simulated reports.
As you can see from the charts and data, this is a steady grinder money maker. It’s not intended to double your account within months as it implements swing trading behavior. Another reminder regarding stability and symmetry. The higher the stability score, the more linear the graph will look(which is what we are ultimately looking for) while a higher symmetry score represents a portfolio where Buy/Sells trades are distributed evenly, meaning it is not prone to make 80 Buy trades and only 20 Sell trades. Bottom line, we want a graph with a line which goes straight up and where we have an equal distribution of Buy and Sells. The Return/DD ratio and Annual% Return/Max DD % are almost identical in what they represent, we basically want to make sure our Returns out-weights our Risks using 2 different metrics.
Let’s compare my first release(V1) back in November 2019 and April 2021(V3):
We went from 40% win rate to 60%, increased our Annual Return %/DD % ratio from 3.34 to 3.80, our stability went from 0.81 to 0.97, drastic improvement in symmetrical distribution going from 49% to 92%, decreased our Max DD% from 1.7% down to 0.3%, more than double our Win/Loss ratio going from 0.65 to 1.75 and still managed to increase our Return/DD ratio from 17.24 to 18.88. Talk about optimization.
Since our V1 initially tested out with a Max DD of 1.7% while our V3 did 0.3% we can measure the difference ratio of 1.7/0.3=0.51. We will round it to 5x since the closest lot trade allowed would be 0.05 lot (0.04, 0.05, 0.06, etc.). I created a second ChallengerEA V3b this time using lot size of 0.05 which almost matches same drawdown % level in both systems. I will let you interpret the data as you like on this one.
All in all, Challenger EA is a Monster.