Про звіт
Retention & Churn — звіт для аналізу відтоку трейдерів (Churn), фінансових втрат від нього (Losses) та кандидатів на реактивацію (Reactivation). Методологія churn 1-в-1 як у Power BI Main Dashboard (Trader_Weekly). Джерело — ClickHouse hermes (CDC через PeerDB), часовий пояс Asia/Kolkata (IST). Кеш ~10 хв; кнопка Update форсує перерахунок.
Базові поняття
Трейдер = AccountProvider (провайдер), атрибуція через bank_accounts.provider_pid.
«Активний у вікні W» = є ≥1 payin-запис будь-якого статусу (факт спроби, не лише успіх) — саме так рахує Power BI.
Вікна — півінтервали [start, end) від «сьогодні» (або дати To): This [t−7,t), Last [t−14,t−7). Сьогодні (t) — відкритий край (snapshot).
Affiliate — за префіксом імені трейдера (G[P2P]→Griffin), та сама схема, що в Trader Operational / Weekly KPI / PBI. Manager = provider_groups.name.
Виключено службовий Operation provider.
Фільтри
Affiliate / Manager / Status / Group / Type / Trader — мультивибір, як у Weekly KPI; перераховують усі вкладки. Type=P2P за замовчуванням.
From–To: To = дата «станом на» (snapshot churn на цю дату), From розширює діапазон динаміки.
Update — примусове оновлення з бази. Скинути фільтр (кнопка в кожному дропдауні) очищає лише його; Reset — усі фільтри до дефолту (P2P, сьогодні).
Churned (відтік)
Трейдер, активний минулого тижня й
не активний цього. Це тижневий
event, не «всього неактивних».
формула
Churned This Week =
active(Last [t−14,t−7))
AND NOT active(This [t−7,t))
active = ≥1 payin (будь-який статус)
Churn rate
churned / active_last_week — знаменник = база минулого тижня.
Active (this / last week)
К-сть трейдерів з payin у вікні цього / минулого тижня.
Reactivated
Активний цього тижня, не активний минулого, але був активний раніше (повернувся).
New
Активний цього тижня, не активний минулого, і раніше payin не було (новий).
Net retention
New + Reactivated − Churned — чистий приріст активної бази за тиждень.
WoW (Δ) — чип динаміки
У матрицях (статуси, втрати) під числом — зміна тиждень-до-тижня: ▲ зелена = ріст, ▼ червона = спад vs попередній тиждень. Для лічильників — у %, для churn rate — у pp (процентних пунктах).
Churn у динаміці
Потижневий перерахунок churn-event по ковзному вікну 7 календарних днів (графік: rate % + к-сть churned).
Матриця статус × тиждень
Поточний providers.status churned-трейдерів по тижнях (active / paused / scammer / lost…). Клітинка = к-сть + WoW Δ%. Перемикач Кількість / %: «%» = частка статусу від churned тижня. Показує, яка частина «відтоку» — не реальна втрата.
Неактивні трейдери (Statistics)
Список тих, хто churned станом на вибрану дату за поточним типом churn (7d / 14 / Formal — перемикач нижче): менеджер · трейдер · афіліат · статус · останній PayIn · днів мовчить. Кількість рядків = останній стовпець графіка «Churn в динаміці» (той самий розрахунок). Formal — методологія E: трейдери, чий статус на кінець поточного періоду термінальний (archive/scammer/lost/60DaysLost, audit виключено), а на кінець попереднього був робочим; стани відновлено з журналу змін статусів, тому минулі періоди не переписуються; рахуються лише трейдери, що колись мали PayIn. Клік на рядок — матриця активності по тижнях. Детальна матриця втрат — у вкладці Losses.
Losses — когорта
Трейдери, що за минулий тиждень перетекли з active у не-active (= churned-this-week). «Скільки недобираємо через відтік».
Run-rate (Amount/7)
Денна швидкість метрики = Σ(за останні 7 активних днів) / 7. Нормалізує тих, хто активний не всі 7 днів.
PayIn / день (₹)
Run-rate обігу payin. Джерело — transactions (operation=payin), INR.
PayOut / день (₹)
Run-rate обігу payout (abs(amount)), INR.
Settle / день ($)
Run-rate сетлу. Джерело — settlements.amount_usdt, USDT.
Σ Unique Deposit ($)
Депозит = баланс депозит-акаунта (bank_accounts.account_balance по deposit_bank_account_pid), USDT. Це константа на трейдера → не сумується по днях, агрегат = сума по унікальних трейдерах.
Тижнева / місячна проєкція
Cohort-total денний = Σ run-rate усіх трейдерів когорти. Проєкція: ×7 (тиждень) / ×30.44 (місяць, серед. днів/міс). Валова (gross) оцінка до реактивації — реальна (net) втрата нижча на величину false-churn; для фінзвіту брати confirmed-поріг. Deposit — стан, не проєктується.
Матриця втрат × тижні
Рядок = трейдер, колонки = 8 тижнів, клітинка = метрика за тиждень + WoW Δ%. Рядок «Разом» — сума по когорті за кожен тиждень. Перемикач PayIn / PayOut / Settle.
Reactivation — неактивні трейдери
Список нетермінальних трейдерів (мали PayIn за ~2 міс), відсортований за днями мовчання = днів від останньої PayIn-спроби (payments, будь-який статус — як у Power BI). Повзунок «Вікно неактивності» 3–15 днів задає поріг N — показуються трейдери з днів мовчить ≥ N. Клік на рядок — матриця активності по тижнях (гроші з transactions) + остання спроба PayIn. Чипи статусу фільтрують список.
Джерело даних / паритет
ClickHouse hermes (readonly, CDC). Churn-membership = payin-спроби (як PBI); гроші (Losses/Reactivation) = фактичний обіг (success). Звіряється з Power BI-еталоном. Дедуплікація довідників через FINAL.
Статуси трейдера
Значення providers.status (джерело — Keystone). ⛔ термінальні — виключені з бази реактивації. База Reactivation = status='active'.
| active | Робочий статус (ознака активності в джерелі). Авто-переходи в paused/lost нижче; повертають в active співробітники/антискам після перевірки. |
| paused | Авто, якщо трейдер не користується кабінетом 1 тиждень (немає пейінів тощо). Повернути в active можуть лише співробітники з КС. |
| lost ⛔ | Авто, якщо 2 тижні немає активності. Або вручну (Саша), щоб трейдер не світився в портфелі менеджера, коли затягується аудит. |
| 60DaysLost ⛔ | Довга неактивність. За цим статусом фіни орієнтуються, коли списати баланс і перевести дашборд в архів. |
| scammer ⛔ | Ставить антискам після перевірок і виявлення доказів скаму. |
| suspicious | Ставить/знімає антискам (іноді автоматика): проблеми з доказами по пейаутах, кілька реджектів пейінів підряд, або поганий скрін квитанції. Пейіни/пейаути недоступні, акаунти не ввімкнути. |
| restricted ⛔ | Авто, коли назбирується багато пейаутів, не перевірених антискамом. У active переводить антискам після перевірки. Не може ввімкнути акаунти на пейін. |
| audit | Ставить/знімає фінвідділ. Трейдер не працює до кінця аудиту й переводу в active. |
| archive ⛔ | Ставлять фіни: немає активності на стадії інтеграції (новий кабінет, депозит не внесено, AFK); або після аудиту при завершенні співпраці; або після довгої неактивності після списання балансу. |
| locked ⛔ | Можуть ставити сапорт / менеджери / антискам — у кожного відділу свої причини. |
⚠ Правила «paused = 1 тиждень / lost = 2 тижні» — це задум джерела. Емпірично трапляються ручні перевизначення (active-трейдери простоюють довше), тож матриця ризику й ловить розбіжність «статус ↔ активність».