apura br

Documento de autoridade

Metodologia da apura✦br

Toda probabilidade publicada aqui vem de um modelo aberto, com premissas explícitas. Esta página é o documento que sustenta nossa autoridade — e onde admitimos onde o modelo erra.

1. Modelo de partida — Poisson independente

Cada confronto é simulado como duas distribuições Poisson independentes — gols do mandante e gols do visitante são variáveis aleatórias separadas. A probabilidade de vitória, empate e derrota saem da matriz conjunta P(home=i, away=j) somada por quadrante (i>j, i=j, i<j).

Cálculo dos gols esperados (λ)

base_rate    = league_avg_goals / 2          # ~1.30 em copas internacionais
home_str     = home_attack / base_rate       # 1.0 = mediano
away_def_str = away_defense / base_rate

elo_factor_home = 1 + (elo_home − elo_away) / 1700
                  → cap em [0.6, 1.65]

λ_home = base_rate × home_str × away_def_str × home_adv × elo_factor_home
λ_away = base_rate × away_str × home_def_str × elo_factor_away

O home advantage default é 1.30 em jogos com mando definido e 1.05 em campo neutro (Copa do Mundo, Champions League). λ é truncado em [0.2, 4.5] para evitar caudas patológicas com Elo extremo.

Exemplo: Brasil (Elo 2031) vs Sérvia (Elo 1798) em campo neutro

Vitória Brasil

47.2%

Empate

25.3%

Vitória Sérvia

27.5%

xG Brasil × Sérvia

1.55 × 1.12

Placar mais provável: 1-1 (12.0%) · Top 5 placares:

  • 1-1 (12.0%)
  • 1-0 (10.7%)
  • 2-1 (9.3%)
  • 2-0 (8.3%)
  • 0-1 (7.7%)

↳ Calculado em runtime por predictMatch() em src/lib/models/poisson.ts.

2. Win probability ao vivo

Durante a partida, atualizamos a probabilidade a cada minuto. A ideia: dado o placar atual e o tempo restante, qual a chance de o saldo de gols ainda mudar? Resposta: convolução de duas Poisson escaladas por tempo_restante / 90.

Win prob ao vivo

fração_restante = (90 − minuto_atual) / 90
λ_home_remain   = λ_home × fração_restante
λ_away_remain   = λ_away × fração_restante

P(vitória_home) = Σᵢ Σⱼ P(i; λ_home_remain) × P(j; λ_away_remain)
                  para todo (i, j) onde
                  (home_score + i) > (away_score + j)

Exemplo: Brasil 1×0 Sérvia, minuto 60'

Vitória Brasil

79.7%

Empate

16.9%

Virada Sérvia

3.5%

Gols restantes esperados: Brasil 0.52 · Sérvia 0.37

3. Agregador eleitoral — bayesiano ponderado

Cada pesquisa registrada no TSE entra com 4 ponderações:

  1. 1. Tamanho de amostra: peso ∝ √n (mais conservador que ∝ n — evita que uma pesquisa de 5 mil domine)
  2. 2. Recência: decay exponencial com half-life de 14 dias. Pesquisas com 30+ dias têm peso ~25% da atual.
  3. 3. Bias por instituto: subtraímos viés histórico conhecido (Datafolha tende a +0.5pp para Lula em alguns ciclos, Quaest -0.4pp para PT, etc. — atualizado após cada eleição).
  4. 4. Erro irredutível: mesmo com infinitas amostras, polls têm ±3pp de viés sistemático (turnout, undecided, frame timing). Adicionamos isso em quadratura ao SE.

Erro padrão final

σ_total² = σ_entre_pesquisas²
         + σ_amostragem²       (= p(1−p)/n)
         + σ_irredutível²      (= 3pp²)

Probabilidade de vitória: 10.000 simulações Monte Carlo com posterior Normal(μ, σ²) por candidato. Conta-se em quantas simulações cada candidato terminou em 1º lugar.

4. Probabilidade de campeão (Copa)

Simulamos 5.000 torneios completos partindo das 32 seleções classificadas. Em cada simulação, sorteamos o bracket e rodamos eliminatória direta usando o modelo Poisson em cada confronto (em mata-mata, empate vai para penaltis com 50/50). A probabilidade de campeão = quantas vezes a seleção venceu ÷ 5.000.

Versão atual: bracket sorteado uniformemente. Pós-MVP, vamos substituir pelo bracket real do sorteio FIFA quando publicado.

5. Limites conhecidos

  • O modelo Poisson assume independência entre gols — não é verdade em jogos com expulsões precoces ou time muito superior controlando o jogo.
  • O agregador eleitoral é tão bom quanto as pesquisas que consome. Movimentos abruptos (escândalo, debate, evento) demoram ~1 semana para refletir.
  • Calibração ainda em curso: documentaremos o Brier score e a calibração ao longo da Copa e da campanha eleitoral.
  • Os fatores Elo e os defaults de gols esperados são empíricos — quando tivermos 6+ meses de histórico de partidas via API-Football, recalibramos a partir do dado real.

Código aberto dos modelos: src/lib/models/ · poisson.ts · win-probability.ts · poll-aggregator.ts · championship.ts