LTV простыми словами: формулы, расчёт, SQL и связь с CAC — new-lvl.pro
new-lvl.pro · Статьи · Метрики
Статья // 13 мин чтения

LTV простыми
словами: формулы,
расчёт и применение

Что такое Lifetime Value, три способа его посчитать, как связан с CAC и Payback Period — и зачем всё это нужно продуктовому аналитику на собесе и в работе.

Что такое LTV и почему он важен

LTV (Lifetime Value) — это сколько денег один пользователь приносит продукту за всё время своей «жизни» в нём. Зарегистрировался, пользовался 8 месяцев, платил по 500 рублей в месяц — его LTV = 4 000 рублей.

Зачем это знать? Потому что LTV — это ответ на главный бизнес-вопрос: сколько можно потратить на привлечение одного пользователя? Если LTV = 4 000₽, а привлечение стоит 5 000₽ — бизнес теряет деньги на каждом клиенте. Если привлечение стоит 1 000₽ — бизнес растёт.

Зачем LTV продуктовому аналитику

Оценка каналов привлечения — какой канал приводит пользователей с самым высоким LTV, а не просто дешёвых
Сегментация — какие сегменты пользователей самые ценные? Можно ли увеличить долю этих сегментов?
Оценка фич — новый онбординг поднял LTV когорты на 15%? Значит, фича реально работает
Прогнозирование выручки — зная LTV и объём привлечения, можно прогнозировать будущую выручку
// LTV vs ARPU — не путайте
ARPU (Average Revenue Per User) — средний доход на пользователя за период (обычно за месяц). LTV — суммарный доход за всю жизнь пользователя. ARPU — срез, LTV — накопленная сумма. Связь: LTV = ARPU × Lifetime.

Три способа посчитать LTV

Не существует «единственно правильной» формулы LTV. Способ расчёта зависит от типа продукта, доступных данных и задачи. Вот три основных подхода — от простого к точному.

Способ 1: Простая формула (для подписок)

Простая формула LTV
LTV = ARPU × Lifetime
ARPU — средний доход на пользователя за период. Lifetime — среднее время жизни пользователя в продукте.

Lifetime можно выразить через Churn: если ежемесячный churn = 5%, то средний Lifetime = 1 / 0.05 = 20 месяцев. Тогда:

LTV через Churn
LTV = ARPU ÷ Churn Rate
Работает для подписочных продуктов с относительно стабильным churn. Для e-commerce — слишком грубо.
Пример расчёта Подписочный сервис
Средний чек подписки 490 ₽/мес
Ежемесячный Churn 8%
Средний Lifetime (1 ÷ 0.08) 12.5 мес
LTV = 490 × 12.5 6 125 ₽

Способ 2: На основе когортных данных (самый точный)

Берём когорту пользователей и считаем, сколько они реально заплатили за N месяцев. Это не прогноз — это факт. Самый надёжный способ, но требует исторических данных.

Когортный LTV
LTV(N) = Σ Revenue за месяцы 0..N ÷ Размер когорты
Суммарная выручка когорты делённая на размер когорты. Даёт LTV на горизонте N месяцев.
Пример: когорта январь 2025 E-commerce
Размер когорты 5 000 пользователей
Месяц 0 (январь) — выручка 1 200 000 ₽
Месяц 1 (февраль) — выручка 480 000 ₽
Месяц 2 (март) — выручка 310 000 ₽
Месяц 3 (апрель) — выручка 220 000 ₽
Суммарная выручка за 4 месяца 2 210 000 ₽
LTV(3) = 2 210 000 ÷ 5 000 442 ₽
// Преимущество когортного метода
Можно сравнивать LTV разных когорт: если январская когорта за 3 месяца дала LTV 442₽, а апрельская — 510₽, значит продукт стал лучше монетизировать пользователей. Это мощнее, чем общий средний LTV.

Способ 3: Прогнозный LTV через Retention

Когда исторических данных мало (молодой продукт), можно экстраполировать кривую retention и на её основе спрогнозировать LTV. Идея: если мы знаем, как затухает retention, и знаем ARPU — можем предсказать суммарную выручку.

Прогнозный LTV
LTV = ARPU × Σ Retention(month_i)
Суммируем retention за каждый месяц (0.42 + 0.28 + 0.21 + ...) и умножаем на ARPU. Retention = доля вернувшихся.

Этот метод связывает LTV с retention — и именно поэтому retention часто называют самой важной продуктовой метрикой. Улучшая retention, вы напрямую увеличиваете LTV.

Сравнение трёх способов

Способ Точность Когда использовать
ARPU ÷ Churn Низкая — предполагает стабильный churn, что редко бывает Быстрая оценка для подписочных продуктов. Хорош на собесе как первое приближение
Когортный (факт) Высокая — основан на реальных данных, не на предположениях Основной метод в BigTech. Нужны данные хотя бы за 3–6 месяцев
Через Retention Средняя — зависит от качества экстраполяции retention-кривой Молодые продукты, прогнозирование. Хорош, когда нет длинной истории платежей

LTV, CAC и Payback Period: связка метрик

LTV сам по себе — число без контекста. Он становится мощным только в связке с CAC (стоимость привлечения) и Payback Period (время окупаемости). Вместе они показывают, зарабатывает ли бизнес на каждом клиенте.

LTV
6 125 ₽
сколько приносит клиент
vs
CAC
1 800 ₽
сколько стоит привлечь
LTV / CAC
3.4×
здоровый бизнес
Payback
3.7 мес
когда окупится
CAC
Customer Acquisition Cost
Сколько стоит привлечь одного платящего пользователя. Считается как: расходы на маркетинг / количество новых платящих за период.
CAC = marketing_spend / new_paying_users
LTV / CAC
Соотношение ценности и затрат
Главное число в unit-экономике. Если LTV/CAC > 3 — бизнес здоров. Если < 1 — теряет деньги на каждом клиенте. Между 1 и 3 — работает, но есть риски.
Бенчмарк: LTV/CAC ≥ 3 — хорошо
Payback Period
Срок окупаемости
Через сколько месяцев доход от пользователя «отобьёт» стоимость его привлечения. Чем короче — тем быстрее бизнес возвращает деньги в рост.
Payback = CAC / ARPU (в месяцах)
ARPU
Average Revenue Per User
Средний доход на одного пользователя за период. Для расчёта LTV часто используют ARPPU (только среди платящих) × Conversion to paid.
ARPU = revenue / active_users (за период)
// Ключевое правило
LTV/CAC — это не про «чем больше, тем лучше». Если LTV/CAC = 10, это может значить, что бизнес недоинвестирует в рост — можно тратить больше на привлечение и расти быстрее. Оптимум зависит от стадии компании и рынка, но ориентир — от 3 до 5.

SQL-запросы для расчёта LTV

Запрос 1: Когортный LTV по месяцам

Считаем накопленный LTV для каждой когорты на каждый месяц жизни. Основной запрос, который спрашивают на собесе.

Когортный LTV с накоплением PostgreSQL
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 по каналам привлечения

Частая задача на собесе и в работе: сравнить, какой канал приводит самых ценных пользователей — не самых дешёвых, а тех, кто больше платит.

LTV по каналам за 6 месяцев PostgreSQL
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;
// Важный фильтр
WHERE registration_date < CURRENT_DATE - INTERVAL '6 months' — берём только пользователей, у которых уже прошло 6 месяцев с регистрации. Иначе у свежих когорт LTV будет занижен просто потому, что они ещё не «дожили».

Запрос 3: Простой расчёт CAC по каналам

CAC и LTV/CAC по каналам PostgreSQL
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 ситуаций

Ловушка 1 Самая частая
Средний LTV по всем пользователям. LTV 500₽ может означать, что 90% пользователей платят 0₽, а 10% — по 5 000₽. Среднее бессмысленно без распределения. Всегда считайте LTV по сегментам или хотя бы смотрите медиану рядом со средним.
Ловушка 2 Методологическая
Считать LTV на коротком горизонте и экстраполировать. LTV за первый месяц × 12 ≠ годовой LTV. Retention падает, средний чек может меняться, пользователи ведут себя по-разному. Экстраполяция без учёта кривой retention — это самообман.
Ловушка 3 Аналитическая
Сравнивать LTV когорт разного возраста. LTV когорты с 12-месячной историей будет выше, чем у когорты с 3-месячной — просто потому что у первой было больше времени платить. Сравнивайте только LTV на одинаковом горизонте: LTV(3) с LTV(3), LTV(6) с LTV(6).
Ловушка 4 Бизнесовая
Не учитывать маржинальность. LTV 5 000₽ выглядит здорово, но если себестоимость товара или обслуживания — 4 500₽, реальная ценность клиента всего 500₽. Для зрелого анализа считают не Revenue-based LTV, а Gross Margin LTV.
Ловушка 5 Коммуникационная
LTV без контекста CAC. LTV 10 000₽ — это хорошо или плохо? Без CAC — невозможно сказать. Если привлечение стоит 15 000₽ — бизнес убыточен. Всегда показывайте LTV в связке с CAC и Payback Period.

Вопросы про 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) для нескольких когорт. Если кривые расходятся — вы видите реальный эффект изменений в продукте.

АТ
Андрей Тарасенко
// Продуктовый аналитик · Авито · Ментор

В Авито unit-экономика — основа для решений о монетизации. Считаю LTV по сегментам каждый месяц. Пишу о том, как это работает на практике, а не в учебнике.

Написать в Telegram