The coefficient of variation is the ratio of the standard deviation of demand to its mean: CV = σ / μ. It is a dimensionless measure of how volatile an item's demand is relative to its average. CV² (CV squared) is used in the SBC framework as a threshold for classifying demand patterns.
Why dimensionless matters
Standard deviation alone is misleading because it scales with the magnitude of demand. An item that sells 1000 units/day with σ = 50 is volatile (in proportional terms) than an item that sells 5 units/day with σ = 2. CV makes them comparable: 0.05 vs 0.4. The second is 8× more volatile.
CV thresholds in the SBC framework
The Syntetos–Boylan–Croston (SBC) demand classification uses two parameters:
- ADI (Average Demand Interval): the average number of periods between non-zero demand observations
- CV²: squared coefficient of variation of non-zero demand sizes
The four regimes are:
| Pattern | ADI | CV² | Examples |
|---|
| Smooth | ≤ 1.32 | ≤ 0.49 | Daily-sold staples; coffee beans, milk |
| Intermittent | > 1.32 | ≤ 0.49 | Slow-but-stable; specialty bitters, niche SKUs |
| Erratic | ≤ 1.32 | > 0.49 | Daily-sold but spiky; trending items, weather-driven |
| Lumpy | > 1.32 | > 0.49 | Both rare and spiky; one-off bulk catering, B2B special orders |
Why this matters for forecasting
The right forecasting method depends on the demand regime.
- Smooth: simple exponential smoothing or a moving average works well. The future looks like the recent past.
- Intermittent: Croston's method, or the Syntetos–Boylan Approximation (SBA, bias-corrected). Standard moving averages over-react.
- Erratic: same as intermittent statistically, but with thicker safety stock and rush-order detection.
- Lumpy: the hardest. Statistical methods underperform; supplement with operator intuition or external signals (events calendar, B2B order schedule).
Applying the wrong method silently destroys margin. A smooth-demand average applied to lumpy demand will over-order on top of the spikes and stockout in between.
How LineNow uses CV²
For every line item, every day, LineNow:
- Bins the last 30 days of sales into daily buckets.
- Computes ADI = lookback_days / days_with_sales.
- Computes CV² = variance(non-zero demand) / mean(non-zero demand)².
- Classifies the item into one of the four regimes.
- Routes to the appropriate forecast: SBA for non-smooth, exponential smoothing for smooth.
This classification updates daily. An item that drifts from smooth to erratic (e.g. it goes viral) is automatically moved to a more conservative replenishment policy.