Как построить свою модель прогнозов в таблице

Обновлено: 02.11.2026 · чтение ~15 мин

Цель и метрики: что именно прогнозируем

Начните с выбора исхода и горизонта. Для футбола чаще всего прогнозируют результат (П1, Х, П2), тоталы (больше/меньше 2,5) или форы. Горизонт — это «срок жизни» прогноза: до стартового свистка (прематч) или по ходу игры (лайв). Лайв даёт больше данных, но требует мгновенной реакции и устойчивой инфраструктуры. Если вы новичок, берите прематч и один рынок — например, тотал в футболе: это снижает шум и упрощает проверку гипотез.

Целевая переменная — то, что предсказывает модель. Для вероятностного подхода это p(событие) в диапазоне [0; 1]. Для бинарного решения — пороговая метка «ставить/не ставить». Метрики качества выбирайте под задачу. Brier и log-loss оценивают точность вероятностей: чем ниже, тем лучше. Brier интуитивен — это средний квадрат ошибки вероятностей. Log-loss сильнее штрафует за самоуверенные промахи. ROI и yield показывают финансовый итог на дистанции: ROI = (выплата − оборот) / оборот, yield = прибыль / сумма ставок. Калибровка отвечает на вопрос «совпадают ли ваши 60% с реальностью»: стройте reliability-диаграмму по децилям и проверяйте наклон.

Зафиксируйте «линейку» и правила учёта. Единицы времени — дата и время по часовому поясу события (например, Europe/Moscow), а не время приёма ставки. Валюта — рубли; храните суммы с двумя знаками, округляйте по правилам банка. Возвраты (коэффициент 1,00) включайте в оборот без прибыли; отмены — исключайте из выборки или помечайте как «void», чтобы не искажать метрики. Для тоталов при попадании в целое число (ровно 2 гола на ТБ 2) фиксируйте возврат, а для азиатских фор — частичный расчёт по долям (например, −0,75 = две ставки по −0,5 и −1).

Метрика Что показывает Когда применять
Brier Средний квадрат ошибки вероятностей Сравнение моделей на одном рынке
Log-loss Качество вероятностей с жёстким штрафом Ранний отбор гипотез
ROI Доходность к обороту Финальная оценка стратегии
Yield Доходность к сумме ставок Сравнение при разных размерах
Калибровка Совпадение прогноза и частоты Диагностика систематических смещений

Сбор и нормализация данных для таблицы

Основа любой модели — чистые данные. Собирайте их из нескольких независимых источников, чтобы снизить риск ошибок. Результаты и расписание берите у открытых API спортивных данных, метрики xG и прессинга — у статистических провайдеров, травмы — из официальных клубных сводок и лент новостей, погоду — из архивов метеослужб, коэффициенты — из истории линий. Для российского читателя важно сразу фиксировать UTC: «Матч в 19:30 по Москве» — это 16:30 UTC, иначе модель «поплывёт» при анализе времени суток и усталости. Единая схема таблицы экономит часы на очистке. Минимальный набор столбцов: match_id, date_utc, league_id, home_id, away_id, score, xg_home, xg_away, press_home, press_away, injuries_home, injuries_away, temp_c, odds_open, odds_close, margin_close. Счёт храните как «2:1», а метрики — числами с точкой. Коэффициенты берите и «открывающие», и «закрывающие»: разница покажет движение денег. Маржу считайте по котировкам на исходы 1X2.
ПолеТипПример
match_idстрока2026-11-02-epl-ars-che
date_utcдата-время2026-11-02 18:30:00
xg_homefloat1.74
odds_closefloat[3][1.85, 3.70, 4.10]
Очистка — не формальность, а половина успеха. Удаляйте дубли по match_id, нормализуйте таймзоны, а пропуски не «забивайте нулями»: для xG используйте медиану по лиге, для травм — отметку «нет данных». Outlier-фильтры ловят явные ошибки: xG выше 6.0 в матче без пенальти — повод проверить источник. Версионируйте датасет: дата_выгрузки, версия_провайдера, changelog. Если позже исправили xG за прошлый тур, вы должны уметь откатиться и пересчитать модель без хаоса.

Признаки и трансформации в таблице

Начинаем с признаков, которые легко собрать в таблицу. Форма — это очки или разница мячей за последние 5–8 матчей; не усредняйте слепо, отсекайте игры с автосоставом. H2H полезен, но только на отрезке 3–5 лет и при сопоставимых составах. Место в таблице берите с поправкой на сыгранные матчи, иначе аутсайдер с двумя играми в запасе выглядит «выше» на бумаге. Разница xG (xG for − xG against) за 8–12 туров лучше отражает качество, чем голы. Дни отдыха (rest days) и логистика (travel) — простые, но мощные: −1 день отдыха дома часто равен +0,15–0,25 xG разницы в моделях.

Взвешенные рейтинги вроде ELO или Power Rating стабилизируют шум. Настройте коэффициент затухания: чем дальше матч, тем меньше вес. Например, вес = decay^(число дней/30) при decay = 0,98. Вчерашняя игра почти полная, 90 дней назад — почти ноль. Так рейтинг «дышит», не залипая на старом результате.

Нормализуйте всё, что измеряется в разных шкалах. Z-score по лиге: (x − μ_league)/σ_league. Условный пример: ваши 1,6 xG за матч при средних 1,35 и σ=0,22 дают z ≈ 1,14 — это уже сильный сигнал. Используйте rolling-окна: 6 матчей для формы, 20 для xG, 30 для ELO — и пересчитывайте z внутри окна, чтобы ловить сдвиги темпа. Категории (дом/выезд, тип турнира) кодируйте через one-hot или effect coding; для «дома» часто достаточно одного бинарного признака, но добавьте interaction: rest_days * travel_km, xG_diff * home_away, ELO_diff * rest_disadvantage. Именно взаимодействия отличают «сырую» таблицу от модели, которая понимает контекст.

Базовая статистическая модель в таблице

Начнём с распределения Пуассона для xG. Если команда создала ожидаемых голов на 1,6 за матч, вероятность ровно k голов: P(k) = (1,6^k * e^(−1,6)) / k!. В таблице это тянется одной формулой по k от 0 до, скажем, 6. Вероятность «тотал больше 2,5» — это 1 − (P(0)+P(1)+P(2)). Для матча перемножаем независимые распределения хозяев и гостей, получая матрицу счёта. Из неё считаем вероятности исходов и тоталов. Условный пример: хозяева xG 1,4, гости 0,9 — вероятность 1:0 около 13%, 0:0 — около 12%.

Логистическая регрессия отвечает на вопрос «кто победит». Целевая переменная — 1/0/X, признаки — разности xG, xGA, форма, календарь. Вероятность победы: p = 1 / (1 + e^(−z)), где z — линейная комбинация признаков с коэффициентами. В таблицах без надстроек используйте численную оптимизацию (например, градиентный спуск в ячейках) или подключите UDF на Python/Office Script. Регуляризация L2 (Ridge) сдерживает раздувание коэффициентов, кросс‑валидация (5‑fold) помогает не переобучиться на шуме.

Контроль качества — половина модели. Мультиколлинеарность ловится по VIF: признак с VIF > 5–7 — кандидат на удаление или объединение (например, xG и xG/90). Значимость оценивайте по p‑value или, в таблице, по доверительным интервалам бутстрепа: если ноль внутри интервала — признак нестабилен. Проверяйте калибровку: стройте buckets по p и сравнивайте с реальной долей исходов; Brier score и log‑loss подскажут, не слишком ли вы уверены.

Учёт букмекерских коэффициентов и маржи

Любой коэффициент — это просто вероятность, вывернутая наизнанку. Чтобы вернуть её в понятный вид, делите единицу на котировку: 1 / 1.80 ≈ 55,6%. Но это «грязная» вероятность, в неё уже заложена комиссия конторы. Чтобы очистить данные, сложите такие доли для всех исходов матча — получится оверраунд, например 105%. Ваша задача — пропорционально сжать значения до 100%. Для двух исходов: 55,6% / 1,05 ≈ 52,9% и 46,3% / 1,05 ≈ 44,1%. Это и есть «честная» линия без маржи, с которой и нужно работать.

Теперь сопоставьте вашу модельную вероятность с «честной» линией. Если модель даёт 56% на исход, а fair-коэффициент соответствует 52,9%, вы нашли value. Разница в 3,1 процентных пункта — это и есть ваше математическое ожидание до учёта прогруза и дополнительной комиссии. В таблице заведите столбец edge = ваша_вероятность − fair_вероятность. Играйте только там, где edge стабильно положителен после бэктеста.

Ликвидность и движение линии — ваши стоп-сигналы. Прописывайте в таблице автоматические запреты, чтобы не ловить «токсичные» котировки. Это дисциплинирует и экономит банк.

    • Ликвидность: если максимум на маркет ниже вашего типичного номинала в 5–10 раз — пропуск. На смолл-маркетах edge часто иллюзия.
    • Ограничения: помечайте аккаунты и конторы, где режут до копеек; такие строки исключайте из алерта.
    • Движение линии: стоп при «шипе» — если коэффициент упал более чем на 5–7% за час без новостей, это след умных денег. Не догоняйте.

Валидация, бэктест и устойчивость

Модель готова, но это лишь половина дела. Теперь проверим её на прочность. Первый рубеж — честный бэктест без заглядывания в будущее. Используйте walk-forward: обучите модель на данных до 31 мая 2025 года, сделайте прогноз на сезон 2025/26, затем сдвиньте окно и переобучитесь, включив этот сезон. Так вы имитируете реальную жизнь. Rolling origin делает то же самое серией коротких шагов. Главное — исключить leakage: не используйте в признаках итоговый счёт, статус «ТМ/ТБ пробит» или xG конкретного матча, иначе получите иллюзию точности.

Далее — стабильность. Прогнозы не должны сыпаться в низших лигах или во второй половине сезона. Разбейте данные на страты: РПЛ, Чемпионшип, матчи после 25-го тура, игры сборных. Если на страте «зима, выезд, -5°C» модель теряет 15% качества — это сигнал. Постройте reliability diagram: разбейте ваши вероятности на 10 бинов и сравните среднюю предсказанную вероятность с фактической частотой исхода. Линия должна лечь на диагональ. Отклонение на 5–7% в верхнем бине (80–100%) — частая болезнь: модель слишком уверена.

Стресс-тесты: суровая реальность

Бумажная доходность тает от издержек. Посчитайте всё: комиссия на ввод/вывод, налог, маржа букмекера, которую вы уже «съели» при поиске value, и ваше проскальзывание. Условный пример: ROI +4% на бумаге, комиссия 1%, проскальзывание линии ещё 1,5%, налог 13% с прибыли — остаётся около 1,3%. Если банкролл мал и вы ставите 1–2% на ставку, доля фиксированных издержек (например, 500 ₽ в месяц за сервис данных) способна обнулить результат.

Проведите variance-анализ: смоделируйте 1000 случайных серий по вашему плану ставок. Оцените вероятность просадки в 30% и 50%. Часто выясняется, что «плюсовой» алгоритм даёт 40% шансов увидеть минус год к году. Решение — дробить ставку, снижать плечо и жёстко резать долю при росте дисперсии. Наконец, проверьте устойчивость к ограничениям: что будет, если вам порежут лимиты до 1000 ₽ или закроют рынок в перерыве? Если стратегия держится только на позднем голе в лайве — у вас хрупкая конструкция.

Банкролл-менеджмент и размер ставки

Банкролл — это рабочий капитал, который вы готовы потерять без ущерба для жизни. Первое правило: отделите эти деньги и зафиксируйте стартовую сумму. Размер ставки — производная от преимущества (EV) и вашей уверенности, а не от желания «отыграться».

Фикс-фракция — самый простой старт: берёте 0,5–2% от банка на каждую сделку. На банк 100 000 ₽ это 500–2000 ₽. Плюс — дисциплина и предсказуемая просадка. Минус — игнорирует силу сигнала: вы ставите одинаково и на EV 2%, и на EV 10%. Келли оптимизирует рост: доля = (bp − q)/b, где b — чистый коэффициент (кэф − 1), p — ваша вероятность, q = 1 − p. Условный пример: кэф 2,20 (b=1,20), p=0,50 → (1,20·0,50−0,50)/1,20 ≈ 0,083, то есть 8,3% банка. Полный Келли волатилен; на практике режьте до 1/4–1/2 Келли, чтобы сгладить дисперсию. Анти-Келли — сознательное занижение доли при туманных вводных: если модель «шумит», режьте ставку вдвое от вашей обычной фракции, пока не накопите подтверждения.

Жёстко ограничьте риск по внешним правилам. Лимит на лигу: не более 10–15% банка в день на один чемпионат — так один «чёрный лебедь» не срежет капитал. Лимит на событие: один исход — максимум 2% (лучше 0,5–1%). Максимальная просадка: поставьте стоп на уровне 20–25% от старта — перерыв и аудит модели. Пауза после серии минусов: −3 по банкроллу или 5 проигрышей подряд — стоп на сутки; −6 или 8 подряд — стоп на 72 часа и перепроверка данных, признаков и калибровки вероятностей.

Журнал сделок — ваш главный инструмент. Ведите таблицу со столбцами: дата, лига, матч, ставка (₽), коэффициент, ваша p (вероятность), EV (%), результат (выигр/проигр/возврат), pnl сделки, причина входа, причина пропуска похожих игр, заметка о качестве данных. Раз в неделю считайте: средний EV, yield, стандартное отклонение ставок, долю «плохих входов» (например, EV

Типичная ошибка — «догнать» повышенным размером. Не увеличивайте долю после проигрышей; увеличивайте только после подтверждённого роста EV на валидации. Любые изменения схемы ставок сначала прогоняйте на бумаге неделю, затем переходите на микро-доли.

Выводы

Начинайте с простого: регрессия на xG и rolling-метриках — это ваш «нулевой километр». Возьмите ожидаемые голы за 5–8 матчей, добавьте темп ударов и разницу xGA, получите базовый прогноз. Когда база стабильно бьёт линию по калибровке, усложняйте: вводите составные факторы (прессинг, ротации), взаимодействия признаков и градиентный бустинг. Но помните: усложнение ради R² убивает переносимость на будущие сезоны.

Жёстко фиксируйте утечки будущего: никаких послематчевых переменных, аккуратно с заменами и xG-корректировками, которые появляются с задержкой. Делите выборку по времени, держите «тишину» на турнирах, используйте walk-forward. Если после учёта маржи и проскальзывания ваш перевес исчезает — это не рынок «просел», это модель переоценила себя.

Автоматизируйте сбор, обновляйте модель регулярно и фиксируйте версии. Пайплайн должен быть воспроизводимым: ETL по расписанию, контроль качества (пропуски, выбросы), версионирование датасетов и кода, журнал признаков. Сравнивайте релизы не только по точности, но и по устойчивости к шуму и транзакционным издержкам.

    • Старт: xG за 6 матчей + темп ударов + xGA; метрики — RMSE и Brier.
    • Контроль: утечки, walk-forward, комиссия и кэп просадки.
    • Масштаб: добавляйте факторы по одному; откатывайте, если эффект не повторяется два цикла.
    • Операционно: авто-ETL, unit-тесты признаков, теги версий, «заморозка» перед турами.

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

Частые вопросы

Как построить модель прогнозов в Excel или Google Таблицах без программирования?

Начните с сбора исторических данных (статистика матчей, результаты) в одной таблице, где каждая строка — это событие. Определите зависимую переменную (например, 1 за победу хозяев, 0 за всё остальное) и независимые (xG, разница рейтингов, форма), затем используйте инструмент «Регрессия» в пакете анализа Excel или функции ЛИНЕЙН (LINEST) и ЛГРФПРИБЛ (LOGEST) для построения статистической модели. Для более сложных нелинейных связей можно вручную рассчитать логистическую регрессию, используя функцию ЛИНЕЙН с преобразованной зависимой переменной.

Какие метрики использовать для оценки качества модели ставок: Brier, log-loss или ROI?

Для оценки именно точности вероятностей вашей модели используйте Brier score или log-loss — чем они ниже, тем лучше модель предсказывает шансы. ROI (Return on Investment) — это метрика финансовой эффективности, которая зависит не только от модели, но и от банкролл-менеджмента и выбранных коэффициентов, поэтому она вторична при тестировании самой прогностической части. Сначала минимизируйте log-loss на исторических данных, а затем проверяйте, даёт ли это положительный ROI при симуляции ставок.

Как учесть маржу букмекера и найти value в коэффициентах?

Маржа (или «вижн») закладывается в коэффициенты, занижая истинные вероятности; чтобы её найти, сложите обратные величины всех коэффициентов в рынке (1/K1 + 1/K2 + ...) и вычтите 1. Чтобы найти value, переведите коэффициент букмекера в вероятность (1/K), вычтите из неё долю маржи пропорционально вашей оценке, и если ваша модельная вероятность выше полученной «честной» вероятности букмекера — ставка имеет перевес. Условный пример: при коэффициенте 2.0 (50%) и марже рынка 5% «честная» вероятность будет около 47.5%, и если ваша модель даёт 51%, это value.

Как сделать бэктест модели без заглядывания в будущее (walk-forward)?

Разделите ваши исторические данные на последовательные периоды: обучите модель на данных за 2024 год, сохраните её параметры (коэффициенты), а затем «примените» её для генерации прогнозов на первый квартал 2025 года без какой-либо перенастройки. Запишите результаты этого квартала, затем добавьте его данные к обучающей выборке, переобучите модель и протестируйте на втором квартале 2025 года, повторяя цикл. Этот метод, называемый walk-forward анализом, имитирует реальную жизнь и предотвращает переобучение под конкретные прошлые события.

Какой банкролл-менеджмент выбрать: фикс-фракция или Келли, как считать долю ставки?

Фикс-фракция (например, 1% от банка на ставку) проста и защищает от быстрой потери всего капитала, но не оптимизирует рост; доля ставки всегда постоянна в процентах. Критерий Келли агрессивнее и рассчитывает долю по формуле f = (bp - q) / b, где b — чистый коэффициент (K-1), p — ваша вероятность, q — вероятность проигрыша (1-p); условный пример: при p=55%, K=2.0 доля будет (1*0.55 - 0.45)/1 = 10%. На практике из-за риска ошибки в оценке вероятности используют дробный Келли (например, ставят половину или четверть от рассчитанной доли), чтобы сгладить дисперсию.

Бонусы букмекеровРеклама · 18+
Реклама. Рекламодатели: Пари, Бетсити, Винлайн. Участие в азартных играх связано с риском потери денег; играйте ответственно. 18+