Прогноз спроса и страховой запас без скрытой неопределённости
План запаса начинается с двух разных вопросов: какой спрос может прийти и какой запас вы готовы профинансировать на случай, если реальность окажется другой. Если слить их в одну необъяснённую «точку заказа», пропадают именно те допущения, от которых всё зависит. В примере ниже товар, который продаётся примерно по 10 единиц в неделю, получает страховой запас 18 единиц, целевой запас 48, до цели не хватает 23 единиц — и 72 $ лежат только в страховом запасе. Каждое из этих чисел следует из допущения, которое видно и которое можно изменить.
Начните с пригодной истории
Неделя с настоящими нулевыми продажами — это информация. Неделя, когда товара не было, — не доказательство того, что он никому не был нужен. Если фильтр закончился во вторник и до конца недели ничего не продали, запись «0» научит любой метод прогноза, что спрос упал, — и следующий запас окажется слишком маленьким именно там, где товар уже заканчивался.
Поэтому такие периоды нужно отмечать отдельно:
- Полный период — товар был в наличии, период закрыт. Ноль здесь — настоящий ноль.
- Дефицит — товар закончился. Это разрыв, а не ноль.
- Наличие неизвестно — сказать нельзя. Тоже разрыв.
- Открытый период — текущая неделя, которая ещё идёт. Её прогнозируют, но не используют как историю.
Пропущенные даты тоже не должны молча превращаться в нули. Если в выгрузке нет двух недель, потому что касса филиала была отключена, эти недели пропущены, а не «без продаж». И возвраты — не отрицательный спрос: сначала исправьте исходную историю (например, вычтите возвраты из недели исходной продажи) и запишите, как именно это сделано.
В вымышленном демо-магазине у одного товара за последние месяцы было две недели дефицита и одна неделя с неизвестным наличием. Его последний непрерывный участок полных недель — всего 11, поэтому программа отказывается считать по нему запас, а не делает вид, что разрывы были нулями.
Сравните простые методы, прежде чем усложнять
Последнее значение, скользящее среднее, экспоненциальное сглаживание и сезонный повтор дают по одной и той же истории очень разные результаты. Честный способ выбрать — проверить применимые методы на одних и тех же прошлых периодах, каждый раз обучая прогноз только на том, что было известно до этой даты. Иначе проверка «подсказывает» прогнозу ответ.
Именно это делает проверка со скользящей точкой отсчёта. Берутся последние 12 полных недель (или четверть истории, если она короче, — но не меньше 4). Для каждой из них каждый метод строится по неделям до неё и прогнозирует на шаг вперёд. Затем сравниваются промахи.
Для учебного товара демо «Фильтр A» с историей в 52 недели (одна из них — дефицит) проверка на шаг вперёд на одних и тех же 12 прошлых неделях дала:
| Метод | Средняя абсолютная ошибка |
|---|---|
| Скользящее среднее, 13 недель | 1,885 |
| Экспоненциальное сглаживание, α 0,1 | 1,939 |
| Кростон-SBA, α 0,1 | 1,971 |
| Скользящее среднее, 8 недель | 2,000 |
| Скользящее среднее, 4 недели | 2,000 |
| Последнее значение | 3,667 |
Побеждает скользящее среднее за 13 недель, и его прогноз — ровные 10 единиц в неделю. Обратите внимание, чего в таблице нет: сезонного повтора за 52 недели. Ему нужны два полных года полной истории — 104 недели, а у товара 51 полная неделя. Программа, которая показала бы здесь «сезонный прогноз», выдумала бы закономерность, которую ни разу не видела дважды.
Сравнение остаётся честным благодаря двум правилам. Первое: метод ранжируется, только если его можно было применить в каждом периоде проверки; если скользящее среднее нельзя посчитать в неделе, где в окно попал дефицит, оно не получает оценку по меньшему числу более лёгких недель. Второе: ничьи разрешаются фиксированным правилом (меньший RMSE, затем фиксированный порядок), поэтому повторный импорт того же файла с другим порядком строк даёт тот же ответ.
Пользуйтесь понятной ошибкой
Средняя абсолютная ошибка (MAE) показывает средний размер промаха в единицах спроса: «обычно мы ошибаемся на 1,9 единицы». Смещение показывает направление промахов: прогноз, который постоянно завышен, заполняет полку деньгами. RMSE сильнее наказывает крупные промахи, чем мелкие.
С процентными ошибками нужна осторожность, когда фактический спрос равен нулю. Взвешенная абсолютная процентная ошибка (WAPE: сумма абсолютных ошибок, делённая на сумму фактического спроса) удобна для сравнения товаров разного масштаба, но если фактический спрос в неделях проверки нулевой, знаменателя нет. Модель не должна показывать успокаивающие «0%» только потому, что знаменатель отсутствует; честный ответ — «недоступно».
И ясно понимайте, что именно измеряет проверка: это прогноз на шаг вперёд. Она говорит, насколько хорошо метод предсказывал следующую неделю по предыдущим. Точность прогноза на полгода вперёд она не подтверждает.
Держите диапазон прогноза честным
Закрашенная полоса вокруг прогноза выглядит убедительно. Для «Фильтра A» 10-й и 90-й перцентили 12 исторических ошибок на шаг вперёд равны −2 и +2,14, поэтому диапазон на следующую неделю — примерно от 8 до 12,1 единицы. Это полезный контекст, но подпишите его честно: исторический диапазон остатков на шаг вперёд, а не откалиброванный вероятностный интервал для прогноза на полгода. Если ошибок проверки меньше 8, их слишком мало, и полосу рисовать не нужно.
Затем разберите страховой запас
Страховой запас — отдельная приближённая модель. Её допущения стоит подтвердить явно: спрос и срок поставки независимы и неотрицательны, их параметры достаточно стабильны, нормальное приближение допустимо. При этих допущениях неопределённость за период защиты — срок поставки плюс интервал проверки — складывается и из колебаний спроса, и из колебаний срока поставки.
Пусть средний спрос — десять единиц за период, стандартное отклонение спроса — две, средний срок поставки — три периода, его стандартное отклонение — один, контроль запаса непрерывный. Тогда:
- Периоды защиты: T = 3 + 0 = 3
- Дисперсия: V = T·s² + μ²·sL² = 3 × 2² + 10² × 1² = 12 + 100 = 112
- Стандартное отклонение: σ = √112 ≈ 10,583
- При уровне цикла без дефицита 95% z = 1,644853627, поэтому z·σ ≈ 17,41, с округлением вверх до целой единицы — страховой запас 18
При ровном прогнозе 10 единиц ожидаемый спрос за 3 периода защиты — 30, а целевой запас — 30 + 17,41 с округлением вверх, то есть 48.
Посмотрите, откуда берётся дисперсия: 12 из 112 дают недельные колебания спроса, 100 — неопределённый срок поставки. Сократить или стабилизировать поставку часто полезнее для запаса, чем любой метод прогноза.
Важны две практические детали. Если срок поставки введён в днях, а история недельная, сначала переведите дни в недели (18 дней — это 2,57 недели) и только потом округляйте период защиты вверх: срок 2,57 недели при недельном интервале проверки превращается в 4 недели защиты, и результат должен сообщать, что он округлён. А для весовых и наливных товаров запас округляется вверх до шага, которым вы реально храните товар, например до половины литра.
Оцените запас в деньгах и найдите разрыв
Если позиция запаса — остаток плюс в заказе минус невыполненные заказы — равна 20 + 10 − 5 = 25, до целевого запаса не хватает 23 единиц. При себестоимости 4 $ за единицу только страховой запас связывает 72 $.
Лестница уровней сервиса делает выбор наглядным для того же товара:
| Уровень цикла | Запас | Целевой запас | Деньги в запасе |
|---|---|---|---|
| 90% | 14 | 44 | 56 $ |
| 95% | 18 | 48 | 72 $ |
| 97,5% | 21 | 51 | 84 $ |
| 99% | 25 | 55 | 100 $ |
Переход с 95% на 99% стоит ещё 28 $ запаса по одному этому товару. В ассортименте из нескольких сотен товаров и нескольких филиалов именно этот разговор стоит вести с цифрами перед глазами.
Это результат планирования на основе допущений, а не заказ поставщику и не гарантия доли выполненных заказов. «95% уровня цикла» означает, что при указанных допущениях примерно 95% циклов пополнения должны закончиться без дефицита, — а не то, что будет отгружено 95% единиц.
Как всё это связать
«Прогноз спроса и страховой запас» держит прогноз, проверку на истории и экономику запаса вместе. В его фиксированном демо есть небольшой ассортимент и пример среднего бизнеса с несколькими филиалами — 240 товаров в 4 филиалах за 104 недели, где каждый товар получает свой проверенный метод, а деньги в запасах суммируются по валютам. Следующий вопрос — упаковки, минимальные партии и ограниченный бюджет закупки — решает Stock Purchase Planner.
Инструменты из этого руководства
Интерактивный инструмент
Прогноз спроса и страховой запас
Прогнозируйте спрос прозрачными статистическими методами, проверяйте ошибки прошлых прогнозов и сравнивайте, сколько денег уходит в страховой запас.

