Data audit
| file | SHA-256 | rows (excl. header) | cols | range |
|---|---|---|---|---|
| data/cpi_quarterly.csv | c8652dec1567ec35e3b84ee8fa55545e9bf0ae4990a4d6d05b89a6d22f6801ea | 127 | 3 (quarter, cpi_avg, infl_annualised) | 1995-01-01 … 2026-07-01 |
| data/cpi_monthly.csv | 855d069176369d30d02cbbe0cc6456b76d2f3967cdaabc1b362c2461ef9015a2 | 381 | 2 (month, cpi) | 1995-01-01 … 2026-09-01 |
Hashes match data/README.md and bundle.json.
- Units: cpi index 2002=100 (NSA); infl_annualised in percent at annual rate.
- Missing: only infl_annualised for 1995Q1 (structural; first difference). No other NaN.
- Duplicates: none in quarter or month. Quarters are contiguous (no gaps).
- Cross-check: every quarter has 3 months; quarterly mean of monthly cpi equals cpi_avg (max abs diff 3.3e-7); 400·Δln cpi_avg reproduces infl_annualised (max abs diff 3.3e-6).
- infl_annualised: mean 2.13, sd 2.39, min -6.04, max 12.15 (2021–22 surge and 2020 drop are genuine, not anomalies).
- Information availability: the file contains quarters up to 2026Q3, beyond the last origin; they are used only as targets (actuals), never for estimation at an earlier origin (enforced by slicing y[:i+1] in analysis.py). No input violates the rules.