iBankCoin
Joined Nov 11, 2007
1,458 Blog Posts

Building a Better Fidelity Sector Fund Rotational System: Part 2

Link to Part 1

In this post, we’ll look at the components of the system, and then optimize the variables and plot the results. What we hope to find is that each variable has a wide range of settings from which to choose. What we don’t want to find is that making a slight change to a particular variable has a significant impact on performance. If a slight change has a significant negative impact on performance, it is likely that the results are not robust.

The system:

  • Uses momentum measured by Rate of Change (ROC) to rank the Fidelity Sector Funds (FSFs).
  • Punishes volatility by dividing into the ROC calculation a simple measure of volatility.
  • Uses moving averages to set 3 levels of position sizes: 100%, 50%, or Cash.
  • Uses a shorter ROC to ensure the top-ranked funds have not been recently downtrending.
  • Holds each FSF for a minimum of 30 calendar days before rotating out of it (This is a requirement from Fidelity. Executing a round trip trade within 30 calendar days will result in penalties).
  • The system can hold between 1 and 10 FSFs. (Because Fidelity wants a minimum of 2.5K in each fund, holding more than a few funds may not be practical for smaller accounts).

To run the optimizations, I’ve set the inputs to be exactly the same as version 1.3 of the system. The only difference is this: Instead of a completely binary moving average filter where if $SPX is below the 50 day moving average it does not rotate into a new fund, I’m using two moving averages. If $SPX is below the first moving average, any new FSFs will be invested at 50%. If $SPX falls below the first and second moving average, then the system will go to cash and will not rotate into a new fund. This is a technique that Michael Stokes wrote about here, except he uses six moving averages to set the position sizes.

Okay, with that out of the way, here are the variables and inputs used to run the optimizations:

  • ROC setting is 90.
  • Volatility lookback period is 252 days
  • The two moving average periods used to set the position sizes are 50 and 100.
  • The shorter ROC setting is 21.
  • The system will hold a maximum of 3 FSFs.

I’m testing using the funds listed here on Fidelity’s site. Most of the FSFs were available to be traded before the start date of the test.

Using these inputs, let’s examine the graphs created by optimizing each variable, one at a time. First up is the ROC length.

This is perhaps my favorite graph. We can see that momentum is present across all ROC lengths. It appears the sweet spot has been somewhere between 25 and 85.

The graph above has reduced the time period of testing to just over 2 years. It is evident that the shorter ROC lengths have performed better. My theory on this is that it is due to the volatility of the last 2 years. This time period has been characterized by spikes in volatility and volatile range-trading. A longer ROC length is not able to capture an accurate measure of momentum due to the up and down trading while a shorter ROC length can catch new momentum just after it begins.

Next we will optimize the volatility look-back period. This calculation is used to lower in rank the more volatile FSFs.

Shorter is better for smaller drawdowns, while longer lengths improve CAR. Overall, the volatility look-back length can be set to just about whatever one pleases with little chance of curve-fitting.

Over the last two years, a shorter look-back has provided higher returns while not having a negative effect on drawdowns. I believe the length can be shortened (currently at 252) to improve performance.

Next, we’ll optimize the second moving average length. I am going to leave the first moving average set at 50 days. That decision reflects personal preference coupled with the knowledge that the system performed well in previous tests using the 50 day average.

There are several things to discuss about the above graph. First, if the second moving average length is set to 50, then the system goes completely to cash whenever $SPX is beneath this average. We can see that this gave the highest CAR, but also led to the highest drawdown. If the second moving average length is less than 50, then the system would go to 50% position-sizing whenever $SPX is less than the average and would go completely to cash once it dropped beneath the 50 day average. Using a 30/50 combination yields good results, but there is not a lot of room on either side of the 30 before either drawdowns increase or CAR decreases. The optimum setting looks to be somewhere between 110 and 155.

Over the past 2 years, a simple 50 day average filter has performed very well. However, we see there is still a generous sweet spot between 125 and 160. The 50/100 moving average filter could be adjusted to use a longer length.

Now let’s look at the second ROC length. This input is used to ensure that the top ranked FSFs have not been falling over the near term.

We are only concerned with the results from 5 to 41. Anything longer than that begins to weigh heavily on the ranking procedure, since the FSFs are ranked based on a 90 day ROC.

It looks like my choice of a 21 day ROC was lucky. I took a look at the greater than 30% drawdowns, and almost without exception they are all the result of one period in time when the system’s equity curve went from a nice steady uptrend to an almost straight-up surge. When the surge ended, it resulted in a large drawdown from peak equity, although the equity never actually drew down much past the pre-surge amount.

The graphs above show a similar pattern favoring short lengths over the past 2 years. A setting between 10 and 25 would probably work well.

Finally, let’s optimize the maximum number of FSFs held at one time.

The graph above shows that adding positions decreases both CAR and Max Drawdown. The best setting is likely between 2 to 5 funds. Holding 5 funds means that the portfolio would consist of approximately the top 10% of the 40 available FSFs.

Over the last two years, we would have been better off holding only 1 or 2 funds.

Well there you have it, a veritable menu of settings available. Keep in mind that every adjustment made will introduce unknowns and unintended consequences into past and future performance. The best we can do is choose robust settings and trade the system diligently and faithfully. At times it will outperform and other times it will under-perform, but over the long haul, it should beat buy and hold with reduced drawdowns.

Some of you may wonder why I put together all of this for the blog. It does take a significant amount of time. I create the graphs for my own use, and writing about them solidifies my thinking as well as sparking the creative juices. In fact, I have likely discovered a simple way to make the ROC length adaptable to market conditions, and I think it will improve results. I do not believe I would discovered this had I not written this post.

Finally when designing a system to trade for years into the future, it is important to know the system inside and out, how each variable affects the other variables, and so on. A complete understanding of the system’s intricacies builds trust and faith which will be necessary to draw upon when the system hits the inevitable rough patch.

Part 3 will present the “finished” system.

If you enjoy the content at iBankCoin, please follow us on Twitter

27 comments

  1. Berniecornfeld

    Awesome work sir. I plan to print off all 3 parts once they are complete to get a better understanding. It looks like a very robust plan though.

    • 0
    • 0
    • 0 Deem this to be "Fake News"
    • Woodshedder

      Thanks Bernie. We can optimize the hell out of it but it will never perform as well in the future as in the backtests. I like “visually” optimizing it as it allows me to choose settings that have lots of freedom so that when conditions change, the system doesn’t fall apart. I expect this system to achieve ~13%/year pretty safely.

      • 0
      • 0
      • 0 Deem this to be "Fake News"
  2. Grabbo

    Wood, re the first 2 graphs: does it worry you that edge which shows up for the shorter ROC testing the past 2 yrs doesn’t show up on the longer time frame?

    (are the results flattened due to bear markets maybe)

    Instead of ROC why not check if there is an edge using absolute returns?

    Also how does this system test against Mebane Fabers 10 Month SMA strategy?

    Why not use the Fidelity funds using one of the more popular MA’s

    I’ve heard good things about – 10 Month SMA, 12 Month SMA, 10 Month EMA

    • 0
    • 0
    • 0 Deem this to be "Fake News"
    • Woodshedder

      Grabbo, how are absolute returns different from returns over any given number of days or months?

      This system is based on a paper written by Faber about sector rotation. You can find it on his website in the right hand sidebar.

      As for the MAs, a 10 month SMA is the same as a 200 day average. As you can see from the testing, a slightly shorter average has worked better, like say a 150 day, or the equivalent of a 7 month average.

      I don’t like EMAs. Just personal preference.

      • 0
      • 0
      • 0 Deem this to be "Fake News"
  3. James Ramsay

    Good research and information there.

    As you found I found that changing the ROC/SMA length helps as market cycles change.

    At the moment we have short sharp cycles so it makes sense to use shorter periods.

    The question is how do we change and how do we know when to change?

    Will be interested to see what you find as I have not been able to find much(that works well anyway)

    Thanks

    • 0
    • 0
    • 0 Deem this to be "Fake News"
  4. blink

    Very good reading! Don’t forget to test rotation on all 22 trading days, not just the last day of the month. Also, what happens if your holding period is between 1-252 trading days?

    • 0
    • 0
    • 0 Deem this to be "Fake News"
    • Dave in Philly

      Fidelity penalizes you .75% redemption fee if you hold for shorter than 31 days.

      • 0
      • 0
      • 0 Deem this to be "Fake News"
      • Woodshedder

        Yep, what Dave said. The FSFs can be held longer than 30 days as long as they are not out ranked by a different fund at that point. They are not sold or bought on the last day of the month, only after 30 days are they sold, assuming they are no longer top-ranked. This could be any day of the month.

        • 0
        • 0
        • 0 Deem this to be "Fake News"
      • blink

        I know, but it doesn’t cost you a penny if you backtest it πŸ™‚

        • 0
        • 0
        • 0 Deem this to be "Fake News"
        • Woodshedder

          True, but what is the point? It can’t/won’t be traded that way. Those tests will be saved for an ETF rotational system.

          • 0
          • 0
          • 0 Deem this to be "Fake News"
  5. Damian

    Great post Wood – are you going to employ some forward testing at the end?

    • 0
    • 0
    • 0 Deem this to be "Fake News"
  6. Dave in Philly

    Wood, the dates in the header in the last graph are incorrect, right?

    • 0
    • 0
    • 0 Deem this to be "Fake News"
  7. Bozo on a bus

    Wood, great description, nicely detailed. Lots of interest from us readers, too. Many thanks for all the effort.

    One question: Several of these types of systems implement a delay (a week to several weeks) between the ranking and the eventual fund purchase, ostensibly to compensate for a bit of mean reversion before the outperformance resumes. Any thoughts?

    • 0
    • 0
    • 0 Deem this to be "Fake News"
    • Woodshedder

      Bozo, I like the idea of delaying the purchase after the ranking and have seen likely some of the same studies as you have. I have some ideas and have played around with some things, but have not had time to do anything formally. It makes sense. However, since these funds have to be held 30 days, I think finding strong momo is the most important factor. Can you share some studies you have come across? I’d like to see them. Thanks!

      • 0
      • 0
      • 0 Deem this to be "Fake News"
      • Bozo on a bus

        These studies are like cops, there’s never one there when you need it πŸ™‚

        I checked Faber’s book – I though he had implented a delay, but it’s not mentioned.

        There are two delays in Malcolm Williams COP Strategy (http://copstrat.com/), which is a class rotation system using Morningstar returns data: the first is the delay in the Morningstar ranking data, and then there is another optional 2-week delay. He has a table on the “Top Page” and another table in Appendix D. Regrettably, this is a lengthy, confusing site.

        I’ll keep looking.

        • 0
        • 0
        • 0 Deem this to be "Fake News"
      • Bozo on a bus

        I forgot to mention CXO Advisory has a number of posts on returns using momentum strategies. Some of these include a delay. Unfortunately I’m not a subscriber – if anyone has access I’d be interetsed in whether it’s worthwhile.

        • 0
        • 0
        • 0 Deem this to be "Fake News"
  8. Steve

    Woodshedder,

    In an earlier post there was a comment

    “you generally get cleaner signals if you adjust for volatility. I keep forgetting that most people don’t use volatility adjusted price series to calculate their indicators ”

    I get the idea but haven’t found a formula for it that I can try in excel. Can you explain or detail how this is done? thanks

    Steve

    • 0
    • 0
    • 0 Deem this to be "Fake News"
    • Woodshedder

      Hi Steve, sure, this is what I use:
      DailyChg=ROC(C,1);
      VolSTD = StDev(DailyChg, 30 )

      So we take the daily change from previous close to current close, and then determine the standard deviation of those closes over a given period of time (30 trading days, in the code above). Hope this helps!

      • 0
      • 0
      • 0 Deem this to be "Fake News"
  9. mybestfunds.com

    Wow – it’s been a couple of years already. Thanks very much for coming back to this work and posting the results you’ve had by actually following the system. I wonder as you finalize this system, if you might also consider adding some funds while removing the SP500 filter to study a system that stays in the market at all times. To be more specific – you could add Fidelity bond funds with 30 day trading limits (eg FBIDX, FBNDX, FIBIX, FINPX, FLBIX, etc.) I have found that there is a rotation into the bond funds when the select sectors are down. For instance FLBIX had ~29% return not counting dividends over the last year period. I’ve gone through the Fidelity bond funds and found ones with 30 day trading limits. You can see the list in the Funds tab of my site. I’ll go through the list today and double check the 30 trading limit again since I haven’t looked in a while. Regardless, if you try this “twist” on your strategy or not – great work!

    • 0
    • 0
    • 0 Deem this to be "Fake News"
    • mybestfunds.com

      Also, you can look at the Rankings tab to see over the last several months (almost 2yrs) how bond funds moved in and out of the rankings during market downturns. My ranking selection ended up being a modification of your previously posted system. Best regards!

      • 0
      • 0
      • 0 Deem this to be "Fake News"
      • mybestfunds.com

        Here’s the list of bond funds I use. I checked today to make sure they have 30 day redemption periods. FBIDX, FBNDX, FIBIX, FINPX, FLBIX, FMSFX, FSBIX, FSTGX, FTHRX, FTBFX

        • 0
        • 0
        • 0 Deem this to be "Fake News"