blog · ~6 min read

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.

T By tradernewbie · Curated for beginners
#advanced#risk-management
Cet article est en anglais. Voulez-vous le voir dans votre langue ? Google Translate →

Les outils interactifs peuvent ne pas fonctionner dans la vue traduite.

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Related market data, powered by TradingView.

Educational content · Not financial advice · Trade at your own risk