Forecasting Playground

Shape a history. Watch the forecast respond.

Status
Experiment
Field
Data · Forecasting · Interactive experiment
Year
2026

A small, working forecasting tool built on synthetic data. Change growth, seasonality and trend assumptions and see how a simple, transparent method responds.

Fictional Cycle Co. · bikes sold per month

  • Actual
  • Base forecast
  • Scenarios
  • 80 % range

Synthetic data. Hover or drag across the chart — or focus it and use the arrow keys — to read values.

Underlying growth
+8.3 % / yr
Estimated from the history. You set +8 %.
Next 12 months
1,950 bikes
+6.4 % on the same months last year.
Scenario range
1,883–2,013
Estimated growth ± 10 percentage points.
Back-test error
7.2 %
Average monthly miss when the method forecasts the final 12 months without seeing them.
Seasonal pattern
JFMAMJJASOND

Each bar is a month’s typical level relative to the year’s average (the line at 1.0).

How this is calculated
  1. Seasonality. A centred 12-month moving average estimates the level; each month’s ratio to it, averaged per calendar month, gives the seasonal index. Right now May runs at 1.47× the average and Jan at 0.53×.
  2. Trend. A straight line through the logarithm of the de-seasonalised series (least squares) gives the growth rate: +8.3 % a year.
  3. Projection. From the last fitted level, the trend continues with damping φ = 0.90, and seasonality is re-applied:ŷ(t+h) = L · e^(b · Σ φⁱ) · S(month)
  4. Scenarios. Optimistic and pessimistic lines move the annual growth by ± 10 percentage points.
  5. Uncertainty. The band is an approximate 80 % range: ±1.28 standard deviations of the model’s residuals (σ = 0.079 on a log scale), widening with √h.
  6. Back-test. Refit without the final 12 months, forecast them, compare. Average error: 7.2 %.

01

What this is

A fictional bike shop with four years of monthly sales — invented by a seeded random generator, so no real business data is involved. You control how that history was shaped, and how the future is projected from it.

The point is not accuracy. It is to make the moving parts of a forecast visible: how much of the result comes from the data, and how much from the assumptions you bring to it.

02

How it works

The method is classical and deliberately simple, so every step can be explained:

  1. Seasonality. A centred 12-month moving average estimates the underlying level. Dividing each month by it, and averaging per calendar month, gives twelve seasonal indices.
  2. Trend. Removing seasonality leaves a smoother series. A straight line fitted to its logarithm (ordinary least squares) estimates the growth rate.
  3. Projection. The trend is extended from the last fitted level. Trend continuation damps it: at 100 % the growth continues unchanged; at 0 % the forecast stays flat apart from seasonality.
  4. Scenarios. Optimistic and pessimistic lines add or subtract the chosen spread from the estimated annual growth.
  5. Uncertainty. The shaded band is an approximate 80 % range, based on how far the history strays from the fitted model and widening with the horizon.
  6. Back-test. The method is re-run without the final twelve months, and its forecast compared with what happened. The average percentage error is shown as a sanity check.

03

What it won’t do

It does not handle holidays, promotions, structural breaks, stock-outs or the many other things that shape real demand. Real forecasting usually needs better models, richer data and — most of all — a conversation about what the numbers are for.

Treat it as a thinking tool: a way to feel how sensitive a forecast is to the assumptions behind it.