EWMA in Sports Analytics: How Exponential Weighting Adapts to Change
EWMA (Exponentially Weighted Moving Average) is a smoothing technique that gives recent games progressively more weight than older ones. Instead of treating a game from 30 days ago the same as last night's game, EWMA lets the data "decay" — recent performance matters more, but history isn't thrown away entirely.
Why Not Just Use a Rolling Average?
A "last 10 games" rolling average has two problems. First, game #1 and game #10 get equal weight — but a game from three weeks ago is less relevant than last night's game. Second, when game #11 drops off the window, the average can jump discontinuously even though nothing actually changed.
EWMA solves both issues. Weights decline smoothly and continuously — there's no cliff edge where old data suddenly disappears.
The EWMA Formula
EWMA_t = α × x_t + (1 - α) × EWMA_{t-1}
Where:
x_t = today's observed value (e.g., offensive rating in this game)
α = smoothing factor, between 0 and 1
EWMA_t = the updated exponentially weighted average
α is derived from the half-life (h):
α = 1 - exp(-ln(2) / h)The beauty of this formula is its simplicity: you only need the previous EWMA value and today's observation. No need to store or recompute over a window of past games.
The Half-Life Concept
The half-life (h) is the number of games it takes for an observation's weight to drop to 50%. It's the intuitive knob that controls how "reactive" vs. "stable" your metric is:
| Half-Life | α | Behavior | Good For |
|---|---|---|---|
| h = 5 | 0.130 | Very reactive | Catching hot/cold streaks quickly |
| h = 10 | 0.067 | Responsive | Recent form (2-3 weeks) |
| h = 20 | 0.034 | Balanced | Medium-term trends (1-2 months) |
| h = 40 | 0.017 | Stable | Season-long baseline (3-4 months) |
Think of it like this: a half-life of 10 means that a game played 10 games ago contributes half as much as the most recent game, a game 20 games ago contributes one-quarter, and a game 30 games ago contributes one-eighth.
How Predictium Uses EWMA: h10, h20, and h40
Predictium's B4 prediction model computes 28 EWMA features across three half-lives for key team statistics like offensive rating, defensive rating, pace, and scoring:
- h10 (short-term) — Captures the last ~2 weeks of play. If a team just traded for a star or lost a key player to injury, h10 adapts within a few games.
- h20 (medium-term) — Smooths over game-to-game noise while still reflecting meaningful changes. This is often the most predictive single half-life.
- h40 (long-term) — Provides a stable baseline that resists overreaction to small sample sizes. Useful for identifying true talent level vs. variance.
Why Three Half-Lives Instead of One?
No single half-life is optimal for all situations. Early in the season, h40 barely has enough data to be meaningful while h10 has already adapted. After a trade deadline, h10 reflects the new roster while h40 still carries pre-trade performance. By giving the model all three, it learns when to weight recent form heavily and when to trust the longer baseline.
The combination of multiple EWMA half-lives is one reason Predictium adapts to mid-season changes faster than models that rely on flat season averages. When a team makes a major trade, the h10 features update within days while traditional "season average" stats take weeks to shift meaningfully.
See how EWMA features power our NBA predictions in the full model breakdown.