DiD-проверка: фикс KYC причинно поднял M3-удержание на +9,09 п.п. (95% ДИ [+6,21; +11,96]) — pre-trends плоские, placebo ≈ 0, max |SMD| 0,157 < 0,2.
Volta — Причинная валидация KYC (DiD)
Ситуация
Project 3 показал, что фикс KYC совпал с ростом удержания, но pre/post Welch t-test — корреляция, а не причинная оценка: он игнорирует общий месячный тренд. Этот проект проверяет то же утверждение дизайном difference-in-differences против потока, на который фикс не действовал.
Задача
Мне нужно было получить причинную оценку эффекта KYC-фикса, а не корреляцию, которую дал pre/post-тест. От меня требовалось построить дизайн difference-in-differences против потока, на который фикс не действовал.
Действия
Дизайн: treated — in-app KYC (на него действует прогресс-бар), comparison — партнёрский KYC (агентский, фикс не применяется), cutoff 2024-09.
N = 84 000 (50 400 treated / 33 600 comparison), 24 когорты регистрации (2023-01 … 2024-12).
Оценки: naive pre/post, 2×2 DiD и covariate-adjusted DiD (возраст, устройство, pre-activity) с SE, кластеризованными по когорте.
Диагностики: parallel trends (наклон разрыва в pre-периоде), placebo на фейковом cutoff 2024-01, covariate balance (SMD), propensity overlap.
Данные синтетические: генератор закладывает известный ATT (+5,7 / +8,5 / +9,0 п.п.), поэтому это проверка метода — оценщик должен восстановить эффект.
Результат
M3-удержание: DiD ATT +9,09 п.п. (95% ДИ [+6,21; +11,96], p<0,001) — причинная оценка совпадает с Project 3 (+9,2 п.п.).
Активация: naive +6,29 п.п. → DiD +4,92 п.п. (95% ДИ [+4,07; +5,77]) — pre/post завышает эффект, потому что не вычитает общий тренд.
M1-удержание: DiD +7,49 п.п. (95% ДИ [+5,92; +9,05]).
Диагностики пройдены: pre-trends плоские (p = 0,70 / 0,36 / 0,29), placebo ≈ 0 (все ДИ накрывают 0), max |SMD| = 0,157 < 0,2.
Recovery: 3/3 95% ДИ накрывают заложенный эффект — оценщик восстанавливает истину.
Рекомендации
Разделять доказательства: рандомизированный A/B (+5,72 п.п.) — для ship-решения; DiD — для причинной валидации наблюдательных утверждений (retention).
Pre/post-числа помечать как корреляцию: naive активация +6,29 п.п. против DiD +4,92 п.п. — pre/post завышает.
Держать диагностический гейт (parallel trends + placebo + SMD < 0,2) перед публикацией любого causal-вывода.
Документация
Аналитика Данные: github.com/NikitaBoyarkin/volta-banking — 22 projects; figures recomputed from the repo's own datasets (data/*.csv) via its analysis scripts. Funnel counts from data/volta_funnel_data.csv (10,000 users); A/B, retention, segmentation, churn, RFM, CLV, attribution, anomalies, spend, support, NPS, JTBD, unit economics, premium, KYC deep-dive, referral, assisted CAC, FX sourcing, premium offers, anchor CAC and dormant win-back follow the published project narrative (README + part pages).
Naive pre/post против DiD по исходам Оценка эффекта KYC-фикса тремя способами: naive pre/post, 2×2 DiD и covariate-adjusted DiD. Pre/post не вычитает общий месячный тренд.
0 5 10 Активация — Naive pre/post: 6.29 6.29 M1 retention — Naive pre/post: 7.59 7.59 M3 retention — Naive pre/post: 7.6 7.6 Активация — 2×2 DiD: 4.99 4.99 M1 retention — 2×2 DiD: 7.57 7.57 M3 retention — 2×2 DiD: 9.16 9.16 Активация — Covariate-adjusted DiD: 4.92 4.92 M1 retention — Covariate-adjusted DiD: 7.49 7.49 M3 retention — Covariate-adjusted DiD: 9.09 9.09 Активация M1 retention M3 retention Исход Эффект, п.п. Naive pre/post 2×2 DiD Covariate-adjusted DiD Выводы M3-удержание: DiD ATT +9,09 п.п. против naive +7,60 п.п. — причинная оценка выше и подтверждает Project 3. Активация: naive +6,29 п.п. против DiD +4,92 п.п. — pre/post завышает эффект на ~1,4 п.п. Recovery: DiD восстанавливает заложенный эффект Заложенный генератором ATT против DiD-оценки: 3/3 95% ДИ накрывают истину — оценщик специфицирован корректно.
0 5 10 Активация — Injected (truth): 5.7 5.7 M1 retention — Injected (truth): 8.5 8.5 M3 retention — Injected (truth): 9 9 Активация — Recovered (DiD): 4.92 4.92 M1 retention — Recovered (DiD): 7.49 7.49 M3 retention — Recovered (DiD): 9.09 9.09 Активация M1 retention M3 retention Исход ATT, п.п. Injected (truth) Recovered (DiD) Выводы DiD-оценки близки к истине: расхождение 0,78 / 1,01 / 0,09 п.п., все ДИ накрывают заложенный эффект. Метод валиден: 3/3 ДИ накрывают истину — дизайн пригоден для реальных данных.