IESET.
Hypotheses·trade·cbam_2026_implementation_carbon_leakage_test

The EU Carbon Border Adjustment Mechanism (CBAM) entered its definitive phase on 1 January 2026 (after a 2023-2025 transitional reporting-only phase), imposing financial liability on EU importers of cement, iron and steel, aluminium, fertilisers, electricity, and hydrogen embedding non-EU carbon costs.

The carbon-leakage hypothesis (high-emission imports flow to non-EU producers because of EU ETS price differential) predicts that prior to CBAM (2018-2023), high-carbon-intensity imports had grown faster than low-carbon-intensity imports of the same products, and that CBAM phase-in (2026 onwards) reverses or attenuates this pattern. This hypothesis tests both legs: (a) the pre-CBAM leakage signature in cross- border carbon-intensity-weighted trade flows, and (b) the early post- CBAM-2026 flow re-routing measurable in 2026-2027 customs data.

INCONCLUSIVEengine/runs/cbam_2026_implementation_carbon_leakage_test

INCONCLUSIVE_DATA_PENDING — no outcome variable loaded; missing: ['un_comtrade:HS72_HS76_HS25_HS31', 'un_comtrade:HS72_HS76_HS25_HS31_volume', 'constructed: country-product CO2/tonne intensity (from CBAM transitional-phase declarations 2023-2025; cross-checked against IEA / OECD embedded-carbon-trade tables) × tonnes imported. Manual-drop pending under data/manual/derived/.', 'constructed: extra-EU imports / (EU production + extra-EU imports - EU exports) for each CBAM product. Eurostat prom_dsx (production) + comtrade (trade).', 'un_comtrade:HS72_HS76_HS25_HS31']

confidence cueResult card produced; verdict unclassified.

policy briefCoverage too thin

In ordinary language

When countries open more of the economy to trade and competition, do people end up with better long-run income or productivity outcomes?

plain answer

This test cannot make a firm call yet. no outcome variable loaded; missing: ['un_comtrade:HS72_HS76_HS25_HS31', 'un_comtrade:HS72_HS76_HS25_HS31_volume', 'constructed: country-product CO2/tonne intensity (from CBAM transitional-phase declarations 2023-2025; cross-checked against IEA / OECD embedded-carbon-trade tables) × tonnes imported.

why it matters

This matters because trade claims should change belief only when they survive a pre-declared empirical test.

how the test works

It compares 17 country or place units from 2018 to 2027, using a did callaway santanna design, with fixed effects for country product and year quarter.

what was measured
What changed
  • Cbam transitional dummy
  • Cbam definitive dummy
What we checked
  • Log eu imports cbam products value
  • Log eu imports cbam products volume tonnes
  • Cbam carbon intensity weighted imports
what this does not prove

A single test is not the whole truth. It narrows the claim under a specific sample, time period, and method. Strong policy conclusions need the pattern to survive nearby tests, alternative data, and serious objections.

verification

No evidence packet has been generated yet.

Results

engine/runs/cbam_2026_implementation_carbon_leakage_test
1007550250201820232027DEUFRAITAESPNLDBELPOL
illustrative sketch · run pending
No coefficients yet. When the model fires, this chart will show log_eu_imports_cbam_products_value across 17 sampled countries over 20182027.
The shapes above are stylised — none of the lines are real data.
Placeholder for cbam_2026_implementation_carbon_leakage_test. Published chart will be generated from engine/runs/cbam_2026_implementation_carbon_leakage_test/chart_data.json.

Pre-registration

registration ordering unverified
first-spec commit 4c8ce8e · 2026-07-18T22:11:21Z
run generated · 2026-05-03T07:07:19Z
Run timestamp predates this path's first git-add commit (rebase, rename, or pre-git local run). Spec hash is still the path's first-add commit — not repository HEAD — but ordering is not a clean pre-registration proof.

The EU Carbon Border Adjustment Mechanism (CBAM) entered its definitive phase on 1 January 2026 (after a 2023-2025 transitional reporting-only phase), imposing financial liability on EU importers of cement, iron and steel, aluminium, fertilisers, electricity, and hydrogen embedding non-EU carbon costs. The carbon-leakage hypothesis (high-emission imports flow to non-EU producers because of EU ETS price differential) predicts that prior to CBAM (2018-2023), high-carbon-intensity imports had grown faster than low-carbon-intensity imports of the same products, and that CBAM phase-in (2026 onwards) reverses or attenuates this pattern. This hypothesis tests both legs: (a) the pre-CBAM leakage signature in cross- border carbon-intensity-weighted trade flows, and (b) the early post- CBAM-2026 flow re-routing measurable in 2026-2027 customs data.

Falsification criterion — what would disprove this

set before the run · honoured after

This hypothesis is considered falsified if:

Pre-CBAM leakage leg not supported if (a) EU ETS price elasticity of carbon-intensity-weighted imports is zero or wrong-signed at p<0.10, OR (b) CBAM-product imports did not grow faster from high-intensity sources than low-intensity sources 2018-2023. Post-CBAM leg not supported if (c) the post-2026 × carbon-intensity-gap interaction is zero on EU imports, OR (d) trade-deflection (third-country to non-EU) is zero (suggesting volume just stops rather than reroutes — not leakage but demand destruction). Mixed verdict permitted: pre-leakage signature without post-CBAM reversal would suggest CBAM is inadequately calibrated.

formal test & threshold
test:      cbam_carbon_leakage_pre_post_did
threshold: Pre-CBAM: ETS-price elasticity of high-vs-low-intensity import share > 0.10 at p<0.10 AND Post-CBAM 2026: post × carbon-gap β on EU imports < -0.10 at p<0.10 AND Trade-deflection: third-country to non-EU exports rise ≥ 5% in 2026 relative to 2024-2025 baseline for high-gap exporters.

Method

Template
did_callaway_santanna
Fixed effects
country_product, year_quarter
Clustering
country_product
Sample
17 countries · 20182027
Evidence type
causal

Primary specification: differences-in-differences with treatment = CBAM-covered products × post-2023-10 (transitional) and × post-2026-01 (definitive). Continuous treatment intensity = exporter-EU carbon- intensity gap. Outcome: log EU imports value + carbon-intensity- weighted imports. Control: similar-but-non-CBAM HS lines (e.g. semi-finished metal manufactures outside CBAM scope). Pre-CBAM leakage test (2018-2023): regress carbon-intensity-weighted EU imports on EU ETS price; positive elasticity = leakage signature. Post-CBAM test (2026-2027): event study around 2026-01, with carbon- intensity gap as moderator. Higher-gap exporters should see larger EU-import contraction. Trade-deflection test: parallel regression on third-country exports to non-EU destinations; positive shift = re-routing (carbon relocates rather than reduces). Known limitations: (1) 2026-2027 outcome window is short — full identification of post-definitive-phase response needs 2027-2028 data; v1 reports early reading, v1.1 updates. (2) Carbon-intensity data quality during transitional phase is mixed; many exporters used default values rather than actual emissions data, limiting the gap-treatment-intensity precision. (3) Substitution within HS chapters (low-carbon-intensity producers gain EU market share at expense of high-intensity producers) is a within-product reallocation that matters for climate but is sometimes mislabelled "leakage." (4) CBAM-covered products are 6 chapters (initial scope); the broader anti-leakage claim covers products outside scope (chemicals, plastics, glass) where leakage may continue unmeasured.

Data

VariableSourceTransform
log_eu_imports_cbam_products_value
outcome
un_comtrade:HS72_HS76_HS25_HS31tier 2
log
log_eu_imports_cbam_products_volume_tonnes
outcome
un_comtrade:HS72_HS76_HS25_HS31_volumetier 2
log
cbam_carbon_intensity_weighted_imports
outcome
constructed:country-product CO2/tonne intensity (from CBAM transitional-phase declarations 2023-2025; cross-checked against IEA / OEtier 5
level
log_extra_eu_imports_share_of_consumption
outcome
constructed:extra-EU imports / (EU production + extra-EU imports - EU exports) for each CBAM product. Eurostat prom_dsx (production)tier 5
log
log_third_country_exports_to_non_eu_destinations
outcome
un_comtrade:HS72_HS76_HS25_HS31tier 2
log
cbam_transitional_dummy
treatment
constructed:indicator = 1 from 2023-10 (transitional reporting phase begin) onwards; 0 otherwise.tier 5
indicator
cbam_definitive_dummy
treatment
constructed:indicator = 1 from 2026-01 (definitive phase, financial liability) onwards; 0 otherwise.tier 5
indicator
cbam_carbon_intensity_gap_eu
treatment
constructed:(exporter-country CO2/tonne for product) − (EU CO2/tonne benchmark for product). Higher gap = higher CBAM cost burden. Ctier 5
level
log_eu_ets_price
control
eea:eu_ets_verified_emissionstier 2
log
log_real_gdp_eu
control
world_bank_wdi:NY.GDP.MKTP.KDtier 2
log
log_brent_oil
control
imf_pcps:POILBREtier 1
log
log_natural_gas_ttf
control
constructed:TTF spot, monthly. eex fetcher pending or manual-drop.tier 5
log
exporter_country_real_exchange_rate_eur
control
constructed:bilateral REER vs EUR for major CBAM exporters (CHN, TUR, IND, KOR, RUS). bis or imf source.tier 5
log

ready  ·  pending  ·  reconstruct-needed

Detailed result card

Result card — cbam_2026_implementation_carbon_leakage_test

Verdict: INCONCLUSIVE_DATA_PENDING — no outcome variable loaded; missing: ['un_comtrade:HS72_HS76_HS25_HS31', 'un_comtrade:HS72_HS76_HS25_HS31_volume', 'constructed: country-product CO2/tonne intensity (from CBAM transitional-phase declarations 2023-2025; cross-checked against IEA / OECD embedded-carbon-trade tables) × tonnes imported. Manual-drop pending under data/manual/derived/.', 'constructed: extra-EU imports / (EU production + extra-EU imports - EU exports) for each CBAM product. Eurostat prom_dsx (production) + comtrade (trade).', 'un_comtrade:HS72_HS76_HS25_HS31']

Pre-registration

  • Claim: The EU Carbon Border Adjustment Mechanism (CBAM) entered its definitive phase on 1 January 2026 (after a 2023-2025 transitional reporting-only phase), imposing financial liability on EU importers of cement, iron and steel, aluminium, fertilisers, electricity, and hydrogen embedding non-EU carbon costs. The carbon-leakage hypothesis (high-emission imports flow to non-EU producers because of EU ETS price differential) predicts that prior to CBAM (2018-2023), high-carbon-intensity imports had grown faster than low-carbon-intensity imports of the same products, and that CBAM phase-in (2026 onwards) reverses or attenuates this pattern. This hypothesis tests both legs: (a) the pre-CBAM leakage signature in cross- border carbon-intensity-weighted trade flows, and (b) the early post- CBAM-2026 flow re-routing measurable in 2026-2027 customs data.
  • Falsification rule: Pre-CBAM leakage leg not supported if (a) EU ETS price elasticity of carbon-intensity-weighted imports is zero or wrong-signed at p<0.10, OR (b) CBAM-product imports did not grow faster from high-intensity sources than low-intensity sources 2018-2023. Post-CBAM leg not supported if (c) the post-2026 × carbon-intensity-gap interaction is zero on EU imports, OR (d) trade-deflection (third-country to non-EU) is zero (suggesting volume just stops rather than reroutes — not leakage but demand destruction). Mixed verdict permitted: pre-leakage signature without post-CBAM reversal would suggest CBAM is inadequately calibrated.
  • Falsification test: cbam_carbon_leakage_pre_post_did

Estimate

  • Error: no outcome variable loaded; missing: ['un_comtrade:HS72_HS76_HS25_HS31', 'un_comtrade:HS72_HS76_HS25_HS31_volume', 'constructed: country-product CO2/tonne intensity (from CBAM transitional-phase declarations 2023-2025; cross-checked against IEA / OECD embedded-carbon-trade tables) × tonnes imported. Manual-drop pending under data/manual/derived/.', 'constructed: extra-EU imports / (EU production + extra-EU imports - EU exports) for each CBAM product. Eurostat prom_dsx (production) + comtrade (trade).', 'un_comtrade:HS72_HS76_HS25_HS31']

Variables resolved

  • constructed: indicator = 1 from 2023-10 (transitional reporting phase begin) onwards; 0 otherwise. → cbam_transitional_dummy (treatment, publisher=constructed, n=170)
  • constructed: indicator = 1 from 2026-01 (definitive phase, financial liability) onwards; 0 otherwise. → cbam_definitive_dummy (treatment, publisher=constructed, n=170)
  • world_bank_wdi:NY.GDP.MKTP.KD → log_real_gdp_eu (controls, publisher=world_bank_wdi, n=14066)
  • imf_pcps:POILBRE → log_brent_oil (controls, publisher=imf_pcps, n=629)
  • constructed: bilateral REER vs EUR for major CBAM exporters (CHN, TUR, IND, KOR, RUS). bis or imf source. → exporter_country_real_exchange_rate_eur (controls, publisher=constructed, n=170)

Variables missing data

  • un_comtrade:HS72_HS76_HS25_HS31 (outcome, name=log_eu_imports_cbam_products_value) — vintage not on disk
  • un_comtrade:HS72_HS76_HS25_HS31_volume (outcome, name=log_eu_imports_cbam_products_volume_tonnes) — vintage not on disk
  • constructed: country-product CO2/tonne intensity (from CBAM transitional-phase declarations 2023-2025; cross-checked against IEA / OECD embedded-carbon-trade tables) × tonnes imported. Manual-drop pending under data/manual/derived/. (outcome, name=cbam_carbon_intensity_weighted_imports) — vintage not on disk
  • constructed: extra-EU imports / (EU production + extra-EU imports - EU exports) for each CBAM product. Eurostat prom_dsx (production) + comtrade (trade). (outcome, name=log_extra_eu_imports_share_of_consumption) — vintage not on disk
  • un_comtrade:HS72_HS76_HS25_HS31 (outcome, name=log_third_country_exports_to_non_eu_destinations) — vintage not on disk
  • constructed: (exporter-country CO2/tonne for product) − (EU CO2/tonne benchmark for product). Higher gap = higher CBAM cost burden. Continuous treatment intensity. (treatment, name=cbam_carbon_intensity_gap_eu) — vintage not on disk
  • eea:eu_ets_verified_emissions (controls, name=log_eu_ets_price) — vintage not on disk
  • constructed: TTF spot, monthly. eex fetcher pending or manual-drop. (controls, name=log_natural_gas_ttf) — vintage not on disk

Generated by scripts/run_panel_fe.py at 2026-05-03T07:07:19+00:00

Strongest opposing argument

Every hypothesis ships with its charitable opposing argument. The framework earns credibility by handling objections at their strongest, not weakest.

Notes

Data readiness: - UN Comtrade: ready (un_comtrade fetcher) - Eurostat prom_dsx production + sts_inpr_m: ready - IEA / OECD embedded-carbon-trade tables: manual-drop pending - CBAM transitional declarations: manual-drop pending under data/manual/derived/ - EU ETS price: eea ready - WDI / IMF PCPS / TTF: as elsewhere Run when CBAM declaration manual-drop is populated and 2026Q1-Q2 customs data ships (typically 90-day lag).

Authored framework. Read the transparency note.