Вики метрик
Что значит метрика, как считается, из каких данных и насколько готова на реальных данных ФомЛайн
25 метрик↓ Каталог данных
Риск ухода
churn_score · client · проценты
🎯 Зачем нужна
Раннее предупреждение — кого можно потерять, пока ещё есть время вмешаться и удержать выручку. Сортирует базу по тому, где «горит».
⚙️ Как работает
Модель сравнивает текущее поведение клиента с его обычным ритмом и с поведением реально ушедших. Чем сильнее спад закупок, рост интервалов между заказами, тишина в контактах и просрочки — тем выше вероятность.
∑ Формула
CatBoostClassifier на признаках ритма/тренда/просрочек/контактов; метка hard/soft churn в окне (T+буфер, T+90].В идеале: то же на боевой истории продаж 24–36 мес.
🗄 Нужные данные
rev_delta_90, recency_days, interval_growth, groups_dropped, overdue_share, days_since_contactИсточник ФомЛайн: продажи по клиенту×периоду (есть); контакты из Битрикс24 (нужно)
📊 Диапазоны / полосы
≥66% Высокий · 33–66% Средний · <33% Низкий
⚠️ Ограничения
В оптовом B2B отток не наблюдается напрямую; на синтетике иллюстративен.
тех. статус: proxy · prod-needs-sourceэкраны: executive, customers, customer_360, manager_tasks🔌 тип в API →
Выручка за 12 месяцев
revenue_365 · client · рубли
🎯 Зачем нужна
Базовая мера ценности клиента «здесь и сейчас» — сколько он приносит за год. Основа для ABC, доли кошелька и приоритизации.
⚙️ Как работает
Складываем все отгрузки клиента за последние 365 дней до даты среза.
∑ Формула
сумма продаж за 365 дн до даты среза.В идеале: то же из витрины продаж (Выручка/SummaSales).
🗄 Нужные данные
ПериодDATEВыручкаNUMERICИсточник ФомЛайн: Выручка (SummaSales), Период — витрина продаж
Потенциал закупок
potential_pred · client · рубли
🎯 Зачем нужна
Показывает «потолок» клиента — сколько он способен покупать. Разница с фактом подсказывает, где искать рост.
⚙️ Как работает
По размеру и профилю компании (внешняя выручка, сотрудники, возраст, отрасль, регион, ширина ассортимента) модель оценивает типичный объём закупок похожих компаний. Берём максимум из оценки и фактической выручки — потенциал не может быть ниже факта.
∑ Формула
регрессия по фирмографике-моку; potential = max(прогноз, факт).В идеале: внешняя выручка/размер клиента + отраслевые нормативы потребления ППУ.
🗄 Нужные данные
ИННTEXTВыручкаКомпанииNUMERICИсточник ФомЛайн: внешнее обогащение по ИНН (нужен внешний источник)
Потенциал роста
upside · client · рубли
🎯 Зачем нужна
«Апсайд» (от англ. upside) по-русски — потенциал роста, недобор выручки. Сколько ещё можно продать клиенту; приоритет для up/cross-sell и план менеджеру.
⚙️ Как работает
Вычитаем из потенциала фактическую выручку за год. Если результат ≤0 — потенциал уже реализован. Пример — потенциал 16 млн, факт 3 млн → апсайд 13 млн.
∑ Формула
potential_pred - rev_365.
🗄 Нужные данные
potential_pred, rev_365Источник ФомЛайн: см. potential_pred
Health Score
health_score · client · балл 0–100
🎯 Зачем нужна
Один «светофор» вместо десятка метрик — быстро понять, в порядке ли клиент, и отсортировать базу одним числом.
⚙️ Как работает
Взвешенная сумма шести нормированных компонентов (удержание, платежи, вовлечённость, лояльность, рост, маржа), переведённая в шкалу 0–100. Веса см. в формуле.
∑ Формула
100·(0.25·retention + 0.20·payment + 0.15·engagement + 0.15·loyalty + 0.15·growth + 0.10·margin_health)
🗄 Нужные данные
СебестоимостьNUMERICДатаКонтактаDATEСуммаВозвратаNUMERICИсточник ФомЛайн: продажи + ДЗ (есть); контакты/маржа (нужно)
📊 Диапазоны / полосы
≥70 Здоровый · 45–70 Под наблюдением · <45 Проблемный
тех. статус: proxy · prod-needs-sourceэкраны: executive, customers, customer_360, managers🔌 тип в API →
Loyalty Score
loyalty_score · client · балл 0–100
🎯 Зачем нужна
Отделяет «прилипших» лояльных клиентов от тех, кто покупает по случаю или из-за цены, — кого защищать и на ком строить базу.
⚙️ Как работает
Композит из регулярности закупок (XYZ), доли кошелька, стажа, частоты заказов, отсутствия рекламаций и нечувствительности к скидкам; шкала 0–100.
∑ Формула
100·(0.25·регулярность(XYZ) + 0.20·wallet_share + 0.15·стаж + 0.15·(1-ценочувств.) + 0.10·(1-рекламации) + 0.15·частота)
🗄 Нужные данные
СкидкаNUMERICПричинаОтказаTEXTСуммаВозвратаNUMERICИсточник ФомЛайн: продажи (есть); скидка/рекламации (нужно)
Платёжный риск
payment_risk · client · проценты
🎯 Зачем нужна
Предупреждает о риске неоплаты ещё до отгрузки — основа для кредитного лимита, предоплаты и работы финслужбы.
⚙️ Как работает
Взвешенно объединяет историю просрочек (их доля и средняя глубина в днях), внешний риск-балл контрагента и юридические флаги (арбитраж, исполнительное производство). ВАЖНО — считается по истории и внешним сигналам, поэтому может быть больше нуля даже при нулевой текущей дебиторке.
∑ Формула
0.40·overdue_share + 0.30·clip(overdue_days/15) + 0.20·ext_risk + 0.10·юр.флагиВ идеале: на витрине ДЗ — структура aging + внешние юр.риски.
🗄 Нужные данные
ИтогоДЗNUMERICИтогоПДЗNUMERICПДЗ14NUMERICПДЗ30NUMERICПДЗ90NUMERICПДЗ181NUMERICЮрРискиTEXTИсточник ФомЛайн: ДЗ aging (есть); юр.риски (внешнее)
⚠️ Ограничения
Текущая дебиторка (ar_balance) НЕ входит в формулу — риск отражает историю и внешние сигналы; а не остаток на сегодня.
ИДО — индекс должной осмотрительности
ido · client · категория
🎯 Зачем нужна
Внешний взгляд на благонадёжность контрагента по ИНН ещё до отгрузки/кредита — дополняет внутренний платёжный риск юридическими и фирмографическими сигналами.
⚙️ Как работает
В проде индекс приходит ГОТОВЫМ из СПАРК (или Контур.Фокус) по ИНН — мы его только показываем, НЕ вычисляем. У провайдера считается логрегрессией + деревьями + нейро-нечёткими сетями по ~40 факторам (свежесть отчётности, массовость директора/адреса, динамика финпоказателей). В демо — заглушка из синтетики.
∑ Формула
ДЕМО-заглушка: round(1 + 98·clip(0.5·young + 0.3·ext_risk + 0.2·юр.флаги)); young — молодость компании (<3 лет=1, <6=0.5).В идеале: готовый ИДО по ИНН из СПАРК API (Risk Assessment) — без собственного расчёта.
🗄 Нужные данные
innИсточник ФомЛайн: внешний API по ИНН — СПАРК (ИДО готовый) или Контур; в демо — мок из company_age/ext_risk_score/юр.флагов
📊 Диапазоны / полосы
1–99 · ↑ хуже (выше = выше риск «однодневки»)
⚠️ Ограничения
НЕ считаем сами — берём готовым по API; в демо это синтетическая заглушка (ИНН = client_id). См. COMPETITIVE_RESEARCH.md §11.
ИФР — индекс финансового риска
ifr · client · категория
🎯 Зачем нужна
Внешний сигнал финансовой устойчивости контрагента — рискует ли он стать неплатёжеспособным; вход для решения финслужбы (лимит, предоплата, отказ).
⚙️ Как работает
В проде уровень приходит ГОТОВЫМ из СПАРК по ИНН — мы его только показываем. У провайдера это скоринг по открытым данным (бухотчётность) без участия человека; это НЕ кредитный рейтинг. В демо — заглушка из синтетики.
∑ Формула
ДЕМО-заглушка: «Высокий» если ext_risk>0.5 или юр.флаги≥0.5; иначе «Средний» при ext_risk>0.25; иначе «Низкий».В идеале: готовый ИФР по ИНН из СПАРК API — без собственного расчёта.
🗄 Нужные данные
innИсточник ФомЛайн: внешний API по ИНН — СПАРК (ИФР готовый); в демо — мок из ext_risk_score/юр.флагов
📊 Диапазоны / полосы
уровень: Низкий · Средний · Высокий (выше — хуже)
⚠️ Ограничения
НЕ считаем сами — берём готовым по API; в демо синтетическая заглушка. См. COMPETITIVE_RESEARCH.md §11.
Paydex — индекс платёжной дисциплины
paydex · client · категория
🎯 Зачем нужна
Показывает, как контрагент платит ДРУГИМ поставщикам (внешний взгляд) — дополняет нашу собственную дисциплину по ДЗ; ранний сигнал проблем с оплатой.
⚙️ Как работает
В проде индекс приходит ГОТОВЫМ из СПАРК (программа «Мониторинг платежей») по ИНН — мы его только показываем. Отражает реальные задержки оплаты счетов в сети поставщиков провайдера. В демо — заглушка из доли просрочек по нашей ДЗ.
∑ Формула
ДЕМО-заглушка: round(100·(1 − overdue_share)) — по доле просрочек в НАШЕЙ истории ДЗ.В идеале: готовый Paydex по ИНН из СПАРК API (Мониторинг платежей) — без собственного расчёта.
🗄 Нужные данные
innИсточник ФомЛайн: внешний API по ИНН — СПАРК (Paydex готовый); в демо — мок из overdue_share по нашей ДЗ
📊 Диапазоны / полосы
0–100 · ↓ хуже (100 — платит вовремя, 0 — всё с просрочкой)
⚠️ Ограничения
НЕ считаем сами — берём готовым по API; не путать с нашей overdue_ar_share (та — по нашей ДЗ; Paydex — по всей сети контрагента). В демо заглушка. См. COMPETITIVE_RESEARCH.md §11.
RFM
rfm · client · категория
🎯 Зачем нужна
Быстрая поведенческая сегментация для кампаний — кто давно не покупал, кто покупает часто, кто приносит много.
⚙️ Как работает
Каждому клиенту присваиваем три балла 1–5 по квантилям относительно базы — давность последней покупки (R), число заказов за год (F) и сумма за год (M).
∑ Формула
квантильные баллы по recency_days, orders_365, rev_365.
🗄 Нужные данные
ГоловнойКонтрагентTEXTВыручкаNUMERICИсточник ФомЛайн: продажи (есть)
ABC
abc · client · категория
🎯 Зачем нужна
Правило Парето — сосредоточить внимание и ресурсы на клиентах, дающих основную долю выручки.
⚙️ Как работает
Сортируем клиентов по выручке по убыванию и считаем накопленную долю; топ до 80% — класс A, до 95% — B, остальные — C.
∑ Формула
накопленная доля rev_365.
🗄 Нужные данные
ГоловнойКонтрагентTEXTВыручкаNUMERICИсточник ФомЛайн: продажи (есть)
XYZ
xyz · client · категория
🎯 Зачем нужна
Насколько предсказуем спрос клиента — для планирования отгрузок, запасов и понимания регулярности.
⚙️ Как работает
Считаем коэффициент вариации помесячной выручки за год — меньше 0.5 это X (стабильно), до 1.0 — Y (умеренно), от 1.0 — Z (хаотично).
∑ Формула
cv помесячной выручки за 12 мес.
🗄 Нужные данные
ПериодDATEИсточник ФомЛайн: продажи помесячно (есть)
CLV / LTV
clv · client · рубли
🎯 Зачем нужна
Долгосрочная ценность — чтобы вкладывать удержание и развитие туда, где это окупится за горизонт, а не только по сегодняшней выручке.
⚙️ Как работает
Дисконтируем ожидаемую годовую маржу на 3 года вперёд с поправкой на вероятность удержания (1−риск) и рост доли кошелька. Маржа в демо — мок (нужна себестоимость).
∑ Формула
дисконтированная маржа с учётом удержания и роста (маржа — мок).В идеале: то же на реальной марже (нужна себестоимость).
🗄 Нужные данные
СебестоимостьNUMERICИсточник ФомЛайн: продажи (есть); СЕБЕСТОИМОСТЬ/МАРЖА — нет
⚠️ Ограничения
Без себестоимости маржа-компонента недоступна — CLV на моке.
Потенциал вмешательства
uplift · client · проценты
🎯 Зачем нужна
Не «у кого риск выше», а «кого звонок реально спасёт» — куда направить ограниченное время менеджеров с максимальной отдачей.
⚙️ Как работает
Выше всего у клиентов среднего риска с ещё живой вовлечённостью и заметной ценностью; у безнадёжных и у благополучных — низкий (вмешательство ничего не меняет).
∑ Формула
clip(4·churn·(1-churn)·engagement·value)
🗄 Нужные данные
ДатаКонтактаDATEИсточник ФомЛайн: продажи (есть); контакты (нужно)
⚠️ Ограничения
Прокси; честный uplift требует A/B-теста.
Ожид. время до оттока
expected_days_to_churn · client · дни
🎯 Зачем нужна
Переводит абстрактный риск в срок — сколько примерно осталось времени на реакцию, чтобы расставить очередь обзвона.
⚙️ Как работает
Из 90-дневной вероятности оттока через модель постоянного риска (constant-hazard) оцениваем ожидаемое число дней до оттока.
∑ Формула
из 90-дн вероятности оттока (1/месячный hazard).
🗄 Нужные данные
churn_scoreИсточник ФомЛайн: см. churn_score
Зона клиента
zone · client · категория
🎯 Зачем нужна
Одна управленческая метка вместо нескольких индексов — сразу понятно, что с клиентом делать и кому передать.
⚙️ Как работает
Приоритетное дерево решений — проверяем по очереди финансовый риск → риск потери → потеря внимания → лояльность → потенциал; клиент попадает в первую сработавшую зону.
∑ Формула
приоритетное дерево (финриск → потеря → внимание → лояльность → потенциал).
🗄 Нужные данные
ГоловнойКонтрагентTEXTДатаКонтактаDATEИсточник ФомЛайн: композит индексов
Net Revenue Retention
nrr_pct · base · проценты
🎯 Зачем нужна
Главный индикатор «растём или сжимаемся» на существующей базе — без маскировки новыми клиентами.
⚙️ Как работает
Берём клиентов, активных 12–24 мес назад, и делим их выручку за последний год на их же выручку годом ранее. Выше 100% — база расширяется, ниже — сжимается.
∑ Формула
выручка за 12 мес от клиентов, активных 12–24 мес назад / их же выручка годом ранее.
🗄 Нужные данные
ПериодDATEВыручкаNUMERICИсточник ФомЛайн: продажи помесячно (есть)
Регион vs рынок
region_over_under · region · проценты
🎯 Зачем нужна
Отвечает на вопрос «мы падаем из-за рынка или теряем долю?» — где именно разбираться с регионом или командой.
⚙️ Как работает
Период — год к году (последние 12 мес против предыдущих 12). Наш рост — same-store (только клиенты, покупавшие и год назад), из наших продаж 1С. Из него вычитаем внешний рыночный рост по региону; «+» опережаем рынок, «−» отстаём.
∑ Формула
our_same_store_growth − market_growth (оба — годовой % по региону).
🗄 Нужные данные
ВыручкаNUMERICОкругФЛTEXTИННTEXTРыночныйИндексРегионаNUMERICИсточник ФомЛайн: наш рост — продажи по региону (есть); рынок — внешний индекс роста спроса (мебель/матрасы/стройка) по субъекту: Росстат/ЕМИСС (оборот розницы мебели), отраслевые ассоциации (АМДПР), BusinesStat/РБК Исследования, отраслевая выручка из ФНС/СПАРК по ОКВЭД. Форма: регион × год → % роста.
⚠️ Ограничения
Рыночный индекс — внешний; обновляется квартал/год; привязка региона вручную; в демо синтетический годовой % (REGION_MARKET_GROWTH).
Выполнение плана
plan_attainment · region_month · проценты
🎯 Зачем нужна
Контроль выполнения плана продаж по регионам и направлениям — где недобор и куда смотреть руководителю.
⚙️ Как работает
Делим фактический показатель на плановый (в демо — по количеству; по выручке — если план ведётся в учёте).
∑ Формула
actual_qty / plan_qty.
🗄 Нужные данные
КоличествоNUMERICПланКоличествоNUMERICПланОкругФЛNUMERICИсточник ФомЛайн: ПланКоличество/ПланОкругФЛ — витрина продаж (есть!)
⚠️ Ограничения
План по выручке — уточнить у ФомЛайн; пока план по количеству.
Надёжность контрагента
counterparty_risk · client · балл 0–100
🎯 Зачем нужна
Предупреждает о ненадёжном контрагенте до отгрузки/кредита — вход для финслужбы (лимит, предоплата, отказ). Дополняет внутренний платёжный риск внешним взглядом.
⚙️ Как работает
Взвешенно объединяет внешний риск-балл, юр.флаги (арбитраж-ответчик, исполнительное производство ФССП), долю просрочек и «молодость» компании в индекс 0–100; светофор по порогам. Дополнительно — стаб-маппинг на индексы СПАРК (ИДО/ИФР/Paydex) и реквизиты в структуре ответа DaData. В демо — мок; в проде наполняется по API (DaData find-party / СПАРК / Контур).
∑ Формула
100·clip(0.30·ext_risk + 0.30·юр.флаги + 0.25·overdue_share + 0.15·молодость); пороги red≥30 / yellow≥12В идеале: внешний источник по ИНН — СПАРК ИДО/ИФР/Paydex или Контур скоринговый балл; либо свой логит по маркерам DaData.
🗄 Нужные данные
ext_risk_score, has_arbitration, enforcement_proc, overdue_share, company_ageИсточник ФомЛайн: внешнее обогащение по ИНН (DaData/СПАРК/Контур — нужно); в демо мок, ИНН=client_id
📊 Диапазоны / полосы
≥30 Высокий (красный) · 12–30 Средний (жёлтый) · <12 Низкий (зелёный)
⚠️ Ограничения
В демо — заглушка из синтетики; готовые индексы ИДО/ИФР/Paydex — стаб; заменяются API. См. docs/COMPETITIVE_RESEARCH.md §11.
Каталог данных (источники)
Поля витрин 1С / внешних источников, на которых считаются метрики. Колонка «Тип» и статус готовности — для разработчиков; полная типизация и схемы запросов — в API-контракте (Swagger).
1С — витрина продаж (структура аналитика продаж)
грейн: client(name) x period x cfo x napravlenie x okrug
| Поле | Тип | Ресурс | Демо-поле | Статус | Метрики |
|---|---|---|---|---|---|
| ГоловнойКонтрагент (MainClient) | TEXT | — | clients.name | Есть в текущих витринах | rfm, abc, zone |
| Период (Period) | DATE | — | sales.doc_date | Есть в текущих витринах | revenue_365, xyz, nrr_pct |
| Выручка (SummaSales) | NUMERIC | ✓ | sales.amount_nominal | Есть в текущих витринах | revenue_365, abc, rfm, nrr_pct, region_over_under |
| Количество (KolvoSales) | NUMERIC | ✓ | sales.qty | Есть в текущих витринах | plan_attainment |
| ПланКоличество (PlanKolvoSales) | NUMERIC | ✓ | нет (proxy) | Есть в текущих витринах | plan_attainment |
| ПланОкругФЛ (PlanKolvoOkrugFL) | NUMERIC | ✓ | нет (proxy) | Есть в текущих витринах | plan_attainment |
| ОкругФЛ (OkrugFL) | TEXT | — | clients.region | Есть в текущих витринах | region_over_under |
| ЦФО (CFO) | TEXT | — | нет | Есть в текущих витринах | |
| ВидКонтрагента (VidClient) | TEXT | — | clients.size_bucket | Есть в текущих витринах |
1С — витрина ДЗ (структура ДЗ)
грейн: client(name) x date_dz (снимок)
| Поле | Тип | Ресурс | Демо-поле | Статус | Метрики |
|---|---|---|---|---|---|
| ИтогоДЗ (SummaDZ) | NUMERIC | ✓ | scores.ar_balance | Есть в текущих витринах | overdue_ar_share, payment_risk |
| ИтогоПДЗ (SummaPDZ) | NUMERIC | ✓ | нет (proxy) | Есть в текущих витринах | overdue_ar_share, payment_risk |
| ПДЗ14 (PDZ14) | NUMERIC | ✓ | нет | Есть в текущих витринах | payment_risk |
| ПДЗ30 (PDZ30) | NUMERIC | ✓ | нет | Есть в текущих витринах | payment_risk |
| ПДЗ90 (PDZ90) | NUMERIC | ✓ | нет | Есть в текущих витринах | payment_risk |
| ПДЗ181 (PDZ181) | NUMERIC | ✓ | нет | Есть в текущих витринах | payment_risk |
| ДатаДЗ (DateDZ) | DATE | — | нет | Есть в текущих витринах |
1С — детальные продажи по SKU (нужна выгрузка)
грейн: документ x SKU
| Поле | Тип | Ресурс | Демо-поле | Статус | Метрики |
|---|---|---|---|---|---|
| SKU (sku_id) | TEXT | — | sales.sku_id | Нужна детальная выгрузка | product_mix_share |
| ТоварнаяГруппа (product_group) | TEXT | — | sales.product_group | Нужна детальная выгрузка | product_mix_share |
| Себестоимость (cost) | NUMERIC | ✓ | sales.cost_nominal | Нужна детальная выгрузка | clv, health_score |
| Скидка (discount) | NUMERIC | — | sales.discount_pct | Нужна детальная выгрузка | loyalty_score |
Битрикс24 — коммуникации (нужна выгрузка)
грейн: событие
| Поле | Тип | Ресурс | Демо-поле | Статус | Метрики |
|---|---|---|---|---|---|
| ДатаКонтакта (contact_date) | DATE | — | crm_activity.activity_date | Нужна детальная выгрузка | health_score, uplift, zone |
| ПричинаОтказа (lost_reason) | TEXT | — | crm_activity.lost_reason | Нужна детальная выгрузка | loyalty_score |
Качество — рекламации/возвраты (нужна выгрузка)
| Поле | Тип | Ресурс | Демо-поле | Статус | Метрики |
|---|---|---|---|---|---|
| СуммаВозврата (return_amount) | NUMERIC | ✓ | returns.amount | Нужна детальная выгрузка | health_score, loyalty_score |
Внешние источники (DaData/Контур/СПАРК/Росстат)
| Поле | Тип | Ресурс | Демо-поле | Статус | Метрики |
|---|---|---|---|---|---|
| ИНН (inn) | TEXT | — | clients.client_id | Нужен внешний источник | potential_pred, wallet_share, region_over_under |
| ВыручкаКомпании (company_revenue) | NUMERIC | — | external.ext_revenue | Нужен внешний источник | potential_pred |
| ЮрРиски (legal_risk) | TEXT | — | external.has_arbitration | Нужен внешний источник | payment_risk |
| РыночныйИндексРегиона (region_market_index) | NUMERIC | — | REGION_MARKET_GROWTH | Нужен внешний источник | region_over_under |