SPB Git

spb/wp29_uqo

Public

# 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): see model_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 lag hac_lags_h4 = 4 (≥ h−1 = 3). The DM statistic dm_stat_h4 is compared with N(0,1) for a two-sided dm_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).
Files · main
Menu

Theme