Scope
The country commodity-vulnerability score answers a narrow question: how exposed is one country to a supply interruption for one reviewed commodity? It is not a price forecast, a shortage prediction, or a measure of domestic demand. Methodology version:supply-vulnerability-v2.0.0.
Each record includes its score components, source evidence, coverage state, freshness state, reasons, and methodology version. A missing measurement stays missing. The scorer never changes a missing value to zero.
Score
The score is an absolute 0–100 scale. The components are normalized to 0–1:C: source concentration. This combines import-partner HHI with global mine and refining HHI.T: maritime transit exposure. This combines all observed chokepoint shares without double-counting overlapping shares.B: buffer vulnerability. A larger value means less available cover.
C × T term makes concentration and transit risk compound. It does not let transit exposure alone outrank complete single-source concentration. When buffer data is unknown, the scorer removes the buffer weight and normalizes the other weights. Unknown is therefore neutral, not zero.
Source concentration
Import HHI is the sum of squared partner shares. A residual share bucket covers import value outside the returned top suppliers. The mineral-production source publishes standard HHI values on a 0–10,000 scale; the scorer divides those values by 10,000 before combining them with unit-scale import HHI. When mine and refining HHI are both available:Transit exposure and disruption sensitivity
For chokepoint sharest1...tn:
1.35, capped at 1.0, before the union is calculated. Clearing the disruption restores the baseline score. The model uses the existing HS2 country-chokepoint exposure index and the current PortWatch/EIA flow-status record.
A missing flow status is treated in one of two ways, depending on whether the route has a status source at all.
unknown— covered route, status row temporarily absent. For a route with positive transit share, the country-commodity score is null withstate: insufficient_dataandmissing_transit_statusuntil the evidence returns. This applies only to routes the flow-status source publishes.uncovered— no flow-status source exists for the route. The exposure index tracks more chokepoints than the PortWatch/EIA flow record covers. Waiting for evidence that is never published would null every score on those corridors, so an uncovered route contributes its transit share at the baseline multiplier and the record carries atransit_status_uncoveredcoverage label. The score is real; the absence of live disruption data for that route is disclosed rather than hidden.
disrupted: its share is always counted at baseline. Zero-share routes remain visible for reconciliation, but their missing or stale flow status does not affect score eligibility or freshness.
Buffers
Known buffers are converted to vulnerability as follows:
An SPR policy with capacity but no consumption denominator is evidence, but it is not a numeric buffer. The record remains
buffer_unknown.
Bands and data states
The band is absolute. It is not a percentile rank.
Freshness budgets are 45 days for bilateral trade, 2 days for chokepoint exposure, 400 days for mineral production, 3 days for flow status and gas storage, 120 days for food stocks, 90 days for fuel stocks, and 400 days for reviewed SPR policy. A stale input does not become fresh because the derived job ran.
Reviewed commodity mappings
The versioned registry uses UN Comtrade HS 2022 (H6) headings. The HS2 column selects the existing transit-exposure sector. The JSON registry is the executable source of truth and carries a rationale, caveat, and source URL for every row.
Provenance
Each score component includes the source key, source name, source URL, value, source year when available, fetch time, stale flag, and a short detail. The source families are:- UN Comtrade bilateral HS4 imports and the HS 2022 reference
- USGS Mineral Commodity Summaries and reviewed BGS-backed mineral stages in the existing mineral-production dataset
- World Bank PortWatch and existing EIA baselines for chokepoint status
- USDA FAS PSD food stocks
- GIE AGSI+ gas storage
- IEA fuel stock cover and oil security policy
insufficient_data, and redistribution_blocked is included in its reasons. This policy never changes an unavailable value to zero.
Publication and freshness
The Railwayseed-bundle-static-ref-heavy service starts daily at 04:00 UTC and runs the Supply-Vulnerability section after its mirrored inputs. The section reads upstream Redis envelopes, computes one in-memory snapshot, and projects both indexes in the same run. The canonical keys are compact manifests:
supply-chain:vulnerability:v1: country identifiers plus the bounded global ranking indexsupply-chain:chokepoint-dependencies:v1: chokepoint identifiers
no-store; a browser cache cannot reuse dashboard evidence for a later API-key response at the same URL.
The public RPCs are GetCountryVulnerabilities, GetChokepointDependencies, and ListVulnerabilityRankings. The MCP tools are get_supply_vulnerabilities and get_chokepoint_dependencies.
Reproducible hand checks
These are synthetic, fixed inputs. They verify expected direction and arithmetic; they are not claims about current live country conditions.
The automated hand-check test calculates these values through the production scorer. Other tests prove component monotonicity, unknown-buffer neutrality, disruption restore behavior, absolute band boundaries, and country/inverse-index reconciliation.
Changelog
supply-vulnerability-v2.0.0— First published country commodity-vulnerability method. Adds refining-dominant production HHI, concentration-transit compounding, neutral unknown buffers, disruption sensitivity, explicit coverage and freshness states, and a single-pass chokepoint inverse index.
