Resampled Mean-Variance
Michaud-style resampled efficient frontier averaged across many block-bootstrap samples of the historical returns. Replaces a single point-estimate MVO solve with a portfolio that is less sensitive to sampling noise in the input moments.
Overview
Michaud (1989, 1998) and Michaud and Michaud (2008) gave the canonical critique-and-fix for classical MVO: the optimiser amplifies estimation noise in the inputs, producing portfolios that look optimal in-sample but generalise poorly. Their proposed remedy is a Monte-Carlo resampling: draw many bootstrap samples of the historical return path, run MVO on each, and average the resulting weights. The averaged portfolio inherits the optimiser's use of input information while smoothing out the sensitivity to any single sample realisation.
FolioLab implements the resampled frontier with a fixed-length moving block bootstrap, not the stationary bootstrap of Politis and Romano (1994). Every block has the same length, and the block length is fixed at 20 observations. A moving block bootstrap keeps dependence inside a block, so it preserves autocorrelation and volatility clustering over horizons shorter than the block. It does not produce a stationary resample, because a fixed block length breaks stationarity at the block joins. Each bootstrap replication produces an MVO solution; the final allocation is the average of the successful bootstrap weights.
Every run uses 64 bootstrap replications and a fixed block size of 20 observations. The block size is not randomised, and neither value is a request field. The number of replications sets the trade-off between Monte-Carlo error and runtime. The random generator uses a fixed seed, so the same inputs give the same portfolio. The method needs at least 30 daily return observations.
Mathematical Formulation
Notation
- - matrix of asset returns over periods
- - number of bootstrap replications (default 64)
- - fixed block length of the moving block bootstrap (20)
- - the -th bootstrap return series
- - MVO weights computed on
Moving block bootstrap
The shipped resampler concatenates blocks of a fixed length , each drawn from a random starting position in the original series, until the resample is as long as the original. The last block is truncated to that length. Dependence inside a block is carried over intact, so autocorrelation and volatility clustering survive over horizons shorter than 20 observations.
Politis and Romano's (1994) stationary bootstrap is a different scheme. It draws each block length at random from , which makes the resample stationary. That randomisation is what this implementation does not do, so the consistency results that depend on it do not carry across. Read the block length here as a fixed setting, not as an expected value, and do not read into it: the value is 20 at every history length.
Resampled-frontier algorithm
- For , draw a block-bootstrap resample from the original return series.
- Compute , on : the arithmetic mean annualized over 252 trading days, and the Ledoit-Wolf shrunk covariance.
- Solve the max-Sharpe MVO problem on the bootstrap moments, with any submitted constraints, to obtain weights .
- If the solve fails (numerical issues, infeasibility, or no asset with an expected return above the risk-free rate) skip the replication; otherwise store .
- The final portfolio is the simple average of the successful bootstrap weights:
where is the set of successful replications and . FolioLab requires a minimum number of successes, fixed at , before accepting the average; otherwise the optimisation reports failure.
Why averaging helps
Averaging in weight-space exploits the fact that estimation errors in and are roughly mean-zero across bootstraps: the noisy weight components partly cancel out, while the signal components reinforce. The argument is the same as bagging in machine learning. Michaud and Michaud (2008) report that the averaged frontier sits inside the in-sample frontier, so it has a worse in-sample Sharpe, and that it tracked the out-of-sample frontier more closely in their simulations.
One subtlety: averaging weights changes the effective constraint behaviour. If the underlying solver enforces long-only and budget=1 on each bootstrap, then the average automatically respects long-only and budget=1. On this platform every bootstrap solve also carries the submitted per-name bounds, exclusions and group sums. Each of those rules defines a convex set, so the average satisfies them too, but it is generally not on the constraint boundary, and it is not the optimum of any single constrained problem.
Advantages & Limitations
Advantages
- Less sensitive to input noise: Smooths the optimiser's amplification of input noise.
- Block bootstrap: Preserves serial dependence in the resamples.
- Drop-in: Reuses any base MVO formulation, including constrained variants.
- Embarrassingly parallel: Bootstraps are independent and can be parallelised.
Limitations
- Computationally expensive: MVO solves per portfolio.
- Worse in-sample fit: Averaging concedes some in-sample Sharpe by design.
- Bootstrap-block sensitivity: Choice of matters when serial dependence is strong.
- No theoretical optimality: The averaged portfolio is a heuristic, not a known optimum.
References
- Michaud, R. O. (1989). "The Markowitz Optimization Enigma: Is ‘Optimized’ Optimal?" Financial Analysts Journal, 45(1), 31-42.
- Michaud, R. O. (1998). Efficient Asset Management: A Practical Guide to Stock Portfolio Optimization and Asset Allocation. Boston: Harvard Business School Press.
- Michaud, R. O., & Michaud, R. O. (2008). "Estimation Error and Portfolio Optimization: A Resampling Solution." Journal of Investment Management, 6(1), 8-28.
- Politis, D. N., & Romano, J. P. (1994). "The Stationary Bootstrap." Journal of the American Statistical Association, 89(428), 1303-1313.
- Politis, D. N., & White, H. (2004). "Automatic Block-Length Selection for the Dependent Bootstrap." Econometric Reviews, 23(1), 53-70.
- Palomar, D. P. (2025). Portfolio Optimization: Theory and Application. Cambridge University Press, Chapter 14 (Robust Portfolios), Section 14.3 (Portfolio Resampling).
Not investment advice. Past performance is not indicative of future results.