2013: Lessons Learned and Revisiting Some Studies

The year is over in a few hours and I thought it would be nice to do a quick review of the year, revisit some studies and the most popular posts of the year, as well as share some thoughts on my performance in 2013 and my goals for 2014.

Revisiting Old Studies

IBS

IBS did pretty badly in 2012, and didn’t manage to reach the amazing performance of 2007-2010 this year either. However, it still worked reasonably well: IBS < 0.5 led to far higher returns than IBS > 0.5, and the highest quarter had negative returns. It still works amazingly well as a filter. Most importantly the magnitude of the effect has diminished. This is partly due to the low volatility we’ve seen this year. After all IBS does best when movements are large, and SPY’s 10-day realized volatility never even broke 20% this year. Here are the stats:

ibs

UDIDSRI

The original post can be found here. Performance in 2013 hasn’t been as good as in the past, but was still reasonably OK. I think the results are, again, at least partially due to the low volatility environment in equities this year.

UDIDSRI performance, close-to-close returns after an zero reading.

UDIDSRI performance, close-to-close returns after a zero reading.

DOTM seasonality

I’ve done 3 posts on day of the month seasonality (US, EU, Asia), and on average the DOTM effect did its job this year. There are some cases where the top quarter does not have the top returns, but a single year is a relatively small sample so I doubt this has any long-term implications. Here are the stats for 9 major indices:

dotm

Day of the month seasonality in 2013

VIX:VXV Ratio

My studies on the implied volatility indices ratio turned out to work pretty badly. Returns when the VIX:VXV ratio was 5% above the 10-day SMA were -0.03%. There were no 200-day highs in the ratio in 2013!

 

Performance

Overall I would say it was a mixed bag for me this year. Returns were reasonably good, but a bit below my long-term expectations. It was a very good year for equities, and my results can’t compete with SPY’s 5.12 MAR ratio, which makes me feel pretty bad. Of course I understand that years like this one don’t represent the long-term, but it’s annoying to get beaten by b&h nonetheless.

Some strategies did really well:

stratgoodOthers did really poorly:
stratbad

The Good

Risk was kept under control and entirely within my target range, both in terms of volatility and maximum drawdown. Even when I was at the year’s maximum drawdown I felt comfortable…there is still “psychological room” for more leverage. Daily returns were positively skewed. My biggest success was diversifying across strategies and asset classes. A year ago I was trading few instruments (almost exclusively US equity ETFs) with a limited number of strategies. Combine that with a pretty heavy equity tilt in the GTAA allocation, and my portfolio returns were moving almost in lockstep with the indices (there were very few shorting opportunities in this year’s environment, so the choice was almost always between being long or in cash). Widening my asset universe combined with research into new strategies made a gigantic difference:

beta

The Bad

I made a series of mistakes that significantly hurt my performance figures this year. Small mistakes pile on top of each other and in the end have a pretty large effect. All in all I lost several hundred bp on these screw-ups. Hopefully you can learn from my errors:

  • Back in March I forgot the US daylight savings time kicks in earlier than it does here in Europe. I had positions to exit at the open and I got there 45 minutes late. Naturally the market had moved against me.
  • A bug in my software led to incorrectly handling dividends, which led to signals being calculated using incorrect prices, which led to a long position when I should have taken a short. Taught me the importance of testing with extreme caution.
  • Problems with reporting trade executions at an exchange led to an error where I sent the same order twice and it took me a few minutes to close out the position I had inadvertently created.
  • I took delivery on some FX futures when I didn’t want to, cost me commissions and spread to unwind the position.
  • Order entry, sent a buy order when I was trying to sell. Caught it immediately so the cost was only commissions + spread.
  • And of course the biggest one: not following my systems to the letter. A combination of fear, cowardice, over-confidence in my discretion, and under-confidence in my modeling skills led to some instances where I didn’t take trades that I should have. This is the most shameful mistake of all because of its banality. I don’t plan on repeating it in 2014.

Goals for 2014

  • Beat my 2013 risk-adjusted returns.
  • Don’t repeat any mistakes.
  • Make new mistakes! But minimize their impact. Every error is a valuable learning experience.
  • Continue on the same path in terms of research.
  • Minimize model implementation risk through better unit testing.

 

Most Popular

Finally, the most popular posts of the year:

  1. The original IBS post. Read the paper instead.
  2. Doing the Jaffray Woodriff Thing. I still need to follow up on that…
  3. Mining for Three Day Candlestick Patterns, which also spawned a short series of posts.

 

I want to wish you all a happy and profitable 2014!

Holiday Effects in the Chinese Stock Market

Various holiday effects are well documented for developed countries’ stock markets, typically showing abnormal returns around thanksgiving, Christmas, New Year, and Easter. Do similar effects exist in the Chinese stock market? In this post I’ll take a look at returns to the Shanghai Composite Index (SSECI) during the days surrounding the following holidays: New Year, Chinese New Year, Ching Ming Festival, Labor Day, Tuen Ng Festival, Mid-Autumn Festival. The index only has 22 years of history, so statistical significance is difficult to establish. Despite this, I believe the results are quite interesting1.

The charts require a bit of explanation: the error bars are 1.65 standard errors wide on each side. As such, if an error bar does not cross the x-axis, the returns on that day are statistically significantly different from zero at the 5% level (by way of a one-tailed t-test). The most interesting holidays are the New Year, Chinese New Year, and Ching Ming Festival, all of which have several days of quite high returns around them.

New Year

new year

Chinese New Year

chinese new year

Ching Ming Festival

The Ching Ming Festival occurs 15 days after the vernal equinox, which is either April 4th or April 5th.

ching ming festival

Labor Day

labor day

Tuen Ng Festival

The Tuen Ng Festival (A.K.A. Dragon Boat Festival) occurs on the 5th day of the 5th lunar month in the Chinese calendar.

tuen ng festival

Mid-Autumn Festival

The Mid-Autumn Festival falls on the 15th day of the 8th lunar month.

mid autumn festival

Bonus: Day of the Month Effects

Since we’re looking at seasonality effects, why not the day of the month effect as well? Using the walk-forward methodology as in my previous day of the month effect posts (U.S., Europe, Asia), here are the results for the Shanghai Composite Index:

dotm china EC

dotm china stats

Finally, the average returns for each day of the month over the last 5000 days:

dotm china days

The standard turn of the month effect seems to be present, but only for the first days of the month instead of the last and first days.

And with that, I’d like to you wish you all happy holidays! In eggnog veritas.

Footnotes
  1. I want to take this opportunity to thank the C# language designers; without the ChineseLunisolarCalendar class this study would’ve been a major chore.[]

Day of the Month Seasonality Part 3: Nikkei 225, Hang Seng, STI

This is the third and final post investigating day of the month seasonality effects in global equity market indices. In part 1 we looked at U.S. indices; in part 2 we saw that the effects were even more powerful in three major European markets. In this post I will analyze three Asian indices: the Nikkei 225 (Japan), the Hang Seng Index (Hong Kong), and the Straits Times Index (Singapore).

 

The methodology:

As with the European indices, the Asian ones have relatively short histories. In order to get a long enough sample of results, I shortened the initial look-back period to 2500 trading days. The exact steps to re-create the results below are the following:

  1. Standardize every month to 21 trading days; round to the nearest integer when the number of days in a month is different.
  2. Start by using the last 2500 days; keep increasing the sample size until you reach 5000 days. After that use a moving window of 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.

A technical note: I am using QuantLib‘s holiday calendar functions to calculate the number of trading days in a particular month. There are problems with QuantLib, especially when looking further back in time, that result in an inaccurate trading day count for certain months. The effect is rather small as only a tiny number of months are affected, but the results should be even better if these problems were to be corrected.

 

The results:

Nikkei 225:

The equity curves:

Nikkei 225 day of the month seasonality results

And the statistics:

nikkei stats

Hang Seng Index:

The equity curves:

Hang Seng day of the month seasonality results

And the statistics:

hang seng stats

 

Straits Times Index:

The equity curves:

STI day of the month seasonality results

And the statistics:

STI stats

 

Calendars:

Here’s the updated list of average (standardized) day of the month returns over the last 5000 days for the indices we have looked at. The last and first few days of the month seem to be the best worldwide. The days around day #5 and day #15 seem to be the worst, again across the board. Beyond that there are few similarities among these markets.

calendar, average returns, all indices

 

Conclusions:

The main conclusion to be drawn from these results is simple:

The majority of permanent upwards stock market movements happen on a small number of days, and it is easy to predict which days these will be.

How can we use this knowledge? Setting up automatic investment plans to buy 4-5 days before the end of the month is one obvious implication. Going in too early or too late could have a significant negative impact on your returns over the long term.

If you swing trade any of these indices, it should take less to convince you to go long on these special days, and vice versa on the short side. Of course, there are long stretches of time during which the day of the month effect performs badly; it is not a trading rule in itself and as such should be treated with caution.

Shorting

Unfortunately there does not seem to be any consistent edge in day of the month seasonality for the short side. Given the general upward trend of equity markets over time, this is not all that surprising. It is possible that using a bear market filter we could uncover something useful, and I might revisit the topic in the future.

Day of the Month Seasonality Part 2: DAX, CAC 40, FTSE 100

In part 1 of the series I showed the impressive predictive power of day of the month seasonality effects in US equity markets. In this post I will apply the same type of analysis to three European markets: Germany (using the DAX index), France (using the CAC 40 index), and the U.K. (using the FTSE 100 index). Once again I must note that day of the month effects by themselves do not constitute a trading strategy, but I believe that the impressive returns predictability can be used to enhance other trading approaches, both systematic and discretionary.

 

The methodology:

The European indices have a far shorter history than the US ones, so we need to limit the look-back period in order to get a useful sample size. As such, I have slightly modified the approach to use less data in the early parts of the sample.

  1. Standardize every month to 21 trading days; round to the nearest integer when the number of days in a month is different.
  2. Start by using the last 2500 days; keep increasing the sample size until you reach 5000 days. After that use a moving window of 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.

The results:

DAX:

The equity curves:

DAX day of the month seasonality results

And the statistics:

DAX stats

 

CAC 40:

The equity curve:

CAC 40 day of the month seasonality results

And the statistics:

cac 40 stats

 

FTSE 100:

The equity curves:

FTSE 100 day of the month seasonality results

And the statistics:

ftse100 stats

 

Calendars:

daily returns calendar

One of the results that stands out is that the 15th day of the month seems to be absolutely terrible in every market. This is doubly peculiar because while the best days seem to be different for every market, the worst ones are consistent across the board. I would love to hear some theories about this.

In any case, day of the month seasonality effects are incredibly powerful in European markets as well. They’ve managed to provide positive returns in essentially all market environments. The fact that the best days occur on different parts of the month depending on which market you look at is amazing: it means there are more opportunities out there to exploit if you’ve got capital lying around.

In the next (and for now, final) part of the series, I will look how these seasonality effects hold up in Asian markets.

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.

Calendars:

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…

Applicability:

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.