F3-conf-02 — Real-time forecasts of US real GDP growth from ALFRED vintages
Question
How accurately could US quarterly real GDP growth (A191RL1Q225SBEA, % change q/q, SAAR) have been forecast 1 and 2 quarters ahead in real time, at 8 origins from 2024-01-31 to 2025-12-31 (first_origin, last_origin, n_origins), using only the vintage published at each origin? Does a simple AR(1) model beat the naive (last value) forecast? Forecasts are scored against the first-release value of each target quarter.
Data and exclusions
- Inputs: 8 ALFRED vintage files (307–314 rows each),
current_vintage.csv(318 rows) andfirst_release.csv(13 rows). Row counts are inn_input_rows. All SHA-256 hashes matchdata/README.md. There are no missing values, no duplicate dates and no gaps (out/state/data_audit.md). - Information rule: at origin d, only the vintage file dated d is used. Its training sample ends at the last quarter in that file, and every value comes from that file.
current_vintage.csvis used only formean_abs_revision_h1_targets. For each actual, the script asserts that its first-release date falls after its origin. - Exclusions apply to the AR estimation sample only;
out/exclusions.csvshows them for the last origin. The vintage has 314 rows. Step 1 drops the 152 dependent quarters before 1985Q2. Step 2 drops dependent quarters 2020Q2–2020Q4, i.e. the COVID outliers of about −28% and +35% appearing as y_t or y_{t−1}. That leaves 159 observations (n_analysed). The naive forecast uses only the last value of each vintage. Itsn_traincolumn inforecasts.csvrecords the full vintage length. - Data issues (
data_issues): (i) the COVID outliers, handled as above; (ii) the 8th origin is 2025-12-31 because the shutdown delayed the 2025Q3 advance estimate, and the 2025Q4 first release is dated 2026-02-28. Chronology is respected in both cases.
Method
- Naive: for h = 1 and h = 2, the forecast is the last value in the origin's vintage.
- Model (
model_name=ar1_1985_excovid, seemodel_description): an AR(1) with intercept, estimated by OLS at each origin on that origin's vintage. The dependent sample runs from 1985Q2 to the last quarter, minus 2020Q2–2020Q4. The h = 2 forecast iterates the AR(1). - The specification was fixed before any out-of-sample errors were computed (
out/state/log.md). No alternatives were tried, so no specification search took place. - At the last origin the coefficients are intercept 1.77 and φ 0.33 (
ar1_coefficients_last_origin). - Errors are forecast minus first-release actual. RMSE and MAE are computed over the 8 origins per horizon. The procedure is deterministic, so there is no seed (
random_seed= null).
Results
| RMSE h=1 | MAE h=1 | RMSE h=2 | MAE h=2 | |
|---|---|---|---|---|
| naive | 2.010 (rmse_naive_h1) |
1.687 (mae_naive_h1) |
2.265 (rmse_naive_h2) |
1.812 (mae_naive_h2) |
| AR(1) | 1.484 (rmse_model_h1) |
1.233 (mae_model_h1) |
1.398 (rmse_model_h2) |
1.030 (mae_model_h2) |
Units are percentage points of annualised growth.
- Relative RMSE improvement of the AR(1) over naive: 0.262 at h=1 (
rel_improvement_rmse_h1) and 0.383 at h=2 (rel_improvement_rmse_h2). - Mean absolute revision between first release and the current (2026-10-30) value for the 8 h=1 target quarters (2024Q1–2025Q4): 0.5625 pp (
mean_abs_revision_h1_targets). That is roughly a third of the size of the h=1 forecast errors. - Over this window the AR(1) beat naive. Naive suffers from the volatile quarter-to-quarter swings of 2025, e.g. the −0.3 first print for 2025Q1 followed by +3.0. The AR(1) pulls forecasts toward the post-1985 mean of about 2.7%.
Uncertainty
- Only 8 forecast errors per horizon are available, so the accuracy estimates are very imprecise.
- Supplementary Diebold–Mariano statistics on squared-error differences (variance with h−1 autocovariance lags, compared to a t(7) reference):
- h=1: DM = 1.59, p = 0.155 (
supp_dm_stat_h1,supp_dm_pvalue_t7_h1). - h=2: DM = 1.86, p = 0.105 (
supp_dm_stat_h2,supp_dm_pvalue_t7_h2).
- h=1: DM = 1.59, p = 0.155 (
- So the improvement is not statistically significant at 5%.
- The AR(1) had the lower squared error at 5 of 8 origins for h=1 (
supp_n_origins_model_lower_sqerr_h1) and at 8 of 8 for h=2 (supp_n_origins_model_lower_sqerr_h2). - The h=2 errors come from overlapping 2-step forecasts and are autocorrelated. The small-sample DM test is also only approximate.
Limitations and open issues
- The evaluation window covers 8 origins (2024–2025) and is not representative of other periods. The ranking could reverse in a calmer period.
- First-release actuals are noisy. Revisions average 0.56 pp (
mean_abs_revision_h1_targets), reaching 1.2 pp for 2025Q4, so scores against current values would differ. These were not computed because the task specifies first-release actuals. - The AR estimation sample start (1985) and the COVID exclusion are judgment calls fixed a priori. No sensitivity analysis was run.
n_trainfor the naive model is defined as the vintage length, even though the naive forecast uses only one value. This convention is documented here.- Process note: an empty directory was briefly created by mistake under
data/and removed at once. No data file was changed, and the hashes were re-verified.