Critical Materials Atlas
Method · falsification · regression

Are by-product metals really more volatile?

Yes — and the reason is not the one everybody gives. On 24 years of real prices, the volatility of by-product metals is fully accounted for by how small their markets are. Small primary metals — rare earths, tantalum, beryllium — swing just as hard, and companionality cannot explain those. Being stuck is not what makes a price jumpy. Being small is.

How this test is built (and what it fixes)

Prices. USGS Historical Statistics for Mineral and Material Commodities (Data Series 140) — real annual unit values in constant 1998 dollars, public domain, one series per commodity. That matters: the atlas’s earlier price test used trade unit values, where gallium, germanium and hafnium share a single HS6 code (811292) and therefore carry identical prices. Here each is priced separately, so the problem dissolves rather than gets patched.

Window: 2000–2023, and that is a finding. Before ~2000 the USGS nominal series for minor metals are administered list prices, frozen for years at a stretch (germanium 13 years, hafnium 11, helium 9, gallium 8). Deflating a frozen nominal price manufactures smooth fake “real” volatility out of the CPI — and it would land on precisely the by-product metals, biasing the coefficient we are trying to measure. After 2000 every series is market-priced. Helium remains partly administered (US Federal Helium Reserve) and is flagged.

Model. Volatility = standard deviation of year-on-year log returns of the real price. Then OLS with heteroskedasticity-robust standard errors: volatility ~ by-product status, then the same plus log market size. Classification is the textbook primary/companion split (USGS Mineral Commodity Summaries; Nassar, Graedel & Alonso 2015) — a binary class, not an invented fraction; metals whose class is genuinely argued over are flagged and dropped in a robustness model.

HC3, not HC0. HC0 is biased downward in small samples — it under-states standard errors and over-states significance — and the standard advice is HC3 whenever n < 250 (MacKinnon & White 1985; Long & Ervin 2000). At n=33, HC0 would flatter every number on this page, including the ones we would like to be true. Everything here is HC3, which makes our own results less significant, not more.

Limits: USGS unit values are US-market annual averages, not global spot. Excluded: mercury (class disputed), fluorspar and niobium (too few price years), hafnium and titanium (no world-production series, so no size control). Input: USGS DS-140 → price_volatility.json.

The whole finding, in one chart

Left = a smaller market. Up = a more volatile price. If companionality drove volatility, the red points would sit above the blue ones at the same market size. They don’t — they sit on the same downward line, just further down the small end of it. Size is the axis that matters; by-product status is where those metals happen to live.

What the control does to the effect

Modelby-product effectpmarket sizepn

The by-product coefficient is in percentage points of annual volatility. Add market size and it falls by about 90% and loses all significance, while size itself is strongly significant and the model’s explanatory power more than doubles. Because the dollar size control contains price — and volatility is computed from price — the third model re-runs the control on physical tonnes, where no price enters the right-hand side at all. Same verdict.

The confound, measured directly

Compare like with like

Regressions are easy to argue with, so here is the same finding without one. Split the metals at the median market size and compare only within each half — small against small, large against large.

market sizeby-product volatilityprimary volatilitydifferencep

These are the metals that settle it — small markets that are not by-products, so companionality cannot be why they are jumpy:

primary metalannual volatility

The strongest objection to this page

“Market size is a bad control.” The objection runs like this: if being a by-product causes a market to be small — because output is capped by whatever the host mine happens to produce — then size sits on the causal path, not beside it. Controlling for it would then subtract companionality’s own mechanism from companionality’s effect, and our null would mean “no direct effect”, not “companionality is irrelevant.” This is a real objection and no amount of extra regression answers it. Three responses, in increasing order of force:

1. We report the total effect. It is and it is the headline of this page, exactly as the objection demands. By-product metals are more volatile. We are explaining that fact, not denying it.

2. Size measured before the fact. If volatility somehow keeps markets small (rather than the reverse), our control is contaminated. So we re-ran it with market size measured in 1985–1999 and volatility in 2000–2023: volatility in this century cannot have caused market size in the last one.

3. Small primary metals. This is the one the objection cannot reach. Rare earths, tantalum and beryllium are primary metals — nobody claims their supply is hostage to a host — and they are among the most volatile prices in the dataset. Their markets are small for ordinary reasons: not much demand. Mediation cannot explain them, because there is no companionality in the chain to mediate. They demonstrate that smallness is sufficient for volatility all by itself. Once smallness alone produces the swing, by-product status has nothing left to explain.

What we still cannot say. None of this rules out that companionality contributes to a market being small in the first place. That channel is real in principle — you cannot make more gallium than the alumina industry throws off — and this design is silent on it. So the honest claim is narrow and we will not stretch it: there is no volatility penalty specific to being a by-product, over and above being small. Whether companionality helps make these markets small is a different question, and a good one.

“But n=33 is small”

It is — and it cannot be fixed, because n=33 is not a small sample of a large universe. It is most of the universe. Only about forty metals have a published price series at all; we use thirty-three of them. There is no larger dataset to go and find, and no amount of effort produces one, because the additional metals do not exist. This bound applies just as much to the published literature as to us.

So the honest response is not to pretend n is bigger, but to stop relying on n being big. Every result here is re-tested three more ways that do not lean on large-sample asymptotics — a permutation test (shuffle the by-product labels 20,000 times; no normality assumed), a rank-based model (immune to the enormous leverage of bulk commodities — iron ore is 109 tonnes, rhenium 101.7), and drop-one, removing the metals that could carry the result single-handed. They agree.

Testwhat it removes the reliance onby-productmarket size

Does the answer depend on the window?

A fair worry: 24-year volatility might hide episodic spikes. It doesn’t change the verdict — at every window length, with non-overlapping windows, size is significant and by-product status is not.

volatility windowobservationsby-productpmarket sizep
A trap worth naming, since it nearly caught us. The obvious way to manufacture a bigger n is a panel: slice the window into rolling 5-year sub-periods and you have 614 observations instead of 33. Do that and by-product status becomes significant (+7.8pp, p=0.07) while market size goes away. It is an artifact, twice over. First, rolling windows overlap, so each year’s return is reused up to four times — the 2023 gallium/germanium export-control spike gets counted repeatedly, and pseudo-replication is dressed up as evidence. Run the same 5-year window without overlap and the effect vanishes (+1.5pp, p=0.70) while size returns (p=0.003). Second, and more fundamentally, by-product status never varies within a metal, so a panel adds no information about it at all: the naive unclustered panel reports p<0.0001, but cluster the errors by metal — as you must — and the effective sample is back to 33. The panel does not give you more evidence. It gives you the same evidence, counted more times.

Every metal in the test

Metalclassvolatility %median output tyrs

⚠ = primary/by-product class genuinely argued over; dropped in the robustness model. ⚖ = partly administered market.

How this sits with the literature

The direct precedent is Redlinger & Eggert, “Volatility of by-product metal and mineral prices” (Resources Policy 47, 2016, 69–77) — which reports by-products averaging ~50% higher volatility across ~50 years of annual prices. Our uncontrolled estimate reproduces that direction and is significant. Our controlled estimate does not.

We are careful about what that means. Their variables tested included quantity produced, so this is not a claim that they missed the control — their full specification is paywalled and we have not read it, and our window (24 years) and sample differ from theirs. What is striking is that they raised both of our findings themselves: they attribute the “mixed evidence” in their monthly data to “the smaller volume of transactions for by-product materials” and to prices “unchanged for several months at a time” — thinness, and administered prices. And they close by calling for research into “the underlying determinants of price volatility.” This page is an answer to that call, on fully open data: among the candidate determinants, market size absorbs the by-product effect entirely. Their own suspected explanation appears to be the right one.

Why this matters for the rest of the atlas

The hostage-metals thesis is not damaged by this — it is sharpened. The claim that by-product supply cannot respond to price is a statement about elasticity, and it stands on its own evidence: no gallium price builds a gallium mine. What falls is the lazy corollary that inelasticity should therefore show up as price turbulence. It doesn’t, once you account for the fact that these are tiny markets. Inelasticity and volatility are different claims, and conflating them let a size effect masquerade as a structural one. The risk re-weighting, which penalises companionality via elasticity rather than via observed volatility, is unaffected — and this is a reason to keep it that way.