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.
CV is undefined when the mean is zero and can be unstable when the mean is close to zero. Use consistent periods and units, and distinguish missing observations from genuine zero demand. For SBC classification, use positive demand sizes rather than mixing returns or net-negative quantities into the size calculation.
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 less 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 has eight times the relative standard deviation; that alone does not quantify stockout risk.
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 |
The cutoffs are classification conventions, not universal boundaries between safe and unsafe stock policies. The original SBC research compares forecasting methods under specified error criteria; evaluate performance on the history and service objective relevant to your business.
Why this matters for forecasting
The right forecasting method depends on the demand regime.
- Smooth: compare a moving average or exponential-smoothing baseline, while checking for trend, seasonality and changes the historical class may not reveal.
- Intermittent: Croston's method, or the Syntetos–Boylan Approximation (SBA) — the bias-corrected version. Compare against a simple baseline using held-out data.
- Erratic: frequent demand with variable sizes; this is distinct from intermittent demand and needs its own forecast and buffer evaluation.
- Lumpy: evaluate intermittent-demand methods and relevant external signals, such as known events or customer orders. The class alone does not prove that statistical forecasts will fail.
Applying the wrong method can distort margin. A smooth-demand average applied to lumpy demand can over-order on top of the spikes and stockout in between.
How LineNow uses CV²
LineNow's demand-statistics calculation uses a lookback window, commonly 30 days. For histories with sufficient positive-demand days, it:
- Bins qualifying demand records into daily buckets, netting reversals before retaining positive daily demand.
- 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.
- Uses SBA for intermittent and lumpy histories with sufficient observations; smooth and erratic histories use the window mean and daily variance. Fewer than six demand days use an insufficient-data fallback.
Classification can change when the history is refreshed. A shift to erratic demand is a reason to inspect the cause and review the forecast and buffer; it does not automatically establish a higher service target or guarantee a particular refresh schedule.
CV² classifies by demand pattern. ABC inventory analysis classifies by demand value — AUV = units sold × unit cost. Both dimensions can inform the replenishment policy for each SKU: an important lumpy item may require explicit event context, while a smooth low-value item may use a simpler policy. The appropriate z-score depends on criticality and the cost of shortages, not the class alone. Neither dimension alone gets you there.
Worked example
Take two five-day series. Use sample variance for the non-zero sizes:
| Series | Non-zero demand sizes | ADI | CV² of non-zero sizes |
|---|---|---|---|
| 9, 10, 10, 11, 10 | 9, 10, 10, 11, 10 | 5 / 5 = 1 | 0.5 / 10² = 0.005 |
| 0, 0, 0, 5, 45 | 5, 45 | 5 / 2 = 2.5 | 800 / 25² = 1.28 |
Both all-day means are ten units, but the second series has intermittent timing and variable non-zero sizes. Under the stated thresholds it illustrates a lumpy pattern. Five days is too small for a dependable operating policy; LineNow’s production calculation would apply its insufficient-data fallback to both examples.
The public classifier uses population variance for the entered non-zero observations, while the production classification calculation uses sample variance. For the two examples above, the public tool therefore shows CV² of 0.004 and 0.64 respectively, with the same illustrated classes. Near a threshold, that convention can change the class. Confirm the observation window and variance convention before comparing outputs.
How operators should use CV²
CV² should not be shown as a vanity statistic. It should change the buying workflow:
- smooth items can be ordered on a steady cadence
- intermittent items need a forecast that understands zero-demand days
- erratic items warrant review of the forecast error, service target and exception process
- lumpy items need human context such as events, wholesale orders, or promotions
The practical output is not the CV² number itself. The practical output is the policy attached to the SKU: forecast method, safety stock level, review frequency, and whether the operator should approve the recommendation before it becomes a purchase order. Paste a few weeks of sales history into the free demand pattern classifier to see which regime each of your items falls into.
Common mistake
Do not calculate CV² on all days if your goal is SBC classification. SBC uses non-zero demand sizes for CV² and uses ADI to represent the spacing between sales. Including zero days changes the statistic and makes it incompatible with these cutoffs. For other purposes, such as all-day demand variability, including genuine zero-demand periods can be appropriate.
That distinction matters for long-tail retail and restaurant ingredients. A specialty syrup that sells twice a week is not the same as a daily item that swings wildly. ADI and CV² separate those cases so replenishment does not overreact to the wrong signal.
Want demand classification wired directly into your purchase orders? Book a demo to start your 90-day free trial.