Picking a Demand Forecast Method: Patterns, WMAPE and Bias
Most forecasting projects fail before the model runs. The demand pattern decides the method, and a naive baseline decides whether the model is worth keeping.
- Classify SKUs by demand interval and variability before modelling.
- Intermittent demand needs Croston or SBA, not exponential smoothing.
- Clean stockout days or the model learns your own gaps.
- Beat the naive baseline by five points or keep the baseline.
Classify demand before you model
The single biggest forecasting mistake is applying one method to the whole catalog. Split the catalog first, using two numbers per SKU computed on the last 52 weeks.
Average demand interval is the mean number of periods between two periods with any demand. Squared coefficient of variation measures how much demand size jumps around when it does occur. The standard cut points are an interval of 1.32 and a variation of 0.49, which give four buckets: smooth, erratic, intermittent and lumpy.
Run this on any real Indian multichannel catalog and the result is sobering. Typically only 15 to 25 percent of SKUs are smooth. The rest are erratic or intermittent, and a slice is genuinely lumpy. Those smooth SKUs usually carry 60 to 75 percent of units, which is exactly where forecasting effort belongs.
Match the method to the pattern
Once the buckets exist, the method choice is almost mechanical.
- Smooth: simple exponential smoothing, or Holt-Winters when weekly seasonality is real and repeats across two years.
- Erratic: same models at weekly grain, wider buffers, and no daily forecasting.
- Intermittent: Croston or the Syntetos-Boylan approximation, which forecast demand size and interval separately. Standard smoothing on intermittent data drifts to a small non-zero number that is wrong every single week.
- Lumpy: do not model these statistically. Plan them by exception against named accounts, known orders and a hard buffer.
- New SKUs: use an analog ramp from two or three comparable launches, replace with own history from week 10, and never extrapolate week one.
Complexity is not the win here. A correctly bucketed catalog on simple methods beats a single sophisticated model applied to everything.
Clean the history first
Model quality is capped by input quality, and Indian ecommerce history is dirty in four predictable ways.
Stockouts censor demand. If a SKU was unavailable for nine days last month, those zeros teach the model that customers stopped wanting it. Replace unavailable days with the trailing four week run rate. Event weeks distort the baseline. Great Indian Festival, Big Billion Days and Republic Day weeks should be stripped out and modelled as separate uplift factors, because letting a 6x sale week train the base level pollutes the next quarter. One-off institutional or B2B orders should be removed entirely. And decide once whether you forecast gross shipments or net of returns, then keep return provisioning as a separate calculation, because mixing the two hides both.
Score against a naive baseline
Use weighted mean absolute percentage error. Sum the absolute errors across SKUs, sum the actuals, then divide. Weighting by units, or better by contribution rupees, stops a hundred tail SKUs from drowning out the ten that fund the business.
Then compute the same metric for two naive forecasts: the trailing four week average, and the same week last year multiplied by growth. The difference is your forecast value add. If the model cannot beat both naive methods by at least five points of WMAPE, ship the naive number and put the saved effort into availability, which moves revenue faster than accuracy does.
Never report a single accuracy number without stating the grain. Accuracy at category and month looks impressive and tells a planner nothing. Buying decisions happen at SKU level, so that is where the metric has to live.
Treat bias as a separate problem
Bias is the sum of forecast minus actual, divided by the sum of actuals. It is a direction, not a magnitude, and it needs its own review.
A steady plus 8 percent bias at four turns adds roughly a week of extra cover across the catalog. On Rs 4 crore of average inventory that is about Rs 30 lakh of cash parked for no reason. Minus bias is worse in the short run because it shows up as lost sales and rank loss, which no report captures cleanly.
The causes are rarely statistical. Sales targets get pasted in as forecasts. Planners over-order after one painful stockout. Promotions that never ran stay in the plan. Track rolling 13 week bias by planner and by category, and fix the incentive rather than the smoothing parameter.
Pick a grain, then hold a weekly rhythm
Forecast at SKU, channel and week for operational planning. Roll up to SKU and month for purchase orders, since import lead times of 60 to 90 days make weekly precision meaningless at the buying stage. Do not forecast at SKU and day. Nothing in the supply chain can act on it.
The rhythm matters more than the model. Refresh every Monday. Publish an exception list of the top 30 SKUs by absolute unit error, not by percentage error, because percentages promote trivial SKUs. Log every manual override with a reason code and the name of the person making it. Review accuracy and bias monthly against the naive baseline.
Six months of that log becomes the most valuable forecasting asset a brand owns. It shows exactly where the model is weak, where judgement helped, and where judgement was just optimism.