This document explains the core math and assumptions used by the FAIR Risk Quantification Tool.
The goal is transparency: no hidden scores, no opaque multipliers.
All calculations are built from three main parts:
-
TEF – Threat Event Frequency
- Unit:
events per year - Interpretation: how many times per year relevant threat events reach the asset and attempt the described adverse outcome.
- Input as percentiles: P10, P50, P90.
- Unit:
-
Susceptibility
- Unit:
%(0–100) - Interpretation: conditional probability that a threat event succeeds in causing the primary loss event, given that it occurs.
- Input as percentiles: P10, P50, P90.
- Unit:
-
Loss Magnitude (LM) – per-event loss
- Unit: currency per loss event (e.g. USD/event).
- Decomposed into six loss forms:
- Productivity
- Response
- Replacement
- Fines & Judgments
- Competitive Advantage
- Reputation
- Each loss form is modeled as a distribution over currency amounts.
-
SLEF – Secondary Loss Event Frequency
- Unit:
%(0–100) - Interpretation: probability that secondary losses occur, given that the primary loss event has occurred.
- Input as percentiles: P10, P50, P90.
- Unit:
From these we derive:
-
LEF – Loss Event Frequency
- Unit:
events per year - Interpretation: expected number of actual loss events per year.
- Unit:
-
ALE – Annual Loss Expectancy
- Unit: currency per year (e.g. USD/year)
- Interpretation: expected annual loss for the scenario.
Let's use the median values as the intuitive explanation; the simulation uses full distributions.
- Median LEF:
- In the Monte Carlo engine, for each simulation ( i ):
Where:
$\text{TEF}_i \ge 0$ $0 \le \text{Susceptibility}_i \le 100$
This guarantees
Per loss event, we compute:
- Primary loss (always evaluated for each event):
- Secondary loss (only realized when secondary losses occur):
All loss-form samples are by construction non-negative:
SLEF is the conditional probability that secondary loss occurs, given that the primary loss event has occurred.
We sample SLEF as a percentage:
Then convert to a probability:
The effective Single Loss Event Exposure (i.e. LM per event) is:
Special cases:
- If SLEF = 0
then$p_{\text{SLEF}, i} = 0$
and secondary terms drop out; only Primary contributes. - If there are no secondary losses (all fines/competitive/reputation medians are zero), SLEF is not required and may be set to 0.
Because SLEF is conditional on the primary event and bounded in
For each simulation
- Units:
(events/year) × (currency/event) = currency/year - Non-negativity: both factors are non-negative, so ALE is non-negative.
From the sampled ALE distribution we then compute summary statistics:
- Mean (expected annual loss)
- Percentiles (P10, P50, P90, P95, P99)
- Modeled as:
- Poisson, optionally Zero-Inflated Poisson, or
- Lognormal (for over-dispersed counts).
- Inputs: P10, P50, P90 (all ≥ 0).
- Constraint: TEF ≥ 0.
- Modeled via Beta-PERT on the range [0, 100].
- Inputs: P10, P50, P90 with:
$0 \le \text{P10} \le \text{P50} \le \text{P90} \le 100$
- These constraints guarantee that probabilities remain within valid bounds.
- Each loss form is modeled as either:
- Lognormal, or
- Zero-inflated lognormal when P10 = 0 < P50.
- Inputs: P10, P50, P90 with P10 ≤ P50 ≤ P90 and all ≥ 0.
- When P50 = 0, the loss form is treated as always 0.
The zero-inflated path ensures we can represent “often zero, sometimes large” behavior without generating absurdly heavy tails.
4. No Hidden Scores
This engine does not use proprietary scores or arbitrary multipliers.
- There is no risk score to money magic.
- Everything is derived from:
- TEF (events/year)
- Susceptibility (%)
- SLEF (%)
- Loss Magnitude (currency/event across six explicit loss forms)
Monte Carlo simulation simply propagates the uncertainty in these inputs to distributions over LEF, LM, and ALE.
The model is versioned at the math/engine level. Examples of changes:
- v0.1 – Basic FAIR engine: TEF, Susceptibility, Primary/Secondary losses, SLEF, simple lognormals.
- v0.2 – Added Zero-Inflated Poisson TEF option.
- v0.3 – Added zero-inflated loss forms when P10 = 0; clarified LM vs SLEE naming.
- v0.4 – Documented constraints; added unit tests for SLEF and Susceptibility edge cases.
Future changes to the math will be recorded here.