SPORTS BETTING MATH APPLIED PROBABILITY INSTITUTE
НАУЧНАЯ СТАТЬЯ

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

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

22 мин чтения Продвинутый Последнее обновление: 2026-09-20

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

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

Исследовательская лаборатория, специализирующаяся на моделировании распределений Пуассона для голов, оптимизации ставок по критерию Келли и симуляциях Монте-Карло для оценки риска разорения.

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

1. Введение: Структурный кризис независимой модели Пуассона

В количественном моделировании футбольных ассоциаций классическая модель независимого распределения Пуассона, предложенная в прикладном спортивном анализе М. Дж. Махером (M. J. Maher) в 1982 году, долгое время служила главным фундаментом для оценки ожидаемых голов и расчета вероятностей исходов матчей. Базовая аксиома Махера утверждает, что количество голов, забитых командой хозяев ($X$) и командой гостей ($Y$) за стандартные 90 минут основного времени, подчиняется взаимно независимым пуассоновским процессам с математическими ожиданиями $lambda$ и $mu$ соответственно:

$$P(X = x, Y = y) = P(X = x) cdot P(Y = y) = rac{lambda^x e^{-lambda}}{x!} cdot rac{mu^y e^{-mu}}{y!}$$

Несмотря на изящество формул и вычислительную простоту, этот фундаментальный постулат о независимости страдает от критического эмпирического изъяна: в профессиональном футболе забитые мячи не являются условно независимыми событиями. Реальные спортивные данные демонстрируют неразрывную связь между результативностью соперников, обусловленную тактическими сценариями матча (game state), переходом команды в оборонительный блок («автобус») при открытии счета, изменением темпа владения мячом и спецификой судейства.

Аномалия кластеризации низких счетов в футбольной статистике: При статистическом исследовании выборки из более чем 40 000 матчей ведущих европейских чемпионатов (Английская Премьер-лига, Испанская Ла Лига, Итальянская Серия А и Немецкая Бундеслига) обнаруживается систематическое расхождение между реальностью и наивной моделью Пуассона:
  • Счет 0:0: Встречается в 8.2% – 9.5% матчей современного европейского футбола, в то время как стандартная модель Пуассона при средних ожиданиях ($lambda = 1.45, mu = 1.10$) дает всего 5.9%. Это занижение истинной вероятности на 35%!
  • Счет 1:1: В реальности фиксируется в 11.5% – 13.2% встреч, тогда как независимый Пуассон оценивает его лишь в 9.4%.
  • Минимальные победы 1:0 и 0:1: Напротив, переоцениваются независимым распределением примерно на 8% – 15%.

Это искажение порождает системную уязвимость на букмекерском рынке. Количественный синдикат, применяющий нескорректированную модель Пуассона, систематически недооценивает вероятность ничейных результатов, неверно вычисляет линии азиатских фор и генерирует отрицательное математическое ожидание ($ ext{EV} < 0$) на тоталах меньше (Under 2.5).

В 1997 году в журнале Journal of the Royal Statistical Society была опубликована фундаментальная работа британских статистиков Марка Диксона и Стюарта Коулза (Mark J. Dixon & Stuart G. Coles): «Modelling Association Football Scores and Inefficiencies in the Football Betting Market». Модель Диксона-Коулза решила эту проблему с помощью введения матричного поправочного коэффициента корреляции $ au_{x,y}(lambda, mu, ho)$, избирательно перераспределяющего вероятности низких счетов с сохранением маргинальных распределений Пуассона, а также экспоненциального временного затухания формы команд.

В данном руководстве представлен детальный математический вывод поправки Диксона-Коулза, строгое доказательство сохранения полной вероятностной массы, байесовская и максимальная правдоподобная (MLE) калибровка параметров с учетом временного затухания $\xi$, расчет расхождения с котировками Pinnacle и полный промышленный код на Python.

2. Двумерный корректирующий фактор Диксона-Коулза $ au_{x,y}$

Чтобы ликвидировать расхождение на низких счетах, не разрушая при этом пуассоновскую структуру распределения, Диксон и Коулз ввели модифицированную функцию совместной плотности вероятности:

$$P(X = x, Y = y mid lambda, mu, ho) = au_{x,y}(lambda, mu, ho) cdot rac{lambda^x e^{-lambda}}{x!} cdot rac{mu^y e^{-mu}}{y!}$$

Корректирующий фактор $ au_{x,y}(lambda, mu, ho)$ представляет собой кусочно-дискретный скалярный множитель, воздействующий на счетные комбинации ${0, 1} imes {0, 1}$ и зависящий от параметра взаимосвязи $ ho$:

$$ au_{x,y}(lambda, mu, ho) = egin{cases} 1 - lambda mu ho & ext{при } x = 0, y = 0 \ 1 + lambda ho & ext{при } x = 0, y = 1 \ 1 + mu ho & ext{при } x = 1, y = 0 \ 1 - ho & ext{при } x = 1, y = 1 \ 1 & ext{при } x ge 2 ext{ или } y ge 2 end{cases}$$

Математическое доказательство сохранения полной вероятности

Для корректности статистической модели модификация обязана строго удовлетворять условию нормировки: сумма всех элементов матрицы совместных вероятностей должна быть равна единице: $sum_{x=0}^infty sum_{y=0}^infty P(X=x, Y=y) = 1$.

Разобьем двойную сумму на исходный пуассоновский базис и сумму возмущений по четырем модифицированным ячейкам:

$$sum_{x=0}^infty sum_{y=0}^infty P(X=x, Y=y) = sum_{x=0}^infty rac{lambda^x e^{-lambda}}{x!} sum_{y=0}^infty rac{mu^y e^{-mu}}{y!} + Delta = 1 cdot 1 + Delta$$

Распишем поправку $Delta$ по состояниям $(0,0), (0,1), (1,0), (1,1)$:

$$egin{aligned} Delta &= ( au_{0,0} - 1) P_0(lambda) P_0(mu) + ( au_{0,1} - 1) P_0(lambda) P_1(mu) \ &quad + ( au_{1,0} - 1) P_1(lambda) P_0(mu) + ( au_{1,1} - 1) P_1(lambda) P_1(mu) end{aligned}$$

Подставляя вероятности $P_0(lambda) = e^{-lambda}$, $P_1(lambda) = lambda e^{-lambda}$, $P_0(mu) = e^{-mu}$ и $P_1(mu) = mu e^{-mu}$, выносим общий множитель $e^{-lambda-mu}$ за скобки:

$$egin{aligned} Delta &= e^{-lambda-mu} Big[ (-lambda mu ho) cdot (1 cdot 1) + (lambda ho) cdot (1 cdot mu) + (mu ho) cdot (lambda cdot 1) + (- ho) cdot (lambda cdot mu) Big] \ &= e^{-lambda-mu} ho Big[ -lambda mu + lambda mu + lambda mu - lambda mu Big] \ &= e^{-lambda-mu} ho cdot (0) = mathbf{0} end{aligned}$$

Сумма возмущений строго равна нулю! Это означает, что фактор Диксона-Коулза лишь перераспределяет вероятностную массу между четырьмя базовыми состояниями, не нарушая маргинальных пуассоновских интегралов и сохраняя тотальную вероятность на уровне ровно $1.00$ ($100%$).

Физический смысл отрицательного параметра $ ho$

В эмпирических футбольных данных оценка максимального правдоподобия всегда дает отрицательное значение параметра $ ho$, устойчиво находящееся в диапазоне:

$$ ho in [-0.15, -0.05]$$

Отрицательный знак $ ho$ (например, $ ho = -0.11$) объясняет ключевые футбольные явления:

  • Для счета 0:0: $ au_{0,0} = 1 - lambda mu ho$. Так как $ ho < 0$, произведение $-lambda mu ho > 0$, откуда $ au_{0,0} > 1$. Вероятность безголевой ничьей возрастает относительно наивного Пуассона.
  • Для счета 1:1: $ au_{1,1} = 1 - ho$. Так как $ ho < 0$, значение $1 - ho = 1 + | ho| > 1$. Вероятность результативной ничьей 1:1 также увеличивается.
  • Для счетов 1:0 и 0:1: $ au_{0,1} = 1 + lambda ho < 1$ и $ au_{1,0} = 1 + mu ho < 1$. Вероятности минимальных побед 1:0 понижаются, идеально балансируя прирост ничьих.

3. Параметризация сил команд: атака, оборона и фактор поля

В модели Диксона-Коулза ожидаемые голы хозяев $lambda_{i,j}$ и гостей $mu_{i,j}$ выражаются через скрытые латентные рейтинги силы клубов:

$$lambda_{i,j} = alpha_i cdot eta_j cdot gamma, qquad mu_{i,j} = alpha_j cdot eta_i$$

Где:

  • $alpha_i > 0$: Рейтинг атакующей мощи команды $i$. При $alpha_i = 1.30$ команда генерирует на 30% больше опасных моментов и голов, чем среднестатистический клуб лиги.
  • $eta_j > 0$: Коэффициент оборонительной уязвимости команды $j$. При $eta_j = 0.80$ клуб пропускает на 20% меньше голов относительно среднего уровня чемпионата.
  • $gamma > 0$: Лига-фактор преимущества своего поля. В высших дивизионах Европы эмпирическое значение $gamma$ колеблется в коридоре от $1.20$ до $1.35$.

Ограничение идентифицируемости параметров

Если умножить все параметры атаки $alpha_k$ на произвольную константу $c > 0$, а все параметры обороны $eta_k$ разделить на $c$, величины ожидаемых голов $lambda_{i,j} = (c alpha_i)(eta_j / c)gamma = alpha_i eta_j gamma$ останутся абсолютно неизменными. Чтобы ликвидировать эту масштабную неопределенность, Диксон и Коулз зафиксировали строгое ограничение на среднее арифметическое атакующих параметров лиги из $N$ команд:

$$ rac{1}{N} sum_{k=1}^N alpha_k = 1.00$$

4. Экспоненциальное затухание формы: параметр памяти $\xi$

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

Для непрерывного дисконтирования давности Диксон и Коулз разработали функцию экспоненциального затухания весов $w_k(\xi)$ для каждого исторического матча $k$, сыгранного в момент $t_k$, относительно текущего дня $t$:

$$w_k(\xi) = expleft( -\xi cdot (t - t_k) ight)$$

Где $(t - t_k)$ измеряется в днях, а $\xi > 0$ — непрерывный гиперпараметр затухания памяти модели.

Период полураспада спортивной формы ($t_{1/2}$): Время, за которое статистический вес исторического матча снижается ровно вдвое ($w_k = 0.50$), вычисляется по логарифмической формуле: $$t_{1/2} = rac{ln(2)}{\xi}$$ При тестировании на архивах линий АПЛ оптимальное вневыборочное значение параметра правдоподобия составляет: $$\xi approx 0.0065 ext{ дней}^{-1} implies t_{1/2} approx rac{0.69315}{0.0065} approx 106.6 ext{ дней}$$ Это наглядно подтверждает: данные трехмесячной давности теряют ровно половину своей предсказательной ценности, а матчи старше полутора-двух лет оказывают менее 1% влияния на текущие оценки силы соперников.

5. Оптимизация методом максимального правдоподобия (MLE)

Для выборки из $M$ завершившихся матчей с результатами $(x_k, y_k)$ и датами $t_k$ логарифмическая функция правдоподобия с весовыми коэффициентами формулируется следующим образом:

$$ln L(Theta) = sum_{k=1}^M w_k(\xi) cdot lnleft[ au_{x_k, y_k}(lambda_k, mu_k, ho) cdot rac{lambda_k^{x_k} e^{-lambda_k}}{x_k!} cdot rac{mu_k^{y_k} e^{-mu_k}}{y_k!} ight]$$

Опуская независимые факториалы, минимизируется взвешенное отрицательное логарифмическое правдоподобие:

$$min_{Theta} mathcal{NLL}(Theta) = -sum_{k=1}^M w_k(\xi) left[ ln au_{x_k, y_k}(lambda_k, mu_k, ho) + x_k ln lambda_k - lambda_k + y_k ln mu_k - mu_k ight]$$

Оптимизация параметров $Theta = ({alpha}, {eta}, gamma, ho)$ стабильно выполняется квазиньютоновскими методами со связанными переменными, в частности алгоритмом L-BFGS-B.

6. Сравнительная таблица расхождений: Наивный Пуассон vs Диксон-Коулз

Оценим расхождения на конкретном матче Арсенал – Челси при параметрах $lambda = 1.65$, $mu = 1.15$ и $ ho = -0.12$:

Исход / Точный счет Вероятность Пуассона Справедливый кэф Вероятность Диксона-Коулза Справедливый кэф DC Закрытие Pinnacle Характер перекоса котировок
0 – 0 (Без голов) $6.06%$ $16.50$ $7.44%$ $13.44$ $13.60$ +22.8% занижение вероятности у Пуассона
1 – 1 (Ничья 1:1) $11.51%$ $8.69$ $12.89%$ $7.76$ $7.85$ +12.0% занижение вероятности у Пуассона
1 – 0 (Победа хозяев) $10.00%$ $10.00$ $8.62%$ $11.60$ $11.45$ -13.8% завышение вероятности у Пуассона
0 – 1 (Победа гостей) $6.97%$ $14.35$ $6.08%$ $16.45$ $16.20$ -12.8% завышение вероятности у Пуассона
П1 (Победа хозяев 1X2) $50.21%$ $1.99$ $48.63%$ $2.06$ $2.05$ Сдвиг на $-3.1%$
Ничья (X в 1X2) $24.78%$ $4.04$ $27.56%$ $3.63$ $3.65$ +11.2% недооценка ничьей в линии!
П2 (Победа гостей 1X2) $25.01%$ $4.00$ $23.81%$ $4.20$ $4.18$ Сдвиг на $-4.8%$
Тотал меньше 2.5 (Under 2.5) $48.06%$ $2.08$ $51.52%$ $1.94$ $1.95$ +7.2% структурный перекос тотала

Эти расчеты подтверждают колоссальный рыночный перекос: наивный Пуассон выставляет справедливый коэффициент на ничью на уровне $4.04$, тогда как реальная цена с учетом взаимной корреляции составляет $3.63$. Любая букмекерская контора, использующая нескорректированный Пуассон, открывает арбитражникам возможность ставить ставку на ничью с перевесом более $+10%$ EV.

7. Промышленный код на Python: DixonColesModel

import numpy as np
from scipy.optimize import minimize
from scipy.stats import poisson

class DixonColesModel:
    def __init__(self, xi=0.0065):
        self.xi = xi
        self.teams = []
        self.team_indices = {}
        self.params = None
        self.gamma = 1.25
        self.rho = -0.11

    @staticmethod
    def tau(x, y, lambda_, mu, rho):
        if x == 0 and y == 0:
            return 1.0 - lambda_ * mu * rho
        elif x == 0 and y == 1:
            return 1.0 + lambda_ * rho
        elif x == 1 and y == 0:
            return 1.0 + mu * rho
        elif x == 1 and y == 1:
            return 1.0 - rho
        else:
            return 1.0

    def bivariate_prob(self, x, y, lambda_, mu, rho):
        p_indep = poisson.pmf(x, lambda_) * poisson.pmf(y, mu)
        tau_val = self.tau(x, y, lambda_, mu, rho)
        return max(0.0, tau_val * p_indep)

    def _unpack_params(self, params, n_teams):
        alpha = params[0:n_teams]
        beta = params[n_teams:2*n_teams]
        gamma = params[2*n_teams]
        rho = params[2*n_teams + 1]
        return alpha, beta, gamma, rho

    def fit(self, matches):
        unique_teams = sorted(list(set([m['home'] for m in matches] + [m['away'] for m in matches])))
        self.teams = unique_teams
        self.team_indices = {team: i for i, team in enumerate(self.teams)}
        n_teams = len(self.teams)

        init_params = np.concatenate([np.ones(n_teams), np.ones(n_teams), [1.25, -0.10]])

        def loss_fn(params):
            alpha, beta, gamma, rho = self._unpack_params(params, n_teams)
            nll = 0.0
            for m in matches:
                h_idx = self.team_indices[m['home']]
                a_idx = self.team_indices[m['away']]
                x, y = m['home_goals'], m['away_goals']
                weight = np.exp(-self.xi * m.get('days_ago', 0.0))
                lambda_ = max(alpha[h_idx] * beta[a_idx] * gamma, 1e-4)
                mu = max(alpha[a_idx] * beta[h_idx], 1e-4)
                prob = max(self.bivariate_prob(x, y, lambda_, mu, rho), 1e-12)
                nll -= weight * np.log(prob)
            penalty = 1000.0 * (np.mean(alpha) - 1.0) ** 2
            return nll + penalty

        bounds = [(0.05, 3.5)] * (2 * n_teams) + [(1.0, 1.8), (-0.35, 0.0)]
        res = minimize(loss_fn, init_params, method='L-BFGS-B', bounds=bounds)
        self.params = res.x
        _, _, self.gamma, self.rho = self._unpack_params(self.params, n_teams)
        return res

    def predict_score_matrix(self, home_team, away_team, max_goals=7):
        n_teams = len(self.teams)
        alpha, beta, gamma, rho = self._unpack_params(self.params, n_teams)
        h_idx, a_idx = self.team_indices[home_team], self.team_indices[away_team]
        lambda_ = alpha[h_idx] * beta[a_idx] * gamma
        mu = alpha[a_idx] * beta[h_idx]
        matrix = np.zeros((max_goals + 1, max_goals + 1))
        for x in range(max_goals + 1):
            for y in range(max_goals + 1):
                matrix[x, y] = self.bivariate_prob(x, y, lambda_, mu, rho)
        matrix /= np.sum(matrix)
        return matrix, lambda_, mu

    def predict_1x2(self, home_team, away_team):
        matrix, lambda_, mu = self.predict_score_matrix(home_team, away_team)
        return {
            'home_win': np.sum(np.tril(matrix, -1)),
            'draw': np.sum(np.diag(matrix)),
            'away_win': np.sum(np.triu(matrix, 1))
        }

8. Современные расширения: копулы и двумерный Пуассон Карлиса-Нцофраса

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

Двумерный Пуассон с общим фактором шока (Karlis & Ntzoufras, 2003)

В модели Карлиса и Нцофраса голы команд моделируются через три независимые пуассоновские случайные величины: $X = X^* + Z$ и $Y = Y^* + Z$, где $Z sim ext{Pois}(lambda_3)$ представляет собой скрытый фактор «общего шока» (общий темп матча, судейская строгость, погодные катаклизмы). Ковариация в такой системе строго неотрицательна: $ ext{Cov}(X, Y) = lambda_3 ge 0$. Эта спецификация превосходно описывает открытые результативные матчи с высокими тоталами, но не способна адекватно смоделировать отрицательную корреляцию и защитную блокировку при счетах 0:0 и 1:1 в прагматичном позиционном футболе.

Копулы Архимеда для дискретных распределений

Современные алгоритмические фонды комбинируют непрерывные копулы (копулу Франка или Клейтона) с дискретными отрицательными биномиальными маргиналами, учитывающими эффект сверхдисперсии (overdispersion). Копулы позволяют раздельно калибровать хвостовую зависимость для экстремальных счетов. Тем не менее, по вычислительной скорости, интерпретируемости и мгновенной скорости пересчета в лайве фактор $ au_{x,y}$ Диксона-Коулза по-прежнему остается золотым стандартом для маркетмейкеров и профессиональных синдикатов.

9. Аналитическое заключение и практические выводы

Математический анализ показывает: отказ от наивного предположения о независимости забитых голов — обязательный шаг для выхода на устойчивый плюс (+EV). Коррекция Диксона-Коулза ликвидирует структурное занижение вероятности ничьих, выравнивает цены на тоталы меньше и формирует математический перевес над рекреационными линиями букмекеров.

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

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

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

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

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

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

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

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

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

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

Рейтинги силы атаки и обороны: параметризация пуассоновских моделей в футболе

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

18 min Средний
Читать исследование →
18+ ПРЕДУПРЕЖДЕНИЕ О РИСКАХ