207. Overview

207.1. Moving Averages

A family of forecasting methods that produce a forecast as a weighted average of past observations. Each method is a different choice of weights along a single axis: how much should past observations count?

207.1.1. The weighting-scheme axis

Two extremes and two interpolators. All five methods can be written in the form

— they only differ in how they choose the weights (and the window ).

Method Window Weights Formula See
Naïve 1 (1, 0, 0, …)
[naive.typ](naive.typ)
SMA
[sma.typ](sma.typ)
WMA
[wma.typ](wma.typ)
SES all (geometric decay)
ETS(A,N,N)
Cumulative
[cumulative.typ](cumulative.typ)

207.1.2. Reading the axis

Two endpoints and two interpolators:

Between them, two interpolators:

The full ETS family (all 30 cells, see ets/) generalizes SES by adding trend and seasonal components on top of the level.

207.1.3. When to use each

Method Use when
Naïve Random-walk demand (no structure to exploit). Useful baseline — every other method should beat it.
SMA Smooth, slowly-changing demand without trend. Easy to explain to non-technical stakeholders.
WMA Same as SMA, but you want to give more weight to recent observations without going to full geometric decay.
SES Slowly-changing level + want infinite-history weighting. Most operational forecasting starts here.
Cumulative Estimating a long-run mean (for stable processes) or as a slow-baseline in regime-detection.

207.1.4. Comparing them on the same data

For a stationary series, SMA, WMA, SES, and Cumulative all converge to the same long-run mean — they only differ in how fast they react to changes. For a trending series, all of them lag behind (they’re averages — they smooth out the trend); use ETS or ARIMA if you have trend.

The next four files cover Naïve, SMA, WMA, and Cumulative; SES is in [ets/a-n-n.typ](../ets/a-n-n.typ) as ETS(A, N, N).