Почему скидки продавца перемножаются, а не складываются?

Скидка 20%, а следом 10% — это 28%, а не 30%. Причина простая: каждая скидка считается от своей базы.

31 июля 2026 · 3 мин

Почему скидки продавца перемножаются, а не складываются?

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

У второго процента база меньше

Начинаем со 100%. После скидки 20% остаётся 80%. Скидка 10% снимает 10% уже с этих 80%, то есть 8% от исходной суммы. Итого: 20% + 8% = 28%.

Combined = 1 − (1 − 0,20) × (1 − 0,10) = 0,28

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

На длинной цепочке ошибка заметнее. Для скидок 20%, 10% и 5% сложение даёт 35%. Умножение даёт:

1 − (0,80 × 0,90 × 0,95) = 31,6%

То есть аддитивный план занижает нужную сумму на 5,2%. К моменту, когда расхождение всплывает, клиент уже видел прежнюю цифру. Формулу поправить легко, коммерческое ожидание — нет.

Скидка — это множитель внутри цепочки CPP

Совокупная скидка не лежит безобидно в нижней строке расчёта. Она меняет эффективный CPP, а тот — бюджет, сплит по каналам и пересчёт в TRP.

base_cpp30 × (1 + сезонность) × (1 − суммарная скидка) × (1 + uplift)

CPP в этом расчёте — плановый прокси, а не реальная контрактная цена. Его задача — единообразно связать вес контакта и объём. Он не доказывает ни фактическую стоимость, ни экономию, ни ROI.

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

Порог скидки создаёт второй цикл

Порог определяется бюджетом, который мы заявляем продавцу в Shop List. Но бюджет, необходимый для целевого TRP, уже считается со скидкой этого порога. Бюджет выбирает скидку, скидка меняет бюджет.

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

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

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

Проверка за минуту

Введите 20% и 10% в модель, по которой считаются живые кампании. Если в ячейке совокупной скидки 0,28 — скидки последовательные. Если 0,30 — их складывают. Дальше посмотрите, возвращается ли полученный бюджет обратно в выбор порога скидки: правильное умножение без итерации по порогам оставляет половину механизма нерешённой.

FAQ

Почему скидки продавца перемножаются?

Потому что каждая скидка применяется к сумме, оставшейся после предыдущих. Базы разные, поэтому остаточные множители перемножаются.

Сколько вместе дают скидки 20% и 10%?

Вместе они дают 28%: 1 − (0,80 × 0,90). Сложение до 30% по ошибке применяет вторую скидку к исходной базе.

Как складываются три скидки?

Перемножьте все остаточные множители и вычтите из единицы. Для 20%, 10% и 5%: 1 − (0,80 × 0,90 × 0,95) = 31,6%.

Проверьте на своём плане

Ровно эту математику считает за вас TV Budgeting — в обе стороны, TRP → бюджет и бюджет → TRP, с итерацией порогов скидок.

Запросить демо →