Made in Switzerland: a Global Market Rotation Strategy for MDY, IEV, EEM, ILF, EPP and TLT

[Update added: See Postscript]

On Seeking Alpha Frank Grossmann published his Global Market Rotation Strategy (GMR). The goal of the GMR strategy is to achieve above average returns while avoiding big losses during market corrections. To that extent TLT is added as a "safe haven" during roaring bear markets. The GMR Strategy switches between 6 globally distributed ETF's on a monthly basis:
  • US Market (MDY- S&P MidCap 400 SPDRs)
  • Europe (IEV- iShares S&P Europe 350 Index Fund
  • Emerging Markets (EEM- iShares MSCI Emerging Markets)
  • Latin America (ILF- iShares S&P Latin America)
  • Pacific region (EPP - iShares MSCI Pacific ex-Japan)
  • US Treasury Bonds (TLT- iShares 20+ Year Treasury Bond ETF)

The algorithm of the GMR model is quite similar to Kevin McGrath's TAA model posted in Februari 2013, except that the GMR model offers the possibility to allocate assets based on weighting not only past performance, but volatility too.

The translation of the GMR model into thinkscript comes without the sophisticated optimization calculation described in the SA contribution, while allowing the user to select between 3 versions:
  • "100:0" - a ranking based only on the performance of each ETF in the global basket (default)
  • "80:20" - a ranking based on 0.8 * performance  + 0.2 * volatility
  • "70:30" - a ranking based on 0.7 * performance  + 0.3 * volatility
Performance is measured by calculating the relative strength of all ETF's over a 3 month period (default 63 days). The ETF's are ranked between 1-0, where the best performing ETF is ranked at 1.
Next for each ETF the medium 3 month 20 day volatility is calculated and also normalized from 0-1, where the ETF with the lowest volatility is ranked at 1. See graph below.



While Grossmann claims a significant boost in performance through the volatility weighting, backtesting of the ported GMR model only shows small differences between the weighted ranking versions 70:30 / 80:20 against the 100:0 version. Actually for most settings between 60 - 70 days the "100:0" version, which only takes performance into accont, shows the better performance. Of course this might be due to the lack of sophisticated optimization Grossmann accomplished with Matlab and impossible to achieve in thinkscript or some missing nuance in the translation process for the volatility logic. Please share your observations.

Just like the TAA model after the closing of the NYSE on the last day of the month, the reading of the 6 ETF's in the global basket are evaluated. Based on the highest ranking thinkscipt selects and locks the ETF for the new month (indicated by a chart label). When the ETF for the new month is the same as the one of the last/current, no further action is needed. In case a new ETF does take over poll position, the only necessary action is to re-allocate all current holdings into the new top pick. This is an all in strategy without stops.

The monthly evaluation of the ETF's is demonstrated by the graph above and the middle pane graph on the chart below. For the "live" application of the GMR model, this graph and thus the associated study is superfluous as the ranking is implemented in the GMR_Equity script too.


In the 500+ lines of thinkscript involved in the combined studies, some stats are added to the code for the equity curve:
  • Net Liquidation Value of the portfolio
  • Realized profits (white label and block line)
  • Open profits
  • Start value (dark green line on the equity curve)
  • Contribution of each ETF to realized profit (in $ amount as well as % share)
  • Number of executed trades
  • Rate of Return (RoR) over the total backtest time frame (10 years of daily charts)
  • Compound Annual Growth Rate (CAGR) over 10 years
  • Sharpe and Sortino ratio's *
  • Current and maximum DrawDown (from peak to trough, see red chart bubble)
  • Chart label with the ETF for the current month or, on the last trading day of the month, the top pick for the next month.
  • History bar showing the previously selected ETF's and their duration (below the equity curve).  
* Please note the calculations for the Sharpe and Sortino ratio's are still experimental. Suggestions are welcomed!


The chart above shows the necessary studies for the GMR model to load and their order. Using a price chart for TLT is suggested to prevent erroneous calculation and painting of the equity curve. After loading the GMR_Symbol studies 6 times on the price chart, please change the designated ETF and the coloring according to the (fixed) coloring on the GMR_Equity study.

Tip-off: after setting up the GMR model, which admittedly will take some time and scrutiny, do save the chart style for easier future usage: select "Style" > "Save Style" > Enter Style Name: GMR and tick the box to Include Study Set.

The studies are available for review in the comment section below. To download the thinkscript files, check out the link to Google Drive.

Please do your own due diligence and trade safe!

Postscript [Januari 12, 2014]
Commenter Don Krafft generously shared his thinkscript versions of no less than four (!) of Frank Grossmann's other rotation strategies:
- BRS: Bond Rotation Strategy
- GMRE: Global Market Rotation Enhanced
- MYR: Maximum Yield Rotation
- USSR: US Sector Ratation ;)


While Don's work deserves a post of its own, up until then the thinkscript files are available on Google Drive. The strategies are explained on Frank Grossmann's site www.logical-invest.com.