1# F3-conf-01 — Forecasting Canadian monthly GDP y/y growth under publication lags23## Question4At the end of each month t (48 origins, 2022-05 to 2026-04), how accurately can year-over-year growth of Canadian monthly real GDP for month t+1 and t+3 be forecast from what is published at that time? And does a model that also uses the more timely LFS employment growth beat the naive forecast (the latest published GDP y/y value, month t−2)?56## Data and exclusions7- `data/canada_gdp_employment.csv`: 345 monthly rows, 1998-01 to 2026-09, current vintage (StatCan v65201210 GDP, v2062811 LFS employment). There are no duplicate months and no gaps. GDP is missing only for 2026-08/09 (not yet published). When the y/y columns are recomputed from the levels, they match to within 5e-5 pp (rounding to 4 decimals).8- Information rule applied at every origin t: GDP months ≤ t−2 and employment months ≤ t−1 only. The code asserts this. Training targets must also be ≤ t−2. At the last origin (2026-04) the latest GDP month available is 2026-02 and the latest employment month is 2026-03.9- Exclusion (decided in advance, not tuned on evaluation errors): training rows whose target or predictor month falls in 2020-03..2021-06 are dropped from model estimation. In that window the COVID collapse and rebound push y/y values from −16.2% to +18.5%, and these few points would dominate OLS. The naive forecast is unaffected, and no evaluation target falls in that window.10- I used the y/y columns as given.1112## Method13- **Naive:** forecast = gdp_yoy(t−2) for both h=1 and h=3.14- **Model `ardl_direct_emp`:** a direct h-step OLS regression, gdp_yoy(s+h) = a + b·gdp_yoy(s−2) + c·emp_yoy(s−1), fitted over pseudo-origins s. At each origin t it is re-estimated on an expanding window (1998 onward) using only pairs whose target month is ≤ t−2 (minus the COVID rows). The forecast plugs in gdp_yoy(t−2) and emp_yoy(t−1). There is no model selection: the specification was fixed before the evaluation was run. In the last estimation sample (origin 2026-04) there are 316 rows for h=1 and 312 for h=3.15- **Evaluation:** RMSE and MAE over the 48 origins, per horizon, computed against current-vintage gdp_yoy. The full ledger is in `out/forecasts.csv` (192 rows).1617## Results18| horizon | RMSE naive | RMSE model | MAE naive | MAE model | 1 − RMSE_m/RMSE_n |19|---|---|---|---|---|---|20| h=1 | 0.814 | 0.741 | 0.642 | 0.603 | 0.089 |21| h=3 | 1.140 | 0.947 | 0.872 | 0.796 | 0.170 |2223(Units are percentage points of y/y growth.) The employment-augmented model has lower RMSE and MAE than the naive forecast at both horizons: about 9% lower RMSE at h=1 and 17% at h=3. Both methods over-predict on average over 2022–2026. The mean error is +0.30 (naive) and +0.34 (model) pp at h=1, and +0.46 and +0.53 pp at h=3, consistent with growth slowing over the evaluation window.2425## Uncertainty26- I ran a Diebold–Mariano test on the squared-error loss differential (model − naive). It uses a Newey–West long-run variance with h+1 lags, because the effective distance from the last observed GDP month is h+2 and errors from consecutive origins overlap. It also applies the Harvey–Leybourne–Newbold small-sample correction and Student-t(47) reference.27 - h=1: DM = −1.33, p = 0.19.28 - h=3: DM = −1.26, p = 0.22.29- **The improvements are therefore not statistically distinguishable from zero at conventional levels** with 48 overlapping, autocorrelated origins. The point estimates favour the model, but the evidence is weak.3031## Limitations and open issues32- The data are the current (revised) vintage. The exercise simulates publication timing only, not the first releases that a forecaster would actually have seen, so no real-time validity is claimed. Revisions to both GDP and LFS could change the results.33- The 48 origins cover a single macro episode (post-COVID disinflation and slowdown), so the results may not generalise.34- I did not run an ablation (the same model without employment). The gain could therefore partly come from the regression structure (mean reversion of y/y growth toward its historical average) rather than from employment itself. Whether employment specifically adds value is *not evaluated*.35- The COVID exclusion window is a judgement call. I did not try other windows, to avoid tuning on the test sample.36- The HAC/DM inference is approximate with T=48.37