SPB Git

spb/wp29_uqo

Public
4.5 KB · 35 lines markdown
1# F3-conf-04 — Multi-horizon forecasts of Canadian quarterly CPI inflation23## Question4Across 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?56## Data and exclusions7Input 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`.89## Method10- **Baseline (`snaive`):** forecast for quarter t+h = inflation in quarter t+h−4.11- **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`).12- **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).1314## Results15| h | RMSE snaive | RMSE model | MAE snaive | MAE model | 1 − RMSE ratio |16|---|---|---|---|---|---|17| 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`) |18| 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`) |19| 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`) |2021Units 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**.2223## Uncertainty24The DM inference rests on 40 overlapping forecasts. That is small, and the result is sensitive to how the long-run variance is estimated:25- **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`).26- **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`).2728The 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.2930## Limitations and open issues31- The data are the current vintage, not real-time data, so no claim of historical real-time performance is made. CPI is rarely revised.32- 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.33- The HAC lag choice (4) was made before seeing the sensitivity results. Inference with 40 overlapping observations has known size distortions.34- Parameter-estimation uncertainty is ignored, as in the standard DM framework (Giacomini–White-type interpretation).35
Files · main
Menu

Theme