Created by Dr. Pedram Jahangiry | Enhanced with Claude
Interactive Teaching Tool for Understanding Level and Trend Components
Step through Holt's method one month at a time on the classic 1949-1960 airline passenger series, watching the level and trend estimates revise themselves after each new observation and the forecast line bend to follow. Move the smoothing and initial-value sliders to see how each choice trades off responsiveness against stability, then compare training and held-out test error as the fit updates.
SES: Assumes data fluctuates around a constant level → Flat forecasts
Holt: Adds a trend component that captures direction → Sloped forecasts that can follow upward/downward patterns!
It asks one question: which values of α and β* make the one-step-ahead forecasts fit the training months best? For every candidate it runs the same recursion you watch in the animation across the 115 training months, adds up the squared errors between each forecast ŷt and the actual yt, and keeps the candidate with the smallest total (the SSE). That is exactly the criterion statsmodels and R's ets() use when errors are additive, and the search below keeps to statsmodels' default parameter region, so the answer you get here is the answer you would get in Python.
statsmodels: 0 ≤ α ≤ 1 and 0 ≤ β* ≤ α. The cap on β* is a statsmodels default rather than a textbook rule (Hyndman's usual region only asks for 0 ≤ β* ≤ 1). On the airline data it makes no difference: the best fit has β* = 0 either way. Results are snapped to the sliders' 0.01 grid.What to look for. On the airline data the best training fit is α = 1 and β* = 0: the level is the last observation and the trend is frozen at its estimated starting slope. The result extrapolates a straight line through the seasonal swings, and its test RMSE is far worse than the default settings. Answers that sit on the edge of the allowed region are common and worth a discussion: they mean the data are pushing against the model's assumptions, here the missing seasonality.
Controls level responsiveness:
Controls trend responsiveness:
Level adapts quickly to changes, but trend remains stable. Good for data with level shifts but consistent trend direction.
Find Best Fit only searches β* ≤ α, the statsmodels default. With a small α and a large β* the trend can swing by tens of passengers a month while the level barely moves. The sliders will let you try it. The optimizer will not.
The forecast combines both components: the current level plus the trend multiplied by the forecast horizon. Longer horizons amplify the trend effect, making β* increasingly important for long-term forecasts. A stable trend (low β*) produces consistent long-term forecasts, while an adaptive trend (high β*) can lead to dramatic fan-out effects.
Unlike SES where only α matters, Holt's method allows independent control over how quickly the model adapts its understanding of "where we are" (level) versus "where we're going" (trend). This dual-parameter approach enables much more nuanced modeling of trending time series patterns.