Skip to main content

Inventory metrics

Definition of the outputs that the AInventory optimizer computes per SKU. All values correspond to the most recent saved simulation for the selected SKU.

Structural relationship between indicators

SS ≤ ROP ≤ S

where SS = safety stock, ROP = reorder point, and S = target stock. The optimizer enforces this inequality at all times.

Indicator catalogue

Safety factor (k)

FieldValue
UnitDimensionless
Explored range0.1 – 5.0

The safety factor k is the "dial" that controls the inventory buffer. The optimizer searches for the value of k that minimises the expected total cost (holding + shortage).

S = μ(L+R) + k · σ

where μ(L+R) is the expected demand over the review window plus lead time, and σ is demand variability.

k rangeInterpretation
0.1 – 0.5Almost no buffer; high stockout risk
0.5 – 1.5Moderate buffer
1.5 – 3.0Ample buffer
3.0 – 5.0Very high buffer; risk of over-stock

Example: Expected demand over window = 400 u, variability = 50 u.

  • k = 1.8 → S = 400 + 1.8 × 50 = 490 u
  • k = 3.0 → S = 400 + 3.0 × 50 = 550 u
k = 0 in newsvendor or fixed-coverage policies

A reported k = 0 for a SKU under a newsvendor or fixed-coverage policy does not mean "no buffer": those policies do not use the k parameter. The safety stock in those cases is determined by a different mechanism.

Target stock (S)

FieldValue
UnitUnits
AliasOrder-up-to level, S
S = μ(L+R) + SS

The level to which inventory is replenished each time an order is placed. Computed as the expected demand over the window (lead time L + review period R) plus the safety stock.

Example: 3-month window with forecast [150, 160, 140] → μ(L+R) = 450 u. SS = 90 u → S = 540 u.

Safety stock (SS)

FieldValue
UnitUnits
AliasSafety inventory, buffer stock
SS = S − μ(L+R) ≈ k · σ

The safety stock is the inventory buffer that protects against demand variability during the lead time. It equals the difference between the target stock and expected demand over the window.

Example (continued): SS = 540 − 450 = 90 u.

Reorder point (ROP)

FieldValue
UnitUnits
ConstraintSS ≤ ROP ≤ S
ROP = SS + μL

where μL is the expected demand during the lead time. The ROP is bounded below by SS and above by S.

When on-hand inventory falls below the ROP, the system signals that replenishment is needed.

Example: SS = 90 u. Lead time = 2 months with forecast [150, 160]. μL = 310 u. ROP = 90 + 310 = 400 u. If current inventory = 380 u < 400 u → replenishment signal is triggered.

Service level — Expected fill rate

FieldValue
Unit%
Formula1 − (unserved units / total demand)

The fill rate is an output of the optimal policy found by the optimizer; it is not a user-set target. The optimizer minimises total cost (holding + shortage) and the resulting fill rate is the implied service level of that policy.

Example: Total simulated demand = 450 u. Unserved units = 18 u (partial stockout in some scenarios). Fill rate = 1 − 18/450 = 96 %. Averaged over 1,000 simulation scenarios ≈ 93.6 %.

Expected total cost

FieldValue
UnitCurrency ($ configured for the tenant)
ComponentsHolding + Shortage
C_total = C_holding + C_shortage

This is the objective function the optimizer minimises. It does not include order placement cost; the only constraint on order size is the MOQ.

Example: C_holding = $1,730. C_shortage = $2,500. Total cost = $4,230.

Holding cost

FieldValue
UnitCurrency
Formula(Σ ending inventory_t) × storage rate

The holding cost accumulates the ending inventory in each simulation period and multiplies by the storage rate (per unit-month).

Example: Ending inventories [periods 1–3] = 120, 80, 60 u. Rate = $1.50 / unit-month. Sum = 260 unit-months × $1.50 = $390.

Shortage cost

FieldValue
UnitCurrency
Formulaunserved units × penalty per unit

The shortage cost penalises each unit of demand that could not be served due to stockout.

Example: 20 unserved units × $25 / unit = $500.

Average inventory

FieldValue
UnitUnits
Formula(Σ ending inventory_t) / n_periods

Indicates the mean inventory level across the simulation horizon. Useful for estimating working capital committed.

Example: Ending inventories = [120, 80, 60]. Average inventory = (120 + 80 + 60) / 3 = 87 u.

Suggested replenishment (Q)

FieldValue
UnitUnits
ConstraintQ ≥ 0 (never negative)
Q = max(0, S − (on-hand inventory + in-transit inventory))

Quantity suggested to bring available inventory (on-hand + in-transit) up to the target stock. If available inventory already exceeds S, Q = 0.

Example: S = 540 u. On-hand = 300 u. In-transit = 50 u. Q = 540 − 350 = 190 u.

MOQ-adjusted Q

FieldValue
UnitUnits
Formula⌈Q / MOQ⌉ × MOQ

Rounds Q up to the nearest multiple of the MOQ (Minimum Order Quantity).

Example: Q = 190 u. MOQ = 50 u. ⌈190/50⌉ × 50 = 4 × 50 = 200 u.

Lead time (L)

FieldValue
UnitMonths (integer ≥ 1)
TypeInput parameter

The lead time is the replenishment time configured by the user for the SKU. The optimizer treats it as a fixed parameter; it is not optimised.

Average demand (fallback)

FieldValue
UnitUnits / month
FormulaAverage of the last 6 months of historical demand

Used as a demand estimate when no consensus forecast is available for the SKU. When a consensus forecast exists, this fallback is superseded.

Common interpretation errors

k = 0 does not always mean "no buffer"

See note in the Safety factor section.

Total cost does NOT include order placement cost

The optimizer minimises holding + shortage only. Order placement cost is not part of the objective function. MOQ is the only constraint on order size.