Sign in

Blog · Forecast and pipeline · Supply chain

Holt-Winters forecasting: trend and seasonality

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.

The short answerHolt Winter forecasting usually refers to Holt-Winters seasonal exponential smoothing. It updates a series' level, trend and seasonal pattern to forecast future periods. Use additive seasonality when seasonal swings stay roughly constant in units, and multiplicative seasonality when they change in proportion to the series' level. Test forecasts against later actual demand before relying on them for planning.

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.

What the three components mean

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.

Additive versus multiplicative seasonality

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 worked additive forecast

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.

How the components update after an actual arrives

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.

Prepare an evaluation file the planning team can trust

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.

Where Holt-Winters forecasting goes wrong

  • A promotion becomes a season. Isolate events that are unlikely to recur before extending their lift into the next cycle.
  • Stockouts become low demand. Recorded shipments may be constrained. Use requested demand where available and label any adjustments.
  • A trend is extended indefinitely. An undamped trend can become implausible over longer horizons. Test the horizon actually used for decisions.
  • A new product borrows too little history. One incomplete cycle cannot establish its own reliable seasonal pattern. Document any judgment or comparable-product assumptions separately.
  • Forecast versions are mixed. A revised forecast should not replace the version that management is trying to evaluate.

Compare your seasonal forecasts in Covirage

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.

Questions people ask

What is the difference between Holt and Holt-Winters?

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.

When should seasonality be additive or multiplicative?

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.

How much history does Holt-Winters need?

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.

Does a low historical fitting error guarantee a good forecast?

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.