Pooled demand model with quantile forecasts
One gradient boosted model trained across many products and stores at once, using promotions, price, and calendar features, that outputs demand quantiles for the products where the baseline forecast is weakest.
Supporting approachTechnique: Supervised Learning
The pooled demand model supports the baseline forecast where the baseline is measurably weak.
Instead of one model per product and store, it trains a single gradient boosted model on all of them, with lagged corrected demand, promotion, price, calendar, product, and store features, so a promotion on one product teaches it something about promotions on similar ones.
Pooled models of this kind won the largest public retail forecasting competition, which used several years of daily product and store sales from a major chain.
It produces quantiles rather than a single number, so the reorder points can order up to the quantity that meets the planner’s service level target directly.
Deploy it category by category, only where a backtest against the stockout-corrected baseline shows it is better, and keep the baseline running everywhere else.
It is the wrong choice for a retailer whose promotion and price history is incomplete, since the features it most depends on would be missing or wrong, and the baseline plus planner judgement will do better.
Strengths for this problem
- Learns the effect of promotions, price changes, and display placements from every product that has had one, so a product with few promotions of its own still gets a reasonable lift.
- Borrows strength across similar products and stores, which helps slow sellers and new products with short histories.
- Outputs quantiles directly, so order quantities can be set from the service level target instead of a point forecast with an assumed buffer.
Limitations for this problem
- Costs far more to build, monitor, and explain than the baseline, and often does not beat it on dense, stable products.
- Depends on a promotion and price calendar that is complete and consistent, which many retailers do not have.
- A single model across the range can fail silently on one category while overall error looks fine.
Data needed
- Stockout-corrected units sold per product, store, and day or week.
- Promotion calendar: promotion type, depth of discount, display placement, and flyer feature per product and store.
- Regular and actual selling price, and price changes.
- Product hierarchy attributes and store cluster attributes.
- Holiday, event, and store closure calendar.
How it is measured
- Scaled error and bias against the stockout-corrected baseline on the same backtest periods, per category rather than overall.
- Quantile loss at the quantile the service level target uses, since that is the number orders are placed on.
- Promotion sell-through and post-promotion leftover stock, compared with the baseline plus planner overrides.
Pitfalls
- Replacing the baseline everywhere because the pooled model wins on average, when it loses on many dense categories.
- Training on raw sales, so the model learns that promoted products sell out at a lower level than they really would.
- Leaking future information into features, such as using the final promotion outcome when only the plan was known at order time.
- Shipping it without a per-category comparison planners can see, so they keep overriding it and nobody can tell which was right.
Human oversight
The planner chooses, per category, whether the pooled model or the baseline feeds the reorder points, based on a backtest they can see. Promotion and launch forecasts remain planner decisions, informed by the model's quantiles, and overrides are logged.