# Verification checks (P4) | # | check | outcome | |---|---|---| | 1 | Delete outputs, re-run analysis.py, byte-compare results.json and forecasts.csv | PASS (identical) | | 2 | All required results.json keys present | PASS | | 3 | forecasts.csv has 240 rows, 40 per (model, horizon) | PASS | | 4 | target_date − origin_date = h quarters for all rows | PASS | | 5 | `actual` equals infl_annualised of target quarter | PASS | | 6 | snaive forecast equals infl of target − 4 quarters (≤ origin, asserted in code) | PASS | | 7 | Leakage test: adding +50 to all quarters after origin 100 leaves forecasts unchanged; code asserts sample max date ≤ origin | PASS | | 8 | RMSE ≥ MAE for every model/horizon; rel_improvement = 1 − ratio | PASS | | 9 | loss_diff_mean_h4 recomputed from forecasts.csv; equals rmse_snaive_h4² − rmse_model_h4² | PASS | | 10 | HAC SE > 0, lag 3 ≥ h−1, rectangular LRV positive (no fallback needed), dm = mean/se | PASS | | 11 | n_analysed = 121 = 122 quarters (1995Q2–2025Q3) − 1 lag (p=1 at last origin); exclusions: 127 − 1 = 126 | PASS | | 12 | Magnitudes vs baseline: model RMSE 2.19–2.46 vs snaive 2.85–2.88 pp, same order of magnitude; plausible | PASS | | 13 | Influence: d_t summed by origin year shows large contributions from 2019–2022 origins (+20.6, +40.7, −45.7, +66.7); mean excluding 2021–22 origins = 2.87 (similar to full 2.82) | NOTE (reported) | | 14 | Sample ACF of d_t lags 1–6: 0.21, −0.05, −0.29, −0.41, −0.16, −0.11 (negative at 3–4 → Bartlett/longer lags change SE; sensitivity reported) | NOTE (reported) |