Omnichannel CPG: Square root before Addition

& what that means for safety stock

I had a discussion recently with an omnichannel brand selling via D2C, Amazon, wholesale, retail and other channels.

Now what can happen, is that there is an order from wholesale ‘we didn’t expect’.

Even though your wholesale partner might’ve given you a forecast, the order was still ‘way higher’ than forecasted.

How can we really solve this while not locking up too much cash and not rejecting wholesale or retail orders?

The obvious one is to improve forecast accuracy, but how do we deal with the rest of the ‘uncertainty’?

There are two more advanced solutions to this - one is by using the variance of demand.

Assign safety stock based on demand variance
→ Basically, ‘how does my demand fluctuate?’

And the other solution is

Assigning safety stock based on past forecast error
→ Basically, ‘how well have we forecasted in the past?’

The first one is simpler to implement BUT I’d recommend the second option.

Why?

Well - you might be able to forecast better and better the more alignment you have with other teams.

A seasonal product would give you a higher variance while you actually might be able to forecast it quite well. For example because the retail key account aligns well with the retailer thus can give better inputs for demand.

Another case: A marketing launch creates high variance of demand, but since you run your S&OP meetings quite well, you have integrated the launch spike during your S&OP meeting.

Important: You’d want to take the variance / forecast error per channel first. Otherwise you risk removing variance and error if you first add historic sales altogether.

‼️ sum(√x, √y) ≠ √(x+y) ‼️

Let’s say we sell one SKU via Retail & Wholesale and have the following sales history isolated on wholesale:

SKU on Wholesale

…and retail:

SKU on Retail

Now - what is obvious?

Obviously we want to forecast it as accurately as possible while buffering for spikes and uncertainty.

What would the summarized graph look like?

Sales Volume Aggregated

Here is where the danger begins. If you calculate safety stock ONLY at the aggregated layer, you will calculate with ‘less variance’ and assume more steady demand.

⚡️ This can cause a stockout for another wholesale order!

Main takeaway from today: If you tie safety stock to demand forecasting performance (which you should!) do it on a Channel<>SKU basis first.

Hint: This is totally time-consuming and inaccurate to do in a spreadsheet - Spherecast can help to do that automatically.

-Leon

P.S. You’ll find a deeper dive into safety stock calculation in Issue 3