I have finally resolved my modified version of Grossman's GMR trading system. The results are improved and appear quite robust under various input conditions.
By way of recap, the system trades 6 ETFs: SSO, FEZ, EEM, ILF, EPP and EDV. It goes to SHY when the stop condition is satisfied. It is backtested to 12/31/2003. (Prior to EDV's inception in 2008, I used TLT data. Prior to SSO's inception in 2006, I used MDY data.)
The system relies only on monthly data and can be implemented simply in an Excel spreadsheet. This makes it a very practical system for ordinary people with limited time to update stock data and without costly trading software.
The system relies on two parameters -- performance and volatility. Performance is the logarithm of monthly performance over 3 months. Volatility is the standard deviation of 6 months of monthly performance.
The performance of the 6 ETFs is then standardized according to their mean and standard deviation. The same is done for the volatilities.
These standardized values are added together using weights of 0.75 for performance and 0.25 for volatility. These weights gave the best overall returns, but the total returns are not terribly dependent on these weighs. Returns are still quite with weights from 0.6/0.4 to 0.9/0.1.
The ETF with the highest final rank is purchased and held for one month. The cycle repeats month to month.
Here are the results of the system as a function of the weighing factors (with the optimal cash stop in place):
0 (performance) / 1 (volatility)
Total | 3.64 |
CAGR | 13.79% |
Stdev | 27.51% |
Drawdown | 67.02% |
Sharpe v SPY | 0.23 |
Sharpe v SHY | 0.42 |
0.1/0.9
Total | 3.54 |
CAGR | 13.47% |
Stdev | 27.53% |
Drawdown | 67.57% |
Sharpe v SPY | 0.22 |
Sharpe v SHY | 0.41 |
0.2/0.8
Total | 4.94 |
CAGR | 17.32% |
Stdev | 28.39% |
Drawdown | 70.87% |
Sharpe v SPY | 0.35 |
Sharpe v SHY | 0.53 |
0.3/0.7
Total | 4.69 |
CAGR | 16.71% |
Stdev | 28.55% |
Drawdown | 68.01% |
Sharpe v SPY | 0.33 |
Sharpe v SHY | 0.51 |
0.4/0.6
Total | 8.26 |
CAGR | 23.51% |
Stdev | 29.07% |
Drawdown | 69.86% |
Sharpe v SPY | 0.56 |
Sharpe v SHY | 0.73 |
0.5/0.5
Total | 9.59 |
CAGR | 25.36% |
Stdev | 28.82% |
Drawdown | 69.00% |
Sharpe v SPY | 0.63 |
Sharpe v SHY | 0.80 |
0.6/0.4:
Total | 39.40 |
CAGR | 44.39% |
Stdev | 24.54% |
Drawdown | 26.94% |
Sharpe v SPY | 1.51 |
Sharpe v SHY | 1.72 |
0.7/0.3
Total | 40.22 |
CAGR | 44.69% |
Stdev | 23.94% |
Drawdown | 16.11% |
Sharpe v SPY | 1.56 |
Sharpe v SHY | 1.77 |
0.8/0.2
Total | 40.16 |
CAGR | 44.67% |
Stdev | 23.57% |
Drawdown | 22.28% |
Sharpe v SPY | 1.58 |
Sharpe v SHY | 1.80 |
0.9/0.1
Total | 36.68 |
CAGR | 43.37% |
Stdev | 23.74% |
Drawdown | 19.72% |
Sharpe v SPY | 1.52 |
Sharpe v SHY | 1.73 |
1.0/0.0
Total | 34.03 |
CAGR | 42.30% |
Stdev | 23.56% |
Drawdown | 19.72% |
Sharpe v SPY | 1.48 |
Sharpe v SHY | 1.70 |
I prefer 0.75/0.25 because it was in the middle of the peak values shown above:
0.75/0.25
Total | 43.16 |
CAGR | 45.72% |
Stdev | 23.89% |
Drawdown | 16.11% |
Sharpe v SPY | 1.61 |
Sharpe v SHY | 1.82 |
With these values and the cash-stop, returns year-over-year were:
Last day of… | SYSTEM | SPY |
Dec-04 | 35.89% | 10.70% |
Dec-05 | 50.61% | 4.83% |
Dec-06 | 18.88% | 15.84% |
Dec-07 | 29.22% | 5.15% |
Dec-08 | 51.49% | -36.80% |
Dec-09 | 100.21% | 26.35% |
Dec-10 | 32.69% | 15.06% |
Dec-11 | 74.43% | 1.90% |
Dec-12 | 28.93% | 15.99% |
Dec-13 | 48.95% | 32.31% |
This is without commissions and slippage. If you add in 0.25% commissions and slippage, which is terrible, you still get fine results:
Total | 38.60 |
CAGR | 44.10% |
Stdev | 23.89% |
Drawdown | 16.11% |
Sharpe v SPY | 1.54 |
Sharpe v SHY | 1.75 |
With commissions and slippage of 1% (!!), it's still acceptable:
Total | 27.57 |
CAGR | 39.33% |
Stdev | 23.93% |
Drawdown | 16.11% |
Sharpe v SPY | 1.34 |
Sharpe v SHY | 1.55 |
The system does not rotate into cash. Instead, there is a cash stop when the correlation between SSO and EDV is above a threshold. The system will go to cash regardless of which of the 6 ETFs is being signaled. This only happens at the month's end, so we do need to stomach some inter-month changes.
Here are the scenarios with the weights at 0.75/0.25 and various cash-stop thresholds (with commissions and slippage = 0):
Threshold = 0 (months stopped = 33):
Total | 11.32 |
CAGR | 27.46% |
Stdev | 19.77% |
Drawdown | 18.94% |
Sharpe v SPY | 1.02 |
Sharpe v SHY | 1.27 |
Threshold = 0.25 (months stopped = 24)
Total | 16.91 |
CAGR | 32.68% |
Stdev | 20.67% |
Drawdown | 16.11% |
Sharpe v SPY | 1.23 |
Sharpe v SHY | 1.47 |
Threshold = 0.5 (months stopped = 13)
Total | 37.55 |
CAGR | 43.70% |
Stdev | 23.12% |
Drawdown | 16.11% |
Sharpe v SPY | 1.57 |
Sharpe v SHY | 1.79 |
Threshold = 0.75 (months stopped = 8)
Total | 43.16 |
CAGR | 45.72% |
Stdev | 23.89% |
Drawdown | 16.11% |
Sharpe v SPY | 1.61 |
Sharpe v SHY | 1.82 |
Threshold = 1 (months stopped = 0)
Total | 28.89 |
CAGR | 39.98% |
Stdev | 25.66% |
Drawdown | 22.56% |
Sharpe v SPY | 1.27 |
Sharpe v SHY | 1.47 |
I am using 0.75 as the stop threshold.
I want to reiterate the importance of using monthly data. Every time I have tried to implement this system using some version of daily data (e.g. a 70-day performance lookback, etc.) the results are not as good. Also, the monthly data makes things really easy to do and ignoring everything during the month can take some anxiety out of the trading process.
** If you've read this far you'll be delighted to know I plan to post updates and signals here as the months stroll by because (i) it's fun to discuss these things (ii) we can all play along and (iii) it is proof (or disproof) of the system in real time. In light of last week's good performance for equities, the system says to stay in SSO if things stay flat from here to month's end. In the middle of last week, the signal would have been to EDV. It is interesting to see how the signals evolve over the month as conditions change.
As for the 3-day swing trading system, I attempted to mingle this with the rotation strategy to no avail. The idea was to trade between the signaled ETF and SHY according to the 3-day system. The results were terrible and I do not expect to write more on the matter.
Disclosure: I am long SSO.