January 13, 2014

Intermediate Term Stock Rotation Strategy Using S&P500 Stocks

One of my research goals for this year is to find an intermediate term rotation strategy using S&P500 stocks. Then right on cue, I read the following post Intermediate momentum! which points to  research Is momentum really momentum? by Robert Novy-Marx. In that he mentions that “intermediate horizon past performance, measured over the period from 12 to seven months prior, seems to better predict average returns than does recent past performance.” I have never tried an idea like this. In the blog comments, a user says he got great results using the current NDX100 stocks not the historical. This introduces pre-inclusion bias but maybe the results will still be good. What a great way to start the year with ideas I have never tested.

The Base Case

For testing universe ‘RRSP Strategy’ blog used S&P600 small cap and the PDF used all NYSE stocks. We will be using the historical S&P500 constituent data. The test range will be from 1/1/2001 to 12/312013.

The Rules

  • It is the rotation date. For Quarterly it is the first trading day of quarter (January, April, July, October). For Semi-Annual it is the first trading day of either January of July.
  • Stock is a current member of the S&P500
  • Rank stocks based 6 month performance 6 months ago, from high to low
  • Buy the top 10 stocks at the close

For the ranking rule, if today is Jan 2, 2014, then we look at the 6 month return from 6 months ago. This means we use the return from Jan 1, 2013 to July 1, 2013 as our ranking value.

The Results

140113A

No way to put it but these are disappointing results. Buy and hold on the SPX generates a CAR of 2.68% and MDD of -56.78%. Maybe I did not understand how they are doing the ranking. Or could be the different trading universe.

Optimization Run

140113B

Now we try different lengths for the ranking returns and delays. This gives some results with decent CAR but still with huge drawdowns.

Yearly Returns

140113C

The yearly returns show the strategy getting killed during the bear market years. Maybe our simple market timing filter of only entering when the Close of the SPX is above its 200 day moving average will help?

With Market Timing

140113D

Now we are getting some good CARs. The drawdowns are still high but I would not expect them to be low because of the long hold periods. I need to think about the next steps. Adding stops? Using the recent performance?  If you have any ideas on what to try next, send them my way.

Spreadsheet

If you’re interested in a spreadsheet of my testing results, enter your information below, and I will send you a link to the spreadsheet. The spreadsheet contains more variations I tested and more stats.

Backtesting platform used: AmiBroker. Data provider:Norgate Data (referral link)

 
Visited 36 times, 1 visit(s) today

Click Here to Leave a Comment Below

Aaron - January 14, 2014 Reply

Try rebalancing monthly or weekly. Also, try ranking/averaging the past 1,3,6 and 12 month returns instead of just one look back period. You also may want to ensure that the individual stocks are in uptrends as well as the market.

    Cesar Alvarez - January 14, 2014 Reply

    These are all good suggestions. I am looking for a longer holding period of at least one month. How would you define that a stock is an uptrend?

      Aaron - January 14, 2014 Reply

      There are many ways to define an uptrend. Above a moving average like you posted. Positive past performance would be another ala Gary Antonacci’s ‘absolute momentum.’ So you might require that the individual stocks are above a 200 day moving average or that they have had a positive rate of change for the past month, or quarter, or 6 months, or year, or average of them all. Just depends on your timeframe.

      It seems you like a longer timeframe so I’d probably stick to 6-12 month look back periods for positive performance or 100+ day moving averages. However, as you stated the longer your time frame the deeper the drawdown, all things being equal.

Seb - January 15, 2014 Reply

Hello Cesar. First of all congratulations on your savvy blog and thorough testing. I read every single post with much interest.

Regarding this one idea, I believe the principle of using the X-month return from N months ago smells like curve-fitting right off the bat. Why would a stock behavior from far ago with an N-month disconnect between the end of the reference series and now be of any significance to today’s returns? I think the authors are mistaking correlation with causality here and see, your test results couldn’t even corroborate the correlation! This sounds logical to me.

As quant traders, we want to spot causal effects, not correlations as these tend to degenerate faster. In spotting a trend, the “indicators” that have proved the least prone to curve-fitting and arbitrary choices to me are (1) adding an SMA regime filter to the series and/or (2) spotting new highs (i.e. breakouts) over N bars. You have tried to use the first ingredient, but not the second one; Breakouts are less prone to curve-fitting as many N parameters tend to have overlapping results, hence changing the end P&L by very little unless you shift N dramatically. Breakout parameters therefore tend to work in clusters and are easier to manage and rely upon.

I have found that relative strength rotational models using recent performance work better on ETFs using X-month returns – but certainly not returns from N months ago. For stocks, in my opinion breakouts tend to work better when it comes to relative strength and I would recommend to explore that way instead. That said, I mostly trade using physics and I certainly do not have the programming background that you do to test it out. It will most likely be trivial to you though. I will be glad to help if I can.

    Cesar Alvarez - January 15, 2014 Reply

    I agree that the idea of ‘using the X-month return from N months ago’ was strange but sometimes strange works. I wanted to see it worked with the SP500 stocks and then see if it worked well with different values of X & N. As we saw it did not work at all. When I tried different parameters, using N=0, produced the best results as we are used to. I will likely be doing a follow post trying the ideas from the comments. I am glad you like my posts and keep the great comments coming.

S&P500 Monthly Rotation-Readers’ Ideas » Alvarez Quant Trading - February 3, 2014 Reply

[…] ‘Intermediate Term Stock Rotation Strategy Using S&P500 Stocks’ post generated lots of reader suggestions on what to investigate […]

Marco - September 25, 2014 Reply

I believe that if the general basic starting idea doesn’t work, it’s better to stop it there. Otherwise you risk data mining bad bias…
http://nightlypatterns.wordpress.com

Rick - November 5, 2014 Reply

For ranking, DO NOT use the 6 month return from 6 months ago. That has no bearing except for 6 months ago. Instead, use the 6 month return made over the previous 6 months. That is if you were measuring starting today, the 6 months would start on about May 5 2014 and end on Nov 5 2014.

    Cesar Alvarez - November 12, 2014 Reply

    Rick,

    I contacted the person who I referenced at the top of article and this is what they did. I agree it makes no sense but that is what they tested so that is what I wanted to test.

Leave a Reply: