Заказывают столько же, сколько в прошлый раз
Закупщик помнит свои позиции и своих поставщиков, но не весь ассортимент. На хвосте решение принимается по последнему заказу, а не по динамике продаж.
Прогнозирование спроса и закупок — это расчёт того, сколько и когда заказывать, по истории продаж, остатков, цен и акций из 1С (и с маркетплейсов, если вы на них торгуете). Результат — рекомендация закупщику: прогноз по позиции или группе, страховой запас и черновик заказа поставщику в 1С. Заказ не уходит сам: решение остаётся за человеком. Сначала строим простую базовую модель, и любая сложная обязана обыграть её на периоде, который не видела; если не обыгрывает, остаётся простая. Работаем в вашем контуре, цены по ступеням открыты.
Обследование — от 200 000 ₽, 2–3 неделиРекомендация закупщику, а не автозаказИсходники и доступы остаются у вас
Закупщик помнит свои позиции и своих поставщиков, но не весь ассортимент. На хвосте решение принимается по последнему заказу, а не по динамике продаж.
По одним позициям пусто и продажи теряются, по другим склад заморожен деньгами. Общий остаток может выглядеть нормально, а его структура нет.
Что пик будет, знают все. Когда и насколько вырастут заказы, считают на глаз, и длинная поставка приезжает уже после пика.
Запас на промо рассчитан по ощущениям, а после акции спрос проседает. Эффект акции нигде не записан, и в следующий раз опереться не на что.
Прогнозировать нечего, и объём первой партии назначается наугад. Похожие позиции в ассортименте есть, но их никто не искал.
Файл ведёт один человек, формулы никто не проверял, а насколько он ошибается, не измерено. Уйдёт автор — уйдёт и метод.
Прогноз не лучше данных, из которых он считается. Названия документов и регистров зависят от конфигурации и версии 1С, поэтому таблицу заполняем под вашу базу и проверяем на её копии. Подготовку данных к проекту подробно разбирает материал «Как подготовить данные для ИИ-пилота».
Прогнозировать нужно спрос, то есть сколько покупатели хотели купить, а в учёте лежат продажи, то есть сколько удалось продать. Эти величины совпадают, пока товар есть, цена обычная и покупатели ведут себя как всегда. Любое отклонение превращает историю в неверный учебный материал: модель выучит искажение как закономерность.
Товара не было неделю, продаж ноль. Если обучить модель на такой истории, она решит, что спрос упал, и в следующий раз закажет меньше. Дефицит начинает воспроизводить сам себя. Поэтому для каждой позиции нужна история остатков по дням: дни без остатка помечаются и либо исключаются из обучения, либо спрос в них восстанавливается по соседним периодам и похожим позициям. Какой способ выбрать, решает проверка на отложенном периоде, а не вкус исполнителя.
Во время акции продажи растут, после неё часто проседают: покупатели забрали запас впрок. Если акции нигде не записаны, прогноз выучит всплеск как обычный сезон. Если записаны, акция становится признаком, и её эффект можно оценить отдельно. Но если акции всегда проходили в один и тот же сезон, эффект акции и эффект сезона неразличимы, и честно сказать об этом лучше, чем показать красивую цифру.
Спрос покупателей — это продажи минус возвраты, но возврат приходит позже продажи, иногда через недели. На маркетплейсах добавляются отмены и невыкупленные заказы. Определение «что такое спрос» (заказ, отгрузка или выкуп) записывается в словарь данных до начала расчётов, иначе два отчёта по одной позиции покажут разные цифры.
Тендер, проект, закупка к открытию объекта: один заказ превышает обычные продажи за месяц. Автоматически вырезать такой заказ нельзя: если он повторяется каждый квартал, это часть спроса. Правило такое: повторяющийся заказ остаётся в истории, разовый помечается и считается отдельно, а известные заранее крупные поставки вносятся строкой плана, а не прячутся в статистику.
Берём самый простой метод, который проходит проверку на ваших данных. Сложный выбираем, только если он обыгрывает простой на периоде, который не видел при настройке.
Ассортимент неоднороден, и один метод на все позиции не работает. Делим его по двум осям: ABC по вкладу в выручку или маржу, XYZ по стабильности спроса (насколько продажи колеблются вокруг среднего). Границы классов подбираем под ваш ассортимент, универсальных значений нет.
Холодный старт решается не моделью, а аналогами. Ищем в ассортименте похожие позиции по группе, цене и назначению, берём их стартовую динамику как ориентир и показываем закупщику с пометкой «оценка по аналогам». Закупщик может задать свой ориентир, система его запоминает, а по мере накопления продаж подключает собственную историю позиции. Первые недели после запуска не равны обычному спросу: всплеск новизны отделяют от базового уровня.
Если товар заменили новым артикулом, история должна перейти к преемнику: иначе у новой позиции «нет истории», а у старой «спрос упал до нуля». Обратная ситуация: когда одной позиции нет в наличии, часть спроса уходит к соседней, и у соседа история завышена. Цепочки замены и группы взаимозаменяемых позиций ведутся в справочнике, а не угадываются.
Если ваш случай из этого списка, мы скажем об этом на обследовании и не станем предлагать продолжение ради продолжения.
Прежде чем рекомендации попадут к закупщику, метод сравнивается с простым на данных, которых он не видел. Порог приёмки записывается в протокол до расчётов, а не после.
Учимся на прошлом, проверяем на следующем периоде и сдвигаем границу несколько раз. Случайное перемешивание записей даёт красивые цифры: соседние дни похожи и подсказывают ответ.
Закупке нужен спрос за срок поставки плюс интервал между заказами, а не завтрашний день. Ошибку считаем на этом горизонте, суммируя прогноз за весь срок.
Сумма абсолютных ошибок относительно суммы продаж: крупные позиции весят больше. Считаем по сегментам, иначе ходовые позиции скроют провал на хвосте.
Знак ошибки: система систематически завышает или занижает. Небольшая средняя ошибка при постоянном смещении означает «вечно заказываем больше» или «вечно не хватает».
Каждая метрика стоит рядом с метрикой наивного прогноза и сглаживания. Сложная модель принимается, только если выигрыш устойчив на нескольких сдвигах проверки.
Прокручиваем правило заказа на истории: сколько было бы дней без остатка и сколько запаса лежало бы лишним. Оценка приблизительна, потому что история дефицита неполна, и мы это оговариваем.
Прогноз отвечает на вопрос «сколько продадим». Закупка отвечает на другой: «сколько и когда заказать, чтобы не остаться без товара и не заморозить лишнее». Между ними две ступени, и считаются они отдельно от прогноза.
Это запас на разброс: спрос оказался выше прогноза, а поставка пришла позже срока. Размер зависит от трёх вещей: насколько прогноз ошибается за срок поставки, насколько колеблется сам срок и какой уровень сервиса вы хотите получить. Чем длиннее и нестабильнее поставка, тем запас больше. Простая формула работает при допущениях (ошибки независимы, примерно нормальны, прогноз несмещён), поэтому для ходовых позиций мы измеряем ошибку прямо на сумме за срок поставки, а для редких пользуемся распределением спроса по истории и правилом минимального остатка, который задаёте вы. Подробно, с допущениями и примером, расчёт разобран в статье «Как прогнозировать спрос на складе».
Не путайте его с запасом-буфером при выгрузке остатков на площадку из статьи про расхождения остатков: тот закрывает задержку обмена, а страховой запас закупки закрывает разброс спроса и поставки.
Система не заказывает и не проводит документы. Она готовит расчёт и показывает его основание, решение остаётся за человеком, а в 1С попадает черновик.
У каждой рекомендации хранятся версия данных, метод, параметры и дата расчёта. Любую цифру можно пересчитать и объяснить закупщику.
Прогноз сравнивается с фактом по мере поступления продаж: ошибка, смещение, число позиций, где сложная модель проигрывает простой. Падение качества видно раньше, чем его заметят на складе.
Если на свежих данных сложная модель проигрывает базовой, позиция или группа возвращается к простому методу, а закупщика предупреждают.
Ручная правка записывается с причиной. Потом сравниваем, чьё число оказалось ближе к факту. Правки по известным событиям полезны, правки «на всякий случай» видны по смещению.
Рекомендации, выходящие за порог по сумме, сроку годности или вместимости, не идут в черновик молча, а попадают в список на ручное решение.
Данные не покидают ваш сервер. Языковая модель для прогноза по таблицам не нужна, видеокарта, как правило, тоже.
Цены — по тарифам. Точная цена только у обследования, дальше вилка, которая сужается по результатам. Остановиться можно после любой ступени.
Источники данных, история остатков, срок поставки по факту, закупочные условия, ограничения, текущий порядок принятия решений. На выходе карта процесса, требования, план по этапам и вилка бюджета. Один-два процесса, например одна товарная группа или один склад. Вычитается из следующего этапа; подробнее про обследование и дорожную карту.
Если в расчёте участвуют 1С, несколько складов, маркетплейсы и складская система: матрица источников истины, схема обменов, договорённость о том, что считать спросом и остатком.
Простые методы и, если они обыграны, модель на одной товарной группе или одном складе. Проверка по времени, отчёт и рекомендации закупщику в параллельном режиме, протокол испытаний со сравнением с базой.
Несколько складов и каналов, страховой запас, ограничения закупки, черновик заказа поставщику в 1С, пересчёт по расписанию, журнал правок закупщика и регламент эксплуатации.
Опытная эксплуатация на остальных группах и складах, приёмочные испытания, мониторинг качества, обучение закупщиков, передача исходников. Этапы по 300 000 – 700 000 ₽ со своей приёмкой; подробнее про вывод пилота в продуктив.
Контроль качества прогноза, разбор расхождений, плановый пересмотр сегментов и модели, доработки при обновлении 1С. Пакеты 20 000 / 60 000 / 120 000 ₽ в месяц; работы сверх пакета — 5 000 ₽ в час.
Смотрим выгрузки продаж, остатков и поступлений, фактический срок поставки, закупочные условия. Разговариваем с закупщиком: как решение принимается сейчас. Оцениваем, какие данные есть и в каком они состоянии. Записываем словарь данных (что считаем спросом и остатком), сегменты и критерий приёмки пилота.
Прогоняем методы по сегментам с проверкой по времени, считаем взвешенную ошибку и смещение, сравниваем с базой. Если сложная модель не обыгрывает простую, говорим об этом и остаёмся на простой.
Рекомендации приходят закупщику рядом с его собственным решением: он заказывает как обычно, мы сравниваем. Журнал правок, еженедельный разбор расхождений, уточнение ограничений закупки.
По протоколу решаем: расширять на другие группы и склады, включать возврат черновиков в 1С, дорабатывать или остановиться (как принимается такое решение). Исходники и протокол остаются у вас; сопровождение у нас, у другого подрядчика или своими силами.
Подготовка данных, сегментация ABC/XYZ, базовые методы, проверка по времени, страховой запас и переход от прогноза к закупке.
Семь причин расхождения остатков и порядок их проверки: без верных остатков не получится и восстановить историю дефицита.
Что проверить за неделю до старта: где лежат данные, права доступа, качество, объём и эталонная выборка.
Сорок минут созвона: какая у вас 1С, сколько позиций и складов, как сейчас считаются закупки и что с дефицитом и излишками. По итогам скажем, нужна ли здесь модель и с какой ступени начинать.
Не всегда. Сначала считаем простые методы: наивный прогноз, скользящее среднее, сезонный профиль. Машинное обучение оставляем там, где оно заметно обыгрывает их на периоде, которого модель не видела. При небольшом ассортименте, короткой истории или нестабильном спросе обычно хватает простых правил, и мы прямо говорим об этом на обследовании.
Зависит от задачи. Для учёта сезона нужно хотя бы два полных цикла, иначе сезон не отличить от случайного пика. Для стабильных позиций хватает меньшего периода. У редких товаров истории часто мало в принципе, и там работают прогноз по группе и правила. Точный ответ даёт проверка на вашей выгрузке.
Ориентир берём по аналогам из вашего ассортимента и показываем закупщику с пометкой, что это оценка. Закупщик может задать свой ориентир. По мере появления продаж подключается собственная история позиции. Первые недели после запуска считаем отдельно, чтобы всплеск новизны не попал в базовый спрос.
Дефицит определяем по истории остатков и не считаем дни без товара нулевым спросом. Акции учитываем, если они записаны; если нет, предлагаем начать с журнала акций и не обещаем отделить их эффект. Разовые крупные заказы помечаем и считаем отдельно, а известные заранее вносим строкой плана.
Нет. Результат — рекомендация и непроведённый черновик заказа поставщику в 1С. Закупщик правит, проводит и отправляет заказ сам. Автоматический заказ без человека мы не включаем.
Сравниваем с простым методом на периоде, который модель не видела: взвешенная ошибка по сегментам и смещение на горизонте срока поставки. Порог приёмки согласуем до расчётов. Затем пилот идёт параллельно с обычной работой закупщика, и можно сравнить рекомендацию с тем, что действительно потребовалось.
Простые методы можно считать и там. Если в вашей конфигурации уже есть расчёт потребностей, мы сначала проверяем его на тех же данных как базовую линию; наличие и возможности зависят от конфигурации и версии. Разница не в инструменте, а в проверке по времени, учёте дефицита и ограничений закупки и журнале, по которому видно, насколько прогноз ошибается.
Нет. Расчёты идут на сервере в вашем контуре, исходники и модели лежат в вашем репозитории. Для прогноза по таблицам языковая модель не нужна, видеокарта, как правило, тоже. Доступ к 1С выдаётся на время работ и по акту, порядок согласуем со службой безопасности.
По тарифам: обследование одной товарной группы или склада — 200 000 ₽ и 2–3 недели, нескольких систем — 350 000 ₽ и 3–4 недели; цена точная и вычитается из следующего этапа. Пилот на одной группе или складе — 150 000 – 400 000 ₽, 2–8 недель; несколько складов с возвратом в 1С — 400 000 – 1 200 000 ₽, 2–3 месяца. Вывод в продуктив — от 1 500 000 ₽ этапами. Сопровождение — от 20 000 ₽ в месяц. Итоговую вилку называем по результатам обследования.
Мы в Ростове-на-Дону, работаем с заказчиками по всей России: удалённо и в вашем контуре. Доступ к системам и обследование согласуем на старте с вашей службой безопасности.