Averages chase the last order
A moving average or simple exponential smoothing jumps after each order and then decays through the zero periods. The forecast is highest just after a demand and lowest just before the next one.
Prediction & Causal Analysis · Guide
Spare parts and other slow-moving items have intermittent demand: most periods are zero, and the orders that do come vary in size. Averages and percentage-error metrics were built for items that sell every period, and they mislead on these series. Classify each item by how often it sells and how much its order sizes vary, use methods built for sparse demand such as Croston’s method, SBA or TSB, forecast demand over the lead time as a distribution, and score the result with measures that stay defined at zero.
A guide for planners and data teams who forecast spare parts, MRO items and long-tail products.
Why ordinary methods fail
A part ordered a few times a year has a mostly empty history. Methods designed for steady sellers treat that emptiness as noise, and three things go wrong.
A moving average or simple exponential smoothing jumps after each order and then decays through the zero periods. The forecast is highest just after a demand and lowest just before the next one.
The best single number for a sparse item is a fraction of a unit per period. The stocking decision depends on how much could be needed over the lead time, which a point forecast doesn’t say.
A zero can mean nobody needed the part, that it was out of stock, or that another part number replaced it. Unless those cases are flagged, the model learns low demand from periods when there was nothing to sell.
Classify before you forecast
ADI, the average demand interval, is the average number of periods between non-zero demands. CV² is the squared coefficient of variation of the non-zero demand sizes. The cut-offs most often used are an ADI of 1.32 and a CV² of 0.49.
| Class | ADI | CV² | What it looks like | Where to start |
|---|---|---|---|---|
| Smooth | Below 1.32 | Below 0.49 | Sells most periods, in similar quantities | Exponential smoothing, ARIMA or a global gradient-boosted model |
| Erratic | Below 1.32 | 0.49 or above | Sells most periods, but sizes swing widely | The same methods, with more attention to the forecast range |
| Intermittent | 1.32 or above | Below 0.49 | Many zero periods, similar sizes when it sells | Croston’s method, SBA or TSB |
| Lumpy | 1.32 or above | 0.49 or above | Many zero periods and very uneven sizes | SBA or TSB for the rate, and a distribution for the stock level |
The class depends on the time bucket: an item that is intermittent in weekly data can be smooth in monthly data. Match the bucket to the replenishment decision.
Methods compared
Croston’s method splits the series in two: the size of each non-zero demand, and the interval between demands. Each is smoothed separately, and the forecast is their ratio, a demand rate per period. SBA and TSB address its two main weaknesses.
| Method | How it works | Where it fits | Watch for |
|---|---|---|---|
| Simple exponential smoothing | Smooths the raw series, zeros included. | Smooth demand. A baseline elsewhere. | Spikes after each order and sags before the next. |
| Croston’s method | Smooths demand size and the interval between demands separately. Forecast is size divided by interval. | Intermittent demand with a stable rate. | Biased upward. Updates only when a demand occurs, so it misses a part that has stopped moving. |
| SBA (Syntetos–Boylan approximation) | Croston’s forecast multiplied by a correction factor based on the smoothing constant. | Intermittent and lumpy demand. A common default. | Still slow to notice obsolescence. |
| TSB (Teunter–Syntetos–Babai) | Smooths the probability of demand every period, and the size when demand occurs. Forecast is probability times size. | Demand that is fading, or parts near end of life. | Two smoothing constants to set. |
| Two-stage (hurdle) gradient boosting | One model predicts whether demand occurs, a second predicts its size. Expected demand is the product. | Many items, with drivers beyond the sales history. | Needs enough items and history. Leakage through features not known at forecast time. |
A single sparse series holds little information. A global model trained across many parts can use what the series can’t show: how many machines use the part, their age, planned maintenance, and how similar parts behave. A two-stage model, or a Poisson or Tweedie objective, lets it handle the zeros.
With few items, short history and no drivers, a boosted model has nothing extra to learn from and tends to overfit. Croston-type methods are then the stronger choice, and easier to explain to planners.
Forecast a distribution
The useful question is how many units could be needed during the replenishment lead time, and how likely each quantity is. The reorder point comes from that distribution and a target service level.
Forecast total demand across the lead time, plus the review period if stock is reviewed periodically. Summing per-period point forecasts gives the mean but not the spread.
Sparse demand is a count with a long right tail. A normal curve around the mean puts weight on negative demand and understates the tail. A Poisson or negative binomial distribution, or a bootstrap of past demand, fits better.
Cycle service level is the chance of getting through a replenishment cycle without a stockout. Fill rate is the share of demand met from stock. They lead to different stock levels, so agree which one applies.
Evaluation
On intermittent series, several familiar metrics reward the wrong forecast.
MAPE divides by actual demand, so it is undefined whenever demand is zero. Dropping the zero periods ignores every over-forecast in between.
Mean absolute error is minimised by the median, and the median of a mostly-zero series is zero. A forecast of zero for every period can win on MAE.
MASE and RMSSE divide the error by that of a naive forecast on the same item’s history, so they stay defined and comparable across items. Report bias next to them.
If the reorder point is a high quantile of lead-time demand, score that quantile with pinball loss. Then replay the stocking policy on past demand and record the service level, stockouts and stock held.
Practical steps
Clean data and a sound stocking rule often count for as much as the choice of model.
Flag stockout periods, link superseded part numbers, and separate one-off project orders from regular usage.
Match the time bucket to the lead time, compute ADI and CV² per item, and group the items.
Rolling-origin backtests of Croston, SBA, TSB and, where the data supports it, a boosted model, next to the method in use today and a naive forecast. Score by class.
Build the lead-time demand distribution, set reorder points from the agreed service level, simulate the policy on past demand, and reclassify items on a schedule.
Common questions
MAPE divides each error by the actual demand, so it is undefined in every period where demand is zero, and on a slow-moving part that is most periods. Scaled errors such as MASE or RMSSE, bias and pinball loss stay defined when demand is zero.
Croston’s method smooths the size of non-zero demands and the interval between them separately, and forecasts their ratio as a demand rate. SBA is Croston’s method with a correction factor that reduces its upward bias. TSB smooths the probability of demand in every period instead of the interval, so its forecast falls when a part stops moving.
It can help when there are many parts and useful information beyond each part’s own history, such as the installed base, equipment age, maintenance plans or part attributes. For a single sparse part with no such drivers, Croston-type methods are hard to beat.
No. For intermittent demand the timing of a single order is mostly random. What can be estimated is the demand rate and the distribution of demand over the replenishment lead time, which is what a reorder point and safety stock are set from.
Prediction & Causal Analysis · Spare-Parts Demand Forecasting
Bring one forecast or decision you want to improve. In 30 minutes we’ll cover:
Please don’t include confidential datasets, credentials or patient information.
yochai@mlaia.com
WhatsApp: +972 52 484 6282