Today I will be looking at some very interesting results of multi-algorithm testing on the stock AMZN (Amazon). The idea here is to use SignalSolver to find multiple trading systems which performed well in the past, then run those systems simultaneously on out-of-sample forward data to see what would have happened had you followed them in real life. We do this for up to 8 algorithms, for three timeframes.
AMZN: June 2015 to June 2016 Return Optimizations
Firstly lets look at the results of looking for trading systems which were optimized for data in the 6/19/2015 to 6/15/2016 time-frame (250 trading days), chosen only because it was 100 trading days prior to the date I pulled the price data, and I was looking at the subsequent 99 day performance. Here's how buy-hold did in that time-frame:
Initially, I simply optimized for Return, that is I looked for trading systems which gave the best return over the entire June '15 to '16 time period, then looked at how each of them did in the subsequent 10, 25, 50 and 99 days. Here's that result:
The "250 day AR" is the annualized return of each trading algorithm found, without a time machine these returns are purely academic and are just used for ranking. The "End State" is shown because it indicates whether the algorithm was bullish or bearish on the stock on the last day of the optimization. In this case 7 of the 8 top algorithms were bullish (L) so for all the out-of-sample results, the start state was long (see the methodology posting for more information on this voting system).
These numbers are all over the place, so lets average them to see if we could have run multiple algorithms at a profit:
The leftmost four bars shows the result of running just the top algorithm (BMO BCO). Moving right, we add more and more algorithms into the mix, until at the rightmost bars we are looking at the results of running 8 trading algorithms simultaneously. So averaging worked to our advantage in this case.
AMZN Figure of Merit Optimization on June '15-'16 data
Optimizing the trading algorithms simply for returns can give you trading systems which don't do very well moving forward, we've seen that over and over in these pages. Often these trading systems exploit price changes in a small timeframe, and quickly go sour as time advances. Accordingly, I revamped the optimization to look for algorithms which gave more consistent returns over time (again, see the methodology here). Here's that result:
You'll notice its a completely different set of algorithms, with a much lower 250 day AR than the Return optimized set and much higher FOMs (Figures of Merit--the optimization parameters). Notice these algorithms are quite closely related to each other, more so than the Return optimized set. Accordingly, when you set about averaging this lot, here's what you get:
AMZN FOM Optimization for Jan '15 to Jan '16
Subsequent to the Jan '15 to Jan '16 timeframe, AMZN prices changed such that a $10K investment had this Profit/Loss profile:
Would SignalSolver be able to find the correct exploits? Here's the results of the FOM optimization:
All of these algorithms were bullish at the end of the optimization period, but most went short at the end of January '16 when AMZN prices dropped suddenly. Then they went long around 2/9/16 to capture the partial recovery. And the averaging result:
Ugly if you had run the just the top ranking algorithm, but good if you had averaged over 2 or more algorithms. Unusual for the algorithms to stay profitable for the 99 day, but here we see it. Overall a good result.
AMZN Sept '14 to Sept '15 FOM Optimization Results
Finally, lets wind the clock back another 100 trading days and take a look at the Sept '14 - Sept '15 result. Here is the buy-hold:
Again, quite a different set of algorithms. Vote was bullish, so they were all long to start the out-of-sample period. Most of the algorithms got it right and stayed long. Curious that the best FOM algorithm got it wrong again. Here's the averaging results:
More on this later. Going for a bike ride in the desert now 🙂