Building lower-risk stock portfolios with cleaner correlations
Portfolio managers rely on how stocks move together, but most of a correlation matrix is noise. I tested whether filtering that noise out builds a better portfolio, on 421 S&P 500 stocks from 2010 to 2026, and wrote it up as a paper.
- 1.20
- Sharpe ratio of the long-only minimum-variance portfolio (S&P 500 fund: 0.93)
- 27% → 10%
- portfolio volatility out of sample, before and after cleaning
- 73%
- of weeks where the correlations had measurably shifted
- ≈ 3 bps
- trading cost at which the short-term reversal signal stops paying
Same stocks, cleaner covariance
How it works. Drag the sliders
The correlation structure never sits still
Short version: the cleaned matrix helps a lot when you use the whole thing, like building a minimum-variance portfolio. Boil it down to a few features for a volatility forecast and it makes a decent baseline worse.
I also checked whether the Marchenko–Pastur edge is the right number of factors to strip out for a reversal strategy. It’s fine, but not better than just picking a generous fixed number. The reversal effect itself is real (z ≈ 22) and worth about 1.3 basis points a day, which is nothing once you pay to trade it.
- Python
- NumPy
- SciPy
- statsmodels
- pandas
- scikit-learn