Выручка выросла на 2%: как разделить вклад заказов и среднего чека

В сентябре магазин получил 200 тысяч рублей со 100 заказов, в октябре — 204 тысячи со 120 заказов. Рост выручки всего 2%, хотя заказов стало на 20% больше. Руководителю нужно объяснить, какая часть изменения связана с числом заказов, а какая — с суммой одного заказа.

Для этого недостаточно поставить рядом три процента. Средний чек упал с 2000 до 1700 рублей, то есть на 15%. Складывать +20% и −15% нельзя: выручка получается умножением числа заказов на чек. Чтобы получить понятные денежные вклады, зафиксируем порядок подстановки двух факторов.

Сначала договоритесь, какие заказы считаются

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

В примере выручка — согласованная сумма продаж из аналитической витрины за полный месяц. Средний чек равен этой сумме, делённой на число учитываемых заказов. Правило может отличаться между компаниями; для сравнения двух месяцев оно должно оставаться одним и тем же. Отнесение возврата к периоду подробно разобрано в статье о дате продажи и дате возврата.

Замените факторы по очереди

Обозначим число заказов через N, средний чек через A. Выручка R = N × A. Сначала увеличим заказы со старого N₀ до нового N₁, сохранив старый чек A₀. Получим вклад заказов (N₁ − N₀) × A₀: двадцать дополнительных заказов по 2000 рублей дают +40000.

Затем заменим чек на A₁ уже при новом числе заказов N₁. Вклад чека равен N₁ × (A₁ − A₀): 120 заказов теряют по 300 рублей, итого −36000. Сумма вкладов +4000 совпадает с наблюдаемым ростом выручки.

Полная формула: R₁ − R₀ = (N₁ − N₀) × A₀ + N₁ × (A₁ − A₀). Она включает совместное изменение факторов. Если вместо N₁ во втором слагаемом подставить N₀, появится остаток: изменения перестанут сходиться с итогом.

Проверьте расчёт без округления

В коде Fraction хранит точные дроби. Промежуточный чек может иметь бесконечную десятичную запись; округление до копеек до завершения расчёта создаст расхождение вкладов с общей суммой. Выполните пример стандартным Python.

from fractions import Fraction

def decompose(orders0, revenue0, orders1, revenue1):
    if orders0 <= 0 or orders1 <= 0:
        raise ValueError("AOV requires a positive order count in both periods")
    aov0 = Fraction(revenue0, orders0)
    aov1 = Fraction(revenue1, orders1)
    by_orders = (orders1 - orders0) * aov0
    by_aov = orders1 * (aov1 - aov0)
    delta = revenue1 - revenue0
    assert by_orders + by_aov == delta
    return aov0, aov1, by_orders, by_aov, delta

result = decompose(100, 200000, 120, 204000)
assert result == (2000, 1700, 40000, -36000, 4000)
for label, value in zip(
    ["aov0", "aov1", "orders contribution", "aov contribution", "delta"],
    result
):
    print(label, value)

assert decompose(3, 10, 7, 23)[2:] == (
    Fraction(40,3), Fraction(-1,3), 13
)
assert decompose(10, 100, 10, 100)[2:] == (0, 0, 0)

Второй тест специально использует дробные чеки: 10/3 и 23/7. Он проверяет, что равенство остаётся точным и за пределами удобного целочисленного примера. Округляйте только итоговые значения для отображения. При отсутствии заказов в одном периоде чек не определён; функция останавливает такой расчёт, а в отчёте нужно отдельно показать появление или исчезновение продаж.

Как читать два вклада

Существует и обратный порядок: сначала поменять чек на старом числе заказов, затем заказы при новом чеке. Тогда вклады будут −30000 и +34000. Общая разница останется +4000. Поэтому подпишите выбранный порядок и сохраняйте его между отчётными периодами.

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

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