# 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.csv` for 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% in `max_growth_month` = 2022-06. - Minimum: `min_growth_12m` = −1.959% in `min_growth_month` = 2009-07. - `feasibility` = "partial": one window month has no growth rate. The reason is given in `feasibility_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.md` are for the raw downloads before reformatting, so they do not match the provided files. My hashes of the provided files are in `out/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 to `out/` at once. The input CSV hashes were checked and are unchanged.