Loading workbench page
Fetching primary parquet sources and computing exhibits.
Fetching primary parquet sources and computing exhibits.
Between July 2018 and September 2019 the United States imposed Section 301 tariffs on roughly $370B of Chinese goods in four waves, List 1 ($34B at 25%, Jul 2018), List 2 ($16B at 25%, Aug 2018), List 3 ($200B at 10% then 25%, Sep 2018 / May 2019), and List 4a ($120B at 15% then 7.5%, Sep 2019). This page traces the imprint of those tariffs on US import flows, on border prices, and on China's own export map, using BACI 1996-2024 at the HS6-country aggregate level and WITS TRAINS MFN schedules for the pre-war baseline (Figure 7). Canonical references: Amiti-Redding-Weinstein (2019), Fajgelbaum-Goldberg-Kennedy-Khandelwal (2020), Cavallo-Gopinath-Neiman-Tang (2021), Handley-Kamal-Monarch (2024), Alfaro-Chor (2023).
Amiti, Redding & Weinstein (2019, JEP) argued the Section 301 tariffs were a nearly textbook tax on US importers, with the quantity response following textbook demand. The simplest visual test is the aggregate bilateral series, indexed so the tariff cohort enters at 100.
SELECT year, SUM(total_value)*1000 AS v FROM bilateral_year WHERE exporter_code = 156 AND importer_code = 842 AND year BETWEEN 2010 AND 2024 GROUP BY year; -- normalise by 2017 value
Fajgelbaum, Goldberg, Kennedy & Khandelwal (2020, QJE) show that Section 301 produced an almost one-for-one diversion of US demand away from tariffed Chinese supply toward third-country alternatives, with Vietnam, Mexico and Taiwan absorbing the bulk. The chart tracks each origin as a share of total US goods imports.
Bilateral-HS6 is not available in this warehouse (BACI bilateral is only at country-pair totals, while HS6 detail is at the reporter-world level). We therefore track US imports from the world for two HS6 panels: treated = a 16-code hand-picked sample of USTR List 3 (furniture HS9403, machinery parts HS8479/8483, electrical distribution HS8537/8504, filtration HS8421, plastics HS3926/3918, fabricated metals HS7326, rubber HS4016, doors HS4418, sockets HS8536, coaxial cable HS8544); control = food (HS02-HS17-HS21) and pharma (HS30) HS6 codes that stayed off every list. This panel does notidentify Section 301: third-country substitution (Vietnam, Mexico and others stepping into treated HS6 as Chinese supply was taxed out) inflates the treated series on the US-from-world margin. The CHN→USA bilateral HS6 series is what would actually test Section-301 pass-through; Fajgelbaum et al. (2020) QJE and Cavallo et al. (2021) AERI run that test on US CBP micro-data.
Amiti, Redding & Weinstein (2019) and Cavallo, Gopinath, Neiman & Tang (2021, AERI) find near-complete border pass-through on Section 301 tariffs, with much smaller retail pass-through. Their method uses matched border prices(BLS IPPs and CBP merchandise-level unit values on constant-variety bundles), not HS6 aggregate value-per-ton. What we can compute from BACI is only the latter: SUM(import_value) ÷ SUM(import_qty) in USD/ton for the two HS6 panels. This is not a pass-through measure. Composition shifts within HS6 (lighter-weight, higher-spec variants; a different mix of origins as suppliers rotate) move value-per-ton mechanically even at constant border prices.
If tariffs shifted US demand away from Chinese supply, where did Chinese supply go? Freund, Mulabdic & Ruta (2023, World Bank) document substantial supply-chain relocation away from the United States and toward the rest of the world, China's exports to non-US destinations continued to grow while US-bound exports plateaued.
The third-country gainers in Figure 6 did not conjure production from nothing. Bown (2021, PIIE WP 21-2) and Alfaro-Chor (2023) document a 'China+1' pattern in which Chinese intermediates increasingly move to Vietnam, Mexico and India for final assembly destined for the US. The chart below plots China's exports to each destination indexed to 2017 = 100, 2010-2024. If the rewiring is real, all three destinations should show a break above the pre-2018 trend.
Alfaro & Chor (2023, NBER WP 31902) document that Vietnam, Mexico, Taiwan, India and a handful of other economies picked up US import share as the China shock reversed. We rank the top 10 gainers of US-import share between 2017 and 2024 (conditional on at least $1B of 2017 US imports, to avoid small-base artefacts).
Before July 2018 the United States applied its WTO-bound MFN schedule to Chinese imports: low and stable, averaging about 1-2% across the heavy-weight manufacturing chapters (HS 84/85 machinery & electricals, HS 94 furniture, HS 73 iron/steel articles). Section 301 layered List 3 (+10pp in Sep 2018, raised to +25pp in May 2019) and List 4a (+15pp, de-escalated to +7.5pp) on top of that baseline for the targeted HS lines (USTR Federal Register 83 FR 47974; 84 FR 22564). The TRAINS MFN series in Parquet does notcarry the Section-301 add-on, so the 2019 MFN simple-average by chapter (blue bars) looks unchanged from 2017, that is the point. Handley, Kamal & Monarch (2024, AEJ: Applied) show the uncertaintyover future Section-301 expansion mattered as much as the realised rate: firms that faced higher tariff-uncertainty on their input mix cut hiring and investment even before tariffs hit.
Method note on tariff incidence. Full import-price pass-through to the US border (Amiti-Redding-Weinstein 2019; Cavallo-Gopinath-Neiman-Tang 2021) is identified from matched variety-level border prices (BLS IPPs and CBP merchandise-level unit values), not from HS6 aggregate value-per-ton (Figure 4), which composition-biases. Retail pass-through in Cavallo et al. (2021) is materially less than one, i.e., US retailers absorbed part of the tariff in margins. Fajgelbaum et al. (2020) decompose the aggregate welfare cost into tariff revenue, consumer surplus loss, and producer surplus gain; their benchmark estimate is a net annual real-income loss of roughly $51B (0.27% of GDP) from Section 301 plus retaliation.
China responded to Section 301 with four waves of bilateral tariffs on US-origin goods: Apr 2 2018 ($3B, MOFCOM Announcement 34 of 2018), Jun 16 2018 ($50B, Announcement 38), Sep 18 2018 ($60B, Announcement 42), and Aug 23 2019 ($75B, 2019 Announcement 4). Targets clustered in agriculture (HS 02 meat, HS 03 fish, HS 10 cereals, HS 12 oilseeds including soybeans HS 1201, HS 22 beverages, HS 52 cotton) and transport equipment (HS 87 vehicles, HS 88 aircraft). Like the US Section 301 overlay in Figure 7, the retaliation was a bilateral surtax on top of China's WTO-bound MFN schedule for US-origin goods, not a change to MFN itself, so the TRAINS MFN series (blue/amber bars below) looks flat through 2018-2019 for most of the retaliation chapters. The dashed overlay is the peak statutory retaliation rate from the MOFCOM notices. Bown (2021, PIIE WP 21-2) catalogues the full four-round schedule and confirms the add-on reached 25% on most agri chapters and passenger vehicles (the HS 8703 car line hit 40% briefly between Jul and Dec 2018 before being pulled back).
The Section-301 cohort is one bilateral pair inside a larger three-pole system. Tracking the US, EU27 (extra-EU exports only, GBR excluded throughout), and China as shares of world goods exports, 2010-2024, reveals whether the trade war disturbed the trajectory of the three blocs or merely accelerated a prior drift. Freund, Mulabdic & Ruta (2023) and Alfaro & Chor (2023) both argue the post-2018 divergence is the canonical signal of geoeconomic fragmentation rather than a transient tariff effect; the shares chart is the cleanest visual test of that thesis on BACI aggregates.
BACI is annual; the within-year timing of tariff-induced frontloading is invisible at that grain. UN Comtrade monthly bulks fill the gap for the four chapters that featured most heavily in the 2025 tariff debate (HS84 machinery, HS85 electrical, HS87 vehicles, HS94 furniture). Cavallo, Gopinath, Neiman & Tang (2021, AER:Insights 3(1): 19-34) document near-complete border pass-through with no retail pass-through; the flip side of that on the quantity margin is sharp pre-announcement frontloading and a post-announcement collapse, which is what a monthly index reveals.
The six BACI-traceable effects of the 2018-2019 trade war, in order of cleanness: (i) a one-off ~10% drop in US imports from China by 2019-2020 with a partial rebound (Figure 1); (ii) a -7.6pp cut in China's share of US goods imports, redistributed to Vietnam, Mexico, India and 'Other Asia, nes' (BACI 490, which carries Taiwan) (Figure 2); (iii) a treated-vs-control HS6 wedge in US imports from the world (Figure 3) that runs the 'wrong' way, treated grew faster, because non-China suppliers stepped into those HS6 lines; read it as trade-diversion evidence, not tariff-incidence identification; (iv) a jump in US import value-per-ton on the List-3 HS6 cohort relative to food/pharma (Figure 4), which is descriptive and composition-biased, not a border pass-through measurement; (v) reorientation of China's own export map toward non-US destinations (Figure 5); (vi) a reconfiguration of the US sourcing map, with 'China+1' economies absorbing the bulk of the redirected demand (Figure 6). The mechanism stack is the same one already in the canonical papers (Amiti-Redding-Weinstein 2019, Fajgelbaum-Goldberg-Kennedy-Khandelwal 2020, Cavallo et al. 2021, Freund-Mulabdic-Ruta 2023, Alfaro-Chor 2023); the BACI aggregate just puts numbers on each step at the HS6-country-year grain actually available in a public warehouse.
Data: CEPII BACI 202601 (retrieved 2026-06-01). Units: current USD, BACI-thousands multiplied by 1,000 before display; BACI quantity in tons. Country codes: BACI numeric (ISO-3166 numeric with BACI's post-reunification Germany = 276). Granularity caveat: BACI bilateral totals are not broken out by HS6, so Figure 3's DiD runs on the US-from-world panel rather than US-from-China; bilateral HS6 would require a separate ingest (e.g., UN Comtrade HS10 or CEPII BACI micro). All indices compute the 2017 base within the same aggregation as the numerator.
SELECT year, exporter_code, SUM(total_value) AS v FROM bilateral_year WHERE importer_code = 842 AND exporter_code <> 842 AND year BETWEEN 2010 AND 2024 GROUP BY year, exporter_code; -- share = v / sum(v) within year
SELECT year, SUM(CASE WHEN product_code IN (LIST3) THEN import_value END)*1000 AS treated, SUM(CASE WHEN product_code IN (CONTROL) THEN import_value END)*1000 AS control FROM country_year_product WHERE country_code = 842 AND year BETWEEN 2015 AND 2024 GROUP BY year; -- normalise each panel by its 2017 value
SELECT year, SUM(CASE WHEN product_code IN (LIST3) THEN import_value END)*1000.0 / SUM(CASE WHEN product_code IN (LIST3) THEN import_qty END) AS t_uv, SUM(CASE WHEN product_code IN (CONTROL) THEN import_value END)*1000.0 / SUM(CASE WHEN product_code IN (CONTROL) THEN import_qty END) AS c_uv FROM country_year_product WHERE country_code = 842 AND year BETWEEN 2015 AND 2024 GROUP BY year;
SELECT year, SUM(CASE WHEN importer_code = 842 THEN total_value END)*1000 AS to_us, SUM(CASE WHEN importer_code <> 842 AND importer_code <> 156 THEN total_value END)*1000 AS to_row FROM bilateral_year WHERE exporter_code = 156 AND year BETWEEN 2010 AND 2024 GROUP BY year;
SELECT year, importer_code, SUM(total_value)*1000 AS v FROM bilateral_year WHERE exporter_code = 156 AND importer_code IN (704, 484, 699) AND year BETWEEN 2010 AND 2024 GROUP BY year, importer_code; -- index each destination by its 2017 value
WITH us_imp AS (
SELECT year, exporter_code, SUM(total_value)*1000 AS v
FROM bilateral_year WHERE importer_code = 842 AND exporter_code <> 842
AND year IN (2017, 2024) GROUP BY year, exporter_code
), totals AS (SELECT year, SUM(v) AS tot FROM us_imp GROUP BY year)
SELECT iso3, sh2024 - sh2017 AS delta
FROM (us_imp JOIN totals USING (year))
-- pivoted to 2017/2024 share columns, filter v2017 > 1e9, order by delta DESC LIMIT 10SELECT SUBSTR(hs4, 1, 2) AS chap,
AVG(CASE WHEN year = 2017 THEN mfn_simple_avg END) AS mfn_2017,
AVG(CASE WHEN year = 2019 THEN mfn_simple_avg END) AS mfn_2019
FROM 'tariff_hs4_summary.parquet'
WHERE reporter_code = 840
AND SUBSTR(hs4, 1, 2) IN ('39','40','42','44','73','84','85','94')
GROUP BY chap ORDER BY chap;SELECT SUBSTR(hs4, 1, 2) AS chap,
AVG(CASE WHEN year = 2017 THEN mfn_simple_avg END) AS mfn_2017,
AVG(CASE WHEN year = 2019 THEN mfn_simple_avg END) AS mfn_2019
FROM 'tariff_hs4_summary.parquet'
WHERE reporter_code = 156
AND SUBSTR(hs4, 1, 2) IN ('02','03','10','12','22','52','87','88')
GROUP BY chap ORDER BY chap;SELECT year, SUM(CASE WHEN exporter_code = 842 THEN total_value END)*1000 AS us_exp, SUM(CASE WHEN exporter_code IN (EU27) AND importer_code NOT IN (EU27) THEN total_value END)*1000 AS eu_exp, SUM(CASE WHEN exporter_code = 156 THEN total_value END)*1000 AS cn_exp, SUM(total_value)*1000 AS world_exp FROM bilateral_year WHERE year BETWEEN 2010 AND 2024 GROUP BY year; -- shares = *_exp / world_exp
SELECT period, SUBSTR(cmdCode, 1, 2) AS hs2, SUM(primaryValue) AS v
FROM read_parquet('data/parquet/comtrade_monthly.parquet')
WHERE reporterCode = 842 AND partnerCode = 0 AND flowCode = 'M'
AND SUBSTR(cmdCode, 1, 2) IN ('84', '85', '87', '94')
AND period BETWEEN 202301 AND 202512
GROUP BY period, hs2; -- index = v / v[period=202401] * 100 within hs2