Skip to content
Property-cat reinsurance analytics for software engineers

Analytics Toolkit · Section 4.4

VaR vs. TVaR

Why TVaR is sub-additive and VaR is not, shown on a ten-trial counterexample, and what each measure sees of the tail.

Value at Risk (VaR) and Tail Value at Risk (TVaR) summarise the same tail, and they behave differently when two loss distributions are combined. The TVaR of a sum never exceeds the sum of the standalone TVaRs. The VaR of a sum can. That property, sub-additivity, is the formal reason TVaR is preferred for capital decisions, and ten constructed trials are enough to make VaR fail it.

A coherent risk measure satisfies four axioms.1 Monotonicity: a position that loses at least as much in every trial carries at least as much risk. Positive homogeneity: scaling every loss by c≥0c \geq 0 scales the risk by cc. Translation invariance: adding a certain loss cc adds cc to the risk. VaR satisfies all three. The axiom it fails is the fourth, sub-additivity:

ρ(X+Y)≤ρ(X)+ρ(Y)\rho(X + Y) \leq \rho(X) + \rho(Y)

Here ρ\rho is the risk measure and XX and YY are two losses defined on the same trials. In English: the risk of a combined portfolio does not exceed the sum of the individual risks, so diversification can help and cannot hurt. TVaR always satisfies this property. VaR does not.

The counterexample uses constructed numbers, not Caldera Re’s: the failure is easiest to see in a case built to show it. Consider two loss distributions, each over 10 equiprobable trials:

TrialL1L_1L2L_2L1+L2L_1 + L_2
101010
2011
3000
4000
5000
6000
7000
8000
9101
10909

At α=0.80\alpha = 0.80, k=⌊0.2×10⌋=2k = \lfloor 0.2 \times 10 \rfloor = 2 tail trials. Sort each distribution descending. VaR is the kk-th largest:

L1 descending: [9,1,0,0,0,0,0,0,0,0]⇒VaR0.80(L1)=1L_1 \text{ descending: } [9, \mathbf{1}, 0, 0, 0, 0, 0, 0, 0, 0] \quad\Rightarrow\quad \text{VaR}_{0.80}(L_1) = 1 L2 descending: [10,1,0,0,0,0,0,0,0,0]⇒VaR0.80(L2)=1L_2 \text{ descending: } [10, \mathbf{1}, 0, 0, 0, 0, 0, 0, 0, 0] \quad\Rightarrow\quad \text{VaR}_{0.80}(L_2) = 1 VaR0.80(L1)+VaR0.80(L2)=1+1=2\text{VaR}_{0.80}(L_1) + \text{VaR}_{0.80}(L_2) = 1 + 1 = 2

The combined distribution, sorted descending:

L1+L2 descending: [10,9,1,1,0,0,0,0,0,0]⇒VaR0.80(L1+L2)=9L_1 + L_2 \text{ descending: } [10, \mathbf{9}, 1, 1, 0, 0, 0, 0, 0, 0] \quad\Rightarrow\quad \text{VaR}_{0.80}(L_1 + L_2) = 9

Combining the distributions made VaR worse: 9>29 > 2. Diversification increased measured risk, a pathological result.

TVaR does not have this problem. With k=2k = 2 tail trials:

TVaR0.80(L1)=9+12=5TVaR0.80(L2)=10+12=5.5\text{TVaR}_{0.80}(L_1) = \frac{9 + 1}{2} = 5 \qquad \text{TVaR}_{0.80}(L_2) = \frac{10 + 1}{2} = 5.5 TVaR0.80(L1+L2)=10+92=9.5≤10.5=TVaR0.80(L1)+TVaR0.80(L2)✓\text{TVaR}_{0.80}(L_1 + L_2) = \frac{10 + 9}{2} = 9.5 \leq 10.5 = \text{TVaR}_{0.80}(L_1) + \text{TVaR}_{0.80}(L_2) \quad\checkmark

The same helpers that compute the Caldera Re metrics reproduce both results:

caldera_re/sub_additivity.py Python
"""VaR is not sub-additive; the rank-based TVaR is.

Two constructed loss distributions over ten equiprobable trials. Each one
loses in two trials only, and the two never lose in the same trial. At
alpha = 80% the tail holds k = 2 trials, so each standalone VaR is the small
second-largest loss, while the combined distribution's second-largest loss is
one of the large ones.

The numbers are constructed, not Caldera Re's: the failure is easiest to see in
a case built to show it.
"""

import pandas as pd

from caldera_re.aep import aep
from caldera_re.report import table
from caldera_re.tvar import tvar
from caldera_re.var import var

N = 10
ALPHA = 0.80
L1 = [0, 0, 0, 0, 0, 0, 0, 0, 1, 9]
L2 = [10, 1, 0, 0, 0, 0, 0, 0, 0, 0]


def curve(losses):
    """The EP curve of one constructed loss per trial.

    Zero-loss trials are dropped, as a YELT would hold no row for them, and
    N is passed: a frame built from arrays carries no trial count of its own.
    """
    frame = pd.DataFrame({'trial_id': range(1, N + 1), 'loss': losses})
    return aep(frame[frame['loss'] > 0], n_trials=N)


if __name__ == '__main__':
    combined = [a + b for a, b in zip(L1, L2)]
    rows = []
    for name, losses in [('L1', L1), ('L2', L2), ('L1 + L2', combined)]:
        c = curve(losses)
        rows.append((name, var(c, ALPHA), tvar(c, ALPHA)))
    sum_var = rows[0][1] + rows[1][1]
    sum_tvar = rows[0][2] + rows[1][2]
    table(['Distribution', f'VaR({ALPHA:.0%})', f'TVaR({ALPHA:.0%})'], rows,
          fmt=['{}', '{:.1f}', '{:.1f}'],
          footer=[('Sum of standalone', sum_var, sum_tvar)])

    print()
    for name, combined_value, standalone_sum in [('VaR', rows[2][1], sum_var),
                                                 ('TVaR', rows[2][2], sum_tvar)]:
        holds = combined_value <= standalone_sum
        print(f"{name:4s}: combined {combined_value:.1f} "
              f"{'<=' if holds else '>'} {standalone_sum:.1f} sum of standalone"
              f" -> sub-additivity {'holds' if holds else 'fails'}")

The risk profiling story works the same comparison on Caldera Re data, where the combined VaR happens to fall below the standalone sum, and then constructs the independent-exposures case in which it does not.

PropertyVaRTVaR
What it measuresThreshold of the tailMean severity of the tail
Tail sensitivityNone: ignores everything beyond the thresholdCaptures average severity, but not the full shape of the tail (just as expected loss cannot capture the full distribution)
Sub-additivityNot guaranteed: diversification can increase VaRAlways satisfied

Neither measure involves a contract; attachment and exhaustion probability compare the same distribution with a layer’s attachment point and limit.

  1. Philippe Artzner, Freddy Delbaen, Jean-Marc Eber, and David Heath, “Coherent Measures of Risk”, Mathematical Finance 9(3), 1999. Introduces the coherence axioms and shows that tail conditional expectation is not sub-additive in general. Carlo Acerbi and Dirk Tasche, “On the Coherence of Expected Shortfall”, Journal of Banking & Finance 26(7), 2002. Pins down exactly where the definitions diverge on discrete distributions and proves the averaging form coherent. ↩