Seasonal adjustment is one of the areas where the gap between rule-based and learned approaches to demand forecasting is most apparent in practice. For companies with stable, repeating seasonal patterns, year-over-year multipliers work reasonably well. For companies where the demand shape itself changes from year to year - where the peak shifts in timing, duration, or magnitude relative to prior years - rule-based seasonality regularly produces forecasts that are systematically wrong in the same direction, quarter after quarter.
This piece covers where and why rule-based seasonal adjustment breaks down, what ML models do differently, and the practical conditions under which the more sophisticated approach earns its complexity.
How Rule-Based Seasonal Adjustment Works (and What It Assumes)
The standard rule-based approach builds a seasonal index: for each week or month of the year, calculate the ratio of average demand in that period to average annual demand, using some number of prior years as the basis. Apply that index to the baseline forecast to produce a seasonally-adjusted forecast.
This approach works when three things are true. First, the seasonal pattern is stable in shape - the relative demand by time period is consistent from year to year. Second, the seasonal pattern is stable in timing - the peak and trough occur at roughly the same calendar point each year. Third, the magnitude of the seasonal swing is proportional to the baseline demand level - a 30% peak means 30% above average regardless of whether the baseline is 100 units or 150 units per week.
None of these three conditions is universally reliable for mid-market manufacturers and distributors. Promotional calendars shift. Customer mix evolves. Economic cycles affect demand differently in different product categories. Weather-sensitive categories are affected by year-to-year climate variation. New competitors enter regional markets. All of these factors can alter the seasonal shape without altering the average annual demand level enough to trigger a baseline forecast revision.
The Mid-Season Shift Problem
One of the most common failure modes is what practitioners sometimes call the mid-season shift: the demand peak moves earlier or later than the historical pattern predicted, but a rule-based model using prior-year indices continues to forecast the peak at the historical calendar point.
In industrial distribution, this often happens with weather-sensitive categories. A manufacturer of outdoor power equipment parts might build a seasonal index on the premise that spring demand peaks in late April and early May. In a year where spring arrives three weeks early, demand accelerates in late March and early April. The rule-based forecast, anchored to the historical index, continues to project flat demand through late March and a peak in late April. The forecast is off by three to four weeks in a way that directly affects inventory positioning at the start of the season.
By the time the actual demand pattern becomes visible enough to override the seasonal index manually, three to four weeks of above-forecast demand have drawn down inventory. The planner is placing emergency reorders for a season that is already underway. There is typically no way to fully recover the missed service level at that point.
What ML Models Do Differently
ML-based seasonal adjustment, properly implemented, learns the seasonal pattern from data rather than encoding it as a fixed index. This means two things that rule-based methods cannot do.
First, ML models can detect in-season pattern divergence in near-real-time. As actual demand arrives, a model that is being retrained or updated on a rolling basis can detect that the current season's pattern is diverging from the historical seasonal shape. It updates the forecast forward to reflect the emerging pattern, rather than waiting for the season to end and incorporating the divergence into the next year's index.
Second, ML models can incorporate leading indicators that predict seasonal pattern shifts before they appear in demand data. Temperature data, economic indicators, regional construction permits, housing starts, or customer-specific signals (order inquiry volume, quote activity) can be incorporated as features alongside the demand history. When these signals indicate an early or late season, the model adjusts the demand forecast before the demand actually materializes.
The practical result is that ML-based seasonal forecasts tend to lead the actual demand pattern by more than rule-based forecasts, giving planners a longer window to position inventory correctly before the season peak arrives.
Where Rule-Based Methods Still Win
Rule-based seasonal adjustment is not obsolete in all contexts. For companies with genuinely stable seasonal patterns and limited data sophistication, the rule-based approach is easier to audit, easier to override when a planner has contextual knowledge, and easier to explain to a CFO or operations director who wants to understand the forecast.
ML models require sufficient demand history to learn a reliable seasonal pattern - typically at least two to three years of consistent data. For new products or new SKUs, there is no seasonal history to learn from. The model must either use category-level seasonal patterns as a proxy or fall back to a simpler method. This is a genuine limitation of the learned approach.
The appropriate deployment strategy for most mid-market companies is a hybrid: ML-based seasonal adjustment for the top-velocity items where the investment in model quality is clearly warranted, and rule-based methods for the long tail of catalog items where demand history is sparse and the cost of a seasonal error is lower.
The Data Requirements for Seasonal ML
Implementing ML-based seasonal adjustment requires clean, consistent demand history at the granularity you want to forecast - SKU-location in most cases. This means the same data quality requirements that matter for any forecasting model apply here, but with additional sensitivity to anything that corrupts the seasonal pattern.
Promotional events in the historical data are particularly problematic. If the prior two years included a significant promotional campaign in Q2 that inflated Q2 demand, the model will learn that pattern as a seasonal feature. When the promotion does not run in the forecast year, the model will still predict elevated Q2 demand. Flagging promotional periods in the training data prevents this - the model learns the baseline seasonal pattern while excluding the promotional distortion.
Year-over-year structural changes in the business (new distribution centers, major customer additions or losses, product line changes) also need to be handled carefully. Including data from periods that represent a fundamentally different business can teach the model patterns that no longer apply. In practice, this means the training window needs to be chosen thoughtfully - not simply "all available history" but "the period that represents how the business operates today."
The Practical Test
The simplest way to evaluate whether your seasonal adjustment is working is to measure forecast accuracy separately for the peak demand period versus the stable demand period. If your model's error is significantly higher during the peak than during stable periods - and if the error is systematic rather than random - you have a seasonal adjustment problem. A 12-15% MAPE during stable demand that jumps to 28-35% MAPE during peak demand is a clear signal that the seasonal shape is not being captured correctly.
That gap, quantified, is the case for investing in a better approach. It is also the metric against which any improvement should be measured.