Severity Models
Severity models describe the monetary impact of individual events.
1. Lognormal severity
Many cyber losses (breaches, outages) empirically follow a lognormal-like tail:
meaning:
In CRML:
model:
severity:
model: lognormal
parameters:
mu: 12.0
sigma: 1.25
Runtime:
from crml.severity import sample_lognormal
sev = sample_lognormal({"mu": 12.0, "sigma": 1.25}, size=n_events)
2. Gamma severity
For operational loss tails that are lighter than lognormal, a Gamma model can be used:
with shape parameter k and scale \theta.
In CRML:
model:
severity:
model: gamma
parameters:
shape: 2.5
scale: 15000.0
3. Mixture severity (QBER-style)
To capture multi-modal or regime-based behavior, CRML supports mixtures:
Example: 2-component mixture of lognormal and gamma:
model:
severity:
model: mixture
components:
- lognormal:
weight: 0.7
mu: 12.0
sigma: 1.25
- gamma:
weight: 0.3
shape: 2.8
scale: 15000.0
Runtime implementation (simplified):
from crml.severity import sample_mixture
sev = sample_mixture(components, size=n_events)
4. From frequency & severity to loss
Total annual loss L in a Monte Carlo scenario:
where:
- N ~ frequency model (Poisson, Gamma–Poisson, ...)
- X_i ~ severity model (Lognormal, Gamma, Mixture, ...)
The CRML runtime loops over Monte Carlo runs, sampling frequency and severity and aggregating L.
5. Heavy tails and VaR
For heavy-tailed lognormal (large \sigma), tail metrics like VaR are highly sensitive to:
- the chosen \mu, \sigma
- the assumed correlations (via copula)
- the mixture weights in hybrid models
CRML makes all of these parameters explicit and versioned in the model file.