Каноническая формула
Для фиксированной стартовой когорты клиентов C0 и её стартовой recurring revenue базы StartingMRR net revenue retention за период P определяется так:
NRR(P) = (StartingMRR − ChurnedMRR − ContractionMRR + ExpansionMRR) / StartingMRR
В процентах:
NRR%(P) = NRR(P) × 100
Эта формула точна только тогда, когда каждый компонент измеряется по одной и той же стартовой когорте и по одной и той же recurring revenue policy.
Определения переменных
- C0: клиентская когорта, active в начале периода
P. - StartingMRR: суммарная recurring monthly revenue, относящаяся к когорте
C0в начале периодаP. - ChurnedMRR: recurring monthly revenue от клиентов из
C0, полностью потерянная за периодP. - ContractionMRR: снижение recurring monthly revenue у surviving customers из
C0за периодP. - ExpansionMRR: рост recurring monthly revenue у клиентов из
C0за периодP.
Формулы компонентов
Компоненты измеряются так:
StartingMRR = Σ for c in C0 of MRR_start(c)
ChurnedMRR = Σ for c in C0 and fully churned in P of MRR_lost(c)
ContractionMRR = Σ for c in C0 of max(MRR_start(c) − MRR_end(c), 0) excluding full churn
ExpansionMRR = Σ for c in C0 of max(MRR_end(c) − MRR_start(c), 0)
Contraction и expansion считаются только на клиентах стартовой когорты. Полный churn не должен быть задвоен как contraction.
Правила когорты
NRR — это метрика стартовой базы. Следовательно, когорта фиксируется в начале периода и потом не меняется.
Из этого следует:
- New logo revenue, полученная в период
P, не входит вExpansionMRR. - Только клиенты из
C0могут давать churn, contraction или expansion внутри формулы. - Для всех четырёх компонентов должна использоваться одна и та же recurring revenue policy.
В строгих терминах все элементы формулы — это функции от C0, а не от полного customer set, наблюдаемого в конце периода.
Правила исключения
Из NRR исключаются:
- New customer MRR, полученная после начала периода.
- One-time fees и non-recurring services.
- Taxes, pass-through charges и hardware.
- Чистые cash timing effects без изменения recurring revenue.
- Любой компонент, измеренный по другой MRR policy, чем
StartingMRR.
Если new logo revenue включена в формулу, результат уже не является strict NRR. Это становится смешанным growth ratio с поломанной cohort logic.
Edge cases
- Full churn: потерянная recurring amount идёт в
ChurnedMRR, а не одновременно в churn и contraction. - Partial downgrade: в
ContractionMRRпопадает только delta. - Expansion after downgrade in the same period: net movement нужно считать аккуратно на уровне customer-line, чтобы каждое recurring delta событие было отнесено последовательно.
- Reactivation: если клиент принадлежал
C0и позже был reactivated внутри measurement logic, treatment должен следовать последовательной movement policy; иначе reactivation лучше моделировать отдельно. - Currency effects: FX translation rules должны быть стабильны, иначе формула начнёт отражать accounting noise, а не поведение выручки.
Числовой пример
Предположим, что стартовая когорта имеет StartingMRR = 100,000. За период:
ChurnedMRR = 8,000ContractionMRR = 4,000ExpansionMRR = 15,000
Тогда:
NRR(P) = (100,000 − 8,000 − 4,000 + 15,000) / 100,000
NRR(P) = 103,000 / 100,000 = 1.03
NRR%(P) = 103%
Если в этот же период было привлечено ещё 12,000 new logo MRR, её вклад в NRR всё равно равен 0.
Строгий вывод
NRR — это retention ratio по фиксированной стартовой recurring revenue base. Каждый член формулы обязан происходить из одной и той же стартовой когорты и из одной и той же recurring revenue policy.
Если new logo revenue добавляется в формулу, если churn задваивается вместе с contraction или если MRR policy различается между компонентами, результат уже не является strict NRR.
Связанные материалы
Базовые страницы: