SPB Git

spb/wp29_uqo

Public
1.7 KB · 8 lines markdown
1# Contract — F3-conf-032**Question.** Over 60 monthly rolling origins t = 2021-09 … 2026-08, does a fixed-penalty (λ=50) ridge regression on 8 standardised predictors forecast ip_growth at t+1 better than (a) naive (ip_growth_t) and (b) expanding mean of ip_growth over 1992-04..t?3**Estimands.** Out-of-sample RMSE and MAE (percent per month) of naive, mean and ridge at h=1 over the 60 origins; rel. improvement 1 − RMSE_ridge/RMSE_baseline for each baseline. Meaningful under: current-vintage data, publication lags ignored (stylised timing), fixed model spec; not real-time performance.4**Ridge spec.** Training rows s with 1992-03 ≤ s, s+1 ≤ t; target y_{s+1}; features (ip_s, ip_{s-1}, ip_{s-2}, oil_s, ff_s, permit_s, neworder_s, tcu_s); standardise with training mean / sd (ddof=1) per origin; centre y by training mean; b=(Z'Z+50I)^{-1}Z'(y-ȳ); forecast ȳ + z̃_t·b.5**Outputs.** out/forecasts.csv (180 rows: origin_date,target_date,horizon,forecast,actual,model∈{naive,mean,ridge}); out/results.json keys: task_id, n_origins, first_origin, last_origin, lambda, normalisation_window, n_features, rmse/mae_{naive,mean,ridge}, rel_improvement_vs_naive, rel_improvement_vs_mean, feasibility, feasibility_reason, data_issues, n_input_rows, n_analysed (training rows at last origin), random_seed; out/report.md (6 sections); out/analysis.py; out/claims.json; plus protocol files.6**Information rules.** At origin t only values dated ≤ t; all scaling statistics from origin's training window, recomputed each origin. Targets (t+1) used only for scoring.7**Invalidity.** Leakage of t+1 data or full-sample scaling; missing values in required features within training window; fewer than 60 origins with available targets (2026-09 target exists, so fine).8
Files · 76f9a44a3a85fb2bc2b0b370a4ae4eed9b95e579
Menu

Theme