Data and methods
This note documents every number on The Pulse of Clean Trade. All figures trace to one canonical membership table, data/products.csv, projected from the NZIPL green dictionary by scripts/build_products_table.py, and priced from BACI bilateral trade by one builder, scripts/build_trade_data.py, which emits data/pulse.json (chains and rankings), data/segments.json (position tiers, downstream and equipment detail, downstream rankings), and data/partners.json (bilateral partner flows) in a single run. data/prices.json (the panel 06 product close-ups) is built separately by scripts/build_price_panel_data.py from BACI HS12 trade with reported weights, cross-checked against HS02. Because both panels and the partner blocks derive from the same table in the same run, panel 01 equals the sum of panel 02's positions for every chain and every year; the build asserts that identity from two independent accumulation paths and fails if it breaks.
Source data
| Input | What it is | Role here |
|---|---|---|
| NZIPL green dictionary | HS-6 to technology, role, and stage taxonomy with per-code split weights; 715 rows, 431 unique codes, 11 technologies | Membership only: which codes belong to which chain, at which position, at what weight |
| BACI HS12 bilateral trade (V202601) | Mirrored, harmonized trade flows, 2012 to 2024 | Every value on the dashboard |
| BACI HS02 bilateral trade (V202601) | The same, on the 2002 nomenclature, 2005 to 2024 | Build-time cross-checks only: the transformer vintage-equivalence gate and the rejected pre-2012 reconstruction (below) |
| UNSD HS correlation tables | Adjacent-vintage code correspondences, consolidated | Maps the dictionary's non-HS12 codes to HS12 |
The dictionary is a product of the Net Zero Industrial Policy Lab, pinned by content hash at projection time and verified against the Lab's dictionary repository (ecoclassical/NZIPL-CVCE) at its current head; the projection report records the hash, and re-running the projector is how the station follows a dictionary update. The eleven chains are Batteries, Biofuel, Electrolyzers, EVs, Geothermal, Heat Pumps, Magnets, Nuclear, Solar, Transmission, and Wind. Values are nominal US dollars; sources are in thousands of dollars and the dashboard reports billions.
The Lab's Clean Value Chain Explorer also publishes unilateral value tables aggregated from an earlier dictionary revision. Those values are no longer used here: the dictionary revision on which they were computed cannot be reconstructed from any committed file, and single-code checks show factors the published files do not document. Membership comes from the dictionary; every value is recomputed from BACI directly, so every figure on this page is reproducible from public trade data plus the committed table.
BACI mirrors reporter and partner declarations (FOB basis), so world exports equal world imports by construction in every chain and year, and world totals can be quoted from either side.
The canonical projection
data/products.csv holds one row per chain membership and position: hs6, chain, position, share, primary, dict_code, hs_rev, description, note. Its derivation rules are mechanical, so a dictionary change flows through without editorial decisions:
- Position comes from the dictionary's own columns: the Process Equipment role maps to the equipment position; every other row takes its stage, with Final Product folding into downstream. Four positions result: upstream, midstream, downstream, equipment.
- Share is the dictionary's split weight, which distributes a code across positions within a chain and sums to one per chain and code. Chain totals are therefore whole-code; shares shape only the position mix.
- HS12-native. 398 of the dictionary's 431 codes exist in BACI HS12 directly. The other 33 walk the UNSD correlation tables to their HS12 equivalents; where the HS12 code is broader than the dictionary code (the solar cell and module codes merge into an LED-carrying parent, the dedicated EV code into the broader 870390), the row says so and the drill-down shows the note.
- Primary assignment. 107 codes appear in more than one chain. Each code counts once, in the chain where it holds its most downstream position (upstream, then equipment, then midstream, then downstream), with ties resolved by a fixed chain order. Chains therefore sum to the all-chain total exactly, in both panels and in the partner blocks. The full membership of every chain, including shared codes it does not own, is visible in the table drill-down, labeled.
- Overrides live in a committed file keyed by code and chain; the build fails on any override that references a membership that does not exist. The current file is empty: the projection ships on the dictionary's own content.
An earlier version of this station drew panel 02 from a separate taxonomy workbook, which made panels 01 and 02 independent measurements that disagreed for every chain. That design is retired; the two panels are now projections of the one table above.
Positions and the headline basis
Upstream minerals count in the headline total and in panel 01, drawn as their own tier in panel 02: $401 billion of the $3,867 billion 2024 total, about 10 percent. This is a deliberate departure from the Atlas root's manufactured-basis convention, chosen so the dashboard shows the whole chain it names, extraction included, with the tier visible rather than silently excluded. Equipment, the capital goods that build the factories, is a further $377 billion and draws as a hatched band beside the material flow, because it is not a step on that flow.
Scale: what $3.87 trillion is and is not
The hero total is a full value-chain footprint: eleven chains, four positions, shared codes counted once. It is not comparable to clean-technology trade narrowly defined. The IEA's Energy Technology Perspectives 2024 puts world trade in clean technologies (final goods such as EVs, solar PV, and batteries) near $200 billion in 2023, under 1 percent of world goods trade. This basket, which now includes the EV chain, equals about 15 percent of world merchandise exports ($24.4 trillion in 2024, WTO). The two answer different questions; quote them accordingly.
The trend on this basket runs in two speeds: 1.7 percent a year from 2012 to 2019, then 6.1 percent a year from 2019 to 2024. Electric vehicles and batteries supplied $847 billion of the $1,310 billion increase over the window, about two thirds. Three chains sit at an all-time high in 2024 (EVs, transmission, nuclear); the other eight peaked between 2021 and 2023, when commodity and freight prices spiked, so below peak does not mean below-peak volume.
The window
Every panel runs on BACI HS12, 2012 to 2024: thirteen years on one nomenclature, no classification breaks. A longer window was tested and rejected. For each chain, the primary basket was walked through the UNSD correlation tables to its HS02 ancestors (each ancestor joining the chain holding the majority of its in-basket descendants), and the HS02 reconstruction was compared with the HS12 series over the thirteen overlap years, with certification requiring agreement within 2 percent at the median and 5 percent at the maximum. Five chains passed: batteries (median divergence 1.55 percent), EVs (0.26), geothermal (0.44), heat pumps (1.88), nuclear (0.33). Six chains and the all-chain total failed: solar (31 percent, the LED reclassification cluster), electrolyzers (85 percent, an HS92 catch-all code whose ancestors sweep machine tools), transmission (21), biofuel (15), wind (15), magnets (7), and the total (6.9). At the country grain, only 368 of 2,270 series certified.
A dashboard on mixed windows would have made every cross-chain and cross-country comparison depend on which series happened to certify, so the station quotes one uniform window for every chain and every economy, and no pre-2012 extension ships. The rejected reconstruction and its measured divergences are recorded here as the basis for that choice; the failures reproduce the per-product findings panel 06 documented before the test existed, which is the strongest evidence the test measures nomenclature rather than trade.
Sourcing: the China share (panel 05)
Panel 05 answers one derived question: what share of each economy's imports in the selected scope is supplied from China. It is computed in the page, at render time, from data/partners.json; no separate build step exists.
The measure. For an economy and a scope (one chain, or all eleven), the numerator is China's value in that economy's stored partner list for each chain, summed across the scope; the denominator is the economy's full imports in the scope, from the same file's per-chain totals. The division is asymmetric by construction: the denominator is always complete, while the numerator can only be understated, because partner lists store the top 12 partners per economy-chain and China can in principle sit outside one. Measured across the shipped file, that happens in 7 of 473 economy-chain cells on the chain basis (all in nuclear or biofuel, each bounded under 3 percent of its chain by the smallest stored partner) and in 26 of 473 on the downstream basis (each bounded under 1.5 percent). The panel note states the bound for the mode it is drawing.
The rows. The ten largest importers of the scope by 2024 imports, ranked within the 44 economies that carry bilateral partner detail, plus the pinned economy as an eleventh line when it sits outside the ten. China is excluded as an importer; its imports cannot come from itself. The sourcing panel ranks on the partner file because that is the file its shares are computed from; panel 04 ranks the chain table's stored per-scope country union. The two rankings agree on the top ten of every scope, and the build asserts that agreement: the stored union is selected on both sides of the ledger, and a gate ranks every BACI economy by 2024 value on each side and fails the build if any scope's top ten falls outside its stored list. An earlier build selected the union on the export side only, which let the all-chains view omit India, whose 2024 imports ($90.7B) exceed Italy's ($89.5B); the gate was seeded with that defect before the rule was fixed.
Interaction. The chain chips re-scope the panel; the Downstream toggle re-scopes it to the :down partner blocks (with a chain-level fallback if a stale file lacks them); clicking a line or label pins that economy on the import side. The CSV carries three blocks per drawn economy, the share series and both underlying dollar series, so the ratio can be rebuilt from the export alone.
Product close-ups: the price panel (06)
Panel 06 exists to show, rather than assert, the price mechanism behind the value lines. It is a separate basis, narrower than the chain table: five single HS6 product codes, each drawn as trade value against implied volume, expressed as multiples of the first year of its own window (×1) so the figures cannot be misread as dollar levels next to the $B panels. Because the volume series is defined as value divided by unit value, the wedge between the two lines is exactly the cumulative unit-value effect. The panel is world trade except solar (see below), and the country pivot does not re-scope it.
Unit values, and why they are not prices. For each product and year, the trade unit value is the value-weighted median of dollars per kilogram across bilateral trade cells that report a weight and carry at least $1 million of trade; implied volume is total value divided by that unit value. Unit values mix price with product composition, a caveat the IMF's export and import price index manual states forcefully, which is why the panel says "trade unit value" and never "price". Dollars per kilogram are also a floor on the true price decline for solar and batteries, because a 2024 kilogram carries more watts and more kilowatt-hours than a 2012 kilogram: the per-kilogram declines shown (75 percent for China's solar exports since 2012, 50 percent for lithium-ion since 2013) are smaller than the published per-watt and per-kilowatt-hour declines (about 90 percent per watt since 2008 per IRENA/pvXchange; about $1,200 to $115 per kWh, 2010 to 2024, per BloombergNEF). Those external figures are quoted on the panel with attribution; they are not drawn from this data.
Why a median and not a sum. BACI's quantity field is missing or corrupt in specific reporter-year cells: Korea-China solar quantities in 2014 are inflated roughly thirty-fold and were 86 percent of the code's world quantity that year; Malaysia and Vietnam to the United States show the same signature in 2020; the lithium-ion and large-transformer codes carry a corrupt Asia cluster in 2012. Summed quantities are therefore unusable raw. The value-weighted median gives corrupt cells only their ordinary value weight, and no per-cell deletion list exists to maintain, consistent with the station rule against spot-fixing artifacts. A bounds-trimmed shadow aggregate (cells within a factor of five of the median) is computed as a cross-check and must stay within 30 percent of the implied volume wherever weight coverage is sound; the largest observed divergence is 19 percent.
Per-product windows, scopes, and vintages. Each choice below was made from the measured evidence and is gated in the build so a future regeneration cannot silently drift:
| Product | HS6 | Scope | Vintage and window | Reason |
|---|---|---|---|---|
| Solar cells and modules | 854140 | China's exports | HS12 2012-2024 | See below |
| Lithium-ion batteries | 850760 | World | HS12 2013-2024 | The code exists only from HS12 (850780 mixes NiMH and is not backfilled); 2012 is excluded because the corrupt Asia-cluster weights drag its median to $45/kg against $71 in 2013, which would poison the index base year |
| Wind turbines | 850231 | World | HS12 2012-2024 | The HS02 reconstruction of 2012-2024 diverges from HS12 by up to 25 percent of value (concordance redistribution), so the code never supported a longer window |
| Large power transformers | 850423 | World | HS12 2012-2024 | The HS02 and HS12 vintages agree in the overlap (median divergence 0.4 percent on value, 0.7 percent on unit value), hard-gated, so the shipped HS12 series is certified continuous with the long HS02 window earlier versions published; the build fails if that agreement breaks |
| Heat pumps, non-AC | 841861 | World | HS12 2012-2024 | The code changed definition at HS07, so no long window |
Solar is China's exports. A world unit value for HS 854140 is not shippable: the code contains both photovoltaic cells and modules and LEDs, the two populations sit far apart in dollars per kilogram, and their value shares shift over the window, so a world aggregate measures composition rather than price. By 2024 the code's weighted value is 68 percent sub-$15/kg modules, and China's exports of the code are the module mode (84 to 96 percent of its weight-reporting value below $60/kg) and three-fifths of world trade under the code by the 2020s, so the solar close-up uses China's exports, disclosed on the panel. Earlier versions extended the series to 2007 on an HS02 prefix spliced at the revision boundary; that prefix retired with the uniform window, and the series now rides HS12 alone. The 2014 point stands on 31 percent weight coverage, the corrupt-quantity year; the panel tooltip discloses coverage below 75 percent. The build fails unless the series reproduces the documented solar shape on 2012 anchors: a decline of at least 60 percent over the window (measured 75), the 2021-22 polysilicon bump, and the 2023-24 fall. The same LED merge is why the solar chain fails the window test above: what pollutes one code's unit value also pollutes the chain's HS02 reconstruction.
The transformer counter-case. The large-transformer close-up runs opposite to solar and batteries: its unit value fell about 22 percent from 2013 to 2019 and then rose 61 percent from 2020 to 2024. The US producer price index for power and distribution transformers (BLS series WPU117409, public domain) rose 73 percent over the same 2020-24 span, an independent series moving the same way; on the HS02 projection of the same filings the rise reads 73 percent, with the divergence between the vintages concentrated in 2024 alone (7.9 percent on unit value against 0.1 to 3 percent in every other overlap year), and the station quotes the HS12 figure because that vintage sits closest to what reporters filed. HS 850423 sits outside the green dictionary, as do its neighbors 850421 and 850422; the transmission chain carries the 8504.3x transformer sizes and 850490 parts. The close-up uses the code directly because the panel is product close-ups, not basket members; the omission is flagged to the dictionary's maintainers.
Derived metrics
- World share. A country's exports (or imports) divided by world exports (imports) of the selected chain in the same year.
- Share vs 2014. The 2024 share minus the 2014 share, in percentage points.
- CAGR. Compound annual growth rate over the 2012 to 2024 window, labeled CAGR 12-24. Shown as a dash when the base year is below $5 million.
- CAGR 5y. Compound annual growth rate from 2019 to 2024.
- vs peak. The 2024 world export value of a chain relative to its best year in the 2012 to 2024 window.
Country coverage in the panels
World totals always sum every economy in BACI; 227 economies record trade on the basket in the 2012 to 2024 window. The country panels and the rankings table draw from a pre-computed union per chain: the top 15 economies by 2024 value and the top 20 by window-sum value, computed separately for exports and for imports and unioned, so neither side's ranking can miss an economy at the margin. The build gates that property directly: for every scope and both sides, the top 10 by 2024 value over every BACI economy must sit inside the stored union, or the build fails.
Clicking a country pivots the whole dashboard to that economy, on the side of trade it was clicked from: a click among the exporters (or an exporters table row) shows the economy's exports by chain and by position; a click among the importers shows its imports. Clicking the same economy from the other side switches the side; clicking it again on the same side, the clear button, or Escape returns to the world view. The pivot is available for the 44 economies that appear in any chain's country list; panel titles, notes, and downloads always state the economy and the side.
The two country panels always show the top 10 economies of the current selection, ranked by 2024 value. In world mode that ranking comes from the pre-computed per-chain union above; a pinned economy outside the top 10 is drawn as an eleventh line so it never disappears from its own view.
With an economy pinned, the opposite country panel turns bilateral: pin an exporter and "Who buys it" shows the top 10 destinations of that economy's exports in the selected chain, as shares of its total; pin an importer and "Who ships it" shows its top 10 suppliers. Bilateral flows come from BACI HS12 on the canonical table's primary baskets, 2012 to 2024, and load on first use; the data file stores the top 12 partners per economy, side, and scope, and every block's total is the same series the panels draw, reconciled in the build. The panel you clicked in keeps the world ranking so a different economy can always be chosen.
The Downstream toggle on the segments panel is a shared dimension: switching it re-scopes both country panels to downstream products only, 2012 to 2024. In world mode the downstream rankings are computed over every BACI economy (not only the 44 pivot economies), stored as the top 20 per chain and side, so the top 10 shown can never miss an economy; shares are shares of world downstream trade in the selected scope. With an economy pinned, the bilateral panel shows the partners of its downstream trade only. Chain mode and downstream mode state their basis in the panel title and footnote, and downloads carry a down tag in the filename.
The table follows the same logic. With a chain selected, its second mode (relabeled Segments) disaggregates the chain's downstream into individual HS-6 products, each with its code, position, growth, and path, with the other positions aggregated as context rows so shares account for the whole chain (world exports, 2012 to 2024); with an economy also pinned it shows that economy's four positions within the chain. With no chain selected it ranks the eleven chains, or the pinned economy's eleven-chain ledger. Two statistical residual codes (US Miscellaneous Pacific Islands and the pre-1999 Southern African Customs Union) are excluded from rankings but kept inside world totals. Taiwan's trade reports under BACI's "Other Asia, nes" code and is labeled Taiwan on the page.
The attribution register
Two instruments qualify the full-value convention above, and the reviewed part of one of them prints on the page. A cost share says how much of a technology a component is: a tower is about a quarter of a turbine's cost. An attribution rate says how much of a code's trade is the technology: half to four fifths of the steel-towers code is wind towers, depending on the market, measured on the two administrations that split the line out (US HTS-10 53.8 percent, EU CN8 78.8). The two quantities never mix, and neither rescales any figure on this page: chain totals stay whole-code full values under the canonical projection, and the register annotates them.
What publishes. A measurement prints only when the registry row it annotates has passed review. The protocol bars citing a draft or disputed row as a settled measurement; a parked row appears here only as an interval carrying its unsettled status, in the parked table below. That bar admits 23 of the register's 60 entries, published as 22 code-level measurements: wind's 8412.90 carries two component lines that sum into one code. Where a published code appears in the rankings drill-down, the measurement prints beside it as "Measured share of code", with the measurement type and source in the cell's tooltip. The full published set is the table below, and it also ships as machine-readable columns in data/products.csv (attr_*); a code measured for a chain carries the same values on each of its position rows there, the measurement being per chain and code.
| Chain | HS6 | Product | Measured share | Type | Year | Source |
|---|---|---|---|---|---|---|
| batteries | 282690 | Fluorides: fluorosilicates, fluoroaluminates … | 57% | trade value | 2026 | USITC/Census HS10, US imports: 2826.90.90.10 (lithium hexafluorophosphate), established 1 January 2025 in the 484(f) round, over HS6 2826.90 |
| batteries | 283324 | Sulphates: of nickel | ≥25% | end use | Research and Markets; CRU / BCInsight (Jan 2025) | |
| batteries | 850790 | Electric accumulators: parts n.e.c. in headin… | 21.5% | trade value | 2026 | Eurostat Comext DS-045409, EU27 imports from extra-EU: CN 8507.90.31 + 8507.90.39 (separators for electric accumulators, the two lines the EU splits them across) over HS6 8507.90 |
| evs | 722619 | Steel, alloy: flat-rolled, width less than 60… | ≤10% | end use | 2024 | Dataintelo; Mordor Intelligence |
| evs | 750210 | Nickel: unwrought, not alloyed | 15% | end use | 2024 | INSG World Nickel Factbook 2024; USGS MCS 2025 |
| evs | 850152 | Electric motors: AC motors, multi-phase, of a… | 5–20% | market vs trade | 2024 | Grand View Research; Global Market Insights |
| evs | 850153 | Electric motors: AC motors, multi-phase, of a… | 5–20% | market vs trade | 2024 | Grand View Research; Global Market Insights |
| heatpumps | 841430 | Compressors: of a kind used in refrigerating … | ≤45% | end use | 2024 | Refrigeration and AC compressor application split, 2024, unit basis (Kings Research refrigeration compressor market) |
| heatpumps | 841899 | Refrigerating or freezing equipment: parts th… | 8% | trade value | 2024 | BACI HS12 V202601 2024 heading-84.18 composition, own computation: machines $52.83B of which the chain's 8418.61 is $4.17B (7.9%), attributed pro rata to the parts line 8418.99 ($8.33B) |
| solar | 280461 | Silicon: containing by weight not less than 9… | ≤8% | trade value | 2024 | Bernreuter price trend + own BACI unit values over HS6 2804.61 |
| solar | 854129 | Electrical apparatus: transistors, (other tha… | 5–10% | market vs trade | 2023 | Verified Market Research IGBT 2023 + trade press split |
| solar | 854140 | Electrical apparatus: photosensitive semicond… | 69–73% | trade value | 2024 | UN Comtrade preview, the HS22 children 8541.41, 8541.42, 8541.43 and 8541.49, 18 reporters |
| transmission | 722511 | Steel, alloy: flat-rolled, width 600mm or mor… | ≥37.6% | end use | 2024 | Fact.MR grain-oriented electrical steel application segmentation (power transformers 37.6%); USITC Pub 4439/4491 (the 70/25/5 US split) |
| transmission | 722611 | Steel, alloy: flat-rolled, width less than 60… | ≥37.6% | end use | 2024 | Fact.MR grain-oriented electrical steel application segmentation (power transformers 37.6%); USITC GOES investigations Pub 4439/Pub 4491 describe the product as laminated cores for power and distribution transformers |
| transmission | 740811 | Copper: wire, of refined copper, of which the… | ≤17% | end use | 2023 | International Copper Association end-use distribution (infrastructure incl. power and telecom ~17%) |
| transmission | 850433 | Transformers: n.e.c. in item no. 8504.2, havi… | ≥20% | end use | 2021 | DOE 10 CFR 431.192 distribution-transformer definition (15-2,500 kVA dry-type), reproduced by NEMA; BIS Section 232 report HTS scope table p. 33 |
| transmission | 850434 | Transformers: n.e.c. in item no. 8504.2, havi… | ≥20% | end use | 2021 | DOE 10 CFR 431.192 (10-2,500 kVA liquid-immersed, 15-2,500 kVA dry-type); BIS Section 232 report covers HTS 8504.34 alongside the liquid lines |
| transmission | 854690 | Electrical insulators: other than of glass an… | ≥28% | end use | 2024 | Global Market Insights, Composite Insulators Market, 2024 base year, application segmentation |
| wind | 730820 | Iron or steel: structures and parts thereof, … | 53.8–78.8% | trade value | 2026 | USITC/Census HS10, US imports: 7308.20.0035 over HS6 7308.20; Eurostat Comext DS-045409, EU27 imports from extra-EU: CN 7308.20.10 (tubular wind turbine steel towers and tower-sections) over HS6 7308.20 |
| wind | 841290 | Engines: parts, for engines and motors of hea… | 45.2–50.1% | trade value | 2026 | sum of 2 measured component lines: blades (USITC/Census HS10, US imports: 8412.90.9070 (wind turbine blades) over HS6 8412.90; Eurostat Comext DS-045409, EU27 imports from extra-EU: CN 8412.90.60 (wind turbine blades) over HS6 8412.90) + hubs (USITC/Census HS10, US imports: 8412.90.9075 (wind turbine hubs) over HS6 8412.90) |
| wind | 848340 | Gears and gearing: (not toothed wheels, chain… | 9.4% | trade value | 2025/2026 | USITC/Census HS10 import statistics via api.census.gov: 8483.40.5020 (gear boxes and speed changers for wind turbines) over HS6 8483.40, US imports |
| wind | 850164 | Electric generators: AC generators, (alternat… | 15.4% | trade value | 2025/2026 | USITC/Census HS10 import statistics via api.census.gov: 8501.64.0110 (AC generators >750 kVA for wind generating sets of 8502.31) over HS6 8501.64, US imports |
Measurement types: trade value reads the split off tariff-line or code-composition trade data; end use reads a demand-side series for the product, a different quantity from trade; market vs trade reads an external market estimate against the code's trade and is the weakest form. One row is a sum: wind's 8412.90 combines the blades bracket with the hubs line, component slices of one code.
Coverage verdicts. A separate components register decomposes six chains into named components with cost shares from national-laboratory and agency sources, and scores each chain against its own filed ceiling: named, HS-coded components must reach 80 percent of what the source itself publishes as the components part of its cost denominator.
| Chain | Source basis | Named coverage | Bar | Ceiling | Verdict |
|---|---|---|---|---|---|
| wind | NREL/PR-5000-91775, land-based turbine CapEx, $1,091/kW | 0.8736 | 0.7993 | 0.9991 | PASS, +7.4 points |
| solar | NLR/TP-7A40-93857 Table 1, module bill of materials, $101.5/kWdc | 0.9480 | 0.8000 | 1.0 | PASS, +14.8 points |
| batteries | ANL/CSE-24/1 Tables 25-26, 75 kWh pack, $135.3/kWh | 0.5761 | 0.6002 | 0.7502 | GAP, 2.4 points |
| EVs | ANL/TAPS-23/3 companion workbook, vehicle manufacturing cost, $24,543 | 0.5112 | 0.8000 | 1.0 | GAP, 28.9 points |
| heat pumps | IEA ETP-2026 p. 342, components band, low end 0.60 filed | 0.3000 | 0.4800 | 0.60 | GAP, 18.0 points |
| transmission | DOE 2013 TSD Table 5.36, 75 kVA unit MSP, $1,921 | 0.4291 | 0.4027 | 0.5034 | PASS, +2.6 points |
Solar's ceiling is 1.0 by construction, its source being a bill of materials, so its pass certifies transcription and coding and says nothing about measurement. The EVs gap is structural: the anchor code is a whole vehicle, the glider is generic car content, and no row of the source clears the bar. The heat pumps gap is an evidence gap: the field's sources price one component, the compressor, and the 0.3000 is the top of the register's own 0.25 to 0.30 interval, GAP at both ends. Transmission's ceiling sits on a 2010–2011 price basis, disclosed in its filing beside the successor rulemaking's roughly 0.40 reading.
Parked rows. Seven memberships measured onto the 20 percent materiality floor. Each row records its interval and source, sums into no verdict, and names what would settle it.
| Chain, code | What it is | The bound | What settles it |
|---|---|---|---|
| solar, 7007.19 | module cover glass | 19.9–24.0% | a numerator refresh; no solar-glass tariff line exists in either market |
| solar, 7610.90 | frames and mounting | ~10–40% | a re-read with frames removed from the US numerator (the 8541.90 statistical line) |
| batteries, 3824.90 | cathode and electrolyte materials | at least 7.6%, cathode measured, electrolyte not | an electrolyte-side measurement |
| evs, 8504.40 | EV power electronics | 11–25% | a traction-inverter tariff line, which no schedule carries in 2026 |
| transmission, 8504.90 | transformer parts | 12.1–21.2% measured | a sourced grid share of the parts lines, or a boundary claim the ratified boundary does not make |
| geothermal, 8406.82 | small vapour turbines | 10–23% | a published turbine-island cost share, or HTS-10 and CN8 pulls |
| biofuel, 1514.19 | refined rapeseed and canola oil | near zero to ~50% | HTS-10 and CN8 detail read against USDA use tables |
Coverage. The adjudication registry has read 362 of 653 dictionary memberships. While coverage is incomplete no attributed total ships: an unread membership has no verdict, so an excluded absence cannot be distinguished from an unread one. The headline therefore stays a full-value footprint, and the register's numbers remain annotations. The adjudication itself, and what it did to eight chains, is written up in [Narrowing the green dictionary](dictionary-narrowing.md). The instrument files behind the register live in the working repository rather than on this site.
Known caveats
- Nominal values. No deflation is applied. Solar module and lithium-ion cell prices collapsed over the window, so dollar trade understates volume growth wherever prices fell. The reverse also holds: transformer unit values rose more than 60 percent between 2020 and 2024, so part of the transmission chain's record high is price. Eight of the eleven chain peaks fall in 2021 to 2023, when commodity and freight prices spiked; below peak does not mean below-peak volume. Panel 06 draws this mechanism from the trade data itself for five products.
- Dual-use inflation. The dictionary maps generic machinery, polymers, and metals into chains at stated weights. The visible cases: 40 percent of the electrolyzer chain is production equipment reached through an HS92 catch-all code whose HS12 successors span machine tools; wind components include generic gearing and castings; printed circuits and air-conditioner parts are two thirds of the heat-pump chain; iron and copper ores are a third of the battery chain; uranium, natural and enriched, is over two fifths of nuclear. The bilateral partner panels carry a per-chain composition note for exactly this reason: a chain flow between two economies is parts and inputs at full value, and reading it as the finished technology is the misreading the notes exist to stop. Treat levels in those chains as upper bounds. The drill-down names every code, with its share and any vintage note, so the reader can judge each basket; corrections belong in the dictionary, where every Atlas surface inherits them.
- One window, on purpose. Every series runs 2012 to 2024. A pre-2012 extension was tested and rejected because six chains and the all-chain total fail the nomenclature test (see "The window"); nothing is extrapolated, and no spliced series is drawn.
- EVs ride a residual code. The EV chain's finished vehicles travel under HS 870390, which also covers some conventional cars; plug-in hybrids share codes with conventional cars and stay outside. Read the EV downstream level ($970 billion in 2024) as an upper bound.
- Upstream reorders some rankings. With minerals counted, Kazakhstan's uranium edges Russia's fuel and reactor trade at the top of the nuclear export ranking, and Indonesia's ferronickel (assigned to geothermal, its most downstream claim on the code) lifts it to fourth among geothermal exporters. The notes travel with the chains wherever the rankings are visible.
- Trade is not production. Export shares miss domestic production consumed at home. China's solar export share of about 23 percent coexists with a production share near 80 percent; the chain basket is also several times broader than PV-specific products, which dilutes the share further.
- Biofuel misses Brazil's main ethanol line. The chain's downstream carries denatured ethanol (220720) and biodiesel (382600) but not undenatured ethanol (220710), the code carrying most fuel-ethanol trade including nearly all of Brazil's ($1.3 billion of the $9.4 billion world total in 2024). Brazil therefore shows $1.5 billion of biofuel exports in 2024, twenty-sixth among exporters, in a chain that is in any case 85 percent chemicals, metals, and equipment by value. The omission is flagged upstream; a fix belongs in the dictionary, where every Atlas surface inherits it.
Reproduction
cd story-stations/clean-trade-pulse
python3 scripts/build_products_table.py # project the dictionary -> data/products.csv (+ report)
python3 scripts/build_trade_data.py # rebuild pulse/segments/partners from products.csv + BACI
python3 scripts/build_price_panel_data.py # rebuild data/prices.json from BACI HS02+HS12
python3 scripts/check_invariant.py --strict # assert panel 01 == panel 02 on the shipped files
python3 scripts/render_method_appendices.py # re-render this page
The projector fails if any code falls outside the HS12 nomenclature, any share leaves (0, 1] or stops summing to one per chain and code, any code loses its single primary chain, any chain loses its downstream coverage, any non-HS12 code cannot be mapped, or any override references a membership that does not exist; it also fails if a reviewed attribution measurement joins no membership, mixes figure types across the component lines of one code, or tries to sum component lines when one of them bounds only one side. The trade builder re-asserts the products gates on read, then: world sums must match an independent scan, the cross-panel invariant must hold exactly from two accumulation paths, no country may exceed the world in any tier-year, downstream and equipment components must sum to their tiers, partner blocks must reproduce the panel series they sit under, the downstream rankings summed over all economies must reproduce the world downstream tier, and every emitted series must span the thirteen years with no gaps. The price-panel build carries its gates restated for the uniform window, including the cross-vintage equivalence gate that certifies the transformer series against its HS02 record. Every gate has been re-seeded with the defect it guards against and shown to fire.
Markdown source on GitHub