Скидка 10%: какой рост продаж нужен, чтобы сохранить прибыль

Маркетинг предлагает скидку десять процентов и ждёт рост числа заказов на сорок процентов. Выручка действительно может вырасти: цена станет ниже в 0,9 раза, заказов станет больше в 1,4 раза, произведение равно 1,26. Но закупочная стоимость товара и расходы на обработку каждой покупки не уменьшаются вместе с ценой. Для оценки акции нужен расчёт вклада в прибыль.

Построить экономику одной дополнительной продажи

Возьмём условный товар с ценой 1000 рублей, себестоимостью 700 и переменными расходами на обслуживание 50 рублей. До акции с единицы остаётся 250 рублей. Скидка снижает цену до 900, поэтому остаётся 150. Компания отдаёт сто рублей из прежних двухсот пятидесяти, то есть сорок процентов вклада с продажи. Именно поэтому десятипроцентная скидка требует гораздо большего роста объёма.

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

Найти порог по числу заказов

Чтобы сохранить прежний суммарный вклад, нужно разделить базовый вклад периода на новый вклад одного заказа. При тысяче заказов база составляет 250 тысяч рублей. Деление на 150 даёт 1666,67 заказа, а продать дробную покупку нельзя: требуется минимум 1667. В относительном выражении необходим рост примерно на 66,7%, если объёмы достаточно велики и округлением можно пренебречь.

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

from decimal import Decimal, ROUND_CEILING
price = Decimal('1000')
product_cost = Decimal('700')
variable_service = Decimal('50')
discount = Decimal('0.10')
base_orders = 1000
forecast_orders = 1400
margin_before = price - product_cost - variable_service
margin_after = price * (1-discount) - product_cost - variable_service
assert margin_after > 0
base_profit = margin_before * base_orders
break_even_orders = int((base_profit / margin_after).to_integral_value(rounding=ROUND_CEILING))
forecast_profit = margin_after * forecast_orders
print({'margin_before': str(margin_before), 'margin_after': str(margin_after),
       'break_even_orders': break_even_orders,
       'forecast_profit': str(forecast_profit),
       'difference': str(forecast_profit-base_profit)})
assert margin_before == 250 and margin_after == 150
assert break_even_orders == 1667
assert forecast_profit-base_profit == -40000
assert margin_after*1666 < base_profit <= margin_after*1667

Прогноз сорок процентов не проходит проверку

При 1400 заказах акция даёт 210 тысяч рублей вклада, на сорок тысяч меньше базы. Выручка при этом вырастает с миллиона до 1,26 миллиона. Такой результат объясняет, почему красивый отчёт по обороту может скрывать ухудшение экономики. Решение зависит от цели акции: если цель — сохранить текущую прибыль, этот прогноз недостаточен.

В примере проверяется точный порог: 1666 заказов ещё не хватает, 1667 уже хватает. Decimal сохраняет десятичную арифметику, а округление вверх применяется только к требуемому целому количеству. Когда цена после скидки содержит доли копейки, сначала применяют утверждённое денежное округление, а затем рассчитывают вклад и порог: порядок действий влияет на граничный заказ.

Какие изменения способны сдвинуть порог

Переменные расходы могут расти ступенчато. Дополнительный объём потребует второй смены, сверхурочной доставки или аренды временного склада. Тогда формула с постоянными 50 рублями на заказ перестаёт описывать всю акцию. Полезно посчитать несколько диапазонов объёма и явно включить затраты, которые появляются при переходе через производственную границу.

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

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

Следующий шаг

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

Продолжить на практике

  • Практическая аналитика данных ↗

    Превратите знания SQL или Python в аналитическую работу: проверяйте данные, считайте бизнес-метрики, стройте дашборды и объясняйте выводы на трёх прикладных кейсах.