Surrika

Прогноз продаж по остаткам и скорости продаж на 30 дней

Прогноз продаж считают от скорости продаж за последние 90 дней и текущего остатка. Средние продажи в день умножают на 30 дней и ограничивают остатком. Так видно, в каких категориях товара хватит на месяц и где запас закончится раньше.

Отчеты и данные

Как считать

  1. Берут продажи за 90 дней от последней даты в выгрузке и вычитают возвраты.
  2. Делят проданные штуки на 90, получают среднюю скорость продаж в день.
  3. Берут остаток на последнюю дату и делят на скорость, получают запас в днях.
  4. Умножают скорость на 30 дней и ограничивают результат остатком, получают прогноз штук.
  5. Умножают прогноз штук на среднюю цену проданной единицы, получают прогноз выручки.

Расчет на выгрузках магазина

Пример посчитан на выгрузках вымышленного мебельного магазина: продажи сайта и трех маркетплейсов, реклама, сделки CRM и остатки за 2024-2025 годы.

Как посчитать прогноз продаж на 30 дней по остаткам и скорости продаж, чтобы понять, где товара не хватит до конца месяца?

Прогноз выручки на 30 дней по категориям

SQL, по которому посчитано

WITH year_sales AS (
  SELECT
    category,
    sum(units - returned_units) AS net_units_12m,
    sum(revenue - returned_revenue) AS net_revenue_12m
  FROM sales
  WHERE date > (SELECT max(date) FROM sales) - INTERVAL 12 MONTH
  GROUP BY category
),
recent_sales AS (
  SELECT
    category,
    sum(units - returned_units) AS net_units_90d
  FROM sales
  WHERE date > (SELECT max(date) FROM sales) - INTERVAL 90 DAY
  GROUP BY category
),
latest_stock AS (
  SELECT
    category,
    sum(units) AS stock_units
  FROM stock
  WHERE date = (SELECT max(date) FROM stock)
  GROUP BY category
),
calc AS (
  SELECT
    r.category,
    r.net_units_90d / 90.0 AS avg_daily_units,
    coalesce(s.stock_units, 0) AS stock_units,
    y.net_revenue_12m / nullif(y.net_units_12m, 0) AS avg_price
  FROM recent_sales r
  LEFT JOIN latest_stock s ON s.category = r.category
  LEFT JOIN year_sales y ON y.category = r.category
)
SELECT
  category,
  round(avg_daily_units, 2) AS avg_daily_units,
  stock_units,
  round(stock_units::DOUBLE / nullif(avg_daily_units, 0), 1) AS days_of_stock,
  round(least(stock_units::DOUBLE, greatest(avg_daily_units, 0) * 30), 0) AS forecast_units_30d,
  round(least(stock_units::DOUBLE, greatest(avg_daily_units, 0) * 30) * coalesce(avg_price, 0), 0) AS forecast_revenue_30d
FROM calc
ORDER BY forecast_revenue_30d DESC
LIMIT 30

Откуда берутся цифры для прогноза продаж

Берите продажи за последние 90 дней от последней даты в выгрузке. В расчет идут штуки за вычетом возвратов и выручка за вычетом возвращенной выручки. Остаток берите на последний день месяца из выгрузки остатков. Среднюю цену считайте по продажам за последние 12 месяцев. Если по категории не было продаж за последние 90 дней, прогноз по ней не строится.

Как посчитать скорость продаж и запас в днях

Сложите проданные штуки за 90 дней и вычтите возвраты. Разделите результат на 90, получите среднюю скорость продаж в день. Запас в днях равен остатку, деленному на скорость. Если скорость равна нулю, запас в днях не считайте и покажите пустое значение. Для прогноза на 30 дней умножьте скорость на 30 и возьмите меньшее из двух чисел: прогноз штук или остаток.

Как читать прогноз продаж по остаткам

Категории с запасом меньше 30 дней требуют пополнения в первую очередь. Если запас покрывает 30 дней, прогноз на 30 дней будет близок к месячной скорости продаж, и остаток почти не изменится. Сравните прогноз выручки с планом на месяц по каналу или категории. Большой остаток при низкой скорости показывает замороженные деньги. Маленький остаток при высокой скорости показывает риск упущенных продаж.

Что делать с прогнозом продаж

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

Частые ошибки

Считать скорость по всему году

Сезонные всплески и акции искажают среднюю скорость. Берите последние 90 дней от последней даты в данных.

Не вычитать возвраты

Проданные штуки без возвратов завышают скорость и прогноз выручки. Считайте штуки и выручку за вычетом возвратов.

Брать остаток на произвольную дату

В выгрузке остатки стоят на последний день месяца. Остаток на другую дату даст неверный запас в днях.

Не ограничивать прогноз остатком

Скорость продаж может дать прогноз больше остатка. Прогноз штук ограничивайте остатком, иначе выручка будет завышена.

Вопросы

Какой период брать для скорости продаж?

Последние 90 дней от последней даты в выгрузке. Такой период сглаживает случайные колебания и учитывает недавние акции.

Что делать, если по товару не было продаж?

Прогноз по нулевой скорости не считается. Проверьте остаток и решите, нужен ли товар в закупке.

Как учесть возвраты в прогнозе?

Вычитайте возвращенные штуки из проданных и возвращенную выручку из выручки. Средняя цена и скорость станут ближе к факту.

Можно ли прогнозировать выручку на 30 дней по категории?

Да. Умножьте средние продажи в день на 30, ограничьте остатком и умножьте на среднюю цену единицы.

Почему прогноз выручки ниже скорости продаж?

Если остатка хватает меньше чем на 30 дней, прогноз ограничен остатком. Выручка считается по тому объему, который можно продать.

Посчитайте это на своих выгрузках

Бросьте выгрузки на доску Surrika и задайте вопрос обычными словами. Ответ придет графиком, а под ним будет SQL, по которому он посчитан.

14 дней бесплатно, карта не нужна.

По теме

Все задачи