Fun with Fama-French

The Fama-French data-set is a great free resource for budding financial data-scientists. They have already gone through the trouble of cleaning, slicing and dicing the CRSP library so that you can get some high-level analysis done. At the time of writing this blog, pluto automatically updates the following US centric data-sets:

If you need a new data-set added, just raise an issue on github.

Here are some interesting things I found while exploring them.

Equity Risk Premium fluctuates

An equity investor takes on a lot more risk compared to someone who buys only US government bonds. So, in theory, the equity investor should earn returns in excess of those given by bonds. But how much more should that be?

Turns out, over a 20-year period, it adds up to quite a bit.

Market returns in excess of risk-free rate

But shorter time horizons see their fair share of negative premia. i.e., bonds out-perform equities.

Market returns in excess of risk-free rate
Notebook on github: Equity-Risk-Premium.R

Value vs. Equal weighting

Suppose you want to build a portfolio out of a set of stocks. How much of each, as a percentage of the total portfolio, should you buy? The two most popular “weighting” schemes are value (market-cap) weight and equal weight. In the former, large market-cap stocks are held at a proportionally higher quantity in the portfolio. Whereas in the latter, each stock is held in equal proportion.

The decision between value weighting and equal weighting a portfolio cannot be taken in haste. It ends up making a big difference over time. We created a notebook that, among other things, sorts industries based on standard-deviations of 5-year returns. Portfolio weighting had a significant impact on overall returns:


Under equal weight, the best performing industry returns was twice as much as that of value weighted.

It is not all about Tech stocks

Depending on how you weight the stocks in your portfolio, software is not the only game in town. A lot of other industries (Lab Equipment, anyone?) have done better.


Once again, we see how value (market-cap) weighting vs. equal weighting impacts returns.

 Notebook on github: Industry-Returns.R

Low-momentum ≠ Negative-returns

Sometimes, everything rallies. Just because a set of stocks performed poorly in the past doesn’t necessarily mean that they will have negative returns going-forward.

The Fama-French data-set has returns for portfolios constructed out of each decile of prior returns. Labeled LO_PRIOR, PRIOR_2..9 and HI_PRIOR, they represent portfolios who’s prior returns were the lowest through to the highest. You would think that LO_PRIOR returns would be a disaster compared to HI_PRIOR’s and the in-betweeners would lie on a spectrum. Not so!


Highlighting the importance of the portfolio weighing scheme, lo and behold the equal-weight returns:


Making a list of stocks, in this case by sorting stocks based on prior returns, is only a small part of constructing a portfolio.

Notebook on github: Momentum-Decile-Performance.R

Long-Short comes up short

The last 10-years in the US markets have been a one-way, long-only bet. So if you constructed a long-short momentum portfolio, the chances are that you got hosed.


Long-short’s last hurrah was in 2009. It has a lot of catching up to do with long-only momentum.

 Notebook on github: Long-Short-Momentum.R

Out-lasting statistics

Just because momentum is statistically shown to out-perform the market over long periods of time, the actual period during which it out-performs may not overlap with your time horizon. For example, 10-year factor premia ending 2010 through 2019 was actually negative. Most investors would have abandoned the strategy long before it could reclaim lost ground.

Notebook on github: Momentum.R


I hope this post left you with more questions than answers. pluto was built so that you can begin to explore the answers to those questions without getting your hands (too) dirty. The notebooks should be a good jumping off point. Log in, copy-paste and fire away! If you need help, slack me!