План-факт продаж: как сравнить неполный месяц с планом

В середине месяца на дашборде сравнили факт с полным месячным планом и объявили отставание. Чтобы увидеть ошибку в расчёте, возьмём короткий учебный отрезок из пяти рабочих дней внутри месяца: план на него 540 тысяч, факт за первые три закрытых дня 330 тысяч. Оставшиеся два дня ещё не наступили. Сравнение факта с полным планом показывает остаток до цели за весь отрезок, а не исполнение графика к текущей дате. Для полного месяца применяют тот же расчёт ко всем его рабочим дням.

Для текущего исполнения нужны одинаковые границы. Берём план только на закрытые дни и факт за те же дни. В примере план первых трёх рабочих дней — 100+120+100 = 320, факт — 90+130+110 = 330. По состоянию на конец третьего рабочего дня команда опережает график на 10 тысяч, или на 3,125%.

plan = [100, 120, 100, 120, 100]  # пять рабочих дней
actual_closed = [90, 130, 110]  # закрыты только первые три
plan_to_date = sum(plan[:len(actual_closed)])
actual_to_date = sum(actual_closed)
print('full plan:', sum(plan))
print('plan to date:', plan_to_date)
print('actual to date:', actual_to_date)
print('variance:', actual_to_date - plan_to_date)
print('variance %:', round((actual_to_date / plan_to_date - 1) * 100, 3))

Код печатает план на все пять дней 540, план к дате 320, факт 330 и отклонение +10. Последняя строка даёт +3,125%. Если вместо неё рассчитать 330 / 540 − 1, получится −38,9%: это разница с целью за все пять дней, ошибочно названная отклонением от текущего графика.

Почему простой линейный план иногда обманывает

В массиве план по дням неодинаков. Это важно: продажи могут концентрироваться в выходные, дни зарплаты или конец месяца. Делить месячную цель на число календарных дней и умножать на прошедшие дни удобно, но не всегда верно. Лучше использовать утверждённый дневной профиль плана; если его нет, честно назвать линейную оценку и проверить, насколько она отличается от прошлых месяцев.

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

Два числа в одном отчёте

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

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

План может быть задан не по дням, а только по месяцу. Тогда для промежуточной оценки выберите распределение: поровну по рабочим дням, по историческому профилю или по утверждённому календарю акций. Сохраните метод распределения вместе с отчётом. Иначе два аналитика получат разные значения «плана к дате» из одного месячного числа, хотя оба честно поделили его.

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

При агрегировании филиалов сравните одинаковый набор работающих точек. Новый филиал добавит и план, и факт с собственной датой запуска. Если в факте он появился, а в плане ещё нет, общий процент будет слишком оптимистичным; в обратной ситуации — слишком плохим. Сводный план-факт сначала проверяют на уровне филиала и закрытого дня.

В «Практической аналитике данных» сопоставимость периодов, динамика метрик и проверка полноты данных переходят в дашборды DataLens и короткую записку с рекомендацией. Вы сможете пересчитать показатели на новом месяце. Откройте программу, если хотите уверенно объяснять план-факт руководителю.

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

Продолжить на практике

  • Практическая аналитика данных ↗

    Превратите знания SQL или Python в аналитическую работу: проверяйте данные, считайте бизнес-метрики, стройте дашборды и объясняйте выводы на трёх прикладных кейсах.