Extend the read-only §9.6 rate-sensitivity OOS harness with two opt-in candidate-method variants so any wiring decision is evidence-based: - --almon: evaluate_oos_almon, Almon distributed-lag (regression.fit_almon_dl), fit on TRAIN only, point-in-time sum_j beta_j*drate[t-j] prediction. - --deseasonalize: train-only month-of-year factors (normalize.seasonal_factors) divided out before log_diff, then the existing best_lag evaluator. Both pin the fit to _time_ordered_split(n_train); no look-ahead leakage (adversarial tests assert the train fit is byte-identical under test corruption). Default path (best_lag/raw) is byte-identical to before. 88 tests pass, ruff clean. Prod OOS findings (directional hit-rate, coin-flip 0.50, bar 0.55+lag-stable): - #979 deseasonalize: neutral (B 0.148->0.148, A 0.40->0.40) -> keep advisory. - #978 Almon-ADL: dominates best_lag (B 0.148->0.407 lag-stable; A 0.40->0.60, clears coin-flip+margin) -> candidate to promote from advisory. |
||
|---|---|---|
| .. | ||
| api | ||
| integration | ||
| scrapers | ||
| scripts | ||
| services | ||
| smoke | ||
| sql | ||
| workers | ||
| __init__.py | ||
| conftest.py | ||
| test_admin_weight_profiles.py | ||
| test_concepts_stub.py | ||
| test_gate_verdict.py | ||
| test_health.py | ||
| test_layout_signature.py | ||
| test_layout_tz_pdf.py | ||
| test_nspd_client.py | ||
| test_nspd_sync.py | ||
| test_ping.py | ||
| test_poi_score.py | ||
| test_quarter_dump_lookup.py | ||
| test_rbac.py | ||
| test_sentry_init.py | ||
| test_velocity.py | ||
| test_weight_profiles.py | ||