Quant Memo
Core

Historical Simulation VaR

Instead of assuming a shape for tomorrow's losses, replay the last few hundred real market days through today's positions, sort the results, and read off the loss you exceed only rarely. Simple, popular, and quietly full of assumptions.

Prerequisites: Value at Risk (VaR), Order Statistics, Mapping Positions to Risk Factors

To compute a Value at Risk number you need to know the distribution of tomorrow's profit and loss. The classic approach assumes a shape, usually a normal distribution, estimates its width from recent volatility, and reads off a quantile. It is fast, it is analytic, and it is wrong in exactly the place you care about, because market returns have far fatter tails than a normal curve allows. Days that a normal distribution says should happen once a century happen every few years.

Historical simulation takes a different route. It refuses to assume a shape at all. Instead it says: here are the last five hundred days that actually happened. Put today's portfolio through each of them, one at a time, and look at what would have happened. That gives five hundred hypothetical outcomes with no distributional assumption anywhere. Sort them, count in from the bad end, and you have your number.

An analogy before any symbols

Suppose you want to know how cold it might get on a January night, so you can size a heater. One approach is to assume temperatures follow a neat bell curve, estimate its centre and spread, and compute the 1-in-100 cold night. The other approach is to open the record of the last five hundred January nights, line them up from coldest to warmest, and look at the fifth coldest.

The second method never assumes anything about bell curves. It automatically includes the ice storm, the freak cold snap, and the fact that cold nights cluster together. But it also carries one enormous assumption in silence: that the last five hundred nights are a fair sample of the next one. If the climate has shifted, or if you happen to be reading the record just after five unusually mild years, the answer is confidently wrong.

That trade, no assumption about shape in exchange for a very strong assumption about relevance, is the whole character of historical simulation.

The method, step by step

  1. Choose a lookback window of NN days, typically 250 (one year), 500 (two years), or 1000. This is the most consequential choice you make.

  2. Map today's book to risk factors. Every position becomes a set of sensitivities to a small number of drivers, see Mapping Positions to Risk Factors.

  3. Extract each historical day's factor moves. Day jj gives you a vector Δf(j)\Delta f^{(j)}: how much each equity index, yield, spread and volatility changed on that specific day in the past.

  4. Apply each past day to today's book. For j=1,,Nj = 1, \ldots, N, compute the hypothetical profit or loss

    Lj=V(ftoday+Δf(j))V(ftoday).L_j = V\big(f_{\text{today}} + \Delta f^{(j)}\big) - V\big(f_{\text{today}}\big).

    In words: take today's actual positions, shock them by the moves that happened on day jj, and record the profit or loss. These are not the returns your book actually earned in the past; they are what today's book would have earned. That distinction matters, because your positions have changed.

  5. Sort and count. With NN scenarios and a confidence level α\alpha, the VaR is the (1α)N\lceil (1-\alpha)N \rceil-th worst outcome:

    VaRα=L((1α)N),\text{VaR}_\alpha = -L_{(\lceil (1-\alpha)N\rceil)},

    where L(1)L(2)L_{(1)} \le L_{(2)} \le \cdots are the sorted outcomes. In words: at 99% with 500 days, that is the 5th worst day. At 95% with 250 days, the 13th worst.

The estimate is an order statistic, a single ranked observation, which explains most of its statistical behaviour. Its neighbours are also its main source of noise.

VaR 99% the 5 worst of 500 loss profit hypothetical one-day P&L of today's book
Every bar is a real past market day replayed through today's positions. VaR is simply the place where 1% of the bars sit to the left. Expected shortfall is the average of those left-hand bars, which is why it uses information VaR throws away.

For contrast, here is the shape a parametric model would have assumed instead. Set the standard deviation and notice how thin its tails are, the normal curve puts almost no probability more than three standard deviations out, whereas real markets deliver such days regularly:

Distribution · normal
-2.000.002.00μvalue →
Within ±1σ 68.3%mean μ 0.00std σ 1.00

Historical simulation makes no assumption about the shape of the loss distribution and a very strong assumption about its relevance: that the chosen window is a representative sample of tomorrow. You have not removed the modelling risk, you have moved it from the distribution into the window length.

Worked example: twenty days, by hand

A $10m book. Here are twenty hypothetical daily profits and losses, in dollars, generated by replaying the last twenty market days:

+18,000 · −24,000 · +9,500 · −6,000 · +31,000 · −41,000 · +4,000 · −12,500 · +22,000 · −7,500 · −19,000 · +14,500 · −3,500 · +26,500 · −52,000 · +8,500 · −15,500 · +3,000 · −9,500 · +20,500

Step 1, sort from worst to best. The bad end reads:

−52,000 · −41,000 · −24,000 · −19,000 · −15,500 · −12,500 · −9,500 · −7,500 · −6,000 · −3,500 · then the ten profitable days.

Step 2, pick the quantile. For 90% confidence, (10.90)×20=2(1 - 0.90) \times 20 = 2, so take the 2nd worst. The 90% VaR is $41,000.

Step 3, expected shortfall. Average the outcomes beyond the VaR, which here means the worst two: 12(52,000+41,000)=46,500\tfrac12(52{,}000 + 41{,}000) = 46{,}500, so the 90% expected shortfall is $46,500.

Step 4, notice the fragility. For 95% confidence, (10.95)×20=1(1-0.95) \times 20 = 1, so VaR is the single worst day, $52,000. One observation, out of twenty, determines the entire risk number. Delete that day and your reported risk falls by 21%. This is why nobody runs historical simulation on twenty days, and why even 500 days leaves the 99% number resting on five observations.

Worked example: 500 days, and the ghost that haunts them

A $50m equity book with a beta of 1.0 to the index, run on a 500-day window at 99% confidence, so VaR is the 5th worst outcome.

Suppose the five worst index days in the window were −4.1%, −3.6%, −3.2%, −2.9% and −2.7%. Applied to $50m, those become losses of $2.05m, $1.80m, $1.60m, $1.45m and $1.35m.

  • The 99% VaR is the 5th worst, $1.35m.
  • The 99% expected shortfall averages all five: (2.05+1.80+1.60+1.45+1.35)/5=1.65(2.05 + 1.80 + 1.60 + 1.45 + 1.35)/5 = 1.65, so $1.65m.

Compare with the parametric answer. If the index's daily volatility over the same window was 1.0%, a normal-based VaR would be 2.326×0.01×50=1.162.326 \times 0.01 \times 50 = 1.16 million, so $1.16m. Historical simulation reports 16% more risk, and the extra comes entirely from the fat left tail that the normal assumption smooths away.

Now the ghost. Tomorrow, nothing happens: the market is flat, you trade nothing. But the −4.1% day is now 501 days old and drops out of the window. The five worst days become −3.6%, −3.2%, −2.9%, −2.7% and −2.5%.

  • New 99% VaR: 2.5% of $50m is $1.25m, down 7%.
  • New 99% expected shortfall: (1.80+1.60+1.45+1.35+1.25)/5=1.49(1.80 + 1.60 + 1.45 + 1.35 + 1.25)/5 = 1.49, so $1.49m, down 10%.

Your risk report just told you the book got 7% safer on a day when absolutely nothing changed. This is the ghost effect (or window effect), and it is the most notorious pathology of the method. It is fully predictable, you can calendar it in advance, and it makes the risk number jump for reasons that have nothing to do with the portfolio.

crash day leaves the window reported VaR same book, lower number time
Nothing about the portfolio changed at the dashed line. A single old bad day aged out of the lookback, and the reported risk stepped down. Longer windows make the steps smaller but slower to react in the other direction too.

What this means in practice

  • Window length is the real parameter. Short windows (250 days) react quickly to a volatility spike but are noisy and forget crises fast. Long windows (1000+) are stable but will still be reporting 2008-sized risk in 2013. There is no correct answer, only a stated policy.
  • Age-weighting. Boudoukh, Richardson and Whitelaw's fix gives recent days more weight, decaying geometrically, so the window ages out gracefully instead of falling off a cliff. Ghost effects soften into slopes.
  • Filtered historical simulation. Standardise each historical day's move by the volatility at that time, then rescale by today's volatility. This keeps the empirical shape of the tails while making the level respond to current conditions, and it is the most common serious upgrade. See EWMA Volatility and RiskMetrics and GARCH Volatility Models.
  • Full revaluation for options. Historical simulation is at its best on nonlinear books because you can reprice every option under each scenario rather than relying on a linear approximation. That is expensive but it is the method's genuine advantage.
  • Report expected shortfall alongside. VaR uses one observation; ES averages the whole tail, which is both more stable and, unlike VaR, a coherent risk measure. Basel's market-risk framework moved to ES for precisely these reasons.

Historical simulation cannot produce a loss bigger than the worst thing in its window. The distribution is bounded by the data, so if the last two years contained no crash, the model will tell you a crash is impossible. It is at its most reassuring immediately after a long calm stretch, which is exactly when it is most dangerous.

The second, subtler trap is that it looks assumption-free and therefore trustworthy. It is not. It assumes the daily factor moves are drawn independently from an unchanging distribution, which is precisely the assumption that fails in a crisis, where volatility clusters and correlations move toward one. And with 500 days at 99% confidence, the entire number rests on five data points, so its own sampling error is large, easily 20 to 30% even before any of the above.

Never run it as your only measure. Pair it with Stress Testing and Scenario Analysis, which asks about scenarios that have not happened yet, and with Value at Risk (VaR) backtesting, which checks whether your exception count matches what the confidence level promised.

Practice

  1. With 750 days of history, which ranked observation gives the 97.5% VaR? What if you switch to 250 days?
  2. Take the twenty numbers above and compute the 95% expected shortfall. Explain in one sentence why it equals the 95% VaR here.
  3. A book was flat all quarter, but its historical simulation VaR fell steadily. Give two explanations, and describe a check that distinguishes them.
  4. Under filtered historical simulation, today's volatility is double the window average. Roughly what happens to the reported VaR, and why is that not the same as simply shortening the window?

Related concepts

Practice in interviews

Further reading

  • Jorion, Value at Risk (Ch. 10)
  • Boudoukh, Richardson & Whitelaw (1998), The Best of Both Worlds
  • Pritsker (2006), The Hidden Dangers of Historical Simulation
ShareTwitterLinkedIn