Análise Estatística de Futebol com Python:
Os três modelos estatísticos que casas de apostas usam pra precificar odds de futebol — explicados com código Python funcional e exemplos reais do Brasileirão.
Por que esses 3 modelos importam
Análise Estatística de Futebol com Python:. Os três modelos estatísticos que casas de apostas usam pra precificar odds de futebol — explicados com código Python funcional e exemplos reais do Brasileirão.
Os 3 modelos que as casas de apostas usam
Galera, se você acha que casas de apostas definem odds olhando pra torcida ou pra fase do time, está enganado. Os departamentos de trading das casas grandes como Pinnacle, Bet365 e Betfair usam modelos quantitativos pra precificar cada mercado. Os três pilares pra futebol são:
Primeiro, a distribuição de Poisson — que modela a quantidade de gols que cada time deve fazer num jogo. Segundo, o sistema ELO — que mede a força relativa de cada time com base nos resultados recentes. Terceiro, o Expected Goals (xG) — que avalia a qualidade das chances criadas, não só o resultado final.
Nenhum modelo sozinho é perfeito. A Poisson ignora contexto tático. O ELO não diferencia uma vitória dominante de uma vitória no sufoco. O xG depende de dados detalhados que nem sempre estão disponíveis. Mas combinados, eles formam uma base analítica sólida. E o melhor: dá pra implementar tudo em Python com menos de 200 linhas de código.
Poisson
Modela a probabilidade de cada placar possível baseado na média de gols.
Prós
- Simples de implementar — uma fórmula
- Funciona bem pra mercados de over/under e placar exato
- Precisa só de média de gols como input
Contras
- Assume que gols são eventos independentes (não são sempre)
- Não captura contexto tático ou emocional
- Superestima empates em jogos de times muito desiguais
ELO Rating
Sistema de ranking que atualiza a força do time a cada resultado.
Prós
- Captura momentum e forma recente
- Ajusta automaticamente pra mandante vs visitante
- Funciona com dados mínimos — só precisa dos resultados
Contras
- Não modela placares, só quem ganha
- Sensível à escolha do K-factor
- Lento pra reagir a mudanças bruscas de elenco
Expected Goals (xG)
Mede a qualidade das finalizações, não só a quantidade de gols.
Prós
- Melhor preditor de performance futura que gols reais
- Detecta times que estão rendendo acima ou abaixo do esperado
- Usado por todos os grandes clubes europeus
Contras
- Requer dados granulares (posição do chute, ângulo, etc.)
- Modelos de xG variam entre provedores — não existe um padrão único
- Dados gratuitos são limitados (StatsBomb é uma exceção)
Poisson para previsão de gols
A ideia da Poisson é simples: se um time marca em média 1.5 gols por jogo em casa, qual a probabilidade de ele marcar 0, 1, 2, 3 ou mais gols? A distribuição de Poisson responde exatamente isso. É uma distribuição de probabilidade discreta que modela o número de vezes que um evento raro ocorre num intervalo fixo.
Pra futebol: o evento raro é gol, o intervalo fixo é 90 minutos. A fórmula é P(k) = (lambda^k * e^(-lambda)) / k!, onde lambda é a média de gols esperados e k é o número de gols que você quer calcular a probabilidade.
Implementação Python
As fair odds calculadas pela Poisson são as odds sem margem — a odd justa matematicamente. Se a casa oferece uma odd maior que a fair odd, você tem um value bet. Se oferece menor, a casa tem vantagem. Simples assim. Compare essas fair odds com as odds reais do mercado e você tem seu primeiro sinal de trading.
ELO adaptado para futebol
O sistema ELO foi criado pro xadrez — pra ranquear jogadores com base nos resultados dos jogos. A adaptação pro futebol funciona assim: cada time começa com um rating (geralmente 1500), e a cada jogo o rating é ajustado com base no resultado e na expectativa prévia.
Se o Flamengo, com rating 1700, ganha de um time com rating 1400, o ajuste é pequeno — o resultado era esperado. Mas se o time de rating 1400 ganha do Flamengo, o ajuste é grande — resultado surpreendente. É assim que o sistema captura a forma recente dos times.
Implementação do ELO
O K-factor controla a velocidade de reação do sistema. K=20 é conservador — o sistema muda devagar. K=40 é mais agressivo — reage rápido a resultados recentes. Pra futebol brasileiro, K entre 30 e 40 funciona bem porque o campeonato tem viradas de forma mais bruscas que ligas europeias.
O home_advantage é um bônus fixo de ELO dado ao mandante. No futebol brasileiro, mando de campo vale bastante — algo entre 60 e 100 pontos de ELO, dependendo do estádio e da torcida. Time grande jogando no Maracanã lotado é diferente de time jogando em estádio vazio.
xG: Expected Goals explicado
O xG é a métrica que mais mudou a análise de futebol nos últimos 10 anos. A ideia: nem todo chute é igual. Um chute de dentro da pequena área, sem marcação, tem 70% de chance de virar gol. Um chute de 30 metros, com dois zagueiros na frente, tem 3%. O xG atribui um valor de probabilidade pra cada finalização baseado na posição, ângulo, tipo de passe anterior, parte do corpo usada e outros fatores.
Por que isso importa pra apostas? Porque gols são voláteis. Um time pode dominar o jogo, criar 2.5 xG de chances, e perder de 1x0 com um contra-ataque do adversário que tinha 0.3 xG. No curto prazo, isso acontece o tempo todo. Mas no longo prazo, o xG converge com os gols reais. Então se um time tem xG consistentemente alto mas poucos gols, a tendência é que a performance real se aproxime do xG — e vice-versa.
Onde conseguir dados de xG
A StatsBomb libera dados gratuitos de xG pra competições selecionadas via GitHub (statsbomb/open-data). A FBref tem xG de todas as grandes ligas europeias e do Brasileirão, acessível via scraping. A Understat tem uma API não-oficial que retorna xG por jogo pra as 5 grandes ligas. Pra começar, FBref é a melhor opção — dados mais completos e atualizados.
Times com muitos gols acima do xG tendem a regredir — vão começar a fazer menos gols do que o ritmo atual. Times com poucos gols em relação ao xG tendem a melhorar — a qualidade das chances está lá, os gols vão aparecer. Essa análise de regressão à média é uma das formas mais confiáveis de encontrar value bets no mercado de over/under e resultado.
Ensemble: combinando os 3 modelos
Usar um modelo só é limitante. A mágica acontece quando você combina os três. A técnica mais simples é fazer uma média ponderada das probabilidades de cada modelo. Mas os pesos não devem ser iguais — eles devem refletir a precisão histórica de cada modelo.
O ensemble consistentemente supera qualquer modelo individual em backtests. No futebol brasileiro, pesos na faixa de 30-35% Poisson, 25-30% ELO e 35-40% xG têm dado os melhores resultados — mas isso varia por competição e temporada. A calibração periódica é o que garante que os pesos continuem fazendo sentido.
Com as fair odds do ensemble calculadas, compare com as odds do mercado usando o dashboard (artigo sobre React + Chart.js) e receba alertas quando detectar valor usando o bot de Telegram. Os três artigos juntos formam um sistema completo.
Monte seu pipeline de análise completo
Esses modelos são a base. Pra ir além, conecte com o dashboard de React pra visualizar as previsões, use o bot de Telegram pra receber alertas de value bets, e aplique gestão de banca com o Critério de Kelly pra definir quanto apostar em cada oportunidade. Cada peça do sistema potencializa as outras. A CrazyStack ensina a construir sistemas desse nível com Node.js, React e Python.
Continue lendo
Dashboard de Apostas Esportivas com React e Chart.js
Dashboard interativo para visualizar odds e arbitragens em tempo real
Gestão de Banca: Critério de Kelly e Stake Management com Python
Critério de Kelly, flat betting e gestão de banca com código Python
10 bugs mais caros
Bugs que custaram bilhões
Integer overflow
O bug que derruba sistemas