F1-conf-01 — 12-month CPI inflation (CPIAUCSL, SA) from two ALFRED vintages
Question
Compute g_t = 100 × (P_t / P_{t−12} − 1) for every month 2001-01 … 2026-09, where P_t comes from the most recent vintage that covers month t (2026-10-28 vintage for 2014-01 onward, 2016-07-15 vintage before that). Then summarise: overall mean, sub-period means, five named months, maximum and minimum.
Data and exclusions
-
cpi_vintage_2016-07-15.csv: 834 rows, 1947-01 … 2016-06, no missing values. -
cpi_vintage_2026-10-28.csv: 153 rows, 2014-01 … 2026-09. 2025-10 has an empty value: the source publishes no index level for that month. -
cpi_assembled.csv: 957 rows. I read it only to check it against the vintage files, and found assembly errors, so it was not used for estimation:- There is no row for 2016-07. From the row labelled 2016-08 onward, every value sits one month later than its true date (for example, the true 2016-07 value 240.101 is labelled 2016-08), and the file ends with a spurious 2026-10 row. The 2025-10 gap therefore shows up as an empty cell labelled 2025-11.
- For the 30 overlap months 2014-01 … 2016-06 it uses the older 2016-07-15 vintage. That breaks the rule to use the most recent vintage.
Using this file would have shifted all growth rates after mid-2016 by one month and given wrong values around the 2016-07 join.
-
Exclusion ledger (
out/exclusions.csv): the window has 309 calendar months. One month is removed, 2025-10, because P_t is missing and no imputation is allowed. That leaves 308 analysed months. The missing 2025-10 level would also block g for 2026-10, but that month is outside the window. Every month in the window has P_{t−12} available, including 2025-11 … 2026-09 (their lags are 2024 months).
Method
I built the series directly from the two vintage files: the 2026-10-28 values for every month that vintage reports, and the 2016-07-15 values for months before 2014-01. I placed them on a complete monthly calendar so that a 12-row lag is exactly a 12-month lag, then computed g_t. Means are simple arithmetic means over months with a computable g_t. The calculation is deterministic and uses no random seed. out/analysis.py regenerates all outputs; it also writes out/sensitivity.json, an auxiliary check.
Results
| quantity | value |
|---|---|
| first growth month / last month with level | 2001-01 / 2026-09 |
| months with g_t / missing | 308 / 1 (2025-10) |
| mean g_t, 2001-01 … 2026-09 | 2.574 % |
| mean g_t, 2001-01 … 2013-12 (156 months) | 2.361 % |
| mean g_t, 2014-01 … 2026-09 (152 months, excl. 2025-10) | 2.793 % |
| g 2014-06 | 2.098 % |
| g 2016-07 | 0.868 % |
| g 2020-05 | 0.198 % |
| g 2022-06 | 8.979 % |
| g 2026-09 | 3.717 % |
| maximum | 8.979 % in 2022-06 |
| minimum | −1.959 % in 2009-07 |
The 2014–2026 mean is about 0.43 percentage points above the 2001–2013 baseline. Most of the difference comes from the 2021–2023 inflation surge.
Uncertainty
These are exact calculations on published index levels, so no sampling uncertainty applies. The standard deviation of g_t over the window is 1.74 pp; this describes how much the series varies, not an error band on the estimate. The main source of non-sampling uncertainty is data revision:
- Vintage mixing in 2014: g for 2014-01 … 2014-12 divides a 2026-vintage P_t by a 2016-vintage P_{t−12}, because 2013 is not in the recent extract. Using the 2016 vintage for both terms instead changes individual 2014 months by up to 0.127 pp; for example, 2014-06 becomes 2.005 % instead of 2.098 %. The 2014 mean barely moves (1.6117 % vs 1.6114 %).
- Revisions to seasonal factors in later vintages would also change the pre-2014 values, which come from the 2016 vintage. These data cannot quantify that effect.
Limitations and open issues
- Feasibility: partial. g_t for 2025-10 cannot be computed because the source has no index level for that month, and it is excluded rather than imputed. The overall mean and the 2014–2026 mean therefore cover 308 and 152 months instead of 309 and 153.
- The vintage rule mixes two vintages within the 2014 growth rates (see Uncertainty). I applied it as the task specifies.
cpi_assembled.csvhas the assembly errors described above and should not be used.