Event metrics · published contract

Four numbers on every event. Here is exactly how each one is calculated.

Most event feeds hand you a severity score and call the method proprietary. Ours are computed by published formulas from named inputs, each with a recorded reason — so you can re-derive any value by hand, disagree with a specific input, and know precisely what the number does and does not claim.

The model reads facts. A formula does the arithmetic.

We separate the two jobs, which is how canonical event datasets have always worked — the lineage runs from KEDS and TABARI through PETRARCH to ICEWS and GDELT. A language model reads one event and extracts a small set of concrete sub-factors, recording why it chose each value. A fixed, versioned function then turns those facts into a score.

01
Extract

The coder reads the source cluster and fills named sub-factors — deaths, how substitutable the touched node is, whether a barrier broke — with a written reason for each.

02
Compute

A published, versioned formula turns those values into the score. The same function runs in production and in every benchmark, so they cannot drift apart.

03
Audit

You get the inputs, the reasons and the arithmetic. Re-do it yourself, or reject one input and see what changes.

Why bother? Because the alternative — letting a model emit a number directly — gives you nothing to check. When our own coder produced a magnitude we could not reconstruct, we had no way to tell a judgement we disagreed with from a bug. Now every value has a paper trail.

The four metrics

Each answers a genuinely different question, and each borrows its structure from a framework already in practice — so you are reading something with an institutional home, not an invention of ours.

magnitude0–10 · null when unknown

How intense was this event, for its own type?

Formula
conflict: min(10, 2 + 2·log₁₀(deaths)) — hazard / verbal / economic: anchored 0–10 tier
Grounded in
Log-fatality severity

Richardson's Statistics of Deadly Quarrels (1960) established that conflict severity is read on a log-fatality scale, not a linear one. The 0–10 framing follows the Center for Systemic Peace's MEPV conflict-magnitude scale; the 25 and 1,000-death thresholds come from UCDP/COW.

Who uses it

UCDP and the Correlates of War project (fatality thresholds), the Center for Systemic Peace (MEPV), EM-DAT (disaster inclusion criteria).

How we adapted it

We anchor the intercept at 2 so a single-fatality event does not read as zero, and we route non-conflict domains to anchored impact tiers instead of forcing a fatality count where none exists.

What it is not

Not a scientific scale. The hazard ladder is a realised-impact tier, NOT a moment magnitude or Richter reading — a quake's Mw is used only when the event is an earthquake and the source states one. And not comparable across domains: a conflict 9 and a technology 9 are not the same size.

Worked example

A clash with 25 reported deaths

deaths = 25

min(10, 2 + 2·log₁₀(25)) = 4.8

systemic_importance0–1

How much does the wider system depend on the node this event touched?

Formula
(size + interconnectedness + irreplaceability) / 3
Grounded in
Systemic-importance assessment

The Basel Committee's G-SIB methodology scores systemic importance as equally weighted categories (5 at 20% each); the ECB/EBA O-SII framework uses 4 at 25%. Equal weighting is the convention precisely because the categories are not independently calibratable.

Who uses it

The Basel Committee on Banking Supervision and the Financial Stability Board (G-SIB / SIFI designation), the ECB and EBA (O-SII buffers).

How we adapted it

We reduce to three categories that a news event can actually evidence — how big the touched node is, how much depends on it, and how substitutable it is — and keep Basel's equal weighting rather than inventing weights we cannot defend.

What it is not

Not a count of affected states or people. A large firm is not automatically a systemic node; an unsubstitutable supplier is. Most events touch no systemic node at all, so the base rate is low by design.

Worked example

A nationwide grid failure halting transport and surgeries

size 0.85 · interconnectedness 0.90 · irreplaceability 0.70

(0.85 + 0.90 + 0.70) / 3 = 0.82

propagation_potential0–1

What conditions exist right now that would let this shock travel?

Formula
(channel + coupling + breach + primed + (1 − containment)) / 5

Gate — channel ≤ 0.05 → 0 — no live route out, no propagation, however dramatic the event

Grounded in
Barrier / transmission-condition assessment

The ERCS barrier model (Commission Delegated Regulation (EU) 2020/2034, binding law since January 2023) scores whether the barriers that were holding have been degraded. The ESRB's systemic-risk model was built explicitly for when historical precedent is absent. Coupling follows Rinaldi–Peerenboom–Kelly infrastructure-dependency analysis.

Who uses it

The European Commission and EASA (ERCS, in law), the European Systemic Risk Board, RAND (escalation-risk frameworks RR-A972-1 and RR-A2215-1), DHS/CISA via Argonne, the EC Joint Research Centre.

How we adapted it

Every sub-factor is a claim about the PRESENT, readable from the event as reported. We tried eliciting a forecast instead and it failed in both directions — inflating to 37 of 59 events in one run and collapsing to zero in another — because articles describe what happened, not what follows.

What it is not

Not a probability. 0.4 does not mean a 40% chance of a cascade, and there is no per-domain prior — cyber and supply-chain events get no automatic head start.

Worked example

A hospital payment dispute that has already suspended outpatient services

channel 0.55 · coupling 0.60 · breach 0.65 · primed 0.50 · containment 0.20

(0.55 + 0.60 + 0.65 + 0.50 + 0.80) / 5 = 0.62

market_sensitivity0–1

How much market-relevant information does this carry for a reasonable investor?

Formula
(claim_exposure + economic_bite) / 2

Gate — claim_exposure ≤ 0.05 → 0 — nothing traded is exposed, even indirectly

Grounded in
Reasonable-investor materiality

The materiality standard from TSC Industries v. Northway (1976) and Basic v. Levinson (1988), SEC SAB 99, and EU Market Abuse Regulation Art. 7(4). CJEU Lafonta v AMF (C-628/13, 2015) is what licenses an unsigned score: information can be 'precise' without indicating which way a price will move.

Who uses it

The SEC (SAB 99; the 2023 cyber-disclosure rule, Form 8-K Item 1.05), ESMA and EU issuers under MAR, the ASX (Listing Rule 3.1 / Guidance Note 8), and the ISSB under IFRS S1.

How we adapted it

Two limbs instead of a full event study, because we have no price series at coding time: how directly a traded claim is exposed, and whether something has already ACTED on its economics. We deliberately dropped a 'surprise' factor — asking how much was already priced in is a market-efficiency judgement no coder can make from a news cluster.

What it is not

Not a predicted price move, not an expected return, and unsigned — it says nothing about direction. It measures how much a reasonable investor could use, not what the market will do.

Worked example

Russia bans diesel exports through year-end, effective immediately

claim_exposure 0.80 (a globally traded commodity is the subject) · economic_bite 0.60 (in force, volumes removed now)

(0.80 + 0.60) / 2 = 0.70

And one number that ranks events against each other

significance is not a coder input — it is a transparent blend of the four metrics plus the conflict primitives, divided by the highest total its own event family can reach, so every family spans a true 0–1 and the cross-domain sort is honest.

all events 0.25·|goldstein| + 0.05·article evidence + 0.05·confidence
conflict 0.55·log(1+fatalities)/log(101) + 0.10·civilian targeting
CAMEO+ 0.20·magnitude/10 + 0.15·systemic + 0.10·propagation + 0.10·market

significance = raw ÷ family max (conflict 1.00 · CAMEO+ POLITICAL 0.90 · other CAMEO+ 0.65)

The per-family divisor matters. The goldstein, fatality and civilian terms only fire for conflict events, so without renormalising, a maxed-out CAMEO+ event could never out-rank a modest clash however severe it was. And when magnitude is unmeasured, its term and its 0.20 weight are both removed — a missing observable never scores as a bad one.

Sanity-checked against events you already have intuitions about

A rubric that only works on the events in our corpus is not a rubric. These are scored the same way any event is, and each is one you can check against your own judgement — the conflict rows are recomputable from the death count shown beside them.

EventYearMagnitudeReading
Powell's semiannual testimony to Congress20241economic tier 1 — routine, no new policy signal
Macron dissolves the French parliament20245economic tier 5 — a genuine shock, stocks and the euro sold off
October 7 attacks in Israel20238.2conflict path — 2 + 2·log₁₀(1,200 deaths)
Attempted assassination at a Trump rally20242.6conflict path — 2 + 2·log₁₀(2 deaths)

The last row is the one worth dwelling on. An assassination attempt on a US presidential candidate scores 2.6 — because magnitude measures physical intensity, not importance. Two casualties are two casualties. Its importance lives in the other three metrics and in significance. If that split feels wrong, you now have the formula to argue with.

What these numbers are not

Publishing a formula creates an obligation to publish its limits too. These are the three that change how you should use the data.

Rubric, not measurement
2.2%

of events resolve to a hard registry attribute — the observable that would make systemic_importance empirical rather than judged. A traded instrument resolves for 1.5%. Measured over 42,099 events.

So these are rubric scores. The frameworks give them structure and vocabulary; they do not make the values empirical. Treat all four as ordinal ranking signals.

Error bars
±0.36

is how far magnitude moves when the same event is coded twice (on its 0–10 scale). The three 0–1 metrics move about 0.03. Measured by coding 59 events three times with nothing changed between runs.

Do not read a single-event difference below 0.72 on magnitude, or ~0.07 on the others. Aggregates are far steadier, so distribution-level comparisons hold well below that.

Still open
No gold set

Every validity check we have run uses a model or an analyst-consensus yardstick. Three identical runs agreeing proves the instrument is consistent, not that it is right — a systematically biased scorer would also repeat perfectly.

A rubric-blind, human-rated gold set is the check that would settle it, and we have not built one. We would rather say so than imply a validation we do not have.

On the frameworks. We adapt published methodologies from the Basel Committee, the ESRB, the European Commission, RAND, UCDP, the Center for Systemic Peace and the securities-materiality case law, and we name them so you can read the originals. None of those institutions endorses, reviews, or is affiliated with this work, and our adaptations are ours alone. Where we changed something, the section above says what and why.

See it on a real event

Every metric on this page comes back on GET /api/v2/events. The Arena runs the same serve functions the public endpoints use, so what you see there is exactly what your integration receives.