# 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.