Привет! Меня зовут Дмитрий, я ведущий разработчик в команде рекламного рантайма. Наша команда, как вы уже могли догадаться, занимается разработкой аукционов в поисковой рекламе Ozon.

В этой статье я хочу познакомить вас с механикой аукционов и рассказать, как мы делаем это в Ozon. Сначала мы разберёмся, что такое рекламный аукцион, что он имеет общего с аукционом в обычном понимании и как используется в контексте поисковой рекламы. А ещё подробно разберём аукцион типа VCG (аукцион Викри — Кларка — Гровса), вместе выведем формулы для него и посмотрим, какие результаты мы получили на практике.

Рекламный аукцион... Что это?

Наверняка при слове «аукцион» у вас в голове возникает картинка, как усатые седые товарищи в чёрных фраках сидят в просторном зале и поднимают карточки с цифрами, а один стоит у стойки, что-то кричит и стучит деревянным молоточком. Вы ведь не думаете, что аукцион в поисковой рекламе происходит так? Хотя это было бы довольно весело.

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

  • ведущий — рекламная платформа, в нашем случае Ozon;

  • участники аукциона — товары, которые селлеры хотят рекламировать на нашей платформе;

  • предмет торгов — места в поисковой выдаче, за которые конкурируют товары;

  • ставка — количество денег, которые селлеры готовы заплатить за продвижение своих товаров на более высокие позиции.

В сущности, все аукционы можно разделить по двум типам базовых характеристик:

  • по типу «открытости»:

    • открытый — когда все участники знают, какие ставки делают другие;

    • закрытый — наоборот, когда все ставки делаются взакрытую, после чего результаты «вскрываются».

  • и по типу ценообразования:

    • аукцион первой цены — когда победитель платит ту ставку, которую поставил;

    • аукцион второй цены — когда победитель платит наибольшую ставку среди своих конкурентов.

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

Если с «открытостью» всё просто, то понятие ценообразования требует некоторого пояснения. Представьте: вы и ещё два человека участвуете в аукционе по продаже антикварной картины. Один делает ставку в 100К рублей, второй — 150К рублей. Однако вы очень хотите эту картину и смело ставите 200К рублей. Конкуренты не решаются повысить ставки, и картина уходит с молотка в ваши руки. Если бы вы участвовали в аукционе первой цены, то заплатили бы ровно столько, сколько поставили — 200К рублей. В случае аукциона второй цены вы заплатите наибольшую ставку среди ваших конкурентов — то есть лишь 150К рублей.

Как мы делаем это в Ozon?

Где начинается реклама?

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

Кстати, раньше селлеры имели возможность самостоятельно указывать величину ставки для каждого товара в кампании. Однако мы отказались от такого подхода в пользу максимальной автоматизации этого процесса. Почему — я расскажу далее, в разделе «Как мы пришли к VCG?». А про механизм автоподбора ставки читайте статью моего коллеги. 

Когда начинается аукцион?

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

Итак, вы заходите на Ozon и набираете в строке поиска, например, «белая футболка». Товары бывают двух типов — те, которые не участвуют в рекламе (мы называем их органические), и рекламные. Когда в систему попадает ваш поисковый запрос, то параллельно набираются две группы подходящих (иначе говоря — релевантных) футболок: органических и рекламных. В обоих случаях поиск происходит по примерно одинаковым правилам, за тем лишь важным исключением, что рекламные товары должны принимать участие в рекламной кампании.

Мы не можем показывать любую рекламу по любому поисковому запросу. Точнее, чисто теоретически, можем. Однако если по запросу «футболки» мы будем показывать рекламу в виде геля для душа, то пользователи в лучшем случае просто проигнорируют эти товары, а в худшем — станут с удивлением кликать на них, в итоге не покупая. Пользуясь рекламной платформой, селлеры хотят, чтобы их товар в итоге купили. Если пользователи станут просто кликать по гелям для душа, система будет списывать с селлеров деньги, ведь с её точки зрения целевое действие в виде клика совершилось. Такая реклама неэффективна и будет просто прожигать рекламный бюджет. Поэтому важное условие для участия рекламных товаров в аукционе: их релевантность поисковому запросу должна быть на уровне органических товаров. Технически под понятием «релевантности» скрывается обычное число — некоторый скор товара, подсчитанный силами наших ML-моделей. Они учитывают множество различных факторов — это и рейтинг товара, и количество отзывов, и количество его покупок, и срок доставки и много-много чего ещё. Существует около 2000 различных факторов, учитываемых нашими моделями. Про факторы, кстати, рассказывали тут.

Имеем: две группы товаров, рекламных и органических, которые подходят под поисковый запрос. Наиболее релевантные запросу товары мы хотим показывать в поисковой выдаче раньше. Возьмём тот же запрос «белая футболка». Вполне можно предложить пользователю футболки и других цветов — так же, как и в обычном офлайн-магазине. Однако, раз он указал конкретный цвет, значит, в первую очередь он хотел бы увидеть именно его. Если же среди моделей этого цвета пользователь не найдёт ничего подходящего, ему не придётся тратить время на новый запрос футболок — система сразу предложит ему что-то похожее, нужно лишь листать дальше. Важно отметить, что при ранжировании (процесс определения порядка, в котором расположатся товары) рекламных товаров учитывается не только их релевантность, а также рекламная ставка. Это даёт селлерам дополнительную возможность конкурировать их рекламными товарами с другими позициями.

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

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

Прежняя механика «Трафаретов»

Суть концепции «Трафаретов» заключается в том, что в поисковой выдаче существуют заранее определённые позиции, на которых могут размещаться рекламные товары, будто на неё наложили трафарет. В качестве грубой аналогии это можно сравнить со стеллажами в супермаркетах — среди множества стеллажей всегда есть отдельные, на которых размещены только товары определённого бренда или поставщика. К примеру, вы идёте по ряду со сладостями и видите отдельную целую полку, на которой лежат шоколадки какого-то известного бренда.

Помимо этого, рекламные кампании разделялись на обычные «Трафареты» и «Вывод в топ». Смысл последнего заключается в том, что первые N позиций поисковой выдачи выделены специально под товары кампаний такого типа. С одной стороны, у селлеров есть дополнительная возможность за более высокую цену продвинуть свои товары на самый верх. С другой — мы не хотим допускать ситуаций, когда по запросу «белая футболка» пользователь в самом верху видел кучу футболок совершенно других цветов только потому, что они много «задонатили», иначе пользователь подумает, что поиск работает плохо. Можно сказать, что товары разных типов соревнуются в разных лигах, и в «топе» к товарам применялись более строгие требования. Какие? В целом — более строгий отбор по степени релевантности.

Итого имеем: отранжированные наборы рекламных и органических товаров, заданную «рекламную сетку» — просто список номеров позиций, на которых может размещаться реклама. Осталось лишь объединить всё. Этот этап мы называем «мерж». На каждую позицию в поисковой выдаче вставляется очередной товар из соответствующего набора; если позиция рекламная, то сначала пытаемся вставить на неё рекламный товар. Если же по каким-либо причинам мы не смогли вставить рекламный товар на рекламную позицию, тогда её занимает органический.

Новая реальность

Губка боб с радугой
Губка Боб с радугой

Наш продукт рос, и старый подход оказался недостаточно гибким для того, чтобы его развивать. Например, мы хотели научиться определять рекламные позиции для каждого поискового запроса самым оптимальным образом. Наличие заранее заданных позиций ограничивало нас в этом, поскольку нельзя их заранее посчитать для всех возможных запросов. К тому же из-за этого рекламные товары существовали как бы отдельно от органических и не конкурировали друг с другом напрямую. В итоге это привело нас к идее объединить органические и рекламные товары и работать с ними некоторым универсальным образом. Однако, чтобы это сделать, нужно было пройти определённый путь и подготовиться. Я не буду раскрывать всех подробностей этого пути, расскажу лишь, к чему мы пришли.

Сейчас у нас точно так же на входе в аукцион есть отранжированные наборы рекламных и органических товаров. Но в отличие от старых «Трафаретов», где рекламные товары конкурировали только за рекламные позиции, сейчас все товары конкурируют за каждую позицию поисковой выдачи. Этого удалось достичь благодаря унификации механизма ранжирования для органических и рекламных товаров. Устроено это довольно просто: мы придумали универсальную формулу, которая для любого типа товара высчитывает некоторое число, и товары сортируются по убыванию значения этого числа. В этой формуле уже учтена величина рекламной ставки в виде отдельного компонента, который даёт прирост итогового числа рекламным товарам и просто равен нулю для органических. Далее просто мержим отсортированные списки. В итоге получаем готовую поисковую выдачу, в которой уже перемешаны рекламные и органические товары некоторым оптимальным образом.

И на этом наш путь не закончился — мы всё ещё ищем ту самую «идеальную формулу» и постоянно с ней экспериментируем. 

Как мы пришли к VCG?

Теперь давайте плавно перейдём ко второй части повествования. Но прежде чем перейти от слов к формулам, нужно «накинуть немного контекста».

Всё началось ещё в эпоху старых «Трафаретов». Изначально там применялся только аукцион первой цены. Напомню, что в его случае селлеры платят за победу в аукционе ровно ту ставку, с которой товары его выиграли. Но в чём была проблема и почему мы решили всё изменить? 

Первая часть проблемы заключалась в том, что селлерам приходилось самостоятельно подбирать оптимальное значение ставки (на тот момент это ещё было возможно), чтобы не платить лишнего. Допустим, чтобы наверняка везде победить, вы выбираете ставку в 10 рублей. Да, ваш товар часто будет оказываться на первых позициях, но какой ценой... Хотя в большинстве случаев достаточно указать, скажем, ставку в 7 рублей. Таким образом, ваш рекламный бюджет расходовался бы значительно медленнее и товар бы показывался пользователям чаще, а значит — его бы чаще покупали.

Вторая часть проблемы — невозможность подобрать единственную оптимальную ставку под все возможные поисковые запросы. В каких-то случаях вам может быть достаточно даже 5 рублей, чтобы товар оказался на той же самой позиции, что и со ставкой в 10 рублей, а возможно, и ещё меньше.

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

VCG-аукцион

Аукцион второй цены, также известный как аукцион Викри, описывает случай однотоварного аукциона (если бы у нас в поисковой выдаче было единственное рекламное место). VCG-аукцион же — обобщение его на многотоварный случай. И это как раз то, что нам нужно, поскольку рекламных мест в общем случае может быть больше одного. Он проводится в два этапа: сначала мы точно так же, как и в случае аукциона первой цены, набираем подходящие под запрос пользователя рекламные товары, ранжируем их и расставляем по местам. Однако, так как это аукцион второй цены, существует второй этап — расчёт этой самой второй цены. 

Товары — участники такого типа аукциона платят не просто свою ставку, а ту сумму, которая отражает его реальный общественный вклад. То есть каждый должен заплатить соразмерно тому, насколько бы упала суммарная ценность данного аукциона вообще без его участия. Давайте немного раскроем эту формулировку. Допустим, мы провели аукцион и в нём выиграли некоторые товары. Под ценностью каждого товара будем понимать некоторую числовую величину, которая может рассчитываться по-разному в зависимости от конечной реализации самого механизма аукциона (мы, например, используем скор релевантности, о чём я расскажу далее). Суммарная ценность аукциона — просто сумма ценностей всех товаров, которые в нём победили. И важный нюанс: в аукционе выигрывают только N самых ценных товаров. Теперь возьмём любой товар из выигравших и представим, что он вообще не участвовал в аукционе. Значит, его место сможет занять какой-то менее ценный товар, который изначально не выиграл. Следовательно, суммарная ценность аукциона в этом случае будет ниже. Эта разница между суммарной ценностью и есть общественный вклад товара в результат аукциона. Далее нужно лишь найти ту сумму, которая будет соразмерна общественному вкладу, — столько участник и заплатит за свою победу.

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

Если говорить про этот тип аукциона в терминах теории игр, то его цель — поиск решения, оптимального по Нэшу. Как гласит Википедия: 

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

Пусть аукцион разыгрался, то есть реализовалась некоторая игра. Селлеры выбрали стратегию — выставили ставки, на основе которых распределились выигрыши, то есть рекламные места. Теория гласит: «...ни один участник не может увеличить выигрыш, изменив свою стратегию, если другие участники своих стратегий не меняют». То есть какую бы ставку ни делал каждый селлер, при фиксации прочих он не сможет получить место выше. Так ли это на практике? Не совсем. Поскольку величина ставки всё-таки участвует в ранжировании, то, если селлер будет постепенно увеличивать её, в конечном счёте он сможет оказаться выше других — разумеется, только при условии, что другие не будут менять свои ставки. 

А сейчас — формулы! 

Перейдём к формальному описанию и вместе выведем формулы, которые мы используем в аукционе Ozon.

Рассмотрим простой случай, когда ценность зависит только от ставки, а рекламные места не различаются между собой. Обозначим ставку i-го товара за  b_i , под ценностью игрока будем понимать некоторую функцию V_i = V(b_i). Допустим, у нас есть рекламные места P_j = \{0, 1, 2\} и товары V_i = \{V_0, V_1, V_2, V_3\}. Товар V_3 в этом случае — лучший товар, который НЕ победил в аукционе. По правилам VCG-аукциона, нужно взять с каждого участника столько денег c_i, чтобы общая ценность аукциона при b_i = c_i была равна ценности аукциона без его участия. Если исключить товар i, все стоящие после него как бы сдвигаются на позицию вверх, а последнее место освобождается и его занимает V_3.

Получаем равенство:

V_0(c_0) + V_1 + V_2 = V_1 + V_2 + V_3

Слагаемые V_1 и V_2 сокращаются, остаётся V_0(c_0) = V_3, откуда, имея определённую формулу для V(b), можно найти искомое c_0. В этом примере всё довольно примитивно, он нам понадобится только в качестве основы для дальнейшего усложнения.

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

Имеем:

  • места P_j = \{0, 1, 2\};

  • конверсионность мест Q_j = \{Q_0, Q_1, Q_2\};

  • участников V_i = \{V_0, V_1, V_2, V_3\}.

Перепишем исходное равенство:

Q_0 V_0(с_0) + Q_1 V_1 + Q_2 V_2 = Q_0 V_1 + Q_1 V_2 + Q_2 V_3

Откуда:

V_0(с_0) = \frac{ (Q_0 - Q_1) V_1 + (Q_1 - Q_2) V_2 + Q_2 V_3 }{Q_0}

И снова — по тому же принципу можно найти каждое искомое c_i, если знать функцию для V(b).

Чтобы прийти к тому виду, в котором мы реализовали этот механизм в Ozon, нужно сделать ещё несколько дополнений.

Во-первых, зададим конкретную функцию ценности. Будем использовать тот скор, который рекламный товар получил при ранжировании. Как сказано ранее, при ранжировании рекламных товаров учитывается не только их релевантность, но также и ставка. Положим V_i(b_i) = b_i + f_i, где f_i — величина релевантности без учёта ставки, назовём это «базовой ценностью» товара-участника, которая не зависит от его ставки. Общая ценность товара теперь складывается из двух компонент: ставки и базовой ценности.

Во-вторых, сделаем предположение: что, если при расчёте второй цены мы не будем исключать товар из аукциона совсем, а позволим ему так же участвовать в аукционе, но при учёте только его базовой ценности, то есть с нулевой ставкой, когда V_i =  f_i? Это приводит нас к тому, что нужно найти для каждого товара то место, которое бы он занял при своей нулевой ставке. Назовём такие места «гарантированными» и обозначим за P_{g_i}, где g_i— порядковый номер такого места.

Найдём такие места для каждого товара. Фактически нужно найти, где окажется каждый f_iсреди прочих V_{j, j \neq i}. Помним, что существует этап ранжирования товаров по скору релевантности, а f_i — базовую ценность — мы приравняли к нему. Значит, список V_iотсортирован по убыванию, и мы можем применить старый добрый бинарный поиск:

P_{g_i} = binSearch(f_i, V_{j, j \neq i})

Разберём процесс нахождения гарантированной позиции для участника V_0 на простом примере. Пусть имеется всего 4 позиции, при этом V_i = \{10, 8, 6, 3, 1\}, а f_i = \{4, 5, 2, 0.5\}. Здесь V_4 — лучший участник, среди тех, которые не выиграли (прочие не выигравшие нас не интересуют). По определению гарантированной позиции нам нужно найти такой индекс P_{g_0}, на котором окажется V_0 при b_0=0, то есть, если V_0=f_0. При таком условии получаем V_j=\{8, 6, 4, 3, 1\} и P_{g_0}=2.

По тому же принципу находятся и все остальные значения P_{g_i}=\{2, 2, 3, -1\}. Значение гарантированной позиции -1 приведено для наглядности и означает, что при нулевой своей ставке товар просто выбывает из результата аукциона.

Перепишем расчёты c_0с учётом введённых дополнений. Помним, что V_0(0) = f_0, и сразу сделаем замену:

\begin{align} Q_0 V_0(c_0) + Q_1 V_1 + Q_2 V_2 + Q_3 V_3 &= Q_0 V_1 + Q_1 V_2 + Q_2 V_0(0) + Q_3 V_3 \\            &= Q_0 V_1 + Q_1 V_2 + Q_2 f_0 + Q_3 V_3 \end{align}V_0(с_0) = f_0 + c_0 = \frac{ (Q_0 - Q_1) V_1 + (Q_1 - Q_2) V_2 + Q_1 f_0 }{Q_0}с_0 = \frac{ (Q_0 - Q_1) V_1 + (Q_1 - Q_2) V_2 - (Q_0 - Q_1) f_0 }{Q_0}

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

Давайте обобщим данные формулы на случай произвольного количества рекламных мест и товаров-участников. Перепишем исходное уравнение в таком виде:

Q_i V_i(c_i) + \sum_{k \neq i}^{N}(Q_k V_k) = \sum_{k=0}^{g_i-1}(Q_k V_{k+1}) + Q_g f_i + \sum_{k=g_i+1}^{N}(Q_k V_k)

Заметим, что при рассмотрении i-го участника, все другие, стоящие до его реального места и после его гарантированного, своих мест не меняют. Следовательно, их можно сократить в обеих частях уравнения. Тогда формула принимает вид:

Q_i V_i(c_i) + \sum_{k=i+1}^{g_i}(Q_k V_k) = \sum_{k=i}^{g_i-1}(Q_k V_{k+1}) + Q_{g_i} f_i

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

Q_i V_i(c_i) + \sum_{k=i+1}^{g_i}(Q_k V_k) = \sum_{k=i+1}^{g_i}(Q_{k-1} V_k) + Q_{g_i} f_ic_i = \frac{ \sum_{k=i+1}^{g_i}(Q_{k-1} - Q_k) V_k - (Q_i - Q_{g_i}) f_i}{Q_i}

Мы получили конечную формулу для расчёта второй цены по алгоритму VCG, который мы используем в рекламном аукционе в Ozon. Разумеется, реальные формулы устроены несколько сложнее. Например, ценность участников — не просто сумма релевантности и ставки, но в общем случае имеет вид V_i = g(f_i) + h(b_i), где g(f_i) и h(b_i) — некоторые функции от величины релевантности и ставки соответственно.

Небольшой пример

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

P_i

Q_i

V_i

b_i

f_i

P_{g_i}

Q_{g_i}

(Q_{k-1}-Q_k)V_k

\sum_{i+1}^{g_i}

c_i

Процент амнистии

0

1,0

15

12

3

3

0,1

 —

5,0 + 1,4 + 0,8 = 7,2

(7,2 - (1,0 - 0,1) * 3) / 1,0 = 4,5

(15 - 4,5) / 15 = 70%

1

0,5

10

4

6

2

0,3

(1,0 - 0,5) * 10 = 5,0 

1,4

(1,4 - (0,5 - 0,3) * 6) / 0,5 = 0,4

(4 - 0,4) / 4 = 90%

2

0,3

7

2

5

2

0,3

 (0,5 - 0,3) * 7 = 1,4

0

(0 - (0,3 - 0,3) * 5) / 0,3 = 0

100%

3

0,1

4

3

1

4

0

 (0,3 - 0,1) * 4 = 0,8

0,2

(0,2 - (0,1 - 0) * 1) / 0,1 = 1

(3 - 1) / 3 = 66%

-1

0

2

1

1

-1

0

(0,1 - 0) * 2 = 0,2

Как видно по результатам, все участники получают ощутимую скидку, а третий вообще получил экономию в размере 100%. Это значит, что в рамках этого розыгрыша он уже имеет оптимальную базовую ценность и может вовсе не платить за участие. Это лишь синтетический пример, чтобы наглядно показать механизм применения этого подхода к расчёту второй цены. В реальности, конечно, далеко не всегда получаются такие большие числа, что увидим на реальной статистике далее. Также есть дополнительные условия и ограничения как на формулы, так и на конечный результат. Например, в случае стопроцентной скидки мы всё-таки не делаем бесплатного показа рекламы. Ставка селлера в этом случае считается некоторым минимальным значением, которое определяется условиями создания рекламных кампаний.

Мы попробовали, и вот что у нас получилось

Посмотрим результаты на примере реальной статистики рекламных событий за один день. Дабы не раскрывать те данные, которые нельзя раскрывать, примем величину реальной ставки за 1, а размер рассчитанной второй цены будем смотреть относительно единицы. Далее — график средних значений реальной ставки, которую мы приняли за 1, и относительной величины второй цены, рассчитанной по формулам VCG:

Величина второй цены (adv_vcg_bid) относительно исходной ставки (adv_bid)
Величина второй цены (adv_vcg_bid) относительно исходной ставки (adv_bid)

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

Среднее значение VCG-амнистии
Среднее значение VCG-амнистии

Таким образом мы можем убедиться в том, что использование VCG-аукциона позволяет селлерам экономить на рекламе более 25% от своих ставок. Важно понимать, что это лишь среднее значение, в каждом отдельном случае результаты могут довольно сильно отличаться от средних. Чтобы не быть голословным, вот пара примеров реальных аукционов, где эта разница заметна: 

Позиция

Реальная ставка 

Ставка по VCG

Процент амнистии

0

33,21

18,28

45%

1

22,45

6,14

73%

2

24,15

11,08

54%

3

29,77

12,32

58%

Позиция

Реальная ставка 

Ставка по VCG

Процент амнистии

0

16,35

13,55

17%

1

15,0

11,85

21%

2

10,94

10,12

7%

3

12,94

12,94

0%

Что будем делать дальше

Мы начали разработку VCG-аукциона в середине 2024 года и спустя месяц провели первый эксперимент, в результате которого получили достаточно хорошие результаты. Конечно, мы заранее оценили эффект на статистических данных и получили ожидаемый средний размер скидки около 25%, нас это вполне устраивало. На тот момент наш аукцион работал ещё по механике «Трафаретов», и мы сразу частично внедрили в неё VCG. За прошедшее время мы доработали и усовершенствовали этот механизм, а также полностью переосмыслили сам аукцион. И сейчас VCG полноценно используется во всей поисковой рекламе Ozon.

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

К такому балансу мы стремимся в Ozon
К такому балансу мы стремимся в Ozon

В завершение я хочу ещё раз подчеркнуть, что реклама в Ozon не существует сама по себе. Реклама — это неотъемлемая часть большого поиска, где мы совместными усилиями всех команд стремимся найти «идеальный баланс»: с одной стороны — интересы селлеров-рекламодателей и получение прибыли с показов рекламы, с другой — наилучшая релевантность поисковой выдачи, «предсказание мыслей» пользователей поиска и предложение действительно нужных им товаров.

Благодарю всех, кто читал, дочитал или просто заглянул из интереса.

Пишите ваши вопросы в комментариях и приходите к нам в команду Ozon. Мы постоянно развиваемся, экспериментируем, и вообще у нас большой простор для творчества!