Seasonal Performance Variation of Stocks

Here are some more stats for the S&P500 (no dividends).

For election years (even years) the absolute return for the 6-month period prior to election (May-Oct):
34 samples excluding best and worst return periods, average return= 0.46%

For non-election years (odd years) average of the absolute returns for the 6-month periods (May-Oct):
34 samples excluding best and worst return periods, average return= 1.95%

So we can look forward to the statistically worst period for the S&P500 until the mid-term election.

Hi guys.

Maybe a simple explanation might be that towards the end of the year, the next year and 2-years-out-earnings come visible. And the estimates roll forward another year. And the valuation metrics suddenly look better making stocks appear more attractive than they have been during the summer. This may lead to investors pay more and thereby driving up market prices.

That would also be my explanation, forward P/E`s are based on this years earnings until october/november where it switches to next years earnings. And i think the effect is stronger in europe because of the dividend dates. In the DAX for example nearly all dividends are paid in April/May so people that want to sell wait for the dividend, even if this is a losing proposition. (because of taxes)

Whatever it may be, there is no doubt that stocks perform worse on average for the six months May to Oct.

I just launched this DM: “5 Dual Ranked Stocks of the S&P500 - no trading Jul & Aug” which profits from this anomaly.
https://www.portfolio123.com/app/r2g/summary?id=1531855

This model’s holdings are 5 S&P 500 stocks. It trades for 10 months, from end of August to end of June, only. There is no trading during the summer months of July and August when the model switches to ETF SHY (also ok would be cash or defensive ETFs XLV and XLP.)

During the seasonably weak months, from May to June, it only selects stocks from the Sectors: Staple, Healthcare, Energy, and Discretionary. This increases return and reduces maximum drawdown.


You got me hooked (again) on seasonality. I did a lot of it 20 years ago on the DJIA using calendar months, option months, and moon cycles (!).

Using just the P123 screener and its backtester, this is the best I’ve found so far, which just alternates between three ETFs:

showVar(@1, 0)
showVar(@1, @1 + 10 ^  0 * (Ticker("TLT") AND InSet(Month,5,6,7,8,9)))
showVar(@1, @1 + 10 ^  1 * (Ticker("GLD") AND InSet(Month,1,2)))
showVar(@1, @1 + 10 ^  2 * (Ticker("XLB") AND InSet(Month,3,4,10,11,12)))
@1 > 0

That gives a CAGR of 23.46% since the start of 1999.

I started looking at that because the five ETFs (“XLP,XLV,XLU,VIG,IEI”) you held from May thru Sept only had a CAGR of 1.11% as a group. That just didn’t seem very good. GLD (3.4%), TLT (5.4%), and IEI (2.5%) did better on their own, but I wasn’t using a filter to choose the best of the five each for each year’s selection since I didn’t know your criteria.

And, in my testing, it appears Jan and Feb were not good months for most ETFs either, so I was looking for something with little correlation with stocks for those months as well. I even started looking at some country ETFs.

I also got some interesting results doing tests on stocks using SECTOR= criteria, and then choosing the best five from the “sectors of the month”. For example, one rule looks like like:

showVar(@1, @1 + 10 ^  7 * (Sector=MATERIALS AND InSet(Month,3,4,11,12)))

I didn’t limit the exchanges or stock sizes, but I did add an easily changeable liquidity filter which makes sure at least $2M worth of the stock traded every day for the past 50 days:

LoopMin("Vol(CTR) * Close(CTR)", 50) > 2000000 // Liquidity check

=======================================================================

As for the seasonality tests I did 20 years ago, see here for a postmortem I did in 2009 of the “systems” I developed in 1998. The backtesting and forward results did well on the “OC3” system, which had these rules:
[list=1]
[]If month is Mar, Apr, May, Nov, or Dec, then “In” the market
[
]If day of option month is -7 or -8 or 1 (7th and 8th before expiration, and day after), then “Out” of the market
[]If month is Sep, then “Out” of the market
[
]If any other trading day, then “In” the market[/list=1]
Not sure what I’d do with “option month” criteria today, since the most heavily traded stocks now have weekly options.

Klaus (pfrommert),
I am not surprised that your seasonal DAX strategy works.
The DAX without dividends from 12/31/1987 to 4/23/2018 shows a CAGR= 8.69% (local currency)

Only invested in the DAX from Nov-Apr (inclusive), the good periods, from 12/31/1987 to 4/23/2018 and cash from May-Oct provided CAGR= 10.30%
So for the bad periods the cumulative return shows a negative CAGR= -1.5%.

I imagine there’s also a spike in dividend increases and stock buybacks at end of year as a way to distribute standing cash at year end. Also things like mergers & acquisitions are typically done before end of the calendar year for tax and budgeting reasons. Had a friend who worked in M&A for a major financial institution, and he had to celebrate Christmas every year in January because he was always working through November & December.

Pretty good write up on the seasonality of sectors using 75 years of data (Conclusion: It definitely exists, but we don’t have a good explanation why so it’s hard to bet on it out of sample with confidence).

https://blog.thinknewfound.com/2018/06/a-season-for-sectors/

Sell in May and Go Away model now open.
https://www.portfolio123.com/app/r2g/summary?id=1531420

The anomaly, that the S&P 500 performs best from November to April and significantly worse from May to October during most years, has also held for the most recent 12 months. Performance from May to October during election years (even years) appears to be particularly poor.


I’m going to stir the pot because that’s when the magic happens…

  • Warren Buffett, The Superinvestors of Graham & Doddsville

This is very interesting stuff Georg. Can you explain what you mean by a “dual ranking system”? What does that look like?