Demand Foresight
Hierarchical Bayesian-прогноз с reconciliation (промежуточные суммы должны сходиться) + causal-effect estimation для промо («что было бы без promo») и weather (lift от температуры). Не просто time-series — а causal time-series с честными confidence intervals.
Стандартный forecasting на SKU-day-store уровне даёт 100K+ независимых прогнозов, которые не сходятся в aggregates (sum-over-SKU ≠ store-level). Стандартные causal-claims на promo основаны на correlation. Demand Foresight делает hierarchical Bayesian model с reconciliation + causal-effects через DoWhy/EconML. На pilot FMCG сократили overstock на 23%.
Causal promo-lift с CI — конец «всем понравится наше промо»
Стандартный analytic: «промо подняло продажи на 35%». Но они же могли подняться и без промо (праздник, сезон, погода). Causal-estimation через DoWhy показывает: «net causal effect промо = +18% [95% CI: 12-24%]». Это значит: 17% подъёма было бы и так. CFO видит реальный ROI промо, маркетинг — какие промо стоят повторения.
Пошаговая архитектура
Данные продаж + контекст
Daily sales per SKU-store + promo history + price changes + weather (OpenWeatherMap) + holidays + supplier-out-of-stock events.
Hierarchical structure
Bottom: SKU × store × day. Up: aggregations по category, brand, region, total. Hierarchical model в PyMC учитывает связи между уровнями.
Baseline forecast
Bayesian state-space model: trend + seasonality (weekly + yearly) + holidays. Output — prior без promo/weather effects.
Causal effect estimation (DoWhy)
Per-promo: estimate counterfactual «что было бы без promo» через do-calculus. Учитывает confounders (price, day-of-week, weather). Output — promo-lift с CI.
Weather coupling
Causal effect температуры на категории (мороженое, прохладительные напитки, отопление). Pre-computed model + realtime weather → дополнительный adjustment.
MinT reconciliation
Прогнозы на разных уровнях не сходятся механически. MinT (Minimum Trace) reconciliation корректирует так, чтобы суммы сходились, при этом минимизируя реальную ошибку.
Recommendations engine
На основе прогнозов: «закажите на следующую неделю X units», «risk overstock на промо Y», «out-of-stock vulnerable SKU». С приоритизацией по revenue/margin impact.
Стек, который не запирает
PyMC для Bayesian state-space models
Prophet для baseline (быстрый, robust на messy data)
M5-competition-winners (LightGBM-based) как ансамбль
DoWhy для causal effects estimation
EconML для uplift-modeling (promo response heterogeneity)
ClickHouse для миллионных историй продаж (per SKU-store-day)
Идеально для
- FMCG-производители (планирование производства + дистрибуции)
- Retail-сети (заказы у поставщиков, run-out prevention)
- E-com маркетплейсы (inventory planning, dynamic pricing)
- Food-delivery (готовка-под-заказ vs прогноз)
Границы кейса
- Не отвечает за supply-side (нехватка у поставщика — это другой контур)
- Не делает pricing-optimization (только forecast — pricing требует elasticity-modeling)
- Не работает с категориями без 12+ месяцев history (new product launches — отдельный кейс)
- Не предсказывает черные лебеди — pandemic, supply chain disasters — это outliers
Частые вопросы
Минимум 18 месяцев SKU-store-day. 36+ месяцев — оптимально. Меньше — нет надёжной seasonality estimation.
Что ещё может пригодиться
Покажем на ваших данных
за 1-2 недели
Подключаемся к ограниченной выборке, разворачиваем PoC на ваших реальных кейсах. Оценка качества, точности и UX — на вашей специфике, не на наших красивых демо.