Conditional Value at Risk (CVaR): Formula, Worked Examples and Limits

Jun 2, 2025 | Investing Tools and Regulations

Value at Risk (VaR) tells you the loss a portfolio should not exceed over a given period, at a given confidence level. It says nothing about the size of the losses when that level is exceeded. Conditional value at risk (CVaR) fills the gap: it is the average loss in the tail beyond VaR, which is why it is also called expected shortfall.

What conditional value at risk measures

Take a portfolio with a one-day 95% VaR of €2,300. On 95% of days, the loss should not exceed €2,300. On the other 5% it does, but VaR does not say by how much: a €2,400 loss and a €20,000 loss are both simply “beyond VaR”.

The 95% CVaR is the average loss across that worst 5% of days: if it is €3,540, the loss averaged €3,540 on the days beyond the €2,300 threshold. Two portfolios can share the same VaR and have very different CVaRs: the one with the higher CVaR loses more, on average, once the threshold is crossed.

Every CVaR figure depends on three settings, which should be quoted with it:

  • Confidence level (α): usually 95%, 97.5% or 99%. A higher level looks further into the tail.
  • Horizon: one day, ten days, one month or one year.
  • Method: historical data, a parametric distribution or a Monte Carlo simulation.

The same measure also goes by expected shortfall (ES), average value at risk (AVaR), expected tail loss (ETL) and tail value at risk (TVaR); the FAQ covers the small differences.

The CVaR formula

It is easiest to treat losses as positive numbers. If R is the portfolio return over the horizon, the loss is L = −R, and VaR at confidence level α is the α-quantile of the loss distribution:

VaRα = the smallest loss level l such that P(L ≤ l) ≥ α

For a continuous loss distribution, CVaR is the expected loss given that the loss is at least VaR:

CVaRα = E[ L | L ≥ VaRα ]

The general definition, which also works for discrete data such as historical returns, averages VaR over every confidence level in the tail:

CVaRα = 1 / (1 − α) × ∫ VaRu du, with u running from α to 1

Portfolio optimization uses a third form, from Rockafellar and Uryasev (2000): CVaRα = minimum over c of { c + E[ max(L − c, 0) ] / (1 − α) }, and the VaR is a value of c that reaches this minimum. If you work with returns instead of losses, the tail is the left one and the signs flip: CVaRα = −E[ R | R ≤ −VaRα ]. Mixing the two conventions is a frequent source of sign errors in spreadsheets.

Historical CVaR: a worked example

Historical CVaR uses past returns with no distributional assumption. Suppose a concentrated equity portfolio worth €100,000 has 200 daily returns. At 95% confidence, the tail is the worst 5% of days: 200 × 5% = 10 days. Sort the returns, read the VaR at the tail’s boundary (the 11th-worst loss) and average the 10 worst losses.

Rank (worst first)Daily returnLoss on €100,000
1−6.2%€6,200
2−4.9%€4,900
3−4.1%€4,100
4−3.6%€3,600
5−3.3%€3,300
6−3.0%€3,000
7−2.8%€2,800
8−2.6%€2,600
9−2.5%€2,500
10−2.4%€2,400
11 (VaR boundary)−2.3%€2,300

The 95% one-day VaR is 2.3%, or €2,300. The 95% CVaR is the average of the ten tail losses: (6.2 + 4.9 + 4.1 + 3.6 + 3.3 + 3.0 + 2.8 + 2.6 + 2.5 + 2.4) / 10 = 35.4 / 10 = 3.54%, or €3,540, about 1.5 times the VaR.

Conventions differ: some take the 10th-worst loss (2.4%) as the VaR, and Excel’s PERCENTILE.INC interpolates to 2.305%. The CVaR is unchanged, but with only ten tail observations, one extra crash day would move it noticeably.

Parametric CVaR under a normal distribution

The parametric (variance-covariance) method assumes a distribution, usually the normal, and derives both measures from the mean return μ and the standard deviation σ. With zα the standard normal quantile and φ the standard normal density:

VaRα = −μ + σ × zα
CVaRα = −μ + σ × φ(zα) / (1 − α)

Confidence levelVaR multiplier zαCVaR multiplier φ(zα) / (1 − α)
95%1.6452.063
97.5%1.9602.338
99%2.3262.665

Suppose the same 200 days have a mean daily return of +0.05% and a standard deviation of 1.4%:

  • 95% VaR = −0.05% + 1.4% × 1.645 = 2.25%, or about €2,253.
  • 95% CVaR = −0.05% + 1.4% × 2.063 = 2.84%, or about €2,838.
  • At 99%, the VaR is 3.21% (about €3,207) and the CVaR 3.68% (about €3,681).

The two VaRs almost agree: 2.25% under the normal model, 2.30% in the data. The CVaRs do not: 2.84% against 3.54%, a gap of about €700 on an average tail day. The sample has fat tails, and the normal model hides exactly the losses CVaR is meant to measure. A Student-t distribution, a Cornish-Fisher adjustment for skewness and kurtosis or a fat-tailed Monte Carlo simulation usually gives a more realistic figure.

For a multi-asset portfolio, σ comes from the position weights and the covariance matrix, as for the parametric VaR in our guide to value at risk; CVaR only changes the multiplier.

How to calculate CVaR in Excel and Python

Put the 200 daily returns in A2:A201 (in %), their mean in B1 (=AVERAGE(A2:A201)) and their standard deviation in B2 (=STDEV.S(A2:A201)). If several days tie at the 10th-worst return, check that exactly ten values are averaged.

  • Historical 95% VaR: =-SMALL(A2:A201,11)
  • Historical 95% CVaR: =-AVERAGEIF(A2:A201,"<="&SMALL(A2:A201,10))
  • Parametric 95% VaR: =-B1+B2*NORM.S.INV(0.95)
  • Parametric 95% CVaR: =-B1+B2*NORM.S.DIST(NORM.S.INV(0.95),FALSE)/(1-0.95)

The same calculations in Python with NumPy and SciPy:

import numpy as np
from scipy.stats import norm

r = np.loadtxt("returns.csv")        # daily returns in %, one per line
alpha = 0.95
k = round(len(r) * (1 - alpha))      # tail size: 10 of 200 days
sorted_r = np.sort(r)                # worst return first
var_hist = -sorted_r.item(k)         # 11th-worst loss
cvar_hist = -sorted_r[:k].mean()     # average of the 10 worst losses

mu, sd = r.mean(), r.std(ddof=1)
z = norm.ppf(alpha)
var_norm = -mu + sd * z
cvar_norm = -mu + sd * norm.pdf(z) / (1 - alpha)

CVaR vs VaR: the key differences

AspectVaRCVaR (expected shortfall)
Question answeredWhich loss is not exceeded with probability α?What is the average loss once that level is exceeded?
Information on the tailNone beyond the thresholdAverages the whole tail
Size at the same α and horizonLowerAlways at least equal to VaR
Coherent risk measureNo: can fail subadditivityYes
EstimationMore stableNoisier: rests on the few most extreme observations
BacktestingSimple: count the breachesHarder: no simple breach count
Bank regulationBasel internal models from 1996 (99%, 10 days)Basel FRTB internal models (97.5%)

Why subadditivity matters: a two-bond example

A risk measure is subadditive when a combined portfolio is never riskier than the sum of its parts. Artzner, Delbaen, Eber and Heath (1999) made it one of the four properties of a coherent risk measure, with monotonicity, positive homogeneity and translation invariance. CVaR has all four; VaR can fail subadditivity.

Take two €100 bonds, each with an independent 4% probability of defaulting with nothing recovered. At 95% confidence:

  • Each bond alone: the 4% default probability is below 5%, so the VaR is €0. The worst 5% of outcomes holds the 4% default plus 1% of no-loss outcomes, so the CVaR is (4% × €100) / 5% = €80.
  • Both bonds, VaR: the probability that at least one defaults is 1 − 0.96² = 7.84%, so the 95% VaR jumps to €100, against €0 + €0 held separately. VaR says diversifying created risk.
  • Both bonds, CVaR: the worst 5% holds the 0.16% chance of a double default (€200) and 4.84% of single defaults (€100): (0.16% × €200 + 4.84% × €100) / 5% = €103.20, below the €160 sum of the stand-alone CVaRs.

VaR is subadditive for elliptical distributions such as the normal, so the problem mainly affects skewed, lumpy risks such as credit and options.

Expected shortfall in the Basel framework (FRTB)

VaR entered bank regulation with the Basel Committee’s 1996 Market Risk Amendment, which let banks use internal models based on a 99%, ten-day VaR. Basel 2.5 (2009) added a stressed VaR, calibrated to a turbulent period.

The Fundamental Review of the Trading Book (FRTB), published in January 2016 and revised in January 2019, replaces VaR and stressed VaR in the internal models approach with expected shortfall at 97.5%, calibrated to a period of significant stress, with liquidity horizons of 10 to 120 days depending on the risk factor. Backtesting still relies on VaR, because expected shortfall is harder to backtest directly.

Under a normal distribution, the 97.5% CVaR multiplier (2.338) is almost identical to the 99% VaR multiplier (2.326), so the two measures give nearly the same number; with fatter tails, expected shortfall usually comes out higher than the 99% VaR. FRTB start dates differ by jurisdiction and several have been postponed, so check your supervisor’s current rules.

In insurance, the EU’s Solvency II uses a one-year 99.5% VaR, while the Swiss Solvency Test uses a one-year 99% expected shortfall.

Limits of CVaR

  • Few tail observations. With 250 daily returns, a 97.5% CVaR rests on about six data points (250 × 2.5% = 6.25). One crash entering or leaving the window shifts the result.
  • Look-back window. A calm sample understates tail risk, and historical CVaR can never show a loss larger than the worst one in the data.
  • Model risk. Parametric CVaR is only as good as the assumed distribution; the normal understates fat tails.
  • Time scaling. Multiplying a one-day figure by √10 to get a ten-day figure assumes independent, normally distributed returns with a mean near zero, which volatility clustering and fat tails break.
  • Static, liquid positions. CVaR assumes unchanged positions valued at market prices; in a liquidity crisis, exit costs add to the loss.
  • Not a worst case. CVaR is an average of tail losses, not a maximum.

How investors and portfolio managers use CVaR

Risk teams use CVaR for stress testing, risk limits, risk budgeting (each position’s contribution to tail risk) and portfolio optimization. The idea also works for a personal portfolio:

  • Compare portfolios or funds on their tail, not only on volatility: two funds with the same standard deviation can have very different CVaRs.
  • Translate the percentage into money. A 99% monthly CVaR of 12% on a €50,000 portfolio means the loss averages €6,000 in the worst 1% of months.
  • Pair it with the maximum drawdown, which measures the full peak-to-trough path rather than one period’s loss.
  • Treat risk as one input of company research, next to valuation. In our scanner methodology, risk (including leverage, liquidity, volatility and downside risk) is one of five scored components, and the scores rank research priorities, not recommendations.

Frequently asked questions about CVaR

Is CVaR the same as expected shortfall?

In practice, yes: both are the average loss beyond VaR at a given confidence level. “CVaR” is common in portfolio optimization, “expected shortfall” in Basel rules. With discrete data such as historical returns, the correct definition averages exactly the worst (1 − α) share of outcomes.

What is the difference between CVaR and VaR?

VaR is a threshold: the loss that should not be exceeded at the chosen confidence level. CVaR is the average loss beyond it, so at the same level and horizon it is always at least as large as VaR, and the gap widens as the tail gets heavier.

How do you calculate CVaR?

Choose a confidence level and a horizon, then average the losses beyond VaR. With historical data, that is the mean loss of the worst (1 − α) share of days: 10 of 200 at 95%. Under a normal distribution, the 95% CVaR is 2.063 × σ − μ.

Is CVaR the same as tail value at risk (TVaR) or CTE?

TVaR and CTE are names used mostly by actuaries for the same idea. Some texts, however, define a tail conditional expectation simply as E[ L | L ≥ VaR ]. That equals CVaR for continuous distributions but can differ when the distribution has jumps: for one bond in the example above, it gives €4 while the CVaR is €80. Only the CVaR definition is coherent in every case.

What confidence level should I use for CVaR?

95% is a common choice for individual portfolios because the tail still holds enough observations. Banks use 97.5% under the FRTB, and the Swiss insurance regime uses 99%. A higher level describes rarer events but rests on fewer data points, so it needs a longer history.

What is CVaR optimization?

Rockafellar and Uryasev showed in 2000 that minimizing CVaR over a set of return scenarios can be written as a linear program. That makes it practical to build portfolios that minimize expected tail loss for a target return, an alternative to mean-variance optimization. The result is only as good as the scenarios used.

Educational content, not investment advice.

Go further

Turn the headlines into a watchlist

Compare valuation, quality and risk in the stock valuation scanner, then follow the alerts.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Free newsletter · our market insights by email.

Join free

Join our newsletter for exclusive, high-value portfolio tips!

Unlock the secrets to a thriving portfolio with our exclusive newsletter! Be the first to receive cutting-edge investment tips, expert analysis, and insider insights that will elevate your investment strategy. Don’t miss out on the opportunity to maximize your returns – subscribe now and transform your financial future!

Thank you for subscribing! You're now on your way to receiving the best investment tips and market insights directly to your inbox.