Four numbers on every event. Here is exactly how each one is calculated.
We publish the formula, the inputs, the reason recorded for each input, and the measured error bars for every score. Ours are computed by published formulas from named inputs — and, on events coded from 28 July 2026, the reason the coder gave for each input is recorded and returned by the API, 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.
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.
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.
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.
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.
| Event | Year | Magnitude | Reading |
|---|---|---|---|
| Powell's semiannual testimony to Congress | 2024 | 1 | economic tier 1 — routine, no new policy signal |
| Macron dissolves the French parliament | 2024 | 5 | economic tier 5 — a genuine shock, stocks and the euro sold off |
| October 7 attacks in Israel | 2023 | 8.2 | conflict path — 2 + 2·log₁₀(1,200 deaths) |
| Attempted assassination at a Trump rally | 2024 | 2.6 | conflict 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.
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.
magnitude
0–10 · null when unknownHow intense was this event, for its own type?
Most events have no death toll, so magnitude is not one formula — it is four ladders, and the coder picks which one applies before scoring. In a 136-event sample of recent corpus events the coder chose verbal 41%, economic 40%, conflict 12%, hazard 7% — so the fatality path, the one with the deepest academic pedigree and usually the only one explained, accounts for about one event in eight.
Only the conflict path is arithmetic. The other three are anchored ladders the coder places the event on, using that domain’s rubric. All four land on 0–10, but compare magnitude within a domain, not across — a 7 on the verbal ladder and a 7 on the hazard ladder are not the same claim. To rank across domains, use significance.
- path
- Which ladder applies — conflict (people were killed), hazard (physical damage or disruption, no deaths needed), verbal (a statement, threat or coercive act with no physical effect), or economic (money, contracts, licences or legal obligations move). Chosen first and recorded, because the four are not measured the same way.
- deaths
- The death toll. The only numeric input to any magnitude formula, and it applies to the conflict path alone.
- value
- On the other three paths, the rung the coder places the event on — how severe the disruption, how coercive the act, or how large and binding the economic change — judged against the anchors in that domain's rubric.
This is the ladder for one path in one domain — every domain ships its own, and the coder picks a rung rather than inventing a number. On the verbal path the rungs map to CAMEO verb codes, so the rung follows from the action coded, not from a sense of how big the story felt. Within a two-value band, the higher value goes to the broader imposed scope — more targets, national rather than local, indefinite rather than time-limited. The prompt also forbids deriving it from goldstein_scale, which is a fixed per-verb constant and so cannot express intensity at all.
The economic ladder, for contrast — same 0–10 scale, entirely different anchors, because a rate decision and a deportation order are not intense in the same way. This is why magnitude compares within a domain and not across.
- In use by
- The Center for Systemic Peace publishes MEPV on this 1–10 construction; UCDP and the Correlates of War project use fatality thresholds to bound armed conflict.
- What we changed
- Richardson's log slope is unchanged. We fix the intercept at 2 so a single fatality does not read as zero, matching MEPV's 1–10 range. The 25 and 1,000-death thresholds are cited as precedent for banded severity — no formula of ours consumes them. The three non-conflict ladders are ours; these sources address armed conflict only.
“A nationwide infrastructure failure left approximately 9.6 million people without electricity, halted most public transport, and cancelled tens of thousands of surgeries.”
No deaths are reported, so the conflict formula never applies — and the event is plainly severe. That is what the other three paths exist for.
systemic_importance
0–1How much does the wider system depend on the thing this event touched?
It scores the node — a named grid, port, firm or ministry — not how many countries appear in the coverage and not how big the story was. The coder names the node first, so the three scores are about something concrete.
Equal weights, deliberately: differential weights would imply a precision about relative importance that neither we nor the regimes below can support.
- node
- The specific thing the event touched, named. Not a term in the arithmetic — it is what the three scores below are about.
- size
- How much of the system that node accounts for. A national grid scores high; one branch office scores low.
- interconnectedness
- How many other things depend on it. Electricity feeds hospitals, transport and payments; a single warehouse feeds one supply chain.
- irreplaceability
- How hard it is to substitute. A sole-source chokepoint scores high; one of many competing suppliers scores low.
Anchors are per-domain and name real institutions. The ECONOMIC prompt is shown; INFRASTRUCTURE anchors on grids, ports and chokepoints, CORPORATE on issuers and supply chains. Every domain prompt states the base rate is LOW — a routine measure usually touches no systemic node at all, and should score near 0 rather than promoting the country itself into a node.
- In use by
- The Basel Committee and FSB designate global systemically important banks annually on five equally-weighted categories; the ECB and national regulators apply the EBA's O-SII criteria across the EU.
- What we changed
- Those regimes score institutions on balance-sheet data we do not have. We score the node an event touched, on rubric anchors, and take the plain mean of three categories rather than five. That difference is why this is a rubric score and not a Basel score.
node — Anthropic and the generative-AI copyright/licensing ecosystem
propagation_potential
0–1How open are the routes out of this event, right now?
Not a probability and not a forecast. It scores transmission conditions observed in the event as reported — a high score says the routes are open and the slack is gone, not that a shock will travel them.
Two things carry the design. channel is a gate — if no live route out exists, nothing can propagate however severe the event, so the score is 0 outright rather than a small positive number. And containment subtracts: a damper already acting reduces how far a shock travels, so it enters as 1 − containment.
- channel
- Do live routes out exist right now — operational dependency, common financial exposure, physical or geographic contact, or confidence and belief? This one gates: 0 means genuinely self-contained.
- coupling
- How little slack there is. No buffer, no spare capacity, no substitute, no time to react — a shock moves rather than being absorbed.
- breach
- Whether something that was holding has just given way: a first, a threshold crossed, a previously observed restraint broken.
- primed
- Whether the receiving system was already stressed before this happened — an existing crisis, a deadline, a market open.
- containment
- Whether credible dampers are ALREADY acting: a mediator, a backstop, a failover, service restored. This one subtracts.
From the INFRASTRUCTURE prompt, where these conditions are most directly observable. Note the anti-pattern the prompt states explicitly: absolute size alone is NOT breach — a large but routine, well-drilled outage scores low, because nothing that was holding gave way.
- In use by
- ERCS is the European Commission and EASA scheme for classifying aviation occurrences, binding since January 2023. The Rinaldi–Peerenboom–Kelly dependency model is applied to critical-infrastructure analysis by Argonne National Laboratory for DHS and CISA. The ESRB weighs pre-existing stress in its systemic-risk assessment.
- What we changed
- ERCS scores how far an aviation safety barrier was degraded, using incident data; we apply the same shape — barriers, degradation, dampers — to a news event using rubric anchors. The structure is borrowed; the calibration is ours and is NOT validated against downstream outcomes.
market_sensitivity
0–1How directly does this attach to something actually traded?
An unsigned materiality signal — not a predicted price move and not a direction. Judge whether a traded claim exists in the world, not whether the article mentions markets.
claim_exposure gates. If nothing traded is exposed there is nothing to be sensitive, so the score is 0. A specialist can express almost any view through proxies, contracts or private markets — so “could someone trade it?” is true everywhere and discriminates nothing. The rung asks how directly this attaches to a claim that actually exists.
- claim_exposure
- How directly a traded claim is involved, on six rungs: 0 nothing exposed · 0.10 generic only, where the country merely has traded debt or a currency (most local crime, protest and domestic politics belongs here) · 0.35 a named sector or commodity complex through a stated mechanism · 0.60 a specific claim identifiable but not the point of the event · 0.80 that claim is the subject, acted on first-order · 1.00 the event sets the terms of the claim itself. A traded claim is broader than a listed share: sovereign debt, exchange-traded commodities, credit and contractual claims, an asset freeze, an insurance exposure, or a major private company with real secondary or private-credit exposure all count.
- economic_bite
- Whether something has ALREADY acted on that claim's economics, on six rungs: 0 pure speech or symbolism · 0.20 a procedural step with no operative effect yet · 0.40 a real but bounded effect · 0.60 a binding in-force effect · 0.80 a large in-force effect on core economics · 1.00 the claim's basic economics or legal status changes. Score what has happened — do not forecast, and do not reason about what was priced in.
- In use by
- The reasonable-investor test governs US securities disclosure and is applied by the SEC, including in the 2023 cyber-incident rule; MAR Art. 7(4) and ESMA guidance apply the equivalent test across the EU; ASX Listing Rule 3.1 and IFRS S1/S2 use materiality the same way.
- What we changed
- Those regimes ask a binary — must this be disclosed? We need a graded score, so the two limbs are scored on rungs and averaged. Lafonta is why the score is UNSIGNED: information can be precise without indicating which way a price will move. An earlier version multiplied by a surprise term; it was retired because how much was already priced in is a market-state question a coder cannot answer from an article.
This is the metric working, not failing. The blackout is severe — magnitude 7, systemic 0.85 — but almost nothing traded attaches to it. market_sensitivity measures ATTACHMENT to a traded claim, not how bad an event is.
How the four combine
They mostly don’t. The four are reported separately and are not averaged into an index, because they answer different questions — the Havana blackout is 0.85 systemic and 0.45 market, and collapsing that into one number would destroy the only interesting thing about it.
One number does combine them: significance, the default sort on /api/v2/events. It blends the four with Goldstein intensity, fatalities, civilian targeting, article evidence and confidence, then divides by the highest total that event’s own family can reach — which is what makes a Conflict event and a CAMEO+ event comparable despite drawing on different terms.
The four contribute the CAMEO+ terms. An unmeasured magnitude drops its term and its weight, which re-weights everything else — the measured effect on significance is up to ±0.22 in either direction, so it is not neutral.
What these numbers are not
Nobody measured Anthropic's systemic importance with an instrument. A language model read the coverage, answered a fixed set of questions against a published rubric, and a fixed formula turned those answers into a number. That is more auditable than a score with no stated method — you can read every input and disagree with a specific one — but it is still judgement.
propagation_potential is not a probability that something will spread, and market_sensitivity is not a forecast price move or a direction. Both score conditions present in the event as reported.
We adapt the shape of established methods, which is what makes these scores legible to an analyst who already knows them. None of the institutions named on this page endorses, reviews, or is affiliated with this work.
Across 42,099 events, 2.2% touch a node we can match to a hard registry and 1.5% attach to an identifiable traded instrument. Treat all four as ordinal ranking signals — good for sorting and triage, not for asserting one event is 1.4× another.
The error on each scale
We coded the same 59 events three times and measured how far each score moved when nothing changed. The grey band is that noise. Do not read a difference smaller than the band — it is indistinguishable from the instrument talking to itself.
Bars show the corpus mean; the band is twice the measured run-to-run standard deviation. Magnitude is the least stable — the verbal path and the ~8% of events that switch path between runs account for roughly half of that, and hazard is by far the steadiest.
One thing this does not tell you. Three runs agreeing proves the instrument is consistent, not that it is right — a scorer that was reliably wrong would look identical. Establishing correctness needs a rubric-blind gold set graded by domain experts, which we have not built. propagation_potential in particular has no outcome validation: we do not currently measure whether high-scoring events are followed by more downstream events than low-scoring ones.
When this took effect, and what happens to older events
- contract version
- v2-2026-07-24
- in effect from
- 28 July 2026. Events coded from that date use these formulas and record the sub-factor evidence.
- older events
- Events coded earlier carry the previous scores and no recorded evidence. They are not wrong, but they sit on a different scale — use the presence of metrics.metric_inputs as the boundary marker.
- backfill
- Planned, not yet run. We intend to re-code the back catalogue onto v2 so the whole corpus sits on one scale, and to record the sub-factor evidence for those events too.