SPB Git

spb/wp29_uqo

Public

# 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.
Files · 452964ee0fbbaa40fbbed2c87a54ca798ffd6a85
Menu

Theme