1{2 "task_id": "T1-forecast",3 "model_name": "rw_drift_yoy",4 "model_description": "Base-effect-aware random walk with drift on log levels. At origin V, using only the RSAFS vintage dated V: mu = mean of the last 36 monthly log changes of the level ending at last(V); the level forecast is ln L_{last+h} = ln L_last + h*mu, and the YoY forecast is 100*(ln L_{last+h} - ln L_{T-12}), where L_{T-12} (the base month, already published) is taken from vintage V. The 36-month window and the specification were fixed before any forecast error was computed; no parameter is tuned on the evaluation sample. PAYEMS and UMCSENT are not used, so their availability alignment is not an issue; RSAFS_current and first_release are never used to forecast.",5 "n_origins": 10,6 "first_origin": "2025-10-31",7 "last_origin": "2026-07-31",8 "rmse_naive_h1": 0.9968743518549719,9 "mae_naive_h1": 0.8487221879899998,10 "rmse_naive_h3": 1.420040373740657,11 "mae_naive_h3": 1.2004486337699998,12 "rmse_snaive_h1": 1.6745428991300964,13 "mae_snaive_h1": 1.30666987625,14 "rmse_snaive_h3": 1.3160788989366212,15 "mae_snaive_h3": 1.06586869147,16 "rmse_ar1_h1": 0.9405244111134986,17 "mae_ar1_h1": 0.7976510573200001,18 "rmse_ar1_h3": 1.1871178147503472,19 "mae_ar1_h3": 0.9526895961500002,20 "rmse_model_h1": 0.5524251036176803,21 "mae_model_h1": 0.49702333686000005,22 "rmse_model_h3": 1.0538489260007893,23 "mae_model_h3": 0.7471097183499998,24 "rel_improvement_rmse_h1": 0.44584279594541254,25 "dm_stat_h1": 2.3021200358532323,26 "dm_pvalue_h1": 0.021328403816257557,27 "conclusion_code_h1": "model_better_significant",28 "rel_improvement_rmse_h3": 0.25787396929796413,29 "dm_stat_h3": 1.864485101676419,30 "dm_pvalue_h3": 0.062253611839883316,31 "conclusion_code_h3": "model_better_not_significant",32 "mean_abs_revision_h1_targets": 0.5482198028389015,33 "feasibility": "complete",34 "feasibility_reason": null,35 "data_issues": [36 {37 "issue": "Irregular RSAFS publication timing: at the six origins 2025-10-31 ... 2026-03-31 the last published month is two months before the origin month (e.g. last(2025-10-31) = 2025-08) instead of the usual one; the 2026-04-30 vintage adds two months at once (2026-02 and 2026-03) and the last four origins have the usual one-month delay.",38 "handling": "Targets defined as last(V)+h per TASK.md, not by calendar. Consequently month 2026-03 is never an h=1 target (h=1 targets: 2026-02 from origin 2026-03-31, then 2026-04 from origin 2026-04-30), and for the first six origins the h=1 target month lies entirely before the origin date (a 'nowcast/backcast' of an unpublished month). Per-origin last(V) and delay are in real_time_design."39 },40 {41 "issue": "PAYEMS vintage 2025-10-31 ends in 2025-08 and vintage 2025-12-31 jumps to 2025-11 (missing employment releases); PAYEMS vintage 2026-02-28 contains a benchmark revision (level about 1 million lower).",42 "handling": "PAYEMS is not used by the model; noted for completeness."43 },44 {45 "issue": "UMCSENT has 210 empty values, all before 1978 (survey not monthly).",46 "handling": "UMCSENT not used by the model; no imputation."47 },48 {49 "issue": "RSAFS_current reflects a large benchmark revision (levels changed for 138 months since 2015-01, up to about 4.6%) relative to the 2026-07-31 vintage; first_release.csv levels for 2026-08 and 2026-09 come from post-benchmark vintages while earlier target months come from pre-benchmark vintages.",50 "handling": "Forecasts never use RSAFS_current; actuals are taken as given from first_release.csv (YoY is a within-vintage ratio, so level shifts largely cancel); the revision estimand (d) reflects these benchmark changes."51 },52 {53 "issue": "Monthly vintages revise past levels (up to 0.4% between consecutive vintages in the evaluation period).",54 "handling": "Each forecast uses only its own vintage; actual is the first release, so errors include revision noise in the base month."55 }56 ],57 "n_input_rows": {58 "RSAFS_current.csv": 417,59 "UMCSENT.csv": 887,60 "first_release.csv": 28,61 "vintages/PAYEMS_vintage_2025-10-31.csv": 1040,62 "vintages/PAYEMS_vintage_2025-11-30.csv": 1041,63 "vintages/PAYEMS_vintage_2025-12-31.csv": 1043,64 "vintages/PAYEMS_vintage_2026-01-31.csv": 1044,65 "vintages/PAYEMS_vintage_2026-02-28.csv": 1045,66 "vintages/PAYEMS_vintage_2026-03-31.csv": 1046,67 "vintages/PAYEMS_vintage_2026-04-30.csv": 1047,68 "vintages/PAYEMS_vintage_2026-05-31.csv": 1048,69 "vintages/PAYEMS_vintage_2026-06-30.csv": 1049,70 "vintages/PAYEMS_vintage_2026-07-31.csv": 1050,71 "vintages/RSAFS_vintage_2025-10-31.csv": 404,72 "vintages/RSAFS_vintage_2025-11-30.csv": 405,73 "vintages/RSAFS_vintage_2025-12-31.csv": 406,74 "vintages/RSAFS_vintage_2026-01-31.csv": 407,75 "vintages/RSAFS_vintage_2026-02-28.csv": 408,76 "vintages/RSAFS_vintage_2026-03-31.csv": 409,77 "vintages/RSAFS_vintage_2026-04-30.csv": 411,78 "vintages/RSAFS_vintage_2026-05-31.csv": 412,79 "vintages/RSAFS_vintage_2026-06-30.csv": 413,80 "vintages/RSAFS_vintage_2026-07-31.csv": 41481 },82 "n_analysed": 20,83 "random_seed": null,84 "real_time_design": [85 {86 "origin": "2025-10-31",87 "last_month": "2025-08",88 "delay_months": 2,89 "ar1_c": 0.7245195130966369,90 "ar1_phi": 0.8398849523075356,91 "drift_pct_per_month": 0.272682927085095892 },93 {94 "origin": "2025-11-30",95 "last_month": "2025-09",96 "delay_months": 2,97 "ar1_c": 0.7230146850375044,98 "ar1_phi": 0.8398593258796581,99 "drift_pct_per_month": 0.2845906397826731100 },101 {102 "origin": "2025-12-31",103 "last_month": "2025-10",104 "delay_months": 2,105 "ar1_c": 0.7207145937397748,106 "ar1_phi": 0.8398988453218994,107 "drift_pct_per_month": 0.2537575944004525108 },109 {110 "origin": "2026-01-31",111 "last_month": "2025-11",112 "delay_months": 2,113 "ar1_c": 0.7197147078017161,114 "ar1_phi": 0.839929613490428,115 "drift_pct_per_month": 0.3046705275529021116 },117 {118 "origin": "2026-02-28",119 "last_month": "2025-12",120 "delay_months": 2,121 "ar1_c": 0.7161329757524207,122 "ar1_phi": 0.840103885059219,123 "drift_pct_per_month": 0.33373500370165543124 },125 {126 "origin": "2026-03-31",127 "last_month": "2026-01",128 "delay_months": 2,129 "ar1_c": 0.7173993115367638,130 "ar1_phi": 0.8400215083855623,131 "drift_pct_per_month": 0.20948125443051147132 },133 {134 "origin": "2026-04-30",135 "last_month": "2026-03",136 "delay_months": 1,137 "ar1_c": 0.7192001736723118,138 "ar1_phi": 0.8399036982121751,139 "drift_pct_per_month": 0.34146193100709826140 },141 {142 "origin": "2026-05-31",143 "last_month": "2026-04",144 "delay_months": 1,145 "ar1_c": 0.7216117313802095,146 "ar1_phi": 0.8398320190588064,147 "drift_pct_per_month": 0.33739105093039984148 },149 {150 "origin": "2026-06-30",151 "last_month": "2026-05",152 "delay_months": 1,153 "ar1_c": 0.7265261438714329,154 "ar1_phi": 0.8398016339053244,155 "drift_pct_per_month": 0.3474913588867226156 },157 {158 "origin": "2026-07-31",159 "last_month": "2026-06",160 "delay_months": 1,161 "ar1_c": 0.7268024118912031,162 "ar1_phi": 0.839871473088339,163 "drift_pct_per_month": 0.3518484635199215164 }165 ],166 "dm_details": {167 "h1": {168 "mean_loss_diff": 0.6885849782792655,169 "lrv": 0.8946623454191901,170 "n_origins_model_lower_sq_error": 8,171 "sign_test_pvalue_two_sided": 0.109375172 },173 "h3": {174 "mean_loss_diff": 0.9059171042204879,175 "lrv": 2.3607993886369596,176 "n_origins_model_lower_sq_error": 8,177 "sign_test_pvalue_two_sided": 0.109375178 }179 },180 "abs_revision_h1_by_target": {181 "2025-09": 0.5502167925401169,182 "2025-10": 0.6641763167215546,183 "2025-11": 0.43891998227811113,184 "2025-12": 0.32862681655441595,185 "2026-01": 0.9756759757612712,186 "2026-02": 0.4099556308938235,187 "2026-04": 0.7481728291013168,188 "2026-05": 0.16533992600872516,189 "2026-06": 0.7440888135517616,190 "2026-07": 0.4570249449779187191 }192}