Один клиент даёт треть выручки: как измерить концентрацию и проверить риск
У компании сорок клиентов, однако почти треть месячной выручки приносит один договор. Коммерческий директор видит рост и планирует увеличить постоянные расходы. Финансовый директор задаёт другой вопрос: что останется от плана, если этот договор не продлят? Количество клиентов на него не отвечает. Нужны доли, которые показывают зависимость от крупнейших покупателей, и отдельный сценарий потери выручки.
Сначала определить, кто считается одним клиентом
Две карточки с разными ИНН могут принадлежать одной группе компаний и прекращать закупки одновременно. Для такого риска полезнее считать экономическую группу. Напротив, независимые франчайзи могут принимать решения отдельно. Выберите правило объединения до расчёта и сохраните таблицу соответствий: иначе смена справочника сама станет причиной изменения показателя.
Возьмём условный месяц без возвратов и налоговых различий: пять групп принесли 300, 250, 200, 150 и 100 тысяч рублей. Общая выручка — миллион. Доля крупнейшей группы равна 30%, трёх крупнейших — 75%. Эти два числа сразу переводятся в действие: при пересмотре договоров первые три клиента требуют отдельного внимания. Само по себе наличие ещё сотни мелких карточек эту зависимость почти не изменит.
Одной верхней доли недостаточно
У двух компаний доля первого клиента может совпадать, но остальная выручка распределяется по-разному. Поэтому дополнительно посчитаем сумму квадратов всех долей — индекс HHI. В нашем примере он равен 0,225, или 2250 при записи долей в процентах и шкале до 10000. Для одного клиента индекс равен единице, для пяти одинаковых — 0,2. Здесь используется шкала от нуля до единицы; смешивать её с другой шкалой в графике нельзя.
Индекс удобен для сравнения собственной структуры по месяцам. Антимонопольные пороги концентрации рынков здесь не нужны: мы оцениваем клиентскую базу одной компании. Особенно полезно сравнить индекс вместе с верхними долями: рост HHI подсказывает, что зависимость усиливается, а список крупнейших объясняет, из-за кого.
revenue = {'A': 300_000, 'B': 250_000, 'C': 200_000,
'D': 150_000, 'E': 100_000}
assert revenue and all(v >= 0 for v in revenue.values())
total = sum(revenue.values())
assert total > 0
shares = sorted((v / total for v in revenue.values()), reverse=True)
hhi = sum(s*s for s in shares)
largest = max(revenue, key=revenue.get)
remaining = total - revenue[largest]
print({'top1': round(shares[0], 3), 'top3': round(sum(shares[:3]), 3),
'hhi': round(hhi, 3), 'revenue_after_loss': remaining})
assert round(hhi, 3) == 0.225
assert remaining == 700_000Превратить долю в сценарий, который можно обсудить
Если клиент A полностью уходит в начале следующего месяца и замещения нет, выручка снижается до 700 тысяч. Это сценарий, а не прогноз вероятности ухода. Для бюджета полезно добавить сроки: договор заканчивается через четыре месяца, на привлечение замены обычно требуется полгода. Тогда руководитель видит период, в котором придётся финансировать разрыв, и может заранее ограничить новые обязательства.
Выручка ещё не определяет потерю прибыли. Клиент может получать большую скидку, требовать дорогой поддержки и платить с отсрочкой. Чтобы оценить денежный риск, рядом с его выручкой покажите прямые затраты, сроки оплаты и расходы, которые сохранятся после ухода. Если обслуживание высвобождает смену, экономия появится; если штат и аренда остаются, краткосрочная потеря вклада будет другой.
Перед обсуждением проверьте сверку суммы с финансовым отчётом и выберите одинаковый период для всех клиентов. Квартальный договор с единственной оплатой способен создать ложный пик в кассовой выручке месяца. Повторите расчёт на начислениях и скользящем квартале, если так устроена модель продаж. Итоговая записка должна содержать выбранную базу, верхние доли, индекс и конкретный сценарий; тогда показатель помогает принять решение об устойчивости бюджета.
Продолжить работу с данными
Чтобы превратить такой разовый расчёт в регулярный отчёт, в «Практической аналитике данных» можно отработать выбор метрик, проверку данных о продажах, дашборд DataLens и аналитическую записку. Эти навыки помогут показать руководителю и структуру выручки, и последствия выбранного сценария. Откройте программу платного курса «Практическая аналитика данных».
Продолжить на практике
- Практическая аналитика данных ↗
Превратите знания SQL или Python в аналитическую работу: проверяйте данные, считайте бизнес-метрики, стройте дашборды и объясняйте выводы на трёх прикладных кейсах.
