Volta Neobank — Product Analytics
Итог в 30 секунд
- Проблема: KYC — узкое место онбординга, наибольший относительный отток (56,6% step conversion).
- Фикс: progress bar в KYC дал +5,72pp (p < 0,0001), выше MDE +5pp.
- Деньги: смоделированный бизнес-импакт €656K/год при ROI 44×.
- Удержание: эффект продержался — +9,2pp M3 retention, +€227K/год инкрементального LTV.
- Причинность: DiD-проверка подтвердила, что фикс вызвал сдвиг: M3-удержание +9,09 п.п. (95% ДИ [+6,21; +11,96]).
Ситуация
«Volta» — вымышленный необанк, который терял пользователей на онбординге. Маркетинг видел трафик, продукт — активацию, поддержка — тикеты. Каждый отдел — свою цифру, и ни одна не объясняла, где утекают деньги.
Мы начали с одного вопроса: какой шаг онбординга критический?
Ответ искали четырьмя проектами одной петлёй discover → validate → measure → optimize.
Каждый проект — улика, которая сужает круг. Все данные синтетические, генерируются детерминированно (seed) и воспроизводятся из кода: любой вывод можно перепроверить перезапуском, а не «поверить на слово».
Задача
Мне нужно было найти, где именно утекают деньги, и доказать это так, чтобы вывод нельзя было списать на удобную выборку: каждое утверждение проверяется перезапуском кода.
Действия
Данные: синтетические, seeded-генераторы (generate_*.py) → воспроизводимые CSV. Funnel-датасет закоммичен; остальные генерируются по команде.
Методология по проектам. Нумерация ниже — шаги петли, а не номера проектов: в «Рекомендациях и гейтах» проекты адресуются своими номерами.
-
Funnel — step conversion, absolute/relative drop-off, Chi-square тест каналов.
- Registration теряет больше всего пользователей в абсолютных числах (2,682, 73,2% step conv);
- KYC Complete — наибольший относительный отток (56,6% step conv).
- Referral конвертирует на 11,7pp лучше paid social;
- iOS обгоняет Android на каждом шаге (13,6% vs 11,7% end-to-end).
-
A/B (KYC progress bar) — расчёт размера выборки, SRM-проверка (p=1,00), bootstrap CI, коррекция множественных сравнений (Bonferroni/Holm/BH), AA-test под H₀ (type-I = 0,050), CUPED (control-only θ), sensitivity at MDE.
- Контроль 55,8% → лечение 61,5%, +5,72pp, 95% CI [+3,78%, +7,66%], превышает +5pp MDE.
- Ship-gate: p<0,05 ∧ lift≥MDE ∧ no SRM → ship. 6/11 наивно-значимых сегментов, 4/11 после Bonferroni.
-
Retention — когортные кривые, pre/post Welch t-test + Cohen’s d, plan-specific LTV (ARPU × retention decomposition).
- M1 retention +11,8pp step-change, M3 +9,2pp.
-
Segmentation — StandardScaler + KMeans, data-driven K (marginal-gain elbow, силуэтный plateau K=2–4, коллапс при K=5).
- Сегменты: Power 12% / Growth 24% / Casual 32% / Dormant 32%. Lorenz: 12% пользователей → 41% выручки; 68% → 92%.
- Сценарии миграции: +€26K/mo (€310K/yr).
-
Causal (DiD) — naive pre/post против difference-in-differences: treated = in-app KYC, comparison = partner, cutoff 2024-09. 2×2 DiD + covariate-adjusted с cohort-clustered SE, проверка параллельных трендов, placebo-исход, SMD/overlap.
- ATT по M3-удержанию +9,09 п.п. (95% ДИ [+6,21; +11,96]); naive завышает активацию (+6,29 п.п. против DiD +4,92 п.п.).
RAT v2-методы (проекты 18–22): LTV на пользователя (ARPU × маржа вклада × месяцы удержания) и blended CAC с bootstrap-ДИ, Welch t-test якорь vs 45+; котировки провайдеров ликвидности и лог-интерполяция требуемого объёма.
Рандомизированный A/B сегментных офферов с поправкой Holm и DiD-взаимодействием сегмент × arm; кривые маржинального CAC по каналам, жадное распределение «сначала дешёвое» и масштаб безубыточности; трёхармный win-back (авто / light-touch / human) с z-тестами и ROI на 10K обработанных.
Структура кода: общие utils/common.py (setup(), print_section(), CONSTANTS, data_path()), functions + main() — импорт модуля не запускает анализ. Excel-отчёты через openpyxl.
Карта проекта
23 подпроекта, сгруппированные по слоям петли discover → validate → measure → optimize. Каждая строка — результат-первый вывод и ссылка на досье.
Core — петля discover → validate → measure → optimize
- Анализ воронки — Воронка онбординга необанка: KYC — узкое место с 56,6% step conversion, регистрация теряет больше всех в абсолюте (2 682). Разбивка по каналам и платформам.
- A/B-тест прогресс-бара KYC — Progress-bar в KYC дал +5,72 п.п. конверсии (Z=5,82, p<0,0001) при MDE +5 п.п. CUPED, AA-тест и Bonferroni защищают вывод; +€656K/год при 44× ROI.
- Retention и когорты — Когортные треугольники показали ступенчатый сдвиг после KYC-фикса: M1 +11,8 п.п., M3 +9,2 п.п. и +€227K/год LTV. LTV Premium в 4,3× выше Free.
- Сегментация пользователей — KMeans с data-driven K=4: Power 12% дают 41% выручки, 68% — 92%. Сценарии миграции между сегментами стоят до +€310K/год.
Extended — расширенное портфолио
- Прогноз оттока — Random Forest даёт +0,03 ROC-AUC над логистической регрессией; топ-драйвер оттока — частота ошибок устройства (23,7%), а не баланс или активность.
- RFM-анализ — R/F/M-скоринг 1–5 делит базу на жизненные сегменты от Champions до Lost; recentness и monetary расходятся — «частые, но дешёвые» и «редкие, но крупные».
- Моделирование CLV — Три метода оценки пожизненной ценности: исторический, retention-кривая и Gamma-Gamma. Порядок Power > Growth > Casual > Dormant устойчив ко всем методам.
- Маркетинговая атрибуция — First-touch, last-touch, linear и Shapley-атрибуция. Shapley (data-driven) перераспределяет бюджет и ведёт реферал; вывод устойчив к выбору модели.
- Поиск аномалий — Z-score, IQR и Isolation Forest против ground truth. IF — лучший F1 (50,4%), ловит аномалии суммы, ночных часов и частоты; Z-score точен, но осторожен.
- Анализ трат — Разбивка трат по категориям и каналам: bills (25,8%) и travel (20,2%) дают почти половину оборота, groceries — самая частая категория.
- Поддержка и отток — Отток растёт с числом тикетов: 37,1% при нуле обращений против 81,1% при 3+. Поддержка — измеримый retention-рычаг, а не только cost-центр.
- Тренды NPS — Месячный NPS держится около нуля; сильнейшие драйверы — app quality (+30,3) и product (+29,4), главный источник недовольства — fees (−59,4).
Market & Jobs — JTBD-сегменты
- JTBD × когорты — Job-сегменты и поведенческие когорты не независимы (chi² p<0,001): Dormant концентрируется в Цифровых новичках 45+ (39,4%) против Семейных бюджетов (15,1%).
- Юнит-экономика путешественников — Путешественники теряют €0,45 на каждых €100 FX-операции; безубыточность требует снизить FX-cost с 1,00% до 0,55%, иначе убыток растёт с объёмом.
- Premium-апселл — Конверсия Free→Premium концентрируется в якоре (17,3%) и статус-сикерах (41,2%); у Цифровых новичков 45+ всего 1,8% — ценность не переносится.
- Глубокий разбор KYC 45+ — HTE-разрез A/B по возрасту: 35–44 +11,0 п.п. и 18–24 +5,3 п.п., но 45+ +1,4 п.п. (ns). Реферал (доверие) конвертит 45+ лучше всех — трение в доверии, не в UX.
- Реферальные сегменты — Реферальная воронка по JTBD-сегментам: якорь 29,6% против Цифровых новичков 45+ 4,8% и семейных 8,6%. Разрыв открывается на accept, а не на KYC.
RAT v2 — валидация аудита деньгами
- Assisted CAC vs LTV — Окупается ли trust-трек 45+: LTV/CAC 45+ = 0,66 при гейте ≥3; assisted CAC €120 в ~3× дороже реферала и не окупается (payback 50 мес).
- Feasibility FX-сорсинга — Гейт 0,55% достижим только на SOM-масштабе (~€332M/мес, 122× от текущего) — cold-start, а не «невозможно». Лучшее предложение — Interbank Prime 0,745%.
- Сегментные premium-офферы — A/B: сегментный оффер поднимает gap-сегменты (+3,3 п.п. 45+, +4,2 п.п. семейные, +3,8 п.п. путешественники) — значимо после Holm, но якорь почти не двигается.
- CAC запуска якоря при масштабе — LTV/CAC ≥3 держится только до ~70K пользователей; на SOM падает до 1,76× и payback 17 мес. Ограничение — ёмкость дешёвых каналов, а не бюджет.
- Win-back дормантов 45+ — Трёхармный win-back: human +5,34 п.п. и light-touch +2,77 п.п. против control. Light-touch окупается на 30–90d (ROI 2,54 / 1,26), human ROI 0,40 — kill как массовый канал.
Causal — причинная проверка
- Причинная валидация KYC (DiD) — DiD-проверка: фикс KYC причинно поднял M3-удержание на +9,09 п.п. (95% ДИ [+6,21; +11,96]) — pre-trends плоские, placebo ≈ 0, max |SMD| 0,157 < 0,2.
Улики №1–4
Улика №1 — Воронка: где теряем
Первая улика — воронка онбординга до первого продуктивного действия. Главная утечка оказалась в KYC — этапе верификации: наибольший относительный отток (56,6% step conversion).
Регистрация теряет больше в абсолютных числах (2 682 пользователя, 73,2% step conv), но KYC дороже: пользователь уже прошёл половину пути и всё равно уходит.
Гипотеза: слишком длинная форма и отсутствие промежуточного подтверждения.
Улика №2 — A/B: лечит ли фикс
Срез — не доказательство: находку воронки проверили как эксперимент, а не как срез. Гипотеза: разбить KYC на шаги с прогресс-баром.
Схема теста:
- CUPED с ковариатом «число сессий до теста» — убрали часть шума, выборка не росла
- AA-тест перед запуском: Type I error = 0,050 — метод не мнит значимость
- Bonferroni для нескольких метрик — контроль множественности
- Ship-gate: релиз только если значимость ∧ lift ≥ MDE ∧ no SRM
Вердикт: контроль 55,8% → лечение 61,5%, +5,72pp, p < 0,0001, 95% CI [+3,78%, +7,66%], превышает MDE +5pp → ship. При реалистичной аудитории это ≈ €656K/год при ROI 44×.
Улика №3 — Retention: держится ли эффект
Ship — не конец: эффект проверили на удержании, когортными треугольниками (месяц регистрации × возраст) вместо «среднего по всем».
По диагонали видно: когорты с включённым новым онбордингом держат M3-удержание на +9,2pp относительно старых когорт → +€227K/год инкрементального LTV.
Новый онбординг улучшает и первую неделю (быстрее доходят до ценности), и 3-й месяц (меньше отток после «медового месяца»).
Без треугольников этот вывод спрятался бы за средним.
Отдельная DiD-проверка отделила причинный эффект от фоновых трендов: M3-удержание +9,09 п.п. (95% ДИ [+6,21; +11,96]), pre-trends плоские (p = 0,29–0,70), placebo ≈ 0, max |SMD| 0,157.
→ Retention & Cohort — досье · Causal Validation (DiD) — досье
Улика №4 — Сегментация: кто платит
Эффект удержался — остался вопрос, кто эти пользователи и как их монетизировать. StandardScaler + KMeans, data-driven K: 4 сегмента — Power 12% / Growth 24% / Casual 32% / Dormant 32%. Lorenz: 12% пользователей дают 41% выручки; 68% → 92%. Сценарии миграции: до +€310K/год.
Слой RAT v2 — валидация собственного аудита
После JTBD-аудита портфолио проверяет собственные рекомендации: пять рисков v2 оценены деньгами, а не оставлены мнением. Каждый проект выдаёт гейт ship / pilot / hold / kill.
| # | Риск v2 | Вердикт | Доказательство |
|---|---|---|---|
| 1 | Assisted-онбординг 45+ дороже, чем LTV 45+ | ✅ подтверждён | Project 18: LTV/CAC 45+ = 0,66 (гейт ≥3), payback 50 мес |
| 2 | FX-cost не удаётся договорить до ≤0,55% | ✅ подтверждён (как cold-start) | Project 19: гейт требует ~€332M/мес, сейчас в 122× меньше |
| 3 | Сегментные premium-офферы не поднимут gap-сегменты | ⚠️ частично опровергнут | Project 20: +3,3…+4,2pp, Holm-significant — сужает, но не закрывает разрыв |
| 4 | Paid CAC якоря ломает P&L запуска | ✅ подтверждён | Project 21: LTV/CAC 1,76 на SOM, гейт держится до ~70K |
| 5 | Assisted-онбординг не возвращает Dormant 45+ | ❌ опровергнут по механизму | Project 22: human +5,3pp, light-touch +2,8pp — барьер был UX; окупается только light-touch 30–90d |
Итог: 3 риска подтверждены, 1 опровергнут, 1 уточнён — аудит выдержал проверку, а решения получили измеримые гейты. Project 16 (глубокий разбор KYC 45+) — мост между слоями: он показал, что барьер 45+ в доверии, а не в UX, и запустил всю цепочку v2-валидации. Слой causal (Project 23) — независимая проверка причинности главного утверждения.
Рекомендации и гейты
Сводка решений по всем 23 проектам: что делать, на каком доказательстве, при каком гейте и с какой оговоркой.
1. Онбординг и KYC — снять главное узкое место
- Раскатать KYC-прогресс-бар на 100% (Project 2: +5,72 п.п., p<0,0001, +€656K/год при 44× ROI).
- Упростить регистрацию (Project 1: −2 682 пользователя) — A/B на удаление поля телефона.
- Отдельный доверительный трек для 45+, но не UX-only (Project 16: 45+ +1,4 п.п. ns против +11,0 п.п. у 35–44).
2. Юнит-экономика и масштабирование — не масштабировать убыточное
- Не масштабировать тревел до FX-cost ≤0,55% (Project 14/19: маржа −€0,45; гейт ~€332M/мес — cold-start).
- Якорь 25–34 — точка роста, но планировать до ~70K (Project 21: LTV/CAC ≥3 только до 70K; на SOM 1,76).
- Наращивать ёмкость дешёвых каналов (реферал, in-app) вместо роста paid-бюджета.
3. Монетизация и сегменты — защищать ядро, чинить gap
- Защищать Power (12% → 41% выручки) и апгрейдить Growth/Casual; Dormant (32% юзеров, 7,8% выручки) — цель win-back.
- Запускать сегментные премиум-офферы (+3,3…+4,2 п.п., Project 20), планируя остаточный разрыв.
- Premium-статус — защищать как маржу (41,2% конверсия статус-сикеров), а не как канал роста.
4. Retention и реактивация — экономика важнее охвата
- Light-touch win-back только на 30–90 дней (Project 22: ROI 2,54 / 1,26); human — эскалация для high-value.
- Churn-профилактика через надёжность: топ-драйвер — device-error rate (Project 5).
- LTV Premium в 4,3× выше Free (Project 3) — апгрейды на high-intent Free в первые 1–2 месяца.
5. Доверие и каналы — не копировать якорный плейбук
- Не масштабировать реферал вне якоря (Project 17: 29,6% против 4,8%) — сначала сегментные стимулы.
- Assisted-онбординг окупается только при CAC ниже текущих €120 (Project 18: 45+ LTV/CAC 0,66, payback 50 мес).
- Выбор FX-провайдера + длинный хедж — вторая по силе скидка после объёма (Project 19).
6. Гейты решений (ship / pilot / hold / kill)
| Инициатива | Доказательство | Гейт | Решение |
|---|---|---|---|
| KYC progress bar | Project 2: +5,72 п.п., p<0,0001 | p<0,05, lift≥MDE, no SRM | Ship 100% |
| Сегментные premium-офферы | Project 20: +3,3…+4,2 п.п., Holm | lift>0 после коррекции | Ship (остаточный разрыв) |
| Light-touch win-back 30–90d | Project 22: ROI 2,54 / 1,26 | ROI ≥ 1 | Ship узко на 30–90d |
| Assisted trust-трек 45+ | Project 18: LTV/CAC 0,66, payback 50 мес | LTV/CAC ≥ 3, payback ≤ 12 мес | Hold — снижать CAC |
| Масштабирование тревел | Project 14/19: маржа <0, гейт €332M/мес | FX-cost ≤ 0,55% | Hold — пилот на 10% |
| Запуск якоря до SOM | Project 21: LTV/CAC 1,76 на SOM | LTV/CAC ≥ 3 | Hold — до 70K |
| Human-звонок win-back | Project 22: ROI 0,40 | ROI ≥ 1 | Kill как массовый канал |
Вердикт
Петля из четырёх проектов ценнее изолированных анализов:
- фикс KYC, найденный в воронке, валидирован в A/B, подтверждён в retention и переведён в деньги через сегментацию.
- Ключ — ship-gate с тремя условиями (значимость ∧ lift ≥ MDE ∧ no SRM): он защищает от rollout’а статистически-значимых, но бизнес-незначимых изменений.
- Порядок важнее цифр: сначала калибровка инструмента (AA-тест, CUPED), потом вывод.
- Причинность отдельно проверена DiD-анализом, а не оставлена как корреляция.
Ограничения
Volta — вымышленный банк, все данные синтетические и seeded: цифры (€656K/год, ROI 44×, +9,2 п.п.) показывают корректность методологии на смоделированном продукте, а не результат реального внедрения.
ROI считается к стоимости разработки €15K без вычета маржи, то есть это верхняя граница.
Слой RAT v2 проверяет собственные рекомендации деньгами, но на тех же синтетических допущениях.
Интерактивный борд
Тот же кейс собран вторым способом — декларативным бордом dbt-charts: 20 чартов в 5 вкладках (онбординг, KYC A/B с SRM и guardrail-метриками, retention, causal DiD, сегментация) и живые фильтры по устройству, возрасту и каналу привлечения. Борд описан одним YAML-файлом charts/volta-core.yml, а каждый чарт — обычный SQL к тем же CSV.
Остальные проекты
Volta — флагман, но не единственный кейс: за каждым слоем петли стоит отдельная дисциплина, разобранная в соседних проектах портфолио.
- SQL Analytics Case Study — оконные функции, когорты и retention-аналитика на SQL.
- Cohort Retention Analysis — как читать когортные треугольники и почему среднее врёт.
- Churn Prediction & Uplift — прогноз оттока и uplift-моделирование.
- RFM Segmentation — сегментация по давности, частоте и деньгам.
- Causal Inference — DiD и оценка причинных эффектов без рандомизации.
- A/B Testing в банке — CUPED, AA-тест и ship-gate на реальном эксперименте.
Документация
- GitHub → volta-banking
- Интерактивное демо — KPI-панель проекта.