Factori/Insights/Inventory & replenishment
Inventory & replenishment

Safety stock: the textbook formula against optimization

The z-score formula is fine when demand is normal and lead times are fixed. Neither is true in most warehouses. Here is where it goes wrong and what replaces it.

The formula everyone learns

Safety stock equals a service-level factor, multiplied by the standard deviation of demand, multiplied by the square root of lead time. It is elegant, it fits on a slide, and it is baked into most ERP systems. It also assumes demand is normally distributed, lead time is constant, the service level is the same for every item, and the forecast error is the same as demand variability. In a real warehouse, all four assumptions are wrong at once.

Four ways it breaks

Demand is not normal

Intermittent items have a spike of zeros and a long right tail. A normal distribution fitted to that history puts safety stock where demand rarely goes and leaves the tail uncovered. The formula over-stocks the middle and under-serves the spike.

Lead time varies more than demand

For many imported items, the week-to-week variation in supplier lead time contributes more to stock-outs than variation in demand. The basic formula ignores it. The extended version adds a lead-time variance term, but it still assumes the two are independent, and they are not: the same disruption that delays a shipment often shifts demand.

One service level for everything

Setting ninety-five percent across the catalogue means the same protection for a critical component and a discontinued colour variant. The capital tied up in the long tail at ninety-five percent is usually where a third of the working capital sits.

It is set once and forgotten

Parameters get reviewed in an annual workshop. Demand and lead-time behaviour changes monthly. By the time the workshop happens, the policy has been wrong for most of the year.

What optimization does differently

Instead of a formula per item, optimization asks one question across the catalogue: given a working-capital budget, or a fill-rate target, which stock levels minimise the other? It uses the forecast’s actual error distribution, not an assumed one. It uses the observed lead-time distribution per supplier. It lets service level vary by item class, so critical items get more protection and the long tail gets less. And it re-solves whenever the inputs change.

The output is still a reorder point and a quantity per SKU-location, written back to the same ERP fields. The difference is how they were chosen.

What the numbers tend to show

When a policy-based baseline is set against current stock, the pattern is consistent: capital is parked on items where it buys no service, and a smaller set of items is under-protected. Rebalancing typically releases twenty to thirty-five percent of stock value at the same fill rate. The release comes from the tail. The fill-rate improvement comes from the head.

When the formula is still fine

  • Fast-moving items with steady demand and a reliable domestic supplier. The assumptions roughly hold.
  • Very small catalogues where a planner can review every item monthly by hand.
  • As a sanity check on an optimizer’s output. If the two disagree by a factor of three on a smooth item, look at the data.

How to move

  • Measure the gap first: current stock against a policy baseline, by item class. That is the business case.
  • Run the new policies in shadow for a cycle and compare recommended orders with what planners actually did.
  • Switch item classes one at a time, starting where the gap is largest and the risk is lowest.
  • Keep the service-level dial in your team’s hands. The optimizer sets stock for the target you choose; choosing the target is a business decision.
Related service
Inventory & replenishment
Learn more →
More insights

Keep reading