Loading research piece
Fetching primary parquet sources and computing exhibits.
Fetching primary parquet sources and computing exhibits.
On 24 February 2022 the Russian Federation invaded Ukraine. The subsequent cascade of G7 and EU sanctions, the exit of Russian hydrocarbons from the European market, and the Black Sea Grain Initiative between July 2022 and July 2023 produced the largest peacetime reconfiguration of commodity trade flows since the 1973 oil embargo. Using CEPII BACI bilateral-trade and product data, this page is a pre/post event study around the February 2022 break. It contrasts 2019-2021 averages against 2023-2024 averages for three commodity clusters where Russia and Ukraine were pivotal: mineral fuels (HS 27), cereals (HS 10), and fertilizers (HS 31).
Figure 1 plots Russian export values by HS chapter from 2015 through 2024. HS 27 (mineral fuels and oils) peaked in 2022 at roughly $350.3B, a price-driven spike since Urals crude, Russian LNG, and coal traded at wartime premia through the middle of 2022 (IEA, Oil Market Report June 2022; IEA, Gas Market Report Q3 2022). By 2024 the same chapter had contracted from the 2022 peak to $235.5B, roughly in line with the 2019-2021 pre-war average. That is the combined effect of the EU ban on seaborne Russian crude (December 2022) and refined products (February 2023), the G7/EU $60/bbl price cap, and the redirection of cargo to Asian buyers at widened discounts. HS 31 (fertilizers) held up despite export quotas and Western self-sanctioning because ammonia, urea, and potash were explicitly carved out of EU and US sanctions packages (FAO, Food Outlook November 2022 and June 2023).
SELECT year, SUBSTR(product_code,1,2) AS chapter, SUM(export_value) * 1000 AS v
FROM 'country_year_product/**/*.parquet'
WHERE country_code = 643
AND SUBSTR(product_code,1,2) IN ('27','10','31')
AND year BETWEEN 2015 AND 2024
GROUP BY year, chapter ORDER BY year, chapter;Figure 2 pairs the EU27 against the three large non-aligned buyers of Russian goods. In the pre-war window (2019-2021) the EU27 absorbed $149.1B of Russian exports on average versus $85.7B going to China, India, and Türkiye combined. In the post window (2023-2024) the EU27 figure fell to $44.2B while the CIT bloc rose to $224.0B. India, in particular, went from a marginal buyer to the second-largest destination for Russian crude at Urals-blend discounts, documented in the IEA Oil Market Report (monthly issues, 2022-2024) and in the Centre for Research on Energy and Clean Air price-cap monitor. This sub-figure uses bilateral totals because BACI bilateral-year is not product-disaggregated in this repo; Russian exports to the CIT bloc are overwhelmingly HS 27 in composition (IEA Russia Country Analysis, 2023).
Figure 3 contrasts EU27 imports from the top 15 non-EU origins in 2019 against 2024. Russia drops from the 4th largest extra-EU supplier in 2019 to a much smaller position in 2024. Norway, Saudi Arabia, and the United States absorbed most of the hydrocarbon gap: Norway became the largest pipeline-gas supplier to the EU after Nord Stream was cut, and US LNG shipments to EU terminals expanded sharply from mid-2022 onwards (IEA, Gas Market Report Q1 and Q4 2023; European Commission REPowerEU progress report, 2024). Figures cover all goods, not HS 27 alone, because the BACI bilateral-year table in this repo is not product-disaggregated. Rachel (2023) argues that the war accelerates the reversal of globalization in the specific segments where cross-bloc trust is a pre-condition for supply, and energy is the textbook case.
Sanctions on goods flowing to Russia were circumvented in part through a small set of third countries whose exports to Russia surged between 2021 and 2024. Figure 3b compares bilateral exports to the Russian Federation from seven candidate re-export hubs in 2021 (pre-war baseline) against 2024. Chupilkin, Javorcik & Plekhanov (2023, EBRD Working Paper276) document this channel using Comtrade mirror data and identify Türkiye, Kazakhstan, the UAE, Armenia, and Kyrgyzstan as the dominant corridors for dual-use goods and consumer electronics; Simola (2023, BOFIT Policy Brief 7/2023) reaches the same ranking on Eurostat and EU-member export data. The magnitudes below are total goods, not restricted to sanctioned HS lines, because the BACI bilateral_year table in this repo is not product-disaggregated.
Figure 3c zooms to HS 27 (mineral fuels) and compares each major producer's total world exports between 2021 (pre-war baseline) and 2024. The bilateral panel in this workbench is not HS-disaggregated, so this reads as the supply curve that was available to the EU, not a direct EU-bilateral measurement. The pattern is consistent with the IEA Oil Market Report(monthly issues 2022-2024) and Gas Market Report (quarterly): Norway and the US (LNG plus crude) posted the largest dollar-value increases, while Russia's HS 27 exports fell sharply on the cap-plus-ban regime. Middle-East and North-African producers (Qatar LNG, Saudi and Iraqi crude, Algerian gas) scaled more modestly; Libya and Azerbaijan tracked closer to flat on capacity constraints.
Russia and Belarus jointly anchored about 40 percent of world potash exports and roughly 15 percent of world nitrogen-fertilizer exports in the pre-war baseline (FAO, World Fertilizer Trends and Outlook to 2022; IFA, Public Summary May 2023). The Belaruskali sanctions of April 2021 and the wartime self-sanctioning around Russian HS 31 forced importers in South Asia and Latin America to rebalance toward Moroccan phosphate (OCP), Canadian potash (Nutrien), and Chinese urea. Figure 3d compares each major fertilizer producer's total HS 31 world exports between 2021 and 2024. Same caveat as Figure 3c: the workbench bilateral panel is not HS-disaggregated, so this is the global supply curve that could fill demand, not direct EU27 bilateral measurement.
Figure 4 tracks the top 10 destinations of total Ukrainian exports in 2021 (pre-war baseline), 2022 (the corridor year, including the Black Sea Grain Initiative launched 22 July 2022), and 2024 (post-corridor, after Russia withdrew from the initiative in July 2023). Ukraine is a cereals superpower: global HS 10 exports from Ukraine were $13.5B in 2021 and $11.1B in 2024, with a trough of $10.7B in 2022 when Black Sea ports were blockaded (FAO, Food Outlook November 2022 and June 2024). Total bilateral exports are shown here since the repo's bilateral table is not product-disaggregated; grain is the dominant line for most of these destinations.
Figure 5 isolates HS 1001 (wheat and meslin), the single product line that the Black Sea Grain Initiative was designed to move. Because the workbench's bilateral panel is not product-disaggregated, each destination's wheat value is computed by allocating the country-level HS 1001 total across the top six buyers in proportion to their share of UKR bilateral exports that year. Total UKR HS 1001 export value moved from $6.3B in the pre-war year (2021) to $3.8B at the 2022 trough and $4.6B in 2024 after the de-facto corridor stabilised. The six destinations plotted here accounted for the bulk of those shipments; Egypt, Indonesia, Türkiye, and Pakistan are the wheat buyers flagged in FAO Food Outlook November 2022 and June 2024 as most exposed to Ukrainian supply.
Event study: T-statistic on the 2023-2024 minus 2019-2021 mean is not reported because the sample is the population of BACI bilateral flows, not a draw. The comparison is an accounting identity on the post-minus-pre averages. The CEPII BACI 202601 (retrieved 2026-06-01) release covers 1996-2024 and is the harmonised mirror of UN Comtrade. The bilateral_year table in this repo is at exporter-importer-year resolution, not at HS6; chapter-level bilateral flows (for example, Russian HS 27 to Türkiye separately from HS 10 to Türkiye) are therefore approximated by total bilateral values where the dominant component is known from IEA, FAO, and trade-press reporting. Where HS-chapter resolution is available (country_year_product), it is used directly (Figures 1 and the Ukraine grain-total headline). Bachmann, Baqaee, Bayer, Kuhn et al. (2022, ECONtribute Policy Brief 028) simulate the welfare cost of a sudden Russian-gas cutoff for Germany at 0.5-3% of GNE; Itskhoki and Mukhin (2022, NBER WP 30117) characterise the ruble's initial crash and fast recovery as a textbook sanctions-equilibrium response; Kilic Celik, Kose and Ohnsorge (2023, World Bank) document the redirection channel in bilateral-flow microdata.
SELECT year,
SUM(CASE WHEN importer IN (EU27) THEN total_value END) * 1000 AS to_eu,
SUM(CASE WHEN importer IN ('CHN','IND','TUR') THEN total_value END) * 1000 AS to_cit
FROM 'bilateral_year/**/*.parquet'
WHERE exporter_code = 643 AND year BETWEEN 2015 AND 2024
GROUP BY year ORDER BY year;WITH eu AS (/* EU27 codes */)
SELECT exporter_code, SUM(CASE WHEN year=2019 THEN total_value END)*1000 AS v2019,
SUM(CASE WHEN year=2024 THEN total_value END)*1000 AS v2024
FROM 'bilateral_year/**/*.parquet'
WHERE importer_code IN eu AND exporter_code NOT IN eu AND year IN (2019,2024)
GROUP BY exporter_code ORDER BY v2024 DESC LIMIT 15;SELECT exporter_iso, SUM(CASE WHEN year=2021 THEN total_value END)*1000 AS v2021,
SUM(CASE WHEN year=2024 THEN total_value END)*1000 AS v2024
FROM 'bilateral_year/**/*.parquet'
WHERE importer_code = 643
AND exporter_iso IN ('TUR','KAZ','ARE','SRB','KGZ','ARM','GEO')
AND year IN (2021, 2024)
GROUP BY exporter_iso ORDER BY v2024 DESC;SELECT country_code, SUM(CASE WHEN year=2021 THEN export_value END)*1000 AS v2021,
SUM(CASE WHEN year=2024 THEN export_value END)*1000 AS v2024
FROM 'country_year_product/**/*.parquet'
WHERE SUBSTR(product_code,1,2) = '27'
AND country_code IN (top 10 energy origins)
AND year IN (2021, 2024)
GROUP BY country_code ORDER BY v2024 DESC;SELECT country_code, SUM(CASE WHEN year=2021 THEN export_value END)*1000 AS v2021,
SUM(CASE WHEN year=2024 THEN export_value END)*1000 AS v2024
FROM 'country_year_product/**/*.parquet'
WHERE SUBSTR(product_code,1,2) = '31'
AND country_code IN (top 12 fertilizer origins)
AND year IN (2021, 2024)
GROUP BY country_code ORDER BY v2024 DESC;WITH wheat AS ( SELECT year, SUM(export_value)*1000 AS v FROM 'country_year_product/**/*.parquet' WHERE country_code = 804 AND LEFT(product_code,4) = '1001' AND year BETWEEN 2020 AND 2024 GROUP BY year ), bi AS ( SELECT year, importer_iso AS iso3, SUM(total_value)*1000 AS v FROM 'bilateral_year/**/*.parquet' WHERE exporter_code = 804 AND year BETWEEN 2020 AND 2024 GROUP BY year, iso3 ), tot AS ( SELECT year, SUM(total_value)*1000 AS v FROM 'bilateral_year/**/*.parquet' WHERE exporter_code = 804 AND year BETWEEN 2020 AND 2024 GROUP BY year ) SELECT bi.year, bi.iso3, (bi.v / tot.v) * wheat.v AS wheat_usd FROM bi JOIN tot USING (year) JOIN wheat USING (year);