SPORTS BETTING MATH
ARTIGO DE PESQUISA

Matriz de Placar Exato: Construindo a Grade de Probabilidade a partir de Poisson

Guia matemático para construção de matrizes de placar 7x7, ajustes de correlação de Dixon-Coles e derivação de odds justas para 1X2, Over/Under e BTTS.

18 min de leitura Intermediário Última atualização 2026-09-20
Ilustração do tema: Matriz de Placar Exato: Construindo a Grade de Probabilidade a partir de Poisson
Ilustração conceitual. As premissas numéricas e os exemplos são explicados no texto.

Lab de Modelagem Estocástica SBM

Assinatura editorial: modelos de partidas e banca

Esta assinatura agrupa artigos sobre Poisson, Kelly e simulação. É um rótulo editorial, não prova de um laboratório com equipe ou qualificações verificadas.

Modelagem Bivariada de Partidas pela Distribuição de Poisson Otimização de Crescimento Geométrico pelo Critério de Kelly Simulações de Monte Carlo para Risco de Ruína

1. Introdução: a Superfície de Probabilidade Fundamental do Futebol

No trading quantitativo de futebol, os principais mercados (1X2, Over/Under de gols, Handicap Asiático, Ambas Marcam e margem exata de vitória) não são fenômenos estatísticos independentes. Eles são derivados de uma única distribuição estocástica: a superfície de probabilidade conjunta dos placares exatos.

Apostadores recreativos costumam tratar os mercados como eventos desconectados: apostam "Over 2,5 Gols" em uma casa, "Vitória do Arsenal" em outra e "Ambas Marcam" em uma terceira. Assim, ficam expostos a margens empilhadas em várias linhas derivadas. Analistas quantitativos fazem o contrário: constroem uma grade de probabilidade bivariada única, a Matriz de Placar Exato, e derivam as odds justas de todos os mercados relacionados somando subconjuntos de células.

O Princípio da Matriz Mestra: Depois que o modelo constrói uma matriz calibrada de probabilidades de placar 7×7, P(i,j), todos os mercados padrão do futebol saem dela com exatidão matemática:
  • Vitória do Mandante (1): ∑i>jP(i,j)
  • Empate (X): ∑i=jP(i,j)
  • Vitória do Visitante (2): ∑i<jP(i,j)
  • Over 2,5 Gols: 1−∑i+j≤2P(i,j)
  • Ambas Marcam (Sim): ∑i≥1,j≥1P(i,j)=(1−P(0,⋅))(1−P(⋅,0))

Este guia técnico mostra como construir a Matriz de Placar Exato a partir das expectativas de gols de Poisson (λ e μ). Analisamos os limites de truncamento da massa de probabilidade, detalhamos as somas de células para cada mercado derivado, incorporamos a correção de Dixon-Coles para placares baixos, percorremos um exemplo de matriz e fornecemos código em Python.

2. Construção da Grade Bivariada: a Matriz de Probabilidades 7×7

Suponha que o modelo econométrico estabeleça as intensidades de gols esperados para o Mandante H (λ>0) e o Visitante A (μ>0). Sob a hipótese clássica de Poisson independente, a probabilidade de o mandante marcar exatamente i gols e o visitante exatamente j gols é o produto das funções de probabilidade marginais:

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

Dimensão da Matriz e Limites de Truncamento

A distribuição de Poisson tem suporte infinito (i,j∈{0,1,2,…,∞}), mas na prática a grade é truncada em um limite superior K. Qual dimensão usar?

Quanto uma grade 7×7 (placares de 0−0 a 6−6, 49 células) captura depende das expectativas: 99,9% da massa de probabilidade para λ=1.5,μ=1.2, 99,1% para λ=μ=2.0, mas apenas 95,2% para λ=μ=2.8. Escolha a grade por uma tolerância explícita da cauda omitida. Normalizar a grade truncada condiciona à grade, sem recuperar os placares ausentes; amplie-a e informe a massa restante:

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

3. Mercados Derivados como Partições da Matriz

O grande poder operacional da Matriz de Placar Exato é que qualquer mercado corresponde a uma partição geométrica da grade:

1. O Mercado de Resultado 1X2

As 49 células de placar se dividem em três regiões mutuamente exclusivas em relação à diagonal principal:

P(Vitória do Mandante)=∑i=16∑j=0i−1P(i,j),P(Empate)=∑k=06P(k,k),P(Vitória do Visitante)=∑j=16∑i=0j−1P(i,j)

2. Linhas de Over/Under de Gols

Os mercados de total de gols avaliam se o placar agregado S=i+j supera um limite de meio gol T∈{0.5,1.5,2.5,3.5,4.5}. A probabilidade do Under é a soma das células nas antidiagonais em que i+j≤⌊T⌋:

P(Under 2.5)=P(0,0)+P(1,0)+P(0,1)+P(2,0)+P(1,1)+P(0,2)
P(Over 2.5)=1.0−P(Under 2.5)

3. Ambas Marcam (BTTS)

O mercado "Ambas Marcam: Não" representa o evento em que pelo menos um time não marca (i=0 ou j=0). Isso corresponde à união da primeira linha com a primeira coluna da matriz:

P(Ambas Marcam: Não)=∑j=06P(0,j)+∑i=06P(i,0)−P(0,0)
P(Ambas Marcam: Sim)=1.0−P(Ambas Marcam: Não)=∑i=16∑j=16P(i,j)

4. Handicaps Asiáticos

Para qualquer linha de Handicap Asiático H∈{±0.5,±1.0,±1.5,…}, a probabilidade de o mandante cobrir o handicap é a soma das células que satisfazem i+H>j:

P(Mandante −1.5)=∑i−j≥2P(i,j)

4. A Correção de Dixon-Coles para Placares Baixos

Dixon e Coles (1997) constataram que modelos de Poisson independentes subestimam os empates 0−0 e 1−1 e superestimam os placares 1−0 e 0−1. Para corrigir esse viés, as quatro células de placar baixo {0,1}×{0,1} são multiplicadas pelo fator de ajuste de Dixon e Coles τi,j(λ,μ,ρ):

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

Onde ρ é ajustado com jogos históricos e costuma ser pequeno e negativo (o código abaixo usa ρ=−0.11 como exemplo). A correção τ transfere massa de probabilidade dos placares 1−0 e 0−1 para os empates 0−0 e 1−1, o que aumenta um pouco a probabilidade de empate.

5. Exemplo Passo a Passo: Manchester City x Newcastle

Considere um jogo hipotético da Premier League com intensidades de gols esperados de λ=2.15 (Manchester City em casa) e μ=0.85 (Newcastle fora).

A Grade Central 4×4 (Subconjunto)

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

Probabilidades dos Mercados Derivados e Odds Justas

Os números do 1X2 somam todos os placares; neste jogo, a grade 7×7 contém 99,3% da massa de probabilidade.

  • Vitória do Mandante (PHome): ∑i>jP(i,j)=10.70%+11.51%+9.78%+8.25%+⋯=𝟔𝟕.𝟐%⟹Ofair=𝟏.𝟒𝟗
  • Empate (PDraw): ∑kP(k,k)=4.98%+9.10%+4.16%+0.84%+⋯=𝟏𝟗.𝟐%⟹Ofair=𝟓.𝟐𝟏
  • Vitória do Visitante (PAway): ∑i<jP(i,j)=4.23%+1.80%+3.87%+⋯=𝟏𝟑.𝟔%⟹Ofair=𝟕.𝟑𝟒
  • Over 2,5 Gols: 1−(4.98%+4.23%+10.70%+1.80%+9.10%+11.51%)=1−42.32%=𝟓𝟕.𝟔𝟖%⟹Ofair=𝟏.𝟕𝟑
  • Ambas Marcam (Sim): (1−e−2.15)(1−e−0.85)=(0.8835)(0.5726)=𝟓𝟎.𝟓𝟗%⟹Ofair=𝟏.𝟗𝟖

6. Implementação em Python: Gerador da Grade de Placar Exato

Abaixo está um script em Python que gera a grade 7×7 completa, aplica o ajuste de Dixon-Coles e extrai os preços justos de todos os mercados derivados.

# 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. Estabilidade Numérica e Normalização

No cálculo de matrizes de Poisson conjuntas, a precisão de ponto flutuante importa para placares extremos como 6-5 ou 5-4. O código de produção acumula os logaritmos das funções de probabilidade, ln⁡P(i,j)=iln⁡λ−λ−ln⁡(i!)+jln⁡μ−μ−ln⁡(j!), e volta ao espaço de probabilidades pela exponencial para evitar underflow. Dividir toda a grade pela soma acumulada ∑i,jP(i,j) faz a probabilidade total ser exatamente 1, de modo que os preços de 1X2, totais, Ambas Marcam e handicaps derivados dela permanecem consistentes entre si.

Perguntas Frequentes

PESQUISA RELACIONADA

Estudos com Referência Cruzada

Compare o mesmo mercado

Links de parceiros

1win Sports: confira evento, odds e regras de liquidação

O que está no preço → Visitar 1win Sports 18+ · Termos no site

Stake Sportsbook: compare o mesmo evento, mercado e regras

O que está no preço → Visitar Stake 18+ · Termos no site

Confira a cotação atual, o mercado exato, as regras e a disponibilidade no seu país. O resultado da calculadora depende das premissas e não confirma uma oportunidade ao vivo.