Market Risk Measurement - VaR and Beyond › Monte Carlo VaR
Quantitative FinanceAll chapters Market Risk Measurement - VaR and Beyond › Monte Carlo VaROne section · Sections in this chapter5 / 13 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
Monte Carlo simulation combines the flexibility of historical simulation with the ability to model forward-looking dynamics. Rather than using actual historical returns, Monte Carlo VaR generates scenarios from a specified stochastic model of asset returns.
Monte Carlo simulation overcomes the lack of extreme events in historical data. By specifying a stochastic model, we can generate arbitrarily many scenarios, including rare combinations that have never occurred historically but remain plausible. This allows us to explore the full range of potential outcomes implied by our risk model.
The Monte Carlo Approach
Building on our coverage of Monte Carlo simulation in Part III for derivative pricing, the procedure for VaR is analogous:
- Specify a stochastic model for asset returns (e.g., multivariate normal, multivariate t, or more complex dynamics)
- Estimate model parameters from historical data
- Generate thousands of random scenarios from the model
- Revalue the portfolio under each scenario
- Calculate VaR from the simulated P&L distribution
The key advantage is flexibility: you can incorporate time-varying volatility (such as GARCH models we studied in Part III), fat-tailed distributions, or scenario-specific assumptions.
The quality of Monte Carlo VaR depends critically on the specified model. If the model accurately captures the true dynamics of asset returns, the simulated distribution will converge to the true distribution as the number of scenarios increases. However, if the model is misspecified, even infinitely many simulations will converge to the wrong answer. This emphasizes that Monte Carlo simulation does not eliminate model risk; it merely shifts the burden from distributional assumptions to model specification.
# Monte Carlo VaR with multivariate normal model
np.random.seed(42)
n_simulations = 10000
# Generate simulated returns using the same covariance structure
random_normals_mc = np.random.randn(n_simulations, n_assets)
simulated_returns = random_normals_mc @ cholesky.T
# Calculate portfolio returns and P&L
simulated_portfolio_returns = simulated_returns @ weights
simulated_pnl = portfolio_value * simulated_portfolio_returns
# Sort and calculate VaR
sorted_simulated_pnl = np.sort(simulated_pnl)
idx_95_mc = int(np.floor(n_simulations * (1 - alpha_95)))
idx_99_mc = int(np.floor(n_simulations * (1 - alpha_99)))
var_95_mc = -sorted_simulated_pnl[idx_95_mc]
var_99_mc = -sorted_simulated_pnl[idx_99_mc]Monte Carlo VaR (Normal Distribution) ======================================== Number of simulations: 10,000 95% VaR: $274,905 99% VaR: $384,912
These results are similar to the parametric method because the underlying simulation used a normal distribution and the same covariance structure. The slight differences arise from sampling noise in the random number generation, which would decrease as the number of simulations increases.
Monte Carlo VaR with Fat Tails
To address the fat-tail problem, we can replace the normal distribution with a Student's t-distribution, which has heavier tails controlled by the degrees of freedom parameter . Lower values of produce fatter tails; as , the t-distribution converges to the normal.
The t-distribution provides a natural extension that preserves much of the mathematical tractability of the normal while allowing for heavier tails. Empirical studies suggest that financial returns are often well-approximated by t-distributions with degrees of freedom between 3 and 8, depending on the asset class and time period. The choice of represents a modeling decision about how fat we believe the tails to be.
Constructing multivariate t-distributed random variables requires a subtle technique. We cannot simply substitute t-distributed marginals into a correlation structure because that would not produce the correct joint distribution. Instead, we exploit a mathematical property: a multivariate t-distribution can be represented as a multivariate normal divided by an independent chi-squared random variable. This representation allows us to generate correlated t-distributed returns while preserving the desired dependency structure.
# Monte Carlo VaR with multivariate t-distribution
np.random.seed(42)
degrees_of_freedom = 5 # Produces fatter tails than normal
# Generate t-distributed random variables
# Multivariate t can be constructed from normal and chi-squared
chi2_samples = np.random.chisquare(degrees_of_freedom, n_simulations)
scaling = np.sqrt(degrees_of_freedom / chi2_samples)
# Scale the normal simulations to get t-distributed returns
t_simulated_returns = simulated_returns * scaling[:, np.newaxis]
# Calculate portfolio P&L
t_simulated_portfolio_returns = t_simulated_returns @ weights
t_simulated_pnl = portfolio_value * t_simulated_portfolio_returns
# Sort and calculate VaR
sorted_t_pnl = np.sort(t_simulated_pnl)
var_95_mc_t = -sorted_t_pnl[idx_95_mc]
var_99_mc_t = -sorted_t_pnl[idx_99_mc]Monte Carlo VaR (Student's t-Distribution, df=5) ======================================== 95% VaR: $327,621 99% VaR: $551,620 Increase vs. Normal: 95% VaR: 19.2% 99% VaR: 43.3%
The t-distribution produces substantially higher VaR estimates, particularly at the 99% level where tail behavior dominates. This illustrates why distributional assumptions matter significantly for risk measurement.


Comparing All Three Methods
