Skip to content

FRM Part II · FRM Exam Part II

Backtesting VaR: formula sheet

Full chapter guide

Key formulas

Exception definition
Exception on day t if P&L(t) < −VaR(t)
VaR is quoted as a positive loss. A loss larger than VaR is an exception. A loss equal to VaR is not.
Expected number of exceptions
E[N] = T × (1 − c)
T is the number of days and c is the VaR confidence level. At 99% over 250 days, E[N] = 2.5.
Exception rate
Exception rate = N ÷ T
Compare with 1 − c. A rate well above 1 − c suggests VaR is too low.
Hypothetical P&L
Hypothetical P&L = value of yesterday's closing positions at today's prices − their value at yesterday's prices
Positions held fixed. No intraday trades, fees or new deals.
Actual P&L link
Actual P&L = hypothetical P&L + fees and commissions + intraday trading result + reserve changes and other items
Conceptual breakdown. The extra items are what make actual P&L dirty.
Exception probability
p = 1 − c
c is the VaR confidence level. 99% VaR gives p = 0.01.
Binomial probability of x exceptions
P(X = x) = [T! ÷ (x! × (T − x)!)] × p^x × (1 − p)^(T − x)
Use for exact probabilities, especially when T × p is small.
Expected exceptions
E(X) = T × p
For 99% VaR over 250 days, E(X) = 2.5.
Variance and standard deviation
Var(X) = T × p × (1 − p); SD = √[T × p × (1 − p)]
Used in the z-test.
z-test for exception count
z = (x − T × p) ÷ √[T × p × (1 − p)]
Normal approximation. Reject at 5% two-tailed if |z| > 1.96. Works best for large T × p.
Tail probability
P(X ≥ x) = 1 − P(X ≤ x − 1)
Sum the binomial terms below x, then subtract from 1.
Expected exception rate
p = 1 − c, where c is the VaR confidence level
For 99% VaR, p = 0.01. For 95% VaR, p = 0.05.
Kupiec POF likelihood ratio
LR_POF = −2 ln[(1 − p)^(T − x) × p^x] + 2 ln[(1 − x/T)^(T − x) × (x/T)^x]
T = number of observations, x = number of exceptions. Needs 0 < x < T for the logs to work directly.
Equivalent log form
LR_POF = −2 [(T − x) ln(1 − p) + x ln p] + 2 [(T − x) ln(1 − x/T) + x ln(x/T)]
Easier to compute on a calculator.
Decision rule
Reject the model if LR_POF > χ²(1) critical value
Critical values: 3.84 at 5% significance, 6.63 at 1%.
Special case x = 0
LR_POF = −2 T ln(1 − p)
The second term vanishes when there are no exceptions.
Expected exceptions
E(x) = p × T
Compare with the actual count first as a sanity check.
Conditional coverage statistic
LR_cc = LR_uc + LR_ind
Distributed chi-square with 2 degrees of freedom under the null of correct coverage and independence.
Probability of exception after a no-exception day
π01 = n01 ÷ (n00 + n01)
n01 counts days with an exception that followed a day without one.
Probability of exception after an exception day
π11 = n11 ÷ (n10 + n11)
Under independence, π01 equals π11.
Overall exception probability
π = (n01 + n11) ÷ (n00 + n01 + n10 + n11)
Used as the single probability under the null of independence.
Independence statistic
LR_ind = −2 ln[(1 − π)^(n00 + n10) × π^(n01 + n11)] + 2 ln[(1 − π01)^n00 × π01^n01 × (1 − π11)^n10 × π11^n11]
Chi-square with 1 degree of freedom. Large values mean clustering.
Critical values
χ²(1): 3.84 at 5%, 6.63 at 1%. χ²(2): 5.99 at 5%, 9.21 at 1%
Reject the null when the statistic is above the critical value.
Backtesting setup
Exception when daily loss > 1-day 99% VaR; window = last 250 trading days
Expected exceptions = 250 × 1% = 2.5.
Zones
Green: 0-4; Yellow: 5-9; Red: 10 or more exceptions
Boundaries are fixed by Basel; learn them exactly.
Plus factors in the yellow zone
5 → 0.40; 6 → 0.50; 7 → 0.65; 8 → 0.75; 9 → 0.85
Green plus factor is 0; red plus factor is 1.00.
Multiplier
Multiplier = 3 + plus factor
Gives 3.00 (green), 3.40 to 3.85 (yellow), 4.00 (red).
Capital charge (simplified)
Capital = max(VaR(t-1), multiplier × average 10-day 99% VaR over the last 60 days) + specific risk charge
VaR(t-1) is the previous day's 10-day 99% VaR. The specific risk charge is added after the higher-of comparison. Exam questions often give one VaR figure, so you then compute multiplier × VaR.
Binomial exceptions
X ~ Binomial(250, 0.01); mean = 2.5; standard deviation = √(250 × 0.01 × 0.99) ≈ 1.57
Useful for judging how unusual a count is.
Type I error
P(reject H0 | model is correct) = α
The significance level of the test. Rejecting a good model.
Type II error
β = P(do not reject H0 | model is wrong)
Accepting a bad model.
Power
Power = 1 − β
Probability of rejecting a wrong model. Higher is better.
Expected exceptions
E[x] = T × p, where p = 1 − confidence level
T is the number of backtest days.
Std deviation of exception count
σ = √(T × p × (1 − p))
Under the binomial model with independent exceptions. Used to judge how far a count is from expected.
Expected exceptions
Expected number of exceptions = N × (1 − c)
N is the number of days, c is the VaR confidence level. At 99% over 250 days, 250 × 0.01 = 2.5.
Exception rate
Observed exception rate = x ÷ N
x is the number of exceptions. Compare with 1 − c. A rate well above 1 − c suggests the model understates risk.
Exception condition
Exception if loss > VaR
Loss is shown as a positive number. Use the same sign convention for loss and VaR.
Hypothetical vs actual P&L
Actual P&L = hypothetical P&L + intraday trading P&L + fees and commissions + reserve changes
Use the gap to see whether exceptions come from the model or from trading and other items.
Basel traffic light zones (250 days, 99% VaR)
Green: 0–4 exceptions; Yellow: 5–9; Red: 10 or more
Yellow brings a higher multiplier on the market risk capital charge. Red usually leads to the model being presumed flawed and a heavier penalty.

Quick revision

  • An exception is a day when the loss exceeds the VaR estimate.
  • Expected exceptions = p × N, where p = 1 − confidence level.
  • Exception count is binomial with standard deviation √(N × p × (1 − p)).
  • Kupiec tests the exception frequency only; it ignores timing.
  • Kupiec LR_uc follows chi-square with 1 degree of freedom; 5% critical value is 3.84.
  • Christoffersen independence tests whether exceptions cluster; 1 degree of freedom.
  • Conditional coverage LR_cc = LR_uc + LR_ind, with 2 degrees of freedom; 5% critical value is 5.99.
  • Basel zones at 250 days and 99% VaR: green 0–4, yellow 5–9, red 10 or more exceptions.
  • Basel base multiplier is 3; yellow adds a rising amount and red adds 1.00.
  • Type I error rejects a correct model; Type II error fails to reject a wrong model.
  • Higher confidence levels give fewer exceptions and lower test power.
  • Causes of exceptions include model flaws, intraday trading, and bad luck.

Common mistakes

  • Saying clean P&L includes fees and commissions. Fix: Clean P&L strips out fees, commissions and intraday trading. Actual (dirty) P&L includes them.
  • Treating hypothetical P&L as the real trading result. Fix: Hypothetical P&L is a recalculation holding yesterday's closing positions fixed. It is never booked.
  • Using p = c instead of p = 1 − c Fix: Always write p = 1 − c first. A 99% VaR has a 1% exception probability.
  • Forgetting to subtract 1 in P(X ≥ x) Fix: P(X ≥ x) = 1 − P(X ≤ x − 1). Sum only up to x − 1.
  • Using p = c (for example 0.99) instead of 1 − c. Fix: Always write p = 1 − c first. p is the exception probability.
  • Using the wrong degrees of freedom. Fix: Kupiec POF uses chi-square with 1 degree of freedom. The conditional coverage test uses 2.
  • Using 1 degree of freedom for the conditional coverage test. Fix: Two hypotheses are tested together, so use 2 degrees of freedom and the 5.99 or 9.21 cutoffs.
  • Thinking a correct exception count means the model passes. Fix: Counts only test frequency. Clustered exceptions can still fail the independence test.
  • Putting 5 exceptions in the green zone, or 10 in the yellow zone. Fix: Green is 0-4, yellow is 5-9, red is 10 or more. Check the boundary counts first.
  • Reporting the plus factor as the multiplier. Fix: Always add the plus factor to 3. Five exceptions gives 3.40, not 0.40.

Exam tips

  • Know the three P&L labels cold. Questions often ask which series isolates model error: hypothetical or clean.
  • Always compute T × (1 − c) first. It anchors every interpretation question.
  • Watch for the wording 'too few exceptions'. It is a valid problem, not a good result.
  • In case-style questions, trace each breach to a cause: model, data or non-model P&L items.
  • Remember that VaR is a forecast made before the day. Backtesting never uses hindsight VaR.
  • Write p = 1 − c before anything else. Many wrong options are built from p = c.
  • Memorise the 99%, 250-day case: expected 2.5 exceptions, SD about 1.57.
  • Check whether the question asks for an exact binomial probability or a z-test. The method decides the answer.