# F3-conf-02 — Real-time forecasts of US real GDP growth (A191RL1Q225SBEA) ## Question How accurately could US quarterly real GDP growth (q/q % change, SAAR) have been forecast 1 and 2 quarters ahead in real time, using only the data published at each of 8 forecast origins (2024-01-31 … 2025-12-31)? Does a simple time-series model beat the naive (no-change) forecast? Accuracy is measured against the **first-release** value of each target quarter. ## Data and exclusions - At each origin I used only the ALFRED vintage file dated at that origin: 307–314 quarterly rows, from 1947Q2 to the last published quarter. All files are complete. They have no missing values, no duplicate dates and no gaps between quarters. - Actuals come from `first_release.csv` (13 rows). All 16 target quarters (2024Q1–2026Q1) have a first release. - I used `current_vintage.csv` (318 rows) **only** for the revision statistic. - **Data issues:** 1. The COVID quarters 2020Q2 (−28.0) and 2020Q3 (+34.8/35.2) are huge outliers in every vintage. I kept them in the data but left them out of the AR estimation (see Method). They do not affect the naive forecast. 2. The 2025Q3 advance estimate came late because of the federal shutdown. As a result, the 8th origin is 2025-12-31, and its h=1 target (2025Q4) was first released in the 2026-02-28 vintage. 3. The history changes from one vintage to the next. For example, 2023Q4 is 3.3, then 3.4, then 3.2, and annual revisions rewrite many past quarters. Each origin uses only its own vintage. For each origin, `train_last_value` in `forecasts.csv` is the value from that origin's file. ## Method - **Naive forecast:** the last value in the origin's vintage, used for both h=1 and h=2. - **Model (`ar1_covid_excl`):** an AR(1) with intercept, fitted by OLS separately at each origin on that origin's full vintage (1947Q2 to the last quarter). I dropped the regression equations whose dependent value or lag falls in 2020Q2 or 2020Q3; this is equivalent to impulse dummies for 2020Q2–Q4. That leaves 303–310 equations. The h=2 forecast is built by applying the AR(1) twice (iterated forecast). I chose this specification before looking at any forecast errors and did not try other specifications. - The estimates barely change across origins: intercept ≈ 2.06 and φ ≈ 0.355, which implies an unconditional mean of about 3.2%. - The model uses no randomness, so no seed is needed. - Errors are actual − forecast. RMSE and MAE are averaged over the 8 origins at each horizon. ## Results | | RMSE h=1 | MAE h=1 | RMSE h=2 | MAE h=2 | |---|---|---|---|---| | Naive | 2.010 | 1.688 | 2.265 | 1.812 | | AR(1), COVID quarters excluded | 1.611 | 1.303 | 1.588 | 1.206 | - **Relative RMSE improvement** (1 − RMSE_model/RMSE_naive): **0.199** at h=1 and **0.299** at h=2. - **Revisions:** the mean absolute revision between first release and the 2026-10-30 value, over the 8 h=1 target quarters, is **0.5625 pp**. The largest are 2025Q4 (1.4 → 0.2), 2025Q2 (3.0 → 4.0) and 2024Q2 (2.8 → 3.6). That is about a third of the forecast RMSE, so a noticeable part of what counts as "forecast error" depends on which vintage is used as the truth. - **Per-origin comparison:** the model has the smaller absolute error at 5 of 8 origins at each horizon. - **The gain rests mostly on one origin:** 2025-04-30, where the naive forecast carried forward the −0.3 print for 2025Q1, which was driven by imports. Leaving that origin out shrinks the improvement to 0.043 (h=1) and 0.055 (h=2). - Per-forecast detail is in `out/forecasts.csv`. ## Uncertainty - I ran a Diebold–Mariano test on squared-error loss with the Harvey–Leybourne–Newbold small-sample correction and Student-t(7) reference. For h=2 the long-run variance includes autocovariance at lag 1. - h=1: DM = 1.05, p = 0.33 - h=2: DM = 1.23, p = 0.26 - **With only 8 origins, the AR(1)'s advantage over the naive forecast is not statistically significant at either horizon.** The point estimates favour the AR(1), but the evidence is weak, and the leave-one-out results show it depends heavily on a single quarter. - The RMSEs themselves are imprecise. Each rests on 8 errors, and the h=2 errors from consecutive origins overlap. ## Limitations and open issues - The evaluation sample is very small (8 origins, 2024–2025), so it says little about general forecasting performance. - "Actual" here means the advance estimate as it stood at month-end. Against current-vintage values the ranking could be different. I did not compute that comparison as an estimand, because the task defines first releases as the target. - The COVID exclusion is a modelling choice. If the AR were fitted on raw data including 2020, φ would be distorted. I did not test sensitivity to that choice or to other lag lengths, to avoid specification search on 8 points. - The origins are irregularly spaced: the last gap is 5 months. - The AR(1) mostly pulls forecasts toward the long-run mean of about 3.2%. Its edge comes from shrinking extreme recent prints, not from capturing dynamics.