# F3-conf-04 — Multi-horizon forecasts of Canadian quarterly CPI inflation ## Question Over 40 rolling origins (2015Q4–2025Q3), does a seasonal autoregression forecast Canadian quarterly CPI inflation (annualised, NSA) better than the seasonal-naive forecast at h = 1, 2, 4? And at h = 4, is the mean squared-error loss differential different from zero once we allow for the serial correlation that overlapping 4-step errors create? ## Data and exclusions - `data/cpi_quarterly.csv`: 127 rows read (1995Q1–2026Q3). `data/cpi_monthly.csv`: 381 rows read. I used it only to check provenance: rebuilding `infl_annualised` from the monthly file matches the given series to within 5e-7. - The quarters run in an unbroken sequence and nothing is missing apart from 1995Q1 inflation, which cannot be computed because there is no earlier quarter. I dropped that row, so the usable series is 1995Q2 onward (126 observations). - Targets run from 2016Q1 to 2026Q3. Nothing else was excluded. ## Method - **Model (`ar_seas_aic`)**: OLS of y_t on a constant, Q2/Q3/Q4 dummies and p own lags. At each origin p ∈ {0,…,4} is chosen by AIC, comparing all lag lengths on the same sample. The model is then re-estimated on all usable observations from 1995Q2 to the origin (expanding window). Multi-step forecasts are iterated, using the known seasonal dummies of the target quarters. Every estimation and selection step uses only quarters ≤ origin. AIC chose p = 2 for origins up to 2021Q3 and p = 1 after that. The last estimation sample has 121 observations. - **Seasonal naive**: the forecast for quarter t+h is y in quarter t+h−4. - **Metrics**: RMSE and MAE of the 40 errors per horizon, and relative RMSE improvement 1 − RMSE_model/RMSE_snaive. - **DM test at h = 4**: d_t = e²_snaive − e²_model. The standard error of d̄ uses a Newey–West (Bartlett kernel) long-run variance with truncation lag 3 (= h − 1), and the p-value is two-sided from N(0,1). I fixed this specification before seeing any results. Sensitivity checks are in `out/sensitivity.json`, which `analysis.py` also writes. ## Results | h | RMSE snaive | RMSE model | MAE snaive | MAE model | rel. RMSE improvement | |---|---|---|---|---|---| | 1 | 2.849 | 2.193 | 2.137 | 1.519 | 0.230 | | 2 | 2.847 | 2.463 | 2.126 | 1.553 | 0.135 | | 4 | 2.882 | 2.343 | 2.181 | 1.597 | 0.187 | (Units: percentage points, annualised.) At all three horizons the model has lower RMSE and lower MAE than the seasonal-naive forecast. At h = 4: d̄ = 2.818 squared pp, HAC SE = 2.086 (Bartlett, lag 3), DM = 1.35, two-sided p = 0.177. **The h = 4 improvement is not statistically distinguishable from zero at conventional levels.** ## Uncertainty - How strong the h = 4 evidence looks depends on how the long-run variance is estimated: - Bartlett lag 4: DM 1.52, p = 0.13. - Rectangular lag 3: DM 1.66, p = 0.097. - Bartlett lag 6: DM 2.04, p = 0.041. - Harvey–Leybourne–Newbold small-sample correction with t(39): p = 0.23. - Only the longest lag (6) falls below 5%. That result is a post-hoc sensitivity check and should not replace the pre-specified test. With 40 overlapping errors the long-run variance is imprecisely estimated. - Descriptive DM tests at shorter horizons give p ≈ 0.10 at h = 1 and p ≈ 0.42 at h = 2. - The 2021–2023 inflation surge dominates the losses. Dropping h = 4 targets in 2021–2023 (28 origins remain) gives RMSE 2.03 for snaive and 1.52 for the model, so the model's ranking stays the same. ## Limitations and open issues - I picked one model before looking at the evaluation results; I did not search over specifications. Other models might do better or worse. - Errors are computed on the current data vintage, so I make no claim about real-time performance. In reality the data are published about three weeks after quarter-end, and the CPI basket is periodically updated. - 40 origins is a small sample. The DM test relies on asymptotic approximations, and the standard error is sensitive to the kernel and lag choice. - The DM test treats forecasts as given. It does not adjust for parameter-estimation uncertainty, which is fine for comparing these particular forecasts (in the Giacomini–White sense).