Eun-kyu Baek·

Plenty of Global Inventory, So Why Are You Still Stocking Out? — Inventory and Demand Forecasting in the Multi-Warehouse Era

On paper, yes. But at that very moment, this brand's dashboard was telling a completely different story.

global-inventory-stockouts-demand-forecasting image 1

"We have 46,000 units worldwide. Isn't that more than enough?"

On paper, yes. But at that very moment, this brand's dashboard was telling a completely different story.

Total global inventory:          46,200 units
Inventory usable for ads:        31.2% (Available basis)
Days of supply (DOS) by warehouse: ranging from 6 to 86 days

One overseas warehouse had 86 days' worth of a bestseller tied up, while another was on track to stock out in 6 days. In aggregate, inventory looked "sufficient," yet in reality overstock and stockouts were happening at the same time.

When you run only your own online store out of a single domestic warehouse, "on-hand vs. safety stock" is all you need. But the moment you add overseas nodes one by one, switch from air to ocean freight to cut shipping costs, and expand into more marketplace channels, the difficulty of inventory management grows not linearly but multiplicatively.

Drawing on a real consulting case with a D2C brand operating multiple warehouses worldwide, this article lays out a three-stage inventory and demand forecasting model that goes beyond the basic safety stock formula: ① ADI-based demand diagnosis, ② DDMRP-based NFP and buffer ordering, and ③ DAF dynamic adjustment.

If the safety stock, ROP and ABC analysis covered in our previous article, "For Brands That Know How Much Stock Is Left, but Not When to Reorder," are the fundamentals of inventory management, this piece is the advanced edition for when multiple warehouses, long lead times and volatile demand enter the picture.


Why the standard safety stock formula stops being enough

The safety stock formula (Z × σ × √lead time) rests on one implicit assumption: that demand is steady and relatively consistent. Once that assumption breaks, the formula's reliability collapses with it.

Typical situations where the assumption breaks down:

  • Products that don't sell every day. For an item that sells a few times a month, dozens of units at a time, the very notion of a "standard deviation of daily shipments" becomes distorted.

  • Products with big promotional spikes. A buffer calculated from everyday demand is wiped out by a single promotion.

  • Ocean freight with lead times measured in weeks. The longer the lead time, the larger the √lead time term, bloating safety stock, while a new variable, "inventory in transit," appears in between.

  • Multiple warehouses. Company-wide safety stock loses its meaning, and as soon as you split it by warehouse, a new problem opens up: "how much should go to which warehouse?"

There is another important observation: the inventory methodology you should reference depends on the physical nature of the product itself.

CategoryConsumables (e.g., cosmetics, food)Durables (e.g., electronics, devices)
Shelf lifeYes — pressure to sell throughNo — can be stored long-term
Unit price / turnoverLow price, high turnoverHigh price, low turnover
Demand patternMostly steady (Smooth)Mix of erratic and intermittent, large promotional spikes
Accessories / partsSmall shareMany intermittent-demand items such as nozzles, filters and adapters
ShippingHigh share of air freightWell suited to ocean freight — leverage pipeline buffers

When a brand selling durables simply borrows consumables benchmarks (inventory metrics that assume high turnover), its decisions go off course. In this case, too, there was almost no data from direct peers, so using inventory methodologies from consumer electronics (phones and tablets) as the reference turned out to be more accurate.

That's why the first step is not calculating orders but diagnosing what kind of demand each of your SKUs actually has.


Stage 1. Demand diagnosis — sort SKUs into four types with ADI × CV²

The Syntetos–Boylan classification, widely used in demand forecasting research, diagnoses SKU demand along two axes.

ADI  = observation period ÷ number of demand occurrences   → "How often does it sell?"
CV² = (std. dev. of demand quantity ÷ mean)²                → "Is the quantity consistent when it sells?"

Cut-offs: ADI 1.32 / CV² 0.49  (Syntetos, Boylan & Croston, 2005)

Plot these two axes as quadrants, and every SKU falls into one of four types.

TypeCharacteristicsStrategy
SmoothSteady and consistent — bestselling core productsThe only zone where the standard safety stock formula works well
ErraticSells often, but quantities swing widelyWeight the variability buffer — make the Red safety zone thicker
LumpySells rarely, but in large volumes — limited editions, gift setsRespond through promotion and seasonal planning (DAF) rather than statistical buffers
IntermittentSporadic, small quantities — accessories and partsExclude from the forecasting model and manage with separate simple rules

This classification matters for one reason: different types must not share the same formula. Apply a safety stock formula that fits Smooth SKUs to Lumpy SKUs, and you'll end up with overstock in normal times and stockouts during events. Conversely, feeding intermittent accessories into a sophisticated forecasting model only amplifies the noise; boldly excluding them improves accuracy.

You don't do this classification by hand

All you need to calculate ADI and CV² is a demand time series for each SKU, in other words the shipment history you have already accumulated. Laplace automatically calculates ADI and CV² for each SKU from expected receipts, actual receipts and purchase order (PO) data collected via RPA, and automatically tags each SKU with one of the four types. You can control the thresholds (1.32 / 0.49), the aggregation period (weekly/monthly) and manual overrides per SKU directly in the admin console: you start from the academic standard values and then tune them to your own brand's data.


Stage 2. Ordering model — decide by NFP, not on-hand inventory

In a multi-warehouse, long-lead-time environment, "on-hand inventory" is a poor basis for ordering decisions. Some of the stock in the warehouse is already committed to orders, and inventory that will arrive in a few weeks is floating at sea. That's why the DDMRP (Demand Driven MRP) methodology makes decisions using a composite metric called NFP (Net Flow Position).

NFP = On-Hand + On-Order − Qualified Demand

In plain terms: "what's in the warehouse now + what's on its way − what's already committed to go out." This NFP is then compared against each SKU's buffer zones to decide whether to place an order.

Green  ── NFP in this zone → no order needed (normal)
Yellow ── NFP in this zone → place an order (fill up to Top of Green)
Red    ── NFP in this zone → urgent action (expedite — switch to air, transfer stock, etc.)

Order quantity = Top of Green (TOG) − NFP

Here's what the actual decisions look like

A same-day snapshot of three SKUs with different demand types.

SKU (type)On-handOn-orderQualified demandNFPStatusOrder
SKU A (Smooth)1,1802,4009202,660🟢 Green—
SKU B (Lumpy)420300230490🟡 Yellow+390
SKU C (Erratic)310024070🔴 Red+570

Note this: judging by on-hand inventory alone, SKU B (420 units) looks more comfortable than SKU C (310 units), but once on-order stock and qualified demand are reflected in NFP, both need to be reordered, and C is in an urgent state. "How many units are in the warehouse?" and "What is our real position?" are different questions, and ordering decisions must be based on the latter.

The inputs that determine buffer size

The size of the Red, Yellow and Green zones isn't set arbitrarily. It is determined by three data inputs and one policy input.

Data inputs (collected and calculated automatically):

  1. Order type — Not all outbound shipments are the same. AI automatically classifies whether a shipment is Replenishment or an Order with an actual delivery deadline, and also tags it by region (domestic/global) and by B2B/B2C. Because Orders have an allowable delivery window, they feed directly into the stockout-prevention buffer, and users can reset the classification themselves in the admin console.

  2. Supply reliability — Quantifies how well each supplier keeps its promises.

Quantity fill rate = Σ actual received qty ÷ Σ expected qty
On-time rate       = on-time receipts ÷ total receipts
Supply reliability = quantity fill rate × on-time rate   (OTIF concept · 0–1)

A supplier with 0.9 reliability and one with 0.6 can't have the same safety zone (Red). The lower the reliability, the thicker the Red zone, and this adjustment happens automatically.

  1. Lead time — Measured from actual order → shipment → receipt history, broken down by leg (transport, customs, other). Legs without data start from industry-standard transit times, and estimates are replaced by measured values as history builds up.

Policy input (user-defined):

  1. Buffer profile — A variability factor (the greater the demand and supply variability, the larger the Red zone, differentiated by ADI type) and a lead-time factor (the longer the lead time, the larger the Green zone). Like the Z value in our previous article, this is not data but a management judgment about "which you fear more: the cost of a stockout or the cost of holding inventory", a dial each brand sets for itself.

Stage 3. DAF dynamic adjustment — buffers are not fixed values

The buffers described so far are based on historical data. The problem is that changes you already know are coming (promotions, seasons, new channel launches) don't exist in past data. DDMRP solves this with the DAF (Demand Adjustment Factor).

Adjusted ADU = baseline ADU (average daily usage) × DAF

E.g., apply a DAF of 1.8 to the promotion period
→ the buffer for that period temporarily rises 1.8x
→ working backward from the lead time, stock is secured in advance via ocean freight "before" the promotion

The key is the last line. For a brand whose lead time has stretched to several weeks after switching to ocean freight, preparing for a promotion shouldn't mean "scrambling for air freight at the last minute" but "growing the buffer weeks ahead and loading it onto a ship." DAF is the mechanism that lets the system do that backward calculation.

In the same vein, the status of pipeline (in-transit) inventory changes too. Switching from air to ocean cuts freight costs but lengthens lead times, so there is always inventory floating at sea. Treat it as "stock you don't have yet" and you'll over-order; treat it as "stock you already have" and you'll run short. The right answer is to reflect it accurately in the NFP calculation as On-Order. It is neither a free buffer nor something to ignore, but something to manage.


What it looks like on the dashboard — three operational views

No matter how sophisticated a model is, it won't be used in day-to-day operations without a screen people check every day. Here are the three views actually built in this case.

① DOS by warehouse — exposing the imbalance that "totals" hide

This is the screen from the opening of this article. Days of supply for the same bestselling SKU, by warehouse:

Hub warehouse (domestic):  22 days  → healthy (target: 14–45 days)
Overseas node A:           86 days  → overstock — cash tied up
Overseas node B:            6 days  → stockout imminent

The value of this view is that three decisions emerge simultaneously on a single screen: ① a sell-through campaign for the overstocked node, ② an urgent transfer from the hub to the node about to stock out, and ③ rebalancing each node's share of the next purchase order. Back when the team only looked at totals, none of these decisions were visible.

② Inventory status breakdown — Available / Committed / QC Hold

Breaking down the 46,200 units of total inventory by status:

StatusMeaningQuantityShare
AvailableInventory actually usable for ads and sales14,42031.2%
CommittedInventory tied to orders and inter-warehouse transfers24,88053.8%
QC HoldAwaiting inbound inspection6,90014.9%

Only 31% of total inventory could actually support ad spend. In particular, the 14.9% in QC Hold was twice the usual level (about 7%), and this view revealed a chain reaction in which an inbound inspection bottleneck at one node was deepening the stockout crisis at others. "We have inventory" and "we have usable inventory" are two different statements.

③ Stockout risk trend — connecting inventory data to ad operations

A risk score (0–100) combining sales velocity × available inventory × lead time is tracked at the warehouse × SKU level. When the risk score of a key SKU at one node shot up from 14 to 86 in just 7 days, the operations team executed three actions at once from a single screen.

  1. Cut that SKU's daily ad budget by 30% (ad pacing slows down when the risk threshold is exceeded)

  2. Urgent air transfer from the hub to that node

  3. Re-sort listings to prioritize Available inventory

This is where the model ultimately leads: inventory analysis doesn't end as a logistics team report; it is synchronized with execution (ads, transfers and orders) on the same screen. Ad spend burned on out-of-stock products simply evaporates, and in organizations where the inventory system and the ad system are separate, this waste is discovered after the fact every single time.


Wrap-up — summary by stage

StageQuestionMethodOutput
1. Demand diagnosisWhat kind of demand does this SKU have?Automatic ADI × CV² classification (Syntetos–Boylan)SKUs tagged into four types, forecasting scope defined
2. Ordering modelWhen and how much to order?NFP = OH + OO − QD, RGY buffer statusOrder timing and quantity per SKU
3. Dynamic adjustmentHow to account for promotions and seasons?Pre-apply ADU via DAF, including pipeline inventoryProactive buffer increase ahead of events
Operational viewsWhat to check every day?DOS by warehouse · status breakdown · stockout riskSynchronized execution of ads, transfers and orders

In one line: don't calculate without diagnosing (ADI), calculate (NFP) by position rather than on-hand stock, and execute on the same screen as your ads.


Applying this to your brand

This model doesn't run on any special data. Purchase orders (POs), expected receipts, actual receipts and shipment history: most of it is already sitting in your fulfillment provider's systems or WMS. Laplace automatically collects and standardizes this data via RPA and turns the diagnosis, calculations and views above into something you can actually operate.

Step 1. Automatically classify ADI and CV² from shipment history → start by checking what percentage of your SKUs are Smooth. If the Smooth share is low, this step explains why ordering based on the standard safety stock formula kept missing the mark.

Step 2. Clean up data on order types, supply reliability and measured lead times. Supply reliability in particular is a metric most brands have never quantified.

Step 3. Finalize the buffer profile (variability and lead-time factors) as policy, differentiated by ADI type

Step 4. Build NFP and RGY status checks into your weekly ordering routine, and link your promotion calendar via DAF

Step 5. Connect the DOS-by-warehouse, inventory status and stockout risk views to your ad operations

Multiple warehouses, overseas expansion, a switch to ocean freight: if even one of these applies to you, the "on-hand vs. safety stock" framework has most likely already hit its limits. If you're stocking out despite having plenty of inventory, the problem isn't the amount of inventory but the framework you use to read it.

Start by diagnosing your brand's demand types with Laplace.


Methodology references: The ADI and CV² thresholds (1.32/0.49) for demand pattern classification are based on Syntetos, Boylan & Croston (2005), "On the categorization of demand patterns," and the ordering model follows the NFP and buffer zone concepts of the DDMRP (Demand Driven MRP) methodology.