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.

"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.
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.
| Category | Consumables (e.g., cosmetics, food) | Durables (e.g., electronics, devices) |
|---|---|---|
| Shelf life | Yes — pressure to sell through | No — can be stored long-term |
| Unit price / turnover | Low price, high turnover | High price, low turnover |
| Demand pattern | Mostly steady (Smooth) | Mix of erratic and intermittent, large promotional spikes |
| Accessories / parts | Small share | Many intermittent-demand items such as nozzles, filters and adapters |
| Shipping | High share of air freight | Well 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.
Plot these two axes as quadrants, and every SKU falls into one of four types.
| Type | Characteristics | Strategy |
|---|---|---|
| Smooth | Steady and consistent — bestselling core products | The only zone where the standard safety stock formula works well |
| Erratic | Sells often, but quantities swing widely | Weight the variability buffer — make the Red safety zone thicker |
| Lumpy | Sells rarely, but in large volumes — limited editions, gift sets | Respond through promotion and seasonal planning (DAF) rather than statistical buffers |
| Intermittent | Sporadic, small quantities — accessories and parts | Exclude 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).
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.
Here's what the actual decisions look like
A same-day snapshot of three SKUs with different demand types.
| SKU (type) | On-hand | On-order | Qualified demand | NFP | Status | Order |
|---|---|---|---|---|---|---|
| SKU A (Smooth) | 1,180 | 2,400 | 920 | 2,660 | 🟢 Green | — |
| SKU B (Lumpy) | 420 | 300 | 230 | 490 | 🟡 Yellow | +390 |
| SKU C (Erratic) | 310 | 0 | 240 | 70 | 🔴 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):
-
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.
-
Supply reliability — Quantifies how well each supplier keeps its promises.
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.
- 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):
- 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).
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:
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:
| Status | Meaning | Quantity | Share |
|---|---|---|---|
| Available | Inventory actually usable for ads and sales | 14,420 | 31.2% |
| Committed | Inventory tied to orders and inter-warehouse transfers | 24,880 | 53.8% |
| QC Hold | Awaiting inbound inspection | 6,900 | 14.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.
-
Cut that SKU's daily ad budget by 30% (ad pacing slows down when the risk threshold is exceeded)
-
Urgent air transfer from the hub to that node
-
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
| Stage | Question | Method | Output |
|---|---|---|---|
| 1. Demand diagnosis | What kind of demand does this SKU have? | Automatic ADI × CV² classification (Syntetos–Boylan) | SKUs tagged into four types, forecasting scope defined |
| 2. Ordering model | When and how much to order? | NFP = OH + OO − QD, RGY buffer status | Order timing and quantity per SKU |
| 3. Dynamic adjustment | How to account for promotions and seasons? | Pre-apply ADU via DAF, including pipeline inventory | Proactive buffer increase ahead of events |
| Operational views | What to check every day? | DOS by warehouse · status breakdown · stockout risk | Synchronized 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.