1# F1-conf-01 — 12-month CPI inflation (CPIAUCSL, SA) from two data vintages23## Question4For each month t from 2001-01 to 2026-09, compute g_t = 100 × (P_t / P_{t−12} − 1), where P is CPIAUCSL taken from the most recent vintage covering that month (2026-10-28 vintage for 2014-01 onward, 2016-07-15 vintage before), and summarise it: overall and sub-period means, five named months, and the max/min.56## Data and exclusions7- `cpi_vintage_2016-07-15.csv` (834 rows, 1947-01…2016-06) and `cpi_vintage_2026-10-28.csv` (153 rows, 2014-01…2026-09) are the only inputs used for estimation. Neither has duplicate dates or gaps in its date sequence.8- **2025-10 has no value** in the 2026-10-28 vintage (empty cell). The 2016 vintage doesn't cover that month. I did not impute it. As a result g_{2025-10} can't be computed. g_{2026-10} would also need it, but that month is outside the window. **The analysis uses 308 of the 309 window months.**9- The vintages overlap for 2014-01…2016-06 (30 months), and their levels differ by up to 0.455 index points because seasonal factors were revised. Following the rule, the 2026 vintage is used for those months.10- **The hand-assembled file `cpi_assembled.csv` (957 rows) has errors.** I read it only to check it, never to estimate anything:11 - for 2014-01…2016-06 it uses the older 2016 vintage instead of the newer one;12 - it has no 2016-07 row;13 - from 2016-07 onward every 2026-vintage value is dated one month late, which creates a spurious 2026-10 row holding the 2026-09 value (336.298);14 - as a result, 152 of the months it shares with the correct series have wrong values.15- Exclusion ledger (`out/exclusions.csv`): 309 window months → step 1 (P_t missing: 2025-10) removes 1 → 308 → step 2 (P_{t−12} missing) removes 0 → 308 rows in `out/analytic.csv`.1617## Method181. Build the series by taking each month's level from the most recent vintage that has it.192. Compute g_t on a calendar-month index, so any gap gives a missing value rather than a shifted lag.203. Restrict to the window and drop months where g_t is missing.214. Compute the means with equal weight per available month.2223No randomness is involved. `out/analysis.py` regenerates all outputs deterministically; I checked this by re-running it and comparing hashes.2425## Results26| quantity | value |27|---|---|28| months with g_t / missing | 308 / 1 (2025-10) |29| first growth month / last month with a level | 2001-01 / 2026-09 |30| mean g_t, 2001-01…2026-09 (308 months) | 2.574 % |31| mean g_t, 2001-01…2013-12 (156 months) | 2.361 % |32| mean g_t, 2014-01…2026-09 (152 months, 2025-10 missing) | 2.793 % |33| g 2014-06 | 2.098 % |34| g 2016-07 | 0.868 % |35| g 2020-05 | 0.198 % |36| g 2022-06 | 8.979 % (maximum) |37| g 2026-09 | 3.717 % |38| minimum | −1.959 % in 2009-07 |3940Exact values are in `out/results.json`.4142## Uncertainty43These figures are deterministic transforms of published index levels, so there is no sampling uncertainty. The relevant uncertainty is **data revision**:44- **Mixed vintages in 2014.** For 2014-01…2014-12 the numerator comes from the 2026 vintage and the lag (2013) from the 2016 vintage. Compared with growth computed entirely within the 2016 vintage, the 12-month rates differ by 0.071 pp on average and at most 0.127 pp. For example, g_{2014-06} is 2.098 % spliced versus 2.005 % within the 2016 vintage.45- **Revisions for 2015…2016-06.** Over these months the two vintages give 12-month rates that differ by up to 0.126 pp.46- **Effect on the 2014–2026 mean.** Replacing the 2014 rates with same-vintage rates changes this mean only from 2.792628 % to 2.792604 % (difference about 0.00002 pp).47- **Effect of the missing month.** Dropping 2025-10 slightly changes the weighting of the 2014–2026 mean. No imputed value is included.4849## Limitations and open issues50- **Feasibility is "partial":** g_t for 2025-10 can't be computed because the source has no level for that month, and the rules forbid imputation. All summary statistics use the 308 available months.51- **The 2014 growth rates combine two vintages,** as the availability rule requires. Their seasonal adjustment is therefore not internally consistent; the size of this effect is quantified above.52- The 2001–2013 levels come from the 2016 vintage. Later vintages may have revised the seasonally adjusted values for those years, but they are not among the provided inputs.53- **Do not use `cpi_assembled.csv` without correcting it:** it has both the wrong-vintage problem and the one-month date shift.54