Seasonality II: annual

Annual seasonality, also known as “Halloween Effect”.  Swinkels and Vliet (2010) investigate 5 calendar effects and find that Halloween and ‘turn of the month’ (TOM) are the strongest effects (subsuming the other 3 effects studied):

The equity premium over the sample 1963-2008 is 7.2% if there is a Halloween or TOM effect, and -2.8% in all other cases.

TOM was studied in the last post.

For size and value segments:

During Halloween and/or TOM we find a large small cap premium of 12.40%, while for other calendar effects 2.48% premium remains. For value stocks these numbers are a staggering 14.93% and 0.69% respectively.

Investigating entry and exit day of the year in Amibroker from 1984 to 2014 yields the following:

Fama-French small-value portfolio:


Annual return peaks at 18% for entries on day 300 and exits on day 250.  There is one trade per year (30 trades total).

For comparison, buy and hold return is 14%.


Sharpe Ratio is maximized at 1.9 for a later buy (day 350) and earlier sell (day 160).  Annual return at peak Sharpe is reduced to 12%, excluding return on cash during half of the time.

Fama-French small momentum portfolio:

The shapes of the surface plots are similar.  Results are compared in a table:


The momentum results exhibit a similar pattern to value but with 3% higher maximum returns.

Higher Sharpe strategies are also listed; Sharpe is 50% higher when selling 100 days earlier.  Returns are reduced by 2% to 4% and exposure by 30%.  Entry is held at day 300 as later entries limit gains, underlining the high average returns of November and December.

I also calculated the small momentum portfolio back to 1954 (60 trades) and found the same result: CAR 21%, buy day 300, sell day 260.

Finally, the portfolio is selected for each trade by 12 month momentum ranking.  Again, similar results are produced (see table), showing that fund selection could be determined in real time.


Buy = DayOfYear() > Optimize(“buy day”,350,280,350,10);

Sell = DayOfYear() > Optimize(“sell day”,160,60,270,10) && 1Buy;

PositionScore = ROC(C,252);


Next post: Factor seasonality


6 thoughts on “Seasonality II: annual

  1. Good confirmation of the HW indicator… Still, it looks like post 3/9/2009 the strategy has been a consistent laggard by a fat margin… Do you think it’s the strategy is viable nowadays?

  2. Although, on second look, the lag in the post-2009 market has been vastly due to the two “aberrant” (?!) years 2009 and 2013…

    • Actually, throughout history, odd and even years behave differently. The annual result is a compromise far from optimal!

      • How so? Are you saying that election (even) are different than non-election (odd)years? I think I can eyeball a more pronounced early mid-wear weakness in the even/election years and ultimate year-long softness vs. a late mid-year weakness that is mostly overcome later in the odd/non-election years, but is this difference significant?

      • Exactly, using different sell days for even and odd years makes quite a difference to the results. This is consistent for many years. Although, I would use seasonality as a guide rather trading it in isolation. Thanks for the discussion.

  3. Pingback: Seasonality roundup: all timeframes | RRSP Strategy

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s