Собесов

ВТБ — оценка эффективности маркетинговой кампании по ЧОД

Кейсы и метрикиОценка кампанийСредняяMiddle

Условие

Между периодами p_1 и p_2 проводилась маркетинговая кампания по продуктам УЖЦК (СМБ-банк). Есть таблицы:

  • pl(client_id, segment, period, product, pl) — ЧОД клиента по продукту по периодам.
  • campaign(client_id, product, response, manager_id) — отклик в кампании, идентификатор менеджера.

Задачи:

  1. Посчитать сумму ЧОД, привлечённую каждым менеджером в ходе кампании.
  2. Оценить эффективность маркетинговой кампании в целом.

Решение

Задача 1 — ЧОД на менеджера

«Привлечённый ЧОД» = ЧОД в p_2 по тем парам (клиент, продукт), которые были в кампании и откликнулись положительно.

SELECT
  c.manager_id,
  SUM(p.pl) AS pl_attracted
FROM campaign c
JOIN pl p
  ON p.client_id = c.client_id
 AND p.product   = c.product
 AND p.period    = 'p_2'
WHERE c.response = 'positive'  -- или 1, в зависимости от формата
GROUP BY c.manager_id
ORDER BY pl_attracted DESC;

Если хотим считать прирост ЧОД (а не абсолют), нужно вычесть p_1:

WITH paired AS (
  SELECT
    c.manager_id, c.client_id, c.product,
    p1.pl AS pl_p1,
    p2.pl AS pl_p2
  FROM campaign c
  LEFT JOIN pl p1 ON p1.client_id=c.client_id AND p1.product=c.product AND p1.period='p_1'
  LEFT JOIN pl p2 ON p2.client_id=c.client_id AND p2.product=c.product AND p2.period='p_2'
  WHERE c.response = 'positive'
)
SELECT
  manager_id,
  SUM(COALESCE(pl_p2,0) - COALESCE(pl_p1,0)) AS pl_uplift
FROM paired
GROUP BY manager_id
ORDER BY pl_uplift DESC;

Задача 2 — эффективность кампании

Подход «без контрольной группы»

Если контрольной группы нет — оцениваем только кампанию в её аудитории:

  • Response rate = % клиентов с positive response.
  • Активация в p_2 = % положительных откликов, которые реально показали ЧОД > 0 в p_2.
  • ARPPU кампании = SUM(pl в p_2) / count(positive response).
  • CPA = расходы на кампанию / привлечённые клиенты (если данные есть).
SELECT
  COUNT(*)                                                AS targeted,
  SUM(CASE WHEN response='positive' THEN 1 ELSE 0 END)    AS positive_resp,
  ROUND(100.0 * SUM(CASE WHEN response='positive' THEN 1 ELSE 0 END)
                  / COUNT(*), 2)                          AS response_rate_pct
FROM campaign;

Подход «инкрементальный» (правильный)

Без holdout-группы (контроль) оценить эффект нельзя честно. Возможные суррогаты:

  1. Difference-in-Differences (DiD). Сравниваем изменение ЧОД (p_2 - p_1) у попавших в кампанию vs не попавших.

    Effect ≈ (treated_p2 - treated_p1) - (control_p2 - control_p1)
    

    Условие: «контрольные» клиенты сопоставимы по сегменту/продукту/уровню ЧОД до кампании. Идеально — propensity score matching.

  2. Synthetic control / matching. Подобрать на каждого targeted клиента двойника-нетаргетированного с похожими доходами в p_1.

  3. Сравнение по сегменту. Если кампания шла только по одному сегменту — сравнить динамику с другими.

Метрики для отчёта

Метрика Что показывает
Response rate Сильно ли «зашёл» оффер целевой аудитории
Activation rate Сколько откликов превратилось в реальные деньги
ARPPU кампании Средний доход на привлечённого
Incremental ЧОД (DiD) Чистый эффект кампании
ROI = (Incremental ЧОД − cost)/cost Финальная мера успеха

Подводные камни

  1. «Привлечённый ЧОД» без сравнения с p_1 переоценивает эффект — клиент мог приносить столько же и без кампании.
  2. Атрибуция к менеджеру. Если у клиента несколько менеджеров за период, чей это ЧОД? Обычно — последний / по бизнес-правилу.
  3. Self-selection bias. Кампанию таргетили на «горячих» клиентов — они и так бы принесли деньги. Без контроля любая оценка завышена.
  4. Канибализация. Пользователи могли мигрировать с одного продукта на другой → ЧОД продукта вырос, но банк в сумме не выиграл.
  5. Длительный лаг. ЧОД от кредита проявляется месяцами — оценивать только p_2 сразу после рассылки = недооценить.
  6. Сегмент менеджеров. Менеджеры премиум-клиентов априори покажут больший ЧОД — это не их «эффективность», а сегмент. Нормировать по сегменту/портфелю.

Эталонный ответ

(1) JOIN campaign с pl по периоду p_2 и положительному response, агрегировать по manager_id. Лучше — uplift-версию (p_2 - p_1). (2) Без контроля честно оценить нельзя; используем DiD/matching для инкрементальной оценки. Для отчёта — пакет метрик: response rate / activation / ARPPU / incremental ЧОД / ROI.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти