Grinding-ball imports failed as a yearly mining gauge
Mills grind ore with steel balls that wear away as the rock passes through, so a country that mills more ore should use more balls. If customs data could see that, it would be a public, near-real-time measure of mining activity. We wrote the rules of the test down first and then ran it. In the 10 countries where imports cover at least half of what the mills need, imports did not pass as a year-by-year gauge of ore milled: the estimated response was 0.35 against an expected one-for-one, with a 95% interval from −0.10 to 0.79. That interval takes in zero and most of the range the rules would have accepted, so the test could neither confirm the link nor rule it out.
Result FAIL
Year-to-year growth in forged-ball imports (customs code 7326.11, tonnes, imports minus exports) against growth in ore milled, with country and year effects, 2003–2024. Every threshold below was committed before the test ran.
| Check | Rule set in advance | Result | |
|---|---|---|---|
| Imports follow ore milled | response between 0.4 and 1.5, p < 0.05 | response 0.35 (95% interval -0.10 to 0.79), p = 0.11 | fail |
| Not driven by one country | dropping any one country keeps it between 0.3 and 1.7 | ranges 0.19 to 0.42 | fail |
| Not cement | still in band with cement output added, and stronger than cement | response 0.34; cement shows no link (t = 0.16) | fail |
| Placebo: screws and bolts | no link to ore milled | response -0.29, p = 0.26 | pass |
| Australia: iron ore | iron ore, which is not milled, shows no link | failed on only 7 years: Australia exported more balls than it imported until 2017 | fail |
What this does not say
- Not that balls are unrelated to mining. Errors in measured ore milled pull a year-to-year estimate toward zero. Ore milled has to be estimated from metal output with fixed global ore grades, so changes in grade, recovery or the share of ore that is leached rather than milled show up as noise. For a true one-for-one response to appear as 0.35, that noise would need to be about twice the real variation in ore growth, which is plausible for annual data. Noise on the import side (mines buy balls in lumps and hold stock; customs tonnages are noisy) does not bias the estimate in that way, but it widens the interval.
- Nothing about Chile, Peru or Canada. Their net imports cover well under half of what their mills are estimated to need (Chile, for one, has large domestic ball plants), so imports cannot stand for their mills, and they were never in the test. Australia is in the same position and appears only as the negative control above.
- Ore grades: not testable from public data. The planned grade test needs a public series of the grade of ore entering the mills for one of the ten countries. None was located (the search was not exhaustive), so it was not run.
Where imports could be the input
Before any regression, a coverage check: could a country’s net ball imports physically supply its mills? Ball demand is ore milled times a consumption rate taken from 12 mine technical reports (copper 0.33–0.88, gold 0.46–1.01, lead-zinc 0.36–0.74 kg of steel per tonne of ore). Countries milling more than 20 Mt of ore in 2024; imports and demand averaged over 2022–24. A country enters the test if net imports cover at least half of mid-range demand.
| Country | ore milled 2024 | ball demand | net imports | coverage | group |
|---|---|---|---|---|---|
| Brazil | 128 Mt | 78 kt | 122 kt | 158% | imports cover half or more |
| Ecuador | 35 Mt | 24 kt | 31 kt | 128% | imports cover half or more |
| Mongolia | 80 Mt | 46 kt | 47 kt | 101% | imports cover half or more |
| Saudi Arabia | 27 Mt | 17 kt | 15 kt | 90% | imports cover half or more |
| Kazakhstan | 217 Mt | 145 kt | 124 kt | 85% | imports cover half or more |
| Bolivia | 30 Mt | 30 kt | 22 kt | 73% | imports cover half or more |
| Ghana | 114 Mt | 72 kt | 48 kt | 67% | imports cover half or more |
| Burkina Faso | 46 Mt | 33 kt | 21 kt | 63% | imports cover half or more |
| Philippines | 34 Mt | 24 kt | 14 kt | 57% | imports cover half or more |
| Côte d’Ivoire | 39 Mt | 28 kt | 16 kt | 55% | imports cover half or more |
| Serbia | 64 Mt | 33 kt | 17 kt | 49% | imports cover under half |
| Tanzania | 49 Mt | 33 kt | 16 kt | 49% | imports cover under half |
| Mali | 50 Mt | 39 kt | 17 kt | 42% | imports cover under half |
| Guinea | 55 Mt | 43 kt | 14 kt | 33% | imports cover under half |
| Zimbabwe | 32 Mt | 22 kt | 7.1 kt | 32% | imports cover under half |
| Mexico | 248 Mt | 177 kt | 50 kt | 28% | imports cover under half |
| Türkiye | 54 Mt | 36 kt | 8.1 kt | 22% | imports cover under half |
| Papua New Guinea | 56 Mt | 35 kt | 7.9 kt | 22% | imports cover under half |
| Chile | 1,109 Mt | 655 kt | 140 kt | 21% | imports cover under half |
| Peru | 649 Mt | 388 kt | 73 kt | 18% | imports cover under half |
| Venezuela | 23 Mt | 17 kt | 2.8 kt | 16% | imports cover under half |
| Australia | 396 Mt | 275 kt | 43 kt | 15% | imports cover under half |
| Canada | 254 Mt | 172 kt | 25 kt | 14% | imports cover under half |
| Colombia | 44 Mt | 33 kt | 4.7 kt | 14% | imports cover under half |
| Bulgaria | 23 Mt | 15 kt | 2.1 kt | 14% | imports cover under half |
| Argentina | 31 Mt | 23 kt | 3.0 kt | 13% | imports cover under half |
| DR Congo | 649 Mt | 372 kt | 39 kt | 10% | imports cover under half |
| India | 27 Mt | 16 kt | 1.0 kt | 6% | imports cover under a tenth |
| Sudan | 49 Mt | 25 kt | 1.6 kt | 6% | imports cover under a tenth |
| Zambia | 163 Mt | 93 kt | 4.9 kt | 5% | imports cover under a tenth |
| Sweden | 25 Mt | 17 kt | 0.5 kt | 3% | imports cover under a tenth |
| Uzbekistan | 118 Mt | 78 kt | 1.3 kt | 1% | imports cover under a tenth |
| Poland | 79 Mt | 52 kt | 0.7 kt | 1% | imports cover under a tenth |
| Indonesia | 279 Mt | 165 kt | 2.1 kt | 1% | imports cover under a tenth |
| China | 762 Mt | 493 kt | 0.0 kt | 0% | imports cover under a tenth |
| Spain | 26 Mt | 16 kt | 0.0 kt | 0% | imports cover under a tenth |
| Iran | 74 Mt | 47 kt | 0.0 kt | 0% | imports cover under a tenth |
| Russia | 457 Mt | 291 kt | 0.0 kt | 0% | imports cover under a tenth |
| United States | 349 Mt | 240 kt | 0.0 kt | 0% | imports cover under a tenth |
| South Africa | 82 Mt | 60 kt | 0.0 kt | 0% | imports cover under a tenth |
How it was done, and reviewed
The design was drafted with two independent language models acting as advisors, and the rules, bands and controls were committed to the repository before any result existed: the pre-registration, with a dated log of every change made afterwards. Consumption rates come from primary mine reports, each with page and quotation (sources); cement output from seven editions of the USGS Minerals Yearbook.
Reviewed by two engines, one before and one after publication. This atlas’s studies are reviewed adversarially by two independent language models run separately, each given the rules, the code and every number. When this result was first published (15 Sep 2026), only the first was available. It found three errors; none changed the verdict:
- A failed control (Australia) had been written up as “not counted” after the result was seen. It is now reported as failed, with the reason it was unusable.
- The coverage check set net imports to zero after averaging three years instead of before, as the rules said. Corrected: Bulgaria moves up a group; the ten test countries are unchanged.
- Pass/fail was judged on rounded numbers. It now uses exact values; nothing changes.
The second review (17 Sep 2026) found no error in the code or the verdict, but found that this page said more than the test shows. Corrected:
- The title and opening said imports “don’t track” mining. The test only failed to validate them as a gauge; the opening now gives both ends of the interval.
- A levels association was headed “in the long run the link is real”. It is an association, and is now described as one; the pooled cast-ball result is now shown.
- Noise in imports was said to pull the estimate toward zero. It widens the interval instead; only noise in measured ore milled pulls toward zero.
- Australia was said never to have been in the test. It was the negative control.
- In the pre-registration’s result section, two countries fell below 0.3 when one was left out, not three, and the pooled estimate, shown as 0.40, is 0.397, below the 0.4 floor.
Sources. Trade: CEPII BACI HS 2002, V202601 (Etalab Open Licence 2.0),
with flows priced outside 0.4–3× the year’s median dropped. Mine production: BGS
World Mineral Statistics. Cement: USGS Minerals Yearbook, Cement, table 22. Consumption
rates: mine technical reports listed in the sources file. Built by
build_grinding_balls.py from out/grinding_balls.json, which holds every
figure on this page.