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
| Model | by-product effect | p | market size | p | R² | n |
|---|
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 size | by-product volatility | primary volatility | difference | p |
|---|
These are the metals that settle it — small markets that are not by-products, so companionality cannot be why they are jumpy:
| primary metal | annual 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.
| Test | what it removes the reliance on | by-product | market 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 window | observations | by-product | p | market size | p |
|---|
Every metal in the test
| Metal | class | volatility % | median output t | yrs |
|---|
⚠ = 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.