The Autopsy mode's Monte Carlo sub-pill simulates the range of plausible period returns by bootstrap resampling the daily returns of the portfolio's holdings. This article explains the bootstrap procedure, why pre-period historical data is used (and not the in-period returns), and the practical limits of the method.
The bootstrap principle
Bootstrap (Efron 1979) is a general resampling method: given a sample of data, generate replicates by drawing with replacement from the sample. Each replicate is the same size as the original; aggregate statistics across many replicates produce confidence intervals or distributions for any function of the data.
Applied to a portfolio: given the holdings' daily returns over a fixed historical window, resample those daily return vectors with replacement to construct simulated period paths.
The pre-period window
FM103 uses the 1-year window ending before the rebalance period start as the data source for the bootstrap. The reason is to avoid look-ahead bias: a user at the start of the period had only the prior 1-year window available; using in-period data to characterise the distribution would let the simulation peek at the future.
This is a meaningful distinction. A bootstrap using in-period data would replicate the actual period's realised distribution. A bootstrap using pre-period data shows the distribution the user could have reasonably expected at the period start — the honest reference for "was this period's outcome unusual?"
The procedure
- Fetch daily prices for all portfolio tickers in the 1-year window before the period start.
- Compute daily portfolio returns using the actual portfolio weights.
- For each of N simulations (default 5,000):
- Sample with replacement from the daily portfolio return series, taking as many samples as the period contained trading days.
- Compound the resampled daily returns into a terminal cumulative return.
- The N simulated terminal returns form the empirical distribution.
Output statistics
- Actual return percentile — where the realised period return falls in the simulated distribution.
- Mean and standard deviation of the simulated terminal returns.
- Distribution percentiles (5th, 25th, 50th, 75th, 95th).
- Probability of positive return — fraction of simulations with terminal return > 0.
Interpretation
- Actual return near 50th percentile: Outcome was typical given historical behaviour.
- Actual return above 90th percentile: Unusually good outcome — the period was favourable for this portfolio.
- Actual return below 10th percentile: Unusually poor — the period was adverse.
- Wide distribution: High intrinsic uncertainty — the portfolio has volatile constituents.
- Narrow distribution: Predictable behaviour — well-diversified or low-vol holdings.
Limitations of basic bootstrap
- Independence assumption. Sampling daily returns with replacement assumes consecutive days are independent. Real markets have weak but non-zero serial correlation, especially in volatility (volatility clustering, Cont 2001).
- Stationary distribution assumption. The pre-period window assumes the return distribution doesn't change from the window into the period. Across regime breaks this fails badly.
- Fixed weights. The bootstrap uses the portfolio's starting weights for the entire simulation. Real portfolios drift as constituents move; this is ignored.
The stationary bootstrap alternative
Politis & Romano (1994) introduced the stationary bootstrap: instead of sampling individual days, sample blocks of consecutive days with random block lengths. This preserves serial correlation. FM103 uses the simpler i.i.d. bootstrap for computational simplicity; the difference is small for the use case (Sharpe ratio confidence interval) but matters for tail percentiles where serial correlation drives behaviour.
Why bootstrap, not parametric Monte Carlo
Parametric Monte Carlo would assume a return distribution (e.g., multivariate normal) and simulate from the parameters. Bootstrap avoids the distributional assumption — it samples from the empirical distribution directly, capturing fat tails and skew that a normal would miss. Glasserman (2003) covers both approaches; bootstrap is preferred when historical data is the most credible distribution proxy and parametric assumptions are suspect.
Further Reading
Foundational papers
- Efron, B. (1979). Bootstrap Methods: Another Look at the Jackknife. Annals of Statistics, 7(1), 1–26.
- Politis, D. N. & Romano, J. P. (1994). The Stationary Bootstrap. Journal of the American Statistical Association, 89(428), 1303–1313.
- Cont, R. (2001). Empirical Properties of Asset Returns: Stylized Facts and Statistical Issues. Quantitative Finance, 1(2), 223–236.
Textbook references
- Glasserman, P. (2003). Monte Carlo Methods in Financial Engineering. Springer.
Related QuanterLab articles
Try it in QuanterLab
Set Monte Carlo simulations to 5,000 for stable percentile estimates. Below 1,000 the tail percentiles are noisy; above 10,000 the marginal stability gain isn't worth the wait.