GH GambleHub

Прогнозирование дохода

Прогнозирование дохода

Доход — итог взаимодействия многих факторов: предложения контента/продукта, поведения пользователей, цен и промо, внешних условий (праздники, спорт-ивенты, курс валют, регуляторные изменения). Надежный прогноз — это не одна «модель», а управляемый контур: определения → данные → модель → сценарии → эксплуатация → сверки → улучшение.

1) Постановка задачи

Что прогнозируем: валовую выручку (GGR), чистую (Net), выручку после бонусов/комиссий, по базовой валюте и в локальных валютах.
Горизонт/шаг: ежедневный/недельный/месячный; для планирования кассовых разрывов — дневной, для бюджета — месячный/квартальный.
Единица прогноза: бренд × страна × платформа × канал (минимум) с последующим согласованием по иерархии.
Назначение: бюджетирование, закупка трафика/контента, лимиты инфраструктуры, финансовые ковенанты.
Цена ошибки: недопрогноз (упущенный спрос/недозакуп) vs перепрогноз (излишние закупки/переобещания).

2) Определения и согласование с финансовым контуром

Формулы: GGR, Net, вычеты (налоги, бонусы, афилиатские комисcии) — версионированы в семантическом слое.
Календарь: UTC-хранение + локальные представления; праздники/зарплатные дни; спорт-расписания (если релевантно).
FX-политика: источник курсов, дата конверсии (на дату операции/средний курс периода), единая базовая валюта.
Сверки: обязательная процедура reconciliation c бухгалтерией (расхождение в допустимых пределах).

3) Декомпозиция дохода на драйверы

Базовая формула:
[
\text{Доход} = \text{Трафик}\times \text{Конверсия}\times \text{Частота}\times \text{Средний чек}
]

Трафик/активные: пользователи/сессии/входы.
Конверсия: доля платящих, CR в целевые события.
Частота: число транзакций на платящего/период.
Средний чек: средняя сумма транзакции (учитывайте бонусы/скидки).

Рекомендуется прогнозировать драйверы отдельно, затем собирать композит, чтобы видеть вклад факторов (мост «план-факт»).

4) Данные и регрессоры

Временные ряды: дневные/недельные агрегаты по единице прогноза.

Регрессоры X:
  • промо/бонусы (интенсивность, тип, охват);
  • маркетинговые расходы/импрессии/клики;
  • контент-ивенты (релизы, турниры, крупные матчи);
  • изменения цен/лимитов/каталога;
  • FX/инфляция, погода/календарь (если влияет);
  • регуляторные события (ограничения/разморозки).
  • Аномалии/one-off: помечайте, не «сглаживайте» молча.
  • Отсутствие ликов: используйте только информацию, доступную на момент прогноза.

5) Моделирование

5.1 Бейзлайны

Naive/Seasonal Naive/Drift — обязательны для честной оценки.

5.2 Классические ряды

ETS/ARIMA/SARIMA, TBATS (множественные сезонности), Prophet (быстрый старт с праздниками).

5.3 Регрессоры

ARIMAX/ETS+X, динамические регрессии с календарем и промо/FX.

5.4 Мульти-сирийные/табличные

LightGBM/XGBoost/линейные с лагами/окнами/календарем;

Темпоральные NN (TFT, N-Beats) для портфелей и длинных X.

5.5 Вероятностные

Квантильная регрессия (pinball), Student-t/Gaussian предсказания, ансамбли квантилей для интервалов (q10/q50/q90).

5.6 Иерархии и согласование

Bottom-Up/Top-Down/MinT (оптимальное согласование ошибок) для структуры страна→бренд→канал→платформа.

6) Специфика метрик дохода

Доли/отношения (маржа, комиссия): моделируйте числитель/знаменатель отдельно, затем композируйте.
Интермиттирующие компоненты (chargeback, high-roller): Croston/TSB, zero-inflated, отдельные компоненты с квантилями.
Каннибализация: при запуске новой акции/продукта моделируйте перетоки между сегментами (мультивыходные модели или ограниченные регрессоры).
Эластичность по цене/бонусам: лог-лог модели/каузальные оценки (DiD/SC) для оценки коэффициентов, затем — what-if.

7) Оценка качества и backtesting

Сплиты: rolling/expanding origin с кратностью сезонности (недели/месяцы).
Метрики уровней: WAPE/sMAPE (устойчивы к нулям), MAE/RMSE.
Вероятностные: pinball loss, coverage 80/95%-интервалов.
Стабильность: ошибки по сегментам/праздникам/каналам; out-of-time.
Правило бейзлайна: модель должна обгонять Seasonal Naive на ключевых горизонтах.

8) Сценарии и неопределенность

Квантили: q10/q50/q90 → «пессимист/база/оптимист».
Сценарии X: «без промо/с промо», «FX ±10%», «крупный ивент», «регуляторные ограничения».
Риск метапараметров: стресс-тесты на изменения эластичностей и сезонности.
Стоимость риска: планируйте по условному shortfall (наказание за недопрогноз/перепрогноз асимметричны).

9) План-факт и вклад факторов (доходный bridge)

Покажите мост: тренд + сезонность + промо + цена/лимиты + FX + шоки/инциденты → итоговое отклонение. Это повышает доверие и помогает принимать действия (добавить бюджет, сдвинуть промо, поменять прайсинг).

10) MLOps и эксплуатация

Расписание: дневные прогнозы — T+1 до 06:00 лок.; недельные — N раз в неделю; месячные — T+1/T+3.
Артефакты: фичестор (онлайн/офлайн паритет), реестр моделей, версии формул дохода.
Мониторинг: WAPE/coverage по окну, PSI дрейфа признаков, задержка фидов, SLA генерации.
Алерты: рост ошибки > порога, некалиброванные интервалы, разлад иерархий.
Fail-safe: откат к ETS/Seasonal Naive; freeze-режим в пиковые праздники.
Гистерезис: разные пороги включения/выключения промо-регрессоров, чтобы не «мигать».
Сверки: ежедневные/недельные reconciliation с финансовыми отчетами.

11) Шаблоны артефактов

A. Паспорт прогноза дохода

KPI: `NET_REVENUE_EUR_v3`

Горизонт/шаг: 8 недель / день

Единицы: бренд×страна×платформа×канал; reconciliation: MinT

Регрессоры: `promo_spend`, `content_event_flag`, `price_index`, `fx_rate`, `holiday`

Модели: `ARIMAX_v2` + `LightGBM_Quantiles_v4` (ансамбль, q10/50/90)

Цели: WAPE ≤ 8% (дневной), coverage 90%-интервала ≥ 85%

SLO: генерация ≤ 10 мин после 06:00; лаг данных ≤ 1 ч

Владельцы: Finance & Growth Analytics; дата ревизии, версия

B. Decision-ready отчет (скелет)

Заголовок: «Доход, прогноз 8 недель: q10/q50/q90»

Риски: недопрогноз в неделе 3 — 21% (ожидаемый shortfall €X-€Y)

Вклад факторов: +праздники, +контент-ивент, −FX, −снятие промо

Рекомендации: увеличить промо в странах A/B, сдвинуть акцию, хедж FX

C. Псевдо-код пайплайна

python
1) load y = load_revenue_series(grain=['brand','country','platform','channel'], step='D')
X = load_regressors(['promo_spend','content_event','price_idx','fx_rate','holiday'])
2) features ds = make_lags(y, lags=[1,7,14,28])
ds = add_rolling_stats(ds, windows=[7,14,28])
ds = join_regressors(ds, X)
3) cv cv = rolling_backtest(ds, folds=6, horizon=28, step=7)
4) models m_baseline = ETS(). fit(ds. train)
m_gbm = LGBMQuantiles(q=[0. 1,0. 5,0. 9]). fit(ds. train)
m_arimax = ARIMAX(). fit(ds. train)
5) evaluate & ensemble scores = evaluate([m_baseline,m_gbm,m_arimax], cv, metrics=['WAPE','pinball'])
best = ensemble_quantiles([m_gbm,m_arimax])
6) reconcile & publish f = reconcile_minT(forecast(best), hierarchy=['country','brand','platform','channel'])
publish(f, sla='06:10', owners=['Finance','Growth'])

12) Частые ошибки и анти-паттерны

MAPE при нулях/низких значениях: используйте WAPE/sMAPE.
Среднее средних: агрегируйте числитель/знаменатель, а не усредняйте проценты по сегментам.
Игнор календаря/контента/FX: без регрессоров прогноз «слепнет».
Лики: фичи из будущего или пост-фактум корректировки в train.
Несогласованность иерархий: итоговые суммы не сходятся → применяйте reconciliation.
Нет fail-safe: модель «плывет» на праздниках.
Отсутствие сверок: прогноз не стыкуется с управленческим/бухучетом.

13) Чек-лист перед релизом

  • Определения дохода и вычетов согласованы и версионированы
  • Календарь/FX/регрессоры подключены и протестированы
  • Бейзлайны побеждены на backtesting; цели по WAPE/coverage достигнуты
  • Интервалы калиброваны; сценарии «пессимист/база/оптимист» собраны
  • Иерархический прогноз согласован (MinT/Top-Down)
  • MLOps: расписание, мониторинг, алерты, fail-safe, рунибук
  • Настроены ежедневные/недельные сверки с финнадзором/бухгалтерией
  • Отчет «decision-ready» с мостом факторов и рекомендациями

Итог

Прогнозирование дохода — это согласованные определения + драйверная декомпозиция + регрессоры + вероятностные и иерархические модели + сценарии и интервалы + дисциплинированный MLOps и сверки. Такой контур превращает «гадание по графику» в инструмент планирования бюджета, маркетинга и операций с понятной стоимостью риска и прозрачными действиями.

Contact

Свяжитесь с нами

Обращайтесь по любым вопросам или за поддержкой.Мы всегда готовы помочь!

Telegram
@Gamble_GC
Начать интеграцию

Email — обязателен. Telegram или WhatsApp — по желанию.

Ваше имя необязательно
Email необязательно
Тема необязательно
Сообщение необязательно
Telegram необязательно
@
Если укажете Telegram — мы ответим и там, в дополнение к Email.
WhatsApp необязательно
Формат: +код страны и номер (например, +380XXXXXXXXX).

Нажимая кнопку, вы соглашаетесь на обработку данных.