Seasonality decomposition forecasting: bu ne anlama geliyor
A sales series shows an annual pattern, so the model fits an annual seasonal component. It works acceptably until the year the pattern shifts, and then it is wrong for months.
The pattern was never one thing. It was several, with different drivers and different stability.
The layers
Calendar effects — holidays, paydays, school terms — are stable and shift date each year. Weather effects correlate with season but vary in magnitude and timing, and are forecastable a week out. Promotional effects look seasonal because promotions are scheduled seasonally, but are entirely under the business’s control.
Why separating them changes decisions
If the lift is promotional, it is a decision variable — you can change it. If it is weather, it is forecastable short-term but not controllable. If it is calendar, it is known a year in advance.
A single seasonal index conflates a thing you decide, a thing you can anticipate, and a thing you can plan around. Separating them turns one number into three usable ones.
How to tell the layers apart in your own data
Not by inspection of the seasonal curve, which shows the sum and nothing else. By removing one at a time.
Promotional weeks are known: the calendar exists in the trade plan. Strip them out and re-fit. Whatever remains is the pattern that occurs without intervention, and comparing the two gives the promotional contribution directly rather than by assumption.
Weather is available historically at daily resolution for any market. A correlation against the de-promoted series will show whether the category is weather-sensitive and by how much — and it will show it varies by product, which a single index cannot express.
What is left after both is calendar and trend. That residual is the part that genuinely repeats year to year.
The failure that motivates this
A model with one seasonal index absorbs everything into it, including the effects of decisions the business made. It then projects those decisions forward as though they were weather.
The visible symptom is a forecast that expects a lift in week 34 because there was one last year — when last year’s lift was a promotion that is not running this year. The plan builds stock for demand nobody has scheduled.
This is common and rarely diagnosed, because the model is behaving exactly as fitted.
What each layer is good for
Calendar effects support capacity and labour planning, because they are known a year ahead and do not move.
Weather effects support short-horizon allocation. A week of forecast is enough to move stock and not enough to change a purchase order, so the decision they inform is where stock sits rather than how much exists.
Promotional effects support the trade plan itself. Once the lift is attributable, the question becomes whether a given mechanic earned its margin — which is a commercial decision the seasonal index was silently hiding.
The shift that breaks a single index
Patterns move: a holiday falls differently, a school term changes, a competitor moves their promotional calendar and yours follows.
A decomposed model absorbs this because the calendar component knows the date moved. A single index has learned “week 34 is high” and will be wrong for as long as it takes to re-fit, which is usually a season.
Where to start
One category, one year of history, and the trade calendar. Removing known promotions and re-fitting takes an afternoon and answers a question most planning teams have never been able to answer: how much of our seasonality do we cause ourselves?
The number is usually larger than expected, and it changes what the forecast is for.