F1-conf-01 — 12-month CPI inflation from two data vintages
Question
What is the 12-month growth rate g_t = 100·(P_t/P_{t−12} − 1) of CPIAUCSL (SA) for each month 2001-01 … 2026-09? P_t is taken from the most recent vintage that covers month t. I also report summaries of g_t: the mean, sub-period means, selected months, and the maximum and minimum.
Data and exclusions
-
I spliced the two authoritative vintage files: the 2016-07-15 vintage for 1947-01 … 2013-12 and the 2026-10-28 vintage for 2014-01 … 2026-09. Rows read are in
n_input_rows: 834, 153 and 957. -
I did not use
cpi_assembled.csvfor computation. The audit found it to be faulty:- it uses the old vintage for the 30 overlap months;
- it drops 2016-07 and stamps every later value one month late, which creates a spurious 2026-10 row;
- 152 of its rows disagree with the authoritative splice.
These problems are listed in
data_issues. The script reads the file only to audit it. -
The 2026-10-28 vintage has no value for 2025-10. Following the rules, I did not impute or interpolate it, so g for 2025-10 is missing (
missing_growth_months,n_months_missing_growth= 1). -
Exclusion ledger (
out/exclusions.csv):- 957 spliced monthly levels → 309 window months;
- minus 1 month with no P_t → 308;
- minus 0 months with no P_{t−12} → 308 =
n_analysed.
Method
- The levels form a complete monthly series, so P_{t−12} is the value 12 rows earlier.
- g_t is computed only where both levels exist.
- Means are unweighted arithmetic means over the months with a computable g_t.
- The sub-period mean for 2001–2013 (
mean_growth_12m_2001_2013) serves as the baseline. - The method is deterministic, with no random numbers (
random_seed= null).
Results
- First month with a growth rate:
first_growth_month= 2001-01. Last month with a level:last_month= 2026-09. - Months with a computable g_t:
n_months_growth= 308. Missing:n_months_missing_growth= 1 (2025-10). - Mean over the window:
mean_growth_12m= 2.574%. - Sub-period means:
mean_growth_12m_2001_2013= 2.361% (156 months,n_growth_2001_2013);mean_growth_12m_2014_2026= 2.793% (152 months,n_growth_2014_2026).
- Selected months:
growth_2014_06= 2.098%growth_2016_07= 0.868%growth_2020_05= 0.198%growth_2022_06= 8.979%growth_2026_09= 3.717%
- Maximum:
max_growth_12m= 8.979% inmax_growth_month= 2022-06. - Minimum:
min_growth_12m= −1.959% inmin_growth_month= 2009-07. feasibility= "partial": one window month has no growth rate. The reason is given infeasibility_reason.
Uncertainty
These figures are exact arithmetic on published index levels, not estimates from a sample, so I report no sampling standard errors. The real uncertainty is revision uncertainty. Seasonally adjusted levels change between vintages: in the 30 months where the two vintages overlap, they differ by between −0.455 and +0.330 index points (data_issues). The pre-2014 values come from a 2016 vintage and could differ in later vintages. I did not quantify how this affects the summaries.
Limitations and open issues
- 2025-10 has no value in the source, so g for that month is missing. All summaries use the 308 months that can be computed.
- Growth rates for 2014-01 … 2014-12 mix vintages: the current level comes from the 2026 vintage and the lagged level from the 2016 vintage. This is what the stated rule requires, but it is not a single-vintage growth rate.
- README hashes don't match: the SHA-256 values in
data/README.mdare for the raw downloads before reformatting, so they do not match the provided files. My hashes of the provided files are inout/state/data_audit.md. - Process note: at one point a shell working-directory error made me write two of my state notes into
data/out/. I moved them toout/at once. The input CSV hashes were checked and are unchanged.