The default population carries seasonal candidates (seasonal_difference, seasonal_anchor) at periods {7, 12, 24} only. Evidence from the CSP bout (benchmarks/comparisons/laplace-vs-csp/) that more periods are worth testing:
- 168 (hour-of-week on hourly data): composing an hour-of-week phase-EMA layer over the m=24 anchor improved CRPS a further ~3% on the M4-Hourly probe, at some LL cost from thin phases (~5 visits per phase in a 750-step window). Needs the visit-count shrinkage to carry more weight, or longer windows.
- 52 (weekly data's annual cycle) and 5 (business-day week): absent from the fixed list entirely. Cost of extra candidates measured near zero (paired run: median +0.0000% CRPS), so the main question is population bloat vs the periodicity detector (
skaters/periodicity.py, DEFAULT_LAGS already scans 5/52/168) gating which periods join per series — the dantzig injection idea applied to laplace's fixed population, possibly with seasonality-strength prior weights (NNS-style).
Any change must rerun the four corpus arms with daily FRED as the do-not-regress guard, and mirror in the JS/Rust ports (parity vectors).
The default population carries seasonal candidates (
seasonal_difference,seasonal_anchor) at periods {7, 12, 24} only. Evidence from the CSP bout (benchmarks/comparisons/laplace-vs-csp/) that more periods are worth testing:skaters/periodicity.py, DEFAULT_LAGS already scans 5/52/168) gating which periods join per series — the dantzig injection idea applied to laplace's fixed population, possibly with seasonality-strength prior weights (NNS-style).Any change must rerun the four corpus arms with daily FRED as the do-not-regress guard, and mirror in the JS/Rust ports (parity vectors).