Every demand planner has watched the same pattern play out. The forecast looks great for ten months of the year and then falls apart for the two months that actually matter. Holiday peaks come in higher or lower than predicted. The post-Christmas trough lasts longer than expected. Easter shifts dates and the year-over-year comparison stops making sense. The model that worked beautifully in October produces stockouts in December and clearance markdowns in January.
Seasonality is the biggest predictable source of demand variation, and it's also the most commonly under-modelled. Here's how it actually affects forecasts, the five types every planner should distinguish, and the techniques modern AI uses to handle each one.
Most articles on this topic treat seasonality as a single concept. In practice it splits into five distinct patterns, each driven by different factors and each requiring its own modelling approach. Mixing them up is one of the most common forecasting mistakes.
|
Type |
Driver |
Pattern |
Predictability |
Example |
|
Calendar |
Fixed dates |
Sharp peaks |
High |
Christmas, Black Friday |
|
Weather |
Temperature |
Gradual curves |
Medium |
Ice cream, winter coats |
|
Cultural |
Moving holidays |
Date varies year to year |
Medium |
Easter, Diwali, Ramadan |
|
Demographic |
Life cycles |
Predictable annual |
High |
Back-to-school, tax season |
|
Economic |
Macro cycles |
Multi-year waves |
Low |
Housing, durable goods |
Key takeaway: Seasonality is plural, not singular. A forecast that handles calendar seasonality well can still completely miss weather, cultural, or demographic seasonality. The model needs to detect each type separately.
This is the single most expensive seasonality failure mode in retail forecasting, and it's almost never explained properly in published content.
|
Black Friday, Cyber Monday, and the Christmas season can account for 30 to 50% of annual revenue in categories like consumer electronics, fashion, and gifting. Yet holiday observations make up a tiny fraction of model training data. Modeling Holiday Effect on Retail Demand Forecasting: A Systematic Review, Preprints.org 2026 |
The problem is mathematical. If a model trains on three years of daily sales data, that's roughly 1,100 data points. Christmas Day appears three times. Black Friday appears three times. Most loss functions give every data point equal weight, so non-holiday patterns dominate the optimisation process and holidays get fitted as noise rather than as the structural revenue events they actually are.
The result is systematic underfitting on holidays. The model produces a forecast that looks reasonable on average but consistently misses the peaks and troughs that drive most of the year's profitability.
Key takeaway: Holidays need their own modelling approach, or at minimum a loss function that weights them heavily. Treating them as ordinary observations means the model learns to ignore the days that matter most.
Holidays are not single-day spikes. They are multi-week patterns with three distinct phases that need to be modelled separately.
Demand starts climbing one to four weeks before the actual holiday as customers begin shopping. This phase tends to be predictable for established holidays but varies in length by category. Toy demand starts climbing in mid-November. Halloween costume demand starts in early October. Wedding registry demand peaks weeks before the wedding date itself.
The narrow window of highest demand. For Christmas this is often the final five days before the 25th. For Black Friday it's the actual Friday plus the weekend. For Easter it depends on the date, which we'll come to.
Demand drops sharply after the peak, often below the pre-holiday baseline because customers who would have bought in early January already bought in late December. This trough can last two to six weeks depending on category. Models that ignore the decay produce inflated January forecasts and over-allocate inventory to a period where it won't sell.
A worked example. A premium chocolate gift box runs a baseline of roughly 100 units per week in early November. Across the Christmas cycle, weekly demand for the same SKU moves through all three phases.
|
Week |
Phase |
Weekly demand |
vs baseline |
|
Early November |
Baseline |
100 |
1.0x |
|
Mid November |
Build-up begins |
160 |
1.6x |
|
Black Friday week |
Build-up acceleration |
380 |
3.8x |
|
Early December |
Build-up continues |
500 |
5.0x |
|
Final week before Christmas |
Peak |
1,000 |
10x |
|
Christmas week |
Decay begins |
200 |
2.0x |
|
First week of January |
Deep trough |
40 |
0.4x |
|
Mid-January |
Slow recovery |
65 |
0.65x |
|
Late January |
Returning to baseline |
85 |
0.85x |
Notice that the post-holiday trough (40 units in the first week of January) sits well below the pre-holiday baseline (100 units), and the recovery takes three to four weeks. A model that captures the peak but ignores the trough will systematically over-allocate inventory for January.
Key takeaway: Forecast each holiday as a build-up plus peak plus decay pattern, not as a single spike. Capturing the post-holiday trough matters as much as capturing the peak.
Year-over-year comparisons are the foundation of most seasonal forecasting, and they break down completely for holidays that move dates each year.
Easter falls anywhere from late March to late April depending on the lunar calendar. Chinese New Year shifts between January and February. Diwali, Ramadan, Eid, and Hanukkah all move year over year. For retailers operating in markets where these holidays drive significant demand, year-over-year sales comparisons can be off by weeks even for the same product, the same store, and the same customer base.
The technical fix is to anchor seasonality models to the holiday itself rather than the calendar date. Instead of modelling "April demand," the model handles "week before Easter," "Easter week," and "week after Easter" as features that move with the holiday. The same approach works for any moving holiday once the date series is provided to the model.
Key takeaway: For moving holidays, anchor seasonality features to the holiday itself, not to the calendar date. Year-over-year date comparisons systematically misalign demand patterns for any retailer in markets where lunar or shifting holidays matter.
National seasonality models hide enormous regional variation, and the variation matters operationally because inventory has to be physically positioned where demand actually occurs.
Weather seasonality varies by climate zone. A clothing retailer's winter coat season starts in October in Boston and in December in Houston. School schedules vary by district, which means back-to-school timing differs by region. Local cultural events drive demand spikes that national models can't see. Cognira's 2026 retail forecasting research gives the example of a regional grocery chain building causal models that include local temperature and competitor promotions within a 3-mile radius, which is far more granular than what national seasonality assumptions can capture.
This is where multi-location forecasting and seasonality modelling intersect. A national average masks regional truth. Store-level or cluster-level seasonality models surface it.
Key takeaway: Seasonality varies by region, climate zone, and local culture. National models systematically misallocate inventory by missing this variation. Effective seasonality modelling happens at the store or cluster level.
Different forecasting techniques handle seasonality with different trade-offs. The major approaches in use today fall into three groups.
SARIMA (Seasonal Autoregressive Integrated Moving Average) and exponential smoothing state-space models like ETS handle seasonality through explicit seasonal terms. These work well for products with stable, recurring patterns and enough historical data. They struggle with moving holidays, regional variation, and short-life products.
Approaches like STL or Prophet decompose a time series into trend, seasonality, and residual components. This makes the seasonal pattern explicit and easy to interpret, and Prophet specifically handles holiday effects through dummy variables. Good for moderate complexity. Less effective for high-dimensional retail problems with thousands of SKU-store combinations.
Modern AI forecasting platforms feed seasonality into the model as features (day of week, week of year, days-to-holiday, weather forecast, school-in-session flags). Gradient-boosted trees and neural network architectures learn the relationships between these features and demand directly. This handles all five types of seasonality, plus interactions between them, plus regional variation, in a single unified model.
Recent academic research is exploring methods specifically for the small-sample seasonality problem. A Fourier time-varying grey model published in 2024 specifically tackles seasonal forecasting when training data covers only a few seasonal cycles, which is the reality for most retailers.
Key takeaway: Modern AI forecasting handles seasonality through features rather than through dedicated seasonal models. This lets a single model learn calendar, weather, cultural, demographic, and economic seasonality together, plus the interactions between them.
Seasonality modelling is one of the places where AI forecasting outperforms traditional methods most clearly, particularly for retailers with diverse SKU portfolios across multiple regions. OnePint.ai handles all five types of seasonality through a unified feature-based approach. Pint Planning anchors seasonality features to the holidays themselves rather than to calendar dates, which solves the moving holiday problem natively. It applies store-level and cluster-level seasonality models so regional weather, cultural, and demographic variation get captured properly. Pint Control Center surfaces exception-based alerts when actual seasonal performance diverges from forecast, so planners catch underperforming holidays in time to react.
Customers using the platform see 20 to 30% better forecast accuracy, up to 85% fewer stockouts, and 10 to 20% lower fulfilment costs. The accuracy gains are typically largest in seasonal categories because the legacy tools most retailers replace were never designed to handle the five types of seasonality together. OnePint.ai was also recognised as a 2025 Gartner Cool Vendor in Supply Chain Planning Technology.
Five main types: calendar (fixed-date holidays like Christmas), weather (temperature-driven categories like beverages and outerwear), cultural (moving holidays like Easter and Diwali), demographic (annual cycles like back-to-school and tax season), and economic (multi-year macroeconomic cycles). Each behaves differently and requires its own modelling approach.
This is the holiday underfitting problem. Holidays generate 30 to 50% of annual revenue in many categories but only contribute a handful of training observations. Standard loss functions weight every data point equally, so non-holiday patterns dominate model fitting and holidays get treated as noise. The fix is dedicated holiday modelling or weighted loss functions that prioritise high-revenue periods.
By anchoring seasonality features to the holiday itself rather than to the calendar date. Instead of modelling "April demand," the model uses features like "days before Easter" and "days after Easter" that automatically move with the holiday each year. This solves the year-over-year comparison problem that breaks traditional seasonal models.
Store level for any retailer with regional footprint. National seasonality hides significant variation in weather patterns, school calendars, and local cultural events. Store-level or cluster-level seasonality modelling captures the differences that drive operational decisions about where to position inventory.
At least three full seasonal cycles, ideally five or more. Most retail seasonality is annual, so that means three to five years of weekly or daily history. With less data, modern approaches like attribute-based modelling and feature engineering can compensate, but reliable seasonality detection improves substantially with more historical context.