Market Risk Measurement - VaR and Beyond › Expected Shortfall: A Coherent Alternative
Quantitative FinanceAll chapters Market Risk Measurement - VaR and Beyond › Expected Shortfall: A Coherent AlternativeOne section · Sections in this chapter7 / 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
Expected Shortfall (ES), also known as Conditional VaR (CVaR) or Average VaR, addresses VaR's silence about tail severity by measuring the average loss given that the loss exceeds VaR.
Expected Shortfall accounts for the entire tail rather than just the threshold. VaR marks the boundary of the danger zone, but Expected Shortfall tells us the average severity of outcomes within that zone. This provides a more complete picture of tail risk exposure.
Expected Shortfall at confidence level is the expected loss conditional on the loss exceeding VaR:
where:
- : Expected Shortfall at confidence level
- : expected value operator
- : portfolio loss
- : Value-at-Risk threshold
Equivalently, ES is the average of all losses in the tail beyond VaR.
The definition has a clear practical interpretation. Expected Shortfall answers the question: "Given that we have entered the danger zone, how bad do things typically get?" This conditional expectation provides exactly the information that VaR withholds.
Expected Shortfall is always greater than or equal to VaR at the same confidence level, and it satisfies sub-additivity, making it a coherent risk measure. The Basel Committee recognized these advantages and incorporated ES into the Basel III framework, requiring banks to calculate 97.5% ES for market risk capital.
Calculating Expected Shortfall
For historical simulation or Monte Carlo, ES is simply the average of losses beyond the VaR threshold. This calculation is straightforward once we have generated or collected the distribution of portfolio outcomes:
# Expected Shortfall from historical simulation
losses_hist = -portfolio_pnl # Convert P&L to losses
sorted_losses_hist = np.sort(losses_hist)[::-1] # Sort from largest to smallest
# ES is average of losses beyond VaR threshold
alpha_95 = 0.95
alpha_99 = 0.99
n_tail_95 = int(np.ceil(n_obs * (1 - alpha_95)))
n_tail_99 = int(np.ceil(n_obs * (1 - alpha_99)))
es_95_hist = sorted_losses_hist[:n_tail_95].mean()
es_99_hist = sorted_losses_hist[:n_tail_99].mean()
# Expected Shortfall from Monte Carlo (normal)
losses_mc = -simulated_pnl
sorted_losses_mc = np.sort(losses_mc)[::-1]
n_tail_95_mc = int(np.ceil(n_simulations * (1 - alpha_95)))
n_tail_99_mc = int(np.ceil(n_simulations * (1 - alpha_99)))
es_95_mc = sorted_losses_mc[:n_tail_95_mc].mean()
es_99_mc = sorted_losses_mc[:n_tail_99_mc].mean()
# Expected Shortfall from Monte Carlo (t-distribution)
losses_mc_t = -t_simulated_pnl
sorted_losses_mc_t = np.sort(losses_mc_t)[::-1]
es_95_mc_t = sorted_losses_mc_t[:n_tail_95_mc].mean()
es_99_mc_t = sorted_losses_mc_t[:n_tail_99_mc].mean()Expected Shortfall Comparison ================================================== Historical Simulation: 95% ES: $290,377 (VaR: $233,226) 99% ES: $369,021 (VaR: $303,960) Monte Carlo (Normal): 95% ES: $341,885 (VaR: $274,905) 99% ES: $435,761 (VaR: $384,912) Monte Carlo (t-distribution): 95% ES: $473,235 (VaR: $327,621) 99% ES: $747,620 (VaR: $551,620)
Expected Shortfall is consistently higher than VaR because it averages all losses in the tail rather than just identifying the threshold. The difference is most pronounced in the t-distribution model, where fat tails lead to significantly larger expected losses beyond the VaR cutoff.
Parametric Expected Shortfall
For normally distributed returns, Expected Shortfall has a closed-form solution that follows from the properties of the truncated normal distribution. The derivation involves computing the expected value of a normal random variable conditional on it falling below a specified threshold.
where:
- : Expected Shortfall
- : portfolio value
- : volatility
- : standard normal probability density function
- : quantile of standard normal distribution
- : tail probability
The term (often called the inverse Mills ratio) represents the expected value of the standardized tail. It tells us how far the average tail event is from the mean in standard deviation units. To understand this intuitively, consider that the density function measures how much probability mass exists exactly at the VaR threshold, while the denominator is the total probability in the tail. Their ratio captures the shape of the tail and determines how far beyond VaR we expect to go on average.
By multiplying this factor by the portfolio volatility and value , we convert the standardized tail expectation into a currency loss. This formula connects the properties of the normal distribution to practical risk measurement.
# Parametric ES for normal distribution
def parametric_es(confidence, volatility, portfolio_val):
"""Calculate parametric ES assuming normal distribution."""
alpha = 1 - confidence
z = stats.norm.ppf(alpha)
phi_z = stats.norm.pdf(z)
return portfolio_val * volatility * phi_z / alpha
es_95_parametric = parametric_es(alpha_95, portfolio_vol, portfolio_value)
es_99_parametric = parametric_es(alpha_99, portfolio_vol, portfolio_value)Parametric Expected Shortfall (Normal) ================================================== 95% ES: $346,925 (VaR: $276,646) 99% ES: $448,259 (VaR: $391,266) ES/VaR Ratio at 95%: 1.25 ES/VaR Ratio at 99%: 1.15
For the normal distribution, the ratio of ES to VaR is relatively stable (approximately 1.15 for 99% confidence). This ratio is often used as a rule of thumb, but it dangerously underestimates tail risk if the underlying distribution has fat tails (excess kurtosis).
Visualizing VaR vs. Expected Shortfall

