SPB Git

spb/wp29_uqo

Public

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

Theme