# ADI and CV2 Demand Classification Calculator (Smooth, Erratic, Intermittent, Lumpy)

> Source: https://netray.co/tools/demand-pattern-adi-cv2-classification-calculator
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Free Tools

## Short answer

Enter a few counts from an item's demand history and get its ADI, CV2 and demand class so you can choose a suitable forecast method.

## Category

supply-chain

## Audience

- Demand planner
- Inventory planner
- Spare parts planner

## Tool

**Kind:** calculator

**Inputs:**

#### Total periods in history

**Key:** total_periods

**Type:** number

**Default:** 36

**Min:** 1

**Step:** 1

**Unit:** periods

**Help:** Count of months or weeks in the history you are classifying.

#### Periods with demand

**Key:** nonzero_periods

**Type:** number

**Default:** 12

**Min:** 1

**Step:** 1

**Unit:** periods

**Help:** Number of those periods where demand was above zero.

#### Mean demand size (non-zero periods)

**Key:** mean_size

**Type:** number

**Default:** 8

**Min:** 0.01

**Step:** 0.5

**Unit:** units

**Help:** Average quantity in the periods that had demand.

#### Standard deviation of demand size

**Key:** sd_size

**Type:** number

**Default:** 5

**Min:** 0

**Step:** 0.5

**Unit:** units

**Help:** Standard deviation of the non-zero demand quantities.

**Outputs:**

#### Average demand interval (ADI)

**Key:** adi

**Expr:** total_periods / nonzero_periods

**Format:** decimal

**Primary:** true

**Description:** Average number of periods between demands. 1.00 means demand every period.

#### Coefficient of variation of size

**Key:** cv

**Expr:** sd_size / mean_size

**Format:** decimal

**Description:** Standard deviation divided by mean of non-zero demand sizes.

#### CV squared

**Key:** cv2

**Expr:** pow(cv, 2)

**Format:** decimal

**Description:** Squared coefficient of variation used in the classification.

#### Share of periods with demand

**Key:** share

**Expr:** nonzero_periods / total_periods * 100

**Format:** percent

#### Class code (1 smooth, 2 erratic, 3 intermittent, 4 lumpy)

**Key:** class_code

**Expr:** if(gt(adi, 1.32), if(gt(cv2, 0.49), 4, 3), if(gt(cv2, 0.49), 2, 1))

**Format:** integer

**Primary:** true

**Description:** Syntetos-Boylan cut-offs: ADI 1.32 and CV2 0.49.

**Chart:**

#### ADI as demand periods increase (36 period history)

**Type:** line

**X:** nonzero_periods

**From:** 1

**To:** 36

**Steps:** 36

**Series:**

- adi

**Disclaimer:** The cut-offs 1.32 and 0.49 come from published work by Syntetos and Boylan and are guidelines. Test the suggested method against a naive forecast on your own data.

## Content

**Intro:** Not every item should be forecast the same way. The ADI and CV2 scheme sorts items into four demand classes using how often demand occurs and how variable the order sizes are. This calculator gives the class from a few counts you can pull from any ERP.

**Sections:**

#### How to use the calculator

**Body:** For each item, count the periods in the history and the periods with demand above zero. Then take the mean and standard deviation of the demand quantity in only those non-zero periods. Enter the four numbers. The class code tells you which family of methods fits. Repeat per item in a spreadsheet using the same formulas, or ask your planning team to add the class as an item attribute.

#### The method and cut-offs

**Body:** ADI is total periods divided by periods with demand. CV2 is the squared ratio of the standard deviation to the mean of non-zero sizes. Using the Syntetos-Boylan cut-offs, ADI below 1.32 and CV2 below 0.49 is smooth, ADI below 1.32 with higher CV2 is erratic, ADI above 1.32 with CV2 below 0.49 is intermittent, and both high is lumpy.

**Bullets:**

- Smooth: SES, Holt, Holt-Winters
- Erratic: robust smoothing and larger safety stock
- Intermittent: Croston or SBA
- Lumpy: TSB, judgment, order-driven stocking

#### Worked example

**Body:** A part has demand in 12 of 36 months. ADI is 36 divided by 12, which is 3.0. Non-zero sizes have a mean of 8 and a standard deviation of 5, so CV is 0.625 and CV2 is about 0.39. ADI is above 1.32 and CV2 is below 0.49, so the item is intermittent. Croston or SBA is the right family, and ordinary monthly smoothing is not.

#### Common mistakes

**Body:** The most common error is computing the standard deviation over all periods including zeros, which mixes occurrence with size. Use only non-zero periods. Another is classifying on too short a history. With fewer than about 20 periods, a single order can flip the class. Reclassify each quarter, because items move between classes.

**Cta:** If you need this class stored on every item and refreshed from live demand history, Netray can build it on your ERP data and keep it current.

**Faq:**

#### What does ADI mean in forecasting?

**Answer:** ADI is the average demand interval: total periods divided by the number of periods with demand. A value of 1 means demand every period, and a value of 3 means demand roughly every third period.

#### What is CV2 and why squared?

**Answer:** CV2 is the squared coefficient of variation of the non-zero demand sizes. Squaring is how the published classification scheme defines its cut-off of 0.49, which corresponds to a coefficient of variation of 0.7.

#### Which forecast method suits lumpy demand?

**Answer:** Lumpy demand is hard for any statistical method. TSB, judgment based on known customers and contracts, and stocking policies based on service levels and order history usually work better than a point forecast.

#### How often should I reclassify items?

**Answer:** Quarterly is a sensible cycle. Reclassify sooner after a customer win or loss or a product change, because the occurrence pattern and order size can shift quickly.

## Search terms

ADI CV2 classification, syntetos boylan classification, intermittent demand calculator, average demand interval calculator, lumpy demand definition, smooth erratic intermittent lumpy, demand pattern classification, spare parts demand classification

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
