NewsletterStudioAdvertise
PREMIEUR
Subscribe
PREMIEUR
News
Deals
Funds
Allocators
Learn
Loading
© 2026 Premieur Group Holdings All rights reserved.
AboutSubscribeSupportPrivacyTerms
Learn / Quants and programming / Value at Risk and expected shortfall

Value at Risk and expected shortfall

Premieur Institute · Read time: 17 minutes

Parametric, historical and Monte Carlo VaR, scaling to longer horizons, expected shortfall, backtesting exceptions and what VaR cannot tell you.

Contents

What VaR measuresParametric VaRHistorical and Monte Carlo VaRScaling VaR to longer horizonsExpected shortfallBacktesting and the limits of VaR

Value at Risk (VaR) compresses a portfolio's risk into a single amount of money: the loss that should not be exceeded over a given horizon with a given confidence. A one day 99 percent VaR of $1 million means that on 99 days out of 100 the portfolio should lose less than $1 million. The number is easy to communicate to a board, easy to set limits against and easy to aggregate across desks, which is why banks, hedge funds and multi asset allocators all report it.

VaR is also easy to misread. It says where the tail begins, not how bad the tail is, and its value depends heavily on the method and the data window chosen. Expected shortfall, the average loss beyond the VaR level, was developed to address the first problem, and since the Basel Committee's Fundamental Review of the Trading Book it has replaced VaR as the main regulatory market risk measure for banks.

This topic covers the three standard ways to compute VaR, works parametric and historical VaR and expected shortfall on a hypothetical $10 million portfolio, shows how to scale to longer horizons, and explains how risk teams check whether a VaR model is any good by counting exceptions. Every return series is made up for illustration.

Key takeaways

  • VaR is a quantile of the loss distribution: the loss exceeded with probability 1 minus the confidence level over the horizon.
  • Parametric VaR assumes a distribution, usually normal, and needs only volatility; historical VaR uses actual past returns; Monte Carlo VaR simulates from a model.
  • VaR is scaled to longer horizons with the square root of time, which assumes independent returns and an unchanged portfolio.
  • Expected shortfall is the average loss in the tail beyond VaR. It captures tail severity and, unlike VaR, always rewards diversification.
  • A VaR model is backtested by counting exceptions, days when the loss exceeded VaR, and comparing the count with what the confidence level implies.
  • VaR says nothing about the size of losses beyond it, and is only as good as the window and assumptions behind it.

What VaR measures

A VaR figure has three parts: an amount, a horizon and a confidence level. 'One day 95 percent VaR of $197,000' means that, under the model, the portfolio's loss over one day exceeds $197,000 with 5 percent probability, or on about one trading day in twenty. Statistically, VaR is the (1 minus confidence) quantile of the profit and loss distribution, reported as a positive loss.

Choices of horizon and confidence reflect use. Trading desks typically use one day 95 or 99 percent VaR for daily limits. Bank regulation historically used a 10 day 99 percent VaR. Asset managers and allocators often look at monthly or annual horizons for strategic risk budgeting. The same portfolio can produce very different VaR numbers under different choices, so the parameters should always travel with the figure.

VaR is deliberately silent on one thing: what happens on the bad days. A VaR of $197,000 is consistent with the worst day costing $200,000 or $2 million. That silence is the single most important fact about VaR and the reason expected shortfall exists.

Value at Risk as a quantile
P(Loss > VaR_c) = 1 - c
Loss
Loss over the horizon, positive for losses
c
Confidence level, for example 0.95 or 0.99
VaR_c
Value at Risk at confidence c for the stated horizon
The three standard methods
MethodHow the loss distribution is builtStrengthWeakness
Parametric (variance covariance)Assume a distribution, usually normal, with volatility from dataFast, transparent, easy to aggregateMisses fat tails, skew and non linear positions
Historical simulationApply each past day's actual returns to today's portfolioNo distributional assumption; keeps real tails and correlationsOnly as good as the window; slow to react
Monte CarloSimulate thousands of scenarios from a fitted model and revalueHandles options and complex payoffs; flexibleModel risk; computationally heavy

Parametric VaR

Parametric VaR assumes returns follow a known distribution, almost always the normal, and reads the quantile off it. Over a short horizon the expected return is small next to volatility and is usually set to zero, so VaR becomes the portfolio value times its volatility over the horizon times the standard normal quantile for the confidence level: 1.645 at 95 percent and 2.326 at 99 percent.

For a multi asset portfolio, the volatility comes from the covariance matrix exactly as in the portfolio construction topic, which is why this approach is also called variance covariance VaR. Its great strength is that it decomposes neatly: each position's contribution to VaR can be computed from its weight and covariances, and contributions add to the total. That makes it the standard tool for risk budgeting across managers or desks.

Its weakness is the normal assumption. Real returns have fatter tails, so parametric VaR tends to understate losses at high confidence levels, exactly where it matters. It also fails for portfolios with options, whose losses are not a linear function of the underlying. Refinements exist, such as using a Student t distribution or the Cornish Fisher adjustment for skew and kurtosis, but each adds assumptions of its own.

Parametric (normal) VaR
VaR_c = V x z_c x s_h (expected return over the horizon taken as zero)
V
Portfolio value
z_c
Standard normal quantile: 1.645 for 95%, 2.326 for 99%
s_h
Volatility of returns over the horizon h
Worked example

One day parametric VaR on a $10 million portfolio

  • A hypothetical $10 million equity portfolio with daily volatility of 1.2 percent. Expected daily return taken as zero.
  1. 1. One day volatility in dollars
    10,000,000 x 0.012 = 120,000
    $120,000
  2. 2. 95% VaR
    120,000 x 1.645 = 197,400
    $197,400
  3. 3. 99% VaR
    120,000 x 2.326 = 279,120
    $279,120

On the normal model, the portfolio should lose more than $197,400 on about one day in twenty and more than $279,120 on about one day in a hundred.

Historical and Monte Carlo VaR

Historical simulation drops the distributional assumption. It takes the portfolio as it stands today, applies each day's actual market moves from a look back window (commonly 250 or 500 trading days), and ranks the resulting hypothetical profits and losses. VaR is read directly from the ranked losses. Fat tails, skew and the real co movement of assets in stressed periods are all captured, provided they occurred in the window.

Conventions for picking the quantile from a finite sample differ. A common one, used here, takes the VaR at confidence c from n observations as the k th worst loss where k = n x (1 minus c); others interpolate between neighbours. With 500 days at 99 percent that is the fifth worst loss. With the deliberately tiny 20 day sample below, 90 percent VaR is the second worst loss, and 95 percent VaR would rest on the single worst day, which shows how few observations actually determine a historical VaR.

Monte Carlo VaR simulates instead. The risk team fits a model to the risk factors (for example, a multivariate distribution of equity, rate and currency moves, possibly with fat tails and time varying volatility), draws tens of thousands of scenarios, fully revalues the portfolio in each, and reads VaR off the simulated losses. It is the standard approach for portfolios with options or structured products, where a full revaluation is needed. Its output is only as good as the model: a Monte Carlo built on normal distributions inherits every weakness of parametric VaR at much greater cost.

Worked example

Historical VaR from 20 days of returns

  • The same hypothetical $10 million portfolio. Its last 20 daily returns, in percent: 0.4, -1.1, 0.7, -0.3, 1.2, -2.4, 0.5, 0.9, -0.6, 0.2, -1.8, 0.3, 1.0, -0.9, -3.1, 0.6, -0.2, 0.8, -1.4, 0.1.
  • Convention: VaR at confidence c is the k th worst loss, k = 20 x (1 - c).
  1. 1. Rank from worst
    -3.1, -2.4, -1.8, -1.4, -1.1, -0.9, ...
    Five worst days
  2. 2. k for 90% VaR
    20 x (1 - 0.90) = 2
    Second worst day
  3. 3. 90% one day VaR
    2.4% x 10,000,000 = 240,000
    $240,000
  4. 4. k for 95% VaR
    20 x (1 - 0.95) = 1
    Worst day only
  5. 5. 95% one day VaR
    3.1% x 10,000,000 = 310,000
    $310,000
    A single observation determines it. Real historical VaR uses hundreds of days.
  6. 6. Parametric 90% VaR on the same 20 days
    sample volatility 1.19%; 1.2816 x 1.19% x 10,000,000 = 152,973
    $152,973

Historical 90 percent VaR is $240,000, well above the $152,973 a normal model fitted to the same days produces, because two of the twenty days were much worse than a normal distribution with that volatility would suggest.

Scaling VaR to longer horizons

VaR is usually computed for one day and then scaled. Under the same independence assumption that drives annualisation, volatility over h days is the daily volatility times the square root of h, and so is parametric VaR with zero mean. A 10 day 99 percent VaR is the one day figure times sqrt(10), about 3.16.

Two further assumptions hide inside the rule. The portfolio is assumed to stay unchanged over the horizon, with no trading to cut losses or add risk. And the distribution is assumed not to change, so that ten days of normal returns sum to a normal return. Neither holds in a crisis: volatility clusters, so a bad day raises the chance of another, and liquidity dries up, so positions cannot be cut as assumed. Regulators have responded by requiring liquidity horizons that differ by asset class rather than a single scaled number.

For longer horizons, such as a month or a year for an allocator, the expected return also stops being negligible. Over a year an expected return of several percent is comparable to the volatility term, and dropping it overstates VaR. At that horizon, VaR is better computed directly from monthly or annual return distributions or from scenario analysis than scaled up from daily figures.

Square root of time scaling
VaR(h days) = VaR(1 day) x sqrt(h)
h
Horizon in trading days
Valid only with independent, identically distributed returns, zero expected return and a constant portfolio over the horizon.
Worked example

From one day to ten days

  • One day 99 percent parametric VaR of $279,120 from the earlier example.
  1. 1. Scaling factor
    sqrt(10) = 3.1623
    3.1623
  2. 2. 10 day 99% VaR
    279,120 x 3.1623 = 882,661
    $882,661
  3. 3. As a share of the portfolio
    882,661 / 10,000,000 = 8.83%
    8.83%

The 10 day 99 percent VaR is about $883,000, or 8.8 percent of the portfolio, provided returns are independent and the portfolio is held unchanged for the full ten days.

Expected shortfall

Expected shortfall (ES), also called conditional VaR or CVaR, answers the question VaR leaves open: when the loss does exceed VaR, how large is it on average? It is the mean of the losses beyond the VaR level. Two portfolios with the same VaR can have very different expected shortfalls, and the one with the larger ES has the more dangerous tail, for example a portfolio short deep out of the money options.

Expected shortfall has a theoretical advantage as well. VaR is not subadditive: the VaR of a combined portfolio can exceed the sum of the VaRs of its parts, which means VaR can penalise diversification and can be gamed by splitting positions across books. Expected shortfall is always subadditive, so it is a coherent risk measure in the technical sense. That, together with its sensitivity to tail severity, is why the Basel Committee's revised market risk framework moved bank capital from 99 percent VaR to 97.5 percent expected shortfall.

Under the normal distribution, ES is a fixed multiple of volatility: the normal density at the VaR quantile divided by the tail probability. At 99 percent that multiple is about 2.67 against 2.33 for VaR, so ES is about 15 percent above VaR. For historical simulation, ES is simply the average of the losses at or beyond the VaR observation. Because it averages only a few tail observations, historical ES is noisier than historical VaR and needs a long window.

Expected shortfall
ES_c = E[Loss | Loss >= VaR_c] normal case: ES_c = V x s_h x phi(z_c) / (1 - c)
phi(z_c)
Standard normal density at the quantile z_c: 0.1031 at z = 1.645, 0.0267 at z = 2.326
1 - c
Tail probability, 0.05 or 0.01
Worked example

Parametric expected shortfall on the $10 million portfolio

  • Daily volatility 1.2 percent, so one day dollar volatility $120,000.
  1. 1. 95% ES multiple
    0.10311 / 0.05 = 2.0622
    2.0622
  2. 2. 95% ES
    120,000 x 2.0622 = 247,464
    $247,464
  3. 3. 99% ES multiple
    0.026674 / 0.01 = 2.6674
    2.6674
  4. 4. 99% ES
    120,000 x 2.6674 = 320,088
    $320,088
  5. 5. ES relative to VaR at 99%
    320,088 / 279,120 = 1.147
    14.7% above VaR

On the normal model, the average loss on the worst 1 percent of days is about $320,000, against a 99 percent VaR of $279,120.

Worked example

Historical expected shortfall from the 20 day sample

  • The 20 daily returns from the historical VaR example. The two worst days were -3.1 and -2.4 percent.
  • Convention: 90 percent ES is the average of the k = 2 worst losses.
  1. 1. Average of the two worst returns
    (3.1% + 2.4%) / 2 = 2.75%
    2.75%
  2. 2. 90% one day ES
    2.75% x 10,000,000 = 275,000
    $275,000
  3. 3. Compared with 90% historical VaR
    275,000 / 240,000 = 1.146
    14.6% above VaR

When the 90 percent VaR of $240,000 is breached in this sample, the average loss is $275,000.

Backtesting and the limits of VaR

A VaR model makes a testable prediction: at 99 percent confidence, the loss should exceed VaR on about 1 percent of days. A day when it does is called an exception. Over 250 trading days the expected number of exceptions is 2.5, and the count follows a binomial distribution if the model is right. Too many exceptions mean the model understates risk; too few can mean it overstates risk and ties up capital.

Under the Basel market risk framework, a bank's 99 percent VaR model is backtested over the last 250 days and placed in a traffic light zone. Green is 0 to 4 exceptions, yellow is 5 to 9 and red is 10 or more, with the capital multiplier rising through the yellow zone. The zones reflect the binomial odds: a correct model has about an 11 percent chance of landing in yellow by bad luck and a negligible chance of reaching red. A formal alternative is the Kupiec proportion of failures test, a likelihood ratio test that compares the observed exception rate with the expected one.

Backtesting checks the frequency of exceptions, not their size, and it cannot rescue a model from its structural limits. VaR ignores everything beyond the quantile. A historical window that happens to be calm will produce a low VaR just before a crisis. Correlations estimated in normal times break in stressed ones. And VaR assumes positions can be held or exited at market prices, which fails for illiquid assets. That is why risk teams pair VaR with expected shortfall, stress tests built on specific historical or hypothetical scenarios, and position and liquidity limits that do not depend on any model.

Kupiec proportion of failures test
LR = -2 x ln[(1 - p)^(n - x) x p^x] + 2 x ln[(1 - x/n)^(n - x) x (x/n)^x]
p
Expected exception probability, 1 minus the confidence level
n
Number of days tested
x
Number of exceptions observed
LR follows a chi squared distribution with one degree of freedom; reject the model at 5 percent significance if LR exceeds 3.84.
Exceptions over 250 days for a correct 99% VaR model (binomial, p = 0.01)
ExceptionsProbabilityCumulative probabilityBasel zone
08.11%8.11%Green
120.47%28.58%Green
225.74%54.32%Green
321.49%75.81%Green
413.41%89.22%Green
56.66%95.88%Yellow
62.75%98.63%Yellow
70.97%99.60%Yellow
80.30%99.89%Yellow
90.08%99.97%Yellow
10 or more0.03%100.00%Red
Probabilities rounded. A correct model produces five or more exceptions about 10.8 percent of the time.
Worked example

Kupiec test for 4 and for 7 exceptions in 250 days

  • A 99 percent one day VaR model, n = 250 days, p = 0.01, so 2.5 exceptions are expected.
  1. 1. LR with 4 exceptions
    x = 4, x/n = 0.016; formula above
    0.77
  2. 2. Decision at 4
    0.77 < 3.84
    Do not reject
  3. 3. LR with 7 exceptions
    x = 7, x/n = 0.028; formula above
    5.50
  4. 4. Decision at 7
    5.50 > 3.84
    Reject the model

Four exceptions is consistent with a correct 99 percent model; seven is not, and the Basel traffic light would also place the model in the yellow zone with a higher capital multiplier.

Where this goes wrong

Treating VaR as the worst case

VaR is the loss at the edge of the tail, not the worst that can happen. Reporting '99 percent VaR of $279,000' to a committee invites the reading that $279,000 is the most the portfolio can lose in a day. On roughly two or three days a year it will lose more, and the model says nothing about how much more.

Always report expected shortfall and at least one named stress scenario alongside VaR, state the method and window, and show how many exceptions the model has had over the past year.

Parametric and historical VaR and expected shortfall with numpy and scipyPython
import numpy as np
from scipy.stats import norm

value = 10_000_000
daily_vol = 0.012

# Parametric, normal, zero mean (unrounded quantiles)
var95 = value * daily_vol * norm.ppf(0.95)
var99 = value * daily_vol * norm.ppf(0.99)
es99 = value * daily_vol * norm.pdf(norm.ppf(0.99)) / 0.01

# Historical, 20 illustrative daily returns, k th worst loss convention
r = np.array([0.4, -1.1, 0.7, -0.3, 1.2, -2.4, 0.5, 0.9, -0.6, 0.2,
              -1.8, 0.3, 1.0, -0.9, -3.1, 0.6, -0.2, 0.8, -1.4, 0.1]) / 100
losses = np.sort(-r)[::-1]  # largest loss first
k = int(round(len(r) * (1 - 0.90)))
hvar90 = value * losses[k - 1]
hes90 = value * losses[:k].mean()

print(f"parametric 95% VaR  {var95:,.0f}")
print(f"parametric 99% VaR  {var99:,.0f}")
print(f"parametric 99% ES   {es99:,.0f}")
print(f"historical 90% VaR  {hvar90:,.0f}")
print(f"historical 90% ES   {hes90:,.0f}")
Output
parametric 95% VaR  197,382
parametric 99% VaR  279,162
parametric 99% ES   319,826
historical 90% VaR  240,000
historical 90% ES   275,000
The parametric figures differ slightly from the worked examples because scipy uses unrounded quantiles (1.64485 and 2.32635) rather than 1.645 and 2.326. For Monte Carlo VaR, replace the historical array with simulated returns, for example from np.random.default_rng().standard_t, and apply the same sort.

Templates for this lesson

Included with a Premieur membership.

  • ExcelPortfolio optimiser and VaRFour asset mean variance with risk contributions and component VaR, minimum variance and tangency portfolios with weight and correlation grids, and parametric and historical VaR.Download
  • NotebookVaR and expected shortfall notebookParametric, historical and Monte Carlo VaR and ES for a three asset portfolio, ten day scaling and a Kupiec backtest.Download
Go deeper with Membership →