VaR and CVaR Calculation Methods and Their Limitations
VaR and CVaR calculation methods — historical, parametric, and Monte Carlo — with Python implementation and the specific limitations each method hides.
交互工具在翻译视图中可能无法使用。
VaR and CVaR Calculation Methods and Their Limitations
Value at Risk (VaR) answers "what is the most I can lose with 95% confidence over N days?" Conditional VaR (CVaR) answers "given that I lose more than the VaR, how much do I lose on average?" Both are useful and both lie systematically in the same direction: they underestimate tail risk.
Three calculation methods
Historical VaR. Sort past returns, take the 5th percentile:
import numpy as np
var_95 = np.percentile(returns, 5) # negative number
cvar_95 = returns[returns <= var_95].mean()
Simple, model-free, but assumes the future resembles the past window. If your window excludes 2008 or 2020, you have no tail.
Parametric (variance-covariance) VaR. Assumes normal returns:
VaR_95 = -(mu - 1.645 * sigma) * portfolio_value
Fast and clean, but markets are not normal. Real return distributions have fat tails: a 4-sigma move happens roughly 10× more often than the normal distribution predicts. Parametric VaR underestimates tail losses by 30–60% in equity markets.
Monte Carlo VaR. Simulate returns from a fitted distribution (student-t, GARCH), compute percentile of simulated outcomes. More flexible, but only as good as the assumed distribution. A student-t with 4 degrees of freedom captures fat tails better than normal.
The CVaR advantage
VaR tells you the threshold but not what happens beyond it. Two portfolios can have the same 95% VaR but vastly different CVaR — one loses 1.1× VaR in the tail, the other loses 3×. CVaR is the better risk number because it is the average of the bad outcomes, not the boundary of them. Regulators prefer CVaR for this reason.
Limitations to respect
- Non-stationarity. The volatility you estimated last month is not today's volatility. Volatility-scaled VaR (using recent realized vol) tracks better but lags regime breaks.
- Correlation breakdown. VaR assumes the covariance structure holds. In crises, correlations converge to 1 and diversified portfolios behave like single positions. Stress VaR must use stressed correlations.
- Liquidity. VaR marks to mid-price; real exits pay the bid-ask and slippage. Add a liquidity adjustment of 1–3 days of volume-weighted spread for illiquid positions.
- The threshold illusion. A 95% VaR of $10k does not mean "I lose at most $10k." It means "I lose more than $10k one day in twenty." The 1-in-20 day is a certainty over a trading year.
Practical use
Report both VaR and CVaR at 95% and 99%, daily and 10-day horizons. Backtest: in a year of 252 trading days, the daily 95% VaR should be breached roughly 12–13 times. If it is breached 25+ times, the model is broken. If it is breached 0 times, the model is too conservative — capital is being wasted.
VaR and CVaR are communication tools, not safety guarantees. Use them to size risk against a budget, then use stress testing for the scenarios they cannot see.
Live Chart
Open full chart →Related market data, powered by TradingView.