Loading research piece
Fetching primary parquet sources and computing exhibits.
Fetching primary parquet sources and computing exhibits.
Global merchandise exports fell -7.6% from $18.61T in 2019 to $17.20T in 2020 (Baldwin & Weder di Mauro 2020). By 2024 the world had recovered to 1.23x of its 2019 level. But the aggregate hides a wide cross-country dispersion. This note constructs a recovery index for each country as the ratio of its actual 2024 export value to a log-linear pre-pandemic (2010-2019) trend extrapolated forward. Values above 1 indicate over-trend recovery; below 1 indicate permanent loss relative to the pre-COVID path. Of the 160 countries with USD 1B+ of exports in 2019 and a fittable trend, 118 recovered above trend and 42 remained below.
World merchandise exports (summed across all BACI reporters) trace the textbook great trade collapsepattern first diagnosed for 2008-09 by Baldwin (2009) and re-enacted in 2020 (Bems, Johnson & Yi 2013 on trade-elasticity amplification). Commodity prices, services substitutes, and containment-driven services-to-goods rotation (Espitia et al. 2022) then pushed nominal trade to new highs by 2022 before a 2023 softening on lower energy prices.
SELECT year, SUM(total_exports) * 1000 AS world_usd FROM 'country_year_totals.parquet' WHERE year BETWEEN 2000 AND 2024 AND total_exports > 0 GROUP BY year ORDER BY year;
For each country with at least USD 1B in exports in 2019, we fit ln(exports) = a + b · year on 2010-2019, extrapolate to 2024, and compute recovery = actual_2024 / trend_2024. Log-linear extrapolation is the canonical baseline in the 'trade resilience' literature (Espitia et al. 2022, World Bank Policy Research WP 9869). The map colours deviations from 1, so blue = over-trend, red = under-trend.
Ranking countries by the 2024recovery index gives a shortlist of pandemic-era winners and losers. Cross-checking the top tail against the post-2018 US-China tariff reshuffle (Fajgelbaum & Khandelwal 2022, Annual Review of Economics) and the regional near-shoring trend (Alfaro & Chor 2023, NBER WP 31661) helps distinguish countries that recovered because of structural shifts from those merely riding a commodity-price rebound.
Hausmann & Hidalgo (2009, PNAS) argue that economic complexity ECI measures the diversity and sophistication of a country's export basket, and that complex economies enjoy more durable trade growth. If complexity also confers resilience, high-ECI economies should cluster above the recovery index value of 1. The scatter below plots the 2019 ECI (last pre-pandemic observation) against the 2024 recovery index, bubble-sized by 2024 export value.
We regress the recovery index on (i) log-GDP in 2019 (WDI NY.GDP.MKTP.CD, current USD), (ii) ECI in 2019, and (iii) backward GVC participation, measured as the foreign value-added share of gross exports (EXGR_FVA / EXGR, OECD TiVA, 2019) per Koopman, Wang & Wei (2014, AER). Heteroskedasticity-consistent standard errors would refine the inference; the naive OLS SE below is a first pass. OxCGRT policy-stringency (Hale et al. 2021, Nature Human Behaviour) is a natural fourth regressor but is not yet ingested into the workbench and is flagged below as a known methodology gap.
data/parquet/, so the regression set omits a direct lockdown-stringency control. Peak-stringency 2020-2021 would distinguish whether harsher lockdowns permanently dented export capacity or merely delayed recovery.| regressor | coef | std. err. | t |
|---|---|---|---|
| intercept | 4.2385 | 1.0209 | 4.15 |
| log GDP 2019 | -0.0986 | 0.0370 | -2.67 |
| ECI 2019 | 0.0832 | 0.0620 | 1.34 |
| FVA share 2019 | -0.0171 | 0.0046 | -3.68 |
| n = 75, R² = 0.183, residual SE = 0.388. | |||
Figure 5 bins countries with observed ECI into quartiles of 2019complexity and reports mean recovery index per bin. This is a non-parametric check on the OLS slope above: if complexity were unrelated to recovery, mean recovery should be flat across bins. The pattern also serves as a robustness check on the functional form: Hausmann & Hidalgo (2009) ECI is ordinal in design (rankings of rankings), so parametric linear slopes may overstate or understate precision.
The merchandise exports used in Figures 1-5 tell only half the story. Services trade (tourism, transport, financial services, ICT, professional services) was hit harder in 2020 by border closures and the travel shutdown (Baldwin & Tomiura 2020, Economics in the Time of COVID-19; WTO 2023, World Trade Report) and then recovered more slowly than goods because travel and in-person services persisted as lagging components. Figure 6 indexes world services and goods exports to 2019 = 100 using World Bank WDI data (BX.GSR.NFSV.CD, BX.GSR.MRCH.CD), constant-sample across 152 ISO3 reporting both series in every year 2018-2024.
Baldwin & Tomiura (2020) and WTO (2023, World Trade Report 2023) argue the 2020 shock hit sectors asymmetrically: vehicles and transport equipment fell harder than agri-food in 2020, and recovery paths diverged through 2022-2024 by sectoral exposure to commodity-price cycles and shifting consumer demand. Figure 7 maps nine HS2-based sectoral baskets in (dip ratio, recovery ratio)-space. The dip ratio is world exports in 2020 divided by 2019 (100 = flat, below 100 = contraction). The recovery ratio is 2024 over 2019. Sectors in the upper-right (dip >= 95, recovery >= 105) are V-shaped; those with recovery below 95 are L-shaped, they never regained their 2019 peak even four years on. The rest are U-shaped: dipped and returned roughly to trend.
SELECT e.iso3, e.eci, rec.recovery_index, rec.actual_2024_usd FROM recovery rec JOIN eci_rankings e ON e.iso3 = rec.iso3 WHERE e.year = 2019;
SELECT year, SUM(services) AS svc, SUM(goods) AS goods
FROM (
SELECT year, iso3,
MAX(CASE WHEN indicator='BX.GSR.NFSV.CD' THEN value END) AS services,
MAX(CASE WHEN indicator='BX.GSR.MRCH.CD' THEN value END) AS goods
FROM 'wdi_data.parquet'
WHERE year BETWEEN 2018 AND 2024
GROUP BY year, iso3
) WHERE services > 0 AND goods > 0 GROUP BY year ORDER BY year;-- V vs L by sector basket
WITH cat AS (
SELECT product_code, CASE
WHEN SUBSTR(product_code,1,2) = '27' THEN 'energy'
WHEN SUBSTR(product_code,1,2) IN ('26') OR CAST(SUBSTR(product_code,1,2) AS INTEGER) BETWEEN 72 AND 83 THEN 'ores+metals'
WHEN CAST(SUBSTR(product_code,1,2) AS INTEGER) BETWEEN 1 AND 24 THEN 'agri+food'
WHEN SUBSTR(product_code,1,2) IN ('28','29','30','38') THEN 'chemicals+pharma'
WHEN CAST(SUBSTR(product_code,1,2) AS INTEGER) BETWEEN 50 AND 63 THEN 'textiles+apparel'
WHEN SUBSTR(product_code,1,2) = '85' THEN 'electronics'
WHEN SUBSTR(product_code,1,2) = '84' THEN 'machinery'
WHEN CAST(SUBSTR(product_code,1,2) AS INTEGER) BETWEEN 86 AND 89 THEN 'vehicles+transport'
WHEN SUBSTR(product_code,1,2) = '90' THEN 'medical+optical'
ELSE NULL END AS cat
FROM (SELECT DISTINCT product_code FROM country_year_product))
SELECT c.cat, cyp.year, SUM(cyp.export_value) * 1000 AS v
FROM country_year_product cyp JOIN cat c USING (product_code)
WHERE cyp.year BETWEEN 2018 AND 2024 AND c.cat IS NOT NULL
GROUP BY c.cat, cyp.year;-- per-country dip (2020/2019) vs recovery (2024/2019), > USD 1B in 2019
WITH yr AS (
SELECT c.iso3, cyt.year, cyt.total_exports * 1000 AS v
FROM 'country_year_totals.parquet' cyt
JOIN (SELECT iso3, MIN(code) AS code FROM 'countries.parquet' GROUP BY iso3) c
ON c.code = cyt.country_code
WHERE cyt.year IN (2019, 2020, 2024)
)
SELECT iso3,
MAX(CASE WHEN year=2020 THEN v END) / MAX(CASE WHEN year=2019 THEN v END) * 100 AS dip,
MAX(CASE WHEN year=2024 THEN v END) / MAX(CASE WHEN year=2019 THEN v END) * 100 AS rec
FROM yr GROUP BY iso3
HAVING MAX(CASE WHEN year=2019 THEN v END) >= 1e9;