Can Europe capture the value of its own battery waste, and what can European refiners then serve of the recycled-lithium minimum that binds in August 2031?
Set the arrival rate, how much reaches a European plant, which refining routes clear their costs, and how much of the powder Europe refines rather than sells.
This is the model the report was written against: 69 inputs, 124 equations, every one of them carrying the claim ids behind it. It loads at the report’s own case.
At these settings the report’s claim is under pressure.
On the report’s own case, what European refiners can serve of the 2031 lithium minimum is 0.625 ratio, and the report’s claim is strained.
This label does not survive its own normalisation band
The same settings return 0.360 against the top of the published band (strained) and 1.47 against the bottom of it (holds). The corpus publishes no European lithium demand tonnage, so this ratio is scaled against a declared reference basis. Read it as a position against that basis, never as an absolute share of the statutory minimum.
What does not move with it: 0.369. Share of the recycled lithium in Europe’s own waste that Europe itself refines. The reference basis cancels exactly out of this one, so it carries none of the conditionality above.
What the world returns
- What European refiners can serve of the 2031 lithium minimum
- 0.625ratio
- The same waste refined anywhere in the world
- 1.70ratio
- Share of the recycled lithium in Europe’s waste that Europe refines
- 0.369fraction of recycled lithium
- European arisings in 2030
- 305.7kt per year
- Utilisation of European refining capacity in 2030
- 0.588fraction of capacity
- Margin on a tonne of black mass through hydrometallurgy
- 1,842US dollars per tonne of black mass
- Metal value Europe captures in 2030
- 612.5millions of US dollars per year
Pre-registered configurations
Each of these was written down before the model was run, one of them by the seat whose job was to break the report. Selecting one restores the report’s case and then applies its own settings.
The report’s scenarios (9)
What you can change
Each control opens at the report’s own value. The lighter band on the track is the range of published estimates; outside it the model still computes and everything it touches is marked.
The report’s value. Published estimates run 0.157 to 0.279. The model is defined from 0 to 1.00. Claims C-41, C-01, C-03.
The report’s value. Published estimates run 1,555 to 5,662. The model is defined from 0 to 5,662. Claims C-73, C-89.
The report’s value. Published estimates run 0.020 to 0.060. The model is defined from 0 to 1.00. Claims C-77.
The report’s value. Published estimates run 8,259 to 85,000. The model is defined from 0 to 85,000. Claims C-26, C-78, C-79.
The report’s value. Published estimates run 0.060 to 0.120. The model is defined from 0 to 1.00. Claims C-10, C-51.
The report’s value. Published estimates run 520.0 to 820.0. The model is defined from 0 to 820.0. Claims C-82, C-01.
Every other input this model takes (23)
The report’s value. Published estimates run 0.400 to 0.500. The model is defined from 0 to 1.00. Claims C-07.
The report’s value. Published estimates run 0.050 to 0.200. The model is defined from 0 to 1.00. Claims C-77.
The report’s value. Published estimates run 0.050 to 0.150. The model is defined from 0 to 1.00. Claims C-77.
The report’s value. Published estimates run 13.50 to 25.00. The model is defined from 0 to 25.00. Claims C-80.
The report’s value. Published estimates run 14,900 to 16,000. The model is defined from 0 to 16,000. Claims C-81.
The report’s value. Published estimates run 0.900 to 0.980. The model is defined from 0 to 1.00. Claims C-19, C-58, C-68, C-70.
The report’s value. Published estimates run 0.950 to 0.990. The model is defined from 0 to 1.00. Claims C-72, C-58, C-60, C-70.
The report’s value. Published estimates run 0 to 0.300. The model is defined from 0 to 1.00. Claims C-19, C-71.
The report’s value. Published estimates run 0.850 to 0.950. The model is defined from 0 to 1.00. Claims C-72.
The report’s value. Published estimates run 0.950 to 0.990. The model is defined from 0 to 1.00. Claims C-74.
The report’s value. Published estimates run 26.00 to 1,851. The model is defined from 0 to 1,851. Claims C-73, C-71.
The report’s value. Published estimates run 4,447 to 4,447, a single evidenced value. The model is defined from 0 to 5,662. Claims C-73, C-74.
The report’s value. Published estimates run 7.00 to 9.00. The model is defined from 1.00 to 9.00. Claims C-71, C-76.
The report’s value. Published estimates run 9.00 to 9.00, a single evidenced value. The model is defined from 1.00 to 9.00. Claims C-71.
The report’s value. Published estimates run 4.00 to 5.00. The model is defined from 1.00 to 9.00. Claims C-74, C-64.
The report’s value. Published estimates run 5.00 to 9.00. The model is defined from 1.00 to 9.00. Claims C-71, C-74, C-76.
The report’s value. Published estimates run 0.030 to 0.050. The model is defined from 0 to 1.00. Claims C-20.
The report’s value. Published estimates run 0.680 to 0.750. The model is defined from 0 to 1.00. Claims C-20.
The report’s value. Published estimates run 0.500 to 0.800. The model is defined from 0 to 0.980. Claims C-09, C-55.
The report’s value. Published estimates run 0.580 to 0.810. The model is defined from 0 to 1.00. Claims C-75.
The future, as a range.
A projection here starts from an evidenced anchor in a named year, is computed from named drivers rather than by extending a line, and stops at the horizon of the study it came from. Point estimates about the future do not ship.
Dated events on the horizon (33)
- 2024-09AE Elemental's Zawiercie plant becomes operationalC-61
- 2024-10Mercedes-Benz opens Europe's first OEM-integrated recycling plant at KuppenheimC-63
- 2024-10Hydrovolt adds its automated second line at FredrikstadC-59
- 2025-02-18Carbon-footprint declaration becomes mandatory for EV batteriesC-50
- 2025-02Net Zero Industry Act permit caps take effect: 12 months below 1 GW, 18 aboveC-57
- 2025-03Northvolt files for bankruptcy; Revolt Ett, planned at 125,000 t/yr, enters a sale processC-24, C-86
- 2025-05Li-Cycle files for bankruptcy holding a 475 million dollar federal loan, its Rochester hub paused since 2023C-25, C-83
- 2025-06BASF's Schwarzheide black-mass plant becomes commercialC-60
- 2025-10-07Germany's Battery Implementation Act takes effectC-54
- 2025-11Redwood Materials opens its South Carolina plant, taking US capacity above 80,000 t/yrC-69
- 2025-12-01Accurec commissions Europe's first industrial-scale lithium-recovery lineC-67
- 2025-12-31Recycling efficiency for lithium-based batteries, step one: 65 per cent by weight; the corpus dates this step to 2027 and the regulation to end-2025, and the conflict is carriedC-49
- 2026-01-01German municipal collection points must accept light-transport batteriesC-54
- 2026-02-18Carbon-footprint declaration extends to industrial batteriesC-50
- 2026-08-18Recycled-content calculation methodology due by delegated actC-51
- 2026-08-18Performance-class labels become mandatory for EV batteriesC-50
- 2027cylib's Dormagen plant starts productionC-68
- 2027-02-18Digital Battery Passport mandatory for every EV and industrial battery above 2 kWhC-11
- 2027-08Supply-chain due diligence takes effect, postponed two years from August 2025C-55
- 2027-08-18Performance-class labels extend to industrial batteriesC-50
- 2027-12-31Recovery targets phase one: lithium 50 per cent, cobalt, nickel and copper 90 per centC-09
- 2027-12-31Portable-battery collection reaches 63 per centC-14
- 2027-12-31The regional Just Transition Fund programme hard-stopsC-96
- 2028-02-18Maximum carbon thresholds for EV batteries; non-compliance means market exclusionC-50
- 2028-08-18Recycled-content declaration becomes mandatory per batteryC-51
- 2028-12-31Light-transport battery collection reaches 51 per centC-52
- 2029-02-18Maximum carbon thresholds for industrial batteriesC-50
- 2030Critical Raw Materials Act benchmarks: 10 per cent extraction, 40 processing, 25 recycling, no more than 65 from one third countryC-53, C-12
- 2030-12-31Portable collection 73 per cent; lithium-based recycling efficiency 70 per cent by weightC-14, C-49
- 2031-08-18Recycled-content minimums bind: cobalt 16 per cent, lithium 6, nickel 6C-10
- 2031-12-31Recovery targets phase two: lithium 80 per cent, cobalt, nickel and copper 95C-09
- 2031-12-31Light-transport collection reaches 61 per centC-52
- 2036-08-18Recycled-content minimums step up: cobalt 26 per cent, lithium 12, nickel 15C-10
Everything this model is made of.
What this model cannot tell you
- The model balances tonnes, recovery rates and metal value. It does not compute a rate of return, a payback or a net present value, and it should not be read as saying whether a plant is worth building. The corpus's returns material exists and is adjudicated, and it is denominated in euros while every price in the corpus is in dollars with no exchange rate published anywhere in the evidence, so joining them would be inventing a number.
- Copper and manganese are in the powder and are recovered, and the corpus publishes no price for either. Every value share this model reports is therefore a share of lithium, cobalt and nickel only, and it understates what a real refinery sells. It also understates the difference between the routes, because manganese is where smelting loses most after lithium.
- Lithium here is an index, never a tonnage. The powder is assayed at 2 to 6 per cent lithium compounds and the payable is quoted as a share of the lithium carbonate price, and nothing in the corpus converts between the two. The coverage comparison works because the conversion cancels on both sides of a ratio; ask this model for tonnes of lithium carbonate and it will not answer.
- The level of the coverage rail is conditional and the ordering is not. The 14 per cent of 2030 EU lithium demand that recycling could cover is published (C-42) and the feedstock, collection, yield and recovery assumptions behind it are not; the corpus publishes no EU lithium demand tonnage anywhere, and this model publishes no conversion from contained lithium compounds to carbonate equivalent, so there is no route in this evidence to an absolute grounding and the specification does not manufacture one. What it does instead is declare a reference basis in full, compute it forward from five named published values rather than back-solving it from the model's own output, and measure how little the corpus constrains it: the published yield, assay and recovery bands alone leave the reference index anywhere from 3.024 to 12.348 kt, a range 4.083333 times wide. Every coverage number and both quota-service ratios inherit that. Read quota_service_ratio as a position against the most generous configuration the corpus's own published values allow, not as an absolute share of the statutory minimum. The model reports the same configuration's ratio at both ends of that band and prints verdict_robust_to_normalisation, which is nought at the defaults because the central case reads strained at one end and holds at the other.
- What the normalisation does not touch. It divides both sides of every comparison, so it is absent from every route gate, every margin, every payable, every crossover price, every utilisation and every value share, and it cancels exactly out of eu_origin_share_of_recycled_li, which is also the ratio between the two quota-service rails. The finding that European refiners hold a little over a third of the recycled lithium in Europe's own waste, and every statement this model makes about which configuration is better or worse than which, stands whatever the normalisation is. Only levels against thresholds are conditional.
- There is no out-of-sample test of the coverage rail in this package, and the refusal is a finding rather than an omission. A genuine test would need a second published statement of recovered lithium against a feedstock tonnage on the same basis the model uses. The nearest thing the corpus holds is C-70, which reports 17,100 tonnes of regenerated lithium salts from 120,000 tonnes of used batteries at one Chinese operator. That is a salts basis, this model is on a contained-lithium-compounds basis, and the corpus publishes no conversion between them - the same absence that stops the coverage rail being grounded in the first place. Comparing them would produce a number that looks like a validation and is a unit error, so the comparison is refused. V-REFERENCE-IDENTITY, which used to be described as a calibration proof, is an algebraic identity that cannot fail and is now labelled one.
- Capacity is measured on one basis and refining on another. The corpus's capacity series mixes an installed pre-treatment figure with an announced refinement figure and compares both directly against tonnes of arisings, and the model follows that comparison because it is the corpus's own. A tonne of pre-treatment capacity and a tonne of refining capacity are not the same tonne, and where the model says utilisation it means the corpus's comparison, not a plant engineer's.
- The European refining share is a capacity ratio standing in for a flow. It is built from the operating facility record, plant by plant, with the classification printed in datasets/eu_facilities.csv so anyone can disagree with it. It is not a measured export share, because the corpus holds no black-mass export tonnage and the report lists that absence among the things it could not establish. The two ends of its range are site-level observations, not a distribution.
- The route mix rests on one number whose geography is unknown. Hydrometallurgy's 65.6 per cent processing share is the only route split the corpus publishes and the source does not say whether it is global or European. Its evidence range is that single point, so any other allocation is the reader's own.
- Utilisation as this model computes it runs above what operators report. At the 2024 anchor the model returns about 35.6 per cent aggregate utilisation while operators report under 10 per cent at many plants. The gap is arisings that never reach a plant, which the corpus does not measure, and the model surfaces it as a diagnostic rather than smoothing it away. The low end of collection_share is exactly the value that reconciles them.
- The two published cost sources for hydrometallurgy disagree by nearly a factor of three, 1,555 to 5,662 dollars a tonne against about 1,300. The model uses the first because it is the only source that costs all four routes on one basis, carries the second as a live check on the margin it returns, and prints the ratio rather than choosing.
- Smelting is barred by a legal gate that rests on a mid-point. Its published lithium recovery band is 0 to 30 per cent, and even its top is below the 50 per cent the statute requires from the end of 2027, so the gate would close at any point in the band. But the recovery target itself is regulation that has already slipped once elsewhere, and the reader can switch it off. When they do, the model's most profitable route returns and the lithium goes to slag.
- The chemistry shift is approached and not modelled. Genuine LFP powder carries no cobalt and no nickel, which is below every composition the corpus assays, so the thin-powder scenario reaches the bottom of the published bands and stops there. It understates the effect it is built to show, and the corpus holds no chemistry mix for European feedstock to do better with.
- Second-life storage is not in the model at all. Every pack diverted into stationary storage arrives at a recycler a battery lifetime later, and the corpus rates the flagship ramp only 30 per cent likely on its own assessment. The diversion is real and unquantified, and it makes the arisings path here slightly generous.
- The projection's own band and the corpus's published band disagree at the horizon, and the horizon cap holds in the year rather than in the value. A single compound rate calibrated on the 2030 band cannot also reproduce the 2040 band, because the corpus's two bands imply different growth regimes and C-06 names them: production scrap peaks around 2030 and end-of-life batteries take over after 2035. The model carries one driver, so its 2035 path sits at position 1.005695 in the published 2035 band and its 2040 path at 1.010215 in the published 2040 band, both just outside the top, and its own 2040 band runs 986.6 to 4,915.3 kt against a published 1,500 to 2,100. The positions are computed and printed rather than clipped, because clipping would import a regime change the corpus publishes no rate for. Nothing in the verdict depends on any year after 2031.
- The backcast is two points and one of them is the point that fixes the driver. Two points cannot distinguish compound growth from several other shapes that would fit as well, and the model claims only that a constant rate is consistent with every European arisings figure the corpus publishes, within a tolerance it states.
- Nothing in this model tells you whether the law will hold. It computes what European refiners could serve of an obligation as it is currently written, on dates as they are currently set. The corpus records the EU postponing one battery obligation by two years already, and the reader can soften the recovery target and the quota level and watch the world change. Whether the legislature will is not a quantity this or any model carries.
- The largest thing this model holds fixed that the world does not is the origin rule. Nothing in the regulation as harvested requires the recycled content in a 2031 battery to have been recycled in Europe, so the model computes both rails and reports the gap between them. It does not predict which rail the Commission's implementing acts will create. That gap, quota_origin_gap_ratio, is the single number this specification would most like to be able to close and cannot.
- What would need new research: a measured European collection rate for EV batteries, so the supply rail stops resting on a legal duty; a black-mass export tonnage series, so the refining share stops being a capacity ratio; a European black-mass grading standard, so composition stops being a range spanning a factor of four on cobalt; a published copper and manganese price on the same basis as the other metals, so the value shares stop understating; and the Commission's recycled-content calculation methodology, due by delegated act from 18 August 2026, which decides whether the origin gap is real.
- The emissions rail is computed and then stops, and that is a disclosure rather than an oversight. scrap_share_2030 moves the scrap and end-of-life split and, through it, ghg_saving_blended; ghg_saving_eol moves the same blend; nothing downstream consumes either. The corpus publishes no yield, grade or value difference between production scrap and end-of-life packs, so the split cannot reach the material balance; it prices no carbon in this subject, so the saving cannot reach a margin; and C-50's maximum carbon thresholds, dated February 2028 for EV batteries and February 2029 for industrial, are carried in the corpus with their dates and without their numbers, so the saving cannot reach a compliance gate either. Connecting the branch would mean inventing a carbon price or a threshold. The calculation is small, correct and sourced to C-75, and it is left terminal and named as terminal.
- Three parameters are carried for reference and enter no equation: bm_cu_content, bm_mn_content and hydro_breakeven_kt. None is reader-settable, because a lever that moves nothing is worse than an absence. Copper and manganese cannot be valued, since the corpus publishes no price for either, and they cannot be given a mass-basis consequence either, since C-49's whole-process efficiency target is defined over the whole battery and this model tracks only the black mass. C-89's break-even scale cannot be compared against anything here because C-89 does not say whether its 7,000 tonnes is battery input or black mass. Four validation vectors pin the copper and manganese inertness at both ends of their published bands, so a builder who wires either to an output will fail the vectors rather than ship a control that appears to do something.
Every equation, in the order they are evaluated (124)
| Output | Expression | Unit | Claims |
|---|---|---|---|
| arisings_2025 | arisings_anchor_2024 * (1 + arisings_cagr) | kt per year | C-41, C-17 |
| arisings_2029 | arisings_anchor_2024 * (1 + arisings_cagr) ** 5 | kt per year | C-41 |
| arisings_2030 | arisings_anchor_2024 * (1 + arisings_cagr) ** 6 | kt per year | C-41, C-01 |
| arisings_2031 | arisings_anchor_2024 * (1 + arisings_cagr) ** 7 | kt per year | C-41, C-01, C-10 |
| arisings_2035 | arisings_anchor_2024 * (1 + arisings_cagr) ** 11 | kt per year | C-41, C-01, C-06 |
| arisings_2036 | arisings_anchor_2024 * (1 + arisings_cagr) ** 12 | kt per year | C-41, C-01, C-10 |
| arisings_2040 | arisings_anchor_2024 * (1 + arisings_cagr) ** 16 | kt per year | C-41, C-01 |
| arisings_2030_band_low | arisings_anchor_2024 * (1 + arisings_cagr_band_low) ** 6 | kt per year | C-41, C-01 |
| arisings_2030_band_high | arisings_anchor_2024 * (1 + arisings_cagr_band_high) ** 6 | kt per year | C-41, C-01 |
| arisings_2040_band_low | arisings_anchor_2024 * (1 + arisings_cagr_band_low) ** 16 | kt per year | C-41, C-01 |
| arisings_2040_band_high | arisings_anchor_2024 * (1 + arisings_cagr_band_high) ** 16 | kt per year | C-41, C-01 |
| backcast_error_2025 | arisings_2025 / arisings_published_2025 - 1 | fraction | C-41, C-17 |
| backcast_error_2029 | arisings_2029 / arisings_published_2029 - 1 | fraction | C-41 |
| arisings_2030_band_position | (arisings_2030 - arisings_band_low_2030) / max(arisings_band_high_2030 - arisings_band_low_2030, 0.000001) | position in the published band | C-01, C-41 |
| arisings_2035_vs_band_high | arisings_2035 / arisings_band_high_2035 | ratio | C-01, C-41 |
| arisings_2040_vs_band_high | arisings_2040 / arisings_band_high_2040 | ratio | C-01, C-41 |
| arisings_2035_band_position | (arisings_2035 - arisings_band_low_2035) / max(arisings_band_high_2035 - arisings_band_low_2035, 0.000001) | position in the published band | C-01, C-41 |
| arisings_2040_band_position | (arisings_2040 - arisings_band_low_2040) / max(arisings_band_high_2040 - arisings_band_low_2040, 0.000001) | position in the published band | C-01, C-41 |
| scrap_arisings_2030 | arisings_2030 * scrap_share_2030 | kt per year | C-05, C-06, C-44 |
| eol_arisings_2030 | arisings_2030 * (1 - scrap_share_2030) | kt per year | C-06, C-03, C-44 |
| ghg_saving_blended | scrap_share_2030 * ghg_saving_scrap + (1 - scrap_share_2030) * ghg_saving_eol | fraction against virgin mining | C-75, C-05, C-06, C-50 |
| feedstock_to_plants_2024 | arisings_anchor_2024 * collection_share | kt per year | C-41, C-52 |
| feedstock_to_plants_2030 | arisings_2030 * collection_share | kt per year | C-01, C-52, C-14 |
| utilisation_2024 | clamp(feedstock_to_plants_2024 / eu_capacity_2024, 0, 1) | fraction of capacity | C-41, C-82, C-28 |
| utilisation_2030 | clamp(feedstock_to_plants_2030 / max(eu_capacity_2030, 0.000001), 0, 1) | fraction of capacity | C-01, C-82, C-28 |
| utilisation_2024_vs_reported | utilisation_2024 / reported_utilisation_ceiling | ratio | C-28, C-82, C-41 |
| implied_collection_2024 | reported_utilisation_ceiling * eu_capacity_2024 / arisings_anchor_2024 | fraction of arisings | C-28, C-82, C-41 |
| capacity_headroom_2030 | eu_capacity_2030 - feedstock_to_plants_2030 | kt per year | C-82, C-01, C-29 |
| announced_vs_band_high | announced_refinement_2030 / arisings_band_high_2030 | ratio | C-82, C-01 |
| co_price_usd_t | co_price_usd_lb * lb_per_tonne | US dollars per tonne | C-80 |
| li_value_per_t_bm | bm_li_content * li_carbonate_price_usd_t | US dollars per tonne of black mass | C-77, C-26 |
| co_value_per_t_bm | bm_co_content * co_price_usd_t | US dollars per tonne of black mass | C-77, C-80 |
| ni_value_per_t_bm | bm_ni_content * ni_price_usd_t | US dollars per tonne of black mass | C-77, C-81 |
| coni_value_per_t_bm | co_value_per_t_bm + ni_value_per_t_bm | US dollars per tonne of black mass | C-77, C-80, C-81 |
| priced_value_per_t_bm | li_value_per_t_bm + coni_value_per_t_bm | US dollars per tonne of black mass | C-77, C-26, C-80, C-81 |
| li_share_of_priced_value | li_value_per_t_bm / max(priced_value_per_t_bm, 0.000001) | fraction of priced value | C-77, C-26, C-80, C-81 |
| hydro_recovered_per_t_bm | hydro_li_recovery * li_value_per_t_bm + hydro_coni_recovery * coni_value_per_t_bm | US dollars per tonne of black mass | C-19, C-72, C-77 |
| smelt_recovered_per_t_bm | smelt_li_recovery * li_value_per_t_bm + smelt_coni_recovery * coni_value_per_t_bm | US dollars per tonne of black mass | C-19, C-72, C-77 |
| direct_recovered_per_t_bm | direct_cathode_recovery * (li_value_per_t_bm + coni_value_per_t_bm) | US dollars per tonne of black mass | C-74, C-77 |
| hydro_value_retained_share | hydro_recovered_per_t_bm / max(priced_value_per_t_bm, 0.000001) | fraction of priced value | C-19, C-72 |
| smelt_value_retained_share | smelt_recovered_per_t_bm / max(priced_value_per_t_bm, 0.000001) | fraction of priced value | C-19, C-72 |
| direct_value_retained_share | direct_recovered_per_t_bm / max(priced_value_per_t_bm, 0.000001) | fraction of priced value | C-74 |
| hydro_margin_per_t_bm | hydro_recovered_per_t_bm - hydro_cost_usd_t | US dollars per tonne of black mass | C-19, C-72, C-73 |
| smelt_margin_per_t_bm | smelt_recovered_per_t_bm - smelt_cost_usd_t | US dollars per tonne of black mass | C-19, C-72, C-73 |
| direct_margin_per_t_bm | direct_recovered_per_t_bm - direct_cost_usd_t | US dollars per tonne of black mass | C-74, C-73 |
| hydro_margin_per_kg | hydro_margin_per_t_bm / 1000 | US dollars per kilogram | C-89, C-73 |
| hydro_margin_in_published_band | clamp((hydro_margin_per_t_bm - hydro_margin_low_usd_t) * 1000000 + 1, 0, 1) * clamp((hydro_margin_high_usd_t - hydro_margin_per_t_bm) * 1000000 + 1, 0, 1) | one or nought | C-89 |
| hydro_cost_vs_published_opex | hydro_cost_usd_t / hydro_opex_published_usd_t | ratio | C-73, C-89 |
| hydro_econ_ok | clamp(hydro_margin_per_t_bm * 1000000, 0, 1) | one or nought | C-73, C-89, C-28 |
| smelt_econ_ok | clamp(smelt_margin_per_t_bm * 1000000, 0, 1) | one or nought | C-73, C-28 |
| direct_econ_ok | clamp(direct_margin_per_t_bm * 1000000, 0, 1) | one or nought | C-73, C-28 |
| hydro_ready_ok | clamp((hydro_trl - readiness_threshold) * 1000000 + 1, 0, 1) | one or nought | C-71, C-76 |
| smelt_ready_ok | clamp((smelt_trl - readiness_threshold) * 1000000 + 1, 0, 1) | one or nought | C-71 |
| direct_ready_ok | clamp((direct_trl - readiness_threshold) * 1000000 + 1, 0, 1) | one or nought | C-74, C-64 |
| hydro_legal_ok | clamp((hydro_li_recovery - li_recovery_target_in_force) * 1000000 + 1, 0, 1) | one or nought | C-09, C-19 |
| smelt_legal_ok | clamp((smelt_li_recovery - li_recovery_target_in_force) * 1000000 + 1, 0, 1) | one or nought | C-09, C-19 |
| direct_legal_ok | clamp((direct_cathode_recovery - li_recovery_target_in_force) * 1000000 + 1, 0, 1) | one or nought | C-09, C-74 |
| hydro_available | hydro_econ_ok * hydro_ready_ok * hydro_legal_ok | one or nought | C-73, C-71, C-09 |
| smelt_available | smelt_econ_ok * smelt_ready_ok * smelt_legal_ok | one or nought | C-73, C-71, C-09 |
| direct_available | direct_econ_ok * direct_ready_ok * direct_legal_ok | one or nought | C-73, C-74, C-09 |
| any_eu_route_available | clamp(hydro_available + smelt_available + direct_available, 0, 1) | one or nought | C-73, C-71, C-74, C-09 |
| smelt_share_of_eu_refining | clamp(1 - hydro_share_of_eu_refining - direct_share_of_eu_refining, 0, 1) | fraction of refining | C-76, C-71 |
| w_hydro | hydro_share_of_eu_refining * hydro_available | weight | C-76 |
| w_smelt | smelt_share_of_eu_refining * smelt_available | weight | C-76, C-71 |
| w_direct | direct_share_of_eu_refining * direct_available | weight | C-64, C-74 |
| w_total | w_hydro + w_smelt + w_direct | weight | C-76 |
| eu_weighted_li_recovery | (w_hydro * hydro_li_recovery + w_smelt * smelt_li_recovery + w_direct * direct_cathode_recovery) / max(w_total, 0.000001) | fraction of contained lithium | C-19, C-74, C-76 |
| eu_weighted_recovered_per_t_bm | (w_hydro * hydro_recovered_per_t_bm + w_smelt * smelt_recovered_per_t_bm + w_direct * direct_recovered_per_t_bm) / max(w_total, 0.000001) | US dollars per tonne of black mass | C-19, C-72, C-74, C-76 |
| eu_weighted_margin_per_t_bm | (w_hydro * hydro_margin_per_t_bm + w_smelt * smelt_margin_per_t_bm + w_direct * direct_margin_per_t_bm) / max(w_total, 0.000001) | US dollars per tonne of black mass | C-73, C-76 |
| eu_weighted_value_retained_share | eu_weighted_recovered_per_t_bm / max(priced_value_per_t_bm, 0.000001) | fraction of priced value | C-19, C-72, C-74 |
| export_netback_per_t_bm | li_payable * li_value_per_t_bm + nico_payable * coni_value_per_t_bm | US dollars per tonne of black mass | C-20, C-21 |
| export_value_retained_share | export_netback_per_t_bm / max(priced_value_per_t_bm, 0.000001) | fraction of priced value | C-20 |
| best_eu_margin_per_t_bm | max(hydro_margin_per_t_bm * hydro_available, max(smelt_margin_per_t_bm * smelt_available, direct_margin_per_t_bm * direct_available)) | US dollars per tonne of black mass | C-73, C-09, C-71 |
| export_is_rational | clamp((export_netback_per_t_bm - best_eu_margin_per_t_bm) * 1000000, 0, 1) | one or nought | C-20, C-21, C-73 |
| value_forgone_by_exporting_per_t_bm | eu_weighted_recovered_per_t_bm - export_netback_per_t_bm | US dollars per tonne of black mass | C-20, C-19, C-72 |
| hydro_smelt_crossover_li_price | (hydro_cost_usd_t - smelt_cost_usd_t - (hydro_coni_recovery - smelt_coni_recovery) * coni_value_per_t_bm) / max(bm_li_content * (hydro_li_recovery - smelt_li_recovery), 0.000001) | US dollars per tonne | C-19, C-72, C-73, C-26 |
| export_refine_crossover_li_price | (hydro_cost_usd_t + (nico_payable - hydro_coni_recovery) * coni_value_per_t_bm) / max(bm_li_content * (hydro_li_recovery - li_payable), 0.000001) | US dollars per tonne | C-20, C-19, C-73, C-26 |
| crossover_vs_central_price | hydro_smelt_crossover_li_price / max(li_carbonate_price_usd_t, 0.000001) | ratio | C-26, C-19, C-73 |
| capacity_cap_share | min(eu_capacity_2030 / max(feedstock_to_plants_2030, 0.000001), 1) | fraction | C-82, C-01 |
| eu_refined_share_effective | clamp(eu_refined_share * any_eu_route_available * capacity_cap_share, 0, 1) | fraction of black mass | C-58, C-62, C-63, C-82, C-09, C-73 |
| eu_refined_feedstock_2030 | feedstock_to_plants_2030 * eu_refined_share_effective | kt per year | C-01, C-82 |
| exported_feedstock_2030 | feedstock_to_plants_2030 - eu_refined_feedstock_2030 | kt per year | C-21, C-62 |
| black_mass_2030 | feedstock_to_plants_2030 * black_mass_yield | kt per year | C-07, C-01 |
| eu_refined_black_mass_2030 | eu_refined_feedstock_2030 * black_mass_yield | kt per year | C-07 |
| exported_black_mass_2030 | exported_feedstock_2030 * black_mass_yield | kt per year | C-07, C-21 |
| refining_capacity_2030 | eu_capacity_2030 * eu_refined_share | kt per year | C-82, C-58, C-63 |
| refining_utilisation_2030 | clamp(eu_refined_feedstock_2030 / max(refining_capacity_2030, 0.000001), 0, 1) | fraction of capacity | C-28, C-82 |
| eu_recycled_li_index_2030 | eu_refined_black_mass_2030 * bm_li_content * eu_weighted_li_recovery | kt of contained lithium compounds | C-77, C-19, C-42 |
| total_recycled_li_index_2030 | black_mass_2030 * bm_li_content * (eu_refined_share_effective * eu_weighted_li_recovery + (1 - eu_refined_share_effective) * foreign_li_recovery) | kt of contained lithium compounds | C-77, C-19, C-70, C-10 |
| reference_li_index_kt | arisings_band_high_2030 * reference_basis_collection_share * reference_basis_black_mass_yield * reference_basis_bm_li_content * reference_basis_li_recovery | kt of contained lithium compounds | C-42, C-01, C-52, C-07, C-77, C-19 |
| reference_li_index_low_kt | arisings_band_high_2030 * reference_basis_collection_share * reference_basis_yield_low * reference_basis_li_content_low * reference_basis_li_recovery_low | kt of contained lithium compounds | C-01, C-52, C-07, C-77, C-19 |
| reference_li_index_high_kt | arisings_band_high_2030 * reference_basis_collection_share * reference_basis_yield_high * reference_basis_li_content_high * reference_basis_li_recovery_high | kt of contained lithium compounds | C-01, C-52, C-07, C-77, C-19 |
| reference_normalisation_width_ratio | reference_li_index_high_kt / max(reference_li_index_low_kt, 0.000001) | ratio | C-07, C-77, C-19, C-42 |
| eu_refined_li_vs_reference | eu_recycled_li_index_2030 / max(reference_li_index_kt, 0.000001) | ratio | C-42, C-01, C-19 |
| eu_refined_li_coverage | reference_coverage_share * eu_refined_li_vs_reference | fraction of 2030 EU lithium demand | C-42, C-01, C-19 |
| total_recycled_li_coverage | reference_coverage_share * total_recycled_li_index_2030 / max(reference_li_index_kt, 0.000001) | fraction of 2030 EU lithium demand | C-42, C-70, C-10 |
| eu_origin_share_of_recycled_li | eu_recycled_li_index_2030 / max(total_recycled_li_index_2030, 0.000001) | fraction of recycled lithium | C-18, C-21, C-62, C-19, C-70 |
| quota_service_ratio | eu_refined_li_coverage / max(recycled_content_quota_li, 0.000001) | ratio | C-10, C-42 |
| quota_service_ratio_norm_low | reference_coverage_share * eu_recycled_li_index_2030 / max(reference_li_index_high_kt, 0.000001) / max(recycled_content_quota_li, 0.000001) | ratio | C-42, C-10, C-07, C-77, C-19 |
| quota_service_ratio_norm_high | reference_coverage_share * eu_recycled_li_index_2030 / max(reference_li_index_low_kt, 0.000001) / max(recycled_content_quota_li, 0.000001) | ratio | C-42, C-10, C-07, C-77, C-19 |
| quota_service_ratio_any_origin | total_recycled_li_coverage / max(recycled_content_quota_li, 0.000001) | ratio | C-10, C-42, C-18 |
| quota_origin_gap_ratio | quota_service_ratio_any_origin - quota_service_ratio | ratio | C-10, C-18, C-21 |
| quota_headroom_pp | (eu_refined_li_coverage - recycled_content_quota_li) * 100 | percentage points | C-10, C-42 |
| quota_headroom_2036_pp | (eu_refined_li_coverage - 0.12) * 100 | percentage points | C-10 |
| flip_flips_threshold | crm_input_rate / max(crm_benchmark, 0.000001) | ratio | C-13, C-12, C-53, C-10 |
| verdict_defined | clamp(recycled_content_quota_li * 1000000, 0, 1) * clamp(arisings_2030 * 1000000, 0, 1) | one or nought | C-10, C-01 |
| is_holds | clamp((quota_service_ratio - flip_holds_threshold) * 1000000 + 1, 0, 1) | one or nought | C-10 |
| is_flips | clamp((flip_flips_threshold - quota_service_ratio) * 1000000 + 1, 0, 1) | one or nought | C-13, C-12 |
| flip_state_numeric | clamp(2 * is_flips + (1 - is_flips) * (1 - is_holds), 0, 2) | nought, one or two | C-10, C-13, C-12 |
| is_holds_norm_low | clamp((quota_service_ratio_norm_low - flip_holds_threshold) * 1000000 + 1, 0, 1) | one or nought | C-10 |
| is_flips_norm_low | clamp((flip_flips_threshold - quota_service_ratio_norm_low) * 1000000 + 1, 0, 1) | one or nought | C-13, C-12 |
| flip_state_numeric_norm_low | clamp(2 * is_flips_norm_low + (1 - is_flips_norm_low) * (1 - is_holds_norm_low), 0, 2) | nought, one or two | C-10, C-13, C-12 |
| is_holds_norm_high | clamp((quota_service_ratio_norm_high - flip_holds_threshold) * 1000000 + 1, 0, 1) | one or nought | C-10 |
| is_flips_norm_high | clamp((flip_flips_threshold - quota_service_ratio_norm_high) * 1000000 + 1, 0, 1) | one or nought | C-13, C-12 |
| flip_state_numeric_norm_high | clamp(2 * is_flips_norm_high + (1 - is_flips_norm_high) * (1 - is_holds_norm_high), 0, 2) | nought, one or two | C-10, C-13, C-12 |
| verdict_robust_to_normalisation | clamp(1 - abs(flip_state_numeric_norm_high - flip_state_numeric_norm_low) * 1000000, 0, 1) | one or nought | C-42, C-10, C-07, C-77, C-19 |
| gross_metal_value_2030_musd | black_mass_2030 * priced_value_per_t_bm / 1000 | millions of US dollars per year | C-77, C-26, C-80, C-81 |
| eu_captured_value_2030_musd | (eu_refined_black_mass_2030 * eu_weighted_recovered_per_t_bm + exported_black_mass_2030 * export_netback_per_t_bm) / 1000 | millions of US dollars per year | C-19, C-72, C-20 |
| value_forgone_2030_musd | gross_metal_value_2030_musd - eu_captured_value_2030_musd | millions of US dollars per year | C-20, C-21, C-18 |
| blended_value_retained_share | eu_captured_value_2030_musd / max(gross_metal_value_2030_musd, 0.000001) | fraction of priced value | C-20, C-19, C-72 |
| li_value_retained_share | eu_refined_share_effective * eu_weighted_li_recovery + (1 - eu_refined_share_effective) * li_payable | fraction of lithium value | C-20, C-19, C-33 |
| nico_value_retained_share | eu_refined_share_effective * hydro_coni_recovery + (1 - eu_refined_share_effective) * nico_payable | fraction of nickel and cobalt value | C-20, C-72 |
| li_value_capture_multiple | li_value_retained_share / max(nico_value_retained_share, 0.000001) | ratio | C-20 |
| eu_share_of_own_lithium_vs_china_refining | li_value_retained_share / max(1 - global_refining_share_china, 0.000001) | ratio | C-18, C-20 |
Every input, its evidence and its source (69)
| Input | Report’s value | Published range | Yours to set | Claims |
|---|---|---|---|---|
| European battery scrap and end-of-life batteries arising in 2024 arisings_anchor_2024 | 96.00kt per year | one evidenced value | fixed by the record | C-41, C-82 |
| compound growth rate of European arisings from the 2024 anchor arisings_cagr | 0.213fraction per year | 0.157 to 0.279 | yes | C-41, C-01, C-03 |
| European arisings published for 2025 arisings_published_2025 | 100.0kt per year | one evidenced value | fixed by the record | C-17 |
| European arisings published for 2029 arisings_published_2029 | 252.0kt per year | one evidenced value | fixed by the record | C-41 |
| bottom of the published 2030 arisings band arisings_band_low_2030 | 230.0kt per year | one evidenced value | fixed by the record | C-01 |
| top of the published 2030 arisings band arisings_band_high_2030 | 420.0kt per year | one evidenced value | fixed by the record | C-01, C-04 |
| bottom of the published 2035 arisings band arisings_band_low_2035 | 390.0kt per year | one evidenced value | fixed by the record | C-01 |
| top of the published 2035 arisings band arisings_band_high_2035 | 800.0kt per year | one evidenced value | fixed by the record | C-01 |
| bottom of the published 2040 arisings band arisings_band_low_2040 | 1,500kt per year | one evidenced value | fixed by the record | C-01 |
| top of the published 2040 arisings band arisings_band_high_2040 | 2,100kt per year | one evidenced value | fixed by the record | C-01 |
| growth rate that reaches the bottom of the 2030 band arisings_cagr_band_low | 0.157fraction per year | one evidenced value | fixed by the record | C-01, C-41 |
| growth rate that reaches the top of the 2030 band arisings_cagr_band_high | 0.279fraction per year | one evidenced value | fixed by the record | C-01, C-41 |
| share of 2030 feedstock that is battery-factory production scrap rather than dead packs scrap_share_2030 | 0.750fraction of feedstock | 0.370 to 0.750 | yes | C-05, C-06, C-44 |
| share of European arisings that reaches a European plant collection_share | 1.00fraction of arisings | 0.281 to 1.00 | yes | C-52, C-17, C-28, C-82, C-41, C-14 |
| black mass produced per tonne of feedstock entering pre-treatment black_mass_yield | 0.450tonnes per tonne | 0.400 to 0.500 | yes | C-07 |
| lithium compounds as a share of black mass bm_li_content | 0.040fraction of black mass | 0.020 to 0.060 | yes | C-77 |
| cobalt as a share of black mass bm_co_content | 0.125fraction of black mass | 0.050 to 0.200 | yes | C-77 |
| nickel as a share of black mass bm_ni_content | 0.100fraction of black mass | 0.050 to 0.150 | yes | C-77 |
| copper as a share of black mass bm_cu_content | 0.065fraction of black mass | 0.030 to 0.100 | fixed by the record | C-77, C-72, C-49 |
| manganese as a share of black mass bm_mn_content | 0.060fraction of black mass | 0.020 to 0.100 | fixed by the record | C-77, C-72, C-49 |
| lithium carbonate price li_carbonate_price_usd_t | 10,542US dollars per tonne | 8,259 to 85,000 | yes | C-26, C-78, C-79 |
| cobalt price co_price_usd_lb | 13.50US dollars per pound | 13.50 to 25.00 | yes | C-80 |
| nickel price ni_price_usd_t | 14,900US dollars per tonne | 14,900 to 16,000 | yes | C-81 |
| pounds in a tonne lb_per_tonne | 2,205pounds per tonne | one evidenced value | fixed by the record | C-80 |
| lithium recovered by hydrometallurgical refining hydro_li_recovery | 0.940fraction of contained lithium | 0.900 to 0.980 | yes | C-19, C-58, C-68, C-70 |
| cobalt and nickel recovered by hydrometallurgical refining hydro_coni_recovery | 0.970fraction of contained cobalt and nickel | 0.950 to 0.990 | yes | C-72, C-58, C-60, C-70 |
| lithium recovered by high-temperature smelting smelt_li_recovery | 0.150fraction of contained lithium | 0 to 0.300 | yes | C-19, C-71 |
| cobalt and nickel recovered by high-temperature smelting smelt_coni_recovery | 0.900fraction of contained cobalt and nickel | 0.850 to 0.950 | yes | C-72 |
| cathode material recovered by direct recycling direct_cathode_recovery | 0.970fraction of contained cathode | 0.950 to 0.990 | yes | C-74 |
| hydrometallurgical processing cost hydro_cost_usd_t | 3,609US dollars per tonne processed | 1,555 to 5,662 | yes | C-73, C-89 |
| smelting processing cost smelt_cost_usd_t | 938.5US dollars per tonne processed | 26.00 to 1,851 | yes | C-73, C-71 |
| direct-recycling processing cost direct_cost_usd_t | 4,447US dollars per tonne processed | one evidenced value | yes | C-73, C-74 |
| technology readiness of hydrometallurgical refining hydro_trl | 8.00readiness level | 7.00 to 9.00 | yes | C-71, C-76 |
| technology readiness of high-temperature smelting smelt_trl | 9.00readiness level | one evidenced value | yes | C-71 |
| technology readiness of direct recycling direct_trl | 4.50readiness level | 4.00 to 5.00 | yes | C-74, C-64 |
| readiness a route must reach before it counts as industrially available readiness_threshold | 7.00readiness level | 5.00 to 9.00 | yes | C-71, C-74, C-76 |
| share of European refining that is hydrometallurgical hydro_share_of_eu_refining | 0.656fraction of refining | one evidenced value | yes | C-76 |
| share of European refining that is direct recycling direct_share_of_eu_refining | 0fraction of refining | one evidenced value | yes | C-64, C-74 |
| share of the lithium price a black-mass seller receives li_payable | 0.040fraction of the lithium price | 0.030 to 0.050 | yes | C-20 |
| share of contained nickel and cobalt value a black-mass seller receives nico_payable | 0.740fraction of contained nickel and cobalt value | 0.680 to 0.750 | yes | C-20 |
| share of European black mass refined in Europe rather than sold abroad eu_refined_share | 0.368fraction of black mass | 0 to 1.00 | yes | C-58, C-60, C-61, C-62, C-63, C-65, C-66, C-67, C-59, C-21, C-18 |
| installed European recycling capacity in 2024 eu_capacity_2024 | 270.0kt per year | one evidenced value | fixed by the record | C-82 |
| European recycling capacity in 2030 eu_capacity_2030 | 520.0kt per year | 520.0 to 820.0 | yes | C-82, C-01 |
| announced European refinement capacity for 2030 announced_refinement_2030 | 820.0kt per year | one evidenced value | fixed by the record | C-82 |
| utilisation operators report at many European plants today reported_utilisation_ceiling | 0.100fraction of capacity | one evidenced value | fixed by the record | C-28 |
| lithium recovery a European recycler must achieve li_recovery_target_in_force | 0.800fraction of contained lithium | 0.500 to 0.800 | yes | C-09, C-55 |
| lithium recycled-content minimum a new EU battery must carry recycled_content_quota_li | 0.060fraction of contained lithium | 0.060 to 0.120 | yes | C-10, C-51 |
| share of 2030 EU lithium demand recycling is published as able to cover reference_coverage_share | 0.140fraction of demand | one evidenced value | fixed by the record | C-42 |
| collection share of the declared reference basis reference_basis_collection_share | 1.00fraction of arisings | one evidenced value | fixed by the record | C-52 |
| black-mass yield of the declared reference basis reference_basis_black_mass_yield | 0.450fraction of feedstock weight | one evidenced value | fixed by the record | C-07 |
| lithium content of the declared reference basis reference_basis_bm_li_content | 0.040fraction of black mass | one evidenced value | fixed by the record | C-77 |
| lithium recovery of the declared reference basis reference_basis_li_recovery | 0.940fraction of contained lithium | one evidenced value | fixed by the record | C-19 |
| bottom of the published black-mass yield band reference_basis_yield_low | 0.400fraction of feedstock weight | one evidenced value | fixed by the record | C-07 |
| top of the published black-mass yield band reference_basis_yield_high | 0.500fraction of feedstock weight | one evidenced value | fixed by the record | C-07 |
| bottom of the published lithium assay band reference_basis_li_content_low | 0.020fraction of black mass | one evidenced value | fixed by the record | C-77 |
| top of the published lithium assay band reference_basis_li_content_high | 0.060fraction of black mass | one evidenced value | fixed by the record | C-77 |
| bottom of the published hydrometallurgical lithium recovery band reference_basis_li_recovery_low | 0.900fraction of contained lithium | one evidenced value | fixed by the record | C-19 |
| top of the published hydrometallurgical lithium recovery band reference_basis_li_recovery_high | 0.980fraction of contained lithium | one evidenced value | fixed by the record | C-19 |
| lithium recovered from exported black mass by the buyer foreign_li_recovery | 0.938fraction of contained lithium | one evidenced value | fixed by the record | C-70, C-18 |
| the EU's current end-of-life recycling input rate for critical raw materials crm_input_rate | 0.083fraction of consumption | one evidenced value | fixed by the record | C-13 |
| the EU's binding 2030 domestic-recycling benchmark crm_benchmark | 0.250fraction of consumption | one evidenced value | fixed by the record | C-12, C-53 |
| quota service ratio at or above which the report's reading holds flip_holds_threshold | 1.00ratio | one evidenced value | fixed by the record | C-10, C-51 |
| greenhouse-gas saving from recycling production scrap ghg_saving_scrap | 0.810fraction against virgin mining | one evidenced value | fixed by the record | C-75 |
| greenhouse-gas saving from recycling end-of-life batteries ghg_saving_eol | 0.580fraction against virgin mining | 0.580 to 0.810 | yes | C-75 |
| bottom of the published hydrometallurgical margin band hydro_margin_low_usd_t | 400.0US dollars per tonne | one evidenced value | fixed by the record | C-89 |
| top of the published hydrometallurgical margin band hydro_margin_high_usd_t | 3,300US dollars per tonne | one evidenced value | fixed by the record | C-89 |
| published hydrometallurgical operating cost hydro_opex_published_usd_t | 1,300US dollars per tonne | one evidenced value | fixed by the record | C-89 |
| published break-even scale for a hydrometallurgical plant hydro_breakeven_kt | 7.00kt per year | one evidenced value | fixed by the record | C-89, C-65 |
| China's share of world black-mass refining capacity global_refining_share_china | 0.890fraction of capacity | one evidenced value | fixed by the record | C-18 |
Model version 1.0.0, dated 2026-09-02. Every claim id above resolves to a numbered reference in the report, and the report is on the page you came from. Where this page and the shipped package disagree, the package is right: it ships a reference implementation whose 124 equations this page is checked against on every build.
The argument itself is in the report.
The model tells you what the numbers do. Europe’s Most Valuable Mine Is a Scrapheap tells you what they mean, what the evidence would not settle, and what would change our mind.
Back to the report