← Volta Neobank

Core · проект 2 из 23

Progress-bar в KYC дал +5,72 п.п. конверсии (Z=5,82, p<0,0001) при MDE +5 п.п. CUPED, AA-тест и Bonferroni защищают вывод; +€208,5K за 12 месяцев при 13,9× ROI.

Ситуация
Валидация находки воронки: срез — не доказательство, гипотезу разбивки KYC с прогресс-баром проверили как эксперимент
Задача
Отвечать за корректность эксперимента: спроектировать проверку, провести её и защитить вывод от статистических ловушек
Действия
Расчёт размера выборки под MDE, проверка SRM, bootstrap-ДИ, CUPED с ковариатом сессий, AA-тест и Bonferroni
Результат
Конверсия KYC 55,8% → 61,5%: +5,72 п.п. при p<0,0001, выше MDE; гейт пройден, эффект +€208,5K за 12 месяцев
Стек
Pythonpandas / NumPySciPy / Statsmodelsscikit-learnMatplotlib / Seabornuv + ruff
Содержание
  1. Ситуация
  2. Задача
  3. Действия
  4. Результат
  5. Рекомендации
  6. Документация

Volta — A/B-тест прогресс-бара KYC

Ситуация

Валидация находки воронки: срез — не доказательство, поэтому гипотезу (разбить KYC на шаги с прогресс-баром) проверили как эксперимент.

Задача

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

Действия

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

  • Дизайн. Задал основную метрику (конверсия шага KYC), гипотезу и минимально детектируемый эффект, под который посчитал требуемый размер выборки на группу.
  • Гигиена разбиения. Проверил SRM (p=1,00), чтобы убедиться, что трафик поделён без систематического перекоса, и сравнил распределения ковариат до старта теста.
  • Оценка эффекта. Сравнил доли групп и построил bootstrap-доверительный интервал для лифта.
  • CUPED с ковариатом «число сессий до теста» (θ только на control) — снижает дисперсию, не смещая оценку.
  • AA-тест под H₀ (type-I = 0,050) и коррекция множественности (Bonferroni/Holm/BH) для сегментных срезов.
  • Чувствительность и сегменты. Смотрел поведение на MDE, а не пост-хок мощность, и разбирал сегменты отдельно, чтобы отличить реальный эффект от шума множественных сравнений.
  • Инструменты. Python и pandas/NumPy для подготовки данных, SciPy/Statsmodels для тестов, scikit-learn для ковариат, Matplotlib/Seaborn для графиков; прогоны воспроизводимы через uv + ruff.

Результат

  • Control 55,8% → treatment 61,5%: +5,72 п.п., 95% ДИ [+3,78%, +7,66%], p<0,0001 — выше MDE +5 п.п.
  • SRM нет; ковариаты сбалансированы описательно (crosstab по device / age_group / channel) — формального SMD-теста скрипт не считает.
  • 6/11 сегментов наивно-значимы, 4/11 после Bonferroni.
  • Гейт выката пройден → раскатка прогресс-бара на 100%; бизнес-эффект +€208,5K за 12 месяцев (13,9× ROI, payback 5,6 мес).

Рекомендации

  • Выкатить прогресс-бар на 100% — гейт пройден.
  • Сохранить ship-gate из трёх условий: он защищает от статистически значимых, но бизнес-незначимых изменений.
  • После Bonferroni перепроверить сегментные эффекты отдельными тестами.

Документация

Нужен такой же разбор на ваших данных?

Расскажите задачу — вернусь с планом: какие данные нужны, что проверяем и за какой срок. Отвечаю в течение дня.

Обсудить задачу →