SPB Git

spb/wp29_uqo

Public

# F1-conf-01 — 12-month CPI inflation from two data vintages

# Question

12-month growth g_t = 100×(P_t/P_{t−12} − 1) of CPIAUCSL (SA) for every month 2001-01 … 2026-09, with P_t taken from the most recent vintage covering month t (2026-10-28 vintage for 2014-01 … 2026-09, 2016-07-15 vintage before), plus summaries.

# Data and exclusions

Inputs read (n_input_rows): cpi_vintage_2016-07-15.csv (834 rows), cpi_vintage_2026-10-28.csv (153 rows), cpi_assembled.csv (957 rows, read only for audit). Hashes and schemas are in out/state/data_audit.md. Problems found (data_issues):

  • The 2026-10-28 vintage has an empty value for 2025-10. I left it missing and did not impute it.
  • The two vintages overlap for 2014-01 … 2016-06 and the values differ because of revisions. For these months I used the 2026-10-28 values.
  • cpi_assembled.csv has assembly errors: it takes the old vintage for 2014-01 … 2016-06, it has no row for 2016-07, and every row from 2016-08 on is placed one month late (the file runs to 2026-10 and the empty cell sits at 2025-11). So I did not use it for any computation. All levels come from the two vintage files.

Exclusion ledger (out/exclusions.csv): the 309 window months, minus 1 month with no level P_t (2025-10), minus 0 months with no lagged level, leaves 308 analysed months (n_analysed, n_months_growth; n_months_missing_growth = 1; missing_growth_months).

# Method

out/analysis.py builds one monthly level series. It fills months from the 2016-07-15 vintage first and then overwrites them with every month that appears in the 2026-10-28 extract, keeping the empty cell as missing. It then computes g_t as defined above and takes simple means and extremes over the computable months. The method uses no randomness (random_seed = null). The baseline is the 2001–2013 sub-period mean (mean_growth_12m_2001_2013), computed with the same rule. For the 12 months 2014-01 … 2014-12, P_t comes from the 2026 vintage and P_{t−12} from the 2016 vintage (n_months_mixed_vintage). The latest-vintage rule requires this.

# Results

  • First growth month first_growth_month = 2001-01; last month with a level last_month = 2026-09.
  • Mean 12-month growth over the window: 2.574 % (mean_growth_12m). For 2001-01 … 2013-12 it is 2.361 % (mean_growth_12m_2001_2013, 156 months, n_months_growth_2001_2013), and for 2014-01 … 2026-09 it is 2.793 % (mean_growth_12m_2014_2026, 152 months, n_months_growth_2014_2026).
  • 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).
  • Maximum 8.979 % in 2022-06 (max_growth_12m, max_growth_month); minimum −1.959 % in 2009-07 (min_growth_12m, min_growth_month).
  • feasibility = "partial": g_t cannot be computed for 2025-10 (feasibility_reason).

# Uncertainty

These are exact descriptive quantities computed from published index levels. There is no sampling uncertainty to report. The standard deviation of g_t over the window is 1.741 pp (sd_growth_12m); it describes how much inflation varied, not how precise the mean is. The main remaining sensitivity is data revision. Within the 2014-01 … 2016-06 overlap, the vintages differ by up to 0.455 index points (data_issues), so values and means that rely on the 2016 vintage (pre-2014 levels) may differ somewhat from what current data would give. I did not quantify this sensitivity.

# Limitations and open issues

  • 2025-10 has no published level in the source, so its g_t is missing and the window mean covers 308 of 309 months (n_months_window). With no imputation, 2026-10 would also lack a computable g_t, but it falls outside the window.
  • Levels before 2014 come from the 2016-07-15 vintage. Later seasonal-factor revisions to those months are not reflected because the provided 2026 extract starts at 2014-01.
  • In 12 months (2014) the two levels in the ratio come from different vintages (n_months_mixed_vintage). The task's rule requires this.
  • The hand-assembled file was set aside because of the errors listed above. Using it would have shifted every post-2016 level by one month.
Files · main
Menu

Theme