Naive in-sample frontiers lie.This one is tested honestly.
Seven allocation models, evaluated out-of-sample with transaction costs, benchmarks, and significance tests. The math, shown.
Diversification buys a smoother ride, not always more return.
Over the full walk-forward window, Max Sharpe beats SPY on risk-adjusted return and cuts the worst drawdown by a third. SPY still wins on raw CAGR. Both are true; we report both.
| Strategy | CAGR | Ann. Vol | Sharpe | Max DD |
|---|---|---|---|---|
Max Sharpechosen | 8.2% | 9.9% | 0.64 | -22.4% |
SPY (buy & hold) | 13.6% | 17.1% | 0.72 | -33.7% |
60/40 | 9.2% | 10.4% | 0.70 | -21.6% |
Equal Weight (1/N) | 6.5% | 9.8% | 0.48 | -21.2% |
Max Sharpe: Sharpe 0.64 vs SPY 0.72, max drawdown -22.4% vs -33.7% - a smoother ride at the cost of 5.4% of annual return.
Mean-variance optimization trades expected return against variance through a single risk-aversion knob γ:
The frontier is the set of argmin portfolios over every risk level. Solve it on the same data you score on, and you have fit the noise.
The inputs are estimated, not given.
Markowitz (1952) gave us the frontier, but it assumes the true μ and Σ are known. In practice both are sampled from a short, noisy history. Small estimation errors in μ get amplified into extreme, concentrated weights.
In-sample frontiers are optimistic by construction.
The optimizer rewards whatever happened to look good in the window it was fit on. Report that curve as a result and you are quoting the model marking its own homework. Honest evaluation only counts returns the model never saw.
Shrinkage and structure tame the covariance.
Ledoit-Wolf (2004) shrinkage pulls the sample covariance toward a structured target, trading a little bias for far less variance. It is one of several priors here - alongside risk parity, hierarchical clustering, and Black-Litterman views - that make weights survive contact with new data.
Classical and modern allocation, side by side.
Each is implemented from scratch and run through the same honest, cost-aware backtest. Open any one for its full derivation.
Build a portfolio, backtested out-of-sample.
Pick a universe, choose a model, and step through the walk-forward run with costs, benchmarks, and significance tests in view.
Open the explorer