The comparison
Every model starts from the same month of history, so the accuracy figures in the table were measured on the same data.
At each forecast origin a model sees only the history available at that moment and predicts forward. Move the origin along and you get a set of honest out-of-sample errors.
What usually goes wrong elsewhere is that different models need different amounts of history to start, so each gets scored from its own earliest origin — and accuracy measured on different data ends up in the same column. Here every eligible model starts at the same origin. If including seasonal models would leave too few evaluation folds, they are excluded outright and the page says so. The fold count sits next to every model so you can check.
Classification
ADI and CV² decide which models are allowed to compete for a SKU. They never decide the winner.
Average demand interval and the variability of the non-zero order sizes place each SKU in one of four quadrants — smooth, erratic, intermittent, lumpy — on the Syntetos–Boylan–Croston (2005) scheme. Smooth and erratic series go to the continuous-demand family; intermittent and lumpy go to the intermittent estimators, and a continuous-demand model cannot win there however good its error looks.
The eleven models
Eight for regular demand, four for intermittent. All published, all named.
Regular demand: Naive · Moving average (3) · SES / ETS(A,N,N) · Holt linear trend · Holt-Winters additive · ARIMA(1,1,0) with drift · seasonal naive with drift.
Intermittent demand: Croston · SBA · TSB · ADIDA.
Smoothing constants are fitted to each SKU rather than pinned at textbook defaults, and the fitting only ever sees the training block of the fold it is in. Ranking is on out-of-sample error with a penalty for persistent bias; the score is in the table beside the error so the ordering is checkable.
The range
A P10–P90 that has been tested for coverage against held-out data, not asserted.
The spread of the rolling error is measured at each horizon from the folds that genuinely reach it, and grown beyond the last horizon the data supports — the chart marks that switch with hollow bars. Intermittent and lumpy series get a bootstrap instead of a normal curve, because their demand has a large lump at zero. The page says which method produced the numbers on screen.
Calibration. A stated 80% range is worth nothing unless it holds about 80% of the time. Across 120 synthetic histories in each of six demand families — flat, trending, seasonal, random-walk, lumpy and intermittent — fitted on 36 months and scored against the following 12, the published range contained the outcome between 74% and 89% of the time, monthly and by horizon. The test runs on every build.
What the sheet should look like
SKU in column A, one column per month after it, oldest first. Zeros are data; keep them.
One row per SKU. Column A is the SKU code — the only column that is not a number. Everything from column C onwards is one month of demand, oldest first; the header text is ignored, only the order matters. Column B is optional and covered under the sheet format.
Sheet layout
| SKU | Season | Oct 2023 | Nov 2023 | Dec 2023 | … |
| CHEM-118 | | 1,623 | 1,840 | 2,003 | … |
| CHEM-350 | 3 | 307 | 443 | 251 | … |
| CHEM-411 | | 0 | 514 | 0 | … |
Zeros are data. A zero means no demand that month and the classification depends on it, so leave them in rather than deleting the cell — deleting it shifts every later month back by one.
Blanks. Trailing blanks at the end of a row are ignored, so rows of different lengths are fine — a SKU launched later than the rest has a shorter run. A blank in the middle is reported with the column named rather than silently closed up, because closing it up would shift every month after it and quietly corrupt the series.
Negatives are treated as zero. If returns and credits appear as negative lines, net them off before uploading or they are dropped.
How much history. Ten months minimum, twenty-four before the backtest is worth much. A seasonal model needs two full cycles plus four evaluation folds — about 28 months for an annual cycle — or it is excluded and the page says so.
Known limitations
Where the numbers get thin, stated up front.
The seasonal entry is a baseline, not an order-searched SARIMA. The calibration study uses synthetic histories with clean structure; a real SKU with a regime change part-way through will be harder than anything in it. Intervals inherit the length of your history — with only a handful of folds the range is indicative, and the fold count is shown so you can judge it. Promotions, price changes, cannibalisation and new-product effects are not modelled; the scenario tool is where you put what you know and the history does not.