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:
{
"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.