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

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

Модель та же, что во всём разделе: производственно-торговая компания, 30 поставщиков, 400 закупаемых позиций, 72 000 000 ₽ закупки в год (6 000 000 ₽ в месяц по себестоимости), 180 заявок в месяц, 340 поставок в год, учёт в 1С:УТ. Полная стоимость часа закупщика 1 000 ₽, стоимость денег 24 % годовых.

Три уровня прогноза и что каждый стоит

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

УровеньЧто учитываетНужно данныхОшибка на месяц вперёдЦенаКто ведёт
1. Скользящее среднееСредний расход за 8 недель, сезонный коэффициент руками3 месяца отгрузококоло 26 %0 ₽, формула в таблицеЗакупщик
2. Сезонная модельТренд и месячный коэффициент по каждой позиции18–24 месяца отгрузококоло 17 %320 000 ₽ + 12 000 ₽/месПодрядчик, пересчёт раз в месяц
3. Модель с внешними факторамиПлюс план акций, план продаж, изменение цены, календарь24 месяца плюс журнал акций и ценоколо 13 %700 000 ₽ + 25 000 ₽/месПодрядчик, сопровождение и дообучение

Главное в этой таблице — форма кривой. Переход с первого уровня на второй убирает 9 процентных пунктов ошибки и стоит 320 000 ₽. Переход со второго на третий убирает 4 пункта и стоит ещё 380 000 ₽ плюс вдвое больше сопровождения. Третий уровень имеет смысл ровно тогда, когда у компании есть регулярные акции и план продаж в письменном виде: без журнала акций внешним факторам просто неоткуда взяться, и модель третьего уровня сползает до второго, оставаясь в цене третьего.

Первый уровень стоит рассмотреть всерьёз, а не как формальность в начале списка. Скользящее среднее за 8 недель, умноженное на месячный коэффициент, считается формулой в обычной таблице и требует трёх месяцев истории. На стабильной группе оно даёт около 26 % ошибки — то есть на девять пунктов хуже сезонной модели за 320 000 ₽. Практический вывод для компании, которая только собирается вкладываться: сначала посчитайте первым уровнем и поживите с ним квартал. Вы получите базу для сравнения, увидите, где именно промахи болезненны, и придёте к подрядчику с вопросом «улучшите вот эти 40 позиций», а не «сделайте нам прогноз».

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

Ошибка 13 % — это про стабильную группу, а не про всю номенклатуру

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

графикprognoz-potrebnosti-v-zakupke--01
Ошибка трёх уровней прогноза: 26, 17 и 13 процентов при цене 0, 320 000 и 700 000 рублей

Двухосевой график. По горизонтали — три уровня прогноза, по вертикали слева — ошибка на месяц вперёд от 0 до 30 %. Ломаная линия проходит через точки 26 %, 17 %, 13 %. Под каждой точкой столбик разовой цены по правой оси от 0 до 800 000 ₽: 0 ₽, 320 000 ₽, 700 000 ₽. Отрезок между первой и второй точкой подписан «−9 пунктов за 320 000 ₽», между второй и третьей — «−4 пункта за 380 000 ₽». Чертёжный стиль, подписи по-русски.

Второй уровень убирает 9 пунктов ошибки, третий — ещё 4 за вдвое большие деньги

Минимум данных, без которого считать нечего

Требование «18–24 месяца истории» звучит мягко, поэтому его обычно пропускают. На деле это жёсткий фильтр: сезонный коэффициент нельзя вывести по одному прохождению сезона, потому что непонятно, был это сезон или разовое событие. В модельной номенклатуре из 400 позиций 18 месяцев и больше есть у 312, и это в целом хороший результат.

  1. 1История отгрузок помесячно, минимум 18 месяцев, лучше 24. Считается по отгрузкам со склада, а не по приходам и не по документам поставщика. Дни, когда позиция стояла с нулевым остатком, помечаются отдельно: иначе модель примет вынужденный ноль за отсутствие спроса и занизит норму навсегда.
  2. 2Вычищенная номенклатура: одна позиция — одна карточка. Самая частая и самая тихая порча данных. В модельной компании 47 позиций из 400 задвоены, потому что заводились текстом из разных прайсов. История каждой копии втрое короче реальной, и модель по ним считает треть настоящего расхода. Как приводить прайсы поставщиков к одному справочнику, разобрано в материале про прайсы поставщиков к одному виду.
  3. 3Отметки акций и распродаж с датами. Две недели акции дают всплеск, который модель без пометки читает как новый уровень спроса и держит ещё два месяца. Журнал акций в 90 % компаний не ведётся вообще — его заводят под проект, и это первое, что надо начать делать, не дожидаясь подрядчика.
  4. 4Периоды дефицита по каждой позиции. Дни с нулевым остатком и дни, когда клиенту отказали. Второе почти нигде не фиксируется, и это принципиальный потолок точности: спрос, который не дошёл до отгрузки, в истории не виден.
  5. 5Фактические сроки поставки по каждому поставщику. Прогноз считается на горизонт, а горизонт равен сроку поставки плюс период между заказами. Ошибка в сроке на четыре дня на позиции с расходом 18 штук в день — это 72 штуки мимо, независимо от качества модели.

Метрика ошибки: одно и то же число двумя способами

Формулировка «наша модель ошибается на 15 %» ничего не значит, пока не сказано, как считалась средняя. Есть два способа, и на одних и тех же данных они расходятся вдвое. Возьмём пять позиций за закрытый месяц.

ПозицияПрогноз, штФакт, штОтклонение, штОшибка по позиции
А, ходовая3 6003 10050016,1 %
Б, средняя5406208012,9 %
В, редкая241113118,2 %
Г, средняя1802052512,2 %
Д, стабильная969066,7 %
Итого4 4404 026624

Взвешенная ошибка считается как сумма отклонений, делённая на сумму факта: 624 ÷ 4 026 = 15,5 %. Простое среднее ошибок по позициям даёт (16,1 + 12,9 + 118,2 + 12,2 + 6,7) ÷ 5 = 33,2 %. Разница вся целиком в позиции В: она весит 11 штук из 4 026, то есть четверть процента объёма, а в простом среднем занимает треть итога.

Какую цифру спрашивать у подрядчика

Обе, и по каждой группе отдельно. Взвешенная ошибка отвечает на вопрос «насколько мы промахнёмся деньгами» — по ней принимают прогноз в эксплуатацию. Простое среднее отвечает на вопрос «на скольких позициях закупщик получит бессмысленный расчёт» — по нему решают, какие позиции вообще отдавать модели. Рабочий ориентир для закупки: взвешенная ошибка ниже 20 % на стабильной группе и ниже 30 % на сезонной. Всё, что не проходит, ведётся вручную.

сравнениеprognoz-potrebnosti-v-zakupke--02
Взвешенная ошибка 15,5 процента против простого среднего 33,2 процента на одних данных

Сравнение в две колонки на одних и тех же пяти позициях. Левая колонка «Взвешенная по объёму»: формула «624 ÷ 4 026», крупное число «15,5 %», подпись «отвечает за деньги». Правая колонка «Простое среднее по позициям»: формула «(16,1 + 12,9 + 118,2 + 12,2 + 6,7) ÷ 5», крупное число «33,2 %», подпись «отвечает за число бессмысленных строк». Между колонками выноска на позицию В: «11 шт из 4 026 — четверть процента объёма и треть итога». Чертёжный стиль, подписи по-русски.

Одна редкая позиция из пяти удваивает заявленную ошибку модели

Что не прогнозируется никакой моделью

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

  1. 1
    Новые позиции без истории

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

  2. 2
    Разовые проектные закупки

    Потребность приходит из спецификации заказа, а не из истории отгрузок. Такие строки не должны попадать ни в базу расчёта, ни в отчёт об ошибке — иначе одна закупка под контракт на 4 000 000 ₽ испортит нормы половине номенклатуры. Помечаются признаком «под заказ» в момент создания заявки.

  3. 3
    Эффект чужой рекламы и чужих акций

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

  4. 4
    Уход конкурента или появление нового

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

Где расчёт заканчивается и начинается закупщик

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

Потребность по позиции среднего спроса, заказ в сентябре
Горизонт: срок поставки 21 день + период между заказами 14 дней35 дней
Базовый расход по последним 8 неделям: 18 шт/день × 35630 шт
Сезонный коэффициент сентября по истории 24 месяцев: 0,95599 шт
Минус доступный остаток на складе−210 шт
Минус товар в пути с подтверждённой датой прихода−240 шт
Плюс целевой страховой запас при уровне сервиса 95 %+155 шт
Расчётная потребность304 шт
Округление вверх до кратности упаковки 12 шт312 шт
Итого312 штук на 436 800 ₽ — это и есть строка заявки поставщику

Из восьми строк расчёта модель отвечает за две: базовый расход и сезонный коэффициент. Остальные шесть — учётные данные и решения. Именно поэтому проект, начатый с прогноза при неубранных резервах и неотражённом товаре в пути, не даёт эффекта: точность модели растёт, а заявка остаётся неверной. Механика точки заказа, страхового запаса и кратности разобрана в статье про точку заказа и автопополнение со стороны закупки.

схема процессаprognoz-potrebnosti-v-zakupke--03
Схема расчёта потребности: 599 минус 210 минус 240 плюс 155 равно 304, округление до 312

Горизонтальная схема-цепочка из шести блоков со знаками между ними. Блоки слева направо: «Прогноз спроса за 35 дней — 599 шт» (выделен как зона модели), «− Доступный остаток 210», «− Товар в пути 240», «+ Страховой запас 155», «= Потребность 304», «→ Кратность 12 → 312 шт, 436 800 ₽». Над первым блоком подпись «считает модель», над остальными — «берётся из учёта и решений». Чертёжный стиль, подписи по-русски.

Модель отвечает за первое слагаемое, всё остальное — учёт и решения

400 позиций: сколько строк отдаётся модели

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

ГруппаПозицийПризнакКто считаетДоля месячной закупки
Стабильные16818+ месяцев истории, спрос в 10 месяцах из 12Модель, автоматически3 240 000 ₽ (54 %)
Сезонные9224 месяца истории, выраженный годовой профильМодель + проверка закупщиком раз в месяц1 620 000 ₽ (27 %)
Редкие118Спрос реже чем в 6 месяцах из 12Правило минимального остатка, без прогноза780 000 ₽ (13 %)
Новые и проектные22Нет истории либо закупка под конкретный заказТолько закупщик, от плана продаж или спецификации360 000 ₽ (6 %)
Итого4006 000 000 ₽

Автоматический расчёт закрывает 260 позиций из 400 — 65 % строк и 81 % денег. Оставшиеся 140 позиций — это 19 % закупки и примерно столько же рабочего времени закупщика, сколько раньше уходило на все 400. Такова честная арифметика: прогноз не убирает ручную работу, он переносит её на те позиции, где она действительно нужна.

сравнениеprognoz-potrebnosti-v-zakupke--04
400 закупаемых позиций по четырём группам: 168, 92, 118 и 22, деньги 81 и 19 процентов

Две вертикальные полосы одинаковой высоты рядом. Левая подписана «Позиции, 400 шт» и разбита на четыре сегмента с подписями: «Стабильные 168», «Сезонные 92», «Редкие 118», «Новые и проектные 22». Правая подписана «Деньги, 6 000 000 ₽/мес» и разбита теми же четырьмя сегментами с подписями «3 240 000 ₽», «1 620 000 ₽», «780 000 ₽», «360 000 ₽». Между полосами скобка, охватывающая два верхних сегмента, с подписью «считает модель: 260 позиций, 81 % денег». Чертёжный стиль, подписи по-русски.

Две трети строк считаются сами, но людям остаётся пятая часть денег

Что прогноз даёт в деньгах

Половина эффекта прогноза в закупке лежит не там, где его обычно ищут. Снижение запаса — самая очевидная строка и не самая крупная; крупнее оказывается то, что появляется вместе с подтверждённым планом на квартал вперёд.

Эффект прогнозного слоя на 260 автоматически считаемых позициях, месяц
Запас на этих позициях: 81 % от 9 000 000 ₽7 290 000 ₽
Точность норм снимает ещё 5 % запаса: 364 500 ₽ × 2 % в месяц7 290 ₽
Пиковый месяц закупки 8 400 000 ₽ против среднего 6 000 000 ₽: разрыв2 400 000 ₽
Овердрафт на 30 дней дважды в год под 24 % годовых, в пересчёте на месяц7 890 ₽
Промахи по сезонным пикам: было 5 в год по 46 000 ₽, снято 311 500 ₽
Объёмные условия у 6 поставщиков на 26 000 000 ₽ в год: скидка 1,2 %, берём половину13 000 ₽
Эффект брутто39 680 ₽
Эксплуатация прогнозного слоя−12 000 ₽
Итого27 680 ₽ в месяц чистыми, вложение 320 000 ₽ окупается за 11,6 месяца

Четвёртая строка требует пояснения, потому что именно она отличает закупочный прогноз от складского. Когда компания может показать поставщику подтверждённый план выборки на квартал, разговор об условиях меняется: годовой объём перестаёт быть обещанием и становится графиком. В модели это шесть поставщиков из тридцати и 1,2 % скидки на 26 000 000 ₽ годового объёма — 312 000 ₽ в год. В расчёт мы берём половину, потому что скидка не выдаётся автоматически, а получается в переговорах, и получается не у всех.

Одиннадцать с половиной месяцев окупаемости — на границе разумного горизонта, и это честная характеристика прогнозного слоя. Сам по себе он покупается редко: обычно он идёт надстройкой к автопополнению, где вложение 260 000 ₽ возвращается за 7,6 месяца, и тогда общая окупаемость связки укладывается в девять месяцев. Порядок здесь важен: сначала нормы и точка заказа, потом прогноз, а не наоборот.

Когда прогноз потребности не нужен

Четыре случая, в которых мы отговариваем от прогнозного слоя, и каждый из них проверяется по учётным данным за час.

  • Истории меньше 18 месяцев. Сезонный коэффициент вывести не из чего, и второй уровень вырождается в первый — то есть в скользящее среднее, которое считается формулой в таблице бесплатно. Разумное действие — начать вести журнал акций и помечать дни дефицита, а к прогнозу вернуться через год.
  • Закупка идёт под заказ. Если больше половины строк приходит из спецификаций клиентов, прогнозировать нечего: потребность известна точно и заранее. Здесь работает связка «заказ — резерв — заявка», а деньги лежат в скорости согласования, а не в точности расчёта; про маршрут заявки — в материале про согласование заявок на закупку.
  • Меньше 280 закупаемых позиций. Эффект пропорционален числу позиций, а эксплуатация — нет. Пороги по каждому блоку разобраны в материале про то, когда автоматизация закупок не окупится.
  • Дефицит на складе вызывается не спросом, а деньгами. Если заявки регулярно режут при согласовании из-за кассового разрыва, точность прогноза ничего не изменит: расчёт будет верным, а закупка всё равно другой. Сначала платёжный календарь, потом прогноз.

И общий вывод. Прогноз потребности не делает будущее известным — он делает известной величину собственной ошибки. Это и есть его практическая ценность: зная, что на стабильной группе модель промахивается на 17 %, вы закладываете страховой запас на 17 %, а не на глазок, и перестаёте платить за неопределённость дважды. Компания, которая знает свою ошибку, управляет запасом; компания, которая её не измеряет, управляет ощущениями.

Точность прогноза — не цель, а вводная. Цель — знать её величину заранее и заложить в страховой запас ровно столько, сколько она стоит.