Human behavior follows seasonal patterns, as anyone who’s been to the gym in January can confirm. On Dec. 31st, the gym is empty. But come the New Year, it fills with sweaty bodies contorted in unfamiliar poses. A true gym rat is not disturbed by this because he knows the crowding is temporary. By February, everything is back to normal and the mass of humanity migrates back to its natural habitat, perched on bar stools or sinking into sofas, depending on their stage of life.
It is not unreasonable to expect to find seasonal patterns in the markets, too. The calendar dictates predictable behaviors. For example, quarterly rebalancing by asset allocators leads to consistent flows from outperforming asset classes to underperforming asset classes around the end of the quarter.
In early June, Goldman Sachs published a note to clients in which Managing Director Scott Rubner predicted a seasonal rally in stocks in the first half of July. As Rubner said, “Since 1928, the first 15 days of July have been the best two-week trading period of the year for equities.”
Let’s check on this claim and see if this seasonality holds up to scrutiny.
Data
As futures traders, it’s easier to work with continuous futures data. We have code to join individual futures contracts into continuous futures. The benefit of futures is that we don’t have to deal with dividends; futures prices reflect expected dividends and the continuous futures contract approximates total return of the index.
S&P 500 futures (the spoos) were launched on the CME in April 1982. E-mini S&P 500 futures followed in 1997. As the stock market rose over decades, the original S&P 500 contract became too big and liquidity moved to the e-mini. The full contract was delisted in 2021 and no longer trades.
We create a continuous contract by concatenating spoos with mini, with the breakpoint being Dec. 31st, 1999. We’ll use spoos before this date and the e-minis afterwards. Our data starts in 1982, giving us 42 years to work with.
We work with logarithmic returns because they have the convenient property that summing them over time gives us geometric returns.
Returns in the first half of July
What do the returns in the first half of July look like?
We can see that Goldman Sachs is right, the 1H July returns since 2013 have been consistently great. However, the decade before was nowhere as good. The 1990s and 2010s show good performance, the 1980s and 2000s are bad. Not surprisingly, those years line up with bull and bear stock markets. 1H July does well during bull markets and not so well during bear markets. Isn’t that true for any seasonal period? We’ll have to dig deeper.
Two-week S&P 500 performance
Let’s compare the performance of 1H July with other two week periods throughout the year. We obtain average returns for each half-month period and then sort the half-month returns to see how 1H July returns fare in comparison.
The first thing to notice is that in the last 42 years, 1H July was not the best performing 2-week period. That honor goes to 2H Dec.
The second thing to notice is that there is no obvious pattern to the returns. The hypothesis raised by Goldman Sachs was that flows into passive funds happen in the 2-week period after the end of the quarter. But when we look at those periods, they don’t look all that much better than the rest of the year. Yes, 1H July is stronger than most periods, but 1H Apr and 1H Jan are barely above average, and 1H Oct is near the average.
How unusual is the 1H July performance?
We need to have some sort of a yardstick to evaluate the 1H July performance. But we only have the single market history of the last 42 years. Maybe the 1H July performance was just a random fluke? We would like to create many alternative universes, with their own market histories, and see in how many of them 1H July delivers similar or better performance than what we saw in real market data.
The way to do that in a statistically rigorous manner is called the bootstrap. We will create an alternative market data series by randomly selecting daily returns from historical data (with replacement) and assigning them to dates. In this way, we obtain a data series that has similar statistical properties as historical data, but breaks the link between returns and half-monthly periods. We then select the returns that correspond to 1H July returns in the simulated data.
We run the simulation 50,000 times, creating 50,000 alternative histories (or 2.1 million years of simulated data). On my laptop, it only takes about 1 minute to generate the run.
The resulting distribution of returns looks very much like the normal distribution. It is symmetric, doesn’t have fat tails, and its mean is 0.3%. The mean is slightly lower than other half monthly periods because 1H July has the Fourth of July holiday and therefore has fewer trading days. Our simulation correctly takes that into account.
Looking at the distribution chart, we can see that the actual 1H July return of 0.97% is higher than the simulated mean return of 0.3%. Only 12% of simulated observations have higher return than 0.97%. We can say that there is a 12% probability that the observed 1H July returns are due to chance, or that we have 88% confidence that they are higher than random returns.
However, this is not the end of the story.
We have to be precise in defining what we measure. The above exercise estimates the probability that 1H July returns are higher than what we would expect from a random distribution of half-monthly returns. Is that the actual claim that Goldman Sachs made?
Let’s quote the research piece again: “Since 1928, the first 15 days of July have been the best two-week trading period of the year for equities.” This claim is subtly different. It says that 1H July is the best half-monthly period, not just that it is above average.
We need to run a new bootstrap. This time, we will not look at a random period as the benchmark to compare against. Instead, we find the best performing half-monthly period for each run, and compare against that. This version of the bootstrap runs about twice as long as the first version.
The resulting distribution is much more interesting, and would have been impossible to obtain using traditional statistical methods. It is positively skewed (its mean is above its median) and it has fatter tails than the first bootstrap.
The mean return of the best performing half-monthly period is 1.45%, much higher than the observed 0.97% return. The best simulated period was higher than the actual return 96.8% of the time, meaning that we have very little confidence that 1H July is actually the best performing period of the year. Goldman’s claim can be rejected with high confidence. They were fooled by randomness.
Conclusion
What are the trading implications of this exercise? 1H July does seem to be seasonally stronger than would be expected by random chance, but it is probably not going to be the best period going forward. Our conclusion is boring: we will stay in the stock market, expecting slightly more than average return, but we will not layer additional exposure because of seasonality. The data does not support it.
There is another takeaway from this exercise. Just because a managing director at a big, brand-name financial behemoth like Goldman Sachs makes a statement, doesn’t make it true. Bloomberg promoted Goldman’s research because they need click-bait headlines to drive engagement. To hell with subtlety. Bold but incorrect claims are more useful than true but subtle conclusions.
Catchy headlines are there to attract eyeballs, not to provide investment advice. It’s better to rely on financial plan constructed with input from independent professionals. And then watch the markets, calm and collected, from the bar stool or a sofa.