Loading replication
Fetching primary parquet sources and recomputing the published exhibits.
Fetching primary parquet sources and recomputing the published exhibits.
Peter Schott’s 2008 Economic Policy paper asks whether Chinese exports are becoming genuinely more sophisticated, that is, whether the composition of what China sells overseas is moving toward the composition of what rich economies sell. His headline was yes, strongly, over his 1972-2005 sample. Our extension of the Finger-Kreinin similarity index to 2024 says the convergence continued, though more slowly, through the 2010s and into the present decade.
Schott (2008, Economic Policy) documents that between 1972 and 2005 the composition of Chinese exports moved sharply toward the composition of OECD exports. His central evidence is twofold. First, the Finger-Kreinin overlapof China’s export basket with each OECD country rose steeply, especially after WTO accession (2001). Second, at the 10-digit HS level (the finest US import category) US imports from China and from the OECD show extensive within-product unit-value overlap, meaning the two groups ship nominally identical products but at very different quality/price points. The paper’s conceptual framing: traditional measures of comparative advantage mislead when low- and high-income producers share the same product code but ship different quality varieties; specialisation happens withinproducts, not only across them. Within that caveat, China’s basket profile converged toward rich-country profiles unambiguously across his sample.
We compute the Finger-Kreinin index at HS6 (Schott worked from 7-digit TSUSA, then 10-digit HS, US-import categories), between China and a 38-country OECD aggregate, for every year 1996-2024. Finger-Kreinin is the overlap measure FK = Σ_p min(s_CHN,p, s_OECD,p) where s_c,p is country c’s export share of product p in its total export basket. FK ∈ [0, 1], with 1 = identical compositional baskets and 0 = disjoint baskets. The series rises overall (though not monotonically, with small dips around 1998, 2008-2010, and 2017) from 0.335 in 1996 to 0.475 in 2024, with the 1996-2005 sub-window (Schott’s coverage) rising 0.062 and the 2005-2024 extension rising a further 0.078.
WITH chn AS (
SELECT year, product_code, SUM(export_value) AS v
FROM country_year_product WHERE country_code = 156 GROUP BY year, product_code
),
chn_tot AS (SELECT year, SUM(v) AS tot FROM chn GROUP BY year),
oecd AS (
SELECT year, product_code, SUM(export_value) AS v
FROM country_year_product WHERE country_code IN (<OECD-38 codes>)
GROUP BY year, product_code
),
oecd_tot AS (SELECT year, SUM(v) AS tot FROM oecd GROUP BY year)
SELECT year,
SUM(LEAST(chn.v / ct.tot, oecd.v / ot.tot)) AS fk_similarity
FROM chn FULL OUTER JOIN oecd USING(year, product_code)
JOIN chn_tot ct USING(year) JOIN oecd_tot ot USING(year)
GROUP BY year ORDER BY year;Schott’s (2008) second empirical pillar is that even at very fine HS classifications, US imports from China and US imports from the OECD show substantial within-HS unit-value overlap: the two groups ship nominally the same products but at very different quality/price points. We approximate this on BACI export unit values (median US$ per tonne per HS6, the unit_values table, 2000-2024) by the share of HS6 products in which China and the United States both export and their unit values lie within a factor of 2 of each other. The share moved from 64% in 2000 to 30% in 2024, while the median ratio uvCHN/uvUSA moved from 0.70 to 0.36.
Figure 2 uses the United States as the benchmark; Schott (2008) ran many benchmarks, and a cleaner read comes from comparing Chinese unit values to the median OECD-38 exporter at each HS6, a broader reference that smooths over country-specific composition (US aerospace-heavy, Germany auto-heavy, Japan electronics-heavy). For each HS6 shared by China and at least one OECD-38 reporter in a given year, we compute ln(uvCHN / uvOECD-median) and take the median across HS6 codes within the year. Zero is parity; negative is Chinese unit values below the OECD benchmark. The median gap moved from -0.33 in 2000 to -0.86 in 2024, a -0.53 log-point unit-value gap trajectory, across an average of 4,926 shared HS6 codes per year.
Schott (2008) emphasised that HS codes hide quality/price heterogeneity: nominally identical HS6 buckets contain goods shipped at very different US$ per tonne across reporters. A way to track this within-product fragmentation is to compute, for each (year, HS6) pair with at least 10 reporters, the standard deviation of ln(uv) across reporters, and then average across HS6 within year. Rising within-HS6 dispersion = more vertical specialisation, more quality differentiation at the fine aggregate. The cross-HS6 average standard deviation of ln(unit value) moved from 1.08 in 2000 to 1.17 in 2024; the 90/10 percentile ratio moved from 24.7× to 26.3×.
The Finger-Kreinin index in Figure 1 is a sum across HS6 codes: each product contributes min(s_CHN,p, s_OECD,p) to the total. Decomposing the 2024 level identifies which products do most of the basket-overlap work. A product carries a large min-contribution either when both China and the OECD-38 have a substantial share of their respective baskets in it (genuine overlap), or when one side dominates and the other is small but still nonzero (the bound constrains the contribution to the smaller share). Reading the top-15 list therefore tells you exactly which sectors put basket-similarity on the board in 2024: the products where China and the OECD-38 are both deeply specialised.
source: Schott (2008), Economic Policy, Figures 2-4 and pp. 9-19.
qualitative replication, no published table matched
Same: Finger-Kreinin construction, FK = Σp min(sCHN,p, sref,p); rising overall over time; post-2001 acceleration. Differs: HS6 aggregation (ours) vs 7-digit TSUSA / 10-digit HS US-import categories (Schott); OECD-38 aggregate reference (ours) vs bilateral China-vs-each-rich-country (Schott); 1996-2024 window (ours) vs 1972-2005 (Schott); we add reporter-level BACI unit-value diagnostics, but do not reproduce Schott's US-import HS10 specification.
Three divergences from Schott’s 2008 specification. First, aggregation level: we compute FK at HS6, whereas Schott worked from 7-digit TSUSA (1972-1988) then 10-digit HS (1989-2005) US-import categories. The aggregation cut shifts the level of FK because any two baskets look less identical the more narrowly you cut each product; this means our absolute FK numbers are not directly comparable to Schott’s levels, only to each other over time. Second, comparator: Schott compared China to each individual rich country (US, Germany, Japan) as well as the aggregate; we use an OECD-38 aggregate share of world exports, which smooths out single-country idiosyncrasies (Germany’s automotive specialisation, Ireland’s pharma-offshoring) and therefore understates convergence with the leading specialists. Third, sample period: Schott’s HS data started in 1972; BACI starts in 1996, so we miss the steep pre-WTO portion of the catch-up trajectory. None of these reverse the direction of the finding: the sign and the broad speed of convergence survive.
A deeper caveat Schott emphasised and we preserve: HS classification hides within-productquality differences, so even perfect FK overlap would not imply basket-quality equality. The /quality page attacks the unit-value side of this question; FK is the compositional side.
@article{schott_2008,
author = {Schott, Peter K.},
title = {The Relative Sophistication of Chinese Exports},
journal = {Economic Policy},
volume = {23},
number = {53},
pages = {6--49},
year = {2008},
doi = {10.1111/j.1468-0327.2007.00195.x}
}Related: /china-shock on the production-side mechanics of the same trajectory. Return to the replication gallery.
WITH chn AS (SELECT year, product_code, median_export_uv uv FROM unit_values
WHERE reporter='CHN' AND median_export_uv > 0 AND year >= 2000),
usa AS (SELECT year, product_code, median_export_uv uv FROM unit_values
WHERE reporter='USA' AND median_export_uv > 0)
SELECT year,
AVG(CASE WHEN ABS(LN(chn.uv / usa.uv)) <= LN(2) THEN 1.0 ELSE 0.0 END) AS share_within_2x,
MEDIAN(chn.uv / usa.uv) AS median_ratio
FROM chn JOIN usa USING(year, product_code)
GROUP BY year ORDER BY year;WITH oecd_iso AS ( SELECT iso3 FROM countries WHERE code IN (<OECD-38 M.49 codes>) ), oecd_uv AS ( SELECT uv.year, uv.product_code, MEDIAN(uv.median_export_uv) AS uv FROM unit_values uv JOIN oecd_iso o ON o.iso3 = uv.reporter WHERE uv.median_export_uv > 0 AND uv.year >= 2000 GROUP BY uv.year, uv.product_code ), chn AS ( SELECT year, product_code, median_export_uv AS uv FROM unit_values WHERE reporter='CHN' AND median_export_uv > 0 ) SELECT year, MEDIAN(LN(chn.uv / oecd_uv.uv)) AS chn_over_oecd FROM chn JOIN oecd_uv USING(year, product_code) GROUP BY year ORDER BY year;
WITH uv AS (
SELECT year, product_code, reporter, median_export_uv AS uv
FROM unit_values WHERE median_export_uv > 0 AND year >= 2000
),
per_yp AS (
SELECT year, product_code, STDDEV_POP(LN(uv)) AS sd_log_uv,
quantile_cont(uv, 0.90) / NULLIF(quantile_cont(uv, 0.10), 0) AS p90_p10
FROM uv GROUP BY year, product_code HAVING COUNT(*) >= 10
)
SELECT year, AVG(sd_log_uv), AVG(p90_p10) FROM per_yp GROUP BY year ORDER BY year;WITH chn AS (
SELECT product_code, SUM(export_value) AS v FROM country_year_product
WHERE year = 2024 AND country_code = 156 GROUP BY product_code
),
chn_tot AS (SELECT SUM(v) AS tot FROM chn),
oecd AS (
SELECT product_code, SUM(export_value) AS v FROM country_year_product
WHERE year = 2024 AND country_code IN (<OECD-38 codes>) GROUP BY product_code
),
oecd_tot AS (SELECT SUM(v) AS tot FROM oecd)
SELECT chn.product_code, p.name,
LEAST(chn.v/ct.tot, oecd.v/ot.tot) AS contrib,
chn.v/ct.tot AS chn_share, oecd.v/ot.tot AS oecd_share
FROM chn JOIN oecd USING(product_code), chn_tot ct, oecd_tot ot
JOIN products p ON p.code = chn.product_code
ORDER BY contrib DESC LIMIT 15;