F3-conf-04 — Multi-horizon forecasts of Canadian quarterly CPI inflation
Question
Across 40 expanding-window origins (2015Q4–2025Q3; n_origins, first_origin, last_origin), does a seasonal autoregression forecast Canadian quarterly NSA CPI inflation (400·Δln of the quarterly-average CPI) better than the seasonal-naive forecast at h = 1, 2, 4? And is the h = 4 squared-error loss differential significant once a HAC standard error accounts for overlapping errors?
Data and exclusions
Input is data/cpi_quarterly.csv: 127 rows (n_input_rows). data/cpi_monthly.csv (381 rows) was used only for a provenance cross-check. Both SHA-256 hashes match data/README.md. The quarterly means recomputed from the monthly file match cpi_avg to within 3.3e-7. One row was excluded: 1995Q1, whose inflation is undefined (out/exclusions.csv: 127 → 126). The minor rounding discrepancy is listed in data_issues. Values after 2025Q3 are used only as realised targets; the latest target is 2026Q3. At the last origin, the estimation sample has n_analysed = 118 regression observations (122 quarters minus 4 held out for lags). Full audit: out/state/data_audit.md.
Method
- Baseline (
snaive): forecast for quarter t+h = inflation in quarter t+h−4. - Model (
model_name= sar_aic): seemodel_description. At each origin, using only quarters ≤ t, OLS is fitted with four quarterly intercepts plus p own lags. The lag order p ∈ {0,…,4} is chosen by AIC on a common sample. Forecasts are iterated recursively to h = 4. AIC chose p = 1 at 15 origins and p = 2 at 25 (selected_p_counts). - Loss and test: errors are actual − forecast; RMSE and MAE are averaged over the 40 origins. At h = 4, d_t = e²_snaive − e²_model. Its standard error uses a Newey–West long-run variance with a
hac_kernel_h4= bartlett kernel and truncation laghac_lags_h4= 4 (≥ h−1 = 3). The DM statisticdm_stat_h4is compared with N(0,1) for a two-sideddm_pvalue_h4. No randomness is used (random_seed= null).
Results
| h | RMSE snaive | RMSE model | MAE snaive | MAE model | 1 − RMSE ratio |
|---|---|---|---|---|---|
| 1 | 2.849 (rmse_snaive_h1) |
2.192 (rmse_model_h1) |
2.137 (mae_snaive_h1) |
1.519 (mae_model_h1) |
0.231 (rel_improvement_rmse_h1) |
| 2 | 2.847 (rmse_snaive_h2) |
2.460 (rmse_model_h2) |
2.126 (mae_snaive_h2) |
1.550 (mae_model_h2) |
0.136 (rel_improvement_rmse_h2) |
| 4 | 2.882 (rmse_snaive_h4) |
2.340 (rmse_model_h4) |
2.181 (mae_snaive_h4) |
1.594 (mae_model_h4) |
0.188 (rel_improvement_rmse_h4) |
Units are percentage points of annualised inflation. At every horizon, the model has lower RMSE and lower MAE than the seasonal-naive forecast. At h = 4 the mean loss differential is loss_diff_mean_h4 = 2.83 squared pp, which favours the model. Its HAC SE is loss_diff_se_h4 = 1.85, giving dm_stat_h4 = 1.53 and dm_pvalue_h4 = 0.125. So the h = 4 improvement is not statistically distinguishable from zero at the 5% level.
Uncertainty
The DM inference rests on 40 overlapping forecasts. That is small, and the result is sensitive to how the long-run variance is estimated:
- Other lags and kernels: the Bartlett lag-3 statistic is 1.36 (
sens_bartlett_lag3_dm_stat_h4); lag 6 gives 2.06 (sens_bartlett_lag6_dm_stat_h4); lag 8 gives 2.37 (sens_bartlett_lag8_dm_stat_h4). The rectangular kernel at lag 3 gives 1.67 (sens_rect_lag3_dm_stat_h4). - Small-sample correction: with the Harvey–Leybourne–Newbold correction and t(39) reference, the statistic is 1.52 with p = 0.135 (
sens_hln_dm_stat_h4,sens_hln_dm_pvalue_h4_t39).
The pre-specified choice (Bartlett, lag 4) does not reject. Longer lags would reject at 5%, which suggests longer-range dependence in d_t, most likely the 2021–2023 inflation surge. The conclusion is therefore fragile. No formal tests were run at h = 1, 2.
Limitations and open issues
- The data are the current vintage, not real-time data, so no claim of historical real-time performance is made. CPI is rarely revised.
- Only one model specification was evaluated, so there is no model-search bias across specifications. However, the loss differential is dominated by a few high-inflation quarters around 2021–2023.
- The HAC lag choice (4) was made before seeing the sensitivity results. Inference with 40 overlapping observations has known size distortions.
- Parameter-estimation uncertainty is ignored, as in the standard DM framework (Giacomini–White-type interpretation).