Кейс Volta: воронка, A/B и retention на синтетике необанка
Содержание
Кратко
Volta — учебный портфолио-кейс: аналитика необанка на синтетических данных, где каждый результат воспроизводим (seeded-пайплайны) и каждое решение проходит ship-gate. Четыре последовательных проекта: воронка → A/B-тест → retention → сегментация. Ниже — не «отчёт о результатах», а лог решений: где терялись пользователи, как мы не дали статистике наврать и что из этого получилось.
Контекст: почему синтетика
Продакшен-данных банка нет, а учебные датасеты не дают системной картины. Поэтому данные сгенерированы с фиксированным seed: детерминированный пайплайн, повторяемый из прогона в прогон. Это меняет культуру работы: любой вывод можно перепроверить перезапуском, а не «поверить на слово». Синтетика — не замена реальным данным, но для методологии она честнее, чем молчаливые чужие данные.
Воронка: где терялся онбординг
Считалась воронка онбординга до первого продуктивного действия. Узкое место по step-конверсии — KYC (56.6%); больше всех в абсолюте теряет регистрация (2 682 пользователя) — метрики разные и указывают на разные шаги. Гипотеза: слишком длинная форма и отсутствие промежуточного подтверждения. Изменение флоу (KYC разбит на шаги с прогрессом) подняло конверсию 55.8% → 61.5%: +5.72pp при Z = 5.82, p < 0.0001, выше MDE +5pp.
Прикидка эффекта: при реалистичной аудитории это ≈ €656K/год при ROI около 44× на €15K dev-cost. Цифры синтетические, но механика оценки — та же, что для реального фикса: конверсия × число пользователей × LTV.
A/B: как не дали статистике наврать
Результат воронки — «эффект есть», но его надо было проверить как эксперимент, а не как срез. Схема теста:
- CUPED с ковариатом «число сессий до теста» — убрали часть шума, выборка не росла.
- AA-тест перед запуском: Type I error = 0.050 в пределах шума вокруг 5% — метод не мнит значимость.
- Bonferroni для нескольких метрик (конверсия, время до завершения, доля бросивших) — контроль множественности.
- Ship-gate: релиз только если доверительный интервал не пересекает ноль и эффект согласуется с бизнес-порогом.
Урок не в цифрах, а в порядке: сначала калибровка инструмента, потом вывод. АА-тест дешёвый, а молчаливо сломанный критерий — дорогой.
Retention: что показали треугольники
Удержание считалось когортными треугольниками (месяц регистрации × возраст), а не «средним по всем».
По диагонали видно: пост-фикс когорты держат 61–67% на M1 против 51–53% у старых, M3-удержание +9.2pp, что даёт +€227K/год инкрементального LTV (та же синтетическая оценка).
Наблюдение за возрастом: новый онбординг улучшает и первую неделю (быстрее доходят до ценности), и 3-й месяц (меньше отток после «медового месяца»). Без треугольников этот вывод спрятался бы за средним.
Оговорка, которую я добавил позже: pre/post-тест даёт корреляцию, а не причинность — он игнорирует общий месячный тренд.
Поэтому эффект перепроверен дизайном difference-in-differences: ATT +9.09pp, 95% ДИ [+6.21; +11.96], pre-trends плоские, placebo ≈ 0; активация по naive-оценке +6.29pp против +4.92pp у DiD. Ступенька на диагонали — не совпадение с трендом.
Сегментация: 4 профиля вместо 125 ячеек
На наборе поведенческих признаков (транзакции/месяц, средний чек, сбережения, логины, P2P, выручка) — кластеризация, а не классический RFM: у необанка «активность» шире покупок.
Получилось 4 сегмента с персональной стратегией монетизации: Power Users (апсейл), Growth Users (кросс-сейл), Casual Users (retention-кампании), Dormant Users (реактивация). Правило — один сегмент = одно действие = одна метрика успеха.
Где эффект не сработал
Средний эффект — удобный способ ничего не заметить.
HTE-разрез A/B по возрасту: 35–44 дали +11.0pp (p < 0.001), а 45+ — +1.4pp, и незначимо. При этом по реферальному каналу 45+ конвертят хуже всех сегментов (4.8% против 29.6% у якоря) — и всё же внутри 45+ реферал остаётся лучшим каналом (64.1%) — трение там в доверии, а не в UX, и разбивка формы его не лечит.
Второе ограничение — размер: пост-фикс когорт мало, поэтому оценки на них шумные. +€227K/год — порядок величины, а не прогноз.
Уроки
| Урок | Чем подтверждён в кейсе |
|---|---|
| Сначала калибруй инструмент | A/A-тест до запуска: Type I error держался в пределах шума вокруг 5% — критерий не мнил. Дешевле, чем неделя на разборе ложной значимости. |
| Когорты только одного возраста | Сравнение «новой и старой» без учёта возраста врёт вверх. Треугольники — не украшение, а способ не наврать. |
| Сегмент без действия — мусор | 4 сегмента с персональной стратегией монетизации работают лучше, чем 125 ячеек без неё. |
| Синтетика честна, если подписана | Все цифры синтетические, но механика оценки (конверсия × пользователи × LTV) та же, что для реального фикса. |
| Средний эффект скрывает сегменты | HTE-разрез: 35–44 +11.0pp против 45+ +1.4pp (незначимо). |
На практике
Кейс воспроизводим от начала до конца: данные генерируются seeded-пайплайном, каждый из четырёх проектов — отдельный скрипт с ship-gate. Порядок запуска тот же, что и порядок решений: воронка → A/B → retention → сегментация.
Порядок важнее метода: сначала калибровка инструмента, потом вывод. Тогда даже синтетика даёт методологию, которую можно перенести на реальные данные.
Ссылки
- Volta Neobank — Product Analytics — четыре части кейса с кодом и графиками
- Части кейса: воронка · A/B прогресс-бара · retention · сегментация
- Разбор KYC 45+ — откуда взялся незначимый эффект в старшем сегменте
- Причинная валидация KYC (DiD) — причинная оценка вместо pre/post
- Когортный анализ удержания — как строить треугольную матрицу
- Калибровка A/B-методов симуляцией — как проверялся каждый модуль
- Почему агрегат врёт: когортные треугольники — инструмент, которым читался retention
- Почему мы перешли на байесовское A/B-тестирование — альтернативный фреймворк для тех же вопросов