Context
The current multi-strategy comparison report handles correlated drawdowns partially:
- Computes a correlation matrix across strategy returns
- Overlays equity curves and drawdowns on a shared timeline
- Surfaces beat-rate vs. benchmarks (Buy & Hold, DCA, risk-free, custom)
This lets users see when strategies draw down together, but Monte Carlo / permutation testing today still runs at the individual strategy level. The result is per-strategy tail-risk distributions, not a portfolio-level tail-risk distribution.
Goal
Add a joint Monte Carlo mode that resamples the correlated return matrix of multiple strategies together, producing:
- Distribution of portfolio equity curves
- Distribution of portfolio max drawdown / CVaR / Calmar
- Probability of joint drawdown exceeding a user-defined threshold
- Confidence bands on portfolio metrics
Approaches to evaluate
- Stationary block bootstrap on the joint return matrix (preserves serial correlation + cross-correlation)
- Cholesky-decomposed shuffles of standardized returns (preserves linear cross-correlation, breaks serial)
- Copula-based resampling (e.g. Gaussian / t-copula) — preserves dependency structure with arbitrary marginals
- Hybrid: block bootstrap for serial structure + copula for cross-sectional dependence
Acceptance criteria
- New API on the multi-strategy comparison level (e.g.
compare_strategies(..., monte_carlo=PortfolioMC(...)))
- At least one resampling method implemented end-to-end (stationary block bootstrap is the pragmatic starting point)
- Results integrated into the HTML report: portfolio equity fan chart, drawdown distribution, joint tail-risk metrics
- Documented assumptions and limitations of each method
Out of scope (separate issue)
- Regime-conditional resampling (volatility clustering) — tracked separately
Notes
Community feedback on the 1k-stars LinkedIn post suggested this is one of the most-requested capabilities for serious EA / multi-strategy portfolio work. Input on preferred resampling method is welcome.
Context
The current multi-strategy comparison report handles correlated drawdowns partially:
This lets users see when strategies draw down together, but Monte Carlo / permutation testing today still runs at the individual strategy level. The result is per-strategy tail-risk distributions, not a portfolio-level tail-risk distribution.
Goal
Add a joint Monte Carlo mode that resamples the correlated return matrix of multiple strategies together, producing:
Approaches to evaluate
Acceptance criteria
compare_strategies(..., monte_carlo=PortfolioMC(...)))Out of scope (separate issue)
Notes
Community feedback on the 1k-stars LinkedIn post suggested this is one of the most-requested capabilities for serious EA / multi-strategy portfolio work. Input on preferred resampling method is welcome.