What is exponential smoothing, and how does Holt-Winters extend it to handle trend and seasonality?
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.