Blog · Forecast and pipeline · Supply chain
Holt-Winters forecasting combines level, trend and a repeating seasonal pattern. Compare additive and multiplicative seasonality, work a seasonal forecast from its components and check forecast outputs against actual product demand.
Holt Winter forecasting, more commonly called Holt-Winters forecasting, estimates future demand from a changing level, a trend and a repeating seasonal pattern. It works best when those patterns remain useful guides to the next planning period. The important business test is whether forecasts issued before the period outperform a simpler benchmark on the same product demand.
The level is the current underlying demand after adjusting for seasonality. The trend is how that underlying level changes each period. The seasonal component describes a recurring lift or reduction associated with a position in the cycle.
Monthly data with an annual pattern use a cycle of 12 observations; quarterly data use four. These are calendar choices, not proof that the business has a stable seasonal pattern. Moving holidays, distribution gains and unusually large promotions can distort the apparent cycle.
NIST's Holt-Winters explanation describes the separate level, trend and seasonal updates and the need for complete seasons to initialize the method. Its discussion recommends two complete seasons when estimating the starting trend. More history helps only when it remains relevant to the current business.
For the simpler starting concept, see exponential smoothing. Holt-Winters extends that weighted updating rather than assuming every historical observation deserves equal weight.
The seasonal form changes what a peak means. Hyndman and Athanasopoulos distinguish the two forms by whether seasonal variation stays roughly constant in absolute size or changes in proportion to the level.
| Question | Additive seasonality | Multiplicative seasonality |
|---|---|---|
| How is the season expressed? | Units added to or subtracted from the base | A factor multiplied by the base |
| What stays relatively stable? | Seasonal swing in units | Seasonal swing as a proportion |
| Typical component check | Seasonal adjustments over a cycle sum approximately to zero | Seasonal factors average approximately one |
| Main caution | A falling base can produce negative unit forecasts | Proportions become unsuitable with zero or negative values |
For a one-step forecast, the components combine as follows:
Additive forecast = Level + Trend + Seasonal adjustment
Multiplicative-seasonal forecast = (Level + Trend) × Seasonal factor
Both expressions above use an additive trend. Multiplicative seasonality does not mean every component is multiplied. Choose the seasonal form from the pattern and evaluate the resulting forecasts; the label alone does not establish a better fit or better planning result.
A US distributor plans quarterly demand for one product, measured in cases. At the end of the prior year, suppose its forecasting work has produced the following component estimates. These are explicitly supplied starting assumptions, not estimates inferred from the later actuals.
| Starting component | Value |
|---|---|
| Level | 100 cases |
| Trend | 2 cases per quarter |
| Q1 seasonal adjustment | -20 cases |
| Q2 seasonal adjustment | -10 cases |
| Q3 seasonal adjustment | 0 cases |
| Q4 seasonal adjustment | 30 cases |
The seasonal adjustments sum to -20 - 10 + 0 + 30 = 0. The undamped forecast carries the trend forward by the number of quarters ahead, then adds the corresponding seasonal adjustment.
| Quarter ahead | Level + quarters × trend | Seasonal cases | Forecast cases | Later actual cases | Absolute error cases |
|---|---|---|---|---|---|
| Q1: 1 | 100 + 1 × 2 = 102 | -20 | 82 | 84 | 2 |
| Q2: 2 | 100 + 2 × 2 = 104 | -10 | 94 | 90 | 4 |
| Q3: 3 | 100 + 3 × 2 = 106 | 0 | 106 | 110 | 4 |
| Q4: 4 | 100 + 4 × 2 = 108 | 30 | 138 | 136 | 2 |
| Total | 420 | 0 | 420 | 420 | 12 |
The annual reconciliation is 102 + 104 + 106 + 108 = 420 cases before seasonality, plus zero net seasonal adjustment. The forecasts also sum to 82 + 94 + 106 + 138 = 420 cases.
Actual demand happens to match that annual total. Yet the sum of absolute quarterly errors is 12 cases. Weighted absolute percentage error is 12 / 420 = 2.86%, rounded to two decimal places, while signed bias is (420 - 420) / 420 = 0.00%. A correct annual total can conceal the timing errors that create inventory problems.
For an illustrative additive update, choose level weight alpha = 0.3, trend weight beta = 0.2 and seasonal weight gamma = 0.1. These are teaching inputs, not fitted recommendations. This example uses the seasonal update expressed relative to the newly updated level.
| Component after Q1 actual of 84 | Calculation | Result |
|---|---|---|
| Level | 0.3 × (84 - (-20)) + 0.7 × (100 + 2) | 102.60 |
| Trend | 0.2 × (102.60 - 100) + 0.8 × 2 | 2.12 |
| Q1 seasonal adjustment | 0.1 × (84 - 102.60) + 0.9 × (-20) | -19.86 |
The revised one-quarter-ahead Q2 forecast is 102.60 + 2.12 - 10 = 94.72 cases. The Q1 seasonal update belongs to Q1 in the next cycle; it does not replace Q2's adjustment. Retain the original 94-case Q2 forecast separately if that version drove the purchasing decision.
Different implementations may express seasonal updating with a different but related parameterization. Compare the documented equations and initialization before expecting identical results from the same weight labels.
Export product, location, period, forecast issue date, forecast units and actual demand units. Retain the training cutoff, cycle length and seasonal form alongside each forecast version. Include promotion and stockout flags so an unusual miss is not automatically treated as evidence that the seasonal pattern changed.
Keep units consistent. Revenue forecasts can move with price even when demand units do not. A demand planner deciding case quantities should test case forecasts; finance can separately reconcile the revenue assumption through budget versus forecast.
Forecast accuracy guidance distinguishes errors on later test observations from residuals in the fitting history. Assess the horizon matching the purchase decision and compare with a seasonal benchmark. Examine product and site direction using SKU and site forecast bias, because aggregated errors can cancel.
If your team uses Excel, Microsoft documents FORECAST.ETS as using the AAA version of exponential smoothing. The existing Excel FORECAST function guide covers the syntax. Covirage is not affiliated with Microsoft. Keep the component logic here separate from any assumption that different implementations must return identical numbers.
Bring an exported seasonal forecast and actual demand by product and period, including issue dates and any event flags. Covirage maps the columns; its tools compute and check the comparisons, while the external AI model explains the results with every figure traced to its rows. Create a free Covirage account, then set up your business and bring a sample of your own data.
See forecast analysis for the supporting workflow.
Holt's method adds a trend to exponential smoothing. Holt-Winters adds a seasonal component as well. The seasonal version suits a repeating pattern, while a series without meaningful seasonality may need only a level or a level and trend.
Use additive seasonality when the seasonal increase or decrease is roughly stable in units. Consider multiplicative seasonality when seasonal movement scales with the underlying level. Check the actual history, and avoid a proportional interpretation when zero or negative values make it unsuitable.
You need complete seasonal cycles to estimate the pattern, and additional history to assess it. Two complete cycles provide a more useful starting point than one, but the right amount depends on structural changes, noise and the forecasting horizon.
No. Fitting can use information unavailable at the original forecast date, and a later promotion or assortment change may alter demand. Evaluate forecasts issued before the actual periods, against a simple benchmark and at the horizon your inventory decision requires.