ABC-XYZ Inventory Analysis: A Step-by-Step Guide
A step-by-step ABC XYZ analysis guide for manufacturers: the nine-box matrix, thresholds, CV math, and the policy to run for each segment.
ABC-XYZ inventory analysis is a two-axis method that classifies every SKU by both its annual consumption value (ABC) and its demand variability (XYZ), then crosses the two into a nine-box grid. ABC tells you what's worth money; XYZ tells you what's predictable. The grid tells you, part by part, exactly how tightly to control it and how to forecast it. I ran this at a $250M furniture manufacturer, and it was the single highest-leverage planning exercise we did, because it turned "we have an inventory problem" into "we have a problem in these three boxes."
This guide walks the full method end to end: the data you pull, the thresholds that actually work, the math behind each axis, and the policy you attach to each of the nine segments.
What ABC and XYZ each measure
They answer two different questions, and you need both.
- ABC = value. A small slice of SKUs drives most of your annual consumption value. This is the Pareto principle applied to inventory, the same 80/20 pattern Vilfredo Pareto observed in 1896 when he found 80% of Italy's land sat with 20% of the population. Rank parts by annual usage in dollars, then split into A, B, C.
- XYZ = demand variability. How predictable is the pattern? X is steady. Z is erratic and ugly. The metric is the coefficient of variation (CV), which NIST defines as the standard deviation divided by the mean.
ABC alone leads you astray. A high-value A-item that's wildly erratic needs a completely different policy than a high-value steady item, even though plain ABC lumps them together. XYZ is the missing axis, and it's the one most mid-market planners skip.
Step 1 — Run the ABC classification
Pull 12 months of consumption per SKU. Multiply annual usage quantity by unit cost to get annual usage value. Sort descending, then compute the cumulative percentage of total value down the list.
Standard thresholds look like this:
| Class | Share of SKUs | Share of value |
|---|---|---|
| A | ~10–20% | ~70–80% |
| B | ~20–30% | ~15–20% |
| C | ~50–70% | ~5–10% |
Don't religiously force 80/15/5. Look at where the cumulative curve actually bends and cut there. In our furniture BOM, A-class was a few hundred SKUs out of several thousand, and it carried most of the tied-up cash. Those are the parts where a 1% holding improvement is real money, and where a stockout halts a line.
Why dollars, not units
Rank by usage value, never by quantity. A box of #8 wood screws moves in the thousands and barely registers in cash. A single upholstered seat frame moves slowly but ties up real working capital. McKinsey's work on the balance sheet is blunt about this: raw materials, WIP, and finished goods are usually the largest single use of working capital, and cash that should fund growth gets stuck on the shelf. Value-ranking is what surfaces that cash.
Step 2 — Run the XYZ classification
For each SKU, take monthly demand over the same 12 months. Compute the coefficient of variation:
CV = Standard Deviation of Demand ÷ Mean Demand
Then bucket each part:
| Class | CV range | Demand pattern | Forecastability |
|---|---|---|---|
| X | < 0.5 | Stable, low fluctuation | High — forecast tightly |
| Y | 0.5–1.0 | Trending or seasonal | Medium — model the pattern |
| Z | > 1.0 | Erratic, sporadic, lumpy | Low — buffer or make-to-order |
A CV of 0.2 means demand barely moves month to month, so you forecast it and trust the number. A CV of 1.5 means demand is all over the place; no forecast saves you, so you manage it with buffer stock or by not stocking it at all. The 0.5 and 1.0 cutoffs are conventions, not laws, so adjust them if your data clusters elsewhere.
The intermittent-demand trap
SKUs that sit at zero most months and spike occasionally will throw a high CV and land in Z. That placement is correct, but a naive forecast that averages all those zeros into a meaningless mean is not. These belong to a separate diagnostic axis: average inter-demand interval (ADI) alongside CV². Kostenko and Hyndman (2006) split demand into smooth, erratic, intermittent, and lumpy using roughly ADI 1.32 and CV² 0.49 as the dividing lines.
For genuinely intermittent parts, use intermittent-demand methods. The original is Croston's method (1972), which forecasts demand size and the interval between demands separately instead of smoothing one lumpy series. It carries a known upward bias, which the Syntetos–Boylan approximation (2005) corrects with a simple deflating factor. Our deep dive on forecasting intermittent demand for spare parts walks the math.
Step 3 — Build the nine-box matrix
Cross the two axes and every SKU lands in one of nine cells:
| X (steady) | Y (variable) | Z (erratic) | |
|---|---|---|---|
| A (high value) | AX | AY | AZ |
| B (mid value) | BX | BY | BZ |
| C (low value) | CX | CY | CZ |
This grid is the whole point. The top-left (AX) is the dream segment: high value, dead predictable, easy to squeeze. The top-right (AZ) is where you bleed: expensive parts with unpredictable demand, the hardest combination in your catalog. Most of your planning energy should aim at the top row.
Step 4 — Attach a policy to each box
Classification without policy is a colorful spreadsheet. Here's what to do with each segment.
- AX — high value, predictable. Tight automated replenishment, low safety stock, frequent small orders, high service level (98–99%). The math is reliable, so squeeze inventory hard. Prime JIT candidates.
- AY — high value, seasonal or trending. Forecast with seasonality and trend models. Hold moderate safety stock that flexes with the season. Review monthly.
- AZ — high value, erratic. The danger zone. Don't try to forecast your way out. Consider make-to-order, vendor-managed inventory, or a strategic buffer under tight management attention. Every dollar here is risk.
- BX / BY — mid value. Standard reorder-point policies. Automate the BX, model the BY, and don't over-engineer either.
- BZ — mid value, erratic. Modest buffer, periodic review, accept some stockouts. Not worth heavy forecasting effort.
- CX — low value, predictable. Bulk-buy, hold plenty, automate fully, review rarely. The labor to manage these tightly costs more than the inventory itself.
- CY / CZ — low value, variable or erratic. Min-max with generous buffers, or two-bin systems on the shop floor. These are the parts you should stop spending planning time on.
The pattern across the grid is simple: forecast effort goes up-and-left, buffer-and-ignore goes down-and-right. Don't run MRP gymnastics on a CZ washer. Don't run a two-bin system on an AX motor.
Set safety stock by segment, not by gut
Each box implies a different safety-stock posture. AX wants a thin, formula-driven buffer tied to a high service target; AZ wants a deliberate strategic buffer or none at all if you flip to make-to-order. The mechanics of turning a service-level target and demand variability into a number live in our guides on how to calculate safety stock and how to calculate reorder point. The segment decides the policy; those formulas decide the quantity.
What this actually fixes
Here's why the exercise earns its keep at a real manufacturer.
- It finds your stranded cash. Excess almost always concentrates in CZ and BZ, low-value erratic parts where someone over-bought "to be safe." Quantify it and you've found working capital to free up, which ties directly to the playbook in how to reduce excess and obsolete inventory.
- It stops the stockouts that hurt. AX and AY stockouts are the ones that halt a line or miss a customer ship. Segmenting lets you over-protect exactly those without over-protecting everything.
- It rations your team's attention. Planners can't tune 5,000 SKUs by hand. The matrix tells them the few hundred that deserve real thought and the thousands that should run on autopilot.
McKinsey frames the upside in cash terms: better demand signaling and tighter segmentation can cut slow-moving stock and release trapped working capital without hurting service. ABC-XYZ is the cheapest first step toward that, because it costs you a spreadsheet and a day, not a software project.
Run it on a cadence, not once
SKUs migrate across the grid. A new product climbs from C to A. A maturing one moves from Y to X as demand settles. A discontinued line drifts into Z. Re-run the full classification quarterly and you'll catch parts whose policy no longer fits before they turn into excess or a stockout.
The failure mode is doing this once in a consulting engagement, printing the matrix, and never refreshing it. Within two quarters it's stale. Push the calculation into your planning system so it recomputes automatically, and have your team review only the movers between boxes each quarter.
Where AI changes the picture
The classification itself is plain statistics, so don't over-buy tooling for it. Where machine learning earns its place is on the AY and AZ rows, where pattern-rich or lumpy demand is hard for a human or a moving average. McKinsey reports that AI-driven forecasting can cut supply-chain forecasting errors by 20 to 50 percent and reduce lost sales from unavailability by up to 65 percent. We map where it pays off in AI inventory optimization for mid-market manufacturers.
A worked example
Say a plant has 4,000 active SKUs. ABC puts ~600 in class A (most of the dollars), ~1,000 in B, ~2,400 in C. XYZ then splits each band by CV.
| Segment | Approx SKUs | Policy in one line |
|---|---|---|
| AX | 220 | Auto-replenish, 98% service, thin buffer |
| AY | 240 | Seasonal model, monthly review |
| AZ | 140 | Make-to-order or VMI, escalate |
| BX–BZ | 1,000 | Reorder points; automate X, model Y, buffer Z |
| CX–CZ | 2,400 | Min-max / two-bin, set and forget |
The leverage is obvious: 140 AZ parts get human attention, 2,400 C parts get none. That reallocation, not any single forecast, is the win.
Frequently asked questions
What is the difference between ABC and ABC-XYZ analysis?
ABC analysis ranks SKUs on a single axis: annual consumption value, splitting them into high (A), medium (B), and low (C). ABC-XYZ adds a second axis for demand variability, measured by the coefficient of variation, so each part also gets an X, Y, or Z. Crossing the two produces a nine-box grid that distinguishes, for example, a high-value predictable item (AX) from a high-value erratic one (AZ) that ABC alone would treat the same.
How do you calculate the coefficient of variation for XYZ analysis?
Take 12 months of demand for the SKU, compute the mean and the standard deviation of those monthly figures, then divide the standard deviation by the mean. NIST defines this ratio as the coefficient of variation. A CV below 0.5 is typically X (stable), 0.5 to 1.0 is Y (variable), and above 1.0 is Z (erratic), though you can shift the cutoffs to fit how your data clusters.
What are typical ABC and XYZ thresholds?
For ABC, A items are roughly 10–20% of SKUs carrying 70–80% of value, B items are ~20–30% of SKUs and ~15–20% of value, and C items are the long tail. For XYZ, the common cutoffs are CV below 0.5 for X, 0.5 to 1.0 for Y, and above 1.0 for Z. Treat all of these as starting points and cut where your own cumulative-value curve actually bends.
How often should you re-run an ABC-XYZ analysis?
Quarterly is the practical cadence for most mid-market manufacturers. SKUs migrate across the grid as products launch, mature, season, and get discontinued, so a once-a-year refresh leaves policies attached to parts that no longer fit them. Automate the recomputation in your planning system and review only the SKUs that changed boxes since the last run.
How should I handle intermittent or lumpy demand items?
Intermittent parts (zeros most months, occasional spikes) correctly land in the Z column, but don't forecast them by averaging zeros into a flat mean. Use intermittent-demand methods such as Croston's method (1972) or the bias-corrected Syntetos–Boylan approximation, which model demand size and demand interval separately. For diagnosing which parts qualify, the Kostenko–Hyndman (2006) categorization using inter-demand interval and squared CV is the cleaner rule.
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.