Welcome to QuantHead!

Welcome to QuantHead! I hope you find some interesting ideas here that I've encountered on my journey of learning and share your wisdom with me. Enjoy!

Monday, January 5, 2015

Modified Dual Momentum

Jan 6, 2015 Update: The spreadsheet has been updated to take volatility into account in the rankings.
May 9, 2015 Update: Thanks to a reader, the 63-day volatility for TLT now points to the right data.
May 20, 2015 Update: Thanks to Gene Wildhart, the volatility calculations have been changed.

Gary Antonacci recently published a book "Dual Momentum Investing" that has raised quite a bit of discussion in the quantitative investing community. The idea was that he combined relative momentum (how assets are performing compared to each other) and absolute momentum (how assets are performing in comparison to short-term treasuries). He backtested his strategies with decent results over the last almost 40 years, but because the U.S. stock market has been so strong in the last few years, the strategies have lagged, compared to the U.S. stock market. For a lot of people, myself included, the goal is to beat the U.S. stock market and it's hard sticking to a lagging strategy year after year.

Scottsinvestments.com created a strategy inspired by Antonacci's Dual Momentum, but it has also lagged the U.S. stock market in the last few years, providing an annualized return ~ +8% over the last 5 years.

After reviewing Antonacci's book, Lowell Herr from ITA Wealth Management stepped up and modified the dual momentum strategy to have a better performance over the last few years, by increasing the number of securities for inclusion in the portfolio, shortening the look-back period and rebalancing every 33 days, which has the rebalancing date float throughout the month, rather than always at a specific date. Whether these changes are curve-fitted to improve the performance in certain conditions, or improvements leading to a robust strategy, remains to be seen going forward.

In Lowell's model, a 50% weight is assigned to 3 month (quarterly) performance, a 30% weight to 6 month performance and a 20% weight to 63-day volatility. Every 33 days equal amounts are invested in the top 2 ranked securities, unless the ranking is worse than SHY (cash), in which case one or both securities are replaced with SHY (cash). The green curve below is his backtest with these figures, providing ~+20% CAGR over the last 8 years.




I created an automatically updating Google Spreadsheet that shows the current rankings, based on the same weights of performance and volatility as Lowell uses. It will highlight the top 2 assets in green, unless their performance is worse than SHY. All assets ranked below SHY are highlighted in red. All one needs to do is check the spreadsheet every 33 days or so and re-allocate to the (new) green securities.

Schwab commission free substitutes are also provided.






QH Modified Dual Momentum Spreadsheet

14 comments:

  1. Good morning,
    It looks like some parameters in your spreadsheet are not working. It worked great for a few days before it punked out.
    God Speed
    Kurt

    ReplyDelete
  2. Thanks for spotting this Kurt - I'll have to look into it, at first look seems like the FinViz fetch parameters have changed and need to be modified.

    QH

    ReplyDelete
  3. Hi, I was curious why you are using the closing price vs adjusted close for the returns. Wouldn't adjusted close be more appropriate?
    Thanks,
    Ravi

    ReplyDelete
    Replies
    1. Hi Ravi - good question! For this spreadsheet, the performance data is pulled from FinViz, which (correct me if I'm wrong) I believe is adjusted data. If it isn't, one could of course adjust the spreadsheet to take the data from Yahoo Finance, using the adjusted close prices. I'm using FinViz, since this is based on the Scotts Investments spreadsheet, spiced with Lowell Herr's modifications. -QH

      Delete
  4. Hi Henri,
    I am actually looking at the data in your spreadsheet for individual securities and the returns for each of the securities are computed on the close rather than Adj Close column. I am assuming (and I think it's true) that the Adj Close data in FinViz is basically the data that adjusts for dividends etc. So, shouldn't we be using Adj Close data?
    Ravi

    ReplyDelete
    Replies
    1. Ah, I think you're referring to the volatility calculations, which are based on data from Yahoo Finance. You're right, those could be calculated using adjusted close data, I'll probably change that in the near future. Thanks! -QH

      Delete
  5. Can you make available the formulae in the hidden columns D to I?

    ReplyDelete
  6. Cancel request. I found that when I copied and pasted into a new sheet the formulae appeared

    ReplyDelete
  7. Hi there,

    Thanks for the great stuff! It seems there's a typo in the volatility calculations in the "Rankings" tab; TLT values seem actually pointing to VTI tab.

    Regards.

    ReplyDelete
  8. Thanks for the spreadsheet. Couple of concerns: (1) shouldn't you be subtracting the volatility component? The way you have it now, you are rewarding increased volatility in the rankings. (2) the original article uses downside stddev to calculate volatility, here you are using mean stddev multiplied by some constant? (3) the volatility calcs appear to be performed on the non adjusted returns.

    ReplyDelete
    Replies
    1. Hi Gene - you are absolutely right on all three counts, thanks for noticing these! I've updated the spreadsheet and assuming my calculation for semivariance is correct, it should now be taking into account downside observations only. Btw. the constant I used with the mean stddev calculation was the square-root of 252 (trading days in a year). Please let me know of any other issues you may find. -QH

      Delete
    2. The only other difference I see is in Mr. Herr's original article, he performs the ranking's at each step (ie. ranks the equities for ROC1, then ranks then again for ROC2 and once again for volatility). Then he applies the 50/30/20 weighting to the Rank to come up with a final rank. In your spreadsheet, you apply the weighting to the raw values (ie. pct returns and volatility) to come up with a final value which is then ranked. I'm not sure if there would be a difference or not in the end result between the two methods, but there could be.

      Delete