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_usedin 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.