Search Sergey Vasilyev

A Practical Baseline for Player Churn Prediction in iGaming

How to define churn, which features to start with, and why calibrated probabilities matter more than a high AUC.

Share

Demo article: an example post that shows the blog’s formatting.

Almost every iGaming operator asks for a churn model sooner or later. Before reaching for deep learning, it pays to build a simple, honest baseline. It shows how much signal the data really has, and it gives every later model something to beat.

1. Define churn explicitly

Players rarely close their accounts, so churn has to be defined by inactivity. A common choice is:

A player is churned if they make no real-money bet in the next 30 days after the observation date.

The window should match how the business acts. If the CRM team runs weekly retention campaigns, a 7- or 14-day horizon may be more useful than 30 days.

2. Start with behavioural features

Recency, frequency and monetary value (RFM) plus session patterns cover most of the signal:

  • days since the last bet, deposit and login
  • number of sessions and bets over the last 7, 14 and 30 days
  • deposit and net gaming revenue (NGR) trends
  • share of the product mix (casino, sports, live)
  • bonus usage and bonus-only activity

3. Train a gradient-boosting baseline

import lightgbm as lgb
from sklearn.calibration import CalibratedClassifierCV

model = lgb.LGBMClassifier(
    n_estimators=500,
    learning_rate=0.05,
    num_leaves=31,
    class_weight="balanced",
)

# Time-based split: train on the past, validate on later cohorts
calibrated = CalibratedClassifierCV(model, method="isotonic", cv=3)
calibrated.fit(X_train, y_train)

churn_proba = calibrated.predict_proba(X_valid)[:, 1]

Always split by time, not at random. A random split leaks future behaviour into training and makes the offline metrics look better than they really are.

4. Calibration beats a high AUC

Retention budgets are allocated by expected value, so the predicted probability has to mean what it says. A model with AUC 0.85 whose 0.3 really means 0.3 is more useful than a model with AUC 0.88 that is badly miscalibrated. Check reliability curves and the Brier score, not just ranking metrics.

Takeaway

A well-defined target, time-aware validation and calibrated probabilities give you a baseline that is strong, easy to explain and ready for production. Only after that is it worth trying more complex architectures.