Skip to main content

Why Your Safety Stock Formula Breaks on Non-Normal Demand

Vishwajeet Kantale Updated May 30, 2026 2 min read

The standard safety stock formula is comforting because it looks rigorous. Plug in a service level, multiply by a standard deviation, get a number. The trouble is that the number rests on an assumption almost nobody checks: that demand over the lead time is normally distributed. For a large share of real SKUs, it is not, and when it is not, the formula under-stocks you in exactly the way that produces surprise stockouts.

What the formula assumes

The textbook reorder point is:

reorder_point = mean_demand_over_lead_time + z * sigma_LT
safety_stock = z * sigma_LT

The z term is a quantile of the normal distribution. Using it presumes demand over lead time is symmetric and bell-shaped. That assumption is doing enormous quiet work.

Where it breaks

A quick audit you can run

Before trusting z * sigma, check the demand distribution per SKU class:

# illustrative: compare the normal-implied buffer to the empirical quantile
import numpy as np

lt_demand = np.array(history_of_demand_over_lead_time) # one sample per lead-time window
z = 2.05 # ~98% normal quantile
normal_ss = z * lt_demand.std(ddof=1)

# empirical buffer to hit the same 98% coverage, no normality assumption
empirical_rp = np.quantile(lt_demand, 0.98)
empirical_ss = empirical_rp - lt_demand.mean()

print(normal_ss, empirical_ss)

If empirical_ss is much larger than normal_ss for your skewed or intermittent items, the formula has been lying to you, and you have been running thinner than your stated service level.

What to use instead

The honest takeaway

The normal safety stock formula is fine for fast, steady movers whose demand really is roughly bell-shaped. For everything else, validate the assumption before you trust the output. A buffer sized by the right distribution is the difference between a service level you actually hit and one you only claim. Treat the classic formula as a default to be checked, not a law, and let your demand forecast tell you which SKUs need the more careful treatment.


Implementing this at your scale?

The walkthrough above comes from production work. AvanSaber’s inventory practice has implemented variations of this pattern across multiple customer engagements.

If you are building this and want expert review of your design, or would rather have the team that built this build yours, book a discovery conversation or describe your situation at [email protected].

See our Implementation engagement model

Related reading