{"generated":"2026-06-15","n_draws":20000,"n":32,"axes":[{"key":"scale","label":"Can't scale (by-product)"},{"key":"diversify","label":"Can't diversify (concentrated)"},{"key":"recycle","label":"Can't recycle out"},{"key":"demand","label":"Demand surging"},{"key":"thin","label":"No slack (thin market)"}],"model":{"companionality_sd_pp":12,"concentration_sd_pp":8,"recycling_sd_pp":5,"demand_lognormal_sd":0.4,"tonnes_rel_sd":0.1},"clear_hardest":["Gallium","Germanium"],"borderline":["Vanadium"],"axis_drive_top10":{"scale":0.61,"diversify":0.67,"recycle":0.87,"demand":0.25,"thin":0.45},"spec_robustness":{"n_specs":11,"specs":[{"name":"baseline (published design)","p":{"gallium":0.988,"germanium":0.961,"vanadium":0.229,"hafnium":0.082}},{"name":"thresholds drawn, not fixed","p":{"gallium":0.963,"germanium":0.921,"vanadium":0.242,"hafnium":0.094}},{"name":"thresholds 15% looser","p":{"gallium":0.997,"germanium":0.987,"vanadium":0.436,"hafnium":0.254}},{"name":"thresholds 15% tighter","p":{"gallium":0.951,"germanium":0.888,"vanadium":0.064,"hafnium":0.011}},{"name":"rule: 3 of 5","p":{"gallium":1.0,"germanium":1.0,"vanadium":0.846,"hafnium":0.55}},{"name":"rule: 5 of 5","p":{"gallium":0.487,"germanium":0.28,"vanadium":0.0,"hafnium":0.0}},{"name":"drop axis: can\u2019t scale","p":{"gallium":0.989,"germanium":0.962,"vanadium":0.234,"hafnium":0.082}},{"name":"drop axis: thin market","p":{"gallium":0.988,"germanium":0.961,"vanadium":0.846,"hafnium":0.55}},{"name":"drop axis: demand surging","p":{"gallium":1.0,"germanium":1.0,"vanadium":0.79,"hafnium":0.463}},{"name":"drop axis: can\u2019t recycle","p":{"gallium":0.999,"germanium":0.998,"vanadium":0.244,"hafnium":0.084}},{"name":"drop axis: concentrated","p":{"gallium":0.988,"germanium":0.961,"vanadium":0.264,"hafnium":0.167}}],"top2_stable":11,"note":"A Monte-Carlo propagates INPUT uncertainty; it cannot validate the MODEL. The design here (five chosen axes, hard thresholds, a >=4-of-5 rule) was held fixed, so \"gallium 99%\" only ever meant \"99% of draws under this design\". These 11 specifications perturb the design itself. The number moves a lot; the ranking does not."},"axis_overlap":[{"a":"companionality","b":"log10 tonnage","r":-0.7,"n":28},{"a":"concentration","b":"log10 tonnage","r":-0.57,"n":28}],"axis_overlap_note":"The five axes are not independent. Companionality and market size correlate at r=-0.70 \u2014 \"can't scale\" and \"thin market\" are substantially one factor, which the volatility retest found independently (by-product metals are ~174x smaller markets). A by-product therefore fails two axes for one underlying reason. It does not move the top two \u2014 and that is TESTED, not just asserted: the drop-axis robustness removes either half of the collinear pair and gallium/germanium still come first. The overlap inflates the contingent MIDDLE, never the answer; the expected-count column should be read with that in mind. One honest footnote on the draw: the Monte-Carlo samples each input INDEPENDENTLY, so it does invent some impossible combos (a high-companionality metal with a huge market). That does not threaten the Ga/Ge claim \u2014 they are extreme on every axis, so the tail that crowns them barely uses those combos, and the design robustness stresses the dependence directly. A correlated draw would only tighten the mid-pack cosmetically; a 5x5 covariance on 32 metals is a fragile knob, not a fix.","rows":[{"label":"gallium","title":"Gallium","p_axis":{"scale":0.998,"diversify":1.0,"recycle":0.977,"demand":0.5,"thin":1.0},"p_hardest":0.988,"e_count":4.47,"ci_low":4,"ci_high":5,"n_axes_known":5,"companionality_pct":100,"world_tonnes":987,"spec_min":0.487,"spec_max":1.0,"spec_median":0.988},{"label":"germanium","title":"Germanium","p_axis":{"scale":0.998,"diversify":1.0,"recycle":0.947,"demand":0.295,"thin":1.0},"p_hardest":0.961,"e_count":4.24,"ci_low":4,"ci_high":5,"n_axes_known":5,"companionality_pct":100,"world_tonnes":150,"spec_min":0.28,"spec_max":1.0,"spec_median":0.961},{"label":"vanadium","title":"Vanadium","p_axis":{"scale":0.976,"diversify":0.859,"recycle":0.943,"demand":0.289,"thin":0.0},"p_hardest":0.229,"e_count":3.07,"ci_low":2,"ci_high":4,"n_axes_known":5,"companionality_pct":90,"world_tonnes":112506,"spec_min":0.0,"spec_max":0.846,"spec_median":0.244},{"label":"hafnium","title":"Hafnium","p_axis":{"scale":0.998,"diversify":0.474,"recycle":0.976,"demand":0.171,"thin":null},"p_hardest":0.082,"e_count":2.62,"ci_low":2,"ci_high":4,"n_axes_known":4,"companionality_pct":100,"world_tonnes":null,"spec_min":0.0,"spec_max":0.55,"spec_median":0.094},{"label":"beryllium","title":"Beryllium","p_axis":{"scale":0.0,"diversify":0.467,"recycle":0.977,"demand":0.074,"thin":1.0},"p_hardest":0.032,"e_count":2.52,"ci_low":2,"ci_high":3,"n_axes_known":5,"companionality_pct":0,"world_tonnes":9679,"spec_min":0.0,"spec_max":0.497,"spec_median":0.05},{"label":"tantalum","title":"Tantalum","p_axis":{"scale":0.092,"diversify":0.009,"recycle":0.964,"demand":0.167,"thin":1.0},"p_hardest":0.017,"e_count":2.23,"ci_low":2,"ci_high":3,"n_axes_known":5,"companionality_pct":50,"world_tonnes":2776,"spec_min":0.0,"spec_max":0.242,"spec_median":0.037},{"label":"arsenic","title":"Arsenic","p_axis":{"scale":0.998,"diversify":0.132,"recycle":0.977,"demand":0.034,"thin":0.022},"p_hardest":0.008,"e_count":2.16,"ci_low":2,"ci_high":3,"n_axes_known":5,"companionality_pct":100,"world_tonnes":62768,"spec_min":0.0,"spec_max":0.203,"spec_median":0.054},{"label":"cobalt","title":"Cobalt","p_axis":{"scale":0.976,"diversify":0.965,"recycle":0.009,"demand":0.167,"thin":0.0},"p_hardest":0.002,"e_count":2.12,"ci_low":2,"ci_high":3,"n_axes_known":5,"companionality_pct":90,"world_tonnes":268755,"spec_min":0.0,"spec_max":0.164,"spec_median":0.006},{"label":"magnets","title":"Rare earths / magnets","p_axis":{"scale":0.015,"diversify":0.835,"recycle":0.967,"demand":0.202,"thin":0.0},"p_hardest":0.002,"e_count":2.02,"ci_low":1,"ci_high":3,"n_axes_known":5,"companionality_pct":40,"world_tonnes":398008,"spec_min":0.0,"spec_max":0.173,"spec_median":0.006},{"label":"graphite","title":"Graphite","p_axis":{"scale":0.0,"diversify":0.977,"recycle":0.921,"demand":0.587,"thin":0.0},"p_hardest":0.0,"e_count":2.48,"ci_low":2,"ci_high":3,"n_axes_known":5,"companionality_pct":0,"world_tonnes":1685817,"spec_min":0.0,"spec_max":0.527,"spec_median":0.0},{"label":"niobium","title":"Niobium","p_axis":{"scale":0.0,"diversify":1.0,"recycle":0.978,"demand":0.205,"thin":0.0},"p_hardest":0.0,"e_count":2.18,"ci_low":2,"ci_high":3,"n_axes_known":5,"companionality_pct":0,"world_tonnes":123206,"spec_min":0.0,"spec_max":0.201,"spec_median":0.0},{"label":"helium","title":"Helium","p_axis":{"scale":0.998,"diversify":0.002,"recycle":0.964,"demand":0.134,"thin":null},"p_hardest":0.0,"e_count":2.1,"ci_low":2,"ci_high":3,"n_axes_known":4,"companionality_pct":100,"world_tonnes":null,"spec_min":0.0,"spec_max":0.131,"spec_median":0.002},{"label":"strontium","title":"Strontium","p_axis":{"scale":0.0,"diversify":0.969,"recycle":0.978,"demand":0.076,"thin":null},"p_hardest":0.0,"e_count":2.02,"ci_low":2,"ci_high":3,"n_axes_known":4,"companionality_pct":0,"world_tonnes":null,"spec_min":0.0,"spec_max":0.072,"spec_median":0.0},{"label":"fluorspar","title":"Fluorspar","p_axis":{"scale":0.0,"diversify":0.83,"recycle":0.966,"demand":0.205,"thin":0.0},"p_hardest":0.0,"e_count":2.0,"ci_low":1,"ci_high":3,"n_axes_known":5,"companionality_pct":5,"world_tonnes":9742717,"spec_min":0.0,"spec_max":0.162,"spec_median":0.0},{"label":"lithium","title":"Lithium","p_axis":{"scale":0.0,"diversify":0.003,"recycle":0.977,"demand":0.983,"thin":0.0},"p_hardest":0.0,"e_count":1.96,"ci_low":2,"ci_high":2,"n_axes_known":5,"companionality_pct":0,"world_tonnes":601914,"spec_min":0.0,"spec_max":0.003,"spec_median":0.0},{"label":"silicon","title":"Silicon","p_axis":{"scale":0.0,"diversify":0.056,"recycle":0.979,"demand":0.375,"thin":null},"p_hardest":0.0,"e_count":1.41,"ci_low":1,"ci_high":2,"n_axes_known":4,"companionality_pct":0,"world_tonnes":null,"spec_min":0.0,"spec_max":0.02,"spec_median":0.0},{"label":"platinum","title":"Platinum","p_axis":{"scale":0.0,"diversify":0.901,"recycle":0.204,"demand":0.248,"thin":0.0},"p_hardest":0.0,"e_count":1.35,"ci_low":0,"ci_high":2,"n_axes_known":5,"companionality_pct":25,"world_tonnes":178929,"spec_min":0.0,"spec_max":0.044,"spec_median":0.0},{"label":"magnesium","title":"Magnesium","p_axis":{"scale":0.0,"diversify":0.791,"recycle":0.266,"demand":0.206,"thin":0.0},"p_hardest":0.0,"e_count":1.26,"ci_low":0,"ci_high":2,"n_axes_known":5,"companionality_pct":0,"world_tonnes":21042652,"spec_min":0.0,"spec_max":0.043,"spec_median":0.0},{"label":"boron","title":"Boron","p_axis":{"scale":0.0,"diversify":0.028,"recycle":0.965,"demand":0.203,"thin":0.0},"p_hardest":0.0,"e_count":1.2,"ci_low":1,"ci_high":2,"n_axes_known":5,"companionality_pct":0,"world_tonnes":5238309,"spec_min":0.0,"spec_max":0.005,"spec_median":0.0},{"label":"tungsten","title":"Tungsten","p_axis":{"scale":0.0,"diversify":0.988,"recycle":0.0,"demand":0.131,"thin":0.0},"p_hardest":0.0,"e_count":1.12,"ci_low":1,"ci_high":2,"n_axes_known":5,"companionality_pct":10,"world_tonnes":75416,"spec_min":0.0,"spec_max":0.0,"spec_median":0.0},{"label":"phosphorus","title":"Phosphorus","p_axis":{"scale":0.0,"diversify":0.021,"recycle":0.98,"demand":0.075,"thin":0.0},"p_hardest":0.0,"e_count":1.08,"ci_low":1,"ci_high":2,"n_axes_known":5,"companionality_pct":0,"world_tonnes":77279130,"spec_min":0.0,"spec_max":0.001,"spec_median":0.0},{"label":"cokingcoal","title":"Coking coal","p_axis":{"scale":0.0,"diversify":0.091,"recycle":0.976,"demand":0.003,"thin":0.0},"p_hardest":0.0,"e_count":1.07,"ci_low":1,"ci_high":2,"n_axes_known":5,"companionality_pct":0,"world_tonnes":1050336169,"spec_min":0.0,"spec_max":0.0,"spec_median":0.0},{"label":"feldspar","title":"Feldspar","p_axis":{"scale":0.0,"diversify":0.0,"recycle":0.976,"demand":0.033,"thin":0.0},"p_hardest":0.0,"e_count":1.01,"ci_low":1,"ci_high":1,"n_axes_known":5,"companionality_pct":0,"world_tonnes":36353265,"spec_min":0.0,"spec_max":0.0,"spec_median":0.0},{"label":"baryte","title":"Baryte","p_axis":{"scale":0.0,"diversify":0.0,"recycle":0.964,"demand":0.021,"thin":0.0},"p_hardest":0.0,"e_count":0.98,"ci_low":1,"ci_high":1,"n_axes_known":5,"companionality_pct":0,"world_tonnes":9377075,"spec_min":0.0,"spec_max":0.0,"spec_median":0.0},{"label":"nickel","title":"Nickel","p_axis":{"scale":0.0,"diversify":0.608,"recycle":0.113,"demand":0.226,"thin":0.0},"p_hardest":0.0,"e_count":0.95,"ci_low":0,"ci_high":2,"n_axes_known":5,"companionality_pct":5,"world_tonnes":3699741,"spec_min":0.0,"spec_max":0.014,"spec_median":0.0},{"label":"manganese","title":"Manganese","p_axis":{"scale":0.0,"diversify":0.005,"recycle":0.582,"demand":0.168,"thin":0.0},"p_hardest":0.0,"e_count":0.76,"ci_low":0,"ci_high":2,"n_axes_known":5,"companionality_pct":0,"world_tonnes":18818965,"spec_min":0.0,"spec_max":0.0,"spec_median":0.0},{"label":"antimony","title":"Antimony","p_axis":{"scale":0.31,"diversify":0.0,"recycle":0.0,"demand":0.206,"thin":0.0},"p_hardest":0.0,"e_count":0.52,"ci_low":0,"ci_high":2,"n_axes_known":5,"companionality_pct":60,"world_tonnes":141231,"spec_min":0.0,"spec_max":0.0,"spec_median":0.0},{"label":"palladium","title":"Palladium","p_axis":{"scale":0.092,"diversify":0.008,"recycle":0.214,"demand":null,"thin":0.0},"p_hardest":0.0,"e_count":0.31,"ci_low":0,"ci_high":1,"n_axes_known":4,"companionality_pct":50,"world_tonnes":208959,"spec_min":0.0,"spec_max":0.0,"spec_median":0.0},{"label":"bauxite","title":"Bauxite / aluminium","p_axis":{"scale":0.0,"diversify":0.001,"recycle":0.0,"demand":0.249,"thin":0.0},"p_hardest":0.0,"e_count":0.25,"ci_low":0,"ci_high":1,"n_axes_known":5,"companionality_pct":0,"world_tonnes":414033986,"spec_min":0.0,"spec_max":0.0,"spec_median":0.0},{"label":"titanium","title":"Titanium","p_axis":{"scale":0.0,"diversify":0.001,"recycle":0.035,"demand":0.169,"thin":0.0},"p_hardest":0.0,"e_count":0.21,"ci_low":0,"ci_high":1,"n_axes_known":5,"companionality_pct":20,"world_tonnes":9005073,"spec_min":0.0,"spec_max":0.0,"spec_median":0.0},{"label":"phosphate","title":"Phosphate rock","p_axis":{"scale":0.0,"diversify":0.024,"recycle":0.079,"demand":0.072,"thin":0.0},"p_hardest":0.0,"e_count":0.17,"ci_low":0,"ci_high":1,"n_axes_known":5,"companionality_pct":0,"world_tonnes":77279130,"spec_min":0.0,"spec_max":0.0,"spec_median":0.0},{"label":"copper","title":"Copper","p_axis":{"scale":0.0,"diversify":0.0,"recycle":0.081,"demand":0.068,"thin":0.0},"p_hardest":0.0,"e_count":0.15,"ci_low":0,"ci_high":1,"n_axes_known":5,"companionality_pct":5,"world_tonnes":22911145,"spec_min":0.0,"spec_max":0.0,"spec_median":0.0}]}