I recently listened to an interesting interview at Better System Trader with Jay Kaeppel on Seasonality, a topic which I hadn’t done much backtesting on previously.
Jay outlined 3 rules for constructing a seasonal trading strategy on the stock index:
– Stay long the last 4 days and first 3 days of the month (S_EOM)
– Stay long the middle of the month, business days 9, 10, 11 (S_MOM)
– Stay long 3 days before and after holidays (S_HOL)
I’ve recreated these rules on the SPY ETF using R and the Systematic Investor Toolbox with the output below:
I’ve showed the equity curves for the 3 strategies separately (S_EOM, S_MOM, and S_HOL) as well as the combination of all 3 rules together (S_C2). A third variation (S_C3) is the combination of all 3 rules with a 200dma risk filter on the SPY itself, that is the strategy will only be long the index if one of the rules is true and the SPY is above its 200dma. Two benchmarks are also on the report: The SPY itself and SPY200, which is the SPY with the 200dma risk filter applied again.
The majority of the outperformance for the seasonal strategy is coming from the End of Month rule. The other two rules increase overall returns slightly but don’t have much of an effect on risk adjusted returns, with the sharpe ratio staying relatively constant. The seasonal strategy with the risk filter (S_C3) has a similar return to the SPY itself, but with half the volatility and nearly one quarter the drawdown. A much nicer ride for your portfolio!
In the future I may explore the impact of transaction costs on the strategy as well as how walk forward testing affects seasonal strategy out-of-sample performance.
Jay recently updated some of the strategies from his book, Seasonal Stock Market Trends, check out the links below for more of his work:
Updating my seasonal trends trading strategy Part 1
Updating my seasonal trends trading strategy Part 2