Demand Forecasting Basics Every Planner Should Know

Every forecast is wrong. The goal is a forecast that is wrong by a known, manageable amount, without a consistent lean in one direction. Here are the basics I think every planner should be comfortable with.

Start with the right data

Forecast demand, not just shipments. If an item was out of stock, shipments understate what customers wanted. Where you can, capture orders, backorders and lost sales. Also clean the history: one-time events, data errors and promotions should be flagged so they don’t distort the baseline.

Know the patterns

Most demand series are a mix of a few components:

  • Level: the typical volume right now.
  • Trend: a sustained increase or decrease.
  • Seasonality: a pattern that repeats on a fixed calendar cycle.
  • Noise: random variation that no model can predict.

Plotting the data before modeling is the single best habit you can build. Your eyes catch outliers, structural breaks and seasonality faster than any summary statistic.

Simple methods first

Sophisticated models aren’t always better. Start with benchmarks:

  • Naive: next period equals the last actual.
  • Seasonal naive: next period equals the same period last season.
  • Moving average: the average of the last n periods.
  • Simple exponential smoothing: a weighted average that gives more weight to recent data.

Ft+1 = α × At + (1 − α) × Ft

Here α is between 0 and 1. A higher α reacts faster to change but also chases noise. Example: with α = 0.3, a prior forecast of 100 and an actual of 120, the next forecast is 0.3 × 120 + 0.7 × 100 = 106.

Methods like Holt-Winters add trend and seasonality, and regression or machine-learning models can add drivers such as price or promotions. Whatever you try, compare it against the simple benchmarks. If a complex model can’t beat seasonal naive, it isn’t earning its complexity.

Measure accuracy the right way

Use more than one metric, and agree on definitions before you report them. With A = actual and F = forecast:

  • MAE (mean absolute error): average of |A − F|, in units.
  • MAPE (mean absolute percentage error): average of |A − F| / A. It’s easy to explain but breaks down when actuals are zero or very small.
  • WAPE (weighted absolute percentage error): Σ|A − F| / ΣA. It’s more stable for a portfolio of items and weights errors by volume.
  • Bias: average of (F − A). Positive means you over-forecast; negative means you under-forecast.

A three-period example

Actuals of 100, 120 and 80 against forecasts of 110, 110 and 100 give absolute errors of 10, 10 and 20.

  • MAE = 40 / 3 ≈ 13.3 units
  • WAPE = 40 / 300 ≈ 13.3%
  • MAPE = (10% + 8.3% + 25%) / 3 ≈ 14.4%
  • Bias = (10 − 10 + 20) / 3 ≈ +6.7 units, a lean toward over-forecasting

Watch bias more than accuracy

Random error is expected. Bias is a process problem. Consistent over-forecasting builds excess inventory; consistent under-forecasting causes shortages and expediting. Bias often comes from incentives, such as sales targets entered as forecasts. Track it by item family and by whoever adjusts the numbers.

Habits that make forecasts more useful

  • Forecast at the right level. Aggregated forecasts (product family, region, month) tend to be more accurate than item-by-day forecasts. Forecast where decisions are made, then disaggregate when needed.
  • Match the horizon to lead time. Accuracy beyond your replenishment lead time matters most for capacity and procurement decisions.
  • Measure forecast value added. Compare the statistical forecast with the final adjusted forecast. If manual overrides don’t improve accuracy, simplify the process.
  • Document assumptions. A short note on why a number changed is worth more than a perfect model nobody trusts.

A quick Python start

import pandas as pd

df = pd.DataFrame({"actual": [100, 120, 80], "forecast": [110, 110, 100]})
err = df["forecast"] - df["actual"]
mae = err.abs().mean()                         # 13.33
wape = err.abs().sum() / df["actual"].sum()    # 0.1333
bias = err.mean()                              # 6.67

Learn more

The best free resource I know is Forecasting: Principles and Practice (3rd ed.) by Rob J. Hyndman and George Athanasopoulos. For code, see the statsmodels time-series documentation. For economic context on U.S. manufacturing demand, the Census M3 survey (Manufacturers’ Shipments, Inventories, and Orders) and the ISM PMI® reports are worth following. My Knowledge Base has these formulas in one place.

Peter Klausz is an MBA, the founder of Statadventure, LLC, and a former Pratt & Whitney F100 supply chain manager. He builds supply chain software in Python and SQL with AI-assisted development and is open to contracting and new roles. Get in touch.