Skip to content
Finance Lessons

Value at Risk

Historical Simulation VaR

Estimate VaR by replaying actual past returns, sorting the realised P&L, and reading off the percentile — no bell curve assumed. Strengths, traps, and worked numbers.

9 min Updated Jun 5, 2026

You know what VaR says: a horizon, a confidence level, and a dollar figure — “99% confident we won’t lose more than $X tomorrow.” That’s the sentence. This lesson is about the most honest way to actually compute it, and it requires almost no math at all. No bell curve, no algebra, no Greek letters. Just a stack of the portfolio’s real past days, sorted worst to best, and a finger pointed at the right one.

It’s called historical simulation, and its whole philosophy fits on a fortune-cookie slip: the best guess for how bad tomorrow can be is to look at how bad the recent past actually was. Where the parametric method (next lesson) assumes the returns follow a tidy distribution and does algebra on it, historical simulation refuses to assume anything. It lets the data speak — fat tails, skew, ugly clusters and all.

Quick instinct check before we open the toolbox.

Before you read — take a guess

Historical-simulation VaR computes the loss threshold by…

Replay the past

Analogy. Imagine you want to know how cold tomorrow morning might get. One approach: assume temperatures follow a neat bell curve, estimate its mean and spread, and calculate. The other approach: pull out your weather diary for the last 250 days, line up every morning’s low temperature from coldest to warmest, and say “the coldest 5% of mornings were below −3°C, so I’ll plan for −3°C.” Historical simulation is the weather-diary method, applied to money.

Definition. Historical-simulation VaR takes the portfolio’s realised daily profit-and-loss over the last NN days, treats that empirical histogram as if it were the distribution of tomorrow’s return, and reads the VaR straight off the appropriate percentile of that histogram. There is no fitted curve. The collection of dots is the model.

There’s one subtlety that separates pros from amateurs, so plant it now: you don’t take the P&L your portfolio actually earned on each past day. You take today’s portfolio and ask what it would have gained or lost if each past day’s market moves happened again. You apply the historical returns — the percentage moves in every risk factor — to your current positions. This is the difference between “what did I make last March?” and “what would my book make if last March’s moves repeated tomorrow?” The second is what you want, because the second is the risk you’re carrying now.

So the empirical histogram you sort is a histogram of hypothetical P&L for today’s book under each past day’s market move. Same shape of idea, far sharper in practice.

The recipe, step by step

Three steps. That’s genuinely the whole algorithm.

  1. Gather NN historical scenarios. For each of the last NN trading days (a common choice is N=250N = 250, roughly one trading year, or N=500N = 500 for two), record the percentage move of every risk factor, apply those moves to today’s positions, and total up the hypothetical P&L. You now have NN numbers.
  2. Sort them ascending. Worst loss on the left, best gain on the right.
  3. Read off the percentile. VaR at confidence cc is the loss sitting at the (1c)N\lfloor(1-c)\cdot N\rfloor-th worst observation. With c=0.99c = 0.99 and N=250N = 250, that’s 0.01×250=2\lfloor 0.01 \times 250\rfloor = 2 — you walk in to the 2nd-worst-ish day and read the loss there.

The island below is that recipe made tactile. Twenty realised daily P&L outcomes, sorted worst (red, on the left) to best (blue, on the right). Slide the confidence level and watch the dashed line march into the loss tail: higher confidence cuts deeper, further into the disasters.

Historical VaR: sort the past, read off the line
Worst lossesGains
95%worst lossesgains
Confidence level
VaR (worst loss not exceeded)−3.1%

Twenty realised daily P&L, sorted worst to best. The dashed line sits (1 − confidence) of the way in from the worst end — raise confidence and it cuts deeper into the tail. The loss at the line is your historical VaR.

Picking the percentile, by hand

The only thing that ever trips people up is which sorted observation to grab. Walk three cases:

  • N=20N = 20 observations, 95% confidence. (10.95)×20=1(1-0.95)\times 20 = 1. So VaR is the 1st-worst observation — the single most brutal day in the sample. Cut off the worst 5% of 20 days, and 5% of 20 is exactly 1 day.
  • N=100N = 100, 99% confidence. (10.99)×100=1(1-0.99)\times 100 = 1. The 1st-worst day again. The worst 1% of 100 days is the single worst.
  • N=100N = 100, 95% confidence. (10.95)×100=5(1-0.95)\times 100 = 5. The 5th-worst day: four days were worse, and you’re reading the loss at the boundary between “the worst 5%” and the rest.

When (1c)N(1-c)\cdot N isn’t a whole number, you’re between two observations — say the 2.5th-worst. Practitioners then interpolate between the neighbouring sorted values (linear interpolation is the common convention; some desks just round to the nearest, or conservatively take the worse of the two). The exact rule is a house choice, but interpolation between adjacent order statistics is the standard. Don’t lose sleep over it — with N=250N = 250 it nudges the number by pennies.

Fill in the percentile-picking arithmetic.

Pick the right option for each blank, then check.

With daily observations at 99% confidence, you cut off the worst % of days, which is observations — so VaR is read at roughly the th-worst day, interpolating between neighbours if needed.

Worked example: a $10M book

Suppose you run a $10,000,000 portfolio. You’ve computed the hypothetical daily P&L of today’s book under each of the last 10 trading days’ market moves (tiny NN, just to keep the arithmetic in view), and sorted them ascending — worst return on top:

Rank (worst → best)Daily returnP&L on $10M
1−3.8%−$380,000
2−2.5%−$250,000
3−1.7%−$170,000
4−0.9%−$90,000
5−0.3%−$30,000
6+0.4%+$40,000
7+0.8%+$80,000
8+1.5%+$150,000
9+2.2%+$220,000
10+3.1%+$310,000

Converting each return to dollars is just multiply-by-$10M: a 1.7%-1.7\% day means 0.017×10,000,000=170,000-0.017 \times 10{,}000{,}000 = -170{,}000, i.e. −$170,000. Now pick the percentiles.

95% VaR. (10.95)×10=0.5(1-0.95)\times 10 = 0.5. That’s between the 0th and 1st observation — effectively the worst day. Reading rank 1: a loss of 3.8%3.8\%, i.e. $380,000. (Some conventions interpolate toward the worst extreme; with the smallest possible tail, the 1st-worst is the natural read.) Plain English: “We are 95% confident we won’t lose more than $380,000 tomorrow.”

Now make it concrete with a cleaner cut. Say instead N=20N = 20 at 95%: (10.95)×20=1(1-0.95)\times 20 = 1, so VaR is the 1st-worst of 20 days. With N=100N = 100 at 95%, it’d be the 5th-worst — and if that 5th-worst day was, say, 1.7%-1.7\%, your 95% VaR would be $170,000.

99% VaR with N=100N = 100. (10.99)×100=1(1-0.99)\times 100 = 1 → the 1st-worst of 100 days. If that single worst day was 3.8%-3.8\%, your 99% VaR is 0.038×10,000,000=0.038 \times 10{,}000{,}000 = $380,000. Notice the pattern that bites later: at 99% with only 100 days, your entire VaR estimate rests on one observation — the worst day in the window. Lose or gain that one day and the number lurches.

A $25M portfolio's worst-5%-boundary historical return (its 95% VaR cutoff) is −2.4%. What is the 95% 1-day VaR in dollars?

Why it’s loved

For all its simplicity, historical simulation earns its keep, and risk desks adore it for three concrete reasons.

No distribution assumption. The parametric method has to assume a shape — almost always the normal bell curve — and real financial returns famously aren’t normal. Historical simulation sidesteps the whole question. It never says “returns are normal” or anything else; it just uses the dots you have. If the truth is lumpy, skewed, and mean, the dots are lumpy, skewed, and mean too.

It captures the actual fat tails, skew, and correlations in the window — for free. This is the quiet superpower. Markets crash harder and more often than a bell curve predicts (fat tails), losses and gains aren’t symmetric (skew), and assets move together in a panic (correlation spikes). A parametric model has to be told about each of these, painstakingly. Historical simulation gets all of them automatically, because if those features were present in the last NN days, they’re sitting right there in the sorted P&L. The correlation between your stocks and your bonds on a crash day isn’t estimated — it’s baked into that day’s joint move, which you replayed in one shot.

It’s simple to explain and audit. You can sit a regulator, a board member, or a junior analyst down and explain it in two sentences: “these are the last 250 days; we sorted them; here’s the bad one we’re worried about.” No covariance matrix, no Cholesky decomposition, no Greek letters. When VaR has to survive an audit — and under Basel it does — being explainable is worth a great deal.

Match each strength of historical simulation to what it means in practice.

Pick a term, then click its definition.

Where it bites

Now the hard truths. Historical simulation’s great virtue — “the future looks like the chosen past” — is also its single deepest flaw, because sometimes the future emphatically does not.

Warning:

You are driving by the rear-view mirror

Historical VaR assumes tomorrow’s risk resembles the window you picked. In a calm year, the window is full of calm days, so your VaR is small — right up until the calm ends. The model is structurally blind to any disaster larger than what’s already in the window, and it’s slowest to react exactly when markets regime-shift. The 2008 quants learned this in the most expensive classroom on Earth.

Four specific failure modes, each worth naming:

The window-length trade-off. How many days, NN, should you use? It’s a genuine dilemma with no free answer:

WindowUpsideDownside
Short (e.g. 100 days)Reacts fast to new volatility regimesNoisy; few tail observations; jumpy estimates
Long (e.g. 1000+ days)Smooth, statistically stable, more tail dataStale — drags in ancient, irrelevant market conditions

Short windows are twitchy and statistically thin in the tail (the place you care about most); long windows are stable but slow, mixing in regimes that no longer exist. There is no universally correct NN — it’s a judgement call about how fast your market’s risk regime turns over.

Equal-weighting old and new days. Plain historical simulation treats a move from 250 days ago as exactly as relevant as yesterday’s. But markets have memory — recent volatility predicts near-term volatility (volatility clusters). Giving a sleepy day from ten months back the same vote as a turbulent one from this morning understates risk when trouble is brewing. The standard fix is the exponentially-weighted (or “BRW” — Boudoukh–Richardson–Whitelaw) variant: weight recent days more heavily and let old ones decay, so the percentile leans on what’s relevant now. Same recipe, weighted sort.

It can never produce a loss bigger than the worst day in the window. This one is structural and worth saying plainly: historical VaR is bounded above by the single worst observation in your sample. If the worst day in your 250-day window was 4%-4\%, your historical VaR cannot exceed 4%4\% — not at 99%, not at 99.9%, not ever. The method has literally never seen anything worse, so it cannot imagine anything worse. For a portfolio whose true catastrophe is a 10% gap that simply hasn’t happened yet in your window, historical simulation will quietly tell you everything’s fine. (This is exactly why Expected Shortfall and Monte Carlo exist — later lessons.)

The ghost / echo effect. Picture one monstrous 9%-9\% day sitting in your 250-day window. For 250 days it props up your VaR — a permanent reminder of pain. Then, on day 251, it rolls out of the window. Nothing changed in the market, but your VaR suddenly drops sharply, purely because one bad memory aged out of the sample. This artificial jump is the ghost (or echo) effect: VaR moving for calendar reasons rather than market reasons. Exponential weighting softens it (the day was already fading), but plain equal-weighted historical simulation has a hard, discontinuous cliff the day a big move exits.

Your 250-day historical 99% VaR has been steady at $1.2M for months. Today — with markets totally calm and your positions unchanged — it abruptly drops to $0.7M. What most likely happened? (Spot the trap.)

Sort each statement: is it a STRENGTH of historical simulation, or a WEAKNESS?

Place each item in the right group.

  • Makes no assumption about the return distribution
  • Equal-weights ancient and recent days
  • Simple to explain and audit
  • Captures real fat tails and correlations automatically
  • Cannot produce a loss worse than the worst day seen
  • VaR jumps when a big day rolls out of the window

When to use it

Reach for historical simulation when your portfolio’s risk factors have a decent, relevant price history and you want a transparent, assumption-light number you can defend in an audit — it’s the default first VaR engine at most banks for exactly that reason. It shines when the recent past genuinely resembles the near future (stable regimes) and when capturing messy real-world correlations matters more than modelling the far tail precisely.

Be wary — and reach instead for parametric or Monte Carlo methods — when you need to stress beyond anything in your window (true tail catastrophes), when you hold new instruments with no price history, or when you’re in a regime shift where the recent past is actively misleading. The honest move on a real desk is to run more than one method and worry hard when they disagree.

Big picture

Historical simulation VaR — the whole picture

  • Historical VaR
    • The recipe
      • Apply N past days of moves to TODAY’s book
      • Sort the hypothetical P&L ascending
      • VaR = loss at the (1−c)·N-th worst
      • Interpolate when not a whole number
    • Why it’s loved
      • No distribution assumed
      • Real fat tails & skew for free
      • Correlations baked into each day
      • Simple to explain & audit
    • Where it bites
      • Rear-view mirror: assumes past = future
      • Window trade-off: short=noisy, long=stale
      • Equal-weights old & new (fix: EWMA/BRW)
      • Never exceeds the worst day seen
      • Ghost effect when a big day rolls out
    • When to use
      • Good history + stable regime
      • Audit-friendly default engine
      • Pair with parametric / Monte Carlo
Replay the past, sort it, read the percentile. Loved for assuming nothing; dangerous for assuming the past repeats.

Recap: historical simulation VaR

Question 1 of 50 correct

The core idea of historical simulation is to:

Check your answer to continue.

Historical simulation is the honest, assumption-light first answer — but it’s hostage to its window, blind beyond the worst day it’s seen, and statistically thin in the tail. The next lesson, Parametric (Variance–Covariance) VaR, swaps that empirical record for a confident assumption — returns are normal — and buys back speed, smoothness, and the ability to extrapolate past anything you’ve witnessed. Whether that assumption is a gift or a lie is exactly the question we’ll interrogate.

Mark lesson as complete