Forecast outflow of players
Forecast outflow of players
The purpose of outflow forecasting is to identify players at risk of not returning in advance and launch controlled actions (re-activation, RG limiters, personal offers), maximizing value and minimizing harm. Below is the end-to-end framework from data to operation.
1) Definitions and framework
Accounting unit: user (user/master_id) - default.
Churn rule: No target activity ≥ T days (for example, 14/30). Fix activity: ≥1 session/rate/deposit.
Forecast horizon: H days (outflow risk in the next 7/14/30 days).
Cutoff date: date of formation of features; labels should not use the information later than cutoff.
2) Point-in-Time
Target (classification): 'churn _ next _ H = 1' if the player is not active even once in the window (t, t + H] and then fulfills the T rule.
Time-to-event (survival): time to outflow or censorship; good for cap/queue scheduling.
Sliding slices: Generate teaching examples on different dates with lags to keep the future flowing.
Windows of truth: wait for confirmation of T outflow until the mark is fixed (delayed truth).
3) Features and windows
Recency/Frequency/Monetary: days with last activity/deposit, intensity beyond windows 7/ 14/30/90, ARPPU/frequency.
Behavior and content: game categories, variety, run-length, time of day/week.
Marketing: opening fluffs/letters, reactions to offers, unsubscribes.
Risks/RG/fraud: flags and counters, neatly - like guardrails.
Calendar: holidays/matches/salary days, seasonal features (dow, dom, wom).
Identities/devices: platform/OS/device changes, IP/ASN stability.
Online/offline parity: fichestore with the same recipes and cut time.
4) Simulation
4. 1 Classification (outflow risk to H window)
Logistic regression (interpretable), GBM/Random Forest (strong baselines), Tab/Seq-NN.
Thresholds for the cost of errors, not for the "beautiful ROC."
4. 2 Survival/Hazard (time to outflow)
Kaplan-Meier (curve form), Cox PH/AFT, discrete-time hazard (log by day with calendar).
They give the probability of outflow in time, allow you to plan the frequency of contacts and mouthguards.
4. 3 Sequential and hybrids
RNN/TFT/Transformer with temporary features and skip masks.
Hybrid: binary risk and time to event → better decision making.
4. 4 Uplift models
Increase in contact retention is predicted; apply if there is a log of actions/experiments.
5) Evaluation and calibration
Class imbalance: main - PR-AUC, Recall@FPR≤x%, Precision @ k.
Probability calibration: Brier, reliability plots; Platt/Isotonic.
Time: backtesting with folds spread across the calendar (rolling origin).
Stability: variation of metrics across segments (country/channel/platform).
Survival: integral error on the risk curve, calibration S (t).
6) Thresholds, hysteresis and decision policy
Separate the zones:- 'score ≥ τ_block' → strong intervention (personal offer/call)
- 'τ _ review ≤ score <τ_block' → soft contact (push/e-mail)
- 'score <τ_review' → no effect
Hysteresis: the input threshold is higher than the output threshold so as not to "blink."
Cooldowns: minimum intervals of repeated touches per user/channel.
Guardrails: ROMI≥0, zhaloby≤Kh, RG restrictions, contact frequency.
Decision table example
7) Solution economics
Expected value:[
EV = p_{\text{uderzhaniya action} }\cdot LTV_{\text{future}}
p_{\text{vred} }\cdot Harm - Cost
]
Optimize thresholds and channel allocation over EV rather than bare CR.
8) Experiments and causality
A/B: contact/offer strategies; main metric - retention uplift (D7/D30), guardrails - complaints/RG.
Quasi-experiments: DiD/synthetic control during regional rollouts.
Uplift score: Qini/AUUC, uplift @ k.
9) Deploy and online circuit
Scoring: p95 ≤ 100-300 ms; Request idempotence, 'correlation _ id'.
Orchestrator: guaranteed delivery, retry/backoff, DLQ, rate-limit per channel/user.
Solution Log: 'signal→score→decision→action→outcome' with model/policy versions.
Feature parity: identical features online/offline; time slices - strictly up to cutoff.
10) Monitoring and drift
Quality: PR-AUC/Recall @ FPR on sliding window, calibration; share in 'block/review' zones.
Drift: PSI/KL by key features, target share shift, "new" patterns.
Operations: latency, timeouts,% folbacks, contact queue, complaints.
Fairness: differentiation of errors/thresholds by segments; explainability audit.
11) Pseudo-SQL/Recipes
A. churn_next_14 Labeling (Classification)
sql
WITH activity AS (
SELECT user_id, DATE_TRUNC('day', ts) AS d
FROM event_activity
),
snap AS (-- cut-off date
SELECT DISTINCT DATE_TRUNC('day', ts) AS cut
FROM event_activity
WHERE ts BETWEEN:train_from AND:train_to
),
label AS (
SELECT s. cut, a. user_id,
CASE WHEN NOT EXISTS (
SELECT 1 FROM activity a2
WHERE a2. user_id = a. user_id
AND a2. d > s. cut AND a2. d <= s. cut + INTERVAL '14 day'
) THEN 1 ELSE 0 END AS churn_next_14
FROM snap s
JOIN (SELECT DISTINCT user_id FROM activity) a ON 1=1
)
SELECT FROM label;
B. Rolling Features (7/30/90) with point-in-time
sql
SELECT u. user_id, s. cut AS cut_day,
SUM(CASE WHEN a. d > s. cut - INTERVAL '7 day' AND a. d <= s. cut THEN 1 END) AS act_7d,
SUM(CASE WHEN a. d > s. cut - INTERVAL '30 day' AND a. d <= s. cut THEN 1 END) AS act_30d,
SUM(CASE WHEN p. d > s. cut - INTERVAL '30 day' AND p. d <= s. cut THEN p. amount ELSE 0 END) AS rev_30d,
DATE_PART('day', s. cut - MAX(a. d)) AS recency_last_act
FROM snap s
JOIN users u ON 1=1
LEFT JOIN activity a ON a. user_id = u. user_id AND a. d <= s. cut
LEFT JOIN payments p ON p. user_id = u. user_id AND p. d <= s. cut
GROUP BY 1,2;
12) Artifact patterns
Passport of the outflow model (template)
ID/Version: 'CHURN _ 14D _ GBM _ v4'
Target/window: 'churn _ next _ 14', PIT slices by day
Features: RFM, content, marketing, calendar, device
Metrics: PR- AUC≥0. 45, Recall@FPR≤1% ≥ 0. 30, Brier≤X
Calibration: isotonic
Thresholds: 'τ _ block/ τ _ review' with hysteresis
SLO: scoring ≤ 150 ms p95; Generation of offline report ≤ 06:00
Owners, revision date, runbook degradation
Decision-ready report (skeleton)
"Churn 14d: risk by segment, top reasons, forecast re-activation conversions"
Risks: the share of high-risk increased in X/Y platforms (+ Δ pp)
Recommendations: increase the budget of contacts in segment A, change channel B, RG limiters in segment C
13) Security, privacy, ethics
PII minimization: tokenization of identifiers, RLS/CLS.
Transparency - top-features are available to the support.
Ethics/RG: Don't target vulnerable groups with aggressive offers; cap frequency of contacts.
14) Frequent errors
The label uses the future (label leakage), mixing TZ/windows.
ROC-AUC score at 1% target without PR-AUC/Recall @ FPR.
No calibration - thresholds are configured blindly.
Absence of hysteresis/cooldowns → "blinking" of contacts and complaints.
We did not associate the risk with EV/LTV - we "treat" those who are unprofitable to treat.
Online/offline desynchronized feature - quality drops in sales.
15) Check list before loop release
- T/H/TZ, activity, exclusions determined; PIT procedures are completed
- Leak-free datasets; rolling validation, benchmarks and calibration
- Threshold policy, hysteresis, mouthguards and guardrails documented
- Action orchestrator, idempotence, signal→decision→action audit
- Monitoring quality/drift/fairness, alerts and runbooks
- Uplift and/or A/B is ready; decision-ready report (with EV)
- Model/feature/metric versions, owners, SLO registered
Total
Outflow prediction works only as a system: clear markup without leaks → informative features → a suitable model (classification and/or survival) → metrics, calibration and thresholds from the cost of errors → safe orchestration of actions → monitoring drift and fairness. Such a circuit provides solutions, not just "risks": whom, when and how to contact in order to increase retention and LTV.