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}