Точка заказа (Reorder Point, ROP) — это уровень запаса, при достижении которого нужно оформить новый заказ поставщику, чтобы не попасть в дефицит до прихода партии. Для позиций с длительным сроком поставки (лид-таймом) расчёт существенно сложнее: ошибка прогноза накапливается за недели или месяцы ожидания, а стоимость хранения крупных партий часто высока. Ниже — практический алгоритм от базовой формулы до настройки под реальные условия.
- Базовая формула и почему она не работает «в лоб»
- Шаг 1. Соберите чистую историю спроса, а не отгрузок
- Шаг 2. Оцените волатильность спроса правильно
- Шаг 3. Учтите неопределённость лид-тайма поставщика
- Шаг 4. Выберите целевой сервисный уровень осознанно
- Шаг 5. Рассчитайте страховой запас и точку заказа
- Шаг 6. Проверьте на реалистичном горизонте (backtesting)
- Типичные ошибки при длинном лид-тайме
- Сценарии: как адаптировать под условия
- Сценарий А: Стабильный спрос, надежный поставщик (CV < 0,3, σL < 5 дней)
- Сценарий Б: Стабильный спрос, нестабильный поставщик (σL > 10–15 дней)
- Сценарий В: Сезонный спрос, длинный лид-тайм
- Сценарий Г: Прерывистый спрос (slow movers, CV > 1)
- Практический чек-лист перед внедрением
- Как мониторить качество работы ROP в эксплуатации
- От чего зависит экономический смысл страхового запаса
- Что делать, если поставщик не даёт надежного лид-тайма
- Резюме: алгоритм действий завтра утром
Базовая формула и почему она не работает «в лоб»
Классическое уравнение:
ROP = (Средний дневной спрос × Лид-тайм в днях) + Страховой запас
Первая часть — «цикловый запас» — покрывает ожидаемое потребление пока идёт заказ. Вторая — страховой запас — амортизирует неопределённость. При коротком лид-тайме (2–5 дней) часто достаточно добавить 10–20% сверху. При лид-тайме 60–120 дней этот подход даёт либо постоянные дефициты, либо замерзший капитал.
Главная сложность длинного лид-тайма: спрос за период ожидания — это не просто сумма дневных значений, а случайная величина с растущей дисперсией. Если дневной спрос имеет стандартное отклонение σd, то за L дней стандартное отклонение суммарного спроса равно σd × L (при независимых днях). При L = 90 дней неопределённость растёт в ~9,5 раза относительно дневной.
Шаг 1. Соберите чистую историю спроса, а не отгрузок
Используйте данные о фактическом потреблении (спрос со склада/производства), а не отгрузки клиентам. Отгрузки сглажены логистикой, акциями, календарём — они скрывают истинную волатильность.
- Период истории: минимум 12–18 месяцев, лучше 24–36, чтобы захватить сезонность.
- Гранулярность: дневные данные. Недельные или месячные маскируют пики внутри периода.
- Очистка: исключите аномальные выбросы (одноразовые крупные заказы, возвраты, списания брака), но сохраняйте системные пики (сезон, плановые ремонты).
Если история короче лид-тайма — расчёт будет экспертным. В этом случае зафиксируйте допущение и пересчитывайте ROP ежемесячно по накапливающейся статистике.
Шаг 2. Оцените волатильность спроса правильно
Коэффициент вариации (CV = σ / среднее) определяет стратегию расчёта страхового запаса.
| CV дневного спроса | Характер спроса | Подход к страховому запасу |
|---|---|---|
| < 0,3 | Стабильный, предсказуемый | Нормальное распределение, z-коэффициент × σL |
| 0,3 – 0,7 | Умеренная волатильность | Логнормальное или гамма-распределение, бутстреп/симуляция |
| > 0,7 | Высокая волатильность / прерывистый | Методы для intermittent demand (Croston, TSB), сервисный уровень по заказам, а не по единицам |
Для длинного лид-тайма даже при CV = 0,25 стандартное отклонение за период L = 90 дней даёт разброс ±2,5σ от среднего. Прицеливание в 95% сервисный уровень (z ≈ 1,645) потребует страхового запаса ~4,1 × σd × L. Проверьте, не превышает ли это экономически допустимый уровень запаса.
Шаг 3. Учтите неопределённость лид-тайма поставщика
Лид-тайм тоже случаен. Если у поставщика заявленные 90 дней, а фактический разброс 75–110 дней, игнорирование этой вариативности недооценивает риск.
Общая формула стандартного отклонения спроса за период поставки при независимых спросе и лид-тайме:
σLT = (L × σd² + d² × σL²)
где:
- L — средний лид-тайм (дни)
- σd — стандартное отклонение дневного спроса
- d — средний дневной спрос
- σL — стандартное отклонение лид-тайма (дни)
Второй слагаемое (d² × σL²) часто превышает первое, особенно при стабильном спросе, но нестабильном поставщике. Запросите у закупки историю фактических дат поступления по ПО за 12–24 месяца и посчитайте σL.
Шаг 4. Выберите целевой сервисный уровень осознанно
Сервисный уровень (Cycle Service Level, CSL) — вероятность не уйти в дефицит за один цикл заказа. Fill Rate — доля удовлетворённого спроса из наличия. Они связаны нелинейно.
- CSL 95% Fill Rate 95%. При высокой волатильности Fill Rate будет ниже.
- Для критичных деталей (остановка линии, безопасность) целевой CSL 98–99,5%.
- Для стандартных расходников — 90–95%.
- Для дешевых легко закупаемых позиций — можно ниже, компенсируя ускоренной доставкой.
Не ставьте одинаковый сервисный уровень на весь каталог. Сегментируйте по ABC/XYZ или по стоимости дефицита (Cost of Stockout).
Шаг 5. Рассчитайте страховой запас и точку заказа
Для нормального распределения спроса за лид-тайм:
Safety Stock = z × σLT
ROP = d × L + Safety Stock
где z — квантиль нормального распределения для целевого CSL (z0,95 ≈ 1,645; z0,98 ≈ 2,054; z0,99 ≈ 2,326).
Пример (условный):
- d = 5 шт/день, σd = 1,2 шт/день (CV = 0,24)
- L = 90 дней, σL = 10 дней
- σLT = (90 × 1,2² + 5² × 10²) = (129,6 + 2500) ≈ 51,3 шт
- CSL 95% → z = 1,645 → Safety Stock ≈ 84 шт
- ROP = 5 × 90 + 84 = 534 шт
Без учёта вариативности лид-тайма (σL = 0) страховой запас был бы ~16 шт — в 5 раз меньше, что почти гарантированно приведёт к дефицитам.
Шаг 6. Проверьте на реалистичном горизонте (backtesting)
Перед внедрением прогните расчёт на истории последних 12–24 месяцев как будто вы работали по этому ROP.
- Возьмите скользящее окно (например, 6 месяцев) для пересчёта d, σd, L, σL.
- Каждый день сравнивайте остаток с ROP, моделируйте заказы и поступления.
- Считайте реальный CSL, Fill Rate, средний запас, количество дефицитов.
Если реальный CSL сильно ниже целевого — проверьте распределение (хвосты тяжелее нормального?), корреляцию спрос/лид-тайм, наличие трендов. Если выше — возможно, перестраховались и заморозили лишний капитал.
Типичные ошибки при длинном лид-тайме
- Использование среднего лид-тайма без σL. Даже небольшой разброс поставки (например, ±2 недели) при длительном ожидании даёт огромный разброс спроса за период.
- Расчёт страхового запаса только по волатильности спроса. Игнорирование ошибки прогноза тренда/сезонности. При лид-тайме 3+ месяца прогноз тренда становится основным риском.
- Статический ROP, не пересчитываемый месяцами. Сезонность, запуск новых продуктов, уход клиентов меняют d и σd. Пересчёт раз в квартал — минимум.
- Подстановка «запаса на N дней» вместо статистики. «Запас на 30 дней» при лид-тайме 90 дней — это просто ещё 30 дней циклического запаса, не страховой.
- Неучёт минимальной партии заказа (MOQ) и кратности. Если ROP = 534, а MOQ = 1000, реальный заказ уйдёт раньше, и пиковый запас будет выше. Скорректируйте параметры или договоритесь о дробных поставках.
- Путаница между точкой заказа и точкой заказа с учётом транзита. Если в системе есть поле «в пути», ROP сравнивают с (на складе + в пути). Если поля нет — ROP должен быть выше на среднее в пути.
Сценарии: как адаптировать под условия
Сценарий А: Стабильный спрос, надежный поставщик (CV < 0,3, σL < 5 дней)
Нормальное распределение, формула через z × σLT. Пересчёт раз в месяц. Автозаказ в ERP работает без ручного вмешательства.
Сценарий Б: Стабильный спрос, нестабильный поставщик (σL > 10–15 дней)
Основной риск — лид-тайм. Два пути:
- Договориться о фиксированных датах поставки (календарный график) — превращает σL в 0.
- Или держать страховой запас, рассчитанный с полной σLT, и еженедельно мониторить статус ПО у поставщика.
Сценарий В: Сезонный спрос, длинный лид-тайм
Один статический ROP на год не работает. Варианты:
- Динамический ROP: базовый спрос d(t) из сезонного профиля, σd — остаточная волатильность после снятия сезона.
- Два режима: «высокий сезон» и «низкий сезон» с разными ROP, переключение по календарю.
- Закупка под пик сезона заранее (pre-build), а ROP в сезон держит только хвостовой риск.
Сценарий Г: Прерывистый спрос (slow movers, CV > 1)
Нормальное распределение не применимо. Используйте метод Кростона (Croston) или TSB для оценки интервала между заказами и размера заказа. Целевой метрикой делайте Probability of No Stockout per Replenishment Cycle, а не Fill Rate. Часто проще держать минимальный страховой запас = 1–2 упаковки и реагировать на первый же заказ клиента (Make-to-Order логика), если лид-тайм позволяет.
Практический чек-лист перед внедрением
- Есть ли дневная история потребления минимум за 12 месяцев?
- Рассчитаны ли d, σd, L, σL по чистым данным?
- Выбран ли целевой CSL по сегментам (ABC/XYZ или Cost of Stockout)?
- Проверено ли распределение спроса за лид-тайм (гистограмма vs нормальное)?
- Сделан ли бэктест на истории с реалистичными правилами заказа (MOQ, кратность, расписание поставок)?
- Настроен ли в ERP/MRP пересчёт ROP по расписанию (ежемесячно/квартально)?
- Есть ли процесс эскалации: если остаток < ROP, а заказ не ушёл — алерт планировщику/закупке?
- Учтено ли «в пути» при сравнении остатка с ROP?
Как мониторить качество работы ROP в эксплуатации
Не ждите дефицита. Ведите дашборд с тремя метриками:
- Actual CSL — доля циклов заказа без дефицита (цель: ≥ целевого CSL).
- Safety Stock Consumption Rate — как часто и насколько глубоко уходите в страховой запас. Если каждый цикл едите 50%+ страхового — ROP занижен или волатильность выросла.
- Inventory Turns / Days of Supply — чтобы не перескочить в перезапас. При длинном лид-тайме оборачиваемость будет ниже, но рост Days of Supply без изменения спроса — признак завышенного ROP.
Правило: если Actual CSL ниже целевого два месяца подряд — пересчитывайте параметры (d, σ, L) на свежей выборке и корректируйте ROP.
От чего зависит экономический смысл страхового запаса
Страховой запас — это страховка от дефицита. Её «премия» — стоимость хранения (WACC + склад + устаревание + страховка) в год от стоимости запаса. «Выплата» — упущенная маржа + штрафы + репутация от дефицита.
Оптимальный сервисный уровень там, где предельные затраты на хранение дополнительной единицы страхового запаса равны предельной выгоде от снижения вероятности дефицита. На практике это переводится в Cost of Stockout (CoS) за единицу:
CoS = (Маржа с продажи + Штрафы/потери клиента) / (Цена закупки × Годовая ставка хранения)
Если CoS высокий — целевой CSL поднимайте до 98–99%. Если низкий (дешевая деталь, легко докупить у альтернативы) — 90–92% вполне достаточно. Не используйте «корпоративный стандарт 95%» для всего каталога.
Что делать, если поставщик не даёт надежного лид-тайма
Частая ситуация: поставщик называет «8–12 недель», фактически 6–16, обещания не выполняет. Варианты действий:
- Внедрите еженедельный опрос статуса ПО (планируемая дата отгрузки, текущий этап). Накапливайте свою статистику σL.
- Разбейте заказ на части с разными датами (partial shipments) — снижает риск единого крупного просрочки.
- Заведите альтернативного поставщика (даже по более высокой цене) для экстренных дозакупок — это позволяет снизить целевой CSL у основного поставщика.
- Если деталь критическая и единственный источник — переходите на консигнационный склад у себя или VMI (Vendor Managed Inventory), перенося риск лид-тайма на поставщика.
Резюме: алгоритм действий завтра утром
- Выгрузите дневной спрос и фактические даты поступлений по целевым SKU за 24 месяца.
- Посчитайте d, σd, L, σL для каждого SKU.
- Сегментируйте SKU по Cost of Stockout (критичность дефицита).
- Для каждого сегмента задайте целевой CSL.
- Рассчитайте σLT и Safety Stock = z × σLT.
- Сделайте бэктест на последних 12 месяцах. Если CSL не 달성 — проверьте распределение, добавьте поправку на тренд/сезонность, пересчитайте.
- Загрузите ROP в ERP. Настройте ежемесячный пересчёт параметров.
- Введите мониторинг Actual CSL и Safety Stock Consumption Rate.
Главный принцип при длинном лид-тайме: неопределённость накапливается нелинейно. Игнорирование вариативности поставщика или сезонности стоит в разы дороже, чем при лид-тайме в неделю. Начните с чистых данных, учтите обе вариативности (спрос и поставка), проверьте на истории и пересчитывайте регулярно. Статический ROP, заведённый раз в год, для длинного лид-тайма — гарантированный путь к дефицитам или перезапасам.
Материал носит информационный характер и не заменяет расчёт параметров запасов специалистом по цепочке поставок с учётом специфики производства, финансовых ограничений и договоренностей с поставщиками. При внедрении новых параметров ROP рекомендуется параллельный запуск и согласование с финансовым и производственным блоками.
