Oct 17, 2020
The previous post showed the outcome for long-term portfolios where returns were randomly generated. Even under randomness, it resulted in return degradation making the game not worth playing. Adding some alpha would make a portfolio profitable. And, if you added more alpha, the long-term CAGR could increase even more.
All simulations were unique. A new random return series would be generated for each and every one of the tests (over 300). We could anticipate that most tests would come out close to some average, whatever that average might be. This was illustrated in the charts, figures, and equations in the previous post.
I also wanted to make repeated simulations based on the same return series. I used a seed for the random number generator. The line of code: R_1 = np.random.normal(1.0, 0.03, num_days) would generate this return series with a 3% standard deviation (σ) . This is relatively high for daily data. Historically, the US market's sigma averaged out at 0.16 over the long term which would make the daily standard deviation something closer to 0.000635. Making the 0.03 daily value some 47 times more volatile than its historical average. In reality, on a daily basis, stocks will fluctuate more than by 0.000635. But, this should not stop us from making some generalities.
Using a seed and redoing the simulations using the same program as in the first post with a much lower sigma (0.00065) would allow repeated tests giving the same answer. Thereby, extending a return series knowing that its previous years would remain the same. A way to recreate a portfolio's return series that would progress in time as if doing a continuous walk-forward without knowing its future outcome just like in a real market. We can see the interest in doing so. It would show if a trading strategy would fail going forward or not.
Such a simulation would give the ability to test the general behavior of a trading strategy as it might evolve going forward even if it was randomly generated. For instance, doing a 20-year simulation based on the above 0.03 standard deviation should give something close to an expected zero-return portfolio.
The above chart is a portfolio's equity line as generated by the above line of code. Its expected profit is zero.
A stochastic equation could represent its behavior over the years:
F(t) = F0 + µdt + σdW
where µ is the average drift and σdW the random component viewed as a Wiener process. The above chart had for parameters: µ → 0, and σdW → 0. Therefore, the long-term expectation would be zero profits.
We could do thousands of those tests to get some average value. Nonetheless, the long-term average expectation would effectively remain zero. If you ended up positive or negative, it would have been due to the luck of the draw over those 5,040 trading days. This is about what we see in the above chart. However, if compared to some historical returns, the above chart might have underperformed by -83.87% and ended up with a 0.4385% CAGR, not even half of 1 percent.
You could do a lot of similar tests using the code in the first post. Most of them turning out worse than the above chart due to return degradation as previously discussed. The overall long-term performance might be more than miserable after monitoring it for 20 years.
We have to design, and/or rely on, something better.
The above chart did demonstrate that it was not worth it playing that game. Nonetheless, just based on the above stochastic equation, it was expressed you had nothing to gain since the expected drift was zero E[µ] = 0. Furthermore, the random component, also had a zero expectancy E[σdW] = 0 making the long-term outcome equal to what you started with: E[F(t)] = F0. This was the rosy picture. Due to return degradation, you most probably and most often would get something worse, such as:
Random Return Degradation. (0.03 Standard Deviation)
Fortunately, whatever you do trading, the above charts will never come true. The US stock market is not structured as a zero-drift scenario with a constant sigma. Meaning that µdt does not converge to zero over the long term. Nonetheless, you could design a trading strategy that could behave the same. For instance, a hit rate tending to 0.50 as is expected in a normal distribution such as in the two charts above while using equal profit targets and stop-losses.
Changing The Game
Simply adding a long-term 10% drift will change the picture: µdt = 10%. This will get closer to showing historical market behavior.
The chart below makes the point. You still have randomness since the same random function is used, but with the added drift. Performance should be something close to the historical market average of 10%. Thousands of such charts could be generated with close to the same results.
In the above chart, the 10% upward drift µdt, made the hit rate rise to 52.78%. This is expected since the underlying return series would show more positives than negatives by construction due to the introduced upward drift.
All the above is the premise for what is to follow.
I wanted to make a simulation where trading procedures even if operating on randomly generated returns could prosper over the long term.
The following chart had these settings: 1) a seed was used to generate the same random return series, 2) tests were done adding one year at a time, making the tests as if having a walk-forward year after year for the added 19 years. 3) some alpha was added to see the impact of trading skills.
The above chart shows some 60 simulations performed in sequence by adding 1 year at a time and logging the results. The first block is with no expected return, meaning no drift and no alpha. The middle block was performed with a 10% expected long-term return, while the last block was executed with a long-term alpha of 10% over an expected drift of 10%. None of the 20-year series could know what the next year would bring as it progressed. However, by design, they all behaved as they should based on their drift and alpha settings.
The portfolio returns remained positive in the first block while the hit rate slowly declined towards the 50% line. Excess returns were also falling as the years progressed showing the portfolio would have increasingly underperformed over the years.
In the middle block, the added 10% drift showed an increasing excess return but still having a degrading CAGR. Nonetheless, it would have outperformed a market's 10% expected return. The last block shows the impact of adding a 10% alpha to the strategy resulting in an increased CAGR and hit rate. Evidently, anyone would prefer the last block for its outperformance. Was it that hard to execute?
For example, I estimate that over the years Mr. Buffett has managed what would be more like the last block than anything else. He got the market return: ~10% and his skills gave him the added alpha: ~10%. Skills that are required to outperform the averages. Just participating in the game could provide the middle portfolio as if in a Buy & Hold scenario. But it is the added alpha that will make a difference.
The above chart shows the impact of adding even more alpha to a trading strategy. The impact is considerable. The middle block has a 0.15 alpha. Compare it to the first block with no drift and no alpha. Or, compare the middle block to the last one where alpha was set at 0.20. These are major differences that slowly evolved over time showing the value of excess returns and the need to pursue that added alpha. As reference, Jim Simons of Renaissance has achieved over the years an alpha of 0.29 net of fees.
All the return series (one hundred+ in all) were randomly generated based on the above function. To get to the end results, in all those scenarios, you had to be in the market for those 20 years. That is a lot of time monitoring what your program is doing. Just by looking at those charts and tables, it should be evident what you should strive for.
The how you generate your alpha is not the real topic since a multitude of different approaches could achieve the same if not about the same results or better. Sure, you need to not only look for your own alpha, but also for methods that can be sustained as you go along since the game is in continuous motion, ever-changing before your eyes.
How hard is it to do this? Any trading strategy that could extract, on average, some 0.35% profit per trade, based on its trading procedures, could be within the parameters as illustrated in the chart above. A 100 dollar stock fluctuates by more than 35 cents (0.35%) almost any day of the week. Does it matter how you do it if you can?
These tests demonstrated that even under randomness, you could, at least, profit from the historical upward drift. And if you added trading skills (alpha), you could do incrementally better, and even much better. Like I often say: it is all up to you.
All the above do show that it is not necessary to do extraordinary stuff in your trading strategies in order to achieve outstanding results. Nonetheless, understanding what you do and why should be paramount.
This article is also available in HTML format.
Oct. 17, 2020, © Guy R. Fleury. All rights reserved.