A harmonised twelve-country dataset of net capital and FDI stocks constructed under a bell-shaped retirement profile, 1960-2022
Description
Net fixed-capital and inward-FDI stocks for twelve economies, built from investment flows by the perpetual inventory method under one uniform retirement profile. 755 rows, 1960-2022 (US from 1961; German stocks start 1970). Capital is complete over 1990-2022: n=396. The profile is 21 weights over ages 0-20; annual write-off peaks at 6.6% at age 12, close to a Weibull with k=2.16. The main series renormalises the terminal share to zero; a robustness series keeps the original 7.75% recursively. Both are supplied: levels differ 3.5-16.5% in the window, growth rates correlate at 0.997. Capital is constant 2015 US$ per capita, seeded at 2x GDP in each country's first year with GDP data. Because the main profile is zero from age 20, the seed enters with coefficient exactly zero from t0+20: every main-variant stock in the window is an exact function of the flows, given the schedule. That is algebra. FDI 1990-2022 is UNCTAD for eight economies, verified against World Investment Report 2024 at 0.41% median deviation (World Bank: 43.7%); China, India, Korea, Thailand are World Bank. 45 pre-1990 rows could not be deflated, and stocks cumulating them stay mixed-basis into the window - Brazil 1990-2007, 81% of its 1990 stock. Flags mark every affected row. PWT 11.0 is the benchmark (constant 2021 national prices, not the 2015 US$ basis of the constructed series, so growth rates only): correlations 0.952 and 0.960. That says little - no retirement at all reaches 0.967. The placebo test is reported with its limits: 45% of random weights are not rejected.
Files
Steps to reproduce
Requirements: Python 3.9 or later with pandas, numpy and statsmodels. 1. Download all five files into one folder, keeping the names unchanged: panel12_SND.csv, Panel12_SND_rebuilt.xlsx, reproduce.py, unctad_crosscheck.csv and DATASET_README.md. 2. From that folder run: python reproduce.py The script reads panel12_SND.csv only, writes nothing, and is deterministic - two runs give byte-identical output. It prints seven blocks: (1) The retirement profile. The main variant's last nonzero weight is at asset age 19 and the robustness variant's at age 20, with the annual write-off peaking at age 12 in both (6.62% and 6.11%). (2) Exact reproduction of the two capital-stock columns from the deposited flows, using the construction in DATASET_README.md. Both agree to about 4e-16. (3) Seed extinction. Rebuilds each stock with the initial value scaled over a sixteen-fold range and reports the first year the choice stops mattering. Because the main profile is identically zero from age 20, that year is t0+20 - 1980 for ten countries, 1981 for the US, 1990 for Germany - so the seed drops out before the 1990-2022 window begins. The robustness variant's recursive tail never lets it vanish; the 2022 residual spread is reported instead. (4) Benchmark correlation with Penn World Table 11.0 growth rates, 1990-2022: 0.9519 (main) and 0.9601 (robustness), n=396, mean biases -0.0030 and -0.0025. (5) Placebo test. Rebuilds stocks from the same flows and seed under deliberately implausible schedules - random weights, no retirement, geometric 2% and 20% - and compares each against the benchmark using the downstream elasticity of capital growth with respect to output growth, with country fixed effects and clustered standard errors. Because the two elasticities share a design matrix, the difference is tested by regressing the differenced outcome on the same regressors, not by assuming independence. (6) Exact reproduction of the two FDI stock columns, to about 6e-16. (7) FDI provenance: price-basis counts, coded zeros, and how many stock rows mix price bases in each variant. Read blocks 4 and 5 with the Validation section of DATASET_README.md before using either as evidence. Neither identifies the survival profile: no retirement at all reaches 0.967, above both variants, and the placebo test has low power, fails to reject 45% of random weights across 200 seeds, and passes geometric rates of 5-7% while rejecting 4% and 8%. It responds to mean service life, not shape. Two README figures are not reproduced by the script: the absurd-schedule results in the placebo discussion, and unctad_crosscheck.csv, which multiplies by total population and so needs World Bank SP.POP.TOTL. Before selecting a sample see "Recommended samples" in DATASET_README.md: exact filters for capital growth (n=396), FDI stock growth (n=377) and FDI stock levels (n=378). To rebuild the stocks under a different service life or shape, use gfcf_flow and fdi_flow with vintage() in reproduce.py.
Institutions
- Woosong UniversityDaejeon, Daejeon