Короткий ответ
Формула LTV = ARPU / churn предполагает постоянный churn rate во всех периодах жизни пользователя (геометрическое убывание базы), но на практике churn обычно выше в первые месяцы и снижается для "выживших" пользователей, поэтому формула систематически завышает LTV, особенно для молодых когорт.
Как это работает подробнее
формула выводится из суммы бесконечной геометрической прогрессии: ожидаемое число периодов жизни = Σ(1-churn)^t = 1/churn при допущении константного churn; умножая на ARPU, получаем суммарную ожидаемую выручку.
Пример кода
ltv_model.py
import numpy as np
# эмпирическая retention-кривая когорты по месяцам (месяц 0 = 100%)
retention_curve = np.array([1.0, 0.45, 0.30, 0.22, 0.18, 0.15, 0.13, 0.12, 0.11, 0.10, 0.10, 0.09])
arpu = 500 # руб/месяц на активного пользователя
ltv_12m = arpu * retention_curve.sum()
print(ltv_12m) # ≈ 1 475 руб за 12 месяцев
# наивная формула с churn первого месяца
churn_m1 = 1 - 0.45
ltv_naive = arpu / churn_m1
print(ltv_naive) # ≈ 909 руб — сильно отличается от эмпирической оценки в обе стороны в зависимости от формы кривойЧто использовать на практике
- Практика. правильнее оценивать LTV через интеграл (сумму) фактической retention-кривой по когортам: LTV = ARPU × Σ retention(t) по t от 0 до горизонта, где retention(t) берётся из эмпирических данных, а не предполагается постоянной; для расчёта на ограниченном горизонте (например, 12 месяцев) нужно также решить, как экстраполировать "хвост" кривой за пределами наблюдаемых данных.
Подводные камни
- Частые ошибки. применяют формулу 1/churn, посчитанную по churn первого месяца, ко всей базе — это сильно завышает LTV, так как первый месяц обычно самый "токсичный"; сравнивают LTV, посчитанный простой формулой, с CAC без указания, что это очень грубая верхняя оценка.