US Monte Carlo Portfolio Simulation (GARCH)

Monte Carlo portfolio simulator on US markets GARCH volatility fat-tailed shocks VaR/CVaR path charts for a blended S&P 500 / Dow Jones portfolio

Summary

This project uses a Monte Carlo engine for multi-asset US portfolios. Each asset follows a GARCH(1,1) variance process with Student-t innovations; residual correlations are estimated from pre-window history and injected via a Cholesky factor so simulated shocks co-move realistically.

The default exhibit is the README test portfolio: 50% S&P 500 (^GSPC) and 50% Dow Jones (^DJI), simulated forward from the configured start date through the latest available prices. Thousands of paths produce a 5–95% central band, a mean trajectory, and a terminal return histogram with VaR, CVaR, and probability of net loss.

The red actual line overlays realized weighted index performance on the same calendar—useful for judging how the stochastic model’s dispersion relates to what happened in markets.

Methodology

Data: Adjusted closes from Yahoo Finance from 2021 onward; pre-simulation history fits GARCH and residual correlation.

Single-asset engine: Per path, draw drift uncertainty, evolve variance with GARCH(1,1), multiply by correlated Student-t shocks, compound into prices (simple or log returns).

Portfolio: Weighted sum of simulated asset price paths; actual portfolio uses the same weights on aligned historical series.

Outputs: Path fan chart (sample paths + mean + VaR band + actual), terminal histogram, and scalar risk metrics at the horizon.

How to read the charts

Path panel: The gold band is where 90% of simulated wealth paths fall day-by-day; divergence of actual from the band signals periods the model would have deemed unlikely or that volatility was under-estimated.

Histogram: Wide spread implies high horizon uncertainty; VaR/CVaR summarize left-tail outcomes. P(loss) is the fraction of paths finishing below the starting value.

Known limitation from the upstream authors: holiday calendars are approximate when mixing indices, so simulated day counts may differ slightly from realized series.

Additional analytics (what the numbers mean)

Terminal risk metrics are path-based. Mean and median summarize central tendency across simulated outcomes; they are not “expected” paths in a probability sense. VaR 95% is the 5th percentile of terminal return; CVaR 95% is the average terminal return among outcomes at or below that VaR level.

Mean vs median = skew signal. A large gap between mean and median usually indicates a skewed / fat-tailed return distribution (e.g., volatility clustering + Student-t shocks). If the actual return lands far from both mean and median, it’s a sign the fitted volatility/tail model may not match the realized regime well.

Interpreting P(loss). P(loss) answers: “What fraction of Monte Carlo paths end with a negative total return versus the starting value?”. When P(loss) is high, the distribution is dominated by left-tail outcomes even if the mean return looks acceptable.

Actual vs simulated dispersion. If the realized return repeatedly sits outside the simulated percentile bands (not just once), it usually indicates one of: (1) volatility was structurally different than the fitted GARCH regime, (2) tail heaviness was mis-calibrated (Student-t degrees of freedom), or (3) cross-asset correlation shifted during the window.

Reading the GARCH parameter table. alpha controls how quickly new shocks feed into next-period variance; beta controls persistence (how long elevated variance “hangs around”). A larger alpha + beta generally implies slower variance reversion; omega scales the long-run variance level.

Why VaR/CVaR can disagree with intuition. GARCH + Student-t can generate fat tails and volatility clustering, so drawdowns cluster in time. That means “average” volatility can look moderate while tail metrics remain severe.

Limitations

GARCH is a parsimonious volatility model; structural breaks and regime shifts are not modeled explicitly.

Index levels (^GSPC, ^DJI) are not directly investable; results illustrate risk mechanics rather than tradable ETF tracking error.

Monte Carlo draws are pseudo-random; regenerate data to refresh paths. Research output only—not investment advice.

Empirical exhibits (below)

Charts show the default 50/50 US index blend. Refresh with npm run data:us-mc-investem (requires arch and numba; first run JIT-compiles the GARCH loop).

Results

Portfolio: S&P 500 (50%) · Dow Jones (50%) · 2025-02-05 → 2026-05-26 · 400 simulated paths

Risk summary (terminal returns)

Statistics across all Monte Carlo paths at the end of the simulation window. VaR 95% is the 5th percentile of terminal return; CVaR 95% is the average of outcomes at or below that level.

Mean return

15.89%

VaR 95% / CVaR 95%

-23.42% / -33.47%

P(net loss)

30.0%

Actual return

13.83%

Best / worst simulated

106.91% / -59.56%

Median terminal return

12.38%

Terminal positioning: actual is 37.25 pp vs VaR95 and 47.30 pp vs CVaR95.

Simulated portfolio paths vs actual

Faint lines are sample Monte Carlo paths; green is the cross-path mean; gold band is the 5th–95th percentile range; red is the realized weighted portfolio (rebased to 1.0 at the start).

In-band days

91.7%

Below 5th pct

8.3%

Above 95th pct

0.0%

Terminal return distribution

Histogram of percentage return at the end of the horizon across all simulated paths. Compare the bulk of the distribution to the actual outcome (red reference in summary above).

Mean 15.89% · VaR 95% -23.42% · CVaR 95% -33.47% · Actual 13.83%

GARCH(1,1) parameters (estimation window)

Fitted on pre-simulation history per index; used to drive stochastic volatility in the Monte Carlo engine.

Assetωαβ
S&P 5000.00e+00.08400.9020
Dow Jones0.00e+00.06500.9150

QuantifiedTrader is operated by an independent research-only group focused on building, documenting, and improving open quantitative-finance tools. Our purpose is to study markets, models, and methods—not to sell products, manage assets, or act on behalf of third parties.

No services. We do not provide investment, trading, brokerage, advisory, portfolio-management, custody, tax, legal, or any other professional or commercial services to any person or entity. Nothing on this site constitutes an offer, solicitation, recommendation, or endorsement to buy or sell securities or to adopt any investment strategy.

Research & education only. Content, data, backtests, charts, and software made available here are for informational and educational research. They may be incomplete, simulated, or based on third-party sources; past performance is not indicative of future results. You are solely responsible for your own decisions and for verifying any information before use.

No commercial benefit from shared knowledge. This site does not aim to profit from the knowledge, tools, or datasets published here. Materials are provided without charge for non-commercial research and learning, subject to applicable open-source or site terms where noted.

Disclaimer of warranties. All content and tools are supplied “as is” and “as available,” without warranties of any kind, express or implied, including accuracy, fitness for a particular purpose, or non-infringement. We disclaim liability for any loss or damage arising from use of or reliance on this site, to the fullest extent permitted by law.

Contact & disputes. For questions about this notice, the site, or any dispute relating to published materials, contact support@quantedx.com. We will endeavour to respond in good faith; this contact channel is for administrative and research correspondence only and does not create a client, advisory, or fiduciary relationship.

© 2026 QuantifiedTrader