Прогнозирование закупок: адская, но очень полезная математика

    Представьте двух героев: коммерсанта Александра и сисадмина Василия. Вася, как олицетворение среднестатистического клиента, каждый вечер заходит в магазин Саши (представителя розничной сети) и покупает пиво. Саша заказывает для него 7 бутылок пива в неделю. Иногда Вася остаётся работать с ночевкой и не выходит из серверной, а иногда – после работы берёт по две бутылки пива для себя и главбуха.


    График спроса на пиво в зависимости от жизненных приключений Васи

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

    Итак, много товара на складе для Саши — плохо. В него вложены и «заморожены» деньги, да и просто хранить его накладно. Мало товара в магазине – плохо, клиенты не находят нужного, он теряет их и прямую прибыль. Чтобы знать, сколько товара надо закупать, нужна система предсказания спроса. Эта же система помогает поддерживать нужное количество товара на точках.

    Как это выглядит в принципе?


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

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

    Что важно для Саши: правильный заказ или большая прибыль?


    Торговые сети стремятся оптимизировать процесс поставок. Один из важных моментов – нужно считать не в штуках, а в общих издержках, например, на работу персонала и эффективность процессов. Для сети важна прибыль в результате, а не сама по себе точность прогноза. Итак, всё упирается в остаток товара на складе, куда его заказывают закупщики. Чтобы правильно управлять товарным остатком, нам надо сначала спрогнозировать спрос. При этом спрос – это не продажи: при отсутствии товара спрос может быть, но продаж не будет. Это очень важное отличие, потому что многие системы оперируют именно продажами.

    Восстанавливаем спрос


    Первый шаг аналитики в нашем случае — восстановить реальный спрос, отследив все моменты, когда товар был фактически недоступен (например, ящик пива числился в базе, но по факту затерялся на складе).

    Суть – в замене «разрывов» товара какой-то расчётной величиной. Можно использовать несколько разных методов усреднения, например, скользящее среднее: расчёты не так важны, как сам принцип. Итак, первым делом мы восстанавливаем уровень спроса. Затем строим прогноз на ближайший период. Далее, нам нужно получить поправки на то, что реальный спрос всегда отличается от прогноза, то есть построить оптимальный коридор допусков.

    Присматриваемся к Васе


    Например, у нас в среднем покупают 7 бутылок в день, но могут купить на пике 10, а минимуме – 4. Значит, коридор – 7 плюс-минус 3. Это, опять же, в среднем. Иногда бывает, что наш Вася устраивает вечеринку и хочет сразу 20 бутылок, но в таких случаях, по расчётам, нам выгоднее продавать 10 и отправлять его искать топливо дальше, чем держать на складе 10 лишних. В конце концов, он сисадмин, и вечеринки для него – явление крайне редкое. Выстраивается доверительный интервал, когда вероятность прогноза спроса от 4 до 10 единиц – 80%. Если разброс для товара большой (например, когда мы торгуем 4-10 блейд-серверами) – это повод заниматься товаром вручную. Когда разброс маленький (4-10 скрепок) — это вполне можно доверить автоматике.

    Считаем деньги Саши


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

    Стоимость отвлеченных денег можно считать по-разному. Самый простой вариант – по банковской ставке – что будет, если мы эти деньги положим на депозит. Более правильный способ – это оценить реальную стоимость отвлеченных денег по средней эффективности бизнеса. Эта ставка важна для предсказания верхней границы перезаказа.

    Дальше, когда мы добавили ошибку от недопрогноза и перепрогноза в деньгах, мы можем оценить при какой величине остатка эта ошибка будет минимальной. Следующий шаг: надо поставить этот товар. Например, аналитика предлагает завести 14 бутылок пива. Очевидно, что мы можем возить их только ящиками, то есть это или 12, или 24. Нужно понимать, что выгодней: недопривезти этот ящик и расстроить сисадмина Василия, который каждый вечер покупает пиво у нас, или же завести ящик и сидеть с лишними бутылками. Маркетологи могут дать примерную эвристику по важности сохранения клиентов за счёт поддержания ассортимента – и это также можно учитывать в функции.



    Какова эффективность?


    В моей практике внедрения в розничных сетях – экономится до 3% оборота компании.

    Кто в компаниях работает с этой штукой?


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


    Пример внедрения

    Каковы ограничения системы?


    Автоматика умеет прогнозировать тренды, например, учитывать рекламные кампании, но всегда нуждается в корректировках на рынках с высокой волатильностью спроса. Например, в модной индустрии интуиция и опыт значат больше такой автоматики, в сотовом ритейле на топовых позициях считать только автоматом тоже проблематично. Разница вот в чём: торгуя, например, жесткими дисками или хлебом, мы удовлетворяем спрос. Торгуя модными платьями или планшетами нового поколения – создаём его.
    КРОК
    111,00
    №1 по ИТ-услугам в России
    Поделиться публикацией

    Комментарии 49

      +26
      Так сколько пива брать?
        +9
        Одну мало, две много — бери три.
          +2
          Вроде же одну мало, две нормально, а три мало?
          Или это про водку?
            +2
            одна много, два мало, три в самый раз )
              +4
              Это про ириски.
              А водки — пять.
            0
            Если вы Саша, то у вас, грубо говоря, три стратегии: брать по-полной и всегда держать Васю счастливым (большие расходы), брать по-минимум и не гарантировать наличие товара (малые расходы, но Вася может просто не зайти через какое-то время), или же использовать нечто среднее — оптимальное значение, которое зависит от многих факторов. Как подобрать такое значение правильно — вопрос аналитики. Если же вы рассматриваете эту тему с позиции отдельного клиента, то вопрос сам собой отпадёт завтра вечером.
              0
              к сожалению, послезавтра, так как пятница — не настоящая.
          • НЛО прилетело и опубликовало эту надпись здесь
              +2
              Если интересно — вот здесь есть немного деталей, как это может считаться: www.scm-book.ru/book/export/html/29
                +3
                Бегло просмотрел. Адской математики всё еще не заметил.
                Зато заметил следующее.
                1. «до тех пор, пока мы не можем сформулировать, какова может быть причинно-следственная связь между этими величинами, такой фактор вводить нельзя» — мне кажется, или любой нормальный алгоритм должен (при достаточно большой обучающей выборке) практически игнорировать параметры, которые на самом деле не связаны с задачей?
                Кроме того, отсутствие причинно-следственной связи непосредственно между величинами совсем не означает, что знание одной не поможет в определении другой. Например, между продажами кваса и мороженого нет причинно-следственной связи, но знание одной величины очень сильно поможет в определении другой.
                2. В чем тайное преимущество взятие случайной выборки перед рассмотрением объектов по отдельности?

                Решил всё же вчитаться в формулы. Извините, но такое ощущение, что они написаны для отпугивания. Можно то же самое написать короче)

                Это функция распределения только для \int_{-\infty}^0 f(x) d x = \frac{q}{p}. Иначе будет не выполнено условие «на минус бесконечности — ноль».
                Далее, функция распределения определена на всей прямой. Если плотность — регулярная функция, то F по этой формуле получается непрерывной. А значит, некоторый отрезок, не содержащий целых точек, имеет ненулевую меру. Т.е. вероятность продать например от 1/3 до 2/3 единиц товара отлична от нуля.
                Что еще хуже, мера у нас получается абсолютно непрерывной. В частности, вероятность продать целое положительное число единиц товара равна нулю:) Зато ненулевая вероятность продать строго отрицательное.
                И да, у Вас больше чем на 3 экрана расписан вывод функции распределения суммы одинаково распределенных независимых случайных величин. Причем единственную содержательную часть: сумма независимых нормальных — нормальна, Вы оставляете читателю.
                И да, f^m — явно не распределение и не свертка распределений (вообще, что такое свертка распределений?). f^m — плотность (и, соответственно, свертка m одинаковых плотностей).

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

                    Да-да, именно такой софт я и писал…

                    Математика там на самом деле в первом приближении простая, если придерживаться моделей, описанных в стандартных книжках. А когда понимаешь, что допущения, принимаемые этими моделями, не позволяют добиваться хороших показателей (выше, чем у конкурентного софта) — тогда начинается искусство :)
              +8
              Первый график подозрительный, Вася спивается? :)
              PS: дежавю у меня, видел похожий пост год или два назад.
                +4
                Васи становится больше, Саша всё правильно делает.
                +1
                Иногда бывает, что наш Вася устраивает вечеринку и хочет сразу 20 бутылок, но в таких случаях, по расчётам, нам выгоднее продавать 10 и отправлять его искать топливо дальше, чем держать на складе 10 лишних.

                Я бы не купил 10, а пошёл в то место, где продадут 20 (если там не в 2 раза дороже) :) А если серьезно, то неоднократно сталкивался со стратегией закупок такой, чтобы текущий остаток всегда покрывал все известные пики продаж (кроме совсем уж аномальных).

                Ещё в статье как-то упущены моменты сезонного роста/спада продаж, а также «праздничных» аномалий. А в одной фирме столкнулся с тем, что менеджеры изучают недельные прогнозы погоды при заказе напитков: летом чтобы не остаться с пустыми прилавками в жару, зимой чтобы не заваливать склады в мороз.
                  +1
                  Да, стратегия закрытия пиков обычно имеет смысл, но в примере речь о выбросе. Думаю, на Новый Год Саша будет держать минимум 10 ящиков в магазине — с учётом бешеного спроса и того, что поставки до 10 января ему точно не видать. В любом случае, все факторы учитываются при аналитике — есть на картинке. Это данные, которые чаще всего определяются стратегией удовлетворения спроса, например, компания Apple в некоторых случаях создает искусственный дефицит и при этом очень неплохо себя чувствует.
                  +1
                  Нет учета товаров заменителей, места на полке, прибыльности товара и пр.
                    0
                    Да, вы правы. В примере этого нет, в реальности при интеграции, конечно же, есть. Расчёты подстраиваются под конкретные процессы: например, у товара может не быть заменителей, или клиент оперирует только складами, где нет такого понятия как выкладка в принципе.
                    0
                    Напоминает анекдот про три тонны морковки…
                      +29
                      Возможно стоит ввести штрафы за упоминание анекдотов без приведения их полного текста…
                        +22
                        Имхо, не шибко известный анекдот.

                        Приходит заяц в магазин и спрашивает у продавщицы: — У вас есть тонна морковки? Продавщица: — Да нет, нету. Вот только 3 кг осталось, да и то продать не могу. Заяц ушёл. На следующий день приходит и снова: — У вас есть тонна морковки? — Да нет, нету. Вот только 3 кг осталось, да и то продать не могу. Заяц ушёл. Продавщица подумала: «Надо купить тонну морковки, заяц придёт и купит.» Ну, купила. На третий день заяц приходит и снова: — У вас есть тонна морковки? — Есть, есть!!! Вот пожалуйста- тонна морковки. — Да-а-а ,- говорит заяц ,- интересно, кому вы её продадите?
                        +2
                        Прогноз типа «завтра будет то же, что и вчера» хорош как базовая модель, но совсем несложно придумать что-то более эффективное. А ещё лучше найти: ru.wikipedia.org/wiki/Категория: Анализ_временных_рядов
                          +2
                          Теперь все знают сколько блэйд серверов продает крок :)
                            0
                            А как вы посчитали эти 3%? Сравнили результаты до и после внедрения системы. Какова вероятность, что эта погрешнаость вызвана другими причинами?
                              0
                              И относительно этих 3% — сколько в сравнении к этой цифре стоит интегрировать ваш сервис с оплатой всех ваших услуг? + я так понимаю, этот сервис оказыается на абонентской основе (аналитика там, поддержка).
                                +1
                                Внедрение таких систем целесообразно для торговых сетей от 30 магазинов. Как правило система в зависимости от масштабов внедрения окупается от 3 до 9 месяцев.
                                  0
                                  понятно, спасибо. Грубо говоря через год система выходит на прибыль и имеем +2% к прибыли. Неплохо, конечно, но мне кажется в структурах от 30 магазинов можно наоптимизировать в других областях гораздо больше. Хотя 2% тоже деньги. Стоит ли игра свеч — тут уж решать магазинам.
                                    0
                                    Стоит.
                                    Оптимизация складывается из принципа (иногда)
                                    здесь 2%, тут 1%, здесь 1.5% и еще там 0.5%, и еще вот тут 0.7%

                                    В итоге 4.7% снижения расходов/увеличения прибыли

                                    Почти 5%, а это при больших (и средних, и иногда даже малых) оборотах — хорошая, приятная цифра )
                                  0
                                  Насколько мне известно, у крупных маркетов цифра оборота стремится к 500-900 млн. руб. в месяц. Нормально так 3% сэкономить…
                                +2
                                Учитываются как-то репутационные риски? Имеются ввиду то, что если Вася придет однажды и не сможет купить товар, т.к. его не будет, то вы не просто потеряете 100 рублей за 2 бутылки, но и имеете большой шанс потерять прибыль в будущем, т.к. больше не пойдет в этот магазин зная, что иногда там не бывает его любимого пива.
                                  0
                                  Да, учитываются, это определяется стратегией удовлетворения спроса — тренд от маркетологов, знающих, сколько стоят потеря и привлечение клиента, плюс после какого по счёту факапа магазина клиент больше не приходит. Все это является составляющими баланса потерь от недопрогноза и перепрогноза.
                                  0
                                  Интересно было бы еще почитать про вселенские перекосы спроса в выходные, праздники, праздники+выходные, каникулы и т.д. и прогнозирование продаж в эти моменты. Сколько надо завезти шампанского и куличей и насколько меньше пива продается в этот момент. Хотя кулич — это вообще товар одного дня в году? Ну и вообще что бывает забавного в работе аналитика. ;)
                                    +1
                                    Вот этот стартап пытается делать очень похожие вещи forecastnow.ru/. AllGrit что думаешь?
                                      +2
                                      Вопрос — читал ли автор Голдрата?

                                      Из своего опыта — лет 5 назад работал в торговой компании. Продукты из категории AX (A — небольшая группа товаров которые дают до 50% прибыли, X — по которым возможно более-менее точное прогнозирование) давали примерно 10% оборота (или даже меньше). Это в целом по фирме — а она была с филиальной структурой. В результате статистическое прогнозирование теряло всякий смысл. Я думаю, это типичная ситуация на рынке — отсюда всякие CRM системы и прочее (самая прибыльная группа была — AZ — то есть «эксклюзив» — то что только под заказ везется).

                                      А прибавьте наши реалии — когда можно купить китайскую «продукцию». Размер партии почти всегда очень большой и поставки редкие. Казалось бы — должно быть «замораживание» средств и неликвиды всякие — но поскольку цена (себестоимость) минимальная а кроме китайского ничего нигде нет — разгребают и его. Какая уж тут математика.
                                        +1
                                        Я не знаю, что за математика внутри системы, которую описывает автор. Но есть классические модели, где исходная посылка как раз звучит «смиритесь, что все непредсказуемо и стандартное отклонение огромно, оптимизируйте исходя из этого». Как пример newsvendor model. Голдрат — это наше всё, его первая книга «Цель» лежит на рабочем столе.
                                        0
                                        На этой презентации ужин был особенно крутым. Хотя над вопросами работы данного механизма тоже стоит подумать как интегрировать это или подобное решение.
                                          0
                                          Ни дата майнинга ни мат модели ничего… комментарии и то более полезны, 20 минут времени коту под хвост
                                            0
                                            А вам хотелось бы про это почитать? :) Ведь настоящие cutting edge вещи никто не расскажет, это все коммерческие секреты производителей соотв. софта :). Можно обычно только о базовых, классических подходах и алгоритмах рассказать. Но и то, кстати, немало.
                                            0
                                            Автор, написано хорошо и для посвящений в тему полезно, вы бы заодно (дополнительно) написали о таких понятиях, как safety stock (in days vs. in quantity) vs. service level in %, как он считается, а заодно о базовых алгоритмах планирования продаж, потом можно смотреть на более сложные алгоритмы (начиная от SMA, потом алгоритмы, учитывающие сезонность продаж разных товаров, различные promotions, распродажи, скидки и прочее). ЕЩе дальше — корреляцию между продажами взаимосвязных товаров (если цена на пиво упала в 2 раза, как изменяться продажи воблы) и прочее. Много чего можно написать :)
                                              0
                                              А как называется это направление деятельности — которое занимается аналитикой продаж, конверсий, средних чеков, строит красивые графики про пики продаж, и делает выводы типа «на складе надо держать 10 бутылок, плюс если передвинуть на витрине туборг на две бутылки ближе к кассе, то продажи вырастут на 10%»? :)
                                              Наверняка что-то такое есть, а если есть то может и книжки есть? И где почитать тогда?
                                                +2
                                                Из базового — Пако Андерхилл «Почему мы покупаем» и Сидоров «Розничные сети».
                                                  0
                                                  Спасибо! :)
                                                  А вы случаем не обновляете тот список рекомендованной литературы в вашем посте про книжки?
                                                    0
                                                    Обновляю раз в год новым постом. Уже два поста есть.
                                                    Пока сам не прочитаю и не обкатаю в сети на практике — не добавляю.
                                                0
                                                Из графика видно, что растет не только количество потребляемого пива, но и частота «запоев». Вася («герой» статьи) становится алкоголиком?
                                                  0
                                                  Кстати, почти оффтоп. Имеем план — мы должны заработать 100 000 рублей. Имеем 5 сортов пива, разные по стоимости и разное по количеству ( максимальное количество ограниченно), имеем понимание ( на основе опыта, либо такой же статистике продаж), какое из «пив» легче продавать. Как посчитать, сколько и какого пива надо продать, чтобы получить план? Каким алгоритмом воспользоваться?
                                                    0
                                                    А как она рекламные компании учитывает?…
                                                      0
                                                      В каких конторах пишут такой интересный софт?

                                                      Автор, Вы бы хотя-бы список литературы привели бы — чтобы можно было бы ознакомиться с предметом подробнее.
                                                        +1
                                                        Я бы сказал, что данная схема крайне однобокая, ориентированна только на удовлетворение спроса и грешит огромным количеством допущений, которые не упомянуты в начале рассказа.
                                                        — не учитывается срок поставки товара! В простейшем случае товар берется с центрально склада и привозится на след. день, но представьте что товар лежит в другом городе, или даже в другой стране, как например мониторы, которые плывут пару месяцев морем. В этом случае надо делать поправку на то, что срок товарногоразрыва будет ооочень большим.
                                                        — не учитывается фактор изменения цены. большие федеральные сети обычно получают прайс-протекшн, но если мы говорим о товаре, цена на который меняется быстро, или в частности, товар быстро дешевеет — то держать большой запас на складе для удовлетворения спроса уже невыгодно именно из-за того, что за время хранения цена падает ниже себестоимости.
                                                        — не учитывается маржинальность товара. для товара, на котором зарабатывают 2-5% нет смысла поддерживать измыточные запасы для покрытия всплесков. В то же время, если наценка составляет 100% — то можно хранить и 3-хкратный запас, т.к. первый же всплеск не вписывающийся в стандартное отклонение от среднего покроет все расходы на хранение.
                                                        — не учитывается фактор ограниченности финансовых ресурсов. Если финансы ограничены — то надо оптимизировать модель с поправкой на то, что некоторые позиции выгоднее поддерживать на минимальном уровне по причине их дороговизны.
                                                          0
                                                          Мне кажется в статье была показана часть системы, которая впоследствии дорабатывается под нужды компании

                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                        Самое читаемое