Skip to content
ML Academy

Time series and forecasting · insight-1208

Align the seasonal benchmark to moving holidays, not to the same weekday last year

Evidence type
practitioner heuristic
Difficulty
medium
Roles
Data scientist, Data analyst
Industries
aviation, retail, e-commerce

Summary: situation, action, reason, boundary

  1. Situation

    A seasonal naive forecast (value 364 days ago) is the benchmark for daily demand around religious holidays whose date moves about 10 to 11 days earlier each Gregorian year.

  2. Action

    Define a calendar-aligned benchmark: the value on the same position relative to the holiday last year, and the lag-364 value elsewhere. Report model skill against both, split by holiday windows.

  3. Reason

    The seasonal naive assumes a fixed date-to-demand mapping. Lunar-calendar holidays break it, so a fair baseline must move with the holiday.

  4. Boundary

    Daily or weekly demand with moving holidays: Eid drifts about 10 to 11 days earlier a year, while Easter and Chinese New Year move within a window of weeks.

Symptom or risk

The benchmark lands a normal day on the holiday peak and the holiday on a normal day, so it fails exactly where the model must be judged and beating it proves little.

Exceptions

Series with no holiday sensitivity (B2B subscriptions) are fine with lag-364.

Trade-offs

More benchmark logic to maintain, and a holiday window has only a few instances per year.

Pitfalls

Computing holiday windows from a package without checking the provider's coverage for the year range.

Lessons and concepts