Inventory Optimization Calculations
Inventory Optimization uses demand, supply, segmentation, and service-level data to calculate item-location planning values. This topic explains the inputs and formulas used in those calculations.
For segmentation metrics and category calculations, see Inventory Segmentation Calculation Process.
This topic covers the following:
Calculation Inputs
The calculation uses average daily demand and daily demand standard deviation from demand history.
For nonseasonal items, demand uses the Order Analysis Interval. For seasonal items, demand uses the corresponding prior-year period defined by the Seasonal Analysis Interval. Estimated Demand Change scales both Average Daily Demand and Daily Demand Standard Deviation.
Supply Analysis Interval doesn't affect demand inputs.
The calculation uses average lead time and lead-time standard deviation from inbound supply history.
Demand inputs use the following Inventory Management preferences:
-
Order Analysis Interval
-
Seasonal Analysis Interval
-
Estimated Demand Change
-
Transactions to Consider
The transaction types included depend on Transactions to Consider preference:
-
Orders includes sales orders, standalone invoices and cash sales, outbound transfer orders, and work-order component demand. Special-order and closed sales orders are included. Pending Approval, Cancelled, and drop-ship sales orders are excluded.
-
Actual Sales includes transformed and standalone invoices and cash sales, transfer-order fulfillments, assembly-build components, work-order issues, and work-order completion components.
For sales orders and outbound transfer orders, NetSuite uses Supply Required By Date. If it's blank, NetSuite uses Expected Ship Date, then Date if Expected Ship Date is also blank.
For work orders, NetSuite uses Supply Required By Date. If it's blank, NetSuite uses Production Start Date, then Date if Production Start Date is also blank.
All other qualifying demand transactions use Date.
Pending Approval, Rejected, or Void invoices are excluded. Void cash sales and cash sales on payment hold are excluded.
For Orders, Pending Approval, Rejected, or Void transfer orders are excluded. Pending Approval, Cancelled, or Void work orders are also excluded.
For Actual Sales, Picked, Packed, or Shipped transfer-order fulfillments are included regardless of the transfer-order status.
Lead-time inputs use inbound supply history over the Supply Analysis Interval. The start date is included in the supply analysis period. Inbound supply history includes the following:
-
Purchase orders in Pending Billing, Billed, or Closed status
-
Received transfer orders
-
Built or closed assembly work orders
Purchase-order and transfer-order lead time ends at full receipt. Work-order lead time ends on Actual Production End Date. NetSuite requires at least three qualifying lead-time values and excludes negative lead times.
Demand and lead-time inputs are calculated by item-location.
When no demand history exists, NetSuite sets Average Daily Demand and Demand Standard Deviation to zero. Planning values are zero, and NetSuite logs a warning.
NetSuite uses the following inputs to calculate planning values:
|
Input |
Description |
|---|---|
|
Average Daily Demand |
Average item demand for the item-location.
The analysis period includes both the start date and end date. The number of calendar days varies by month. For a one-month Order Analysis Interval, June 7 through July 7 includes 31 days. May 7 through June 7 includes 32 days. |
|
Daily Demand Standard Deviation |
Variation in daily demand for the item-location.
Days without demand are included with a value of zero. |
|
Average Lead Time |
Average lead time from inbound supply history for the item-location.
|
|
Lead-Time Standard Deviation |
Variation in lead time for the item-location.
|
|
Lead-Time Demand Standard Deviation |
Variation of the lead-time period demand, considering the combined effect of Daily Demand Standard Deviation and Lead-Time Standard Deviation for the item-location.
|
|
z-score |
Standard-normal value derived from the service level and used in the safety stock calculation. |
|
Preferred Stock Level Days |
Item record value used in the preferred stock level calculation. This value applies to all locations for the item. |
Service Level
The service level comes from the item record or Item Location Configuration record, depending on the Calculate Inventory Segmentation per Location preference. Segmentation assigns the segment's service level unless an override is set.
NetSuite converts the service level to a z-score for safety stock calculation. For example:
|
Service Level |
Approximate z-score |
|---|---|
|
50% |
0.00 |
|
90% |
1.28 |
|
95% |
1.65 |
|
98% |
2.05 |
|
99% |
2.33 |
|
99.99% |
3.72 |
Higher service levels generally produce higher safety stock.
Safety Stock Level
Lead-time period demand standard deviation uses this formula:
Lead-Time Period Demand Standard Deviation = sqrt((Average Lead Time * Daily Demand Standard Deviation^2) + (Average Daily Demand^2 * Lead-Time Standard Deviation^2))
Safety stock uses this formula:
Safety Stock Level = Lead-Time Period Demand Standard Deviation * z-score
NetSuite rounds the calculated Safety Stock Level up to the next whole number. Reorder Point and Preferred Stock Level use the rounded Safety Stock Level.
This calculation assumes demand during lead time follows a normal distribution. Results can be approximate when demand is intermittent, promotional, strongly seasonal, or skewed.
Reorder Point
Reorder point uses this formula:
Reorder Point = Safety Stock Level + (Average Lead Time * Average Daily Demand)
NetSuite rounds the calculated Reorder Point up to the next whole number.
Preferred Stock Level
Preferred stock level uses this formula:
Preferred Stock Level = Safety Stock Level + (Preferred Stock Level Days * Average Daily Demand)
NetSuite rounds the calculated Preferred Stock Level up to the next whole number. The Preferred Stock Level Days value comes from the item record.
Set Preferred Stock Level Days greater than Average Lead Time. A value at or below Average Lead Time can make Preferred Stock Level less than or equal to Reorder Point.
NetSuite logs a warning when Preferred Stock Level is less than or equal to Reorder Point.
Projected Results
Inventory Optimization stores projected results for each item-location and calculation run, based on the inputs stored for that run.
Projected results don't describe actual transaction results. The following table describes each stored projected result.
The Inventory Optimization Results Dataset stores Safety Stock Level as Safety Stock.
|
Field |
Description and Calculation |
|---|---|
|
Low Risk Average Inventory Level |
Estimates average inventory when Safety Stock isn't consumed.
|
|
High Risk Average Inventory Level |
Estimates average inventory when Safety Stock is fully consumed.
|
|
Unit Cost |
Stores the current item-location Average Cost per base unit, in the subsidiary currency. |
|
Expected Units Short |
Estimates shortage quantity per replenishment cycle. The calculation uses the final rounded Reorder Point.
Phi is the standard normal cumulative distribution function. phi is the standard normal probability density function. |
|
Expected Quantity Fill Rate |
Estimates the percentage of units filled during a replenishment cycle under the calculated policy. This value differs from Service Level.
|
|
Expected Average Inventory Value |
Estimates the monetary value of projected average inventory using Unit Cost from the same calculation run. The average inventory level is an intermediate calculation and isn't stored as a dataset field.
|
|
Expected Units Short Value |
Estimates the monetary value of the projected shortage quantity.
|
|
Expected Inventory Turnover |
Estimates projected turnover from planning results stored for the same calculation run.
|
Service Level Diagnostics
Service level diagnostics compare previous and optimized Safety Stock using the current run's Lead Time Demand Standard Deviation. The result's Service Level is the target.
Service level diagnostics describe mathematical planning projections and don't represent Expected Quantity Fill Rate or achieved customer service.
The following table describes the stored and derived diagnostic fields. In these formulas, normalCDF is the standard normal cumulative distribution function.
|
Field |
Type |
Description and Calculation |
|---|---|---|
|
Demand Source |
Stored |
Identifies ORDERS or ACTUALS as the run's demand source. This field can't be blank. Legacy results whose Demand Source was blank are populated with ORDERS during migration. |
|
Previous Safety Stock |
Stored |
Copies Safety Stock from the latest prior result for the same item-location. The selected prior result can be inactive. |
|
Previous Projected Service Level |
Stored |
Projects Service Level for Previous Safety Stock using the current run's variability.
|
|
Optimized Projected Service Level |
Stored |
Projects Service Level for optimized Safety Stock using the current run's variability.
|
|
Projected Service Level Delta |
Derived |
|
|
Distance From Target Before |
Derived |
|
|
Distance From Target After |
Derived |
|
Zero and Missing Input Values
Numeric zero is valid and isn't treated as missing. The following table describes how zero, missing, or insufficient inputs affect calculations.
|
Condition |
Result |
|---|---|
|
Demand or lead-time standard deviation is zero |
NetSuite uses zero as a valid input. When Lead Time Demand Standard Deviation is zero, NetSuite uses this calculation:
Each applicable projected Service Level is 100%. |
|
Average lead time is zero |
NetSuite continues the planning calculations and logs a warning. |
|
Average daily demand is zero |
Safety Stock Level, Reorder Point, and Preferred Stock Level are zero. NetSuite logs a warning. Expected Units Short and both average inventory levels are zero. Expected Quantity Fill Rate is blank. |
|
Expected order quantity is zero or negative |
Expected Quantity Fill Rate is blank. |
|
Expected Units Short exceeds Expected Order Quantity |
Expected Quantity Fill Rate is blank. |
|
Fewer than three qualifying lead-time values exist |
Average Lead Time and Lead-Time Standard Deviation aren't calculated. NetSuite doesn't calculate Safety Stock Level, Reorder Point, or Preferred Stock Level and logs a warning. |
|
Service level is missing |
Processing fails for the item-location. |
|
Preferred Stock Level Days is zero |
Preferred Stock Level equals Safety Stock Level. |
|
Preferred Stock Level Days is missing |
NetSuite calculates Safety Stock Level and Reorder Point. NetSuite doesn't calculate Preferred Stock Level and logs a warning. The following are blank:
|
|
Average Cost is missing |
Unit Cost, Expected Average Inventory Value, Expected Units Short Value, and Expected Inventory Turnover are blank. |
|
Expected Average Inventory Value is zero or negative |
Expected Inventory Turnover is blank. |
|
No prior result exists |
Previous Safety Stock, Previous Projected Service Level, Projected Service Level Delta, and Distance From Target Before are blank. Optimized Projected Service Level and Distance From Target After can still calculate when their inputs are available. |
|
No item-location has complete demand and lead-time statistics after Inventory Optimization Initialization. |
NetSuite doesn't start the Inventory Optimization Calculation process. |
Related Topics
- Inventory Optimization
- Calculating Inventory Levels
- Inventory Level Calculation Process
- Calculating Item Demand
- Advanced Inventory Management FAQ
- Calculating Inventory Segmentation
- Inventory Optimization Segments
- Including Items in Inventory Optimization
- Inventory Optimization Results Dataset
- Inventory Optimization Results Workbook