Skip to content

BrunnoPigatto/brasileirao

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sistema Completo de Análise do Brasileirão

📊 Visão Geral

Este projeto oferece um sistema completo para coleta, processamento e análise de dados do Campeonato Brasileiro, composto por:

  1. Parser de Súmulas - Extração automatizada de dados das súmulas em formato Markdown
  2. MCP Brasileirão - Servidor MCP (Model Context Protocol) para análise avançada, cálculo probabilístico e estratégias de apostas matemáticas

🔄 Fluxo do Sistema

Súmulas MD → Parser Python → Banco SQLite → MCP Server → Análises Avançadas

📄 Parser de Súmulas do Brasileirão

Descrição

Parser Python que extrai informações das súmulas do Campeonato Brasileiro em formato Markdown e salva em banco de dados SQLite estruturado.

Arquivos do Parser

Scripts Principais

  • final_parser.py - Parser principal que processa todos os arquivos MD
  • md_parser.py - Versão inicial do parser (com alguns problemas)
  • check_database.py - Script para verificar os dados no banco

Banco de Dados Gerado

  • brasileirao_final.db - Banco SQLite com os dados extraídos

Estrutura Original do Banco (Parser)

Tabela matches

  • id - ID único da partida
  • jogo_number - Número do jogo na CBF
  • campeonato - Nome do campeonato
  • rodada - Número da rodada
  • mandante - Time mandante
  • visitante - Time visitante
  • data - Data da partida
  • horario - Horário da partida
  • estadio - Estádio da partida
  • resultado_1t - Resultado do primeiro tempo
  • resultado_final - Resultado final

Tabela jogadores

  • id - ID único do jogador
  • match_id - ID da partida (FK)
  • equipe - Nome da equipe
  • numero - Número da camisa
  • apelido - Apelido do jogador
  • nome_completo - Nome completo
  • titular_reserva - T (titular) ou R (reserva)
  • cbf - Número de registro na CBF

Tabela gols

  • id - ID único do gol
  • match_id - ID da partida (FK)
  • tempo - Tempo do gol
  • periodo - Período (1T/2T)
  • numero - Número da camisa do jogador
  • tipo - Tipo do gol (NR=Normal, PN=Pênalti, etc.)
  • jogador - Nome do jogador
  • equipe - Nome da equipe

Tabela cartoes

  • id - ID único do cartão
  • match_id - ID da partida (FK)
  • tempo - Tempo do cartão
  • periodo - Período (1T/2T)
  • numero - Número da camisa
  • jogador - Nome do jogador
  • equipe - Nome da equipe
  • tipo - Tipo do cartão (Amarelo/Vermelho)
  • motivo - Motivo do cartão

Tabela substituicoes

  • id - ID única da substituição
  • match_id - ID da partida (FK)
  • tempo - Tempo da substituição
  • periodo - Período (1T/2T/INT)
  • equipe - Nome da equipe
  • entrou - Jogador que entrou
  • saiu - Jogador que saiu

Resultados do Processamento

  • 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

Status da Extração

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)

Como Usar o Parser

# Processar todos os arquivos MD
python final_parser.py

# Verificar os dados no banco
python check_database.py

Melhorias Necessárias

Para aprimorar o parser:

  1. Ajustar as expressões regulares para data/horário/estádio
  2. Melhorar o parsing da tabela de jogadores
  3. Corrigir a identificação das seções de cartões e substituições

🎯 MCP Brasileirão - Sistema de Análise

Principais Funcionalidades

1. Consulta de Dados

  • 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

2. Análise Probabilística de Partidas

  • 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

3. Estratégias de Apostas Matemáticas

Kelly Criterion

  • 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

Expected Utility Maximization

  • 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

Safe Betting Strategy

  • 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

📋 Estrutura dos Dados (MCP - Versão Normalizada)

O sistema MCP utiliza uma estrutura de dados refinada e normalizada, baseada nos dados extraídos pelo parser mas com melhor organização relacional:

Base de Dados: brasileirao

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

Base de Dados: cartola

  • Dados específicos do Cartola FC (Fantasy Football)
  • Estatísticas de jogadores para fantasy sports

🔧 Comandos Principais

Consultas Básicas

# 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

Análise de Probabilidades

# 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

Estratégias de Apostas

# 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

📈 Algoritmos de Probabilidade

ELO Rating System

  • 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

Modelo Poisson

  • 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

Algoritmo Híbrido

  • 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

💰 Gestão de Bankroll

Critério Kelly

  • 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

Fatores de Risco

  • Conservador: Fator 0.25-0.5
  • Moderado: Fator 0.5-1.0
  • Agressivo: Fator 1.0-2.0
  • Limite: Nunca exceder fator 3.0

🎲 Exemplos Práticos

Análise Completa de Uma Rodada

# 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)

Consulta de Estatísticas Históricas

-- 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;

⚠️ Considerações Importantes

Limitações

  • 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.)

Responsabilidade

  • Use apenas com fundos que pode perder
  • Apostas esportivas envolvem riscos
  • Nenhuma estratégia garante lucros
  • Sempre aposte com responsabilidade

Precisão dos Modelos

  • 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

📚 Referências Técnicas

  • 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"

🔗 Integração Parser ↔ MCP

Fluxo de Dados

  1. Parser extrai dados brutos das súmulas MD
  2. Normalização organiza os dados em estrutura relacional otimizada
  3. MCP Server fornece acesso analítico avançado aos dados normalizados

Diferenças Estruturais

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

Benefícios da Normalização

  • 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

🚀 Como Usar o Sistema Completo

1. Processamento Inicial (Parser)

# Extrair dados das súmulas
python final_parser.py

# Verificar extração
python check_database.py

2. Análise Avançada (MCP)

# 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

3. Análise Completa de Uma Rodada

# 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)

⚙️ Roadmap de Melhorias

Parser (Próximas Versões)

  • 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

MCP (Funcionalidades Futuras)

  • 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

📊 Estatísticas do Sistema

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

⚠️ Considerações Importantes

Responsabilidade em Apostas

  • Use apenas fundos que pode perder
  • Apostas esportivas envolvem riscos
  • Nenhuma estratégia garante lucros
  • Sempre aposte com responsabilidade

Limitações Técnicas

  • 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.)

Precisão dos Modelos

  • 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

📚 Referências Técnicas

  • 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"

🏆 Conclusão

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors