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

ARR вырос на 15%. Эта цифра ещё не объясняет, за счёт чего: пришли новые клиенты, прежние стали платить больше или изменился курс валюты. Я бы начал с таблицы движений, в которой каждый рубль разницы связан с конкретным событием. Сначала проверяем арифметику, затем обсуждаем рост.
Для такого разбора нужны два снимка ARR и журнал изменений между ними. В учебном расчёте ниже я использую ARR = 12 × MRR: годовое выражение текущей регулярной выручки. Это не прогноз поступлений за следующие двенадцать месяцев. У ChartMogul также есть переключение отчёта MRR Movements в годовое представление ARR.
Сначала задайте границы сверки
Сохраните начало и конец одного закрытого периода. Например, состояние непосредственно перед 1 сентября и непосредственно перед 1 октября, с учётом всех событий сентября. Для обеих выгрузок должны совпадать часовой пояс, валюта, состав бизнеса и правила расчёта. Если половину клиентов исключить только из конечного снимка, таблица покажет искусственный отток.
В шапке рабочей таблицы я бы записал правила годового пересчёта, учёта скидок и признания отмены. В строках оставил бы ID клиента и подписки, дату действия изменения, значение до и после, тип движения и ссылку на исходную запись. Разовые работы отделите от подписок; устройство самой модели разобрано в статье «Подписка и MRR: переход на ретейнер».
Зафиксируйте дату выгрузки. Поздно пришедшее событие может изменить старый период. Даже при правильной формуле сравнение вчерашнего журнала с сегодняшним итогом способно дать расхождение.
Какие движения меняют сумму
В классификации ChartMogul тип события зависит от истории клиента и изменения его регулярной выручки:
- New Business: клиент впервые стал платящим. Учитывается новая регулярная сумма.
- Expansion: регулярная выручка действующего клиента выросла. Учитывается только прибавка.
- Reactivation: ранее ушедший платящий клиент вернулся. Его возвращённая сумма выделяется отдельно от новых клиентов.
- Contraction: выручка клиента уменьшилась, но платная подписка сохранилась. Учитывается потерянная часть.
- Churn: клиент прекратил последнюю платную подписку. Учитывается вся потерянная регулярная сумма.
Здесь пять направлений денежного изменения. В журнале сервиса есть и шестой тип, Neutral: событие произошло, но MRR не изменился. Поэтому пять строк финансовой сверки не означают, что любое действие клиента обязано попасть в одну из них.
Условный расчёт: от 1,2 до 1,38 млн рублей ARR
Возьмём шесть условных клиентов. Все подписки рублёвые; разовых платежей, курсовых разниц и исправлений прошлых периодов нет. У каждого клиента за сентябрь произошло не больше одного события. Числа ниже нужны для проверки метода и не описывают чей-либо бизнес.
| Клиент и событие | MRR до, ₽ | MRR после, ₽ | Изменение MRR, ₽ | Изменение ARR, ₽ |
|---|---|---|---|---|
| А: первая подписка | 0 | 20 000 | +20 000 | +240 000 |
| Б: расширение тарифа | 40 000 | 50 000 | +10 000 | +120 000 |
| В: возврат после ухода | 0 | 5 000 | +5 000 | +60 000 |
| Г: сокращение тарифа | 30 000 | 22 000 | −8 000 | −96 000 |
| Д: отмена последней подписки | 12 000 | 0 | −12 000 | −144 000 |
| Е: смена плана без изменения суммы | 18 000 | 18 000 | 0 | 0 |
| Всего | 100 000 | 115 000 | +15 000 | +180 000 |
Для каждой строки изменение MRR равно значению после события минус значение до него. Изменение ARR в этом примере в двенадцать раз больше. Начальный ARR: 100 000 × 12 = 1 200 000 ₽. Конечный: 115 000 × 12 = 1 380 000 ₽.
Проверяем равенство: 1 200 000 + 240 000 + 120 000 + 60 000 − 96 000 − 144 000 = 1 380 000 ₽. Разница составляет 180 000 ₽; делим её на начальные 1 200 000 ₽ и получаем 15%.
Теперь видна деталь, которую скрывал общий процент. Клиенты, платившие на начало месяца, дали 120 000 − 96 000 − 144 000 = −120 000 ₽ ARR. Новая подписка и возврат принесли 300 000 ₽ и перекрыли эту потерю. Рост есть, но действующая на начало периода база сократилась. Решение увеличить привлечение потребует отдельной проверки CPL, CAC и LTV: таблица ARR не содержит расходов и маржи.
Что делать с neutral, FX и спорными событиями
Я бы оставил рядом с денежной сверкой отдельный журнал объяснений. Он нужен, чтобы исправление данных не превращалось в удобную строку «рост». Для каждого исключения сохраняйте исходную запись и правило, по которому приняли решение.
| Ситуация | Как учитывать | Что проверить |
|---|---|---|
| Neutral | Ноль в денежной сверке, событие остаётся в журнале. | Не изменились ли валюта, сегмент или правила расчёта при прежней сумме. |
| Изменился только валютный курс | Показать FX отдельно по методике выбранного отчёта. | Курс, дату пересчёта и отсутствие двойного учёта FX внутри других строк. |
| Клиент сменил сегмент или тариф | Для всего бизнеса и отдельного сегмента нужны разные сверки. | Не попал ли переход между сегментами в отток всего бизнеса. |
| Отмена и новая подписка рядом по времени | Проверить связь подписок и историю клиента перед классификацией. | Это реальный уход и возврат или переоформление действующего договора. |
| Исправили старую запись | Выделить объяснённую корректировку либо пересобрать оба снимка. | Какая запись изменилась, за какой период и по какой причине. |
Для FX у ChartMogul есть строка Exchange Rate Impact. Детализация зависит от настроек аккаунта: в варианте с поддержкой бесплатных подписок часть курсового эффекта раскрывается внутри expansion и contraction. Перед сложением проверьте правила Report Data. Нельзя прибавлять один и тот же эффект ещё раз отдельной строкой.
Та же документация описывает вход и выход из сегмента при фильтре по тарифу. Клиент может перейти с плана А на Б и остаться клиентом бизнеса. Для сверки плана А это выход из сегмента, а для всей базы такой переход сам по себе не означает churn.
С классификацией тоже бывают развилки. ChartMogul может группировать близкие события, а отмену с покупкой новой подписки показывать как churn и reactivation. Связь подписок влияет на представление. Эти случаи описаны в правилах классификации движений. Я бы сначала восстановил последовательность событий, затем закрепил одно правило для всех одинаковых случаев.
Если начало плюс движения не равно концу
Считайте остаток сверки: конечный ARR минус начальный ARR минус сумма всех учтённых изменений со знаком. В чистом примере выше остаток равен нулю. Если отдельно учтены FX и объяснённые корректировки, они тоже входят в сумму изменений. Неизвестный остаток так и подпишите: «не объяснено».
- Сравните даты, часовой пояс, валюту и фильтры двух снимков и журнала. Проверьте, что событие на границе периода попало в расчёт ровно один раз.
- Сверьте суммы по клиентам, затем по подпискам. Уберите дубли событий, проверьте пропущенные страницы выгрузки и обновления, пришедшие с задержкой.
- Проверьте единицы. В ChartMogul List Activities поле
activity-mrr-movementсодержит изменение MRR, аactivity-arr— новый ARR после события. Суммы передаются в целых сотых единиц валюты аккаунта. Складывать состояния ARR как движения нельзя. - Вернитесь к правилам скидок, отмен, курсов и сегментов. Если клиент несколько раз менял тариф, двух конечных снимков хватит для чистой разницы, но не для восстановления всех движений внутри периода.
После сверки выберите несколько крупнейших положительных и отрицательных движений и откройте исходные записи. Это позволит обсудить конкретные причины: какой тариф расширили, какой объём убрали, кто вернулся. До этого момента общий процент роста слишком легко объяснить удобной историей.