Safety stock is the inventory held above expected demand over the replenishment lead time, to absorb the variability in demand and supply. The classic formula sizes it as a safety factor times the standard deviation of demand over the lead time: SS = z · σDL, where z comes from the service target (about 1.65 for a 95% cycle-service level under a normal approximation) and σDL combines demand and lead-time variability. When lead time itself varies, the standard extension is σDL² = L · σD² + D² · σL². The derivations are in Silver, Pyke and Thomas.
Where the formula holds
The formula is a good approximation when demand is roughly normal, lead time is stable, the supplier delivers what was ordered, and one service target applies to the SKU. Many fast-moving lines at a distributor with a local supplier fit this description well enough. For them, a well-set safety stock is close to optimal and there is little to gain from anything more elaborate.
Where it breaks for distributors
Four things common in distribution and import break the formula's assumptions.
Suppliers that short-ship. If a supplier accepts an order for 100 and delivers 85 on average, the expected receipt is lower and its variance is higher than the order suggests. The formula has no term for fill rate; the effective lead-time demand it should protect against is larger.
Lead times with a tail. An import lane that usually takes three weeks but occasionally takes six has a lead-time distribution that is not symmetric. The σL term understates the tail; the right quantity to protect against is the lead time at the required quantile, not the standard deviation.
One SKU, several service commitments. A supermarket contract at 99% and a spot customer at 90% are two different protection problems on the same stock. A single safety factor either over-protects the spot customer or under-protects the contract. Protection has to be sized by the customers who will actually be served first when stock is short.
Alternatives and shared exposure. An approved second supplier or a transfer from another branch reduces the protection a SKU needs, but only if the alternative is genuinely independent. Two suppliers that ship through the same port are not two sources during a port closure.
What scenario-based optimization does instead
Instead of a closed-form buffer, a scenario-based optimizer draws many plausible futures for demand, fill and arrival dates, including deliberately adverse ones, and chooses the plan that meets each customer's service target across those futures at least cost. Protection is then an output, not a parameter. It is larger where the scenarios spread (a supplier whose observed lead times have widened) and smaller where they are tight (a short, reliable lane with a substitute on the shelf). A tail-risk constraint such as conditional value-at-risk, in the linear form due to Rockafellar and Uryasev, makes the worst share of scenarios count, not just their average.
A practical test
Ask the system to explain, per SKU, why it holds what it holds: "supply tail widened", "strategic customer at 99%", "shared port with the alternate", or "not needed: two independent sources within one week". If it cannot, it is a buffer factor with a nicer interface.