Что такое LTV и почему он важен
LTV (Lifetime Value) — это сколько денег один пользователь приносит продукту за всё время своей «жизни» в нём. Зарегистрировался, пользовался 8 месяцев, платил по 500 рублей в месяц — его LTV = 4 000 рублей.
Зачем это знать? Потому что LTV — это ответ на главный бизнес-вопрос: сколько можно потратить на привлечение одного пользователя? Если LTV = 4 000₽, а привлечение стоит 5 000₽ — бизнес теряет деньги на каждом клиенте. Если привлечение стоит 1 000₽ — бизнес растёт.
Зачем LTV продуктовому аналитику
Три способа посчитать LTV
Не существует «единственно правильной» формулы LTV. Способ расчёта зависит от типа продукта, доступных данных и задачи. Вот три основных подхода — от простого к точному.
Способ 1: Простая формула (для подписок)
Lifetime можно выразить через Churn: если ежемесячный churn = 5%, то средний Lifetime = 1 / 0.05 = 20 месяцев. Тогда:
Способ 2: На основе когортных данных (самый точный)
Берём когорту пользователей и считаем, сколько они реально заплатили за N месяцев. Это не прогноз — это факт. Самый надёжный способ, но требует исторических данных.
Способ 3: Прогнозный LTV через Retention
Когда исторических данных мало (молодой продукт), можно экстраполировать кривую retention и на её основе спрогнозировать LTV. Идея: если мы знаем, как затухает retention, и знаем ARPU — можем предсказать суммарную выручку.
Этот метод связывает LTV с retention — и именно поэтому retention часто называют самой важной продуктовой метрикой. Улучшая retention, вы напрямую увеличиваете LTV.
Сравнение трёх способов
| Способ | Точность | Когда использовать |
|---|---|---|
| ARPU ÷ Churn | Низкая — предполагает стабильный churn, что редко бывает | Быстрая оценка для подписочных продуктов. Хорош на собесе как первое приближение |
| Когортный (факт) | Высокая — основан на реальных данных, не на предположениях | Основной метод в BigTech. Нужны данные хотя бы за 3–6 месяцев |
| Через Retention | Средняя — зависит от качества экстраполяции retention-кривой | Молодые продукты, прогнозирование. Хорош, когда нет длинной истории платежей |
LTV, CAC и Payback Period: связка метрик
LTV сам по себе — число без контекста. Он становится мощным только в связке с CAC (стоимость привлечения) и Payback Period (время окупаемости). Вместе они показывают, зарабатывает ли бизнес на каждом клиенте.
SQL-запросы для расчёта LTV
Запрос 1: Когортный LTV по месяцам
Считаем накопленный LTV для каждой когорты на каждый месяц жизни. Основной запрос, который спрашивают на собесе.
WITH cohorts AS ( SELECT user_id, DATE_TRUNC('month', registration_date) AS cohort FROM users ), monthly_revenue AS ( SELECT c.cohort, DATE_PART('month', AGE(DATE_TRUNC('month', o.order_date), c.cohort) )::INT AS period, SUM(o.amount) AS revenue, COUNT(DISTINCT c.user_id) AS cohort_size FROM cohorts c JOIN orders o ON c.user_id = o.user_id WHERE o.order_date >= c.cohort GROUP BY c.cohort, period ) SELECT cohort, period, ROUND(revenue / cohort_size, 2) AS arpu_period, ROUND( SUM(revenue) OVER ( PARTITION BY cohort ORDER BY period ) / cohort_size, 2 ) AS cumulative_ltv FROM monthly_revenue ORDER BY cohort, period;
Ключ — оконная функция SUM OVER с ORDER BY period. Она накапливает выручку от месяца к месяцу, давая «растущий» LTV: за 1 месяц, за 2 месяца, за 3 и т.д.
Запрос 2: LTV по каналам привлечения
Частая задача на собесе и в работе: сравнить, какой канал приводит самых ценных пользователей — не самых дешёвых, а тех, кто больше платит.
SELECT u.acquisition_channel, COUNT(DISTINCT u.user_id) AS users, ROUND( COALESCE(SUM(o.amount), 0) / COUNT(DISTINCT u.user_id), 2 ) AS ltv_6m FROM users u LEFT JOIN orders o ON u.user_id = o.user_id AND o.order_date >= u.registration_date AND o.order_date < u.registration_date + INTERVAL '6 months' WHERE u.registration_date < CURRENT_DATE - INTERVAL '6 months' -- только когорты, у которых прошло 6 месяцев GROUP BY u.acquisition_channel ORDER BY ltv_6m DESC;
Запрос 3: Простой расчёт CAC по каналам
WITH ltv_data AS ( SELECT u.acquisition_channel, COUNT(DISTINCT u.user_id) AS users, COALESCE(SUM(o.amount), 0) / COUNT(DISTINCT u.user_id) AS ltv_6m FROM users u LEFT JOIN orders o ON u.user_id = o.user_id AND o.order_date < u.registration_date + INTERVAL '6 months' WHERE u.registration_date >= '2025-01-01' AND u.registration_date < '2025-04-01' GROUP BY u.acquisition_channel ), spend AS ( SELECT channel, SUM(cost) AS total_spend FROM marketing_spend WHERE spend_date >= '2025-01-01' AND spend_date < '2025-04-01' GROUP BY channel ) SELECT l.acquisition_channel, l.users, ROUND(l.ltv_6m, 0) AS ltv, ROUND(s.total_spend / l.users, 0) AS cac, ROUND(l.ltv_6m / NULLIF(s.total_spend / l.users, 0), 1) AS ltv_cac_ratio FROM ltv_data l JOIN spend s ON l.acquisition_channel = s.channel ORDER BY ltv_cac_ratio DESC;
Когда LTV врёт: 5 ситуаций
Вопросы про LTV на собесе в BigTech
- Что такое LTV? Как бы вы его посчитали для нашего маркетплейса?
- Назовите три способа расчёта LTV. Когда какой использовать?
- Как связаны LTV и Retention? Можно ли увеличить LTV, не меняя цены?
- Маркетинг говорит, что канал X приводит дешёвых пользователей. Но вы видите, что их LTV ниже. Как аргументируете решение?
- Напишите SQL-запрос: посчитайте LTV за 6 месяцев по когортам и каналам привлечения.
- LTV/CAC у нас = 5. Это хорошо? Что бы вы посоветовали бизнесу?
- В чём разница между Revenue LTV и Gross Margin LTV? Когда важно различать?
- Как вы предскажете LTV для когорты, которой всего 2 месяца?
Связанные материалы
Главное про LTV
LTV — не абстрактная формула, а инструмент принятия решений. Он отвечает на конкретные вопросы: какой канал привлечения лучше, окупается ли маркетинг, работает ли новая фича, здоров ли бизнес.
На собеседовании в BigTech от вас ждут: знание нескольких способов расчёта, умение написать SQL-запрос для когортного LTV, понимание связки LTV/CAC/Payback — и способность объяснить, почему «просто средний LTV» часто бесполезен.
Следующий шаг: посчитайте когортный LTV на любом e-commerce датасете и постройте график LTV(N) для нескольких когорт. Если кривые расходятся — вы видите реальный эффект изменений в продукте.