Method & caveats
N−1 stress = 1/(1−f), where f is the leader’s share of world exports: the factor by which every other exporter must scale to cover the same demand. Concentration is the export HHI before, and after the leader is removed and survivors are renormalised (the runner-up’s new share). Coverage@κ assumes each surviving exporter can scale its exports up to κ× current; spare = (κ−1)×current, coverage = min(1, Σspare / freed). Reshuffle & friction: entropic optimal transport (Sinkhorn) reallocates the leader’s freed demand onto survivors at minimum great-circle cost between country centroids; friction = mean distance the reshuffled supply travels ÷ the leader’s original mean shipping distance (>1 = spare sits farther away).
Caveats. This is export-based by construction — it models the loss of what the leader ships, which is the correct frame for reallocation (a domestic-consuming refiner’s output was never available to importers), but it means the leader’s share here is an export share, not a production share. The κ scale-up ceiling is an explicit assumption, not a forecast — read coverage as “how much slack exists at ceiling κ,” not a prediction; where USGS publishes real forward capacity we ground it in the data (see “Under real capacity plans” below), and it shows the abstract κ flatters the real plans. Distance is a crude friction proxy (centroid great-circle, not shipping cost or capability). Shared HS codes (gallium/germanium 811292) mix metals, so those rows are a basket. This is a stress test of today’s trade structure, not the post-diversification world the Break the chokepoint page tracks. Built by build_ot.py on CEPII BACI. See also the leverage map (how exposed is each importing country), shock scenarios, the supply-shock cascade, and the decision layer.
Under real capacity plans, not just an assumption
The coverage above rests on an explicit assumption — that survivors could scale to κ× current output. For the 8 commodities where the USGS World Minerals Outlook publishes actual forward capacity (to 2029), we ground it in the real number, on a consistent production basis: the dominant producer’s share of world capacity, and the capacity actually projected to be built. The “real coverage” column is a generous upper bound — it assumes every projected new tonne of capacity is spare, exportable and outside the cut country, ignoring baseline demand growth — so the true figure is lower still. Even so, two failure modes fall out, and only lithium escapes both.
| Material (dominant producer) | USGS capacity growth to 2029 | Real coverage of a producer cut | If everyone else doubled |
|---|---|---|---|
| Magnesium (China 89%) | -3% ▼ | 0% | 13% |
| Platinum (South Africa 72%) | +0% | 0% | 39% |
| Palladium (South Africa 41%) | +1% | 2% | 100% |
| Gallium (China 87%) | +12% | 14% | 14% |
| Cobalt (DR Congo 75%) | +27% | 36% | 33% |
| Helium (United States 55%) | +23% | 42% | 80% |
| Titanium (China 66%) | +34% | 52% | 52% |
| Lithium (Australia 41%) | +111% | 100% | 100% |
Two ways a cut stays uncovered. (1) Concentration too high: gallium (87%), magnesium (89%) and cobalt (75%) are so dominated that even if everyone else doubled it would barely dent the gap (14–33%) — and reality (12–27% growth) matches. (2) The capacity isn’t being built: palladium and platinum have leaders under 75%, so doubling would cover a cut (39–100%) — but USGS projects their capacity flat or shrinking, so real coverage is 0–2%. Only lithium (+111% capacity) genuinely escapes. True per-country ceilings don’t exist in public data for the rest, so the κ sweep stays for them — but where USGS data does exist, real plans are far bleaker than any “survivors could scale” hope. real coverage = min(1, capacity-growth ÷ producer-share); reproducible: build_ot_capacity.py.