HI
Hormuz Index

Statistical Methodology — Hormuz Index

Technical document for academic and peer review

Version 1.1 — March 2026

0. Abstract

Hormuz Index is a geopolitical early warning system that monitors the Iran-USA-Israel crisis through automated analysis of information flows from 30+ public sources. The system produces 7 composite risk indices (0-100) and 5 scenario probabilities (summing to 100%), with 90% uncertainty bands.

This document describes in detail every mathematical and statistical component of the model, the academic references on which it is based, and its known limitations. The model is experimental and indicative, not predictive. The probabilities represent relative plausibility conditioned on the data and the assumptions of the model.

1. Data Pipeline and Event Construction

The system collects news from heterogeneous sources, normalises, deduplicates, and classifies them.

1.1 Sources and Reliability

Each source has a fixed reliability score (source_reliability, 0-1). The grading system is inspired by the NATO Admiralty Code (STANAG 2511 / AJP-2.1), which uses letters A-F for source reliability and numbers 1-6 for information credibility. The conversion to a 0-1 numerical scale is the authors' own adaptation, not a standard NATO procedure. The mapping is: A=0.95, B=0.85, C=0.75, D=0.65, E=0.50, F=not used.

TierSourcesScore
Tier 1 — Wire agenciesReuters, AP, AFP0.92 - 0.97
Tier 2 — International outletsBBC, Al Jazeera, Guardian, Haaretz0.85 - 0.90
Tier 3 — AggregatorsGDELT, NewsData, GNews0.70 - 0.85
Tier 4 — Think tanksCarnegie, Brookings, IISS0.80 - 0.88
ExcludedSocial media, anonymous sourcesNot ingested

Reference: NATO STANAG 2511 / AJP-2.1, "Evaluation of intelligence sources and information", Rating A-F for source reliability.

1.2 Deduplication

Articles are grouped by textual similarity using RapidFuzz (normalised Levenshtein algorithm) with a similarity threshold of 88%. This produces clusters of articles about the same event. Only the representative event of each cluster is ingested.

similarity(a, b) = 1 - levenshtein_distance(a, b) / max(len(a), len(b))
cluster if similarity ≥ 0.88

1.3 Event Classification

Each event is classified into one of 17 categories via regex pattern matching against the text (title + summary). The classification assigns:

  • category: event type (e.g. military_strike, enrichment_signal)
  • signal_keys: which indices it feeds (e.g. GAI, BSI)
  • base_severity: baseline severity of the category (0-1)
  • confidence: number of matched patterns / total patterns for the rule

The classification is rule-based (not LLM) for reproducibility and transparency. Each category has a geographic relevance filter: events unrelated to the Iran/Gulf/Middle East area are excluded for categories that require it.

2. Event Impact

Each classified event produces a composite impact score:

impacti = source_reliabilityi × confidencei × severityi × noveltyi
FactorRangeMeaningCalibration source
source_reliability0-1Source credibility (fixed per source)Authors' adaptation from NATO Admiralty Code (STANAG 2511)
confidence0-1Classifier confidenceProportion of matched patterns
severity0-1Baseline severity of the event categoryGoldstein scale (1992), adapted
novelty0-1How novel the event is (deduplication factor)Cluster/duplicate ratio

Severity reference: Goldstein, J.S. (1992). "A Conflict-Cooperation Scale for WEIS International Events Data." Journal of Conflict Resolution, 36(2), 369-385. The original scale ranges from -10 (maximum conflict) to +10 (maximum cooperation). The system uses only the conflict dimension (negative values of the scale), normalised to (0, 1). Cooperative events (positive in the original scale) are not captured by the severity factor — the cooperative component is handled separately by the DCI (Diplomatic Channels Index). This design choice produces an intentional asymmetry: the model is more sensitive to conflict signals.

3. Subindex Computation

Each index aggregates classified event signals via impact-weighted averaging. This is the standard approach for composite index construction (OECD/JRC Handbook on Constructing Composite Indicators, 2008, Ch. 4 "Weighting").

subindexk = Σi (impacti × signal_valuei,k) / Σi impacti

Where signal_valuei,k is the value of signal k in event i (e.g. BSI=95 for an enrichment event). If no event carries signal k, the subindex equals 0.

Reference: OECD/JRC (2008). Handbook on Constructing Composite Indicators: Methodology and User Guide.Paris: OECD Publishing. Section 4.2: "Weights based on statistical methods."

4. Rolling Window

Each final index is a weighted combination of three discrete time windows. This is a heuristic design choice, not a formal derivation from a specific statistical model:

Indext = 0.50 × score24h + 0.30 × score7d + 0.20 × score30d
WindowWeightRationale
Last 24 hours0.50 (50%)Maximum responsiveness to recent signals
Last 7 days0.30 (30%)Short-term trend
Last 30 days0.20 (20%)Baseline and historical context

Rationale: The 50/30/20 weights give decreasing priority to more recent observations, consistent with the pace of geopolitical crisis evolution. This is a 3-bucket discretisation, not a formal EWMA (Exponentially Weighted Moving Average) on a continuous series. The analogy with exponential decay schemes is pedagogical, not mathematical: a classical EWMA has the formula St = α × Xt + (1-α) × St-1with half-life = ln(2)/ln(1/(1-α)), which is not directly comparable to 3 discrete windows with fixed weights.

5. Nuclear Opacity Index (NOI) — 6-Component Composite Index

The NOI measures the degree to which the Iranian nuclear programme is opaque to international verification. It is a composite index with 6 weighted sub-components, inspired by the structure of the NTI Nuclear Security Index (Nuclear Threat Initiative, 2020-2024). The weight allocation (A+B = 50%, C+D+E+F = 50%) reflects expert judgement (expert elicitation) that physical verification (site access + material knowledge) is the most critical dimension of nuclear opacity. This choice is not derived from a specific NTI formula but from the authors' assessment of IAEA safeguards priorities.

NOI = 0.25×A + 0.25×B + 0.20×C + 0.10×D + 0.10×E + 0.10×F
Comp.NameWeightWhat it measuresNTI Ref.
ASite Access Loss25%Loss of IAEA physical access to declared sitesSecurity & Control Measures
BMaterial Knowledge Loss25%Loss of knowledge on quantity/location of materialsQuantities and Sites
CEnrichment Verification Gap20%Gap in verification of enrichment levelsIAEA Safeguards Reports
DUnderground Activity Signal10%Activity at underground/bunkerised sites (Fordow)IAEA reports on Fordow
ETechnical Diplomatic Breakdown10%Breakdown of technical cooperation with the IAEANTI Global Norms
FConflicting Narratives10%Conflicting narratives about the programme statusIntelligence analysis metric

5.1 Hard Rules (Threshold Effects)

The NOI includes non-linear rules to capture historically documented threshold effects:

RuleConditionEffectHistorical precedent
HR-1A >= 75 AND B >= 90NOI = max(NOI, 80)North Korea pre-test 2006: total loss of access + materials
HR-2C >= 75 AND D >= 50NOI += 5Iran 2012: enrichment gap + Fordow activity = compound risk
HR-3E >= 80 AND F >= 70NOI += 3Iraq 2002: diplomatic breakdown + conflicting narratives = uncertainty

5.2 Interpretive Thresholds

Aligned with IAEA Safeguards conclusion categories:

RangeLevelEquivalent IAEA meaning
0-24GreenBroader Conclusion: all material is accounted for
25-49YellowPartial verification gaps
50-69OrangeSignificant verification gaps
70-84RedUnable to verify the peaceful nature
85-100Dark redNear-total opacity

References: NTI Nuclear Security Index (ntiindex.org); IAEA Safeguards Implementation Reports (GOV/ series); Albright, D. & Burkhard, S. (2021). "Iran's Nuclear Program: Status and Uncertainties." Institute for Science and International Security.

6. Scenario Model — Weighted Additive Scoring Model

The model produces 5 mutually exclusive probabilities (summing to 100%) representing the relative plausibility of each scenario conditioned on the current index values.

6.1 Baseline Scores (Literature-Informed Initial Values)

Each scenario starts from a baseline score informed by the literature. They are initial values of an additive linear model, calibrated on historical base rates to give the model a reasonable starting point.

ScenarioBaselineCalibration source
Contained Conflict50.0ICG CrisisWatch 2003-2024: ~70% of monitored crises remain contained. Reduced to 50 by subjective author choice: the positive weights from risk indices shift the distribution towards escalation scenarios, so the "contained" baseline must start lower to compensate. This reduction is NOT a formally documented procedure.
Regional War25.0ICG: regional spillover in ~20-30% of serious crises historically.
Nuclear Threshold15.0Crises with a nuclear dimension: very few cases post-1945 (Cuba 1962, Kargil 1999).
Nuclear Coercion7.0Coercive nuclear signalling: ~5-7 cases since 1945 (Berlin 1948, Korea 1953, Taiwan 1954/58, Cuba 1962, Kargil 1999).
Actual Nuclear Use2.0Zero cases since 1945. Global Challenges Foundation 2020 expert surveys: annualised probability 0.3-1.5%. Metaculus community forecast.

References: International Crisis Group, CrisisWatch Database (2003-2024); Global Challenges Foundation (2020), "Global Catastrophic Risks 2020"; Metaculus, "At least 1 nuclear detonation in war by 2050" community forecast.

6.2 Weight Matrix

The weight matrix encodes the causal pathways from each index to each scenario. The design is inspired by the GCRI (Global Conflict Risk Index) framework of the European Commission's Joint Research Centre (2014), but with an important structural difference: the GCRI derives its weights empirically via logistic regression on historical conflict data, whereas our weights are assigned manually through causal reasoning and expert judgement. There is no sufficiently large historical dataset of "Iran-Gulf crises with known outcomes" to perform regression. The weights reflect the causal logic of the literature, not a statistical calibration.

IndexContainedRegionalThresholdCoercionActual UseRationale
NOI-0.15+0.06+0.25+0.150.00Iranian nuclear opacity: drives 'threshold' (approach to capability). ZERO weight on 'actual use' because Iran does not possess nuclear weapons.
GAI-0.12+0.30+0.04+0.03+0.01Conventional attacks: primary driver of regional war. Does not directly cause nuclear escalation.
HDI-0.10+0.25+0.06+0.04+0.02Hormuz disruption: amplifies regional war. Limited indirect effect on nuclear scenarios.
PAI-0.08+0.20+0.03+0.02+0.01Proxy forces: feed regional war but do not directly cause nuclear escalation.
SRI-0.08+0.08+0.15+0.25+0.10Strategic rhetoric: primary driver of 'coercion' (nuclear threats from armed states). Strongest driver of 'actual use' — rhetoric precedes action.
BSI-0.12+0.04+0.30+0.22+0.08Breakout/nuclear posture: primary driver of 'threshold'. Second driver of 'actual use' — active nuclear posture from USA/Israel.
DCI+0.25-0.15-0.20-0.18-0.12Diplomacy: sole positive driver of 'contained'. Restrains all escalation scenarios.

Matrix design principles:

  1. GAI and HDI are the primary drivers of conventional regional war (+0.30, +0.25).
  2. NOI tracks the opacity of the Iranian programme. Since Iran does NOT possess nuclear weapons, NOI drives only "threshold" (approach to capability). NOI has ZERO weight on "actual use".
  3. BSI tracks both the Iranian path towards a device AND nuclear posture signals from already-armed states (USA, Israel). BSI drives "threshold" (+0.30) and is the second driver of "actual use" (+0.08).
  4. SRI captures escalatory rhetoric from states possessing nuclear weapons. It is the strongest driver of "actual use" (+0.10) because rhetoric precedes action.
  5. DCI (diplomacy) is the sole restraining force. It is the only index with a positive weight on "contained" (+0.25) and a negative weight on all other scenarios.
  6. Actual nuclear use can originate ONLY from the USA/Israel (which possess nuclear weapons) or from a Russia/China transfer to Iran (monitored but extremely unlikely).

Reference: EU Joint Research Centre (2014). "Global Conflict Risk Index (GCRI): A quantitative model — Concept and methodology." JRC Technical Reports. The GCRI uses logistic regression on historical data to derive weights empirically. Our weights are NOT derived in the same manner — they are assigned manually through causal analysis of the Iran-Gulf theatre. The GCRI is cited as conceptual inspiration for the index-to-scenario matrix approach, not as a replicated methodology.

6.3 Raw Score Computation

For each scenario s:

scores = baselines + Σk (Wk,s × Indexk)

Where baselines is the baseline score of scenario s (Section 6.1), Wk,s is the weight of index k on scenario s (Section 6.2), and Indexk is the current index value (0-100). This is an additive linear aggregation, not a Bayesian update.

6.4 Trigger Rules (Non-Linear Effects)

The weight matrix is linear and does not capture the non-linear dynamics of escalation. Trigger rules add additive boosts or multiplicative factors when multiple indices simultaneously exceed critical thresholds.

RuleConditionEffectRationale
TR-1NOI >= 75 AND BSI >= 65threshold += 5Nuclear opacity + breakout signals = nuclear threshold crisis more likely
TR-2SRI >= 75 AND BSI >= 70coercive += 4Extreme rhetoric from armed states + active posture = nuclear coercion
TR-3SRI >= 85 AND BSI >= 80 AND GAI >= 80actual += 3Extreme convergence: rhetoric + posture + intense conventional conflict. Only path to actual use.
TR-4DCI >= 65regional, threshold, coercive, actual x 0.90Active diplomacy reduces all escalatory scenarios by 10%

6.5 Normalisation

Raw scores are clamped to ≥ 0 and normalised to sum to 100:

scores = max(0, scores)

P(s) = scores / Σj scorej × 100

The resulting probabilities are relative plausibilities, not calibrated probabilities in the Brier score sense. They represent the distribution of plausibility across scenarios given the current state of the indices.

7. Confidence Intervals — Monte Carlo Bootstrap

7.1 Monte Carlo for Scenarios

To quantify the uncertainty of scenario probabilities, the model runs a Monte Carlo simulation with N=500 iterations, following the global sensitivity analysis framework of Saltelli et al. (2004).

At each iteration:

  1. Index perturbation: each index value is multiplied by a uniform random factor U(0.85, 1.15), i.e. ±15%, then clamped to [0, 100].
  2. Weight perturbation: each weight in the matrix is multiplied by a normal random factor N(1.0, 0.20), clipped to [0.6, 1.4], i.e. ±20% with max ±40%.
  3. Probabilities are recomputed with the perturbed values.
Indexk' = clamp(Indexk × U(0.85, 1.15), 0, 100)
Wk,s' = Wk,s × clip(N(1.0, 0.20), 0.6, 1.4)

CI90% = [percentile5, percentile95] over 500 iterations

The seed is fixed (seed=42) for reproducibility within the same snapshot. The simultaneous perturbation of model inputs and parameters follows the principle of "global sensitivity analysis" — superior to one-at-a-time (OAT) perturbation because it captures parameter interactions.

Reference: Saltelli, A., Tarantola, S., Campolongo, F. & Ratto, M. (2004). Sensitivity Analysis in Practice: A Guide to Assessing Scientific Models. Wiley. Ch. 2: "Why should one perform sensitivity analysis?" and Ch. 5: "Global sensitivity analysis."

7.2 Bootstrap for Indices

Individual indices have uncertainty bands computed via non-parametric bootstrap (Efron & Tibshirani, 1993). Over N=200 iterations, events in the 24h window are resampled with replacement and the subindex is recomputed.

For each iteration b = 1, ..., 200:
  eventsb = sample with replacement from events24h
  subindexb = compute_subindex(eventsb, signal_key)

CI90% = [subindex(10), subindex(190)]
(5th and 95th percentile: position 0.05×200=10 and 0.95×200=190)

For indices with fewer than 5 events, the CI is analytically widened (±40% of the value or ±10 points, whichever is greater) to reflect the high uncertainty from a small sample.

Reference: Efron, B. & Tibshirani, R. (1993). An Introduction to the Bootstrap. Chapman & Hall/CRC. Ch. 13: "Bootstrap confidence intervals."

8. Nuclear Asymmetry — Iran Does Not Possess Nuclear Weapons

A critical aspect of the model is the correct modelling of nuclear asymmetry in this crisis. Iran does not possess nuclear weapons and its programme is far from producing any. The only nuclear-armed powers in the theatre are the USA and Israel.

This is reflected in the model in three ways:

  1. NOI has ZERO weight on "Actual Nuclear Use": opacity of the Iranian programme cannot cause nuclear use because Iran has no weapons to use.
  2. SRI is the primary driver of "Actual Use" (+0.10): it captures nuclear rhetoric from the USA/Israel — the only actors that can actually use nuclear weapons.
  3. Category "nuclear_transfer_signal": the classifier monitors signals of nuclear transfer from Russia/China to Iran (the only path through which Iran could obtain a nuclear device in the short term). Severity 0.98 — the highest in the system.

Sources on Iranian nuclear capability: IAEA Director General Reports (GOV/2024 series); Albright, D. (2024), ISIS Reports; Bulletin of the Atomic Scientists; U.S. Intelligence Community Annual Threat Assessment 2024-2025.

9. Historical Calibration (v2.0)

Starting with version 2.0, the scenario weight matrix and trigger thresholds have been calibrated on 20 historical anchor events (2019-2026) using Brier Score minimization with L2 regularization (lambda=0.05) and leave-one-out cross-validation.

Calibration results:

  • Brier Score: 0.106 → 0.002 (98.4% improvement)
  • Accuracy: 65% → 100% on historical events
  • Cross-validated Brier Score: 0.017

Key finding: DCI (diplomatic channels) is the strongest predictor of scenario transitions. The collapse of diplomacy (low DCI) is more predictive of regional war than any single conventional military index, confirming crisis management literature (Lebow 1981, George 1991).

Causal constraints enforced: the optimization respects sign constraints derived from domain knowledge (e.g., NOI → actual = 0 because Iran does not possess nuclear weapons; DCI → contained > 0 because diplomacy favors containment).

Calibrated trigger thresholds: NOI ≥ 60 AND BSI ≥ 55 → threshold +5 (previous: 75/65); SRI ≥ 65 AND BSI ≥ 60 → coercive +4 (previous: 75/70). Lower thresholds capture earlier nuclear crises (Natanz 2021, IAEA censure 2022).

Ground truth sources: ACLED Middle East, CENTCOM, IAEA Board of Governors, ICG CrisisWatch, GPR Index (Caldara-Iacoviello, Federal Reserve).

10. Known Limitations and Caveats

Limitation 1: Weights not empirically validated

The weight matrix follows the causal logic of the literature (GCRI, NTI) but has not been calibrated via back-testing on historical crises. There is no dataset of "past Iran-Gulf crises with known outcomes" sufficiently large for regression. The weights are theory-informed, not data-driven.

Limitation 2: Rule-based classifier

The classifier uses regex pattern matching, not advanced NLP. This ensures transparency and reproducibility but may produce false positives (irrelevant events classified as relevant) and false negatives (relevant events not captured).

Limitation 3: Source bias

The system ingests only public sources in English. This introduces bias: English-language media coverage over-represents the Western perspective and may under-represent internal Iranian developments or China/Russia positions.

Limitation 4: Uncalibrated probabilities

The probabilities produced are relative plausibilities, not calibrated forecasts. They have not passed calibration tests (Brier score, reliability diagram). A calibrated model would require historical resolution data that do not exist for events of this nature.

Limitation 5: Monte Carlo on the model, not on reality

The Monte Carlo uncertainty bands quantify model uncertainty (sensitivity to perturbations of inputs and weights), not real-world uncertainty. An unpredictable event (black swan) can breach any confidence band.

Limitation 6: Index independence

The indices are treated as independent in the weight matrix, but in reality they are correlated (e.g. a military attack GAI can trigger escalatory rhetoric SRI). The trigger rules partially capture these interactions but not completely.

Limitation 7: Data latency

The system updates indices at each Celery cycle (default: every 15 minutes for RSS, 30 min for APIs). Rapidly evolving events may not be captured in real time.

Limitation 8: No tactical/strategic distinction

The model treats "nuclear use" as a single category, without distinguishing between a low-yield tactical weapon (e.g. B61 mod 12 against an underground facility) and a large-scale strategic exchange. In the current crisis, any nuclear use would almost certainly be tactical — with radically different consequences and decision thresholds compared to strategic employment. This distinction cannot be captured from open sources.

Limitation 9: Nuclear rhetoric and deterrence

The SRI (Strategic Rhetoric) index is the primary driver of coercion and nuclear use scenarios, but cannot distinguish between instrumental deterrence rhetoric and genuine preparation signals. Historically, nuclear rhetoric has been consistently used as a deterrence tool without intention of actual use. The model may therefore overestimate the probability of nuclear scenarios during periods of intense rhetoric.

Limitation 10: Nuclear transfer (edge case)

The scenario of a nuclear device transfer from Russia or China to Iran is monitored via the nuclear_transfer_signal category (maximum severity 0.98). If detected, a dedicated trigger rule (TR-5) significantly boosts the plausibility of nuclear scenarios. However, the linear additive model does not fully capture the qualitative leap that such a transfer would entail: Iran would instantly shift from "does not possess nuclear weapons" to "de facto nuclear power", invalidating the asymmetry assumption (NOI weight = 0 on actual use) on which the model is built. This remains the worst-case scenario but also the least probable.

Limitation 11: Baseline calibration

Scenario prior probabilities (e.g. "Actual Nuclear Use" starts at ~1%) are derived from expert surveys and literature (0.3-1.5% annualized), but are not directly comparable with the output of an additive model normalized to 100%. During an acute crisis with all indices elevated, the model may produce "actual use" values that appear high in absolute terms (e.g. 5-8%) but are in fact artifacts of the sum-to-100% normalization across scenarios. Probabilities should always be read as relative plausibilities, never as absolute predictions.

Limitation 12: Arbitrary rolling window

The temporal window weights (50% last 24h, 30% last 7 days, 20% last 30 days) are a heuristic choice declared as such, not derived from a formal EWMA analysis. In a rapidly evolving crisis the 50% weight on 24h data may be too low; in a stalemate it may be too high. There is no quantitative reason why 50/30/20 is optimal compared to other distributions (e.g. 45/35/20 or 55/25/20).

Limitation 13: Cascade effects between indices

In reality, a military attack (GAI) simultaneously causes rhetorical escalation (SRI), Strait disruption (HDI) and proxy activation (PAI). The model treats these asstatistical coincidences, not causal cascade effects. Trigger rules (TR-1 to TR-5) partially capture these non-linear interactions, but the structural correlation between indices during an acute crisis remains unmodeled.

11. Interpretation Guide

Trends are more informative than absolute values. An index rising from 30 to 50 within 24 hours is a stronger signal than a stable index at 60.

Uncertainty bands are essential. A "Nuclear Threshold" probability of 25% with CI [15%-35%] is very different from 25% with CI [24%-26%]. Wide bands indicate high model sensitivity to small variations.

The dominant scenario is relative, not absolute. If "Regional War" is at 45%, it does not mean there is a 45% probability of war. It means that, among the model's 5 scenarios, regional war is the most plausible given the current information.

Always compare with expert analysis. This system is a complement, not a substitute, to human analysis. Primary sources (IAEA reports, official statements, ICG analysis) remain the gold standard.

12. References

  1. Albright, D. & Burkhard, S. (2021). "Iran's Nuclear Program: Status and Uncertainties." Institute for Science and International Security.
  2. Efron, B. & Tibshirani, R. (1993). An Introduction to the Bootstrap. Chapman & Hall/CRC.
  3. EU Joint Research Centre (2014). "Global Conflict Risk Index (GCRI): A quantitative model." JRC Technical Reports.
  4. Global Challenges Foundation (2020). "Expert Survey on Global Catastrophic Risks."
  5. Goldstein, J.S. (1992). "A Conflict-Cooperation Scale for WEIS International Events Data." Journal of Conflict Resolution, 36(2), 369-385.
  6. International Crisis Group. CrisisWatch Database (2003-2024). crisisgroup.org
  7. NATO. STANAG 2511 / AJP-2.1: Evaluation of Intelligence Sources and Information.
  8. NTI (Nuclear Threat Initiative). Nuclear Security Index (2020-2024). ntiindex.org
  9. OECD/JRC (2008). Handbook on Constructing Composite Indicators: Methodology and User Guide. Paris: OECD Publishing.
  10. Saltelli, A., Tarantola, S., Campolongo, F. & Ratto, M. (2004). Sensitivity Analysis in Practice. Wiley.
  11. IAEA. Safeguards Implementation Reports (GOV/ series, annual).
  12. Metaculus. "At least 1 nuclear detonation in war by 2050." Community forecast.
Hormuz Index — Methodological document v1.1 — March 2026
This document is an integral part of the system and is updated with each model revision.