SPB Git

spb/wp29_uqo

Public

# F3-conf-02 — Real-time forecasts of US real GDP growth

# Question

How accurately could US quarterly real GDP growth (A191RL1Q225SBEA, % q/q SAAR) have been forecast 1 and 2 quarters ahead, using only the data available at each of 8 forecast origins (2024-01-31 … 2025-12-31; first_origin, last_origin, n_origins)? And did a simple AR(1) beat the naive no-change forecast, judged against first-release values?

# Data and exclusions

  • Inputs: 8 ALFRED vintage files (307–314 rows each), current_vintage.csv (318 rows) and first_release.csv (13 rows) (n_input_rows). All SHA-256 hashes match data/README.md. There are no missing values or duplicate dates (see out/state/data_audit.md).
  • Real-time rule: at each origin, forecasts use only the vintage file dated that day. current_vintage.csv is used only for the revision statistic. Each target's first release came out after its origin, so every evaluation is truly out of sample (out/state/checks.md).
  • Exclusions apply only to the AR(1) estimation sample. Using the last origin's vintage (314 rows): keep regression pairs whose lagged value is from 1985Q1 or later (152 rows removed). Then drop the 3 pairs that involve the pandemic outliers 2020Q2/2020Q3. That leaves n_analysed = 159 pairs (out/exclusions.csv). Earlier origins use the same rules on their own vintages, giving 152–158 pairs (n_train column in out/forecasts.csv).
  • Data issues (data_issues): (1) the 8th origin is 2025-12-31 because the shutdown delayed the 2025Q3 advance estimate; (2) the pandemic outliers mentioned above. All 16 targets have first releases, so feasibility = "complete".

# Method

  • Naive: at both horizons, the forecast is the last value in the origin's vintage.
  • Model (model_name = ar1_1985_excovid; model_description): an AR(1) with intercept, fitted by OLS separately at each origin on that origin's vintage only. The h = 2 forecast iterates the h = 1 forecast. I fixed the specification (sample start 1985, pandemic exclusion) before looking at any forecast errors. Estimated coefficients are in ar1_coefficients_by_origin: intercept about 1.7, slope about 0.34 at every origin.
  • Targets are the 1st and 2nd quarters after the last quarter in each vintage. Actuals are first releases. The evaluation metrics are RMSE and MAE over the 8 origins for each horizon, plus the relative improvement 1 − RMSE_model/RMSE_naive.
  • The revision statistic is the mean, over the 8 h = 1 target quarters (2024Q1–2025Q4), of |current value − first release|.
  • No randomness is involved (random_seed = null).

# Results

naive AR(1) rel. improvement (RMSE)
h=1 RMSE 2.01 (rmse_naive_h1) 1.48 (rmse_model_h1) 0.262 (rel_improvement_rmse_h1)
h=1 MAE 1.69 (mae_naive_h1) 1.23 (mae_model_h1)
h=2 RMSE 2.27 (rmse_naive_h2) 1.40 (rmse_model_h2) 0.383 (rel_improvement_rmse_h2)
h=2 MAE 1.81 (mae_naive_h2) 1.03 (mae_model_h2)

Units are percentage points of annualised growth.

  • The AR(1) has lower RMSE and lower MAE than the naive forecast at both horizons in this sample. Most of its gain comes from not carrying forward unusual quarters: after the 2025Q1 reading of −0.3, the naive forecast was −0.3, while the AR(1) forecast was 1.6–2.3 and the first releases were 3.0 and 4.3. After the 2025Q3 reading of 4.3, the AR(1) forecast 3.2 for 2025Q4, whose first release was 1.4.
  • Mean absolute revision from first release to the current value, over the h = 1 targets: 0.56 pp (mean_abs_revision_h1_targets). That is roughly a third to a half of the forecast RMSEs, so evaluating against current data instead of first releases could change the figures noticeably.

# Uncertainty

There are only 8 forecast errors per horizon, so all figures are imprecise. A Diebold–Mariano test on squared-error loss, with the Harvey–Leybourne–Newbold small-sample correction and t(7) reference, does not reject equal accuracy:

  • h = 1: statistic 1.49, two-sided p = 0.18 (dm_hln_stat_h1, dm_hln_pvalue_two_sided_h1);
  • h = 2: statistic 1.75, two-sided p = 0.12 (dm_hln_stat_h2, dm_hln_pvalue_two_sided_h2).

The AR(1)'s advantage is therefore suggestive, not statistically established. The single 2025Q1 contraction and the rebound after it drive a large part of the naive forecast's squared error.

# Limitations and open issues

  • The evaluation window is short (8 origins, 2024–2025). Results may not generalise to other periods.
  • I evaluated only one model specification. Choices such as the 1985 start, the pandemic exclusion and the AR order were not tuned, and no alternatives were evaluated.
  • The h = 2 targets of consecutive origins overlap with the next origin's h = 1 targets, so the errors are not independent.
  • First releases come from a month-end grid (advance estimates as they stood at month end), as described in the data README.
  • Process note: early on, an accidental mkdir created a scratch out/state directory inside data/vintages. I moved it out at once, re-verified the input file hashes (unchanged), and modified no input file.
Files · 46a1f53512bec3cd5d9c16e8fc9d9da4129c09cc
Menu

Theme