Есть вещь, которую я много раз видел в медиапланах по 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.