Планирование закупок и запасов «по среднему за прошлый месяц» оборачивается двумя одновременными убытками: замороженный капитал в неликвидах и упущенная выручка из-за out-of-stock. Прогноз спроса на исторических данных переводит закупку из реактивного режима в предиктивный. Ниже — открытый обзор того, что реально делается на Python в производстве и дистрибуции. Это не кейс KT.Team, а разбор публичных open-source инструментов со ссылками на первоисточники.
Что считается результатом
Бизнес-результат измеряется не точностью модели, а деньгами в обороте. Nixtla формулирует зависимость прямо: рост точности прогноза на 10–20% даёт около 5% снижения складских издержек и 2–3% роста выручки (nixtla.io). Логика простая: точнее прогноз на горизонте поставки — меньше страховой запас при той же доступности товара, меньше списаний, меньше срочных дозаказов по повышенной цене. Поэтому пайплайн строят не вокруг «лучшей нейросети», а вокруг управляемого, воспроизводимого прогноза по тысячам SKU, который ложится в формулу точки заказа.
Главная особенность данных в дистрибуции — прерывистый спрос
В рознице сквозного спроса прогнозируется тренд и сезонность. В дистрибуции и на складах запчастей картина другая: прерывистый спрос (intermittent demand) — нерегулярные продажи с частыми нулевыми периодами. Это типично для запчастей, спецтоваров, B2B-номенклатуры (nixtla.io). Классические ARIMA и Prophet на таких рядах работают плохо: они «размазывают» спрос и систематически завышают запас.
Для этого класса задач есть зрелые статистические методы — и их не нужно изобретать. Метод Кростона (Croston) и его варианты Croston SBA, а также TSB, ADIDA, IMAPA специально разделяют оценку размера спроса и интервала между продажами. Это пример подхода «читай, прежде чем писать»: вместо самодельной эвристики берётся проверенный международный стандарт прогнозирования.
Инструмент: open-source библиотека statsforecast
Nixtla statsforecast — открытая библиотека (лицензия Apache-2.0) для статистического прогнозирования временных рядов. В ней из коробки есть и автоматические модели (AutoARIMA, AutoETS, AutoCES, AutoTheta, TBATS), и весь набор для прерывистого спроса: Croston Classic, Croston Optimized, Croston SBA, ADIDA, IMAPA, TSB (github.com/Nixtla/statsforecast).
Ключевое для производства — масштаб и скорость. Библиотека заявляет обработку 1 000 000 рядов за 30 минут и прогон 10 эталонных моделей на миллионе рядов менее чем за 5 минут, а также «500x быстрее Prophet» и «20x быстрее pmdarima» (github.com/Nixtla/statsforecast). На практике это значит: ночной пересчёт прогноза по всему ассортименту реально укладывается в окно перед формированием заказов поставщикам.
Как выглядит дата-пайплайн
Публичный пример end-to-end сборки — solution accelerator от Databricks Industry Solutions «intermittent-forecasting». Он строит прогноз на гранулярном уровне store-item, где данные содержат множество нулевых периодов, которые стандартные модели не тянут (github.com/databricks-industry-solutions/intermittent-forecasting). Пайплайн разбит на три воспроизводимых этапа: конфигурация, подготовка данных, обучение и генерация прогнозов store-item, оркеструемые как multi-step job.
Обобщённо повторяемый Python-пайплайн выглядит так:
1. Сбор истории отгрузок/продаж из ERP/учётной системы в таблицу `unique_id, ds, y` (товар, дата, объём).
2. Очистка: восстановление нулевых периодов (нет продажи — это `0`, а не пропуск), отсечение promo-выбросов, фиксация дефицитных периодов (out-of-stock искажает «истинный» спрос).
3. Выбор семейства моделей по профилю ряда: гладкий спрос — AutoETS/AutoARIMA, прерывистый — Croston SBA/TSB/ADIDA.
4. Кросс-валидация на исторических срезах (`cross_validation`), отбор по MAE/RMSSE на горизонте поставки.
5. Генерация прогноза с интервалами и передача их в расчёт точки заказа и страхового запаса.
Что важно архитектурно
Прогноз — не монолит внутри ERP. Грамотная схема выносит расчёт в отдельный сервис рядом с учётной системой: ядро ERP/WMS не модифицируется, а пайплайн на Python работает «сбоку», читает историю и возвращает рекомендации по закупке. Это даёт слабую связанность и отчуждаемость: модель можно переобучать, заменять и передавать между командами без переписывания основной системы. Сами модели — международные стандарты прогнозирования, а не закрытая самописная логика, что упрощает аудит и доверие к цифрам у планировщика.
Отдельно стоит держать честную метрику. Точность ради точности бессмысленна: модель оценивают по бизнес-эффекту — снижению замороженного капитала и уровню сервиса (доступность товара), а не по красоте графика. Поэтому в пайплайн с самого начала закладывают бэктест на исторических данных, который показывает, сколько запасов и недопоставок дал бы тот или иной метод.
Вывод для бизнес-процесса
Меняется сам процесс закупки. Вместо ежемесячного ручного пересчёта по «среднему» планировщик получает автоматический ночной прогноз по всему ассортименту с разделением гладкого и прерывистого спроса, доверительными интервалами и рекомендованной точкой заказа. Решение человека смещается с «посчитать» на «утвердить исключения». На зрелых open-source инструментах (statsforecast, accelerator Databricks) такой пайплайн собирается небольшой командой и окупается снижением неликвидов и сокращением out-of-stock — то есть деньгами в обороте, а не строчкой в отчёте о точности.