Day of the Month Seasonality Part 1: S&P 500, NASDAQ Composite, Russell 2000

My first post is inspired by the recent day of the month seasonality posts over at MarketSci (one, two). In this post I will show how day of the month seasonality applies to the S&P 500 as well as two other popular indices: the NASDAQ Composite and the Russell 2000.


The methodology:

  1. Standardize every month to 21 trading days; round to the nearest integer when the number of days in a month is different.
  2. Use the last 5000 days of daily returns and estimate the average return on every (standardized) day of the month.
  3. Rank the days by their past returns. If the next day is in the top 6, buy on close and sell on the next close.
  4. Move forward by one trading day and repeat from step 2.

As such, the approach is 100% walk-forward; there is no look-ahead bias in these results.


The results:

 S&P 500:

The sample starts in 1950; the results thus start in 1970.

S&P 500 day of the month seasonality results


A quick comparison of the statistics:

S&P500 stats

While the returns from the “Top 6” days are very impressive, they exhibit somewhat higher volatility, and can actually under-perform for very long periods of time.


NASDAQ Composite:

The equity curves:

NASDAQ Composite day of the month seasonality results

And the statistics:

nasdaq stats


Russell 2000:

The equity curves:

russell 2000 graph

And the statistics:

russell 2000 stats

The Russell 2000 stands out as rather strange: the Top 6 days did great during the bear market, but have been ineffective ever since. Of course, we only have a few years of useful data in this case, so it could very well be the case that we have stumbled on a period of under-performance by the day of the month effect.


Here are the actual statistics for the last 5000 days for each of the indices (with the top 6 days highlighted in bold):

daily stats

It’s both unexpected and quite interesting that despite extremely high correlations the last few years among these indices, there is significant variation between the optimal days for each one.

One common feature across all three indices is that the Top 6 days tend to be more volatile. Could it be that the day of the month effect is not an anomaly, but compensation for taking on more risk? Given the very small magnitude of volatility differences but significant differences in returns, I doubt it.

Another possible explanation that seems intuitive is institutional money flows. Yet it is difficult to justify that explanation when there are such large differences between the three indices: why would big money pile in to the Russell 2000 stocks, and out of the S&P 500 stocks on the last day of the month? For now, a good explanation of the effect eludes me…


By itself, day of the month seasonality is not a trading strategy. While there is substantial protection on the downside compared to buy & hold, commissions would completely destroy the returns. On the other hand, there seems to be potential in using the day of the month as an additional factor in an existing trading model or as an input in a discretionary swing trading approach.

As an example I have constructed a very simplistic trading strategy based on the S&P 500: go long if RSI(3) is below 5. I then filter the trades based on whether they are in one of the top 6 days (once again, the top 6 days are determined using walk-forward optimization so there is no look-ahead bias here).

The “RSI(3) < 5” rule by itself has an average daily return of 0.046% (0.259% since 2002); after using the filter, the rule returns 0.143% on average (0.458% since 2002). Overall using the filter, the strategy achieves roughly the same returns with less than a third of the trades.

RSI(3) Rules S&P500 Equity Curves


In the next parts I will investigate how these effects hold up in European and Asian Markets, and perhaps even non-equity markets.

Comments (11)

Leave a Reply

Your email address will not be published. Required fields are marked *