Market Risk Measurement - VaR and Beyond › Expected Shortfall: A Coherent Alternative

Michael BrenndoerferDecember 20, 20256 min read
Quantitative FinanceAll chapters
Part 10 of 15Risk Management and Financial Risk Controls
Chapter 53Market Risk Measurement - VaR and Beyond › Expected Shortfall: A Coherent Alternative
Reading section 7 of 13 · Expected Shortfall: A Coherent Alternative · 6 minSection 7 of 13 · 6 min

Book contents

Section 7 of 13 · 6 min read

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

Expected Shortfall at confidence level α\alpha is the expected loss conditional on the loss exceeding VaR:

ESα=E[L ∣ L>VaRα]\text{ES}_{\alpha} = E[L\ |\ L > \text{VaR}_{\alpha}]

where:

  • ESα\text{ES}_{\alpha}: Expected Shortfall at confidence level α\alpha
  • E[⋅]E[\cdot]: expected value operator
  • LL: portfolio loss
  • VaRα\text{VaR}_{\alpha}: 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:

In[18]:
Code
# 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()
Out[19]:
Console
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.

ESα=V⋅σ⋅ϕ(z1−α)1−α\text{ES}_{\alpha} = V \cdot \sigma \cdot \frac{\phi(z_{1-\alpha})}{1-\alpha}

where:

  • ESα\text{ES}_{\alpha}: Expected Shortfall
  • VV: portfolio value
  • σ\sigma: volatility
  • ϕ\phi: standard normal probability density function
  • z1−αz_{1-\alpha}: (1−α)(1-\alpha) quantile of standard normal distribution
  • 1−α1-\alpha: tail probability

The term ϕ(z1−α)1−α\frac{\phi(z_{1-\alpha})}{1-\alpha} (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 ϕ(z1−α)\phi(z_{1-\alpha}) measures how much probability mass exists exactly at the VaR threshold, while the denominator (1−α)(1-\alpha) 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 σ\sigma and value VV, we convert the standardized tail expectation into a currency loss. This formula connects the properties of the normal distribution to practical risk measurement.

In[20]:
Code
# 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)
Out[21]:
Console
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

Out[22]:
Visualization
Histogram of simulated losses centered near zero with a dashed rose 99 percent VaR line at about 385 thousand dollars, a solid coral 99 percent Expected Shortfall line at about 436 thousand dollars, and the worst 1 percent tail shaded to the right.
Comparison of VaR and Expected Shortfall thresholds on a P&L distribution. While 99% VaR identifies the point where the worst 1% of losses begin, 99% ES averages all outcomes beyond that point to capture the full severity of the tail.
Out[23]:
Visualization
Four-bar chart of Expected Shortfall divided by VaR: 1.24 and 1.13 for the normal model at 95 and 99 percent, and 1.44 and 1.36 for the t-distribution, with a horizontal reference at 1.0 where ES equals VaR.
Ratio of Expected Shortfall to Value-at-Risk across different distributions. The t-distribution (df=5) exhibits a materially higher ratio than the normal distribution, which shows how fat tails increase the expected severity of extreme losses relative to the VaR threshold.