SPB Git

spb/wp29_uqo

Public
7.7 KB · 143 lines json
1{2  "task_id": "T1-forecast",3  "model_name": "Base-effect drift (trailing-12m mean growth level extrapolation)",4  "model_description": "At origin V, using only the RSAFS vintage dated V: let last = last month in the vintage and mu = (ln L_last - ln L_{last-12})/12, the mean monthly log growth over the last 12 published months. The level of target month T = last+h is forecast as ln L_T = ln L_last + h*mu, and the YoY forecast is 100*(ln L_last + h*mu - ln L_{T-12}), where L_{T-12} is the base-period level already published in the same vintage. Equivalently: naive forecast + h*g_last/12 - 100*(ln L_{T-12} - ln L_{last-12}), i.e. it corrects the naive forecast for known base effects (the months dropping out of the 12-month window). No parameters are estimated; PAYEMS and UMCSENT are not used (specification fixed a priori, before any evaluation against actuals). All inputs are from vintage V, so the availability rule holds trivially.",5  "n_origins": 10,6  "first_origin": "2025-10-31",7  "last_origin": "2026-07-31",8  "rmse_naive_h1": 0.996874361153601,9  "mae_naive_h1": 0.8487221999999999,10  "rmse_naive_h3": 1.4200403019751233,11  "mae_naive_h3": 1.2004486,12  "rmse_snaive_h1": 1.674542814799132,13  "mae_snaive_h1": 1.3066698,14  "rmse_snaive_h3": 1.3160788608225193,15  "mae_snaive_h3": 1.0658687,16  "rmse_ar1_h1": 0.940524354787796,17  "mae_ar1_h1": 0.7976509999999999,18  "rmse_ar1_h3": 1.1871176370926342,19  "mae_ar1_h3": 0.9526893999999999,20  "rmse_model_h1": 0.5502976390310066,21  "mae_model_h1": 0.48633190000000004,22  "rmse_model_h3": 1.1422196608203694,23  "mae_model_h3": 0.9339774000000001,24  "rel_improvement_rmse_h1": 0.4479769362367869,25  "dm_stat_h1": 2.4289778933188826,26  "dm_pvalue_h1": 0.015141455540092164,27  "conclusion_code_h1": "model_better_significant",28  "rel_improvement_rmse_h3": 0.19564278617186803,29  "dm_stat_h3": 1.546577321548468,30  "dm_pvalue_h3": 0.12196520179653336,31  "conclusion_code_h3": "model_better_not_significant",32  "mean_abs_revision_h1_targets": 0.5482198028388884,33  "feasibility": "complete",34  "feasibility_reason": null,35  "data_issues": [36    {37      "issue": "Irregular publication timing: RSAFS vintage 2025-10-31 ends at 2025-08 (2 months before the origin month).",38      "handling": "Per task rules the target is defined relative to last(V), the last month present in the vintage, not to the calendar; forecasts use only that vintage."39    },40    {41      "issue": "Irregular publication timing: RSAFS vintage 2025-11-30 ends at 2025-09 (2 months before the origin month).",42      "handling": "Per task rules the target is defined relative to last(V), the last month present in the vintage, not to the calendar; forecasts use only that vintage."43    },44    {45      "issue": "Irregular publication timing: RSAFS vintage 2025-12-31 ends at 2025-10 (2 months before the origin month).",46      "handling": "Per task rules the target is defined relative to last(V), the last month present in the vintage, not to the calendar; forecasts use only that vintage."47    },48    {49      "issue": "Irregular publication timing: RSAFS vintage 2026-01-31 ends at 2025-11 (2 months before the origin month).",50      "handling": "Per task rules the target is defined relative to last(V), the last month present in the vintage, not to the calendar; forecasts use only that vintage."51    },52    {53      "issue": "Irregular publication timing: RSAFS vintage 2026-02-28 ends at 2025-12 (2 months before the origin month).",54      "handling": "Per task rules the target is defined relative to last(V), the last month present in the vintage, not to the calendar; forecasts use only that vintage."55    },56    {57      "issue": "Irregular publication timing: RSAFS vintage 2026-03-31 ends at 2026-01 (2 months before the origin month).",58      "handling": "Per task rules the target is defined relative to last(V), the last month present in the vintage, not to the calendar; forecasts use only that vintage."59    },60    {61      "issue": "Vintage 2026-04-30 adds two new months at once (catch-up after delayed release); the month 2026-02 is never an h=1 target and its first release is in the same vintage as the following month.",62      "handling": "No adjustment; targets follow last(V)+h. Horizon-1 targets therefore skip one month and h=3 targets skip one month, so the 10 origins are not equally spaced in target time."63    },64    {65      "issue": "Large level revision: current RSAFS levels for 2024-06..2026-07 are 3.8% to 5.6% below their first-release levels (a benchmark/annual revision that first appears in the 2026-09-30 month-end vintage shifted the whole level; the 2026-08 and 2026-09 first releases are already on the new level); YoY growth is revised by up to 2.02 pp.",66      "handling": "Forecasts are evaluated against first-release YoY (computed within one vintage, so level shifts cancel to first order). The current file is used only for estimand (d)."67    },68    {69      "issue": "Real-time vintages differ from each other through routine revisions of the last 2-3 months and through annual revisions; values of a given month differ across origins.",70      "handling": "Each origin uses only its own vintage file; no splicing of vintages."71    },72    {73      "issue": "UMCSENT has empty values for 210 months before 1978 (quarterly survey); PAYEMS vintages also show irregular timing (2025-10-31 ends at 2025-08; 2025-12-31 adds two months at once) due to delayed BLS releases.",74      "handling": "Neither predictor enters the chosen model; files were read, audited and row-counted only (PAYEMS, UMCSENT)."75    }76  ],77  "n_input_rows": {78    "first_release.csv": 28,79    "vintages/RSAFS_vintage_2025-10-31.csv": 404,80    "vintages/PAYEMS_vintage_2025-10-31.csv": 1040,81    "vintages/RSAFS_vintage_2025-11-30.csv": 405,82    "vintages/PAYEMS_vintage_2025-11-30.csv": 1041,83    "vintages/RSAFS_vintage_2025-12-31.csv": 406,84    "vintages/PAYEMS_vintage_2025-12-31.csv": 1043,85    "vintages/RSAFS_vintage_2026-01-31.csv": 407,86    "vintages/PAYEMS_vintage_2026-01-31.csv": 1044,87    "vintages/RSAFS_vintage_2026-02-28.csv": 408,88    "vintages/PAYEMS_vintage_2026-02-28.csv": 1045,89    "vintages/RSAFS_vintage_2026-03-31.csv": 409,90    "vintages/PAYEMS_vintage_2026-03-31.csv": 1046,91    "vintages/RSAFS_vintage_2026-04-30.csv": 411,92    "vintages/PAYEMS_vintage_2026-04-30.csv": 1047,93    "vintages/RSAFS_vintage_2026-05-31.csv": 412,94    "vintages/PAYEMS_vintage_2026-05-31.csv": 1048,95    "vintages/RSAFS_vintage_2026-06-30.csv": 413,96    "vintages/PAYEMS_vintage_2026-06-30.csv": 1049,97    "vintages/RSAFS_vintage_2026-07-31.csv": 414,98    "vintages/PAYEMS_vintage_2026-07-31.csv": 1050,99    "RSAFS_current.csv": 417,100    "UMCSENT.csv": 887101  },102  "n_analysed": 20,103  "random_seed": 20261030,104  "supplementary": {105    "per_horizon": {106      "h1": {107        "hln_stat": 2.3043307587255466,108        "hln_p": 0.04666749201146114,109        "rmse_diff": 0.44657672212259436,110        "boot_ci95": [111          0.29334832793401305,112          0.6721875156424356113        ],114        "wins_model": 8,115        "n": 10116      },117      "h3": {118        "hln_stat": 1.1573524918777764,119        "hln_p": 0.2769204775275833,120        "rmse_diff": 0.2778206411547539,121        "boot_ci95": [122          -0.14490466807245417,123          0.6274230170892946124        ],125        "wins_model": 6,126        "n": 10127      }128    },129    "abs_revision_h1_targets": {130      "2025-09": 0.5502167925401702,131      "2025-10": 0.6641763167214578,132      "2025-11": 0.4389199822781502,133      "2025-12": 0.3286268165544084,134      "2026-01": 0.9756759757612237,135      "2026-02": 0.40995563089387543,136      "2026-04": 0.7481728291014038,137      "2026-05": 0.16533992600871716,138      "2026-06": 0.7440888135516674,139      "2026-07": 0.45702494497780943140    },141    "ar1_note": "AR(1) re-estimated at every origin on that vintage only."142  }143}
Files · main
Menu

Theme