1# F3-conf-04 — Multi-horizon forecasts of Canadian quarterly CPI inflation23## Question4Across 40 rolling origins from 2015Q4 to 2025Q3, does a simple time-series model forecast Canadian quarterly CPI inflation (400·Δln of the quarterly-average CPI, not seasonally adjusted) better than the seasonal-naive forecast at h = 1, 2 and 4? And at h = 4, is the mean squared-error loss differential distinguishable from zero once we use a HAC standard error that allows for the serial correlation caused by overlapping forecast errors?56## Data and exclusions7- `data/cpi_quarterly.csv` has 127 rows read (1995Q1–2026Q3). `data/cpi_monthly.csv` has 381 rows read and was used only for checks: every quarter has 3 months, `cpi_avg` matches the monthly mean (max abs diff 3e-7), and `infl_annualised` matches 400·Δln(cpi_avg) (max abs diff 3e-6). I found no duplicate quarters and no gaps.8- 1995Q1 has no inflation value, so it is left out of estimation. Nothing else is excluded.9- The evaluation window includes the 2020 COVID shock and the 2021–23 inflation surge. I did not winsorise these quarters.10- The data are a current vintage. I make no claim of real-time validity.1112## Method13- **Seasonal naive.** The forecast for quarter t+h is the observed value of quarter t+h−4.14- **Model (`ar_sdum_aic`).** OLS of inflation on four quarter-of-year intercept dummies plus p own lags.15 - The window expands from 1995Q2 to the origin, so each forecast uses only data dated ≤ origin.16 - At each origin, p ∈ {0,…,4} is chosen by AIC on a common sample (starting after the first 4 observations). The chosen model is then re-estimated on the full window.17 - Multi-step forecasts are built by iterating the model forward. AIC chose p = 2 up to 2021Q4 and p = 1 from 2022Q1 on.18 - The last estimation sample has 121 observations.19- **Forecast errors.** e = actual − forecast. RMSE and MAE are computed over 40 forecasts per horizon.20- **h = 4 test.** d_t = e²_snaive − e²_model.21 - The standard error of d̄ uses a Bartlett (Newey–West) long-run variance with truncation lag 4. This gives non-zero weight to autocovariances 1–4, which covers the required h−1 = 3.22 - I chose this specification before looking at the test results.23 - The p-value is two-sided and uses a Student t with 39 df.24 - No randomness is involved, so no seed was set.2526## Results27| h | RMSE snaive | RMSE model | MAE snaive | MAE model | 1 − RMSE ratio |28|---|---|---|---|---|---|29| 1 | 2.849 | 2.193 | 2.137 | 1.519 | 0.230 |30| 2 | 2.847 | 2.463 | 2.126 | 1.553 | 0.135 |31| 4 | 2.882 | 2.343 | 2.181 | 1.597 | 0.187 |3233(Errors are in percentage points, annualised.) At every horizon the model has lower RMSE and lower MAE than the seasonal-naive forecast. The relative RMSE improvement is 13–23%.3435At h = 4, d̄ = 2.818 squared pp, with HAC SE 1.851 (Bartlett, lag 4). This gives DM = 1.52 and p = 0.136. **At the 5% level the difference is not statistically distinguishable from zero.**3637## Uncertainty38The DM result changes with the truncation lag chosen for the long-run variance. All variants below are in `results.json → supplementary.dm_sensitivity`:3940| Variant | DM | p |41|---|---|---|42| Bartlett, lag 3 | 1.35 | 0.18 |43| Rectangular, lag 3 | 1.66 | 0.11 |44| Rectangular lag 3 with Harvey–Leybourne–Newbold correction | 1.51 | 0.14 |45| Bartlett, lag 6 | 2.04 | 0.048 |46| Bartlett, lag 8 | 2.35 | 0.024 |4748- Longer lags shrink the SE, which suggests negative higher-order autocorrelation in d_t.49- With only 40 overlapping observations, a long-run variance estimate is imprecise. I keep the pre-specified lag-4 result as primary rather than picking the lag that gives significance.50- **The fair summary is weak, fragile evidence in favour of the model at h = 4.**5152Supplementary DM tests at the other horizons are also not significant at 5%:53- h = 1: d̄ = 3.31, p = 0.105 (Bartlett lag 1).54- h = 2: d̄ = 2.04, p = 0.447 (Bartlett lag 2).5556If targets in 2020–2023 are dropped, the h = 4 mean loss differential falls to 1.27 (n = 24). So part of the advantage comes from the volatile period.5758## Limitations and open issues59- There are only 40 origins and their errors overlap. As a result, DM inference is low-powered and depends on the lag choice.60- The evaluation window has a structural break (pandemic and the inflation surge). Squared-error differentials are dominated by a few quarters.61- The model is deliberately simple: no exogenous predictors, constant seasonality, and an expanding window. Other model choices could rank differently. I selected only one model and did no model search on evaluation data.62- The data are a current vintage, not real-time.63- I did not apply the Giacomini–White or Clark–West adjustments. The models are not nested in the DM sense, since seasonal naive is a restricted random walk on the 4th lag with no estimation.64