Skip to content

Methodology

This page documents every index, model, data source and known limitation, with validation scores as they become available. It is regenerated with each data release. Each modelled section prints a status line from the data release (computed, measured, or not yet measured / not yet computed); everything else is live and labelled per block on the site.

How to read a chart on this site

Every chart, map and figure carries three short lines beside it: why this chart (the question it answers and why that form was chosen), how to read it (what each mark, colour and band is, and what an empty or grey mark means), and what it tells us. The last line carries its own kind label, because a description of what is drawn is a fact or a model output, while a judgement about it is an interpretation; a number appears in that line only when the chart itself computed it. Every headline chart also carries two or three findings, descriptive bullets in the chart's own layer (facts or model output) with the numbers it computed, set between the chart and the “what it tells us” line; the technical sections sit behind “Technical detail” folds or on the supplementary pages (the story appendix, the further claims). Pages open with a short guide saying what the page is for, how to use it and where to go next. The lines are written by the team and, where the text says so, AI-drafted; they never replace the source link and the reliability rating under each exhibit.

Three layers, kept apart

Everything on the site belongs to one of three layers and is labelled as such:

  • Fact Sourced data: trade flows, loans, deals, concessions, production, parliamentary records, article metadata. Each row carries its source, retrieval date, original language, reliability rating and confidence level.
  • Model output Model outputs: the influence index, concentration measures, stance and tone scores, narratives, say–do gap, anomaly flags, network metrics, forecasts. Each carries the method or model version and, where it exists, its validation status.
  • Interpretation Written analysis generated from named indicators by fixed templates (each sentence lists the indicators behind it), plus the project owner's own writing, shown apart and marked as such.

Source reliability ratings

RatingMeaning
OfficialGovernments, central banks, statistical offices, legislatures, multilateral organisations, exchanges and regulators.
Independent / academicUniversities, research centres, NGOs, independent press.
PartisanOutlets or organisations with a documented political alignment or advocacy mission. Used, but labelled.
State-controlled mediaState-owned outlets and government communication (Xinhua, People's Daily, Chinese embassies, Guyana Chronicle, Venezuelan ministries).
AnalysisThink-tank commentary. Context only, never ingested as data.

The full registry with URL, coverage years, update frequency, license and verification status is on the Sources page.

Missing and estimated data

Missing data is shown as missing (“no data” on the map, empty lists in the panel). Nothing is estimated silently. Where a value is derived (for example an implicit lithium price computed as export value divided by quantity), the method is stated next to it. Partner-reported (mirror) trade data is labelled as such; discrepancies between national, partner, Chinese and US customs figures are reported, not reconciled.

Political statements (the owner's dataset)

The Politics tab and the region page show a hand-supplied dataset of statements and acts about minerals in Latin America (395 records in the owner's first release of March 2019 to October 2026, plus 22 researched by an AI session in October 2026 for the five countries the release did not cover and for Chinese officials, labelled as such in the file): presidents, ministers, governors, legislators and legislative bodies, courts, state companies, US and Chinese officials, and others. It was collected by AI research agents with web search under a fixed codebook; every record carries the source URL actually consulted and a verification level (primary source seen, reported by media, unverified), from which the site derives the record's reliability rating (official, independent media, state media, analysis, partisan) and its confidence. Quotes are exact excerpts of at most 30 words, shown in the original language with an English rendering. The dataset's stance coding toward China and the United States (positive, neutral, mixed, negative, not mentioned) is interpretive and has not been validated by a second coder: the site labels it “coded under the dataset's codebook”, summarises it by year for a country's own actors as a mean of +1 / 0 / −1 with the number of statements behind it, and never feeds it into the influence index or the say–do gap. Mexico and Panama records lie outside the twenty countries and are not shown; region-wide records appear on the region page. Coverage is uneven and thin before 2022 (see Limitations).

Composite influence index (Phase 4)

Votes and ore. The page Votes and ore sets the two sub-indices against each other. For every country-year that has both, the net lean (China minus United States) of economic ties is plotted against that of political alignment; the correlation it quotes is Pearson's r over those country-years, computed in the browser from the published index; a lean within five points of zero counts as balanced on that axis when a country is placed in a corner; the “movers” compare the first year of the record with the selected year. The sub-indices are model outputs of the same method as the composite and inherit its normalisation and its coverage.

Step by step. Two pages under Step by step walk one real record through the computed layers: From words to geometry follows a title to its sentence-embedding vector, its nearest records by cosine similarity, the principal-component fold to two dimensions and the map of every embedded record; Data as geometry follows a country-year of this index through the normalisation (the bounds and the recomputed value shown against the published one), the composite as the equal-weight mean, distances to other country-years (root mean square over the components both rows have, at least three), the two sub-indices as axes, and a principal-component fold of the country-year-actor points that carry the four components both actors can have. Every number on those pages is recomputed in the browser from the exported rows; the pages change nothing in the index. A third page, A classifier, step by step, repeats the stance head of the text workflow (one layer of weights on the sentence embedding with the actor and mention flags, balanced class weights, an L2 penalty, four hundred full-batch steps of gradient descent) on an exported sample of records, with the forward pass, the loss, the gradient, the descent and the decision shown on a real record; until the validation sample is coded by hand the examples carry the zero-shot model's own labels, and the page says so.

Design. Since 14 October 2026 the site follows the team's prototype design: paper ground, quiet panels, 1px rules, Newsreader for display and IBM Plex for text and numbers, and the same three kind labels on every block (fact, model output, interpretation). The home is the prototype's overview and the story has its own page; the explore page carries the prototype's context bar (period, country, resource, partner, view, with a sentence that names what is shown and which layer it is) and its bivariate “who buys” map beside the index and the arcs.

The team's prototype. The Two powers, one stage page carries the team's own Strata prototype: its trade panel over 33 ECLAC states (CEPII BACI HS96 for 2001–2024, UN Comtrade monthly data for 2025–2026, by mineral, stage, basket and partner group, team R scripts), read with the prototype's own aggregation rule so its stated numbers reproduce, and its five acts, timeline, commitment ladder, pressure cases and hypothesis cards in its words. The prototype is also served untouched at /prototype. Its panel uses the team's HS list and scope, so its shares can differ from this site's reconciled series over twenty countries.

The companion project. The Denial without Substitution page carries the companion explainer (Investigating with AI, Sciences Po, 2026) from its own data files: thirty-one studies reduced to claims with page citations, dated events with sources, findings and mechanisms with their evidence, country verdicts, projects, coded governments, UN ideal points, mirror trade and a 2026 survey. The page selects, counts and labels; the verdicts and readings are that project's interpretation and nothing of it enters this site's indices.

Where the ore goes. The routes page reads the reconciled bilateral trade (CEPII BACI, one figure per exporter, importer, HS6 code and year) the other way round: a buyer's imports by origin, the region's exports by destination, and for each intermediary (the economies that take most of the region's tracked exports) its imports from the region and its exports to the buyer in the same codes. The one computed figure is the ceiling on the indirect route, the smaller of those two legs; it is an upper bound and never a trace, because no trade record links a shipment to another and processing changes the product code.

Who is winning, and what do we know. The story's closing chapter and the What do we know page compute one verdict per measure from the same region-wide series as the opening chapter (reported mineral exports to each actor, documented commitments by origin, inward direct-investment positions, UN voting agreement, the index's mean net lean), each in its latest year over the countries that carry a value, naming the larger figure and nothing more. The reading that follows, and the verdicts on the published works set against the record, are interpretation, drafted by an AI session and labelled as such until the owner reviews them.

A composite indicator per country, year and actor (and per mineral where the country trades it), built along the OECD/JRC Handbook on Constructing Composite Indicators. Six components measure observable ties to the actor: the share of the country's mineral exports going to it and of its mineral imports coming from it (UN Comtrade, reporter's own data), documented official-finance commitments from its institutions over the last three years relative to GDP (AidData for China, DFC for the United States; central-bank swap-line drawdowns excluded), public external debt owed to it relative to GDP (World Bank IDS, China only: no equivalent source exists for the United States), UN General Assembly voting agreement, and the mean legislative stance toward it from the text model (years with at least five scored records). No imputation: a missing input leaves the component unavailable with the reason recorded, the index is the equal-weighted mean of the components that exist, and it is not computed from fewer than three. Values are normalised by winsorised min–max over the whole panel with both actors on one scale, so a US value and a Chinese value are comparable; because US trade shares and finance are small next to China's, US values are low by construction, which is the finding, not an artefact. Uncertainty: weights are redrawn hundreds of times from a Dirichlet around equal weights and the normalisation switched to percentile ranks in half of the draws; the band on every value is the 5th–95th percentile of the results, and the rank stability of the country ranking is reported below. The index is a description of recorded ties, not a measure of intent.

Two sub-indices. The same components are also averaged in two halves, on the same 0–100 scale and for all minerals together: economic ties (export share, import share, finance over GDP, debt over GDP; at least two of the four) and political alignment (UN voting agreement and legislative stance, whichever is available). They are exported beside the composite, and the map, the region page and the Analysis tab switch between the three once a release carries them. The switch exists because the components do not move together: before the 2010s trade shares and finance are near zero for both actors, so the early composite is carried by UN voting agreement, which runs high for China in every country; the map and the ranking name the component that carries each country's lean (“carried by UN voting agreement (CN 85 vs US 34)”) so that a lean is read with its cause.

Method 2026.10.2. The status line below names the method version the release on screen was computed with; from 2026.10.2 on, three rules changed. The normalisation bounds of every component come from its all-minerals rows (one country × year × actor panel) and apply to the per-mineral rows too, so a country that trades many minerals weighs no more in the pool than one that trades one and a per-mineral composite shares the composite's scale. A composite is held back (null, with its components still listed) in a year where a component it rested on the year before is missing only because its source's release lags by at most two years, so a late release never changes the index's composition silently; a source that stopped years ago (AidData, 2021) is an ended series the index goes on without, as documented. The forecast's observed series ends at the last published composite, never at a held-back year. The US finance component names both of its sources, the DFC and EXIM.

Loading method summary…

Your own weights. The Drivers block of the Analysis tab lets a reader re-weight the six components for the selected year and see the resulting composite next to the published value. It is a what-if computed in the browser from the same normalised components (a weight of zero drops a component; at least three must remain); it is never stored, never replaces the published index and never feeds the ranking or the forecasts.

Concentration and dependence (Phase 4)

For every country, mineral and year with reported trade: the shares of exports going to the United States, to China and to the rest of the world, the same for imports, the two-power share, and a revealed comparative advantage index against the pooled twenty-country export basket (world totals are not in the warehouse). A Herfindahl–Hirschman index over all export destinations is not computed: the free Comtrade access used so far returns partner totals for the United States, China and the world only; it is stored as null with that reason, never estimated. A partner row absent from a reporter's Comtrade answer for a year it did report is read as no recorded flow and noted as such.

Money and trade flows on the map

The map's flow views draw one arc per country and actor from flows.json, a file the pipeline exports for all twenty countries. Money is the sum of documented finance commitments by country, origin and year from the de-duplicated finance events (the same records as the Actions tab); swap-line drawdowns and amounts from lower-confidence records are kept apart and never added, and a year with events but no published amount keeps an amount of zero with the count shown, so an absence is stated rather than drawn as nothing. Trade is reported exports to each actor (UN Comtrade, reporter's own data) for all minerals or one core mineral. The window is the selected year, the three years to it, or every year since 2000. Arc width follows the square root of the amount on a scale shared by every arc in the view; the faint end is the origin; the arcs run between country centroids and Washington or Beijing as schematic anchors, not along real routes. Hovering an arc, or opening the table in the panel, gives the amount, the counts and the sources behind it; a window beyond a source's last year (AidData ends in 2021) is flagged.

Text analysis (Phase 3)

Multilingual pipeline (Spanish, Portuguese, English, Dutch). The unit of analysis is the title of a legislative record plus its summary where the legislature publishes one, or a headline; no article text is stored. Documents are coded for stance toward the United States and toward China on a five-point scale (−2 to +2), scored only when the actor is named (otherwise the stance is “not applicable”, never zero), plus tone (−1 to +1) and topic, following the written codebook in pipeline/config/codebook.md.

Classification uses open-weight models on CPU only. Baseline: a multilingual natural-language-inference model (mDeBERTa-v3-base-xnli) scores three hypotheses per actor (favourable, critical, neutral mention); the winning hypothesis gives the sign and its probability the strength (≥0.75 → ±2, else ±1; below 0.5 the model has no clear reading and the stance is 0). Tone is the positive-minus-negative score of a multilingual sentiment model. Trained model: multilingual sentence embeddings (paraphrase-multilingual-MiniLM) with a logistic-regression head trained on the adjudicated sample inside the same workflow; it replaces the baseline on the site only if it beats it on the held-out split. Machine translations of titles (opus-mt) are labelled as such and the original is always shown. Narratives are clusters of headline embeddings (k-means) labelled by class-based TF-IDF keywords, with example documents. Media attention is the share of each year's coverage naming an actor.

Validation. A stratified random sample of 300 documents (country × document type × whether an actor is named) is coded by two coders: the project owner and an LLM coder inside development sessions, blind to each other and to the model, then adjudicated. Inter-coder agreement (Cohen's kappa, Krippendorff's alpha) and per-class precision, recall and F1 of the baseline and the trained model against the adjudicated labels are published below as soon as they exist. Until then every stance and tone value on the site is tagged “zero-shot baseline, not yet validated”.

Loading validation metrics…

Event studies and panels (Phase 4b)

Event studies. The dated events in pipeline/config/events.yaml (US critical-minerals orders and the IRA, Chinese export controls of 2023–2025, Chile's lithium strategy, Argentina's RIGI, Bolivia's 2019 crisis, Peru's Chancay port, the 2025 Section 232 copper tariff, among others; each dated, typed and sourced, and marked draft until the project owner has reviewed it) are tested two ways on annual export shares. The event window compares, for each country and actor, the mean share in the two years after the event with the two years before (the event year left out); the placebo p-value is the share of the same statistic computed at every other year of that country's series that is at least as large. For events touching some countries only, a difference-in-differences subtracts the mean change of the other countries, with a permutation placebo over country subsets of the same size (at least three controls). With twenty countries, annual data and policies that respond to the same world, these are associations; no causal language is used. Events of 2025 and later have no post-event years yet and are listed as pending.

Panel regressions. Four outcomes (a country's export share to China, to the United States, and the two import shares) on five standardised regressors: the actor's documented official-finance commitments over the previous three years relative to GDP, lagged one year; UN General Assembly voting agreement with the actor; electoral democracy (V-Dem); rule of law (WGI); mineral rents in GDP. Country effects absorb endowment and geography, year effects absorb world prices and demand; a country-effects-only variant is the robustness check. With 19 clusters over 2002–2021 (364 country-years) the inference is fragile, so every coefficient is shown with its cluster-robust standard error, a wild cluster bootstrap p-value and the range it takes when each country is dropped in turn. The table below is regenerated with each data release.

Say–do gap and flags (Phase 4)

Say–do gap: the legislature's mean stance toward an actor in a year (at least five scored records; a text-model output carried with the classifier's validation status) standardised within the actor, minus the standardised year-on-year change of the economic-ties sub-index (trade shares, finance, debt). Positive: words warmer than the flows; negative: flows outrun the words. Media stance joins once the headline record is long enough. Flags are rules on the sourced series, each with an evidence level: a share of exports to an actor moving 20 points or more in a year, or documented commitments of 1% of GDP or more in a year (documented: the movement is in official data); commitments of 0.5% of GDP or more not followed by any change in the mineral trade share within two years, or the debt stock owed to China rising 20% and US$100 million in a year with no commitment recorded (strongly indicated: two sourced series disagree); a say–do gap beyond two standard deviations (speculative: a model output is involved). Swap-line drawdowns are flagged as rescue lending and kept out of the finance component. Mirror-data discrepancies and third-country subsidiaries wait for partner-reported trade and ownership data. A flag is never presented as an established fact.

Networks (Phase 4)

The finance records give a lender–recipient graph: funding institutions (policy banks, central banks, ministries, agencies, companies) linked to the receiving agencies named in each record, weighted by the amounts committed. Degree, weighted degree, betweenness, eigenvector centrality (on the largest connected component) and greedy-modularity communities are computed on the twenty-country graph and shown per country. Events that name no recipient are left out and counted. Ownership chains through third-country subsidiaries are not in the graph yet: the contracts database carries no company names and cadastres exist for one country.

Forecasting (Phase 5)

Two targets per country and actor are forecast to 2030: the composite influence index and the share of mineral exports going to the actor. The series are annual and at most 26 points long (2000–2025), so only simple models are fitted and they are made to compete: naive persistence (last value, with uncertainty from bootstrapped yearly changes), a random walk with drift, the same drift partially pooled across countries by empirical-Bayes shrinkage (the hierarchical element), an AR(1) on yearly changes, and a damped local linear trend fitted by maximum likelihood with a Kalman filter (the state-space element). Each model produces simulated paths; on expanding-window backtests with origins 2007–2023 every model is scored at horizons of one to three years by the continuous ranked probability score (CRPS), the absolute error of the median and the coverage of its 80% and 95% bands, pooled over the countries. The model published for a target is the one with the lowest pooled CRPS if it beats naive persistence; otherwise persistence itself is published and labelled. Bands are the 5th–95th and 25th–75th percentiles of the simulated paths. Scenarios are Monte Carlo paths of the published model with an explicit, stated yearly shift (for example “the share to China grows 2 points a year faster”); they are what-ifs, not forecasts. A five-year horizon on at most 26 annual observations is a long reach: the bands are wide, coverage in the backtests is below nominal for the share forecasts, and the methodology table below is regenerated with every data release.

Loading backtest scores…

The Lab: contrasts, findings and scenarios

The Lab (/lab, once the Insights page) sets the layers against each other. The pipeline's export step computes one file, insights.json, from the tables the other pages already use (DECISIONS 59): for each country the latest reported trade year with every mineral, the share series, documented commitments by year, the latest index components with the published composite, the forecast paths of the three scenarios, and the “words” (the executives', US officials' and Chinese officials' coded statements by year, the legislature's zero-shot stance, press tone). From these it builds contrast indicators, each only where its inputs exist and each with the ids of the rows it rests on: executives' coded stance toward a power pooled over the latest three statement years (at least three positions) against the share of exports going there; the minerals named in statements against the minerals that earn the export value (mismatch = half the sum of the absolute gaps); a hedging balance (1 = equally warm to both powers, 0 = one-sided, from at least four positive positions); the legislature's stance (halved, from −2..+2) against the executives' in the same year; press tone against the executives' stance; the parity gap (half the difference between what China and the United States buy, at constant totals); the 2030 share under each published scenario; the exposure of the largest priced mineral; and US officials' statements about a country against DFC money. Region-wide: statements by bloc against commitments by origin (both finance sources cover every sector, the part the adapters tagged to a mineral is shown apart; the money ratio runs on 2015–2021 because AidData ends in 2021), event echoes (post-minus-pre changes of the export share grouped by the event's actor and type), the two-way fixed-effects regressions with the regressors' standard deviations, annual prices per mineral and US policy attention (documents per year). Scales differ and are never added: statements −1..+1 (the dataset's codebook, not validated), legislative stance −2..+2 (zero-shot, not validated), media tone −1..+1, the index 0–100.

Findings are template sentences that fire only when their inputs exist, each with its indicator ids, a evidence level and a “why it could be wrong” caveat: strong = facts layers with dozens of records or full series; moderate = facts plus one unvalidated coding with ten or more records, or panel associations; thin = fewer than ten records, a single year, press tone, zero-shot stance or draft events. A bold headline with a thin meter is a hypothesis, not a result.

The scenario studio is arithmetic on published numbers, done in the browser and never stored (DECISIONS 60). The pull slider blends the three published scenario paths linearly (the pipeline's scenarios are the baseline Monte Carlo paths plus a linear yearly shift, so an intermediate pull is exact except where a published path was clipped at 0 or 1); the shock adds the mean post-minus-pre change observed after an event family, with its middle half, to the blended share path from the chosen year (a historical echo, never a prediction; events still in draft are labelled so on the page); the redirect moves a share of a mineral's exports to China toward the United States or the rest of the world and recomputes the shares at constant totals; the finance lever sets each actor's yearly commitments at a multiple of its average (China over 2015–2021, the DFC over 2022–2024) and turns it into the index's finance component (three years over GDP); the price lever revalues the largest priced mineral's exports at constant volumes. The index what-if applies the published formula (equal weights over the available normalised components, at least three, winsorised min–max with the bounds the pipeline exports) to the reader's numbers; it may use components the published year lacks, and says how many it used next to the published value. The levers serialise into the URL so a scenario can be shared. Every block carries its layer label; the reading at the end is AI-drafted from the indicators and labelled so until the project owner reviews it (DECISIONS 61).

Written analysis (Phase 6)

The interpretation layer has two parts, kept apart on every page. Generated briefs: for each country (where it stands, trade, finance and debt, politics, dated events, outlook, what the data cannot say) and for the region (ranking, movers, trade pattern, finance pattern, statistical evidence, outlook, caveats), fixed templates turn the computed indicators into sentences. A template fires only when every indicator it cites exists; otherwise the brief says what is missing. Every sentence carries the ids of the indicators it rests on (table:field:actor:year, for example index_value:influence:CN:2024 or anomaly_flag:BRA-sudden_trade_shift-2009-CN), shown on click, and model outputs are named as such in the sentence. Trend words follow fixed thresholds: an index change under 2 points over five years, or a share change under 3 points, is “broadly flat”. The briefs are regenerated with every data release; a section whose text differs from the previous release is marked “updated”. No language model writes any of this text. Human-written interpretation: the project owner's own Markdown files under data/manual/interpretation/, with author, date and a reviewed flag, shown in their own box labelled as the owner's writing; the pipeline never writes or edits them, and where none exists the site says so.

Refresh schedule

LayerCadence
News and mediaWeekly (Wednesdays: RSS feeds, GDELT, Media Cloud)
Parliaments and gazettesMonthly (the 3rd)
Trade, finance, investmentMonthly (the 3rd), or when the source publishes
Production, reserves, governance indicesAnnual

“Real time” means scheduled refreshes, not a live feed. Each panel shows its last update and the sources behind it.

Glossary

The terms the ribbons and the evidence drawers link to, in the sense the pipeline uses them. Every entry names where it is used.

Documented commitment
A finance event whose source reports an amount it stands behind. Only documented amounts enter the index's finance component and the headline totals. Used in the ledger, the iceberg, the case files.
Lower-confidence amount
An amount the source itself marks as less certain (AidData's non-recommended records among them). Shown apart with a dotted fill, never added to the documented total. Used in the iceberg, the money arcs.
Swap drawdown
Money drawn on a central-bank currency swap line, recorded by AidData as rescue lending. Emergency liquidity, not finance for anything: shown hatched and kept out of the index. Used in the iceberg, chapter 8, the Argentine case file.
Event without amount
A finance event the source records without a dollar figure. Counted as an event, drawn as an outline, never valued. Used in the iceberg.
Event naming no recipient
A finance event whose record names no borrower or recipient institution. Counted, drawn as an outline, not attributed to any country's ledger. Used in the iceberg, the lender network.
Draft event
A dated policy event in the pipeline's event list that the project owner has not yet reviewed. Its measured windows are shown with the draft mark until then. Used in event studies, chapter 8, the Lab.
Reliability rating
The registry's rating of a source: official, independent or academic, partisan, state media, or analysis. Every number on the site carries its source's rating. Used in every exhibit.
Evidence level
Strong: facts layers with dozens of records or full series. Moderate: facts plus one unvalidated coding with ten or more records, or a panel association. Thin: fewer than ten records, a single year, press tone, zero-shot stance or draft events. Used in the chapter meters, the findings.
Coverage
Which tables hold rows for a country and for which years. Missing coverage is shown as missing, never as zero. Used in chapter 9, the status strip, the case files.
Partner row absent
A trade year where the reporter sent no row for a partner. The share cannot be computed and is printed as absent; the rest-of-world figure is not derived by reading the gap as zero. Used in trade receipts, the mineral board, the case files.
Export share
The share of a country's mineral exports, by value, going to a partner in a year, from the reporter's own UN Comtrade rows. Used in chapter 2, the map, the forecasts.
Composite influence index
A composite of up to six observable ties to an actor (export share and import share, finance over GDP, debt over GDP, UN voting agreement, legislative stance), equal weights over the components available, at least three, normalised by winsorised min–max over the country × year × actor panel (both actors on one scale). A description of recorded ties, not of intent; its two halves are the economic-ties and political-alignment sub-indices. Used in the map, the case files, chapter 8.
Economic ties (sub-index)
The composite's economic half: export share, import share, finance over GDP and debt over GDP, equal weights over those available, at least two, on the same 0–100 scale; computed for all minerals together. Used in the map's index switch, the region page, the Analysis tab.
Political alignment (sub-index)
The composite's political half: UN General Assembly voting agreement and legislative stance, whichever is available, on the same 0–100 scale; while legislative stance is absent it is UN voting alone. Used in the map's index switch, the region page, the Analysis tab.
Net lean
The China index minus the US index for a country and year, in points of the 0–100 scale, on one scale from −60 to +60 everywhere it is drawn (the map, the ranking, the heatmap and the line charts). The scale is clamped: the rare country-year beyond ±60 is drawn at the edge and printed in full in its tooltip and table. Before the 2010s trade and finance are near zero for both actors, so the early lean is mostly UN voting agreement; the economic-ties switch shows the ties alone. Used in the map, the ranking, the heatmap, the region page, Compare.
Winsorised
Values beyond the 2.5th and 97.5th percentiles of the panel are pulled to those bounds before min–max normalisation, so one extreme year cannot set the scale. Used in the index.
Dirichlet draws
The index's uncertainty band: weights redrawn hundreds of times from a Dirichlet distribution around equal weights, half the draws using percentile ranks instead of min–max; the band is the 5th–95th percentile of the results. Used in the index bands.
Revealed comparative advantage (RCA)
A country's share of a mineral in its exports divided by the world's share of that mineral in world exports; above 1 means the country specialises in it. Used in concentration.
CRPS
The continuous ranked probability score: how far a forecast's whole distribution sits from what happened, averaged over the backtests. Lower is better; a model is published only if its CRPS beats naive persistence. Used in the forecasts, chapter 7.
80% band coverage
The share of backtests in which the realised value fell inside the forecast's 80% band. Below 0.80 the band is too narrow and is said so on the chart. Used in the forecasts.
Placebo p-value
For an event window, the share of other years in the same series where the post-minus-pre change is at least as large; the smaller, the less ordinary the change. An association, not a cause. Used in event studies, chapter 4.
Wild-cluster p-value
A bootstrap p-value for a panel coefficient that resamples whole countries, so twenty clusters do not pretend to be hundreds of independent observations. Used in the panel regressions.
Difference in differences
The change after an event in the countries it touched minus the change in the countries it did not, with a permutation placebo over country subsets. Used in event studies.
Zero-shot stance
A stance label assigned by a multilingual text model that was not trained on this project's records. Carried as a baseline, labelled not validated until the hand-coded sample is adjudicated. Used in the legislative stance, the press tone.
Hedging balance
One when a country's executives speak equally warmly of both powers, zero when one-sided; computed from at least four positive positions. Used in chapter 5, the Lab.
Say–do gap
A flag raised when executives' coded stance toward a power and the share of exports going there point in opposite directions. Used in chapter 5, the flag registry.
Parity
Arithmetic at constant totals: half the difference between what China and the United States buy of a country's minerals is what would have to switch for the two to be equal. Redirected exports need buyers, smelters, ships and contracts the arithmetic ignores. Used in chapters 6, 7 and 8.
Implied volume
A reported export value divided by the year's average world price of the mineral, with the price series named; used to separate a price effect from a buyer effect. Used in the scenario studio in the Lab (price lever).
Record status
The state a source gives a finance event (committed, in implementation, completed, suspended, cancelled) where it records one; EXIM authorisations carry none. Used in the case files.

Known limitations

The full list is maintained in LIMITATIONS.md. Highlights:

  • Source statuses were first established by search (the development sandbox cannot reach most hosts); since then every registry URL and api_url is checked weekly from GitHub Actions, and the Sources page shows each source's last check and result, beside the last run of its adapter where one exists. Entries marked uncertain did not answer on the last check.
  • No free licensed lithium price benchmark exists; USGS annual averages and customs unit values are used instead.
  • Chinese policy-bank lending has no loan-level disclosure; the BU and AidData databases cover sovereign and public borrowers only.
  • Bolivia, Guyana, Suriname and Venezuela have no machine-readable legislative records, and Ecuador's Asamblea adapter has run and returned none yet (the bills database is HTML only and the plenary-votes page is a script-rendered application); their Politics tab states this instead of showing an empty list, and the records shown beneath the note are labelled sample.
  • The Politics and Media tabs list real bills, votes and headlines (keyword-selected at ingestion, original language); stance, tone, translations and narratives are text-model outputs tagged with their validation status.
  • The influence index rests on the ties the warehouse records: US official finance is the DFC and EXIM authorizations (AEI's investment tracker and BU's CODF pending), Chinese finance ends in 2021 (AidData 3.0), debt by creditor exists for China only, and legislative stance is a zero-shot baseline until the hand-coded sample is adjudicated. Components beyond a source's coverage are unavailable, not zero.
  • SEDAR+ and HKEX forbid scraping, so ownership chains for Canadian and Hong Kong intermediaries are not built yet; when they are, the inputs will be SEC cross-listings (20-F, 40-F) and company reports.
  • GDELT is machine-coded and noisy; ACLED covers Latin America only from 2018.