Стратегия работы с RTB сетями для максимизации прибыли

Большинство современных источников трафика работает по RTB. В аффилейт маркетинге мы выступаем рекламодателями и формируем требования к трафику (гео, браузер, тип устройства и т.д.), указываем цену. Система пытается нам подобрать трафик соответствующий данным условиям. В аукционе участвуют тысячи, иногда сотни тысяч сайтов. Если наша ставка выигрывает, мы получаем просмотр нашего креатива, либо посетителя, если используем pop/redirect трафик. Важно понимать, что мы покупаем посетителя, и он может прийти с любого сайта или приложения, подключенного к системе. В дальнейшем такие источники мы будем называть пабами (от publisher). Зачастую трафик на разных пабах отличается качеством и один паб может с ходу конвертить в плюс. Другой будет нести конверсии, но выплат по ним будет хватать только на слив в ноль. Третий будет минусить, а четвертый будет сливать исключительно ботовый трафик.

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

В этой статье я расскажу про основные математические подходы к анализу трафика и покажу как автоматизировать работу с трафиком

Итак, перед нами стоит ряд проблем, которые мы будем решать:

  1. Трафик идет, но конверсий нет. Когда нужно останавливать трафик?
  2. Паб конвертит. Выйдет ли он на нужный нам ROI?
  3. Возможно мы выкупаем ботовый трафик. Как это определить и остановить трафик на ранних этапах?

Если трафик идет, но нет конверсий, то мы используем следующую формулу:

N = ln(B)/ln(1-CCR) где

B – единица минус вероятность ошибки

В идеале B = (1-0,95), но при такой вероятности необходимо выкупить достаточно много трафика, я использую B = (1-0,8).

CCR =((ROI*Cost)+Cost)/(Clicks* Pay).

ROI – тот ROI который вы желаете получить сливая трафик. Для ROI в 100% – единицу, 200% – двойку, 50% – 0.5.

Cost – то, сколько вы уже потратили на трафик с данного паба.

Clicks – количество кликов, которые вы купили.

Pay – выплата за конверсию.

Если мы слили количество кликов больше N и не получили конверсий, то останавливаем  трафик с этого паба.

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

Рассмотрим теперь ситуацию когда у нас появились конверсии, но паб идет в небольшой минус. Нам нужно понять на каком этапе останавливать траф.

CX = CCR + (-1,64)*SQRT(CCR*(1-CCR)/Clicks).

CR = Leads/Clicks, где:

Leads – количество конверсий.

Если CR< CX, то мы блокируем данный паб.

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

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

Рассмотрим теперь ситуацию при которой нам сливают ботовый трафик. В большинстве случаев покупаемый вами трафик будет разбавлен ботами. Если при этом паб идет в плюс, и у рекламодателя нет претензий по качеству, то мы не обращаем на ботов внимания. Но в некоторых вертикалях боты достаточно хорошо конвертят, и как результат – вас попросят остановить трафик. Хотя если бы вы вовремя отсекли ботовые пабы, то продолжали бы работать с данным оффером.

Так же детект ботовых пабов помогает на этапах тестирования оффера и креативов. Вы можете остановить трафик с пабов, процентное составляющее ботов на которых превышает определенный уровень. В дальнейшем когда вы оттестируете креативы, вы сможете изменить формулу и покупать трафик с более ботовых пабов. Но я хочу предупредить вас, что отключение ботовых пабов очень сильно зажимает объем получаемого вами трафика. При этом ботовые пабы могут идти в хороший плюс за счет низкой цены трафика с них. У меня был пример, когда на пабе было 99% ботов, а оставшийся 1% живых людей позволял работать с положительным ROI.

Для понимания того как детектить ботов, разберем их типы и виды.

Боты могут попадать на лендинг как с десктопных машин (как вариант с серверов, размещенных в датацентрах), так и с мобильных устройств.

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

Рассмотрим особенности детекта ботов при закупке мобильного трафика. Здесь может быть два источника.

Первый – десктопы имитирующие телефоны. В этом случае мы на лендинге пытаемся получить информацию о наличии ориентации экрана, движении, наличии камер и т.п. Если хотя бы один параметр отсутствует, можем считать этого посетителя ботом.

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

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

Тут я обычно пользуюсь универсальными методами детекта ботов, которые подходят и для десктопа, и для мобайла. К ним можно отнести отсутствие возможности установить куки, отличие таймзоны бота от таймзоны целевого гео, отсутствие картинок и т.д. Так же к универсальным способом детекта ботов относится третья рекапча, которая выдает оценку качества трафика от 0.1 до 0.9.

Возможность детекта ботов позволяет не только сэкономить бюджет на трафик, но и написать клоакер, который защитит ваш лендинг от большинства спай-сервисов и модераторов источника трафика. Вместе с LP Protect https://docs.binom.org/lp-protect.php от бинома ваши серые лендинги будет практически невозможно увидеть тем, кому их видеть не нужно. Обычно я использую следующую схему.

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

Теперь рассмотрим как анализировать данные о ботовости полученные на лендинге. В биноме есть система событий, которые передают в трекер данные с лендинга https://docs.binom.org/events.php. Первоначально я считаю любого посетителя ботом, и только если скрипты показали, что посетитель человек, я передаю в трекер в событие отвечающее за ботовость еденицу. Это позволяет автоматом детектить ботов не исполняющих javascript. Дополнительно я передаю в события ряд параметров, которые помогают видеть качество трафика. Вся эта информация группируется и отображается в отчетах бинома. Для этого нужно в настройках добавить нужные столбцы:

И эти столбцы появятся в отчетах.

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

Так же бином позволяет обновлять токены с лендинга https://docs.binom.org/lp-update-tokens.php. В отличии от событий в которые мы можем передать только число, в токены мы можем передать любую информацию, которая поможет нам анализировать трафик. Я передаю в токены дополнительную информацию о времени загрузки лендинга, таймзоне посетителя, реальном ip, если был детектнут проксированный трафик и т.д. Для примера, список значений полученный от рекапчи для отдельного паба.

Теперь мы знаем как рассчитывать стоимость трафика для нужного ROI и как детектить ботовые пабы. Руками анализировать большое количество пабов невозможно, поэтому будем автоматизировать эту работу. В качестве источника трафика возьмем zeropark.com. В этом источнике мы можем назначать цену для каждого паба и корректировать ее по API. Так же источник позволяет по API останавливать трафик с пабов. В качестве инструмента для автоматизации будем использовать зеннопостер https://zennolab.com/ru/. Данный софт не требует специальных знаний программирования, и любой человек может автоматизировать работу с биномом и источником с его помощью.

Анализируя трафик на ботовость я стараюсь получить данные о ботах со всех кампаний работающих в источнике. Часто пабы отливают понемногу ботового трафика, и для принятия решения в разрезе одной кампании нужно купить ботов достаточно много. Но если анализировать количество трафика по отдельному пабу в рамках всех запущенных кампаний, то мы можем выявлять ботовые пабы на ранних этапах, не сливая на них больших бюджетов. Мы будем использовать базу данных для анализа.

Бином позволяет сделать выборки по нескольким кампаниям, для этого достаточно выделить чекбоксами несколько кампаний и нажать Report, и мы получим нужные данные. Но нам нужно будет делать такие обращения очень часто, а это лишняя нагрузка на сервер, которую можно избежать. Достаточно запросить отчет по API по каждой кампании и сложить результаты в базу данных, а уже из нее получать нужные нам параметры.

В качестве базы данных мы будем использовать MySQL. Для этого просто устанавливаем Open Server https://ospanel.io/. Вам достаточно скачать его и выставить следующие настройки

и запустить.

В биноме работа с API реализована просто великолепно. Нам достаточно сделать любой отчет, после этого добавить к урлу отчета API key, и при вызове полученного урла мы получаем отчет в формате JSON. Зеннопостер умеет работать с данными в формата JSON и складывать полученные результаты в базу данных. Достаточно соединить мышкой несколько кубиков, и у нас  все данные о кампании сохранены в базе.

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

Аналогичным образом мы будем получать данные из зеропарка. Зеннопостер позволяет нам сформировать POST запрос с передачей API key зеропарка в заголовке.

Далее мы разбираем JSON ответа и добавляем его в базу данных. Тут кубиков будет немного больше, но ничего сложного в них нет.

Отдельно остановлюсь на том, почему я беру данные по кликам из источника, а не из бинома. Как вы знаете, недоход трафика составляет достаточно существенный процент. В зависимости от источника и гео он может достигать 70%. Если рассматривать недоход по конкретным пабам, то вы увидите, что на одних пабах он может достигать 2-3%, а на других 100%, т.е. паб дергает код источника и обрывает соединение. В результате в статистике источника переходы есть, а в трекере их нет. Для того, что бы учитывать трафик с таких пабов, я и делаю выгрузку данных из источника в базу для анализа.

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

Алгоритм работы следующий. Мы получаем трафик по установленному среднему биду. Если на пабе происходит конверсия, то цена паба повышается до цены, при которой мы сохраняем нужный нам ROI. Если данная цена выше максимального бида для паба, то будет установлена его максимальная цена. Со временем стоимость выкупленного трафика возрастает и паб начинает уходить в минус от установленного ROI, тогда система будет снижать бид, стараясь удержать ROI паба на заданном уровне. Если у паба нет конверсий, то система отливает трафик с паба до значения при котором он потенциально не сможет выйти на установленный ROI, после чего она начинает снижать бид. При достижении минимального бида и отсутствии вероятности выйти на нужный ROI система блокирует паб.

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

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

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

Создаем проект, который будет отвечать за блокировку/разблокировку убыточных пабов

А так же за блокировку/разблокировку ботовых пабов.

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

Повышение цены происходит при получении дополнительных конверсий. Система пересчитывает стоимость клика с целью получить больше трафика.

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

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

Комменты