Собесов

Сценарий: lifetime curves и LTV — экстраполяция от 30 дней до 12 месяцев

Продуктовая аналитикаRetention deep-diveСложнаяMiddle

Условие

У нас есть данные cohort retention только за 30 дней. CFO просит спрогнозировать 12-месячный LTV. Как?

Решение

Способ 1: параметрическая модель retention

Чаще всего retention хорошо ложится на power law или shifted-geometric:

r(t) = α × t^(-β)        # power law
r(t) = θ × (1 - p)^t     # shifted geometric (BG/NBD)

Подбираем параметры на 30 днях, экстраполируем дальше.

import numpy as np
from scipy.optimize import curve_fit
 
t_obs = np.arange(1, 31)
r_obs = retention_array  # доля активных по дням
 
def power_law(t, a, b):
    return a * t**(-b)
 
popt, _ = curve_fit(power_law, t_obs, r_obs)
t_future = np.arange(1, 366)
r_future = power_law(t_future, *popt)

Способ 2: BG/NBD + Gamma-Gamma

Стандарт в e-commerce. lifetimes библиотека:

from lifetimes import BetaGeoFitter, GammaGammaFitter
 
bgf = BetaGeoFitter()
bgf.fit(rfm['frequency'], rfm['recency'], rfm['T'])
 
ggf = GammaGammaFitter()
ggf.fit(rfm['frequency'], rfm['monetary'])
 
ltv_365 = ggf.customer_lifetime_value(
    bgf, rfm['frequency'], rfm['recency'], rfm['T'], rfm['monetary'],
    time=12, discount_rate=0.01,
)

Способ 3: ML на похожих cohort

Если есть исторические cohort с полным жизненным циклом, обучите модель «retention по дню t → retention через год».

Способ 4: «average historical curve»

Берём средную форму retention по старым cohort, нормируем на 30-й день текущей. Просто и часто достаточно.

LTV

LTV(t) = ARPU × margin × Σ r(i) for i = 1..t

или просто ARPU × margin × (1/churn_steady) для long-term steady state.

Подводные камни

  1. Экстраполяция на 12 месяцев по 30 дням всегда рискованная. Чем меньше точек, тем шире доверительный интервал.
  2. Power law даёт reasonable формы, но переоценивает long tail (медленнее убывает, чем реальность).
  3. BG/NBD предполагает «вернулся = живой», подходит для частых покупок, не для редких (раз в год).
  4. Discount rate в LTV критичен на годовом горизонте — без него LTV завышен.
  5. Один LTV на всех — слишком грубо. Сегментируйте по каналам, GEO, типу первого товара.

Эталонный ответ

Параметрическая power-law/shifted-geometric кривая на 30 днях → экстраполяция; для e-com — BG/NBD + Gamma-Gamma. Always с CI и сегментацией по каналам.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти