Руководства

Как MySales формирует прогноз

Подробный обзор движка прогнозирования спроса MySales — охватывает иерархический подход, этапы подготовки данных, анализ влияющих факторов и специальные алгоритмы для новых позиций и расширения дистрибуции.

🔑 Ключевые выводы
  • MySales формирует прогнозы на шести иерархических уровнях — от всей сети до отдельных комбинаций SKU-магазин, обрабатывая терабайты данных для крупных ритейлеров.
  • Движок автоматически очищает историю продаж, выделяет влияющие факторы (цена, акции, погода, макроэкономические показатели) и выбирает наилучшую модель без ручного вмешательства.
  • Специализированные алгоритмы обрабатывают новые позиции и расширение дистрибуции, обеспечивая точные прогнозы даже при ограниченных или отсутствующих исторических данных.
  • Встроенный расчёт страхового запаса, краткосрочные корректировки прогноза и моделирование промо-подъёма формируют полный, готовый к заказу результат в рамках одного запуска пайплайна.

Обзор

MySales построен на математически строгом движке прогнозирования, прошедшем проверку на сотнях миллионов комбинаций SKU-магазин. Он формирует стабильные, высококачественные прогнозы спроса для каждой позиции в каждом магазине — полностью автоматизированно и в масштабе.

Движок работает на шести иерархических уровнях, продвигаясь от наиболее агрегированного представления к наиболее детальному:

Уровень Охват
Товарная категория — вся сеть Наиболее широкий сигнал спроса
Товарная категория — регион Региональные тренды по категории
Товарная категория — магазин Паттерны категории на уровне магазина
SKU — вся сеть Спрос на позицию по всей сети
SKU — регион Поведение позиции в регионе
SKU — магазин Наиболее детальная единица прогноза

Эта иерархическая структура принципиально важна. Когда движок не может определить надёжную зависимость на детальном уровне (например, ценовую эластичность для одного SKU в одном магазине), он обращается к более высоким уровням иерархии, где доступно больше данных. Результатом является прогноз, одновременно детальный и статистически обоснованный.

📈 Масштаб на практике

Сеть из 100 магазинов и 10 000 SKU образует миллион комбинаций SKU-магазин. Умножьте это на 3–4 года ежедневной истории — и один перерасчёт прогноза обрабатывает гигабайты данных для небольших сетей и терабайты для крупных. MySales справляется с этим благодаря параллельной упаковке данных в нескольких потоках обработки.


Этап 1: Загрузка и подготовка данных

Пайплайн прогнозирования начинается с загрузки всех релевантных данных из системы управления базами данных и хранилища файлов MySales (оптимизационный слой, снижающий нагрузку на базу данных при больших объёмах данных).

Источники данных включают:

  • Историю продаж, цены, скидки, уровни запасов и данные чеков
  • Иерархию товаров и мастер-данные позиций
  • Географическую иерархию и мастер-данные магазинов
  • Внешние источники: погода, макроэкономические показатели и цены конкурентов

Для новых магазинов или новых SKU система дополняет недостающую историю с помощью магазинов-аналогов или позиций-аналогов. При наличии фактических данных о продажах им всегда отдаётся приоритет; данные аналогов используются только для периодов, по которым информация о новом объекте отсутствует.

После загрузки данные группируются в пакеты обработки и распределяются между несколькими параллельными потоками (как правило, от 3 до 9) для параллельного расчёта.


Этап 2: Очистка продаж и выделение базового уровня

Прежде чем движок сможет рассчитать тренд и сезонность, ему необходимо отделить реальные паттерны спроса от шума, вносимого изменениями цен, скидками, акциями и дефицитом товара.

Первичная очистка продаж устраняет влияние этих факторов из исторических данных. Вместо того чтобы полностью отбрасывать затронутые периоды, MySales выделяет и количественно оценивает влияние каждого фактора. Это позволяет сохранить как можно больше истории продаж — что критически важно в розничной среде, где частая ротация ассортимента оставляет мало незатронутых периодов.

Периоды со значительными упущенными продажами, вызванными дефицитом товара или недостаточными запасами, исключаются на каждом этапе анализа.

📈 Работа с ограниченной историей

Этот подход к очистке позволяет надёжно оценивать тренд и сезонность даже при наличии истории продаж всего за один год. При наличии пробелов движок заполняет их данными с более высоких уровней иерархии прогнозирования.

Расчёт сезонности использует оба метода одновременно:

Метод Когда применяется
Мультипликативная сезонность (сезонный индекс) Сезонная волатильность масштабируется вместе с общим трендом
Аддитивная сезонность Сезонные колебания остаются постоянными независимо от тренда

Система автоматически выбирает метод, наилучшим образом подходящий для каждой комбинации. На уровне товарной группы она также рассчитывает сезонность средней цены группы, улавливая тенденцию совпадения сезонных пиков спроса с более высокими средними ценами.

Расчёт тренда следует далее. После устранения влияния цены, скидки, акции и сезонности движок рассчитывает общий тренд роста или снижения продаж, а также среднее и медианное значения продаж из очищенных данных.


Этап 3: Анализ влияющих факторов и выбор модели

Установив чистый базовый уровень, движок переходит к количественной оценке того, как каждый внешний фактор влияет на спрос.

Анализ зависимостей оценивает связь между продажами и каждым влияющим фактором: ценой, скидкой, погодой, макроэкономическими показателями (например, обменными курсами), эффектами каннибализации и другими. При оценке каждого фактора система избирательно устраняет влияние более доминирующих факторов (например, акций и сезонности), чтобы выделить истинный эффект.

При анализе ценовой зависимости система также оценивает тренды инфляции или дефляции для очистки исторических цен от номинальных искажений.

📖 Дифференциация сезонных факторов

Ряд факторов анализируется раздельно для низкого, среднего и высокого сезонов. Например, ценовая эластичность для мороженого существенно различается зимой и летом. Движок автоматически улавливает эти различия, формируя сезонно-специфические коэффициенты вместо смешанных годовых средних.

Затем движок формирует две матрицы:

  1. Историческая матрица предикторов — наблюдаемые значения всех влияющих факторов за исторический период, включая производные метрики, такие как соотношение текущей цены к средней цене за предыдущие периоды.
  2. Будущая матрица предикторов — прогнозируемые значения каждого фактора с использованием дифференцированного подхода: простые средние или медианы для одних факторов, прогнозные значения для других, и данные, введённые пользователем (планы ассортимента, будущие цены, акционные календари), там, где они доступны.

Коэффициенты корреляции рассчитываются из этих матриц, и движок автоматически формирует модели-кандидаты из факторов, демонстрирующих значимое влияние на продажи.

Тестирование и выбор модели следует далее. Движок оценивает как автоматически сгенерированные, так и преднастроенные модели по исторической точности продаж. В процессе оценки исключаются периоды с недостаточными запасами и высокоэффективными акциями. Выбирается модель с наилучшей исторической точностью.


Этап 4: Формирование и уточнение прогноза

После выбора наилучшей модели движок генерирует прогноз на будущие периоды. Затем серия процедур уточнения обеспечивает стабильность и надёжность.

Уточнения после генерации включают:

  • Расчёт минимальных значений продаж для предотвращения нереалистично низких прогнозов
  • Анализ автокорреляции ошибок модели, используемый для корректировки прогноза на ближайшие недели
  • Расчёт предиктора AutoMult, который (в зависимости от конфигурации) корректирует прогноз на следующие 6 недель на основе соотношения среднего прогноза к средним фактическим продажам за последние 3 недели

Промо-подъём рассчитывается следующим шагом. Движок применяет коэффициенты подъёма, сгенерированные набором нейронных сетей, или использует данные из сопоставимых исторических акций там, где они идентифицированы. Подъёмы адаптируются к индивидуальным характеристикам каждой комбинации SKU-магазин, с применением минимальных и максимальных лимитов для обеспечения стабильных результатов для позиций с ограниченной акционной историей.

После расчёта промо-подъёма движок выполняет ребалансировку модели по всем влияющим факторам. Этот шаг необходим, поскольку ценовые и акционные эффекты часто тесно коррелированы, и ребалансировка обеспечивает внутреннюю согласованность совокупного промо-прогноза.

📖 Межмагазинный контроль промо-прогноза

Дополнительная функция контролирует распределение промо-прогноза по магазинам. Если промо-прогноз любого магазина отклоняется более чем на +/-30% (настраиваемо) от среднего по группе, система корректирует его в пределах допустимого диапазона. Это предотвращает ненадёжные прогнозы для магазинов с ограниченной историей, где ценовая эластичность и другие зависимости не могут быть определены с достаточной достоверностью.


Этап 5: Страховой запас, краткосрочные корректировки и итоговые результаты

По завершении основного прогноза движок рассчитывает операционные показатели, необходимые для пополнения запасов.

Страховой запас рассчитывается как стандартное отклонение ошибки прогноза относительно исторических продаж. Для учёта сезонной вариации волатильности спроса прогноз делится на три диапазона (высокий, средний и низкий сезон), и страховой запас рассчитывается отдельно для каждого.

Краткосрочная корректировка прогноза уточняет следующие 2 недели (настраиваемо) с использованием средних дневных продаж за последние 7–14 дней периодов наличия товара. Система загружает данные продаж за последние 28 дней, определяет дни доступности товара и рассчитывает средние дневные продажи раздельно для акционных и неакционных периодов. Сезонные пики исключаются, а средние значения корректируются с учётом сезонности, цены, погоды и других факторов. Результат отображается как предиктор ежедневной корректировки.

Дополнительные итоговые результаты:

Результат Назначение
Корректировка мастер-прогноза Включает введённые пользователем ручные поправки
Ценовые рекомендации Определяет оптимальные ценовые точки для выручки или маржи
Оценка исторического экономического эффекта Количественно оценивает потенциальный прирост от увеличения продаж, выявляет упущенные продажи из-за неизвестных факторов и оценивает потенциальное снижение запасов

Специальные алгоритмы

MySales включает специально разработанные алгоритмы для двух сценариев, где стандартные подходы к прогнозированию не справляются.

Новые позиции без назначенных аналогов. Когда новая позиция появляется в ассортименте без назначенного аналога, движок использует продажи средней позиции в товарной группе. Он корректирует этот базовый уровень на ценовую эластичность группы с учётом конкретной цены новой позиции и применяет дополнительные ограничения для обеспечения стабильных, точных результатов.

Расширение дистрибуции. Когда позиция расширяется с части магазинов на более широкую географию, движок формирует прогнозы для магазинов без предшествующей истории продаж.

📖 Расширение дистрибуции в действии

Рассмотрим позицию, ранее продававшуюся в 10 из 30 магазинов региона. На основании высоких показателей менеджер по категории вводит её во все 30 магазинов. Для 20 новых магазинов движок использует динамику продаж на уровнях SKU-регион, товарная группа-регион и товарная группа-магазин для формирования прогноза при отсутствии истории продаж на уровне магазина.

Полный набор влияющих факторов, используемых системой, определяется пользователем и может быть настроен в соответствии со спецификой данных и бизнес-требованиями каждого ритейлера.


Что это означает для вашего бизнеса

Движок прогнозирования MySales разработан для устранения ручного труда и угадывания, характерных для традиционного планирования спроса. Каждый этап пайплайна — от очистки данных до выбора модели и расчёта промо-подъёма — работает автоматически и адаптируется к специфике каждой комбинации SKU-магазин.

Для крупных ритейлеров это обеспечивает три конкретных результата. Во-первых, точность прогноза улучшается, поскольку движок оценивает каждый значимый драйвер спроса и выбирает наилучшую модель из сотен кандидатов — то, что ни одна аналитическая команда не может воспроизвести вручную в масштабе. Во-вторых, операционная эффективность повышается, поскольку весь пайплайн, включая страховой запас и краткосрочные корректировки, работает в режиме «от начала до конца» без участия человека. В-третьих, нестандартные случаи обрабатываются системно: запуск новых продуктов, расширение дистрибуции и позиции с ограниченной историей — все они получают специально разработанную алгоритмическую обработку, а не ситуативные решения.

Результат — фундамент прогнозирования, масштабируемый вместе с вашим бизнесом: от сотен SKU до сотен тысяч — без пропорционального роста численности плановиков или сложности процессов.

Готовы написать свою историю успеха?

Позвольте нам показать, как MySales Labs может обеспечить такие же результаты для вашей сети.