Модель прогноза динамическая — пересчитывается всякий раз при получении свежих данных.
Запуск через «Отчёты и выгрузки» → «Прогноз выручки» или ПЕРЕСЧИТАТЬ_ПРОГНОЗ.bat.
Каждый запуск перечитывает Excel «Аналитика ассортимента»: текущие остатки по каналам, продажи YTD, помесячная динамика, маржа, скидки.
Если структура стока меняется (например лето распродалось → выросла доля NON_SEASONAL), модель сама перераспределит бюджет в пользу gift-season Nov-Dec.
План закупок автофильтрует прошлые месяцы. В августе модель учтёт только Aug-Dec; в декабре — только Dec. Товар по прошлым месяцам уже в стоке.
YoY-тренд бренда считается по последним 3 закрытым месяцам vs тот же период прошлого года. Модель быстро реагирует на текущие изменения, не на старые январь-февральские данные.
Прогноз выручки H2 ₽130M = старый товар на складе (5 категорий по сезону) + новые закупки 2026 года + gift-season boost Nov-Dec (₽8M).
| Бренд | Статус | YTD | Прогноз H2 | Прогноз 2026 | × к YTD | Новые H2 | Остаток на 31.12 (полн. РЦ) |
|---|---|---|---|---|---|---|---|
| Wheat | 🟢 Активный | ₽28.3M | ₽36.5M | ₽64.7M | ×2.29 | ₽18.9M | ₽15.0M |
| MRS ERTHA | 📦 Дистрибуция | ₽11.0M | ₽12.2M | ₽23.2M | ×2.10 | ₽3.4M | ₽12.2M |
| Liewood | 🟠 Снимаемый | ₽12.6M | ₽4.4M | ₽17.0M | ×1.35 | ₽0 | ₽5.4M |
| Bloomingville (incl. MINI) | 🇰🇿 Казахстан | ₽6.3M | ₽10.2M | ₽16.5M | ×2.63 | ₽3.3M | ₽7.1M |
| KIDYWOLF | 📦 Дистрибуция | ₽5.0M | ₽6.5M | ₽11.5M | ×2.28 | ₽3.7M | ₽2.4M |
| Cam Cam Copenhagen | 🟢 Активный | ₽5.1M | ₽4.1M | ₽9.1M | ×1.81 | ₽1.0M | ₽4.3M |
| Flöss | 🟢 Активный | ₽3.8M | ₽5.1M | ₽9.0M | ×2.34 | ₽2.3M | ₽1.9M |
| RATATAM | 📦 Дистрибуция | ₽3.0M | ₽4.4M | ₽7.3M | ×2.48 | ₽2.0M | ₽1.4M |
| That's Mine | 🟢 Активный | ₽3.7M | ₽3.5M | ₽7.2M | ×1.95 | ₽880K | ₽2.6M |
| Kaloo | 📦 Дистрибуция | ₽2.7M | ₽4.5M | ₽7.1M | ×2.68 | ₽1.2M | ₽4.0M |
| Konges Slojd | 🟠 Снимаемый | ₽6.0M | ₽1.1M | ₽7.0M | ×1.18 | ₽0 | ₽1.2M |
| HELLO HOSSY | 🟢 Активный | ₽2.8M | ₽4.2M | ₽7.0M | ×2.50 | ₽1.4M | ₽1.5M |
| Vanilla Copenhagen | 📦 Дистрибуция | ₽2.9M | ₽3.9M | ₽6.8M | ×2.37 | ₽1.3M | ₽1.2M |
| NUUROO | 📦 Дистрибуция | ₽2.8M | ₽3.9M | ₽6.6M | ×2.39 | ₽2.0M | ₽1.2M |
| Fresk | 📦 Дистрибуция | ₽2.7M | ₽4.0M | ₽6.6M | ×2.48 | ₽1.7M | ₽899K |
| Gingersnaps | 🟢 Активный | ₽2.6M | ₽3.7M | ₽6.4M | ×2.40 | ₽1.6M | ₽1.4M |
| Hello Hossy | 🟢 Активный | ₽2.5M | ₽2.5M | ₽5.0M | ×2.00 | ₽0 | ₽774K |
| GRECH & CO | 🆕 Новинка | ₽1.3M | ₽2.6M | ₽4.0M | ×3.01 | ₽1.2M | ₽1.7M |
| PETIT JOUR | 📦 Дистрибуция | ₽1.5M | ₽2.4M | ₽3.9M | ×2.59 | ₽994K | ₽2.4M |
| OMY | 🟢 Активный | ₽900K | ₽1.7M | ₽2.6M | ×2.91 | ₽908K | ₽553K |
| Baghera | 📦 Дистрибуция | ₽630K | ₽1.9M | ₽2.5M | ×4.02 | ₽1.3M | ₽1.6M |
| The New | 🟠 Снимаемый | ₽1.8M | ₽309K | ₽2.1M | ×1.17 | ₽0 | ₽435K |
| Igor | 🆕 Новинка | ₽498K | ₽1.2M | ₽1.7M | ×3.36 | ₽582K | ₽1.6M |
| RUNBOTT | 📦 Дистрибуция | ₽622K | ₽1.0M | ₽1.7M | ×2.68 | ₽353K | ₽1.3M |
| Nobodinoz | 🟠 Снимаемый | ₽1.3M | ₽254K | ₽1.5M | ×1.20 | ₽0 | ₽444K |
| búho | 🟠 Снимаемый | ₽1.2M | ₽200K | ₽1.4M | ×1.16 | ₽0 | ₽281K |
| PETIT MONKEY | 🟢 Активный | ₽522K | ₽713K | ₽1.2M | ×2.37 | ₽247K | ₽1 000K |
| Olli Ella | 🟠 Снимаемый | ₽612K | ₽455K | ₽1.1M | ×1.74 | ₽0 | ₽306K |
| Mr Maria | 📦 Дистрибуция | ₽228K | ₽766K | ₽994K | ×4.36 | ₽311K | ₽1.1M |
| Piupiuchick | 🟠 Снимаемый | ₽732K | ₽151K | ₽883K | ×1.21 | ₽0 | ₽199K |
| Milledeux | 🟠 Снимаемый | ₽519K | ₽359K | ₽878K | ×1.69 | ₽0 | ₽335K |
| BADAWII Beachwear | 🆕 Новинка | ₽262K | ₽567K | ₽829K | ×3.16 | ₽305K | ₽934K |
| LUND DESIGN HOUSE | 🟠 Снимаемый | ₽609K | ₽214K | ₽824K | ×1.35 | ₽0 | ₽131K |
| PLAY UP | 🟠 Снимаемый | ₽700K | ₽109K | ₽808K | ×1.16 | ₽0 | ₽165K |
| ducksday | 🟠 Снимаемый | ₽264K | ₽152K | ₽416K | ×1.58 | ₽0 | ₽434K |
| BUKOWSKI | 🟠 Снимаемый | ₽231K | ₽134K | ₽365K | ×1.58 | ₽0 | ₽308K |
| Sebra | 🟠 Снимаемый | ₽235K | ₽26K | ₽262K | ×1.11 | ₽0 | ₽73K |
| Fabelab | 🟠 Снимаемый | ₽166K | ₽45K | ₽211K | ×1.27 | ₽0 | ₽318K |
| SAGA COPENHAGEN | 🟠 Снимаемый | ₽67K | ₽24K | ₽91K | ×1.35 | ₽0 | ₽265K |
| Poudre Organic | 🟠 Снимаемый | ₽21K | ₽6K | ₽26K | ×1.28 | ₽0 | ₽8K |
| BABY BELLO | 🟠 Снимаемый | ₽9K | ₽8K | ₽17K | ×1.95 | ₽0 | ₽14K |
| petú petú | 🟠 Снимаемый | ₽4K | ₽2K | ₽6K | ×1.63 | ₽0 | ₽44K |
Весь товар на складе мы поделили на 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 частей: старый товар (₽41M) + новые закупки 2026 (₽40M). Ниже — 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 живой из ЦБ РФ: 89.76.
Модель содержит несколько эмпирически подобранных констант — их нужно ревизовать раз в квартал чтобы прогноз оставался актуальным.
Полный чек-лист: Roadmap «🔄 Квартальная ревизия forecast» + memory-файл convention_forecast_quarterly_review.md