Промо
5530

Аналитика мобильных приложений: прогнозируем LTV пользователя

Комментируют аналитики Pixonic, Crazy Panda и Mail.ru Group.

В закладки
Аудио

Материал подготовлен при поддержке myTracker

myTracker прогнозирует LTV автоматически и бесплатно — это экономит время и бюджет
Попробовать

Lifetime Value (LTV) — это показатель дохода от одного пользователя. Если говорить про мобильную аналитику — деньги, которые принесёт клиент до того, как он удалит приложение и забудет о нём.

Например, пользователь играет в игру три месяца, а затем удаляет её. В первый месяц он потратил $2, во второй — $3, а в третий — не стал ничего покупать и удалил приложение: его LTV составил $5.

Зачем знать LTV

У пользователя, пришедшего по рекламе, есть стоимость привлечения — это показатель CAC (Customer Acquisition Cost). Допустим, мы потратили на объявление $1000. По нему пришли 100 человек. Стоимость привлечения каждого пользователя — $10.

Если среднее LTV всех пользователей составило $5, то мы потратили на их привлечение больше денег, чем они принесут — невыгодная ситуация. Знание LTV даёт понимание, сколько можно тратить на привлечение пользователя.

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

Советы

Считайте прибыль на определённый день

Может получиться так, что пользователь принесёт больше денег, чем стоило его привлечение, но сделает это, например, только через два года. А приложение должно окупиться через год.

Основной совет — не считать LTV в его классическом понимании. С точки зрения бизнеса, сам по себе показатель, сколько денег пользователь принесёт за всё время игры, имеет мало практического смысла.

Куда важнее понимать, какой доход принесет привлеченный пользователь в каждый его день с момента регистрации. Это дает нам понимание, когда пользователь окупится и совпадает ли это с нашими ожиданиями. Такие данные позволяют строить прогнозы и модели окупаемости.

Борис Бурангулов
ведущий аналитик в Pixonic

Если бизнес не готов ждать окупаемости бесконечно, то лучше считать не LTV, а на какой день вернутся деньги. Эта задача решается проще.

Сергей Панюшкин
ведущий продуктовый аналитик в Crazy Panda

Посчитать прибыль на определённый день поможет способ на основе накопительного ARPU, о котором мы расскажем дальше.

Делите пользователей на группы

Если анализировать всех сразу, получится среднее число, которое будет далёким от реальности. Поэтому пользователей нужно делить на группы — они называются когортами. Людей можно сгруппировать по дате регистрации, территориальным признакам, после какой рекламы пришли и так далее.

Например, люди, которые пришли после рекламы в Facebook, — это одна группа. Которые пришли из «ВКонтакте» — другая.

А если у вас много данных, то пробуйте считать LTV для одного пользователя, а не группы. Эта информация будет ещё ценнее. Например, от этих данных может зависеть монетизация конкретного человека: показывать ему рекламу или предлагать внутриигровые покупки.

Сергей Панюшкин
ведущий продуктовый аналитик в Crazy Panda

Помните о пользователях с аномальным поведением

Почти в каждой группе есть игроки, чьё поведение отличается от других. Например, все тратят по $5 в неделю, а кто-то один — по $1000. Из-за него расчёт LTV получится неточным — этого человека лучше на время исключить. Но при этом совсем забывать о таких людях не нужно.

Если полностью исключить топ-плательщиков из расчётов окупаемости, можно не учесть часть прибыли. В результате вы ограничите себя в объеме инвестиций в успешный проект. Вариант решения проблемы «китов» — выбирать размер когорт таким образом, чтобы появление топ-плательщика было статистически прогнозируемо.

Борис Бурангулов
ведущий аналитик в Pixonic

Не стоит доверять средним показателям по рынку

Даже с небольшим LTV у вас может быть всё хорошо, если вы умеете оптимизировать затраты и дешёво закупать платящих игроков.

Никита Окань
руководитель группы онлайн-рекламы игр в Mail.ru Group

Способы

Невозможно точно предсказать, сколько человек будет пользоваться приложением и сколько денег заплатит. Мы можем сделать лишь примерный прогноз. Каждый аналитик должен выбрать, какой из способов лучше подходит для его приложения, либо придумать свой.

На основе удержания — сложный способ, придётся сделать много расчётов. Подойдёт продвинутым аналитикам, если нужно определить LTV как можно точнее. Он работает хорошо, если пользователи платят стабильно, без резких изменений.

Накопительный ARPU — способ, который можно применять при наличии небольшого количества данных и за недолгий срок. Позволяет точнее понять, на какой день окупится привлечение пользователя.

Способ 1. На основе удержания

Этот способ хорош тем, что здесь мы точнее определяем, сколько в среднем дней или месяцев люди пользуются нашим приложением — Lifetime. Чтобы его рассчитать, нужно обратиться к другой метрике — показатель удержания (Retention).

Чтобы объяснить, что такое показатель удержания, возьмём простой пример. Мы запустили приложение — в первый день в него зашли 100 человек. А на второй день из них зашли только 60. Значит, показатель удержания на второй день — 60%. Его изображают в виде такого графика.

Когда приложение молодое, мы не знаем, сколько люди будут в него играть. Поэтому показатель удержания приходится прогнозировать.

Наш фактический график удержания изгибается примерно равномерно. Поэтому, если мы найдём функцию, график которой будет изгибаться похожим образом, то сможем сделать прогноз.

Есть несколько формул. Использовать можно все. Просто одна из них построит новый график чуть точнее, чем остальные. Понять, какая именно, можно только попробовав все. Если ни одна из них не подошла, можно поискать на просторах интернета другие. Например, здесь. Вот некоторые из формул:

«X» в уравнении — период времени. Например, нам известно удержание за 30 дней. Поэтому попробуем построить график на чуть больший срок — 90 суток. Соответственно, наше «X» — 90.

«A, B, C, D» — параметры функции. Это определённые числа, которые нужно подобрать так, чтобы новый график был максимально схож с фактическим. Это можно сделать вручную, либо воспользоваться инструментом Solver для Excel. Как им пользоваться, можно найти тут.

Строим графики и сравниваем их с фактическим. Должно получиться похоже на это:

Подробное руководство по графику удержания (Retention) можно найти в этой статье.

Итак, мы построили график на 90 дней. Теперь нужно узнать, сколько в среднем платит один игрок в месяц — ARPU.

Берём валовую прибыль за месяц и делим её на количество клиентов, которые пользовались приложением в этом месяце. Например, игра работает 30 дней. За это время мы заработали $5000, а поиграли в нашу игру 100 человек. Получается, в среднем каждый игрок приносит нам в месяц по $50 — это ARPU.

Теперь, чтобы посчитать LTV, нужно поделить график удержания на месяцы. У нас он на 90 дней, значит делим его на три части — по 30 дней. И смотрим, какой показатель удержания был в конце каждого месяца. Напомним, что в наших примерах мы завысили и округлили все цифры, чтобы было проще считать, — в реальности они намного ниже.

  • I месяц — 80%.

  • II месяц — 50%.

  • III месяц — 20%.

После этого умножаем месячный ARPU ($50) на показатель удержания в каждом месяце. А после складываем эти числа.

Получается, наше LTV — $85.

Плюсы и минусы

Lifetime здесь рассчитывается довольно точно, но в этом способе мы предполагаем, что ARPU неизменен. А ничего статичного не бывает. Если ARPU меняется не сильно, то это не критично.

Этот способ довольно точно отражает смысл LTV. Но здесь могут возникнуть проблемы в виде пользователей с аномальным поведением, которые сильно изменят показатели сегментов.

Сергей Панюшкин
ведущий продуктовый аналитик в Crazy Panda

Это рабочий способ для проектов, где ARPU слабо меняется со временем. Например, сервисов, доступных только по подписке. В других приложениях ARPU может сильно меняться со временем, поэтому нужно рассчитывать его отдельно для каждого периода.

Борис Бурангулов
ведущий аналитик в Pixonic

Способ 2. На основе накопительного ARPU

Допустим, мы запустили рекламу в социальной сети. После неё в игру пришло сто человек. Если сложить их платежи, а затем разделить на сто, то можно узнать, сколько в среднем платит один игрок из этой группы.

Например, получилось, что «средний» игрок из этой группы в первый день потратил $1.1, на второй — ещё $2, на третий — плюс $0.5. Всё это отражено на рисунке выше — это график накопительного ARPU.

На основе этих данных можно сделать прогноз, сколько денег будет тратить клиент в будущем. Точно так же, как делали в первом способе — построить график, максимально похожий на фактический, так как кривая изгибается примерно равномерно. Это делается с помощью такой формулы:

Выбор «t» зависит от проекта и поведения пользователей в нем. Например, мы знаем, что люди играют в нашу игру примерно две недели месяца. Поэтому берём 14 дней.

«A и B» — как и в первом способе — параметры функции. Это определённые числа, которые нужно подобрать так, чтобы новый график совпал с фактическим. В этом поможет Solver, о котором мы говорили в предыдущем блоке. Подобрав все числа, строим график.

Точка, где график становится перпендикулярен оси накопительного ARPU, — наше среднее LTV на одного пользователя.

Плюсы и минусы

Основной плюс — наличие кривой накопительного ARPU, которая позволяет определять, когда окупится привлечение пользователей. Минусы: прогнозы могут быть неточными, если в приложении происходит много изменений, затрагивающих монетизацию.

Борис Бурангулов
ведущий аналитик в Pixonic

Могут возникнуть проблемы, если в игре много пользователей с аномальным поведением, или больше всего денег приносят акции. Но способ хорош тем, что значимые изменения в продукте будут отчётливо видны на графике.

Сергей Панюшкин
ведущий продуктовый аналитик в Crazy Panda

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

Первый инструмент предиктивной аналитики myTracker — прогнозирование LTV. Платформа изучает поведение пользователей, все события и закономерности, а затем предсказывает, сколько денег принесут клиенты за время пользования приложением.

Как работают автоматические прогнозы LTV:

  1. myTracker собирает статистику приложения и сопоставляет её с накопленной информацией и критериями качества данных — ранее система уже проанализировала тысячи приложений.
  2. Это нужно, чтобы подобрать модели прогнозирования — у системы их множество. Она выбирает из них те, которые дадут наиболее точные прогнозы для конкретного приложения.
  3. После этого платформа настраивает с нуля выбранные модели под приложение, подбирает коэффициенты. Для начала обучения модели нужно иметь данные за неделю. Для оптимального прогноза — один-два месяца.
  4. Затем платформа делит пользователей на мельчайшие когорты и объединяет собранную по ним информацию в обезличенные массивы данных.
  5. Сделав это, myTracker выдаёт прогноз по каждой когорте пользователей начиная со второго дня после установки приложения этими пользователями.
  6. Платформа постоянно самостоятельно сравнивает прогноз с фактическими показателями, чтобы скорректировать коэффициенты или поменять активную модель прогнозов для конкретного приложения. С каждым днём прогноз становится всё точнее, а на восьмой день прогноз фиксируется, так как достигается оптимальная точность (средняя точность прогнозов в myTracker — 90%).

Узнать больше о том, как устроены модели прогнозирования myTracker, можно в документации.

{ "author_name": "Konstantin Panphilov", "author_type": "editor", "tags": [], "comments": 4, "likes": 27, "favorites": 135, "is_advertisement": true, "subsite_label": "promo", "id": 81060, "is_wide": true, "is_ugc": false, "date": "Thu, 05 Sep 2019 10:11:04 +0300", "is_special": false }
0
{ "id": 81060, "author_id": 3, "diff_limit": 1000, "urls": {"diff":"\/comments\/81060\/get","add":"\/comments\/81060\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/81060"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199134, "last_count_and_date": null }
4 комментария
Популярные
По порядку
3

Не читал, но за картинку с gravity defied плюсую

Ответить
2

Ребят, facebook ads интегрирован у вас? не вижу на сайте

Ответить
1

А как обстоят дела с GDPR?

Ответить
0

при отказе от мастера создания очень тяжело понять как добавить приложение - надо при отсутствии приложений сделать кнопку вызова мастера.
Для быстрого привлечения аудитории советую сделать SDK для Flutter - затрат не много, так как это будет всего лишь обертка для вызова нативных методов, а конкуренция там сейчас не очень высокая и сможете выделить официальной поддержкой Flutter SDK.

Ответить
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ] { "page_type": "default" }