Loading replication
Fetching primary parquet sources and recomputing the published exhibits.
Fetching primary parquet sources and recomputing the published exhibits.
Caliendo & Parro’s 2015 REStud paper re-estimates the welfare gains from NAFTA inside a multi-sector Ricardian framework and, in doing so, produces a widely-cited set of sectoral trade elasticities. Their Table 1 shows θ (the dispersion parameter in the Fréchet productivity distribution, which equals the sectoral trade elasticity in their model) ranging from 0.37 for “Other transport” up to 51.08 for Petroleum (full-sample column). We reproduce the wide dispersion using HS6-level Kee-Nicita-Olarreaga demand elasticities distributed on this site as trade_elasticity.parquet.
Caliendo & Parro (2015) estimate a Ricardian model with 20 tradable sectors (ISIC Rev.3) plus a non-tradable sector, and use triple-differenced tariff variation across country triplets (exporter × importer × third country) to identify sectoral trade elasticities. Their full-sample estimates (Table 1) range from 0.37 to 51.08, with Petroleum at the top (51.08), Mining at 15.72, Office machinery at 12.79, Wood at 10.83, Paper at 9.07, and the lowest estimates in Other transport (0.37) and Machinery n.e.c. (1.52). The wide dispersion matters: with a single common elasticity (as in single-sector Armington models), welfare gains from trade are predicted too low for some sectors and too high for others. The paper’s central lesson is quantitative: counterfactual welfare changes from trade-policy shocks depend on the sectoral composition of the elasticity vector, not just a scalar.
Rather than re-running the Caliendo-Parro triple-difference on CEPII-BACI tariff data (a substantial econometric exercise requiring harmonised tariff panels), we use the HS6-level trade elasticities distributed in this site’s trade_elasticity.parquet. These come from the Kee-Nicita-Olarreaga (2008) global import demand estimates, re-estimated on updated data. They are notthe same object as Caliendo-Parro’s θ (which is a Fréchet dispersion), but both measure how sharply quantities respond to price changes, and both take values in the same order-of-magnitude range. We report |σ| by convention (the raw parameter is signed) and group HS6 codes into their 21 HS Sections.
Across 4,566 HS6 products with a valid elasticity estimate, |σ| ranges from 0.10 to 131.80. Median is 7.89; the interquartile range is 5.15 to 12.88. The 10th-90th percentile span is 3.27 to 21.15. Mean is 10.93.
Figure 1 reports our HS-Section median |σ| in isolation. The sharper test of concordance is head-to-head: take each of Caliendo & Parro’s 20 ISIC Rev.3 sectors, map to its closest HS Section, and plot CP’s θ against our median |σ|. Perfect agreement would put every dot on the 45-degree line; the cross-estimator gap (CP triple-differenced tariff variation vs Kee-Nicita-Olarreaga semi-elasticities) is the residual. The two estimators target the same economic object (sectoral curvature of import demand), and a positive rank correlation is the minimum condition for either to be useful in welfare counterfactuals.
Arkolakis-Costinot-Rodríguez-Clare (2012, AER) show that for a broad class of models including Caliendo-Parro’s multi-sector EK, the welfare cost of closing the economy to trade in sector k is ΔWk = 1 − πii,k1/θk, where πii,k is the home expenditure share and θk is the sector trade elasticity. For illustrative purposes: at a common home share πii= 0.90 (typical OECD manufacturing), CP’s lowest-elasticity sector “Other transport” (θ = 0.37) implies ΔW ≈ 24.8% (a roughly 25-percent welfare loss from autarky: low elasticity means imperfect substitution, so variety matters a lot), while the highest-elasticity sector Petroleum (θ = 51.08) implies ΔW ≈ 0.21% (near homogeneous goods: losing imports costs little). Same 10% import share, two orders of magnitude in welfare loss: the central quantitative point that justifies sector-specific elasticities in CP’s NAFTA decomposition. Intermediate-goods linkages through the input-output matrix (CP Equation 7, βjk) amplify this further: a 1% cost shock in Chemicals propagates into Metal Products and Machinery at rates that depend on the IO share matrix and on each downstream sector’s θ. CP’s NAFTA counterfactual puts US welfare gains at 0.08% and Mexico at 1.3%, decomposed into tariff-reduction (tau) and terms-of-trade channels.
Arkolakis-Costinot-Rodríguez-Clare (2012, AER) show that the welfare gain from trade relative to autarky in a broad class of models (including Caliendo-Parro) collapses to the one-line sufficient statistic ΔWi = 1 − πii1/θ, where πii is the home expenditure share (one minus import penetration) and θ is the aggregate trade elasticity. Under NAFTA (1994) then USMCA (2020) continuity, we track 1 − πii1/5(θ = 5, a representative aggregate value within CP Table 1’s range) for each NAFTA member year-by-year. This is the ACR gains-from-trade level; first differences are the year-on-year welfare change attributable to changes in the openness wedge.
CP’s Table 4 reports Mexico’s NAFTA welfare gain as +1.31%aggregate, decomposed by sector through their multi-sector EK machinery. The ACR one-line formula ΔWsec = 1 − πii,sec1/θsec lets us build the cross-section shadow of that decomposition: for each HS Section in Mexico’s trade book, compute the welfare gap from autarky at 1996 and at 2019, using sector-specific θ (median |σ| across HS6 products in the section). The changeover 1996-2019 is the sector’s contribution to Mexico’s openness-driven welfare move across the NAFTA + WTO era.
CP’s flagship counterfactual in Table 4 is the introduction of NAFTA: welfare under the 1993 tariff schedule versus the post-1994 schedule, holding everything else fixed. The inverse exercise (what does each NAFTA member lose if USMCA collapses and trade with the other two reverts to MFN, zero preferential margin, assumed here as a complete intra-bloc shutdown) is a cleaner policy object in 2026. For each member i, we compute baseline πii = 1 − Mi/(GDPi + Mi − Xi) and counterfactual πiicf that strips intra-NAFTA imports and exports out of both numerator and denominator. The ACR welfare loss from breakdown is ΔWloss = πiicf,1/θ − πii1/θ (larger home share after intra-bloc shutdown means closer to autarky).
source: Caliendo and Parro (2015), Review of Economic Studies, Table 1 full-sample column, p. 17.
| quantity | published value | replicated value | absolute difference |
|---|---|---|---|
| Minimum elasticity | 0.37 | 0.10 | 0.27 |
| 25th percentile elasticity | 2.71 | 5.15 | 2.45 |
| Median elasticity | 6.32 | 7.89 | 1.57 |
| 75th percentile elasticity | 10.03 | 12.88 | 2.86 |
| Maximum elasticity | 51.08 | 131.80 | 80.72 |
| sector | θ |
|---|---|
| Agriculture | 8.11 |
| Mining | 15.72 |
| Food | 2.55 |
| Textile | 5.56 |
| Wood | 10.83 |
| Paper | 9.07 |
| Petroleum | 51.08 |
| Chemicals | 4.75 |
| Plastic | 1.66 |
| Minerals | 2.76 |
| Basic metals | 7.99 |
| Metal products | 4.30 |
| Machinery n.e.c. | 1.52 |
| Office | 12.79 |
Our |σ| range (0.10 to 131.80) is wider than Caliendo-Parro’s (0.37 to 51.08). Four reasons. First, aggregation level: CP use 20 ISIC Rev.3 sectors, while we use ~4,500 HS6 products: a finer grid admits more extreme values, especially for thinly-traded narrowly-defined commodities (lignite, specific hydrocarbons). Second, identification strategy: CP use triple-differenced tariff variation between country triplets; the elasticities on this site come from the Kee-Nicita-Olarreaga (2008) semi-elasticity of import demand, a different econometric object. Third, sector-vs-product mapping: Caliendo-Parro’s “Petroleum” sector corresponds to HS Chapter 27 (mineral fuels); we observe a median of 24.97 in HS Section V, which contains all mineral products: close but not identical boundaries. Fourth, estimation era: Kee-Nicita-Olarreaga used ~2001 trade data; Caliendo-Parro used 1993 tariff panels; both pre-date a decade of changed trade costs. None of this should be read as a claim that the CP numbers are wrong. The point is that once you go sector-by-sector (or product-by-product), trade elasticities really do span three orders of magnitude, and any welfare calculation that assumes a single scalar is quantitatively misleading.
@article{caliendo_parro_2015,
author = {Caliendo, Lorenzo and Parro, Fernando},
title = {Estimates of the Trade and Welfare Effects of NAFTA},
journal = {Review of Economic Studies},
volume = {82},
number = {1},
pages = {1--44},
year = {2015},
doi = {10.1093/restud/rdu035}
}Product-level elasticities power the tariff simulator at /tariff-lab. Return to the replication gallery.
SELECT p.section, COUNT(*) AS n,
quantile_cont(ABS(te.sigma), 0.50) AS median_abs_sigma,
AVG(ABS(te.sigma)) AS mean_abs_sigma
FROM trade_elasticity te
JOIN products p ON p.code = te.hs6
WHERE te.sigma IS NOT NULL AND p.section IS NOT NULL
GROUP BY p.section
ORDER BY p.section;-- HS Section medians from Figure 1's query, joined manually to CP Table 1 SELECT p.section, quantile_cont(ABS(te.sigma), 0.50) AS median_abs_sigma FROM trade_elasticity te JOIN products p ON p.code = te.hs6 WHERE te.sigma IS NOT NULL AND p.section IS NOT NULL GROUP BY p.section; -- Then merged in app code with CP_TABLE1 via the CP_TO_HS bridge above.
-- ACR welfare level under NAFTA continuity
WITH M AS (SELECT importer_code AS code, year, SUM(total_value) AS M FROM bilateral_year WHERE importer_code IN (842,124,484) GROUP BY importer_code, year),
X AS (SELECT exporter_code AS code, year, SUM(total_value) AS X FROM bilateral_year WHERE exporter_code IN (842,124,484) GROUP BY exporter_code, year),
GDP AS (SELECT CASE iso3_o WHEN 'USA' THEN 842 WHEN 'CAN' THEN 124 WHEN 'MEX' THEN 484 END AS code,
year, MAX(gdp_o) AS GDP
FROM gravity_bilateral WHERE iso3_o IN ('USA','CAN','MEX') GROUP BY iso3_o, year)
SELECT g.code, g.year, 1 - POWER(1 - M/(GDP+M-X), 1.0/5) AS acr_gain
FROM GDP g JOIN M USING(code, year) JOIN X USING(code, year);-- Sectoral ACR welfare, MEX, 1996 vs 2019
WITH te AS (SELECT hs6, ABS(sigma) AS abs_sigma FROM trade_elasticity WHERE sigma IS NOT NULL),
ps AS (SELECT code AS hs6, section FROM products WHERE section IS NOT NULL),
mex AS (SELECT year, product_code AS hs6, SUM(import_value) AS M, SUM(export_value) AS X
FROM country_year_product
WHERE country_code = 484 AND year IN (1996, 2019)
GROUP BY year, product_code),
joined AS (SELECT mex.year, ps.section, mex.M, mex.X, te.abs_sigma
FROM mex JOIN ps ON ps.hs6 = mex.hs6
LEFT JOIN te ON te.hs6 = mex.hs6)
SELECT section, year, SUM(M) AS M_sec, SUM(X) AS X_sec,
quantile_cont(abs_sigma, 0.50) AS theta_sec,
1 - SUM(M) / NULLIF(SUM(M) + GREATEST(SUM(X), 0), 0) AS pi_ii
FROM joined GROUP BY section, year;
-- Then: ΔW_sec = [1 − π19^(1/θ)] − [1 − π95^(1/θ)].-- USMCA breakdown counterfactual
WITH m_all AS (SELECT importer_code AS code, SUM(total_value) AS m FROM bilateral_year
WHERE year=2019 AND importer_code IN (842,124,484) GROUP BY importer_code),
x_all AS (SELECT exporter_code AS code, SUM(total_value) AS x FROM bilateral_year
WHERE year=2019 AND exporter_code IN (842,124,484) GROUP BY exporter_code),
m_in AS (SELECT importer_code AS code, SUM(total_value) AS m_in FROM bilateral_year
WHERE year=2019 AND importer_code IN (842,124,484) AND exporter_code IN (842,124,484)
GROUP BY importer_code),
x_in AS (SELECT exporter_code AS code, SUM(total_value) AS x_in FROM bilateral_year
WHERE year=2019 AND exporter_code IN (842,124,484) AND importer_code IN (842,124,484)
GROUP BY exporter_code),
gdp AS (SELECT CASE iso3_o WHEN 'USA' THEN 842 WHEN 'CAN' THEN 124 WHEN 'MEX' THEN 484 END AS code,
MAX(gdp_o) AS gdp FROM gravity_bilateral WHERE year=2019 GROUP BY iso3_o)
SELECT g.code,
1 - POWER(1 - m/(gdp + m - x), 1.0/5) AS w_base,
1 - POWER(1 - (m-m_in)/(gdp + (m-m_in) - (x-x_in)), 1.0/5) AS w_cf,
w_base - w_cf AS breakdown_loss
FROM gdp g JOIN m_all USING(code) JOIN x_all USING(code)
LEFT JOIN m_in USING(code) LEFT JOIN x_in USING(code);| Electrical |
| 10.60 |
| Communication | 7.07 |
| Medical | 9.98 |
| Auto | 1.01 |
| Other transport | 0.37 |
| Other | 5.00 |