Skip to content

FRM Exam Part II · Backtesting VaR

Christoffersen Conditional Coverage and Independence Test

Updated 11 October 2026 · Fact-checked

The Christoffersen test checks whether VaR exceptions are independent over time, not just correct in number. The conditional coverage statistic is LR_cc = LR_uc + LR_ind. It follows a chi-square distribution with 2 degrees of freedom. The independence part alone has 1 degree of freedom. A high value rejects the model.

Understand Christoffersen Conditional Coverage and Independence

A VaR model can have the right number of exceptions and still be bad. Suppose a 99% one-day VaR gives 2.5 exceptions a year on average, as expected over 250 days. If all of them come in the same week, the model fails exactly when markets are stressed. It does not react fast enough to rising volatility.

The Kupiec unconditional coverage test only counts exceptions. It asks whether the exception rate equals 1 − confidence level. It ignores when they happen. The Christoffersen independence test fills this gap. It asks whether today's exception depends on whether yesterday had one. Under a good model, the chance of an exception tomorrow is the same whether or not one happened today.

To run it, you build a 2 × 2 table of transitions between days. Count days with no exception followed by no exception (n00), no exception followed by exception (n01), exception followed by no exception (n10), and exception followed by exception (n11). Then compare the probability of an exception after a quiet day, π01 = n01 ÷ (n00 + n01), with the probability after an exception day, π11 = n11 ÷ (n10 + n11). If π01 and π11 differ a lot, exceptions cluster.

The conditional coverage test joins both ideas. It tests that the exception rate is correct and that exceptions are independent. The statistic is the sum of the Kupiec statistic and the independence statistic. Because it tests two things, it has 2 degrees of freedom. Each component is tested against chi-square with 1 degree of freedom.

The critical values you should know are for chi-square: with 1 degree of freedom, 3.84 at 5% and 6.63 at 1%. With 2 degrees of freedom, 5.99 at 5% and 9.21 at 1%. Reject the model if the statistic exceeds the critical value.

Key formulas to remember

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.

How to solve Christoffersen Conditional Coverage and Independence questions

Use this order for any question on conditional coverage or independence. Decide first what is being tested, then pick the right degrees of freedom.

  1. 1Identify the null: unconditional coverage only, independence only, or both (conditional coverage).
  2. 2Pick the degrees of freedom: 1 for Kupiec or independence alone, 2 for conditional coverage.
  3. 3If counts are given, compute π01 and π11 from the transition table. If the statistics are given, skip to step 5.
  4. 4Check the pattern: if π11 is much larger than π01, exceptions cluster. If similar, they look independent.
  5. 5For conditional coverage, add LR_uc and LR_ind.
  6. 6Compare with the chi-square critical value at the stated significance level.
  7. 7State the conclusion: reject means the model is misspecified in coverage, independence, or both. Say which component drives it if you can.

Quickest way: Add, then compare with the 2 d.f. cutoff

When to use it: Use when the question gives LR_uc and LR_ind, or asks which test applies.

  1. Memorise 5.99 (5%) and 9.21 (1%) for 2 d.f., and 3.84 and 6.63 for 1 d.f.
  2. Add the two component statistics to get LR_cc.
  3. Compare with 5.99 or 9.21 as asked.
  4. If one component alone already exceeds its 1 d.f. cutoff, the model is likely rejected.
  5. For clustering questions, just compare π11 with π01.

Common mistakes in Christoffersen Conditional Coverage and Independence

  • Using 1 degree of freedom for the conditional coverage test.

    Kupiec and independence tests each use 1, so students assume the same here.

    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.

    Students remember Kupiec and stop there.

    Fix: Counts only test frequency. Clustered exceptions can still fail the independence test.

  • Confusing π01 with π11.

    The subscripts show yesterday then today, which is easy to reverse.

    Fix: First digit is yesterday's state, second is today's. π11 is the exception probability after an exception day.

  • Treating independence as the same as a low exception rate.

    Both relate to exceptions, so they blur together.

    Fix: Independence is about timing. Coverage is about frequency.

  • Failing to say what a rejection means.

    Students stop at the statistic comparison.

    Fix: Add the interpretation: the VaR model reacts too slowly to changing volatility or has the wrong level.

  • Using the independence test alone for conditional coverage.

    The word conditional sounds like the same thing as independence.

    Fix: Conditional coverage is LR_uc plus LR_ind, not LR_ind by itself.

Worked examples

Example 1

A bank backtests a 99% one-day VaR. The Kupiec statistic is LR_uc = 2.1 and the independence statistic is LR_ind = 7.4. Test conditional coverage at the 5% level.

Show the solution
  1. Conditional coverage adds the two: LR_cc = 2.1 + 7.4 = 9.5.
  2. Degrees of freedom are 2, so the 5% critical value is 5.99.
  3. 9.5 is greater than 5.99, so reject.
  4. Check the source: LR_uc = 2.1 is below 3.84, so frequency looks fine. LR_ind = 7.4 is above 3.84, so clustering drives the rejection.

Answer: LR_cc = 9.5 > 5.99, so reject. Exception frequency is acceptable but exceptions cluster.

Example 2

Over 250 days a model has this transition count: n00 = 232, n01 = 8, n10 = 6, n11 = 4. Compute π01 and π11 and say whether clustering is suggested.

Show the solution
  1. No-exception days followed by another day: n00 + n01 = 232 + 8 = 240.
  2. π01 = 8 ÷ 240 = 0.0333, or 3.33%.
  3. Exception days followed by another day: n10 + n11 = 6 + 4 = 10.
  4. π11 = 4 ÷ 10 = 0.40, or 40%.
  5. An exception is about twelve times more likely after an exception day (0.40 ÷ 0.0333 = 12).

Answer: π01 = 3.33% and π11 = 40%. The large gap suggests exceptions cluster, so the independence test would likely reject.

Exam tips

  • Know the 2 d.f. cutoffs 5.99 and 9.21 and the 1 d.f. cutoffs 3.84 and 6.63 by heart.
  • Questions often ask which test catches clustering: the answer is independence, not Kupiec.
  • Read the subscripts carefully. π01 is after a quiet day, π11 after an exception.
  • A model can pass Kupiec and fail conditional coverage. Expect an interpretation question on this.
  • If the question gives both component statistics, simply add them.

Practice questions from Backtesting VaR

Christoffersen Conditional Coverage and Independence: frequently asked questions

What is the difference between unconditional and conditional coverage?

Unconditional coverage tests only whether the number of exceptions matches the expected rate. Conditional coverage also tests whether exceptions are independent over time. It is the sum of the two test statistics.

Why does the conditional coverage test use 2 degrees of freedom?

It tests two hypotheses at once: the correct exception rate and independence. Each adds one degree of freedom, so the sum is chi-square with 2 degrees of freedom.

How does the Christoffersen test detect exception clustering?

It compares the probability of an exception after an exception day with the probability after a no-exception day. Under independence they are equal. A large gap leads to a high statistic and rejection.

Can a VaR model pass Kupiec and still fail Christoffersen?

Yes. If exceptions bunch together, the total count can be right while the independence test rejects. That shows the model adapts too slowly to changes in volatility.