Building a Better Fidelity Sector Fund Rotational System: Part 3, Final Edition

3,026 views

Part 1

Part 2

After two years of in-sample results and some tweaks to the first version of the system, the Fidelity Sector Fund Rotational System is ready to go live.

Based on the analysis I presented in Part 2, I have changed the inputs on system’s variables. Some were changed more than others. The goal was to set the inputs to areas that had proved to be robust over a 20 year time period and over the past 2 years. If one carefully observes the charts I present in Part 2, an educated guess can be made as to what was chosen.

I have also added a new feature which allows the primary variable, the rate-of-change (ROC), to adapt to volatility.

After re-setting the inputs, I ran a final optimization of the primary ranking mechanism, the ROC. I wanted to be sure that I had not curve-fit the system. The results are below.

Click on the graphs to enlarge…

The graph above uses over 20 years worth of data.

There is a large sweet-spot from about 105 to 135 where CAR and Maximum System % Drawdown are both very stable.

The graph above represents about 12 years worth of data.

It too shows a large sweet-spot from about 110 to 145.

These graphs demonstrate that the primary ranking mechanism still offers a large area from which to choose a setting. Warning: because I have made the ROC adaptable to volatility, simply choosing a ROC length from these graphs and using it is likely to generate a different (but still decent) future performance from this system.

System Stats:

I’m going to use 1.1.2000 – 1.27.2012. Starting the system back further yields better results (and you can get an idea of what they would be from previous and current graphs). The last decade or so has really been a brutal time to be in the market. Keep in mind that I can slightly alter a few inputs and make more recent performance look better. That was not my goal. Window dressing a system for the public is tempting but is ultimately ridiculous and maybe even reckless.  My goal was to choose robust settings that will perform consistently well in the future, and I feel I have done so.

Equity Curve and Drawdowns:

Final Thoughts:

One must expect performance to be worse and drawdowns to be larger than what they are in backtested historical results. That being said, ROC as a ranking mechanism has been unbelievably stable, as has the sector rotation model. Since I will be trading this on funds meant for retirement, I will be happy with a 10% annual return, and I believe this system will achieve it. Furthermore, it will require very little time to manage, and should have smaller drawdowns than a buy-and-hold strategy.

There are likely further tweaks or even outright changes that I have not considered, or even fathomed. I would appreciate hearing your thoughts if you think I have missed something, or if you just have a neat idea.

I did add Fidelity Bond Funds into the rotation, as suggested by MyBestFunds, but they hurt performance. I believe this is because the system punishes volatility. Since bond funds are typically less volatile than sector funds, the bond funds out-ranked and replaced sector funds from time to time in the rotation. Removing the moving average filter and including the bond funds (in hope they would be picked during bear market phases) only made things worse.

 

 

Building a Better Fidelity Sector Fund Rotational System: Part 2

1,619 views

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.

Building a Better Fidelity Sector Fund Rotational System

2,421 views

For all previous posts on the Fidelity Select Rotational System, please visit the archive.

There is quite a bit of history behind this system. Since some of you are likely new(er) here, I’ll start with a quick synopsis.

My wife has a 401K with Fidelity. Of course every good trader wants to pilot all available capital, and I’m no different. But when its the wife’s money, one wants to make sure it is steered in the right direction. While investigating rotational systems, I discovered a site which presented a system using Fidelity Select Sector Funds (the site is referenced in the archive). This discovery presented a synergy of sorts – I could build and trade a rotational system in my wife’s Fidelity account. Something about birds and stones came to mind. Anyway, the primary purpose behind building this system has been to use it to trade my wife’s account. I want to be clear that the basic idea as well as some of the component parts of the system are not original to me. I will reference from where the ideas came as necessary.

So with that out of the way, what were the goals for this system?

  1. Beat the S&P 500
  2. Protect my wife’s account from catastrophic loss
  3. The system must be robust
  4. Spend very little time managing the system

Let’s look at each goal. There is ample research to support that a sector rotational system will beat the S&P and that these systems are robust. Perhaps the most accessible research is from Mebane Faber: Relative Strength Strategies for Investing. (This paper lists additional resources to support its foundations.) So that takes care of goals 1 and 3.

As for protecting the account from catastrophic loss, Mr. Faber’s work can also be referenced – A Quantitative Approach to Tactical Asset Allocation details, among other beneficial aspects of a rotational system, the use of moving averages to protect an account from catastrophic drawdowns. Taking a similar approach ensures goal 2 is met.

As for goal 4, the very nature of Fidelity Select Sector Funds limits the amount of time one can spend managing the system. Because the funds require a 30 calendar-day hold time, it will be financially punitive to make more than a few trades a month. Fidelity will increase the penalties each time a round-trip trade lasting fewer than 30 calendar-days is made, until the account is effectively locked out from trading in the funds.

In the next post, we will examine the specifics of the existing Fidelity Select Rotational System (for which I’ve posted out-of-sample results over the last 2 years) and discuss where I seek to make improvements in order to finish the development. There will be some cool graphs and statistics and stuff, unlike this post.

The finished system will begin live trading within a few weeks.

 

Building a Better Fidelity Sector Fund Rotational System: Part 3, Final Edition

3,026 views

Part 1

Part 2

After two years of in-sample results and some tweaks to the first version of the system, the Fidelity Sector Fund Rotational System is ready to go live.

Based on the analysis I presented in Part 2, I have changed the inputs on system’s variables. Some were changed more than others. The goal was to set the inputs to areas that had proved to be robust over a 20 year time period and over the past 2 years. If one carefully observes the charts I present in Part 2, an educated guess can be made as to what was chosen.

I have also added a new feature which allows the primary variable, the rate-of-change (ROC), to adapt to volatility.

After re-setting the inputs, I ran a final optimization of the primary ranking mechanism, the ROC. I wanted to be sure that I had not curve-fit the system. The results are below.

Click on the graphs to enlarge…

The graph above uses over 20 years worth of data.

There is a large sweet-spot from about 105 to 135 where CAR and Maximum System % Drawdown are both very stable.

The graph above represents about 12 years worth of data.

It too shows a large sweet-spot from about 110 to 145.

These graphs demonstrate that the primary ranking mechanism still offers a large area from which to choose a setting. Warning: because I have made the ROC adaptable to volatility, simply choosing a ROC length from these graphs and using it is likely to generate a different (but still decent) future performance from this system.

System Stats:

I’m going to use 1.1.2000 – 1.27.2012. Starting the system back further yields better results (and you can get an idea of what they would be from previous and current graphs). The last decade or so has really been a brutal time to be in the market. Keep in mind that I can slightly alter a few inputs and make more recent performance look better. That was not my goal. Window dressing a system for the public is tempting but is ultimately ridiculous and maybe even reckless.  My goal was to choose robust settings that will perform consistently well in the future, and I feel I have done so.

Equity Curve and Drawdowns:

Final Thoughts:

One must expect performance to be worse and drawdowns to be larger than what they are in backtested historical results. That being said, ROC as a ranking mechanism has been unbelievably stable, as has the sector rotation model. Since I will be trading this on funds meant for retirement, I will be happy with a 10% annual return, and I believe this system will achieve it. Furthermore, it will require very little time to manage, and should have smaller drawdowns than a buy-and-hold strategy.

There are likely further tweaks or even outright changes that I have not considered, or even fathomed. I would appreciate hearing your thoughts if you think I have missed something, or if you just have a neat idea.

I did add Fidelity Bond Funds into the rotation, as suggested by MyBestFunds, but they hurt performance. I believe this is because the system punishes volatility. Since bond funds are typically less volatile than sector funds, the bond funds out-ranked and replaced sector funds from time to time in the rotation. Removing the moving average filter and including the bond funds (in hope they would be picked during bear market phases) only made things worse.

 

 

Building a Better Fidelity Sector Fund Rotational System: Part 2

1,619 views

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.

Building a Better Fidelity Sector Fund Rotational System

2,421 views

For all previous posts on the Fidelity Select Rotational System, please visit the archive.

There is quite a bit of history behind this system. Since some of you are likely new(er) here, I’ll start with a quick synopsis.

My wife has a 401K with Fidelity. Of course every good trader wants to pilot all available capital, and I’m no different. But when its the wife’s money, one wants to make sure it is steered in the right direction. While investigating rotational systems, I discovered a site which presented a system using Fidelity Select Sector Funds (the site is referenced in the archive). This discovery presented a synergy of sorts – I could build and trade a rotational system in my wife’s Fidelity account. Something about birds and stones came to mind. Anyway, the primary purpose behind building this system has been to use it to trade my wife’s account. I want to be clear that the basic idea as well as some of the component parts of the system are not original to me. I will reference from where the ideas came as necessary.

So with that out of the way, what were the goals for this system?

  1. Beat the S&P 500
  2. Protect my wife’s account from catastrophic loss
  3. The system must be robust
  4. Spend very little time managing the system

Let’s look at each goal. There is ample research to support that a sector rotational system will beat the S&P and that these systems are robust. Perhaps the most accessible research is from Mebane Faber: Relative Strength Strategies for Investing. (This paper lists additional resources to support its foundations.) So that takes care of goals 1 and 3.

As for protecting the account from catastrophic loss, Mr. Faber’s work can also be referenced – A Quantitative Approach to Tactical Asset Allocation details, among other beneficial aspects of a rotational system, the use of moving averages to protect an account from catastrophic drawdowns. Taking a similar approach ensures goal 2 is met.

As for goal 4, the very nature of Fidelity Select Sector Funds limits the amount of time one can spend managing the system. Because the funds require a 30 calendar-day hold time, it will be financially punitive to make more than a few trades a month. Fidelity will increase the penalties each time a round-trip trade lasting fewer than 30 calendar-days is made, until the account is effectively locked out from trading in the funds.

In the next post, we will examine the specifics of the existing Fidelity Select Rotational System (for which I’ve posted out-of-sample results over the last 2 years) and discuss where I seek to make improvements in order to finish the development. There will be some cool graphs and statistics and stuff, unlike this post.

The finished system will begin live trading within a few weeks.