Divide By 20: One Year later

Happy New Year, one day early. Here’s wishing 2017 is successful for you in whichever way you define success.

Aren’t calendars wonderful? A couple of days ago, up pops a reminder on my calendar to revisit a post I did a year ago. At the very beginning of 2016, I wrote a post on whether yearly performance was mean-reverting, and found some interesting things. You might want to go back and take a look first, before you continue reading here.

The basics though: at the end of each year, take the historical constituents of the S&P 500, and sort them by their performance over that year. Divide those stocks into twenty groups, called “vigintiles”, from worst to best. Then look at the forward yearly returns on each group.

The worst performers showed the best forward average gain, going back to 2000, which means bad stocks tend to revert to a mean. However there was a caveat: while they showed the best average, the worst performers did NOT show the best median forward return. This makes a difference, and in my first post I may not have been completely clear about why that was.

If you can invest in an entire vigintile of stocks, then good for you! 1/20th of 500 stocks is 25 stocks. But not everyone can invest big enough amounts in that many equities to offset trading fees. The average person might pick five or so stocks for the new year.ย This is why average vs median matters.

If you have big whompin’ outliers skewing your averages, you may not see the same results if you don’t buy all 25 stocks. Sure, a couple of stocks with 200% gains might be offsetting a bunch more with 30% losses, but what if you only buy the ones that end up with 30% losses? Sucks for you, right?

The median is a better indicator of how a smaller subset of that group will perform, because it’s taking the middle amount. The size of the outliers does not effect the median like it does an average. As we saw in that previous post, the lowest vigintile did not have the best median gain/loss, nor did it perform well consistently since 2000.

The upshot was to pick stocks that historically performed somewhere in the middle of the pack. They consistently performed better going forward than either the worst or the best historical performers.

Not too hot. Not too cold. Just right.

At the end of the post, I named the stocks that were in the 11th vigintile. There is no “middle” vigintile since there are an even number of them, so I chose the better of the two vigintiles: number 11. Today, I revisit those stocks and see how they fared.

Excluding commissions, the 25 stocks named at the beginning of 2016 showed these returns (not including commissions):

average: 17.5228 % G/L median: 17.46 % G/L

Compare this to investing in SPY at the beginning of the year, which yielded 11.49%. Not too shabby, huh? That’s completely out-of-sample data.

But wait, that’s still 25 stocks you had to invest in to get the full effect. For po’ folk out there (including me), let’s sort the returns from worst to best and divide into quintiles. If you’d somehow managed to predict and buy the worst five stocks of the 11th vigintile, you would have lost over 9%. But look, you had an 80% of doing nearly as well as the market or better, and a 60% chance of doing considrably better than the market.

How did all our vigintiles stack up this year? Below you can see two graphs. Each took the returns of all the historical constituents of the S&P 500 in 2015, and sorted them by return, and then divided them up into 20 groups. Our average return and our median return for 2016 correspond pretty closely to each other this time around. This is probably because volatility wasn’t high compared to some other years.

Investing in the “Goldilocks” band of 2015 stocks would have gotten you a nice bit of alpha over the market this year, as in many years. Investing in the best historical performers of 2015 would see you under-performing the market for 2016. You could have made the most money by investing in 2015’s worst performers…but some years, that is a very bad idea indeed (see previous post).

Interested in having a complete spreadsheet of S&P 500 stocks, ranked by 2016 performance and sorted into vigintiles? For the next week or so I’m making this available for $25. After that, the data becomes less and less relevant. Contact me here, and read about nuisance fees.

Update 01/03/17: In response to a reader’s question….I divide up into vigintiles using a python 3 script I wrote. You can access it here. For personal use only, not for reposting. And don’t make fun of my code! ๐Ÿ™‚



4 thoughts on “Divide By 20: One Year later”

    1. Thanks John. I actually use a python script to divide into ’tiles. You can load a csv file, select the column to sort by, and the column to take the mean and median of the ’tiles. You can set the number of divisions too, and it handles remainders reasonably well. I’ve put a link to the file in the post, if you happen to use python (code is for 3, but will work with 2 with mods).

  1. You should be able to “vigintile” in Amibroker quite easily by using the PercentRank of Percentile functions then use an exploration. A two step would be to create the return data in AB and then export and use Excel.

    1. Thanks for your comment! I just learned something. I’ve never even attempted to rank things in AmiBroker other than using PositionScore in a backtest. For some reason I thought it wasn’t possible. I guess learning Python was for nothing… ๐Ÿ™‚ But seriously, thanks. I’ll play around with it, because it should make the process much easier.

Leave a Reply

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