Contract — T1-forecast (restated)
Question. Using only data published at each of 10 month-end forecast origins (2025-10-31 … 2026-07-31), how accurately can US retail & food services sales (RSAFS) year-over-year log growth g_m = 100·ln(L_m/L_{m-12}) be forecast h=1 and h=3 months beyond the last published month last(V), when judged against the first-release YoY value of the target month? Does a model of my own design beat the naive (no-change) forecast?
Estimands (h ∈ {1,3}, n = 10 origins each): (a) RMSE and MAE vs first release for naive, seasonal naive, AR(1), and my model; (b) 1 − RMSE_model/RMSE_naive; (c) DM stat (model vs naive, squared loss, d_t = e²_naive − e²_model, Bartlett LRV with truncation lag h−1, no HLN correction, N(0,1) two-sided p); (d) mean |g^current_T − yoy_first_release_T| over the 10 h=1 target months. Assumptions: first release is the relevant "truth"; 10 origins is a tiny sample, so DM asymptotic normality is only a rough approximation; the loss differential must be covariance-stationary for DM to be meaningful.
Outputs. out/forecasts.csv (80 rows; origin_date,target_date,horizon,forecast,actual_first_release,model,vintage_used), out/results.json (keys listed in TASK.md: task_id, model_name, model_description, n_origins, first_origin, last_origin, rmse/mae × {naive,snaive,ar1,model} × {h1,h3}, rel_improvement_rmse_h1/h3, dm_stat/pvalue h1/h3, conclusion_code_h1/h3, mean_abs_revision_h1_targets, feasibility, feasibility_reason, data_issues, n_input_rows, n_analysed, random_seed), out/table1.csv, out/figure1.png, out/report.md, out/analysis.py, out/claims.json; plus protocol files in out/state, out/exclusions.csv.
Information rules. At origin V: only RSAFS vintage V, PAYEMS vintage V, UMCSENT months ≤ month(V). Target = last(V)+h where last(V) = last month in RSAFS vintage V (not calendar). Actual = yoy_first_release. RSAFS_current only for (d), never in a forecast. Model selection must also respect the rule (no tuning on evaluation outcomes).
Invalidity / impossibility. Missing target months in first_release.csv; vintage files not matching origins; any use of RSAFS_current or post-origin data in forecasts; choosing the model by its out-of-sample performance over these same 10 origins (would be look-ahead).