I used the Ken French Data Library rather than trying to build factor signals from individual stocks. That decision was deliberate. Constructing signals from current index constituents introduces survivorship bias that makes results look better than they are. French's portfolios are built from the full CRSP universe with point-in-time constituent lists going back to the 1920s — that is the right data for this kind of study.
Four equity factors over 35 years of monthly data (1990–2026):
- Momentum (UMD) — winners minus losers, based on prior 12-1 month returns. French sorts stocks into six portfolios on size and prior return, takes the top two (Small High, Big High) minus the bottom two (Small Low, Big Low).
- Value (HML) — high book-to-market minus low. The classic Fama-French value factor.
- Quality (RMW) — robust profitability minus weak. From the Fama-French 5-factor model (2015).
- Low-Volatility — constructed from French's variance-sorted portfolios: lowest variance decile minus highest variance decile.
Then two composite portfolios: equal-weight (25% to each factor) and risk-parity (weight each factor inversely proportional to its trailing volatility).
The first thing that surprised me was that momentum did not have the highest Sharpe ratio over the full sample. Quality did. That was not what I expected going in, momentum gets a lot of attention in the literature and I assumed it would come out on top. What the data actually shows is that quality is the most consistent factor across all four decades, while momentum has the highest highs and the worst crashes.
The second thing was how cleanly the diversification story holds up in the numbers. The risk-parity composite achieved a Sharpe of 0.17, which beats every individual factor including the best individual (Quality at 0.16). That margin sounds small but consider what is driving it: a diversification ratio of 1.41x, meaning the composite has 41% less volatility than the average individual factor purely because the factors do not move together.
The correlation matrix makes this concrete. Momentum and Value have a correlation of -0.20. That negative relationship is not a coincidence, momentum tends to be long expensive recent winners, value tends to be long cheap recent losers, so they are systematically taking opposite sides of the same trade. When one does well, the other often does not.
The crisis table is the most useful exhibit in the whole project. During the momentum crash of March-August 2009, momentum lost 54%. That is the event Daniel and Moskowitz documented — after the GFC lows, markets rebounded sharply, and momentum was short exactly the beaten-down stocks that then exploded upward. The EW composite lost only 29% in the same period because value was up 20% as those same cheap stocks recovered.
| Period | Momentum | Value | Quality | Low-Vol | EW Composite |
|---|---|---|---|---|---|
| Tech Crash (2000-2002) | +28% | +113% | +138% | +197% | +123% |
| GFC Crash (2007-2009) | +37% | -19% | +28% | +90% | +30% |
| MOM Crash (Mar-Aug 2009) | -54% | +20% | -6% | -58% | -29% |
| COVID Crash (Feb-Mar 2020) | +8% | -17% | -3% | +2% | -3% |
| Rate Shock (2022) | +20% | +32% | +8% | +98% | +37% |
| Factor | Sharpe | Ann Return | Max Drawdown |
|---|---|---|---|
| Momentum | +0.14 | +3.54% | -57.82% |
| Value | -0.02 | +1.66% | -57.79% |
| Quality | +0.16 | +3.64% | -41.78% |
| Low-Vol | +0.02 | -1.12% | -79.24% |
| EW Composite | +0.09 | +2.93% | -37.69% |
| RP Composite | +0.17 | +3.73% | -35.26% |
The RP composite has the best Sharpe, the best Calmar, and the lowest maximum drawdown of anything in the study. Risk-parity works here because it underweights the high-volatility factors (momentum, low-vol) that have the worst tail risk and overweights the more stable ones (quality).
A few things I would do differently with more time and data:
Survivorship bias in the low-vol construction. I used French's variance-sorted portfolios as a proxy for low-volatility. This is not the same as a proper BAB (Betting Against Beta) factor as constructed by Frazzini and Pedersen (2014). The results are directionally right but the factor is less clean.
No transaction cost modelling. Momentum has the highest turnover of any factor here — monthly rebalancing with stocks moving between winner and loser portfolios. In practice the net-of-cost momentum premium is materially lower than the gross figure shown.
Risk-parity uses in-sample volatility. I estimated trailing vol using the full available history at each point. A proper walk-forward implementation would estimate vol on a rolling window of past data only. The bias is small but worth noting.
US equities only. Asness, Moskowitz and Pedersen (2013) show these factor premia exist across 40+ markets. Extending this to the French international portfolios would be a natural follow-on.
git clone https://github.com/Hishok/equity-factor-premia.git
cd equity-factor-premia
pip install -r requirements.txt
jupyter lab equity_factor_premia.ipynbNo paid data required. Everything downloads automatically from the Ken French Data Library via pandas-datareader. Full execution takes under 60 seconds.
- Fama, E. & French, K. (1993). Common risk factors in the returns on stocks and bonds. Journal of Financial Economics.
- Fama, E. & French, K. (2015). A five-factor asset pricing model. Journal of Financial Economics.
- Jegadeesh, N. & Titman, S. (1993). Returns to buying winners and selling losers. Journal of Finance.
- Asness, C., Moskowitz, T. & Pedersen, L. (2013). Value and momentum everywhere. Journal of Finance.
- Daniel, K. & Moskowitz, T. (2016). Momentum crashes. Journal of Financial Economics.
- Baker, M., Bradley, B. & Wurgler, J. (2011). Benchmarks as limits to arbitrage. Financial Analysts Journal.
- Ilmanen, A. (2011). Expected Returns. Wiley.
Senior Data Analytics Associate at the FCA. Working toward a transition into quantitative finance.
GitHub: @Hishok
