Thursday, November 26, 2015
Home / Rotational Strategies

Rotational Strategies

Optimization of the Caveman Rotational System on the Russell 2K Universe

I’m just starting to explore the possibilities of this Caveman system.

It is very simple, and I like simple. I’m not sure where any of this will lead. For now, I’m just exploring and having fun.

To create the chart below, I ran an optimization using brute force where I tested a minimum number of days to hold each trade against a moving average length.

The system simply ranks the stocks by the number of days they have traded above an X day moving average and holds each trade for Y days before re-ranking and possibly rotating into another stock. There are a maximum of 3 stocks held at one time. If, after the minimum hold time, a stock is no longer in the top 3, it is replaced with the higher-ranked stock. The system goes to cash if the $SPX is beneath its 50 day average and the minimum hold times have been met.

This is simply a proof-of-concept, so no commissions or slippage have been included. Neither has a return on cash. I ran the optimization from 1.1.2007 to 1.1.2010. The Russell 2K data I’m using has been adjusted to included non-surviving stocks.

Click on any of the charts to enlarge…

Optimization Big Picture

This shows the optimization results of the X day moving average (num) against the Y days held (HoldMindDays). While the optimized parameters achieved an annualized return of 51.1%, the space is not at all smooth. All those sharp peaks mean there is a substantial likelihood that the system will be curve-fit and will never produce anywhere near 51.1%. More likely,  we could expect less than half that in real-time. Although since I only ran through 1.1.2010, we will eventually see how the optimized parameter do in out-of-sample testing.

Optimization HoldMinDays

This graph shows a fairly wide space where holding anywhere between 30 and 70 days has been optimal.

Optimization Xdaymovingavgs

The other side of the 3D optimization graph shows that the optimal moving average was the 150 day. We also see peaks around 100 and 50. I again want to emphasize how “peaky” these results are. We hope that these graphs produce smooth, rolling hills rather than sharp peaks and deep valleys.

So for fun, lets use a 50 day minimum hold with the 150 day moving average.


Russell Caveman Equity and Historic Profits

The system’s compound annual return was 44.54% with a maximum drawdown of -33.83%. It made 53 trades with 66.04% winners and an average trade of 7.05%.

The flat spots of the curve are when the system is holding cash.

While this is a fun exercise, based on the very peaky optimization graph, I’m not so sure there is anyway to trade this system and have any faith that it will continue to perform well in the future. That being said, I’m going to play around with it a little bit more.

Comments »

Checking in on the Caveman Rotational System

I first wrote about this system on February 2, 2012, in a post entitled A Rotational System So Simple a Caveman Could Trade It.

I’ve run a test of in-sample performance (results below). Do check the above link to get the system rules. For those of you who are lazy and just skim this post, the system trades the Fidelity Sector Funds. My aim is to build a portfolio of ETFs and run the system over those, with an update on how this works out, in the near future.

Results since 2.2.2012:

  • CAGR:                                        16.03%
  • # of Trades :                            22
  • % of Winners:                       81.82%
  • Avg. % Profit/Loss:              2.56%
  • Max. System Drawdown:  8.82%
  • Sharpe @ 2.5% Risk Free: 1.22

Equity Curve:

Caveman Equity Curve

Flat areas of the curve mean the system was in cash.

I know we’ve been in a bull market, but this performance is not too shabby. Buy-and-hold CAGR for $SPY over the same time period is 13.99% with a maximum drawdown of -9.69%. The Caveman System has beat both the buy-and-hold annualized return and drawdown.

I’ll be re-examining this system in the near future.

Comments »

Long Term Investors Crazy Not to Sell in May?

I was reading a post from EconomPic called Checking in On the World’s Greatest Rotation Strategy. This strategy is essentially just Sell in May and Go Away, but has one buy the Long government / credit bond index rather than just sitting in cash from May – October.

Oddly enough, I had never tested this simple strategy before, and the results EconomPic posted were good enough that I had to take a look under the hood to see exactly what was making this system run.

The Rules are simple:

  • Long $SPY from the close of the last trading day of October through the last trading day of April.
  • Long VBLTX (Vanguard Long Term Bond Index Fund) from the last trading day of April to the last trading day of October.
  • First day of test is 6.20.1996. Last day is 3.29.2013. First day is first day of history for VBLTX.
  • No commissions or slippage included.

The Results:

Sell in May Basic

The top pane is $SPY. The middle pane is the equity curve for the strategy. The lower pane shows the drawdowns in percentage terms. The blue portions of the equity curve represents time in $SPY while the green represents time in VBLTX.


Sell in May Basic Stats

Because of the way I coded his, all the trade information pertains only to the $SPY trades. The returns from VBLTX are built into the overall returns but are not considered to be trades. Perhaps in future tests I’ll break out both $SPY and $VBLTX as separate trades.

If I subtract out the added return from VBLTX, the annualized return from just holding $SPY is 8.82%.

$SPY buy and hold over the same period is 5.26% with a maximum drawdown of -56.47%. So even if you do not rotate into a vehicle to provide a return on your cash, you still beat buy and hold just by selling in May.

Historical Profit Table:

Sell in May Basic Profit Table

This strategy has just been killing it. I’m leery to assume it can continue killing it. Some questions:

  • Assuming government credit / bonds do not continue to perform as well, with what would we replace VBLTX?
  • Can we add additional robust timing mechanisms to improve performance of $SPY and/or VBLTX?

I’m looking forward to reading your ideas on these questions in the comments.

The next post will add in an additional timing measure for $SPY.

Comments »

A Rotational System So Simple A Caveman Could Trade It

My recent posts on the Fidelity Sector Fund Rotational Strategy generated many comments. The following strategy was suggested by the commenter named Redshark.

The problem with these rotational strategies is that unless someone is giving out the signals or the investor has the ability to set up the strategy in Excel, there is no easy way for the investor to trade the rotational system. There are simply too many variables to calculate by hand, and most investors do not have the time or inclination to learn R or learn how to code in Tradestation or the like.

What I like about Redshark’s idea is that as the title states, it is very easy to calculate the signals. In fact, all one needs is the most basic of charting packages.

I have tested it over the Fidelity Sector Funds, which I particularly like because they can be traded with no slippage and zero commissions. This makes them the perfect candidate for testing over as historical results are more likely to be able to be generalized into the future.

All that being said, here are the rules:

  • Buy the 3 funds that have been above their 50 day moving averages for the most days
  • Hold the funds for at least 30 days
  • On the 30th day, if the $SPX is beneath its 50 day moving average, all funds will be liquidated the next day and the system will not trade again until the $SPX is above its 50 day moving average.
  • On the 30th day, if the open positions are still in the top 3, do nothing and re-evaluate the next day OR if a fund(s) is not still ranked in the top 3, sell it on the 31st day and buy the fund that has replaced it in the top 3.

That is all there is to it. I have not at all optimized the variables. I chose 50 days for both because I simply prefer the 50 day moving average.

Results from 1.1.2000 to 2.2.2012

  • Compound Annual Return: 12.21%
  • Winners: 60.78%
  • Maximum System Drawdown: -32.10%
  • Sharpe: 0.74

Equity Curve:


Historical Profit Table:

I expect that most readers will wonder what this will do with ETFs. I’m wondering too.

Redshark suggested using bonds. I did add two Fidelity bonds (FBNDX and FTBFX) to the portfolio, and they had a deleterious effect on performance.

So there you have it: A very simple rotational system that beats buy-and-hold with reduced drawdowns, and you don’t need any specialized software to generate the signals.

Comments »

Thinking About a 4 Factor ETF Rotational System

Thinking about what kind of ETF rotational system I would like to trade prompted me to ruminate a while upon which factors ( constituent or element that brings about certain effects or results) should be included. I want to keep things simple, which for me means not using more than four factors.

For an ETF system, we need to be able to assign some measure to the ETF in order to compare its performance relative to all of the other ETFs in the universe. I will call this factor 1.

Factor 1: This particular factor is often a measure of strength or weakness, perhaps Rate-of-Change, as we explored in the Fidelity Select system. The factor could be a moving average, or combination of moving averages, or the slope of a linear regression line.

For this next system, we will use RSI for factor 1.

Factor 2: Our next factor concerns how long the ETF will be held before it is rotated. Perhaps not rotating until after a specific amount of trading days have passed is an unnecessary waste of a factor. In that case, we could scan the ETF universe nightly to update the ranks for factor 1, and then rotate the next day into the ETFs that have moved into the top ranking.

As I believe that time exits have the tendency to be curve-fit, I want to make sure that we have a factor 2 that is robust, or else we will discard it and simply update the ETF rankings once a day.

Factor 3: The more I learn about trading and the markets, the more I realize the important role of volatility in affecting returns. For this reason, factor 3 will incorporate some measure of volatility. Will we use volatility to penalize the ranking mechanism, as we did in the Fidelity Select System, or will we seek to trade higher volatility ETFs? This will remain to be seen.

Factor 4: When I think about building a system that I could trade confidently for years at a time, factor 4 necessarily becomes some sort of drawdown protection. Factor 4 might only need to be something as simple as a moving average filter. Perhaps the moving average filter is replaced with inverse ETFs, and we instead diversify among a number of ETFs.

Other considerations, which I classify as filters rather than factors, concern how we decide which of the ETFs to exclude from our universe. Perhaps we only want ETFs that are liquid or perhaps we just want to include the S&P500 sectors. I have often wondered if these things that I consider filters are actually factors. This issue would make for an interesting discussion. Anyway, for now, I will not consider how we filter the universe to be a factor.

Next we will look at the basic ETF rotational system. I will outline the initial factors to be tested and will likely discuss my rationale for using them.

Comments »

Fidelity Select Sector Rotation Strategy: Part 2

Read Part 1…

One of the benefits of blogging is that it offers opportunities to discuss ideas with some talented folks. After seeing I had linked to his site, John from Fundztrader left a very detailed comment concerning the FSF Rotation Strategy. His links provide ideas on how to improve a FSF rotation strategy. These ideas will be incorporated once we get to the real fun of improving the basic system.

I was able to download FSF data from yahoo for every fund except for FSPFX, the paper & forest products fund. I ran the test with the actual FSF data, and results improved over the test with the ETFs. I did not backtest with the adjusted closes, so the results do not include dividend adjustments. I’m going to go ahead and post the results anyway as I think it might be very instructive to see a comparison of the strategy run without vs. with adjustments for dividends.

Edit: The testing in this article was using the adjusted closes after all, so the results do include dividend adjustments.

What most improved the results was changing the code so that the rotation occurs exactly as required by the rules. The strategy now has the fund held for at least 30 calendar days, (rather than rotating on the 2nd day of each new month) and then begins the calculation to see if a rotation should occur.

The Results




The System Shows Promise…

We now have a system with a positive CAGR of 11.65%. Over the same period the S&P500 has a CAGR of 7.57%. Also, note the performance in 2009…

As John noted in his comments, the equity curve shows how volatile the system is. It is also evident that the system gets hurt during bear markets. It should be fairly simple to improve these shortcomings, and an attempt will be presented in Part 3.

If you would like an Excel sheet with all the trades, email me: Woodshedder73 over at gmail with the subject line of Rotation Strategy Trades.

Comments »

Rotational System: Fidelity Select Sector Rotation Strategy

This is the first in a series of tests on rotational systems. Read Part 2.

As described in the jumping-off post, this is a test of the strategy presented in this article: Sector Rotation Strategy: Simple Rotation Trades Just One Fund a Month.

The bottom line is that my results show that the strategy above loses money. I could not get even close to replicating the results. However, my test suffers from some severe limitations (I’m using ETFs instead of the Fidelity Select Funds) which do not allow for exact replication. I’ll address the limitations in a bit.

Here is a good link listing the Fidelity Select Funds (FSFs) with descriptions and their benchmarks: Fidelity Select Fund List.

The Rules:

1) Track the 25 day (or 5 week) price change in all of the Fidelity Select Mutual Funds.

2) Invest in the Fidelity Select Fund with the highest percentage gain over that 5 weeks.

3) Hold that Select fund for at least 30 calendar days, to avoid the Fidelity early redemption fees.

4) After 30 days, if that Select Fund is still the top Select fund, continue to hold it. Otherwise, exchange it immediately for the currently top ranked Select fund.

5) Hold the new Select Fund for 30 calendar days.

The Results:

Click on the graphs to enlarge…





1. I’m backtesting over a list of ETFs which was generously constructed by a reader. View the list here: ETF Equivalents for Fidelity Select Funds. Not only is the list not entirely complete, but not every FSF has an ETF that is highly correlated.

2. Some of the FSFs have been around for almost two decades longer than the ETFs.

3. I set the backtest up quickly, and it is not rotating on exactly the open of the 31st calendar day. Instead, it is rotating on the open of the 2nd trading day of every new month.

4. Other limitations which I haven’t yet discovered.

What’s Next for This System?

I would really like to complete a more accurate test. A quick look at Yahoo data shows that they offer a data history of the FSFs. I should be able to load these up into the ‘ol wayback machine and test over actual FSF data.

Once I get better data, we can attempt some improvements. I’ve already discovered one improvement, although it might not work on the actual FSFs.

I would also like to check and see if I can find more correlated ETFs. I’m sure thankful for Thomas compiling the list, but I should probably double check for better equivalents, just to be sure.

If you would like an Excel sheet with all the trades, email me: Woodshedder73 over at gmail with the subject line of Rotation Strategy Trades.

Comments »