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)
| Field | Value |
|---|---|
| Unit | Dimensionless |
| Explored range | 0.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 range | Interpretation |
|---|---|
| 0.1 – 0.5 | Almost no buffer; high stockout risk |
| 0.5 – 1.5 | Moderate buffer |
| 1.5 – 3.0 | Ample buffer |
| 3.0 – 5.0 | Very 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
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)
| Field | Value |
|---|---|
| Unit | Units |
| Alias | Order-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)
| Field | Value |
|---|---|
| Unit | Units |
| Alias | Safety 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)
| Field | Value |
|---|---|
| Unit | Units |
| Constraint | SS ≤ 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
| Field | Value |
|---|---|
| Unit | % |
| Formula | 1 − (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
| Field | Value |
|---|---|
| Unit | Currency ($ configured for the tenant) |
| Components | Holding + 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
| Field | Value |
|---|---|
| Unit | Currency |
| 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
| Field | Value |
|---|---|
| Unit | Currency |
| Formula | unserved 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
| Field | Value |
|---|---|
| Unit | Units |
| 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)
| Field | Value |
|---|---|
| Unit | Units |
| Constraint | Q ≥ 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
| Field | Value |
|---|---|
| Unit | Units |
| 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)
| Field | Value |
|---|---|
| Unit | Months (integer ≥ 1) |
| Type | Input 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)
| Field | Value |
|---|---|
| Unit | Units / month |
| Formula | Average 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
See note in the Safety factor section.
The optimizer minimises holding + shortage only. Order placement cost is not part of the objective function. MOQ is the only constraint on order size.