| 1 |
Clean re-run (deleted results.json, forecasts.csv, exclusions.csv) regenerates byte-identical results.json and forecasts.csv |
PASS |
| 2 |
forecasts.csv has 144 rows, 36 unique origins, first/last match results.json |
PASS |
| 3 |
Chronology: first_origin < last_origin; target_date = origin_date + h months for all rows |
PASS |
| 4 |
Actuals in ledger equal data values (empty where data missing) |
PASS |
| 5 |
Naive forecast = latest non-missing obs dated ≤ origin (incl. origin 2025-10-01 → 2025-09 value 4.4) |
PASS |
| 6 |
n_evaluated_h1 = n_evaluated_h3 = 35 (one missing target, 2025-10-01, per horizon) |
PASS |
| 7 |
All RMSE > 0 and RMSE ≥ MAE |
PASS |
| 8 |
rel_improvement = 1 − rmse_model/rmse_naive ( |
diff |
| 9 |
Exclusion ledger: 945 − 1 − 3 = 941 = n_analysed; n_input_rows = 945 |
PASS |
| 10 |
Magnitudes: h=3 RMSE > h=1 RMSE for both models; model forecasts within 0.1 pp of naive (AR coefficients small) |
PASS |
| 11 |
No look-ahead: adding +3 pp to all data after 2024-12 leaves every forecast with origin ≤ 2024-12 unchanged (and changes later ones) |
PASS |
| 12 |
SHA-256 of data/UNRATE.csv unchanged (621ff6fa…a06c) |
PASS (data not modified) |