SPORTS BETTING MATH
НАУЧНАЯ СТАТЬЯ

Матрица точного счета: построение полной карты вероятностей на базе модели Пуассона

Математическое руководство по построению сетки точного счета 7x7, поправке Диксона–Коулза и выводу справедливых коэффициентов 1X2, тоталов и BTTS.

18 мин чтения Средний Последнее обновление: 2026-09-20
Иллюстрация темы: Матрица точного счета: построение полной карты вероятностей на базе модели Пуассона
Концептуальная иллюстрация. Числовые допущения и примеры разобраны в тексте.

Лаборатория стохастического моделирования SBM

Редакционная подпись: модели матчей и банкролла

Эта подпись объединяет статьи о Пуассоне, Келли и симуляциях. Это редакционное обозначение, а не свидетельство о составе лаборатории или независимо подтверждённой квалификации.

Двумерное моделирование исходов матчей по распределению Пуассона Оптимизация геометрического роста банкролла по критерию Келли Симуляция риска разорения методом Монте-Карло

1. Введение: фундаментальная поверхность вероятностей в футболе

В количественной торговле на футбол основные рынки (1X2, тоталы голов, азиатские форы, «обе забьют» и точная разница) не являются независимыми статистическими явлениями. Все они производные от одного распределения: совместной поверхности вероятностей точного счета.

Любители часто воспринимают рынки как несвязанные события: ставят «ТБ 2,5» в одной конторе, «победу Арсенала» в другой и «обе забьют» в третьей. Так они платят маржу, накопленную сразу в нескольких производных линиях. Количественные аналитики действуют наоборот: строят единую двумерную сетку вероятностей, матрицу точного счета, и получают справедливые коэффициенты всех связанных рынков, суммируя подмножества ее ячеек.

Принцип главной матрицы: Когда модель построила откалиброванную матрицу вероятностей счета 7×7, P(i,j), из нее с математической точностью получаются все стандартные футбольные рынки:
  • Победа хозяев (1): ∑i>jP(i,j)
  • Ничья (X): ∑i=jP(i,j)
  • Победа гостей (2): ∑i<jP(i,j)
  • ТБ 2,5: 1−∑i+j≤2P(i,j)
  • Обе забьют (да): ∑i≥1,j≥1P(i,j)=(1−P(0,⋅))(1−P(⋅,0))

В этом руководстве показано, как построить матрицу точного счета по пуассоновским ожиданиям голов (λ и μ). Мы разбираем пороги усечения вероятностной массы, суммы ячеек для каждого производного рынка, поправку Диксона–Коулза для малых счетов, пример матрицы и код на Python.

2. Построение двумерной сетки: матрица вероятностей 7×7

Пусть эконометрическая модель задает интенсивности ожидаемых голов для хозяев H (λ>0) и гостей A (μ>0). В классической модели независимого Пуассона вероятность того, что хозяева забьют ровно i голов, а гости ровно j, равна произведению маргинальных вероятностей:

P(X=i,Y=j)=λie−λi!×μje−μj!

Размер матрицы и пороги усечения

У распределения Пуассона бесконечный носитель (i,j∈{0,1,2,…,∞}), но на практике сетку обрезают на верхней границе K. Какой размер выбрать?

Доля вероятности, которую охватывает сетка 7×7 (счета от 0−0 до 6−6, 49 ячеек), зависит от ожиданий: 99,9% при λ=1.5,μ=1.2, 99,1% при λ=μ=2.0, но только 95,2% при λ=μ=2.8. Выбирайте сетку по явному допуску пропущенного хвоста при заданных параметрах. Нормировка усечённой сетки условна на попадание в неё и не восстанавливает отсутствующие счета. Расширьте сетку и укажите остаточный хвост.

Pnormalized(i,j)=P(i,j)∑u=06∑v=06P(u,v)

3. Производные рынки как разбиения матрицы

Главная практическая сила матрицы точного счета в том, что любой рынок соответствует геометрическому разбиению сетки:

1. Рынок исхода 1X2

49 ячеек счета делятся на три непересекающиеся области относительно главной диагонали:

P(Победа хозяев)=∑i=16∑j=0i−1P(i,j),P(Ничья)=∑k=06P(k,k),P(Победа гостей)=∑j=16∑i=0j−1P(i,j)

2. Тоталы голов

Рынки тоталов проверяют, превышает ли суммарный счет S=i+j дробный порог T∈{0.5,1.5,2.5,3.5,4.5}. Вероятность тотала меньше равна сумме ячеек на антидиагоналях, где i+j≤⌊T⌋:

P(ТМ 2.5)=P(0,0)+P(1,0)+P(0,1)+P(2,0)+P(1,1)+P(0,2)
P(ТБ 2.5)=1.0−P(ТМ 2.5)

3. Обе забьют (BTTS)

Исход «Обе забьют: нет» означает, что хотя бы одна команда не забила (i=0 или j=0). Это объединение первой строки и первого столбца матрицы:

P(Обе забьют: нет)=∑j=06P(0,j)+∑i=06P(i,0)−P(0,0)
P(Обе забьют: да)=1.0−P(Обе забьют: нет)=∑i=16∑j=16P(i,j)

4. Азиатские форы

Для любой азиатской форы H∈{±0.5,±1.0,±1.5,…} вероятность того, что хозяева пройдут фору, равна сумме ячеек, где i+H>j:

P(Хозяева −1.5)=∑i−j≥2P(i,j)

4. Поправка Диксона–Коулза для малых счетов

Диксон и Коулз (1997) показали, что модели независимого Пуассона занижают вероятность ничьих 0−0 и 1−1 и завышают счета 1−0 и 0−1. Чтобы исправить это смещение, четыре ячейки малых счетов {0,1}×{0,1} умножаются на поправочный коэффициент Диксона–Коулза τi,j(λ,μ,ρ):

PDC(i,j)=τi,j(λ,μ,ρ)⋅Pindep(i,j)

Где ρ подбирается по историческим матчам и обычно мал и отрицателен (в коде ниже для примера ρ=−0.11). Поправка τ переносит вероятность со счетов 1−0 и 0−1 на ничьи 0−0 и 1−1 и немного повышает вероятность ничьей.

5. Пошаговый пример: «Манчестер Сити» против «Ньюкасла»

Рассмотрим гипотетический матч Премьер-лиги с интенсивностями ожидаемых голов λ=2.15 («Манчестер Сити» дома) и μ=0.85 («Ньюкасл» в гостях).

Центральная сетка 4×4 (фрагмент)

Man City \ Newcastle 0 голов (42.74%) 1 гол (36.33%) 2 гола (15.44%) 3 гола (4.37%)
0 голов (11.65%) 0-0: 4.98% 0-1: 4.23% 0-2: 1.80% 0-3: 0.51%
1 гол (25.04%) 1-0: 10.70% 1-1: 9.10% 1-2: 3.87% 1-3: 1.10%
2 гола (26.92%) 2-0: 11.51% 2-1: 9.78% 2-2: 4.16% 2-3: 1.18%
3 гола (19.29%) 3-0: 8.25% 3-1: 7.01% 3-2: 2.98% 3-3: 0.84%

Вероятности производных рынков и справедливые коэффициенты

Значения 1X2 суммируют все счета; в этом матче сетка 7×7 содержит 99,3% вероятностной массы.

  • Победа хозяев (PHome): ∑i>jP(i,j)=10.70%+11.51%+9.78%+8.25%+⋯=𝟔𝟕.𝟐%⟹Ofair=𝟏.𝟒𝟗
  • Ничья (PDraw): ∑kP(k,k)=4.98%+9.10%+4.16%+0.84%+⋯=𝟏𝟗.𝟐%⟹Ofair=𝟓.𝟐𝟏
  • Победа гостей (PAway): ∑i<jP(i,j)=4.23%+1.80%+3.87%+⋯=𝟏𝟑.𝟔%⟹Ofair=𝟕.𝟑𝟒
  • ТБ 2,5: 1−(4.98%+4.23%+10.70%+1.80%+9.10%+11.51%)=1−42.32%=𝟓𝟕.𝟔𝟖%⟹Ofair=𝟏.𝟕𝟑
  • Обе забьют (да): (1−e−2.15)(1−e−0.85)=(0.8835)(0.5726)=𝟓𝟎.𝟓𝟗%⟹Ofair=𝟏.𝟗𝟖

6. Реализация на Python: генератор сетки точного счета

Ниже приведен скрипт на Python, который строит полную сетку 7×7, применяет поправку Диксона–Коулза и рассчитывает справедливые цены всех производных рынков.

# correct_score_matrix_engine.py
import numpy as np
from scipy.stats import poisson

def generate_correct_score_matrix(lambda_home, mu_away, rho=-0.11, max_goals=6):
    # Generates a calibrated 7x7 correct score probability matrix.
    grid_size = max_goals + 1
    matrix = np.zeros((grid_size, grid_size), dtype=np.float64)
    
    # Compute raw independent Poisson probabilities
    for i in range(grid_size):
        p_home = poisson.pmf(i, lambda_home)
        for j in range(grid_size):
            p_away = poisson.pmf(j, mu_away)
            matrix[i, j] = p_home * p_away
            
    # Apply Dixon-Coles low-score correction tau
    tau_00 = 1.0 - lambda_home * mu_away * rho
    tau_01 = 1.0 + lambda_home * rho
    tau_10 = 1.0 + mu_away * rho
    tau_11 = 1.0 - rho
    
    matrix[0, 0] *= tau_00
    matrix[0, 1] *= tau_01
    matrix[1, 0] *= tau_10
    matrix[1, 1] *= tau_11
    
    # Normalize matrix to 1.0 to absorb truncation error
    matrix /= np.sum(matrix)
    
    # Derive Ancillary Markets
    p_home_win = np.sum(np.tril(matrix, -1))
    p_draw = np.sum(np.diag(matrix))
    p_away_win = np.sum(np.triu(matrix, 1))
    
    # Over / Under 2.5
    under_25_mask = np.array([[i + j <= 2 for j in range(grid_size)] for i in range(grid_size)])
    p_under_25 = np.sum(matrix[under_25_mask])
    p_over_25 = 1.0 - p_under_25
    
    # Both Teams To Score (BTTS)
    p_btts_yes = np.sum(matrix[1:, 1:])
    p_btts_no = 1.0 - p_btts_yes
    
    return {
        'matrix': matrix,
        'home_win_prob': p_home_win,
        'draw_prob': p_draw,
        'away_win_prob': p_away_win,
        'over_25_prob': p_over_25,
        'under_25_prob': p_under_25,
        'btts_yes_prob': p_btts_yes,
        'fair_1x2_odds': (1.0 / p_home_win, 1.0 / p_draw, 1.0 / p_away_win),
        'fair_ou25_odds': (1.0 / p_over_25, 1.0 / p_under_25),
        'fair_btts_odds': (1.0 / p_btts_yes, 1.0 / p_btts_no)
    }

if __name__ == '__main__':
    res = generate_correct_score_matrix(2.15, 0.85)
    print("Fair 1X2 Odds:", np.round(res['fair_1x2_odds'], 2))
    print("Fair Over/Under 2.5:", np.round(res['fair_ou25_odds'], 2))
    print("Fair BTTS Odds:", np.round(res['fair_btts_odds'], 2))

7. Численная устойчивость и нормировка

При расчете совместных пуассоновских матриц точность вычислений с плавающей точкой важна для экстремальных счетов вроде 6-5 или 5-4. Рабочий код накапливает логарифмы вероятностей, ln⁡P(i,j)=iln⁡λ−λ−ln⁡(i!)+jln⁡μ−μ−ln⁡(j!), и возвращается к вероятностям через экспоненту, чтобы избежать исчезновения порядка. Деление всей сетки на ее накопленную сумму ∑i,jP(i,j) делает полную вероятность ровно равной 1, поэтому цены 1X2, тоталов, «обе забьют» и фор, полученные из матрицы, согласованы между собой.

Часто задаваемые вопросы

СВЯЗАННЫЕ ИССЛЕДОВАНИЯ

Перекрестные исследования

Модели Пуассона

Модель Пуассона в ставках на футбол: математическое моделирование голов

Математический аппарат двумерного распределения Пуассона, поправки Диксона-Коулза, интеграция xG и расчет справедливых коэффициентов.

22 min Сложный
Читать исследование →
Модели Пуассона

Расчет вероятностей тоталов через распределение Пуассона: математическое руководство

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

14 min Базовый
Читать исследование →
Модели Пуассона

Модель Диксона-Коулза: коррекция низких счетов и временное затухание в футболе

Полный математический анализ двумерной модификации Диксона-Коулза, матричного фактора коррекции tau для низких счетов, экспоненциального затухания формы и неэффективностей букмекерского рынка.

22 min Сложный
Читать исследование →

Сравните один и тот же рынок

Партнёрские ссылки

1win Sports: проверьте событие, коэффициент и правила расчёта

Что входит в цену → Перейти в 1win Sports 18+ · Условия на сайте

Stake Sportsbook: сравните то же событие, рынок и правила расчёта

Что входит в цену → Перейти в Stake 18+ · Условия на сайте

Проверьте текущую цену, конкретный рынок, правила расчёта и доступность в своей стране. Результат калькулятора зависит от допущений и не подтверждает доступную возможность для ставки.