BLOG / ENGINEERING

One model is the wrong model

Every forecast we serve is a competition. Here is how the race is run — and why the losers cost you nothing.

LR Lasse Rafn FOUNDER
12 MAY 2026
3 MIN READ
0 MS 40 MS 80 MS RACE ENDS AUTOETS ● SELECTED · 4.21 PROPHET 5.08 ARIMA 5.83 THETA 6.44 TBATS STOPPED EARLY CROSTON STOPPED EARLY + MORE PRUNED BY DIAGNOSTICS
ONE RACE, ILLUSTRATIVE · WALL-CLOCK PER CANDIDATE SCORES ARE SMAPE, LOWER WINS · LOSERS PAY NO LATENCY

The problem

Ask three forecasters which model to use and you will get four answers. ARIMA for the statisticians, Prophet for the pragmatists, exponential smoothing for whoever read the M-competition results. All of them are right — on some series, some of the time.

That is the uncomfortable truth of time-series work: model choice is not a philosophy, it is a property of the data. A smooth SaaS revenue curve and a zero-heavy spare-parts series have nothing in common, and neither do the models that fit them best. Pick one model for your whole business and you have quietly chosen to be wrong about most of it.

So we stopped picking. On every call, the models compete.

The best model is a per-series decision — recomputed on every call, proven on every response.

The race

When your series arrives, it is handed to a pool of candidates — the classical families (ETS, ARIMA, Theta, seasonal models) alongside specialists like Croston and SBA that exist purely for intermittent demand. Fitting a statistical model is cheap; fitting them one after another is what would be expensive. So they fit in parallel.

Two gates keep the race short. First, series diagnostics prune the field before it starts: heavily intermittent data eliminates the smooth-trend family, and a series with no detectable seasonality benches the seasonal one. Second, candidates that fall mathematically out of contention are stopped early — the light bars in the figure above. The losers cost you nothing: the response arrives at the speed of the winner, not the field.

And the response tells you who won:

RESPONSE — TRUNCATED
{
  "forecasts": [
    { "period": 1, "date": "2026-06-01", "forecast": 177.1, "lower": 162.9, "upper": 191.4 },
    { "period": 2, "date": "2026-07-01", "forecast": 181.4, "lower": 164.0, "upper": 198.9 }
  ],
  "model_info": {
    "method": "auto_ets",
    "selection": "cross_validated"
  }
}

The scoring

A race needs a finish line that cannot be gamed. Ours is out-of-sample error: hold back the tail of your history, forecast it blind, and score every candidate on what it got wrong. In-sample fit is never consulted — a model that memorizes the past should lose, and under this scheme it does.

No family wins often enough to deserve the job permanently:

family tends to win on
ETS smooth series with a drifting level
ARIMA series whose recent errors predict the next value
Theta short histories with a steady trend
Croston / SBA intermittent demand — many zeros, sudden spikes
Seasonal models strong repeating cycles, weekly or yearly

If one model always won, we would not run the race.

What it means for you

Model selection stops being your problem. Your series changes character — a product matures, seasonality shifts, a pandemic happens — and the next call simply crowns a different winner. There is no retraining ticket, no drift dashboard, no quarterly model review.

Send history. The race handles the rest.

MORE FROM THE BLOG ALL POSTS →

See who wins on your data.

Start with 1,000 free API calls.
No credit card required.