# F1-conf-01 — 12-month CPI inflation from two data vintages ## Question 12-month growth rate g_t = 100 × (P_t/P_{t−12} − 1) of CPIAUCSL (seasonally adjusted) for each month 2001-01 … 2026-09, with P_t taken from the most recent ALFRED vintage covering the month, and summary statistics of g_t. ## Data and exclusions Inputs (rows read, `n_input_rows`): 2016-07-15 vintage (834 rows, 1947-01…2016-06), 2026-10-28 vintage (153 rows, 2014-01…2026-09), and the hand-assembled file (957 rows), which was read **only for auditing**. The audit (`data_issues`) found that the assembled file uses the old vintage for 2014-01…2016-06 (violating the most-recent-vintage rule), omits 2016-07 and from 2016-08 onward is shifted by one month (each value belongs to the previous month, producing a spurious 2026-10 row). It was therefore not used for estimation. The series was re-built from the two vintage files. The 2026-10-28 vintage reports no value for 2025-10 (empty cell). This level was not imputed. Exclusion ledger (`out/exclusions.csv`): 987 stacked vintage rows → drop 30 superseded 2016-vintage rows (2014-01…2016-06) → 957 unique months → keep the 309 window months → drop 1 month without a computable g_t (2025-10) → 308 analysed months (`n_analysed`, `n_months_missing_growth`, `missing_growth_months`). ## Method Splice: 2016-07-15 vintage levels for months before 2014-01, 2026-10-28 vintage levels from 2014-01 to 2026-09. The calendar has no gaps, so g_t is computed with an exact 12-month lag, and a month is missing whenever P_t or P_{t−12} is missing. No randomness is involved (`random_seed` = null). Baseline: the unconditional mean over 2001-01…2013-12 (`mean_growth_12m_2001_2013`), which uses only the 2016 vintage. ## Results - Coverage: the first growth month is 2001-01 (`first_growth_month`) and the last month with a level is 2026-09 (`last_month`). 308 of 309 months have a growth rate (`n_months_growth`, `n_months_missing_growth`). `feasibility` = "partial" because 2025-10 has no growth rate. - The mean of g_t over the window is 2.574% (`mean_growth_12m`). The 2001–2013 mean is 2.361% (`mean_growth_12m_2001_2013`, 156 months) and the 2014–2026 mean is 2.793% (`mean_growth_12m_2014_2026`, 152 months). - Named months: 2014-06 2.098% (`growth_2014_06`); 2016-07 0.868% (`growth_2016_07`); 2020-05 0.198% (`growth_2020_05`); 2022-06 8.979% (`growth_2022_06`); 2026-09 3.717% (`growth_2026_09`). - The maximum is 8.979% in 2022-06 (`max_growth_12m`, `max_growth_month`). The minimum is −1.959% in 2009-07 (`min_growth_12m`, `min_growth_month`). ## Uncertainty These quantities are fixed transformations of published index levels, so there is no sampling uncertainty and no confidence intervals are reported. The dispersion of g_t over the window is an SD of 1.741 pp (`sd_growth_12m`). The main uncertainty is which vintage to use. In the 30 overlapping months the two vintages differ by up to 0.455 index points (`max_abs_vintage_revision_overlap`). For 2014-01…2016-06, growth computed from the 2016 vintage alone has a mean of 0.907% (`sens_mean_growth_201401_201606_old_vintage`), against 0.903% under the rule (`sens_mean_growth_201401_201606_rule`). Individual months differ by at most 0.127 pp (`sens_max_abs_diff_growth_201401_201606`). ## Limitations and open issues - 2025-10 has no growth rate because the source publishes no level for it. All window and 2014–2026 means therefore cover 308 and 152 months, not 309 and 153. - For 2014-01…2014-12, g_t divides a 2026-vintage level by a 2016-vintage level. This is what the availability rule requires, but it mixes seasonal-factor vintages. `vintage_used` in analytic.csv refers to P_t only. - The hand-assembled file is unreliable (see `data_issues`) and was not used. - The SHA-256 values in data/README.md describe the raw downloads, not the reformatted files, so the files could not be verified against them.