Graves 1999 combined variability
Calculates safety stock by combining demand variability and lead time variability in a single formula, producing more accurate buffers than treating each source of uncertainty independently.
Stock Level Optimization
Stocklyst calculates safety stock, reorder points, and min/max levels using 6 research-backed formulas — including demand pattern classification, skewness correction, and perishable inventory caps. No manual thresholds. No guesswork.

Research components
6 formulas
Graves, Syntetos-Boylan, Cornish-Fisher, Nahmias
Demand patterns
4 classifications
Smooth, erratic, intermittent, lumpy
Branch scope
Per-branch
Automatic calculation at every location
Perishable handling
Shelf-life aware
Max levels capped to prevent expiry waste
Calculates safety stock by combining demand variability and lead time variability in a single formula, producing more accurate buffers than treating each source of uncertainty independently.
Classifies each item into Smooth, Erratic, Intermittent, or Lumpy demand patterns using ADI and CV² thresholds. Each pattern receives tailored safety factors and calculation parameters.
Adjusts the z-score for non-normal demand distributions using the Cornish-Fisher expansion. Prevents systematic over- or under-stocking when demand data is skewed.
Caps max stock levels for items with shelf life constraints so the oldest units can sell before expiry. Prevents waste from overstocking perishable goods.
Prevents the engine from lowering safety stock during stockout periods. Without this guard, zero sales during a stockout would reduce calculated demand, perpetuating the cycle.
Includes zero-demand periods in variability calculations instead of filtering them out. This gives a realistic picture of demand uncertainty for items with irregular ordering patterns.
The stock calculation engine runs automatically for every item at every branch, producing safety stock, reorder points, and min/max levels without manual input.
Settings
+2 more settings
Calculated Results
SS = Zcf × √(L × σD² + D² × σLT²)
Zcf = Z + (Z² − 1) × skewness / 6
Reorder Point = (Avg Daily × Lead Time) + SS
Max Level = RP + (Avg Daily × Order Days)
Settings
Calculated Results
Each store gets branch-specific reorder points based on its own demand pattern. A high-traffic downtown store and a slower suburban location get different min/max levels from the same engine.
Bakeries, grocers, and food distributors benefit from shelf-life-aware max caps that prevent overstocking items that expire before they sell. The Nahmias perishable cap keeps waste under control.
Items that sell in bursts — holiday decorations, spare parts, specialty supplies — are classified as Intermittent or Lumpy and receive adjusted safety factors instead of being treated like steady sellers.
As you add branches and SKUs, the engine scales automatically. No need to manually set thresholds for every new item — the formulas adapt to each item's demand history as data accumulates.
Stocklyst uses the Graves 1999 combined variability formula, which accounts for both demand variability and lead time variability simultaneously. The formula is SS = Z × sqrt(L × sigma_D^2 + D^2 × sigma_LT^2), where Z is the service-level z-score, L is lead time, sigma_D is demand standard deviation, D is average demand, and sigma_LT is lead time standard deviation.
The engine uses Syntetos-Boylan 2005 classification to categorize each item into one of four demand patterns: Smooth (regular, predictable), Erratic (variable quantity, regular timing), Intermittent (regular quantity, irregular timing), and Lumpy (variable quantity and timing). Each pattern receives tailored calculation parameters.
Items classified as Intermittent or Lumpy by the Syntetos-Boylan framework receive adjusted calculation parameters. The engine uses higher safety factors and modified demand averaging windows to account for the irregular ordering patterns typical of spare parts, seasonal items, and slow movers.
Standard safety stock formulas assume normally distributed demand, but real inventory data is often skewed. The Cornish-Fisher expansion adjusts the z-score to account for skewness: Z_cf = Z + (Z^2 - 1) × skewness / 6. This prevents over- or under-stocking when demand distributions are asymmetric.
For items with shelf life constraints, the engine applies Nahmias 1982/1994 perishable caps. Max stock levels are capped so that the oldest units can be sold before expiry, preventing waste from overstocking perishable goods. The cap is based on average daily demand multiplied by remaining shelf life.
Yes. The Nahmias anti-death-spiral guard prevents the engine from lowering safety stock during periods of zero or near-zero demand caused by stockouts. Without this guard, a stockout would reduce calculated demand averages, leading to even lower reorder points and perpetuating the stockout cycle.
Let research-backed formulas calculate your min/max, safety stock, and reorder points automatically — for every item, at every branch.
Create account