Есть вещь, которую я много раз видел в медиапланах по Telegram.

Собрали 20 каналов. У каждого выписали охват, цену, CPM. Отсортировали. Купили самые выгодные.

Всё выглядит логично, пока не задать один вопрос:

а сколько там вообще разных людей?

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

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

Я решил разобраться, можно ли это учитывать не «на глаз», а прямо в медиаплане.

Спойлер: можно. Но точность данных Telegram накладывает ограничения, и именно здесь начинается самое интересное.

С двумя каналами всё элементарно

Допустим:

  • канал A охватывает 100 000 человек;

  • канал B — 80 000;

  • 30 000 человек есть в обеих аудиториях.

Тогда наш реальный суммарный охват:

100 000 + 80 000 − 30 000 = 150 000.

В таблице было 180 тысяч контактов.

Людей — 150 тысяч.

Эти 30 тысяч мы посчитали два раза.

Пока всё просто.

Но я довольно быстро упёрся в вопрос: что вообще означает фраза «пересечение каналов — 30%»?

Те же 30 тысяч — это:

  • 30% первого канала;

  • 37,5% второго;

  • 20%, если считать относительно всей объединённой аудитории.

Поэтому процент overlap без знаменателя для расчётов почти бесполезен.

Telemetr действительно показывает общую аудиторию каналов, Telega.in тоже использует блок с общими подписчиками. Но в публичной документации, которую удалось проверить, не везде достаточно подробно описано, от какого именно знаменателя считается отображаемый процент. Поэтому для модели я бы по возможности всегда хранил абсолютное число общих пользователей, а не просто «27% overlap».

И тут я подумал: отлично, сделаем матрицу пересечений каналов и просто вычтем дубли.

Но это тоже не работает.

Третий канал ломает красивую формулу

Возьмём три канала:

  • A — 100 000;

  • B — 80 000;

  • C — 60 000.

И знаем попарные пересечения:

  • A и B — 30 000;

  • A и C — 20 000;

  • B и C — 15 000.

Хочется сложить три аудитории и вычесть три пересечения.

Но есть люди, которые находятся сразу во всех трёх каналах.

Их мы при таком расчёте вычтем несколько раз.

Поэтому настоящая формула выглядит так:

уникальная аудитория = A + B + C − AB − AC − BC + ABC

Где:

  • A, B, C — размеры трёх аудиторий;

  • AB, AC, BC — попарные пересечения;

  • ABC — люди, состоящие одновременно во всех трёх.

Для наших чисел получается:

175 000 + ABC.

Если одновременно во всех трёх состоят 5 тысяч — unique reach будет 180 тысяч.

Если 15 тысяч — уже 190 тысяч.

При этом размеры каналов и все попарные пересечения абсолютно одинаковые.

Вот здесь у меня и сломалась первоначальная идея.

Даже если сервис отдаст идеальную таблицу попарных пересечений 30 каналов, точный совокупный unique reach из неё восстановить нельзя. Нам неизвестны тройные, четверные и более сложные пересечения.

Значит, задача немного меняется.

Мне уже не обязательно знать точное число всех уникальных людей.

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

сколько новых людей примерно добавит следующий канал к тому, что я уже купил?

Вот эта метрика оказалась намного полезнее

Назовём её incremental reach — дополнительный охват.

Допустим, у меня уже есть несколько купленных каналов.

Я смотрю новый канал X:

  • его охват — 50 000;

  • с первым купленным каналом пересекаются 15 000;

  • со вторым — 10 000.

Проблема: часть этих 15 и 10 тысяч может быть одними и теми же людьми.

Поэтому я не могу просто сказать:

50 − 15 − 10 = 25 тысяч новых.

Но могу посчитать границы.

В худшем для нас случае группы почти не совпадают:

новых будет минимум 50 − 15 − 10 = 25 тысяч.

В лучшем случае эти 10 тысяч почти целиком уже входят в те 15:

новых будет максимум 50 − 15 = 35 тысяч.

Получается:

этот канал добавит примерно от 25 до 35 тысяч новых людей.

Уже достаточно полезно.

Если он стоит 100 тысяч рублей — возможно, мне вообще не нужна точность до пользователя. Диапазон и так показывает, насколько покупка разумна.

Это первое правило, которое я бы реально перенёс в рабочую таблицу:

не пытаться насильно получать точное число там, где исходные данные его не дают.

Иногда диапазон честнее и полезнее.

Но для сортировки каналов всё равно нужна одна цифра

Когда кандидатов двадцать, сравнивать диапазоны неудобно.

Поэтому я попробовал простую модель.

Берём канал X.

Пусть:

  • R — его охват;

  • I₁ — сколько его аудитории пересекается с первым уже купленным каналом;

  • I₂ — со вторым;

  • дальше по аналогии.

Для каждого считаем долю пересечения:

I / R

Например:

канал охватывает 50 000 человек;

с первым пересекается 10 000.

Значит:

10 000 / 50 000 = 20%.

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

То есть:

Новый охват ≈ R × (1 − I₁/R) × (1 − I₂/R) × ...

Простой пример.

Канал X:

  • reach = 50 000;

  • overlap с A = 20%;

  • overlap с B = 10%.

Тогда:

50 000 × 0,8 × 0,9 = 36 000 новых пользователей.

Почему это только оценка?

Потому что мы делаем допущение, что пересечения внутри X достаточно независимы.

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

Но у неё есть хорошее свойство: её можно посчитать в Google Sheets за секунду.

А рядом оставить нижнюю и верхнюю границы.

Получается уже не магическое число, а:

минимум / рабочая оценка / максимум.

В синтетической модели из исследования такая pairwise-оценка ошибалась относительно известных нам реальных множеств примерно на 0,35–2,5% в трёх сценариях. Это не доказательство, что она будет так же точна в Telegram — модель специально была построена достаточно гладкой. Но для меня этого достаточно, чтобы рассматривать формулу как рабочую гипотезу, которую потом можно калибровать своими данными.

И тут обычный CPM начинает выглядеть подозрительно

Допустим, есть канал:

  • охват — 100 000;

  • цена — 100 000 ₽.

CPM:

1 000 ₽.

Хорошо.

Но после уже купленных площадок он добавляет только 20 000 новых пользователей.

Фактически я плачу:

100 000 / 20 000 × 1000 = 5 000 ₽

за тысячу дополнительной аудитории.

Я называю это incremental CPM, или просто iCPM:

iCPM = цена канала / новые пользователи × 1000

Теперь сравним с маленьким каналом:

  • охват — 40 000;

  • цена — 50 000 ₽;

  • новых пользователей — 35 000.

Получаем:

50 000 / 35 000 × 1000 ≈ 1 429 ₽.

То есть большой канал:

обычный CPM = 1 000 ₽iCPM = 5 000 ₽

Маленький:

обычный CPM = 1 250 ₽iCPM = 1 429 ₽

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

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

И вот это уже меняет сам принцип выбора площадок.

Я проверил идею на десяти синтетических каналах

Реального публичного benchmark по пересечениям Telegram я не нашёл.

Есть кейс OneSpot, где внутри их собственной базы использовались ориентиры около 30% пересечения для узких тематик и 20% для широких. Но там нет достаточной методологии, чтобы объявить:

среднее пересечение Telegram — 20–30%.

Так делать я не хочу.

Поэтому в исследовании построена синтетическая популяция из 400 тысяч пользователей и десять условных каналов.

Это не настоящие Telegram-каналы.

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

Три сценария:

LOW — аудитории пересекаются слабо.

MEDIUM — заметно.

HIGH — крупные каналы в основном вращаются вокруг одного ядра людей.

Бюджет — одинаковый:

280 000 ₽.

Сравнил две стратегии.

Первая — максимально знакомая:

покупаем самые крупные каналы, пока хватает денег.

Вторая:

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

Результат получился такой:

Сценарий

По размеру

С учётом overlap

Разница

LOW

210 966 unique

214 945

+1,9%

MEDIUM

175 632

188 898

+7,6%

HIGH

136 420

177 973

+30,5%

И мне особенно нравится первая строка.

Потому что она не подтверждает красивую гипотезу.

При слабом пересечении вся дополнительная математика почти ничего не дала. Более того, overlap-aware стратегия чуть хуже вышла по цене тысячи уникальных пользователей.

То есть я бы не стал теперь добавлять десять формул в каждый медиаплан.

Если аудитории достаточно разные, проблема почти отсутствует.

Но при HIGH-overlap картина переворачивается.

Обычная стратегия формально покупает 279 тысяч охвата.

Overlap-aware — только 261 тысячу.

По обычной таблице первая выглядит лучше.

В реальности модели:

136 тысяч уникальных против 178 тысяч.

Меньше «бумажного охвата».

На 30,5% больше людей.

Вот ради таких ситуаций всё это и имеет смысл считать.

Самый неприятный пример — третий крупный канал

В HIGH-сценарии стратегия по размеру последовательно покупает три крупных канала.

Первый:

  • reach — 105 000;

  • новых — 105 000;

  • iCPM ≈ 952 ₽.

Всё прекрасно.

Второй:

  • reach — 92 000;

  • новых после первого — всего 21 769;

  • iCPM ≈ 4 042 ₽.

Уже неприятно.

Третий:

  • reach — 82 000;

  • новых после первых двух — 9 651;

  • iCPM ≈ 8 082 ₽.

А его обычная цена всё ещё выглядит нормально.

Вот этот момент мне кажется главным.

Канал не стал хуже.

У него тот же контент, та же аудитория, тот же прайс.

Просто мы уже купили почти всех его людей где-то ещё.

Ценность площадки нельзя полностью оценить отдельно от медиаплана, в который мы её добавляем.

Это сильно меняет взгляд на фразу:

«Этот канал у нас хорошо работает».

Мой следующий вопрос теперь:

На каком этапе медиаплана?

Потому что вторым он может быть прекрасным.

Десятым — уже бессмысленным.

Как бы я собирал такой медиаплан сейчас

Без сложной математики процесс получается довольно короткий.

Сначала собираю нормальный список подходящих каналов и выкидываю нерелевантные. Низкое пересечение с каналом про корейские сериалы не делает его хорошей площадкой для SaaS.

Дальше для каждого храню:

  • рабочий reach;

  • стоимость;

  • пересечения с остальными.

Первую площадку выбираю как обычно.

После неё для каждого следующего считаю:

сколько новой аудитории он примерно добавляет;

и:

сколько стоит тысяча этой новой аудитории.

После каждой покупки показатели пересчитываются.

В какой-то момент получится примерно так:

Канал

Охват

Новый охват

Доля новых

iCPM

A

82k

82k

100%

951 ₽

B

57k

41k

71%

1 352 ₽

C

26k

17k

64%

1 620 ₽

D

22k

13k

59%

1 771 ₽

E

39k

21k

53%

2 043 ₽

F

35k

16k

46%

2 377 ₽

Мне нравится смотреть именно на этот ряд.

Он показывает момент насыщения намного лучше количества купленных каналов.

Не существует правила:

после десяти каналов аудитория выжжена.

Зато существует вполне конкретная ситуация:

следующий релевантный канал добавляет всё меньше новой аудитории, а стоимость этой аудитории растёт.

Вот это уже причина остановиться.

Есть одна проблема: подписчики — ещё не рекламные показы

И вот здесь я бы не стал делать вид, что мы решили deduplication Telegram Ads окончательно.

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

Человек может:

  • состоять в обоих каналах и не читать ни один в нужный период;

  • читать только один;

  • быть Premium-пользователем, которому sponsored messages по умолчанию скрыты;

  • просто не получить показ из-за аукциона и доступного инвентаря.

Telegram не даёт рекламодателю публичную user-level карту всех людей из выбранных каналов, по которой можно идеально дедуплицировать прогноз. TGStat тоже не документирует API с subscriber intersections; его данные удобнее использовать для поиска похожих каналов, связей, упоминаний и потенциальных кластеров.

Поэтому subscriber overlap я бы использовал не как:

«точно 31 284 показа будут дублями».

А как сигнал:

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

Для прямых посевов я бы вообще старался работать ближе к охватам постов, а не к общему числу подписчиков.

И всё-таки overlap не надо уничтожать

В процессе расчётов легко скатиться в новую крайность:

чем меньше пересечение — тем лучше канал.

Тоже нет.

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

Но реклама существует ещё и через frequency.

Повторный контакт может быть полезен.

В классическом медиапланировании давно считают не только reach, но и frequency, а Nielsen отдельно использует понятия incremental/deduplicated reach и точки убывающей отдачи.

Поэтому я бы не оптимизировал медиаплан под минимальный overlap.

Я бы оптимизировал его под:

максимальную добавочную ценность следующей покупки.

Иногда это новая аудитория.

Иногда — хороший второй контакт.

Но я хочу хотя бы понимать, за какой именно из этих двух продуктов плачу деньги.

Что в итоге изменилось у меня в голове

Я начинал с довольно простой мысли:

надо учитывать пересечения каналов.

После расчётов она стала немного другой.

Сам канал почти не имеет фиксированной медиаплановой ценности.

Есть цена площадки.

Есть её охват.

А есть ещё третья величина — сколько она добавляет именно к тому плану, который уже собран.

И эта величина постоянно уменьшается.

Поэтому вместо:

CPM канала = 1 000 ₽

мне теперь интереснее:

мы уже купили шесть площадок; сколько новых релевантных людей даст седьмая и сколько я заплачу именно за них?

Это уже другой медиаплан.

И мне кажется, он гораздо ближе к тому, что мы на самом деле покупаем.


Я думаю следующим шагом собрать из этой модели готовый Google Sheets-калькулятор: загружаешь каналы, цены и матрицу пересечений — он сам пересчитывает incremental reach, диапазон возможного охвата и iCPM после каждой выбранной площадки.

Если такой инструмент нужен — напишите в комментариях. Если наберётся интерес, соберу и выложу шаблон.

А ещё интереснее услышать тех, кто уже реально считает дедупликацию в Telegram: как вы решаете пересечения трёх, пяти, двадцати каналов и на каком уровне данных?

В своём Telegram-канале я разбираю Telegram Ads и медиапланирование уже без формата «пять советов начинающему».

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