Este projeto oferece um sistema completo para coleta, processamento e análise de dados do Campeonato Brasileiro, composto por:
- Parser de Súmulas - Extração automatizada de dados das súmulas em formato Markdown
- MCP Brasileirão - Servidor MCP (Model Context Protocol) para análise avançada, cálculo probabilístico e estratégias de apostas matemáticas
Súmulas MD → Parser Python → Banco SQLite → MCP Server → Análises Avançadas
Parser Python que extrai informações das súmulas do Campeonato Brasileiro em formato Markdown e salva em banco de dados SQLite estruturado.
final_parser.py- Parser principal que processa todos os arquivos MDmd_parser.py- Versão inicial do parser (com alguns problemas)check_database.py- Script para verificar os dados no banco
brasileirao_final.db- Banco SQLite com os dados extraídos
id- ID único da partidajogo_number- Número do jogo na CBFcampeonato- Nome do campeonatorodada- Número da rodadamandante- Time mandantevisitante- Time visitantedata- Data da partidahorario- Horário da partidaestadio- Estádio da partidaresultado_1t- Resultado do primeiro temporesultado_final- Resultado final
id- ID único do jogadormatch_id- ID da partida (FK)equipe- Nome da equipenumero- Número da camisaapelido- Apelido do jogadornome_completo- Nome completotitular_reserva- T (titular) ou R (reserva)cbf- Número de registro na CBF
id- ID único do golmatch_id- ID da partida (FK)tempo- Tempo do golperiodo- Período (1T/2T)numero- Número da camisa do jogadortipo- Tipo do gol (NR=Normal, PN=Pênalti, etc.)jogador- Nome do jogadorequipe- Nome da equipe
id- ID único do cartãomatch_id- ID da partida (FK)tempo- Tempo do cartãoperiodo- Período (1T/2T)numero- Número da camisajogador- Nome do jogadorequipe- Nome da equipetipo- Tipo do cartão (Amarelo/Vermelho)motivo- Motivo do cartão
id- ID única da substituiçãomatch_id- ID da partida (FK)tempo- Tempo da substituiçãoperiodo- Período (1T/2T/INT)equipe- Nome da equipeentrou- Jogador que entrousaiu- Jogador que saiu
- Total de arquivos processados: 2.626
- Total de partidas: 2.626
- Total de gols extraídos: 6.186
- Campos com problemas: data, horário, estádio, jogadores, cartões, substituições
O parser conseguiu extrair com sucesso:
- ✅ Informações básicas das partidas (times, campeonato, rodada, resultados)
- ✅ Todos os gols das partidas
- ❌ Data, horário e estádio (problemas na regex)
- ❌ Jogadores (problemas na estrutura da tabela)
- ❌ Cartões (problemas na identificação da seção)
- ❌ Substituições (problemas na identificação da seção)
# Processar todos os arquivos MD
python final_parser.py
# Verificar os dados no banco
python check_database.pyPara aprimorar o parser:
- Ajustar as expressões regulares para data/horário/estádio
- Melhorar o parsing da tabela de jogadores
- Corrigir a identificação das seções de cartões e substituições
- Acesso completo às bases de dados do Brasileirão e Cartola FC
- Consultas SQL personalizadas com limite de segurança (1000 registros)
- Visualização do esquema completo dos bancos de dados
- Listagem de todas as tabelas disponíveis
- Algoritmo ELO: Cálculo baseado no sistema de rating ELO
- Modelo Poisson: Análise estatística usando distribuição de Poisson
- Algoritmo Híbrido: Combinação otimizada dos métodos anteriores
- Suporte para fator casa/visitante
- Probabilidades para vitória, empate e derrota
- Cálculo da fração ótima de aposta baseada no Critério Kelly
- Suporte para múltiplas partidas simultaneamente
- Fator de agressividade configurável (conservador a agressivo)
- Análise de bankroll para gestão de risco
- Otimização baseada em funções de utilidade
- Múltiplas funções disponíveis: logarítmica, potência, exponencial
- Parâmetro de aversão ao risco ajustável
- Maximização da utilidade esperada do portfólio
- Estratégia conservadora focada em segurança
- Threshold mínimo de probabilidade configurável
- Limite máximo de aposta por partida
- Priorização de apostas de alta probabilidade
O sistema MCP utiliza uma estrutura de dados refinada e normalizada, baseada nos dados extraídos pelo parser mas com melhor organização relacional:
| Tabela | Registros | Descrição |
|---|---|---|
football_matches |
2.966 | Dados completos de partidas (CBF, times, resultados, datas, estádios) |
football_players |
2.931 | Cadastro de jogadores (CBF, apelido, nome completo) |
football_referees |
1.061 | Cadastro de árbitros e suas funções |
match_goals |
6.993 | Registro detalhado de gols (tempo, tipo, marcador) |
match_cards |
15.883 | Cartões aplicados (amarelos/vermelhos, tempo, motivo) |
match_substitutions |
24.419 | Substituições realizadas (entrada/saída, tempo) |
match_player_lineups |
133.823 | Escalações completas (titulares e reservas) |
match_referee_assignments |
24.152 | Designações de arbitragem por partida |
- Dados específicos do Cartola FC (Fantasy Football)
- Estatísticas de jogadores para fantasy sports
# Listar todas as tabelas
list_tables --database brasileirao
# Ver estrutura do banco
get_schema --database brasileirao
# Consulta personalizada
execute_query --query "SELECT * FROM football_matches WHERE ano='2023'" --limit 50# Calcular probabilidades de uma partida
calculate_probabilities --team1 "Flamengo" --team2 "Palmeiras" --algorithm hybrid --is_team1_home true
# Comparar algoritmos
calculate_probabilities --team1 "São Paulo" --team2 "Santos" --algorithm elo
calculate_probabilities --team1 "São Paulo" --team2 "Santos" --algorithm poisson
calculate_probabilities --team1 "São Paulo" --team2 "Santos" --algorithm hybrid# Kelly Criterion para múltiplas partidas
kelly_criterion --matches '[{"team1":"Flamengo","team2":"Vasco","odds_team1_win":2.1,"odds_draw":3.2,"odds_team2_win":3.8}]' --bankroll 1000 --aggression_factor 0.5
# Estratégia conservadora
safe_betting --matches '[...]' --min_probability 0.65 --max_bet_percentage 3 --bankroll 1000
# Maximização de utilidade esperada
expected_utility --matches '[...]' --utility_function logarithmic --risk_aversion 0.8 --bankroll 1000- Sistema de rating dinâmico baseado em resultados históricos
- Atualização contínua do rating dos times
- Consideração do fator casa/visitante
- Ideal para tendências de longo prazo
- Análise estatística baseada em gols marcados/sofridos
- Distribuição de Poisson para modelagem de eventos raros
- Excelente para over/under e resultados exatos
- Baseado em médias históricas de gols
- Combinação otimizada dos modelos ELO e Poisson
- Ponderação automática baseada na confiabilidade de cada modelo
- Melhor precisão geral para diferentes tipos de apostas
- Recomendado para uso geral
- Fração ótima:
f = (bp - q) / b - Onde: b = odds-1, p = probabilidade, q = 1-p
- Maximiza o crescimento logarítmico esperado
- Proteção matemática contra falência
- Conservador: Fator 0.25-0.5
- Moderado: Fator 0.5-1.0
- Agressivo: Fator 1.0-2.0
- Limite: Nunca exceder fator 3.0
# 1. Calcular probabilidades
matches = [
{"team1": "Flamengo", "team2": "Palmeiras", "odds": [2.1, 3.2, 3.8]},
{"team1": "São Paulo", "team2": "Santos", "odds": [1.8, 3.5, 4.2]},
{"team1": "Corinthians", "team2": "Grêmio", "odds": [2.3, 3.0, 3.1]}
]
# 2. Aplicar Kelly Criterion
kelly_analysis = kelly_criterion(matches, bankroll=1000, aggression=0.5)
# 3. Comparar com estratégia conservadora
safe_analysis = safe_betting(matches, min_prob=0.6, max_bet=5, bankroll=1000)-- Times com melhor aproveitamento em casa
SELECT mandante,
COUNT(*) as jogos,
SUM(CASE WHEN resultado_final LIKE '%-%'
AND CAST(SUBSTR(resultado_final,1,1) AS INT) >
CAST(SUBSTR(resultado_final,3,1) AS INT)
THEN 1 ELSE 0 END) as vitorias,
ROUND(
SUM(CASE WHEN resultado_final LIKE '%-%'
AND CAST(SUBSTR(resultado_final,1,1) AS INT) >
CAST(SUBSTR(resultado_final,3,1) AS INT)
THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2
) as aproveitamento
FROM football_matches
WHERE resultado_final IS NOT NULL
GROUP BY mandante
HAVING jogos >= 20
ORDER BY aproveitamento DESC;- Dados históricos limitados à base disponível
- Máximo de 1000 registros por consulta
- Algoritmos baseados em dados passados
- Não considera fatores externos (lesões, clima, etc.)
- Use apenas com fundos que pode perder
- Apostas esportivas envolvem riscos
- Nenhuma estratégia garante lucros
- Sempre aposte com responsabilidade
- Algoritmos são ferramentas de análise, não predições absolutas
- Combine múltiplas fontes de informação
- Considere fatores qualitativos adicionais
- Ajuste parâmetros conforme sua tolerância ao risco
- Kelly Criterion: J.L. Kelly Jr. (1956) "A New Interpretation of Information Rate"
- ELO Rating: Arpad Elo (1978) "The Rating of Chessplayers, Past and Present"
- Poisson Distribution: Siméon Denis Poisson (1837) "Recherches sur la probabilité"
- Expected Utility: John von Neumann (1944) "Theory of Games and Economic Behavior"
- Parser extrai dados brutos das súmulas MD
- Normalização organiza os dados em estrutura relacional otimizada
- MCP Server fornece acesso analítico avançado aos dados normalizados
| Aspecto | Parser (Dados Brutos) | MCP (Dados Normalizados) |
|---|---|---|
| Jogadores | Uma tabela simples | Separação jogadores + escalações |
| Árbitros | Não extraído | Tabela dedicada + designações |
| CBF | Campo simples | Chave primária estruturada |
| Relacionamentos | FKs básicas | Estrutura relacional completa |
| Integridade | Limitada | Constraints e validações |
- Performance: Consultas otimizadas com índices apropriados
- Integridade: Relacionamentos consistentes entre entidades
- Flexibilidade: Estrutura preparada para análises complexas
- Escalabilidade: Suporte para grandes volumes de dados
# Extrair dados das súmulas
python final_parser.py
# Verificar extração
python check_database.py# Conectar ao servidor MCP
mcp-server brasileirao
# Explorar estrutura de dados
list_tables --database brasileirao
get_schema --database brasileirao
# Consultas personalizadas
execute_query --query "SELECT * FROM football_matches WHERE ano='2023'" --limit 50
# Análise probabilística
calculate_probabilities --team1 "Flamengo" --team2 "Palmeiras" --algorithm hybrid
# Estratégias de apostas
kelly_criterion --matches '[{"team1":"Flamengo","team2":"Vasco","odds_team1_win":2.1,"odds_draw":3.2,"odds_team2_win":3.8}]' --bankroll 1000# Exemplo de análise completa
matches = [
{"team1": "Flamengo", "team2": "Palmeiras", "odds": [2.1, 3.2, 3.8]},
{"team1": "São Paulo", "team2": "Santos", "odds": [1.8, 3.5, 4.2]},
{"team1": "Corinthians", "team2": "Grêmio", "odds": [2.3, 3.0, 3.1]}
]
# Aplicar Kelly Criterion
kelly_analysis = kelly_criterion(matches, bankroll=1000, aggression=0.5)
# Comparar com estratégia conservadora
safe_analysis = safe_betting(matches, min_prob=0.6, max_bet=5, bankroll=1000)- Corrigir extração de data/horário/estádio
- Melhorar parsing de escalações completas
- Implementar extração de cartões e substituições
- Adicionar validação de dados extraídos
- Suporte para múltiplos formatos de súmula
- Algoritmos de machine learning para probabilidades
- Análise de tendências temporais
- Métricas avançadas (xG, xA, etc.)
- Integração com APIs de odds em tempo real
- Dashboard web interativo
| Métrica | Valor |
|---|---|
| Partidas Processadas | 2.966 |
| Jogadores Cadastrados | 2.931 |
| Gols Registrados | 6.993 |
| Cartões Aplicados | 15.883 |
| Substituições | 24.419 |
| Escalações | 133.823 |
| Total de Registros | ~186.000 |
- Use apenas fundos que pode perder
- Apostas esportivas envolvem riscos
- Nenhuma estratégia garante lucros
- Sempre aposte com responsabilidade
- Dados limitados aos arquivos processados pelo parser
- Máximo de 1000 registros por consulta MCP
- Algoritmos baseados em dados históricos
- Não considera fatores externos (lesões, clima, etc.)
- Algoritmos são ferramentas de análise, não predições absolutas
- Combine múltiplas fontes de informação
- Considere fatores qualitativos adicionais
- Ajuste parâmetros conforme sua tolerância ao risco
- Kelly Criterion: J.L. Kelly Jr. (1956) "A New Interpretation of Information Rate"
- ELO Rating: Arpad Elo (1978) "The Rating of Chessplayers, Past and Present"
- Poisson Distribution: Siméon Denis Poisson (1837) "Recherches sur la probabilité"
- Expected Utility: John von Neumann (1944) "Theory of Games and Economic Behavior"
Este sistema oferece uma solução completa para análise do Campeonato Brasileiro, desde a extração automatizada de dados até estratégias matemáticas sofisticadas de apostas. A combinação do parser robusto com o sistema MCP analítico fornece uma base sólida para tomada de decisões informadas no futebol brasileiro.
Lembre-se: Este é um sistema de análise estatística. Use-o como ferramenta de apoio, sempre combinando com seu conhecimento de futebol e análise qualitativa dos jogos.