Методика расчёта

Как мы считаем эффект замен

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

Предмет счёта

Что мы называем заменой

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

Эффект замены — деньги, которые принесло само это решение. Не работа оператора, не сезон, не изменение цен.

Единица измерения

Считаем по промежуткам между приездами

Отрезок от одного приезда оператора до следующего. Внутри такого отрезка полка не меняется: что загрузили, то и продаётся. Это и позволяет сравнить «что есть» с «что было бы».

Границы отрезка — по факту, а не по графику

Приезды берутся из документов обслуживания с точным временем. Два приезда в один день — это два разных отрезка: подневные данные слепили бы их в один и потеряли бы прирост.

Прирост — только штуки сверх прежнего места

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

Главное правило

Что вычитаем за прежний товар

Здесь живёт вся честность расчёта, поэтому правило одно и оно короткое. Раньше на его месте был список исключений, который отставал от кода; теперь все случаи выпадают из одной строки.

потеря в штуках = min(спрос, мест было) − min(спрос, мест стало)

Спрос — сколько товар продавал за такой же отрезок до замены: его скорость за 30 дней до того, как у него забрали место, умноженная на рабочие дни отрезка. Рабочие дни — дни отрезка за вычетом каникул. Места — ёмкость его ячеек до и после.

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

Из этой одной строки выпадают все три случая, которые встречаются на практике, — считать их по отдельности не нужно.

01

Товар стоял мёртвый — его не покупали

потеря = 0

Спрос равен нулю, значит нулю равны обе половины формулы. Именно такие ячейки алгоритм ищет в первую очередь: они не приносят ничего и занимают место.

02

Продавался, но хуже прочих — вывели совсем

потеря настоящая, считаем полностью

Мест не осталось вовсе, второе слагаемое обнуляется, и вычитается весь его спрос. Ровно то, что он зарабатывал, — и не меньше.

03

Ячеек было несколько — забрали лишнюю

потеря = 0

Если спрос помещается в оставшиеся места, обе половины формулы равны спросу и разность обнуляется сама. Место было лишним — изъятие ничего не отняло.

Случай 03 на боевых числах

Забрали ячейку — вода не просела

Автомат на транспортном узле, 16 июня 2026 года. У воды было четыре ячейки, одну отдали энергетику.

17,75шт в день — вода до того, как у неё забрали ячейку
18,07шт в день — вода после. Не просела
0 ₽вычет за воду: ожидание минус факт ушло в минус
3,67шт в день продаёт энергетик на освободившейся ячейке

Место было лишним: вода как продавалась, так и продаётся, и весь заработок энергетика на этой ячейке — чистый прирост. Рост воды при этом мы себе не записываем: он от июньской жары, а не от нашего решения.

Продавай вода 18 бутылок при 20 местах — вычет стал бы настоящим, и мы бы его сделали, как бы хорош ни оказался энергетик.

Откуда берутся деньги

Цена и себестоимость — по лестнице, а не «откуда есть»

Штуки переводятся в рубли по явному порядку источников, одинаковому для обоих концов замены — и для нового товара, и для вытесненного.

  1. Своя точка. Цена и маржа этого товара в этом автомате — факт из учётной системы.
  2. Тот же товар по сети — но только доля наценки. Цена всё равно берётся своя, из чеков этой точки.
  3. Товара нет нигде — средняя доля наценки по сети к своей цене. Если и цены нет, замена в расчёт не идёт вовсе.

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

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

Поправки

Четыре оговорки, и каждая проверяемая

Три из них работают против нас, одна — в нашу пользу, и о ней сказано так же прямо.

Каникулы вычёркиваются целиком

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

Вернули товар — вычет прекращается

Алгоритм сам возвращает вытесненный товар, если новый оказался хуже. Если в отрезке этот товар снова загружали — он опять на полке и торгует, и вычитать «недополученное» больше нечего. Исправленную ошибку не наказываем дважды.

Не довезли — минус снимается

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

Выручку прежнего товара вычитаем тоже

Тем же числом штук, что и валовую прибыль, — просто умноженным на его цену, а не на маржу. Без этого «прирост выручки» был бы всей выручкой нового товара, а это не прирост.

Границы

Что заменой не считается вовсе

Отсеянное не теряется: каждая задача, не попавшая в расчёт, попадает в счётчик с причиной — их видно в отчёте прогона.

Не перепутать

Две цифры, которые легко спутать

Прирост выручки

Деньги покупателей: выручка нового товара за отрезок минус выручка, которую недодал вытесненный.

Прирост валовой прибыли

То, что осталось от этих денег после закупочной цены товара. Работать надо на неё: именно она отражает, что решение принесло бизнесу.

Маржа за штуку берётся из учётной системы, а не выводится из цены: наценка по позициям разная, и «средний процент» здесь врал бы.

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

Честно

Где мы сознательно занижаем

Этот список важнее прочих: он показывает, в какую сторону мы ошибаемся, когда ошибаемся.

Проверка

Как нас проверить

Любая замена раскрывается до чисел

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

Спор — на конкретной замене

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

Все числа считаются по тем же кассовым данным, по которым вы сводите выручку. Своей «параллельной» статистики у расчёта нет.

Посчитаем то же самое на вашей базе

Аудит базы бесплатный: подключаемся на чтение, показываем, что мешает считать, и на чём эффект будет виден первым.

Оставить заявку