Can a complexity rank carry Indonesia's nickel argument?
A replication and stress test on CEPII BACI, 1995–2024. The pipeline reproduces the Harvard Atlas's ordering of the world almost exactly — and that is precisely why the single number the case page leads with, Indonesia's rank, cannot bear the weight put on it. Meanwhile the nickel story turns out to be larger than the page says in tonnes, and smaller in what a tonne is worth.
Abstract
Question. The case makes two quantitative claims: that Indonesia's economic complexity rank barely moved over a decade while its neighbours climbed, and that processed-nickel exports grew roughly fifteen-fold. We ask whether either statement is supported by the data the case itself publishes.
Method. CEPII BACI 202601 (HS92, 1995–2024), Balassa revealed comparative advantage at HS4, ECI by the eigenvector method, benchmarked against the Growth Lab's published HS92 complexity rankings. The nickel chain is re-derived in tonnes as well as dollars; partner concentration is recomputed on a partner roster frozen for thirty years; and the failed export-reconciliation check is propagated through to the complexity result rather than argued away.
Findings. The pre-registered rank-correlation check — written into the repository and never computed — passes: our country ordering agrees with the Atlas at Spearman ρ between 0.946 and 0.987 (mean 0.975) in all 30 years, against a registered floor of 0.90. But the number the page publishes is a rank, and in Indonesia's neighbourhood the index is so densely packed that 11 economies sit inside 0.095 of the index — 9.5% of one standard deviation. The decade change the page reports (-2 places) is 1.9% of a standard deviation, against a year-to-year swing of up to 14 places. The page's claim that Vietnam, the Philippines and India "each climbed twenty or more places over the same decade" is false on the case's own data — the largest is 12 — and false on the Atlas's too (18). On nickel: exports grew 14.65× in dollars but 34.62× in tonnes, because the average dollar-per-tonne fell 58%, from US$5,454 to US$2,307 a tonne. Two checks we expected to break held: the diversification of Indonesia's customer base survives a partner roster frozen for thirty years intact (101% of the measured fall), and the failed export reconciliation (17.9% above Indonesia's own figure) moves the complexity rank by at most 2 places under any assumption we could construct.
Conclusion. The case's structure is sound and its instrument replicates. Its headline is a rank, and a rank is the one statistic this instrument cannot resolve. The finding worth publishing is not where Indonesia sits but what its downstreaming actually bought: 34.62 times the tonnage for 14.65 times the money.
1 The claim under test
Economic complexity is the most policy-active idea in development economics of the last twenty years. It is quoted in Indonesian industrial-policy documents, it underwrites the argument for hilirisasi — downstreaming — and it arrives as a single, memorable number: a country's position in a global ranking. The case page this article reviews leads with exactly that number, and pairs it with the nickel story: #78 in 2024, against #76 a decade earlier; fifteen times the processed-nickel exports; a rank that barely moved.
That sentence contains three separable assertions — a level, a change, and a comparison — plus an implicit fourth, that the fifteen-fold figure measures what a reader will assume it measures. We test each against the case's own published data, against an independently published benchmark, and against the physical quantities the trade file also records and the case never opened.
A pipeline can be correct and its headline still be unsupported. Those are different claims and they need different evidence.
2 Prior art, and the benchmark we replicate
Hidalgo & Hausmann (2009) defined the Economic Complexity Index as the second eigenvector of a country-similarity matrix built from a binary country-by-product matrix of revealed comparative advantage, following Balassa (1965). Hidalgo, Klinger, Barabási & Hausmann (2007) supplied the product space and the proximity measure the case uses for its map.
Mealy, Farmer & Teytelboym (2019) proved what the index actually is: ECI is equivalent to a spectral clustering of the country-product network — a dimensionality reduction that partitions economies into two groups by what they export. That result matters here, because a clustering coordinate is designed to separate the ends of a distribution, not to order the middle. Indonesia is in the middle.
Our benchmark is the Growth Lab's published complexity rankings, which ship an HS92-based ECI and rank for every country and year — the same product classification the case uses. That makes a direct, like-for-like replication possible, and it is the comparison the case's own repository specified.
3 Data and method
Flows. CEPII BACI release 202601, HS92, 1995–2024, a mirror-reconciled reconstruction of UN Comtrade in which each bilateral flow is a reliability-weighted average of what the exporter and the importer declared (Gaulier & Zignago 2010). Values are FOB in both directions; quantities are metric tonnes. Goods only — BACI carries no services.
Sample and index. The case's own rule: economies with population ≥ 1 million and total trade ≥ US$1 billion. Balassa RCA at HS4, Mcp = 1 where RCA ≥ 1, then the second eigenvector of the row- and column-normalised co-occurrence matrix, standardised and signed so that diversified economies score high.
Independent re-implementation. Everything in sections 4–6 is computed from a separate implementation written for this review, not from the case's pipeline. It lands within a mean of 2.4 places of the case's published rank across all 30 years. That agreement is what licenses the disagreements that follow.
Registered in advance, and what happened to it. The repository fixed
four thresholds before any result was read. The rank-correlation floor of
0.90 against the Atlas was never computed — the constant sits in
config.py unused. The acceptance window for Indonesia's own rank,
#66–#72, was checked on 2023 (#71,
inside) and not on 2024 (#78, outside). We run the first here and report the
second. The export-reconciliation and nickel-import checks the case does publish are
re-derived unchanged in sections 8 and 9.
4 Finding one — the gate that was written and never run, run
The case's configuration file registers a rank-correlation floor: our complexity ordering must agree with the Harvard Atlas at Spearman ρ ≥ 0.90 in every overlapping year. No code ever evaluates it. Because the Growth Lab publishes an HS92 ECI for every country and year, evaluating it is cheap, so we did.
It passes, and not narrowly. The correlation runs from 0.946 to 0.987, mean 0.975, and clears the registered floor in 30 of 30 years. Two independently built pipelines, on the same classification but different code, different sample rules and a different implementation of the eigenvector step, order the world's economies the same way.
This is the strongest evidence available that the case's complexity machinery is correct, and it should be said plainly before anything else. It is also the reason the next section is a problem rather than a bug report.
5 Finding two — the ordering replicates; the rank does not
If two pipelines agree at ρ = 0.975, how far apart can they put one country? On Indonesia, a long way. The case publishes #78 of 156 for 2024; the Atlas publishes #69 of 145. The obvious suspect is the sample: a bigger roster shifts every rank. So we removed it — re-ranking our own ECI over only the economies the Atlas itself ranks.
The sample is not the explanation. On an identical roster we still place Indonesia a mean of 11.1 places below the Atlas, and we place it lower in 30 of 30 years — never once higher. A one-directional offset of that size, from pipelines that agree at ρ = 0.975, is the signature of a statistic that is well determined in aggregate and poorly determined for any individual country in the crowded middle.
The reason is visible once you stop looking at ranks and look at the scores they are made from.
11 economies — JOR, EGY, DOM, KAZ and Indonesia among them — occupy 0.095 of an index whose standard deviation is 1.0. Ten places of rank cost 9.5% of a standard deviation. Qatar sits one place above Indonesia and Russia one place below; nobody would claim those three economies have measurably different productive capabilities, and the index does not claim it either.
The decade change the page reports — -2 places — is 1.9% of one standard deviation of the underlying index. It is not a small movement. It is not a movement.
The case's own series says the same thing louder. Indonesia's published rank moves a mean of 4.3 places every year with a standard deviation of 5.7, and the largest single-year jump in the sample is 14 places (2008→2009). Between 2023 and 2024 alone it moved from #71 to #78. Against that noise, a 2-place decade difference carries no information whatever.
The benchmark in the repository is misdated. The case validates against "the Atlas, #69 of 133" for 2023 and reports agreement "within three places". On the Atlas's own HS92 series, #69 is the 2024 figure; the 2023 figure is #60 of 145. Re-ranked on the Atlas's roster for 2023 we get #67, which is 7 places from the Atlas, not three. The agreement claim compares one year to another and two sample sizes to each other; on our numbers the pipeline is closer to the Atlas in 2024 (4 places) than in the year the case chose to validate on.
6 Finding three — the comparison the page draws is not in the data
The complexity chapter does not only report Indonesia's rank; it contrasts it with the neighbours, stating that "Vietnam, the Philippines, and India each climbed twenty or more places over the same decade." That is a specific, checkable claim, and it is the one claim here that its own data contradicts outright.
- VNM — the case's own numbers: #69 → #57, +12 places. The Atlas: #62 → #44, +18.
- PHL — the case's own numbers: #40 → #37, +3 places. The Atlas: #47 → #38, +9.
- IND — the case's own numbers: #54 → #47, +7 places. The Atlas: #48 → #42, +6.
Not one of the three named economies gained twenty places in either dataset. The largest is 12 on the case's own numbers and 18 on the Atlas's. The sentence appears to have been carried over from a thirty-year comparison, where it is true for two of the three (VNM and PHL gained 49 and 50 places since 1995) and still false for the third.
The correction does not rescue the underlying argument, and it should not be allowed to. Downstreaming did not raise Indonesia's complexity — that much survives, on both datasets and in the same direction (our -2, the Atlas's -6 over the decade). What does not survive is the idea that the ranking is precise enough to stage a race in.
7 Finding four — fifteen times the money, thirty-five times the tonnage
The other half of the case is the nickel gambit: an export ban in 2014, tightened to a full prohibition in 2020, followed by a collapse in ore exports and a surge in processed product. BACI records a quantity in metric tonnes alongside every value. The case never reads it. Reading it changes what the fifteen-fold figure means.
Between the pre-ban window and the 2021–2024 peak, the value of processed-nickel exports rose 14.65× — the page's "fifteen times", confirmed. But the tonnage rose 34.62×. The average price per tonne fell 58%, from US$5,454 to US$2,307. Decomposed in logs, volume accounts for 132% of the rise and price contributes negatively.
That is not a price shock. It is a change in what is being shipped.
In the base window the basket was 75% nickel mattes and unwrought nickel — concentrated, high-grade intermediate product. By the peak window that share is 21%, and the basket is 43% ferro-nickel and 36% stainless steel. Ferro-nickel and stainless are mostly iron by weight. Indonesia is now exporting the iron too, and being paid for the nickel in it.
Downstreaming multiplied the dollars by 14.65 and the tonnes by 34.62. Every dollar of processed-nickel export now moves 2.36 times as much material as it did before the ban — and therefore roughly that much more furnace, freight and fuel.
One check the case passes, on a definition we tried to break. The case's "processed nickel" basket is defined by HS4 prefixes, and HS 7202 at four digits is all ferro-alloys, including ferro-manganese, ferro-silicon and ferro-chromium, which contain no nickel. If those lines carried the growth, the fifteen-fold figure would be an artefact of the code list. They do not: at HS6 they are 0.17% of the peak basket. Narrowing the definition to lines that must contain nickel — ferro-nickel plus all of HS 75, dropping stainless steel — still gives 10.03× in value and 27.61× in tonnes. The basket is honestly constructed.
8 Finding five — the bill the tonnage arrives with
The case pre-registered a test of whether the smelter build-out is visible on the import side, and published its failure: capital-goods imports grew 29.4% against 27.1% for all imports, beating the total by only 2.3 points. That failure is robust and worth restating, because it is more informative than the page makes it. Machinery and electrical equipment have been between 19% and 34% of Indonesia's import bill in every year since 1995. A build-out large enough to multiply an export chapter 14.65-fold left no visible mark on that share at all.
What did move is the feedstock, and the case says so. Our contribution is to connect it to section 7: the input bill tracks tonnes, not dollars. Coal imports rose 14× to US$3.2B a year — in the country that exports more coal than any other on earth — and the five bulk inputs together rose 13.7×. Against 34.62× the tonnage exported, that is the same order of magnitude; against 14.65× the dollars, it is not.
A number on the page is a level reported as an increment. The page states "the US$28.5B a year of additional processed-nickel exports". US$28.4B is the peak-window level; the increment over the base window is US$26.5B. Against US$3.6B of extra imported inputs, the correct ratio is 13.6% — nearer a seventh than the "eighth" the page states, and that is before the US$0.8B of ore exports given up. Corrected, the trade account still clears US$22.1B a year to the good; the direction of the page's argument is unchanged, its arithmetic is not.
Two caveats bound this ledger in the other direction, and neither is measurable in trade data. Gross export value is not national income: the Morowali and Weda Bay complexes are substantially foreign-owned, so an unknown share of US$26.5B accrues to equity abroad. And the coal that matters most is domestic — the captive power plants that run the furnaces burn Indonesian coal, which never appears in an import statistic. The US$3.6B measured here is therefore a floor on the input cost, not the input cost.
9 Finding six — a failed check that turns out to be harmless, tested rather than argued
The case publishes a failure honestly: BACI puts Indonesia's goods exports about a sixth above what Indonesia itself reports, every year that can be checked, against a registered tolerance of ±5%. Our re-derivation reproduces it exactly — US$305.0B against US$258.8B in 2023, 17.9% over, spread across 213 partners with no aggregate or "not elsewhere specified" code in the top twelve. The import side reconciles at -0.9%, comfortably inside its ±10% band.
The mechanism is not mysterious. BACI averages each flow as the exporter and the importer declared it, weighted by an estimated reliability of each reporter (Gaulier & Zignago 2010). BACI's Indonesian exports are therefore largely a statement about what the world says it received from Indonesia. The world says it received US$46.2B more in 2023 than Indonesia says it shipped.
The page then argues the failure does not touch chapters 1–6, "because RCA is a ratio of shares, and a roughly proportional level difference cancels". That argument is correct only if the difference is proportional, which the page asserts and does not test. We tested it, by removing the 2023 excess from Indonesia's export matrix under three assumptions and recomputing the whole index each time.
The page is right, and now it is right for a demonstrated reason. Removing the excess proportionally takes Indonesia from #69 to #70 — one place, and in the direction of less complexity. Attributing all of it to mineral fuels — the largest chapter, 22.6% of exports, and the most adversarial assumption we could construct — takes it to #67. Spreading it over fuels, palm oil and ores gives #67. The largest effect available in any direction is 2 places, against a year-to-year noise band of 14.
The comparative-advantage matrix underneath is a little more fragile than the index it feeds. Indonesia has 239 products at RCA ≥ 1 in 2023, of which 43 (18%) sit within ±15.2% of the RCA = 1 line — close enough that a mis-stated value for that single product would move it in or out of the set. The product space is drawn from that set, so the map is softer at its edges than the rank is.
10 Finding seven — both halves of the network are U-shaped, and one caption says otherwise
The partner chapters make a shape argument: Indonesia's customer base diversified for two decades and re-concentrated for one — a U — while its supplier base "did the opposite and never stopped". The first half is right. The second is not, on the case's own series.
Before checking the shape we checked the measurement. A Herfindahl index computed over a partner roster that grows — BACI lists 151 Indonesian export partners in 1995 and 216 by 2024 — can fall for reasons that have nothing to do with trade. So we recomputed the whole series on the 140 export partners and 112 import partners present in every one of the 30 years.
The diversification is real. On a roster frozen for thirty years the fall is, if anything, marginally larger — 101% of the measured decline survives — because the frozen-roster index runs slightly higher in every year, as it must, and traces the same curve with the same trough in 2015. This was the artefact we most expected to find, and it is not there.
The supplier claim is a different matter. Import concentration did not rise monotonically: it fell from 846 in 1995 to 594 in 1999, stayed below its starting level for 19 of 30 years, and only crossed back above it in 2015 before climbing to 1307 today. Both sides of the network are U-shaped. The import U simply turned earlier and has gone further past its starting point (54% above 1995) than the export U has recovered towards its own (23% still below).
The correct statement is sharper than the one the page makes, and it is a better argument for the same conclusion: Indonesia spent two decades diversifying both sides of its network and one decade re-concentrating both, and the supplier side re-concentrated faster, further, and onto one country — China takes 22.5% of what Indonesia sells and supplies 32.4% of what it buys.
11 What follows for decisions
Evidence is only worth gathering if it changes an action. Read strictly, this case supports three uses and forbids a fourth.
- Structural monitoring of the downstreaming programme. The tonnage-versus-value decomposition in section 7 is the highest-value output here and it is currently not published at all. A 34.62× rise in physical throughput for a 14.65× rise in receipts is a directly actionable fact for the Ministry of Energy and Mineral Resources and for Bappenas: it prices the electricity, the port capacity and the emissions the policy commits Indonesia to, none of which scale with revenue.
- Import-dependence monitoring. US$3.6B a year of new imported smelter feedstock, 88% of it coal, is a supply-chain exposure that did not exist in 2013 and that no export statistic reveals. It has an address: section 10's supplier concentration is the map of it.
- Trade-negotiation evidence. Indonesia lost WTO DS592 on the ore export ban in November 2022 and appealed into a non-functioning Appellate Body. The ledger in Figure 8 — gross gain, foregone ore, imported inputs — is the arithmetic any successor policy will be argued over, and it is computable from public data.
- Not: ranking Indonesia against its neighbours by complexity. On this evidence the rank cannot resolve differences smaller than roughly ten places, its own year-to-year noise is 4.3 places, and two pipelines that agree at ρ = 0.975 disagree about Indonesia by 11.1. The level of the rank should be withdrawn from the headline and the direction of the index — which is stable, and which says downstreaming did not diversify the basket — kept.
The complexity index is a good instrument being asked a question it cannot answer. It reliably tells you what kind of economy Indonesia is. It cannot tell you which seat it is in.
12 What remains open
Three of the checks this review opened were answered in sections 7, 9 and 10. Four remain, and we state them as work not done rather than as caveats.
- Nickel content, not gross tonnage. Section 7 shows the basket moving towards low-grade material but cannot say by how much in nickel terms, because HS codes do not carry assay. Contained-nickel tonnage — from ferro-nickel and NPI grade assumptions — would convert the 34.62× into a metal-content figure and settle whether Indonesia is exporting more nickel or more iron.
- The domestic energy bill. The US$3.6B in Figure 8 counts only imported inputs. Captive coal generation at the smelter complexes is domestic and invisible to trade data; pairing installed captive capacity with the tonnage series would close the ledger.
- Where the reconciliation gap actually sits. Section 9 bounds its effect but does not locate it. Comparing BACI chapter by chapter against Indonesia's own published chapter-level exports would say whether US$46.2B is spread or concentrated — which matters much more for the mirror-statistics literature than it does for the index.
- A confidence interval for the rank. The right fix for section 5 is not to stop publishing a rank but to publish it with an interval. Resampling the product matrix would give the band directly, and on the evidence of Figure 3 that band is wide enough to be the most honest number this case could print.
13 References and reproducibility
- Hidalgo, C.A. & Hausmann, R. (2009). The building blocks of economic complexity. PNAS 106(26), 10570–10575. doi:10.1073/pnas.0900943106
- Hidalgo, C.A., Klinger, B., Barabási, A.-L. & Hausmann, R. (2007). The product space conditions the development of nations. Science 317(5837), 482–487. doi:10.1126/science.1144581
- Mealy, P., Farmer, J.D. & Teytelboym, A. (2019). Interpreting economic complexity. Science Advances 5(1), eaau1705. doi:10.1126/sciadv.aau1705
- Balassa, B. (1965). Trade liberalisation and "revealed" comparative advantage. The Manchester School 33(2), 99–123. doi:10.1111/j.1467-9957.1965.tb00050.x
- The Growth Lab at Harvard University. Growth Projections and Complexity
Rankings, V6. Harvard Dataverse. doi:10.7910/DVN/XTAQMC. Columns
eci_hs92/eci_rank_hs92, 1995–2024, used as the benchmark in Figures 1, 2 and 4. - Gaulier, G. & Zignago, S. (2010). BACI: International Trade Database at the Product-Level. The 1994–2007 Version. CEPII Working Paper 2010-23. Release 202601 used here; Etalab 2.0 licence.
- World Trade Organization. Indonesia — Measures Relating to Raw Materials (DS592). Panel report circulated 30 November 2022; found the nickel ore export prohibition and the domestic processing requirement inconsistent with GATT Article XI:1. Appealed by Indonesia 8 December 2022.
- BPS-Statistics Indonesia. Total goods exports and imports, annual, current US$ — the national benchmark against which BACI is reconciled in Figure 9.
Sections 4–6 and 9 use an ECI re-implementation independent of the case's own; it reproduces the case's published rank to a mean of 2.4 places over 30 years. Data vintage: BACI release 202601, trade through 2024. The rank-correlation threshold, the rank acceptance window, the export tolerance and the nickel-import hypotheses were all fixed and recorded in advance of the results they judge; this review changed none of them.