datarekha
Time Series Medium Asked at AmazonAsked at WalmartAsked at Microsoft

What is exponential smoothing, and how does Holt-Winters extend it to handle trend and seasonality?

The short answer

Simple exponential smoothing computes a weighted average of all past observations where weights decay geometrically, controlled by a single smoothing parameter alpha. Holt's method adds a trend component with a second parameter beta; Holt-Winters (ETS) adds a seasonal component with a third parameter gamma, making it a strong baseline for series with both trend and seasonality.

How to think about it

Build up from simple to double to triple (Holt-Winters). Show the update equations, not just prose — interviewers in forecasting roles expect you to know the mechanics.

Simple exponential smoothing (SES)

For a series without trend or seasonality, the smoothed value at time t is:

St = α Yt + (1 - α) St-1

α ∈ (0, 1) controls how fast old observations are discounted. High α (> 0.8) reacts quickly to recent changes; low α (< 0.2) produces a very smooth, slow-to-react estimate. The one-step-ahead forecast is simply St.

Holt’s method (double exponential smoothing)

Adds a trend term Tt:

Level: Lt = α Yt + (1 - α)(Lt-1 + Tt-1)

Trend: Tt = β(Lt - Lt-1) + (1 - β) Tt-1

h-step forecast: Lt + h × Tt

Holt-Winters (triple exponential smoothing)

Adds a seasonal index St for period s. Additive version (constant seasonal magnitude):

Level: Lt = α(Yt - St-s) + (1 - α)(Lt-1 + Tt-1)

Trend: Tt = β(Lt - Lt-1) + (1 - β) Tt-1

Seasonal: St = γ(Yt - Lt-1 - Tt-1) + (1 - γ) St-s

h-step forecast: Lt + h × Tt + St-s+h_mod_s

Code

from statsmodels.tsa.holtwinters import ExponentialSmoothing

model = ExponentialSmoothing(
    train,
    trend="add",
    seasonal="add",    # or "mul" for multiplicative
    seasonal_periods=12,
    damped_trend=True, # damps long-range trend to prevent runaway forecasts
)
fitted = model.fit(optimized=True)   # statsmodels optimises alpha, beta, gamma
forecast = fitted.forecast(steps=12)

ETS framework

Modern implementations use the ETS (Error, Trend, Seasonal) taxonomy. Each component is classified as None (N), Additive (A), Multiplicative (M), or Additive-damped (Ad). For example, ETS(A,Ad,A) is Holt-Winters additive with a damped trend — often a strong baseline.

Learn it properly Exponential smoothing & Holt-Winters

Keep practising

All Time Series questions

Explore further

Skip to content