Модель прогноза динамическая — пересчитывается всякий раз при получении свежих данных.
Запуск через «Отчёты и выгрузки» → «Прогноз выручки» или ПЕРЕСЧИТАТЬ_ПРОГНОЗ.bat.
Каждый запуск перечитывает Excel «Аналитика ассортимента»: текущие остатки по каналам, продажи YTD, помесячная динамика, маржа, скидки.
Если структура стока меняется (например лето распродалось → выросла доля NON_SEASONAL), модель сама перераспределит бюджет в пользу gift-season Nov-Dec.
План закупок автофильтрует прошлые месяцы. В августе модель учтёт только Aug-Dec; в декабре — только Dec. Товар по прошлым месяцам уже в стоке.
YoY-тренд бренда считается по последним 3 закрытым месяцам vs тот же период прошлого года. Модель быстро реагирует на текущие изменения, не на старые январь-февральские данные.
Прогноз выручки H2 ₽137M = старый товар на складе (5 категорий по сезону) + новые закупки 2026 года + gift-season boost Nov-Dec (₽6M).
| Бренд | Статус | YTD | Прогноз H2 | Прогноз 2026 | × к YTD | Новые H2 | Остаток на 31.12 (полн. РЦ) |
|---|---|---|---|---|---|---|---|
| Wheat | 🟢 Активный | ₽22.1M | ₽39.7M | ₽61.8M | ×2.79 | ₽20.9M | ₽22.8M |
| MRS ERTHA | 📦 Дистрибуция | ₽7.0M | ₽15.5M | ₽22.4M | ×3.22 | ₽9.0M | ₽6.1M |
| Bloomingville (incl. MINI) | 🇰🇿 Казахстан | ₽4.6M | ₽11.4M | ₽16.0M | ×3.46 | ₽4.8M | ₽8.6M |
| Liewood | 🟠 Снимаемый | ₽10.1M | ₽4.6M | ₽14.7M | ×1.46 | ₽0 | ₽7.4M |
| KIDYWOLF | 📦 Дистрибуция | ₽3.6M | ₽9.7M | ₽13.3M | ×3.67 | ₽5.7M | ₽3.8M |
| NUUROO | 📦 Дистрибуция | ₽2.3M | ₽4.9M | ₽7.2M | ×3.16 | ₽2.9M | ₽2.0M |
| That's Mine | 🟢 Активный | ₽2.6M | ₽4.4M | ₽7.0M | ×2.69 | ₽1.0M | ₽2.5M |
| Fresk | 📦 Дистрибуция | ₽2.0M | ₽4.7M | ₽6.7M | ×3.31 | ₽2.3M | ₽1.7M |
| Flöss | 🟢 Активный | ₽2.5M | ₽3.8M | ₽6.3M | ×2.56 | ₽2.5M | ₽5.3M |
| Kaloo | 📦 Дистрибуция | ₽1.8M | ₽4.3M | ₽6.1M | ×3.34 | ₽2.8M | ₽1.8M |
| Konges Slojd | 🟠 Снимаемый | ₽4.7M | ₽1.4M | ₽6.1M | ×1.30 | ₽0 | ₽2.0M |
| Cam Cam Copenhagen | 🟢 Активный | ₽2.9M | ₽3.1M | ₽6.0M | ×2.07 | ₽361K | ₽5.5M |
| RATATAM | 📦 Дистрибуция | ₽1.7M | ₽4.0M | ₽5.7M | ×3.28 | ₽3.1M | ₽1.8M |
| Vanilla Copenhagen | 📦 Дистрибуция | ₽1.3M | ₽3.7M | ₽5.0M | ×3.90 | ₽2.2M | ₽1.5M |
| HELLO HOSSY | 🟢 Активный | ₽1.5M | ₽2.8M | ₽4.3M | ×2.92 | ₽1.0M | ₽3.5M |
| Gingersnaps | 🟢 Активный | ₽992K | ₽2.5M | ₽3.5M | ×3.48 | ₽1.3M | ₽1.5M |
| OMY | 🟢 Активный | ₽643K | ₽2.6M | ₽3.2M | ×5.06 | ₽1.6M | ₽1.1M |
| Baghera | 📦 Дистрибуция | ₽398K | ₽2.7M | ₽3.1M | ×7.90 | ₽2.0M | ₽2.0M |
| PETIT JOUR | 📦 Дистрибуция | ₽779K | ₽2.2M | ₽3.0M | ×3.85 | ₽1.7M | ₽991K |
| GRECH & CO | 🆕 Новинка | ₽287K | ₽2.6M | ₽2.9M | ×9.97 | ₽2.5M | ₽2.6M |
| RUNBOTT | 📦 Дистрибуция | ₽494K | ₽1.7M | ₽2.2M | ×4.45 | ₽772K | ₽1.3M |
| The New | 🟠 Снимаемый | ₽1.5M | ₽469K | ₽1.9M | ×1.32 | ₽0 | ₽751K |
| búho | 🟠 Снимаемый | ₽842K | ₽370K | ₽1.2M | ×1.44 | ₽0 | ₽1.0M |
| PETIT MONKEY | 🟢 Активный | ₽384K | ₽817K | ₽1.2M | ×3.13 | ₽688K | ₽390K |
| Nobodinoz | 🟠 Снимаемый | ₽749K | ₽396K | ₽1.1M | ×1.53 | ₽0 | ₽1.4M |
| Olli Ella | 🟠 Снимаемый | ₽416K | ₽483K | ₽899K | ×2.16 | ₽0 | ₽583K |
| Mr Maria | 📦 Дистрибуция | ₽162K | ₽670K | ₽833K | ×5.13 | ₽473K | ₽1.7M |
| Piupiuchick | 🟠 Снимаемый | ₽489K | ₽321K | ₽810K | ×1.66 | ₽0 | ₽445K |
| LUND DESIGN HOUSE | 🟠 Снимаемый | ₽460K | ₽275K | ₽735K | ×1.60 | ₽0 | ₽210K |
| PLAY UP | 🟠 Снимаемый | ₽511K | ₽213K | ₽724K | ×1.42 | ₽0 | ₽333K |
| Milledeux | 🟠 Снимаемый | ₽392K | ₽328K | ₽720K | ×1.84 | ₽0 | ₽472K |
| ducksday | 🟠 Снимаемый | ₽219K | ₽201K | ₽420K | ×1.92 | ₽0 | ₽350K |
| Sebra | 🟠 Снимаемый | ₽207K | ₽36K | ₽243K | ×1.17 | ₽0 | ₽218K |
| BUKOWSKI | 🟠 Снимаемый | ₽131K | ₽70K | ₽201K | ×1.53 | ₽0 | ₽317K |
| Fabelab | 🟠 Снимаемый | ₽123K | ₽22K | ₽146K | ×1.18 | ₽0 | ₽433K |
| SAGA COPENHAGEN | 🟠 Снимаемый | ₽39K | ₽22K | ₽61K | ×1.57 | ₽0 | ₽275K |
| Poudre Organic | 🟠 Снимаемый | ₽7K | ₽13K | ₽20K | ×3.00 | ₽0 | ₽23K |
| BABY BELLO | 🟠 Снимаемый | ₽8K | ₽7K | ₽15K | ×1.94 | ₽0 | ₽14K |
| petú petú | 🟠 Снимаемый | ₽4K | ₽4K | ₽7K | ×1.94 | ₽0 | ₽41K |
Весь товар на складе мы поделили на 5 коробочек:
Каждая коробочка продаётся со своей скидкой.
В прошлом году в августе мы продали игрушек на ₽20M. Значит и в этом августе продадим примерно столько же. Это базовое предположение — «в августе клиенты покупают как обычно в августе».
⚠️ Корректируем если бренд растёт или падает (см. шаг 3).
Сравниваем январь-апрель этого года с январь-апрелем прошлого.
Осенне-зимние новинки (FW коллекция — свитера, комбинезоны, куртки) приедут только к августу. До августа продаём то что уже на складе.
Летние новинки (SS — купальники, лёгкие платья) уже на складе с весны и продаются пиково Jun-Aug.
Внесезонные товары (пелёнки, игрушки) привозят 3 раза в год: в июне, сентябре и декабре. Каждая партия продаётся 3 месяца.
💡 В реальности продаётся ~70% завезённого товара. Оставшиеся 30% идут в overstock и управляются отдельно (списания, перекидки, скидки). Out-of-stock на хитах закрывается дозаказом.
📊 Бюджет новых поступлений у каждого бренда распределяется между SS / FW / FLAT по долям его текущего склада. Например бренд со стоком 60% SS + 40% NON_SEASONAL получит 60% бюджета на летнюю партию и 40% на внесезонную.
Применяется ТОЛЬКО к сезонным новинкам (FW/SS):
🧸 Несезонные товары (FLAT): первые 5 месяцев активных продаж — full price, никаких автоматических скидок. Если оборачиваемость бренда > 180 дней (6 мес) — overstock переводится в скидку отдельным процессом (вне модели прогноза).
Магазин не может работать без ассортимента — нужен операционный минимум ₽50M в полной РЦ-цене. Если модель «продала» так много что осталось меньше — мы пропорционально уменьшаем продажи всех товаров до тех пор, пока на 31 декабря не останется минимум ₽50M.
Раньше floor был ₽80M (исторический минимум). Снижен до ₽50M — цель оптимизировать капитал в стоке.
У каждого бренда свой ритм продаж:
❓ Что если у бренда обе коллекции (Wheat)? У Wheat есть и SS (лето), и FW (зима), обе сильные, но зимняя крупнее. Главное — что мы ЗАКУПАЕМ СЕЙЧАС: в мае-октябре закупаем FW 2026 (приедет в августе), в ноябре-апреле — SS 2027 (приедет к марту). Поэтому Wheat помечен SEASONAL — модель автоматически переключает FW↔SS по текущему месяцу. Не надо вручную менять каждый сезон.
🔄 Пропорции SS/FW/NON стока обновляются автоматически при каждом запуске. Если структура склада меняется (лето распродалось → выросла доля NON) — модель сама перераспределит бюджет в пользу gift-season Nov-Dec.
По каждому бренду получаем:
Складываем по всем 40 брендам — это прогноз 2026 года.
Итоговый остаток складывается из 2 частей: старый товар (₽42M) + новые закупки 2026 (₽52M). Ниже — 5 причин почему этот остаток именно такого размера.
Операционный минимум склада — нужен ассортимент чтобы магазин работал, нельзя распродать в ноль. Модель удерживает это значение принудительно. Раньше floor был ₽80M (исторический минимум), снижен до ₽50M для оптимизации капитала в стоке.
Закупаем товар с потенциалом ~₽124M (выручка × 0.43 / 1.3 × 2.8). Реально продаётся только 70% завезённого. Остальные 30% автоматически становятся overstock — управляются отдельно через скидки/перекидки.
Закупки октября-декабря физически приходят с задержкой 2-3 мес. Часть товара (Jan-Feb 2027 по schedule) уже на складе на 31.12, но ещё не продана — выручку даст в Q1 2027 (см. «Выручка → 2027 ₽17M»).
Δ факт − расчёт = +₽30M. План закупок (₽57.6M) распределяется по «Бюджет закупки на год €» (= ср.продажи × 12 × 0.43 × коэф_переноса), а не по экстраполяции текущего YTD темпа. Это стратегический запас под FW-сезон + страховой.
Активные бренды получают +17% к рекомендованному бюджету — компенсация за уходящих снимаемых (Liewood и др., ~25% доли продаж). Если переход спроса будет меньше реальности — товар оседает в остатке.
Чтобы УМЕНЬШИТЬ остаток (= быстрее обернуть капитал):
Окончательного бюджета 2027 ещё нет — оцениваем «от продаж» по коэффициенту 0.43 от прогнозируемой выручки 2027 (рост к 2026 ×1.00). Курс EUR/RUB живой из ЦБ РФ: 82.64.
Модель содержит несколько эмпирически подобранных констант — их нужно ревизовать раз в квартал чтобы прогноз оставался актуальным.
Полный чек-лист: Roadmap «🔄 Квартальная ревизия forecast» + memory-файл convention_forecast_quarterly_review.md