Update a small state whenever new data arrives.
Exponential smoothing represents the series through evolving level, trend and seasonal states. Each new forecast error updates those states; older observations receive geometrically declining influence.
Open the spelled-out 20-step lesson
Signal question
Demand was 100, 104, 98, 103, 97, 105, and 101. Is the underlying level moving dramatically, or are the observations fluctuating around a quieter signal?
What does smoothing do?
A time series mixes useful structure with short-term randomness, measurement error, and unusual events. Smoothing reduces the influence of those temporary movements so that the current level, trend, and seasonal pattern become easier to estimate.
Smoothing is controlled memory: when a new observation arrives, the model decides how much to revise its previous belief. It should react to genuine change without chasing every noisy point.
Too reactive
Using only the newest observation treats every spike as a new normal.
Too resistant
Using the entire historical average may ignore a genuine recent shift in demand.
Begin with a moving average
A three-period moving average gives equal weight to the latest three observations:
If the observations are 100, 110, and 105, then \(M_t=105\). This reduces noise, but an observation has full weight inside the window and suddenly receives zero weight after leaving it.
Exponential smoothing replaces that hard cutoff with gradually declining weights. Every past observation can contribute, but recent evidence matters more.
Memory question
Should a sudden jump redefine the current level immediately, or should previous observations resist it?
Simple exponential smoothing
Think of \(\ell_{t-1}\) as yesterday's best belief about the current level and \(y_t\) as fresh evidence. The update takes a weighted average: the first term accepts a fraction \(\alpha\) of the new evidence, while the second retains a fraction \(1-\alpha\) of the old belief.
Walk toward the observation: start at the old level, measure how wrong it was, and move \(\alpha\) of that distance. With \(\alpha=0\), ignore the new point. With \(\alpha=1\), jump fully to it. Intermediate values trade stability for responsiveness.
Repeated substitution reveals why the method is called exponential smoothing:
The simulated demand level shifts upward midway through the series. The violet line is the estimated level \(\ell_t\), not a trend forecast. Raise \(\alpha\) to react faster and smooth less.
Small \(\alpha\)
Long memory, stable level, slower reaction to genuine change.
Large \(\alpha\)
Short memory, rapid reaction, greater sensitivity to noise and outliers.
Why every observation still matters: an observation \(j\) steps old receives weight \(\alpha(1-\alpha)^j\). The weights shrink geometrically rather than suddenly becoming zero at a fixed window boundary.
Calculate the update
The previous level is 100, the new observation is 120 and \(\alpha=0.3\). What is the updated level and next forecast?
A two-step SES example
Every future forecast from this origin is 106 because SES has only a level state:
If the next observation is \(y_2=90\), the forecast error is \(e_2=90-106=-16\), and the new level becomes:
Error-correction view: the same update can be written \(\ell_t=\ell_{t-1}+\alpha(y_t-\ell_{t-1})\). Move the old level by a fraction \(\alpha\) of its latest error.
Capability question
Why will SES produce a flat future path even when the historical series rises?
Add a trend with Holt's method
The level update compares the observation with the previously projected level. The trend update blends the newest estimated change with the previous trend. Parameter \(\beta\) controls how quickly the trend changes.
Worked Holt update
Suppose yesterday's level was \(\ell_{t-1}=100\), the estimated increase was \(b_{t-1}=5\), today's observation is \(y_t=112\), and \(\alpha=0.4,\ \beta=0.3\).
- Project the old state into today: \(100+5=105\).
- Blend the observation with that projection: \(\ell_t=0.4(112)+0.6(105)=107.8\).
- The newly observed level change is \(107.8-100=7.8\). Smooth it with the old trend: \(b_t=0.3(7.8)+0.7(5)=5.84\).
- Forecast: \(\widehat y_{t+1\mid t}=107.8+5.84=113.64\), while \(\widehat y_{t+2\mid t}=107.8+2(5.84)=119.48\).
What changed? SES would forecast the same level at every horizon. Holt carries the estimated slope forward, so the path rises by \(5.84\) per step.
Damped trend: long straight-line extrapolation can become implausible. A damping parameter \(\phi\), usually between 0 and 1, gradually reduces the trend contribution at longer horizons.
Seasonal-state question
What additional memory does a weekly bike-demand model need beyond level and trend?
Additive Holt-Winters
For daily data with weekly seasonality, \(m=7\). The final term retrieves the latest estimated seasonal effect for the forecasted weekday. Parameter \(\gamma\) determines how quickly that seasonal pattern changes.
Worked additive Holt-Winters update
Assume weekly seasonality with \(m=7\). Before observing today, \(\ell_{t-1}=100\), \(b_{t-1}=2\), and today's weekday usually contributes \(s_{t-7}=15\) rentals. We observe \(y_t=120\), with \(\alpha=0.4,\ \beta=0.2,\ \gamma=0.3\).
- Remove the old seasonal effect: \(y_t-s_{t-7}=120-15=105\).
- Update the nonseasonal level: \(\ell_t=0.4(105)+0.6(100+2)=103.2\).
- Update trend: \(b_t=0.2(103.2-100)+0.8(2)=2.24\).
- Today's new seasonal evidence is \(120-100-2=18\). Blend it with the old weekday effect: \(s_t=0.3(18)+0.7(15)=15.9\).
- For the same weekday one week ahead, \(\widehat y_{t+7\mid t}=103.2+7(2.24)+15.9=134.78\).
Three memories cooperate: level says where the series is, trend says how fast it is moving, and the seasonal state says how this weekday normally differs from the underlying level.
| Method | State represented | Forecast shape |
|---|---|---|
| SES | Level | Flat beyond the origin |
| Holt | Level + trend | Trending path |
| Holt-Winters | Level + trend + seasonality | Trending repeating path |
Fitting: software estimates smoothing parameters and initial states by minimizing in-sample forecast errors. Model choice still belongs to rolling-origin validation; the smallest training SSE is not enough.
Forecast-shape question
Without looking at the labels, which forecast below has only a level, which carries a slope, and which remembers a repeating calendar pattern?
One family, three forecast shapes
The forecast shape follows directly from the states the model stores. A model cannot extrapolate a component it does not represent.
Seasonal-scale question
If Saturday consistently adds 50 rentals, should we model the season additively? What if Saturday is consistently 30% above the current level?
Additive or multiplicative seasonality?
Additive
Seasonal effects stay roughly constant in target units. Saturday might add about 50 rentals whether the underlying level is 200 or 500.
Multiplicative
Seasonality scales with the series. A Saturday factor of 1.30 means approximately 30% above the underlying level.
Practical distinction: use additive seasonality when seasonal amplitude is stable in units; consider multiplicative seasonality when the swings grow with the level. Multiplicative models require positive values. A log transformation can often turn multiplicative structure into additive structure.
Model-selection question
Should we choose \(\alpha\), \(\beta\), and \(\gamma\) because the fitted line looks smooth, or because the resulting forecasts perform well at historical forecast origins?
How smoothing models are fitted and chosen
- Select the state structure. Level only, level plus trend, or level plus trend and seasonality.
- Choose the seasonal period. Daily data may use \(m=7\); hourly demand may need \(m=24\) or \(m=168\).
- Initialize the states. Estimate the starting level, trend, and one seasonal effect for each position in a cycle.
- Estimate smoothing parameters. Software usually selects \(\alpha\), \(\beta\), \(\gamma\), and possibly damping \(\phi\) by minimizing a likelihood or one-step training errors.
- Validate the whole model. Compare SES, Holt, damped Holt, and Holt-Winters on identical rolling forecast origins and horizons.
- Inspect residuals. Remaining trend, seasonality, or autocorrelation means the state structure has not captured all predictable information.
| Observed series behavior | First model to try |
|---|---|
| Changing local level, no persistent trend or seasonality | Simple exponential smoothing |
| Level plus persistent growth or decline | Holt or damped Holt |
| Level, trend, and fixed seasonal swings | Additive Holt-Winters |
| Seasonal swings proportional to level | Multiplicative Holt-Winters or a log-scale additive model |
Final intuition: exponential smoothing is a small adaptive memory. Each observation asks whether the level moved, whether the slope changed, and whether this seasonal position behaved differently from usual.