Articles

Which ABC class should get the highest service level?

ABC ranking shows where the money is, which is where safety stock is dearest, not where it does most good.

If the target is an overall fill rate in units, the cheapest way to reach it gives the highest cycle service level to the C items and the lowest to the A items, the reverse of the usual rule. On an illustrative 1,000-part range, setting A at 99, B at 95 and C at 90 per cent reaches a 99.82 per cent fill rate with 1,458,856 euros of safety stock; the cost-optimal mix of 96.1, 97.1 and 98.4 per cent reaches the same fill rate with 197,515 euros less, 13.5 per cent.

Worked in full in Supply Chain Management by Julian R. Sterling, with every figure reproduced in a free workbook.See the book on Amazon →

ABC classification ranks parts by annual consumption value: a few A items carry most of the money, a long tail of C items carries almost none. The classification is sound. The step that usually follows it, "A items are important, so give them the highest service level", is where the inventory goes.

The assumptions

An illustrative range of 1,000 parts in three classes. Each class is represented by one typical part. Lead time 4 weeks for all, continuous review, normally distributed weekly demand.
ClassPartsWeekly demandWeekly std devUnit cost, EUROrder quantityShare of valueShare of units
A1002006040.0080079.7%54.3%
B300402015.0032017.9%32.6%
C600865.001042.4%13.0%

Annual consumption is 52,208,000 euros and 1,913,600 units. The A class is 10 per cent of parts and 79.7 per cent of value. Order quantities cover 4, 8 and 13 weeks of demand, as is typical when ordering costs make cheap parts worth buying in larger batches.

The calculation, step by step

Step 1: safety stock and shortage per part

σL = weekly std dev × √lead time. A: 60 × 2 = 120; B: 40; C: 12.

Safety stock = z × σL, where z = NORM.S.INV(cycle service level)

Units short a year = (annual demand / order quantity) × σL × G(z), where G(z) = NORM.S.DIST(z,FALSE) − z × (1 − NORM.S.DIST(z,TRUE)) is the standard normal loss function.

Fill rate = 1 − total units short / total units demanded. The link between a cycle service level and a fill rate for one part is worked in how to convert a cycle service level into a fill rate.

Step 2: the condition for the cheapest mix

Raising z on a part costs σL × unit cost of stock and saves (annual demand / order quantity) × σL × (1 − CSL) units short. The σL cancels. The mix is cheapest when the saving per euro is equal across classes, which gives:

1 − CSLi = λ × unit costi × order quantityi / annual demandi

The stockout probability per cycle should be proportional to unit cost times the length of the order cycle. A: 40.00 × 4 weeks = 160; B: 120; C: 65. A parts should stock out 2.46 times as often as C parts. Solve for λ with Goal Seek so total units short meet the target.

Three policies. Safety stock values in euros.
PolicyCSL ACSL BCSL CSafety stockUnits short a yearFill rate
Blanket95.0%95.0%95.0%1,144,8185,49199.71%
A high, C low99.0%95.0%90.0%1,458,8563,52299.82%
Cost-optimal, same fill96.1%97.1%98.4%1,261,3423,52299.82%

The result

The A-high policy does improve service: units short fall from 5,491 to 3,522. It pays for that with 314,038 euros of extra safety stock, 27.4 per cent more than the blanket 95 per cent, or 62,808 euros a year at a 20 per cent holding rate, about 31.90 euros a year for each unit of shortage avoided. The cost-optimal mix buys the same improvement for 116,524 euros of extra stock, 11.84 euros a unit. The difference, 197,515 euros of stock and 39,503 euros a year of carrying cost, is what the intuitive rule costs.

The reason is in the condition. A safety stock unit on an A part costs 40.00 euros and protects a part that is reordered 13 times a year, so it is exposed to stockouts often but each unit of protection is dear. A safety stock unit on a C part costs 5.00 euros. Shortages on C parts are cheap to remove, so the cost-optimal policy removes them first, and C ends up with the highest service level. The A-high policy does the opposite: it cuts C to 90 per cent, which saves only 13,079 euros of C stock, and spends 327,117 euros on A to make up the units.

Differentiation alone saves little. At the blanket policy's own fill rate of 99.71 per cent, the cost-optimal levels are 94.2, 95.7 and 97.7 per cent and hold 1,135,303 euros, only 9,515 euros or 0.8 per cent less. A uniform service level is close to efficient. The large losses come from differentiating in the wrong direction.

What if the target is set differently?

The result depends on what is measured. If the business measures fill rate in units, as here, A parts dominate the denominator with 54.3 per cent of units, and the condition above applies. If it measures the share of parts in stock, every part counts equally and the 600 C parts carry 60 per cent of the weight, which pushes the optimum even further towards high C service. Only when A parts carry a genuinely higher cost per shortage, a line-stopping component or a contract penalty, does a higher A level pay, and then the shortage cost should be put into the calculation explicitly, as in how to calculate the optimal service level for a stocked part.

The common mistake

Setting service levels by consumption value because the ABC report sorts parts that way. Value ranking says where the money is, which is where safety stock is most expensive, not where it is most useful. Quoting the policy by its simple average is a second trap: 99, 95 and 90 per cent averages 92.4 per cent across the 1,000 parts, yet it delivers a higher unit fill rate than a blanket 95. Report the fill rate the policy produces, not the average of its settings.

Takeaway

Set each class's stockout probability in proportion to unit cost times order cycle, solve the multiplier to the fill rate you want, and check the result against a blanket level. Here the conventional 99, 95, 90 split holds 13.5 per cent more stock than it needs for its own fill rate. The service level table, the fill-rate solver and the holding rate behind these figures are in the free workbooks for this case.

Questions readers ask

Should A items have a higher service level than C items?

Not if the goal is an overall fill rate at the lowest stock. A safety stock unit on an illustrative A part costs 40.00 euros against 5.00 for a C part, so shortages on C parts are cheaper to remove. The cost-optimal levels for a 99.82 per cent fill rate are 96.1 per cent for A and 98.4 per cent for C. A higher A level pays only when an A shortage carries a higher cost, which should then be priced explicitly.

How much safety stock does ABC differentiation save?

Less than often claimed. In the illustration, moving from a blanket 95 per cent to the cost-optimal mix at the same 99.71 per cent fill rate saves 9,515 euros, 0.8 per cent of 1,144,818. The large saving is from avoiding the wrong split: the conventional 99, 95 and 90 per cent holds 197,515 euros more than the optimal mix for the same fill rate.

How do you calculate the fill rate of an ABC service level policy?

Compute expected units short for each part as cycles a year times the standard deviation of lead-time demand times the normal loss function G(z), add them up, and divide by total units demanded. On the illustrative range, 3,522 units short against 1,913,600 demanded is a 99.82 per cent fill rate. The simple average of the class service levels, 92.4 per cent for 99/95/90, says nothing about it.

Read the whole case

This article is one calculation from Supply Chain Management. The book takes the same case from first principles to the decision, chapter by chapter, and every figure it prints is a live formula in the free companion workbooks.

Get the book on Amazon →Free companion files

Also on Amazon UK · Amazon Germany · Amazon France · Amazon Canada

Also on this site

Reading guide: business operations: cost, contracts, pricing and supply chain → · All 1614 articles →

If this book helped, or didn’t, a few lines on Amazon are worth more than they look: they are what the next reader goes on. Write a review. The workbook stays free either way.