Forecasting Intermittent Demand for Spare Parts
Intermittent demand forecasting for spare parts: why MAPE lies, when to use Croston vs SBA vs bootstrapping, and how to set service-level stock by SKU.
Intermittent demand forecasting is the part of planning that breaks every tool built for fast movers. A spare part that sells 4 times a year, 11 units one month and zero for the next seven, will not fit a moving average or an exponential-smoothing model — and the moment you force it to, you either drown the warehouse in dead stock or run dry the one week a customer's line goes down. I ran planning at a $250M furniture manufacturer, and the service-parts catalog was where our spreadsheet forecasts quietly bled the most cash. Thousands of slow SKUs, each one rounding to a forecast of zero, each one occasionally costing us an expedite or a lost machine-down sale. This is how to forecast that demand without lying to yourself.
Why your normal forecast fails on spare parts
Fast-moving SKUs have a demand signal you can smooth. Spare parts have noise with the occasional spike. The standard error metrics make this worse, not better.
- MAPE is undefined or useless. Mean absolute percentage error divides by actual demand. When actual is zero — which it is most periods for an intermittent part — you're dividing by zero or skipping the period entirely. A 0% MAPE on a part that's stocked-out is not accuracy. It's a blind spot.
- Moving averages collapse toward zero. Average 11 units across 12 mostly-empty months and you forecast 0.9 units a month. Order to that and you stock out the month the 11 lands.
- "Last year plus 5%" is gambling. With one or two demand events a year, last year is a sample size of one. You're extrapolating from noise.
The fix is to forecast the two things that actually drive a slow part separately: how often demand occurs, and how big it is when it does.
The methods that actually work
Intermittent demand has a known toolkit. Croston's method (1972) is the backbone, and the variants exist because Croston has a documented bias.
Croston's method
Croston splits the series into two streams and smooths each independently: the size of nonzero demand, and the interval between demand events. The forecast is demand-size divided by interval. So a part that sells 8 units every 4 months forecasts at 2 units/month — but the method knows the demand is lumpy, not smooth. That distinction is the whole game for safety stock.
Syntetos-Boylan Approximation (SBA)
Croston is biased high — it systematically over-forecasts intermittent series. Syntetos and Boylan proved it in 2005 and published a correction: multiply the Croston estimate by roughly (1 − α/2), where α is the smoothing constant. For a catalog of thousands of slow parts, that bias correction alone takes real dollars off the shelf. SBA is the sensible default for genuinely intermittent items.
TSB (Teunter-Syntetos-Babai)
Croston and SBA share a flaw: they only update the forecast when demand occurs. If a part dies — last sale 18 months ago — Croston keeps forecasting the old rate forever. TSB updates the probability of demand every period, so it decays a dying part toward zero. If you have obsolescence risk (you do), TSB earns its keep.
Bootstrapping / empirical distribution
For the highest-value or most erratic parts, skip the point forecast. Resample the actual demand history to build the full distribution of demand-over-lead-time, then read your reorder point straight off the percentile you want. This is what drives a real service-level decision instead of a guess.
Classify before you forecast: the ADI / CV² grid
Don't apply one method to the whole catalog. Segment first using two numbers per SKU:
- ADI — average demand interval (average number of periods between nonzero demand).
- CV² — squared coefficient of variation of the nonzero demand sizes.
The Syntetos-Boylan-Croston classification splits the catalog into four boxes:
| Category | ADI | CV² | Pattern | Method |
|---|---|---|---|---|
| Smooth | < 1.32 | < 0.49 | Regular, low variation | Standard exponential smoothing |
| Intermittent | ≥ 1.32 | < 0.49 | Infrequent, steady size | Croston / SBA |
| Erratic | < 1.32 | ≥ 0.49 | Frequent, lumpy size | SBA with care |
| Lumpy | ≥ 1.32 | ≥ 0.49 | Infrequent and lumpy | TSB / bootstrapping |
Lumpy is the hard box — infrequent and erratic — and it's usually where the expensive parts live. Those are the ones you model individually, not in a batch.
Measure accuracy with the right metric
Throw out MAPE for these parts. Use error metrics that survive zeros:
- MASE (mean absolute scaled error) — scales your error against a naive benchmark, defined even when actuals are zero. Below 1 means you beat naive; above 1 means stop.
- RMSSE — the squared cousin, which punishes the big misses (the stockout on the spike) harder.
- Fill rate and ready-rate by SKU — the operational truth. Did the part sit on the shelf the day the line went down?
Track the cost of error, not just the percentage. A 60% error on a $4 fastener is noise. A 60% error on a $9,000 controller that idles a customer's production line is a phone call you don't want.
Translate the forecast into stock
The forecast is an input. The decision is the reorder point and order quantity, and for spare parts that decision is dominated by lead time and service level, not by the mean.
- Build the demand-over-lead-time distribution — combine demand variability with lead-time variability. A 14-week lead-time part needs to cover 14 weeks of possible demand, including the spike.
- Set service level by criticality, not blanket policy. A 95% blanket service level across a 6,000-SKU parts catalog is how you end up with $8M of dead stock. Tier it: machine-down critical parts at 98-99%, run-of-the-mill at 90%, cosmetic at 80% or stock-to-order.
- Reorder point = demand over lead time + safety stock, where safety stock is driven by the percentile you chose and the actual variability — not a flat "two months of cover" rule.
- Re-run obsolescence monthly. TSB or a simple last-demand age filter flags parts that have gone dark so you write them down on purpose instead of discovering them in a year-end count.
The operator move that pays off fastest: stop holding safety stock on the slow tail at the same service level as the movers. On our parts catalog, retiering service levels by criticality freed seven figures of cash before we touched the forecasting math at all.
What good looks like
A mid-market manufacturer running real intermittent demand forecasting should expect:
- Per-SKU method assignment driven by the ADI/CV² grid, not one model for everything.
- SBA or TSB on the genuinely intermittent items, with the Croston bias corrected.
- Service levels tiered by part criticality, reorder points set off the demand-over-lead-time distribution.
- A dead-stock report that surfaces obsolescence every month instead of every audit.
Get that running and the parts catalog stops being the place cash goes to die.
Want the real number on your own parts catalog? Send me read-only access to your spare-parts SKU history (or a representative export) and I'll run a free planning-maturity and stranded-inventory teardown — your actual fill rates, where the dead stock is hiding, and what's recoverable by SKU. You keep the analysis either way. Book a free teardown and let's put a dollar figure on it.
Let's see what's worth building first.
A 15-minute call: tell me where your AI or planning is stuck, and I'll tell you the one thing worth building first — and whether it's worth doing at all.