Your weekly numbers dipped again. Is that a problem, the usual January, or just last week being last week? Most leaders answer that question by instinct, then dress the instinct up as a forecast. Time-series analysis is the discipline of answering it with the data instead, and, just as importantly, of knowing how much you can't know.

The quick version

  • A time series is just one number measured at regular intervals, weekly signups, monthly revenue, daily tickets.
  • Almost any such series breaks into three parts: a trend (where it's heading), seasonality (a repeating calendar rhythm), and the remainder (noise you can't explain). Separating them stops you reacting to a Tuesday.
  • Forecasting projects that pattern forward. The honest output isn't a single number, it's a range, with a stated confidence.
  • Simple methods are shockingly hard to beat. Reach for the complicated model only when a simple one has clearly failed.

The idea in depth

The foundational move in time-series work is decomposition: treating an observed value as the sum (or product) of separate, more interpretable components. In the classic framing used throughout Rob Hyndman and George Athanasopoulos's open textbook Forecasting: Principles and Practice (3rd ed., OTexts, 2021), a series is split into a trend-cycle, a seasonal component, and a remainder. Their workhorse method, STL (Seasonal-Trend decomposition using Loess, from Cleveland and colleagues, 1990), does this robustly enough to survive outliers.

Why this matters before any forecast: a raw line chart blends signal and noise, so the eye invents stories. Decomposition is what lets you say "underlying demand is still climbing; the dip is just the seasonal trough we get every year." So the move is: before you explain a wobble to your board, decompose the series and look at the trend line, not the raw one. Half of the "crises" that land on a leader's desk are seasonality nobody adjusted for.

flowchart LR
  A(["Observed series
(the raw chart)"]) --> B("Trend-cycle
where it's heading") A --> C("Seasonality
the calendar rhythm") A --> D("Remainder
noise you can't explain") B --> E(["Signal you act on"]) C --> E
Decomposition pulls one moving number apart into parts you can reason about separately. Leaders Loop

Forecasting is a range, not a number

Once the pattern is clear, you project it forward. The methods sit on a ladder of ambition. At the bottom are benchmarks that feel too dumb to bother with, the naïve forecast (tomorrow equals today) and the seasonal naïve (this December equals last December). Above them sit exponential smoothing (weighting recent observations more heavily) and the ARIMA family, the autoregressive models formalised by George Box and Gwilym Jenkins in Time Series Analysis: Forecasting and Control (Holden-Day, 1970), the book that gave the field its grammar.

Here is the load-bearing idea, and the one most dashboards get wrong: a forecast without an error band is a guess wearing a suit. Real forecasts come as prediction intervals, "we expect 1,000 signups next month, and we're 80% confident it lands between 850 and 1,170." Hyndman and Athanasopoulos treat the interval as the forecast (their Section 5.5, "Distributional forecasts and prediction intervals"); the single number is just its midpoint. So the move is: never let a forecast reach a decision-maker as one figure. Demand the range and the confidence, and plan against the edges, not the middle.

A forecast without an error band is a guess wearing a suit.

Why simple usually wins, and where it breaks

Leaders assume more sophisticated models forecast better. The evidence is stubbornly otherwise. Across four decades of the Makridakis (M) Competitions, open contests run by Spyros Makridakis that pit forecasting methods against thousands of real series, the recurring finding is that statistically complex methods do not reliably beat simple ones, and that combining a few methods tends to beat picking one. The M4 competition (2018; 100,000 series) made the point sharply: of its 17 most accurate methods, 12 were combinations, and pure machine-learning entries largely trailed simple statistical benchmarks (Makridakis, Spiliotis & Assimakopoulos, International Journal of Forecasting, 2018).

So the move is: start with a benchmark, beat it deliberately, and prefer a blend of two plausible methods over a heroic single model. The honest limitation: this isn't a universal law. The later M5 competition (2020, retail demand) was the first where machine-learning methods topped the table, because it had vast data, many related series and rich external drivers like price and promotions. The lesson holds in spirit: complexity has to earn its place against a simple baseline, on your data, measured on forecasts it has never seen. It often can't. Sometimes it can. The discipline is making it prove the case.

flowchart TD
  A(["A number that moves
over time"]) --> B("Plot & decompose
trend / season / noise") B --> C{"Is there a clear
pattern?"} C -->|"Yes"| D("Fit a simple baseline
e.g. seasonal naïve") C -->|"Mostly noise"| E(["Don't over-forecast,
widen the range"]) D --> F("Try to beat it
smoothing / ARIMA / blend") F --> G(["Forecast as a range
+ confidence"])
The working loop: understand the shape first, baseline second, and only then reach for ambition. Leaders Loop

A worked example

A support manager watches weekly ticket volume. In the second week of January it jumps 22% and the room tenses, a quality problem? a broken release? (Figures here are illustrative.)

She decomposes 18 months of weekly data. The trend is gently up (the product is growing, expected). The seasonal component shows a reliable post-holiday spike every January as users return and hit the same onboarding snags. The remainder for this week is small. Translation: the 22% is almost entirely seasonality plus the slow growth trend, not a new fire. The cause she was about to assign (last Thursday's release) doesn't survive contact with the decomposition.

She still forecasts the next eight weeks, but as a range, not a line. Her seasonal-naïve baseline says volume eases back toward trend by February, with an 80% interval of roughly ±15%. She staffs to the upper edge for two weeks, not the midpoint, then steps back down. No emergency hiring, no panic retro, one calm capacity decision, defensible because the pattern, not the vibe, drove it.

Frequently asked questions

How much history do I need before I can forecast anything?

Enough to see the rhythm repeat. For a yearly seasonal pattern in weekly or monthly data, two to three full cycles is a sensible floor, below that you're guessing at the season. With very little history, lean on a simple baseline and a wide interval rather than a confident model.

Isn't this just drawing a line through the dots and extending it?

That's a trend forecast, and it's fine for a smoothly trending series with no seasonality. The moment a calendar rhythm exists, and in business it almost always does, a straight line will be wrong in a predictable direction every season. Decomposing first is what stops that.

Do I need to learn ARIMA or Python to use any of this?

No. The thinking is the asset: separate trend from season from noise, baseline before you optimise, and report a range. Spreadsheets and BI tools do seasonal forecasting now. The hard part isn't the maths, it's the discipline of not reacting to a single point.

How far ahead can I trust a forecast?

Uncertainty compounds with distance, so prediction intervals fan out the further you look. Short horizons (a few periods) can be tight and useful; long horizons should be treated as scenarios, not promises. If someone shows you a confident 18-month point forecast with no widening band, be sceptical.

What's the single most common mistake?

Judging a forecast by how well it fits the past. A model can hug history perfectly and still forecast terribly. Always test on data the model never saw (a held-out recent stretch), that, not the pretty in-sample fit, is what tells you whether to believe it.

Related in the Toolkit

Where to go next