Pular para o conteúdo
Data Science

Value Betting com IA: Como Encontrar Odds

Value betting não é sobre adivinhar quem ganha. É sobre encontrar odds que pagam mais do que deveriam. E machine learning é a melhor ferramenta pra isso —

TL;DR

Value Betting com IA: Como Encontrar Odds. Value betting não é sobre adivinhar quem ganha. É sobre encontrar odds que pagam mais do que deveriam. E machine learning é a melhor ferramenta pra isso — se você souber calibrar direito.

Se você já apostou em esportes, provavelmente fez do jeito errado. Não é ofensa — quase todo mundo faz. A maioria aposta no time que acha que vai ganhar. O problema? Isso ignora completamente o preço que você tá pagando.

Value betting muda a lógica inteira. Você não precisa acertar mais do que erra. Precisa apostar quando o preço tá errado a seu favor. É a mesma lógica de comprar ações subvalorizadas — só que aplicada a odds esportivas.

O que é value betting e por que funciona

Imagina que você tem uma moeda honesta. Cara ou coroa, 50/50. Alguém te oferece pra apostar R$ 10 que vai dar cara, e se acertar recebe R$ 25. A odd implícita é de 40% (10/25), mas a probabilidade real é 50%. Essa diferença de 10 pontos percentuais é o seu edge. Faz essa aposta mil vezes e você lucra.

No esporte é a mesma coisa, só que ninguém te mostra a moeda. Você precisa estimar a probabilidade real por conta própria. E é aí que o machine learning brilha.

Por que as casas de apostas erram nas odds?

As casas não erram tanto assim — mas erram o suficiente pra dar oportunidades. Isso acontece por três motivos: o volume de jogos é gigantesco e elas não conseguem modelar tudo com a mesma precisão; o público apostador influencia as odds (se todo mundo aposta no Flamengo, a odd cai mesmo que não devesse); e mercados de ligas menores recebem menos atenção e menos calibração.

Tipo, a odd de Real Madrid vs Barcelona vai ser precisa. A casa gastou horas nela. Mas a odd de Avaí vs Brusque na Série B? Provavelmente gerada por um modelo genérico com pouca revisão humana. É ali que mora a oportunidade.

Expected Value — a métrica que importa

Expected Value (EV) é o conceito mais importante de value betting. Se você não entende EV, tá apostando no escuro. A fórmula é simples.

plaintext
EV = (Probabilidade Real × Lucro se Ganhar) - (Probabilidade de Perder × Valor Apostado)

Exemplo:
- Probabilidade real (seu modelo): 55%
- Odds oferecidas: 2.10
- Aposta: R$ 100

EV = (0.55 × R$110) - (0.45 × R$100)
EV = R$60.50 - R$45.00
EV = +R$15.50

EV positivo = value bet. Cada vez que você faz essa aposta, espera ganhar R$15.50 em média.

O ponto é: você não precisa acertar essa aposta específica. Precisa fazer centenas de apostas com EV positivo. A lei dos grandes números faz o trabalho pesado. É igual cassino — o cassino não ganha todas as mãos, mas ganha no longo prazo porque tem edge.

Machine learning aplicado a odds esportivas

Beleza, a teoria é linda. Mas como você calcula a probabilidade real? Esse é o pulo do gato. Dá pra usar desde modelos simples até redes neurais profundas. Na minha experiência, modelos mais simples e bem calibrados ganham de modelos complexos com calibração ruim.

Modelos que funcionam na prática

Ranking de modelos por custo-benefício

  • Regressão logística: simples, rápida, surpreendentemente boa quando as features são boas. Primeiro modelo que você deve testar.
  • XGBoost / LightGBM: melhor performance geral. Captura interações não-lineares que logística perde. Meu favorito.
  • Random Forest: robusto contra overfitting, bom baseline. Calibração é mais fácil que em boosting.
  • Redes neurais: só se você tiver muitos dados (50k+ jogos) e paciência pra tunar. Pra maioria dos casos, é overkill.
  • Modelo de Poisson: clássico pra futebol. Modela gols marcados/sofridos e calcula probabilidades a partir disso. Simples e interpretável.

Construindo um detector de value bets

Vamos montar o pipeline completo. Da coleta de dados até o detector funcionando.

Pipeline de dados

  1. Colete dados históricos: resultados de jogos, odds de fechamento, estatísticas dos times. Football-Data.co.uk e FBref são ótimas fontes gratuitas.
  2. Monte as features: xG médio, forma recente, H2H, posição na tabela, odds de mercado como feature. Crie features separadas pra casa e fora.
  3. Treine o modelo: use TimeSeriesSplit, nunca split aleatório. Treina no passado, valida no futuro.
  4. Calibre as probabilidades: CalibratedClassifierCV com método isotonic. Teste com reliability diagrams.
  5. Defina o threshold de value: comece com edge mínimo de 5%. Odds de 2.0 com probabilidade real de 55% = edge de 5%.
  6. Rode em modo paper trading por 2-4 semanas antes de arriscar dinheiro real.

Seleção de features que realmente funcionam

Testei dezenas de features ao longo dos meses. Algumas que parecem óbvias não adicionam nada (tipo média de gols bruta). Outras que parecem estranhas funcionam bem.

python
FEATURES_QUE_FUNCIONAM = {
    # Tier 1 — maior impacto
    "market_implied_prob": "Probabilidade implícita no consenso de odds (média de 5+ casas)",
    "home_xg_rolling_10": "xG médio dos últimos 10 jogos em casa",
    "away_xg_rolling_10": "xG médio dos últimos 10 jogos fora",
    
    # Tier 2 — impacto moderado
    "form_points_5": "Pontos nos últimos 5 jogos (casa/fora separado)",
    "table_position_diff": "Diferença de posição na tabela",
    "h2h_home_win_rate": "Taxa de vitória do mandante nos últimos confrontos",
    
    # Tier 3 — impacto menor mas ajuda
    "rest_days_diff": "Diferença de dias de descanso",
    "goals_conceded_rolling": "Gols sofridos média móvel 10 jogos",
    "season_stage": "Começo/meio/fim do campeonato (comportamento muda)"
}

FEATURES_QUE_NAO_ADICIONAM_NADA = [
    "média de gols bruta da temporada",
    "resultado do último jogo isolado",
    "preço do elenco (correlação muito fraca)",
    "clima (exceto em condições extremas)"
]

Calibração — o segredo que separa lucro de prejuízo

Calibração é tão importante que merece uma seção só dela. Um modelo calibrado que prevê 60% de chance acerta perto de 60% das vezes quando faz essa previsão. Modelos mal calibrados acham que tudo tem 80% de chance e inflam o edge artificialmente.

python
from sklearn.calibration import calibration_curve
import matplotlib.pyplot as plt

def plot_calibration(y_true, y_prob, n_bins=10):
    """Reliability diagram — visual pra avaliar calibração."""
    fraction_positive, mean_predicted = calibration_curve(
        y_true, y_prob, n_bins=n_bins, strategy="uniform"
    )
    
    plt.figure(figsize=(8, 6))
    plt.plot([0, 1], [0, 1], "k--", label="Perfeitamente calibrado")
    plt.plot(mean_predicted, fraction_positive, "s-", label="Seu modelo")
    plt.xlabel("Probabilidade prevista")
    plt.ylabel("Frequência observada")
    plt.title("Reliability Diagram")
    plt.legend()
    plt.grid(True, alpha=0.3)
    plt.show()

Se o gráfico mostra pontos acima da diagonal, seu modelo tá subestimando as probabilidades. Abaixo, tá superestimando. O ideal é ficar grudado na diagonal. Calibração isotônica geralmente resolve, mas verifique com dados que o modelo nunca viu.

Kelly Criterion — quanto apostar em cada value bet

Encontrou um value bet. Ótimo. Agora quanto apostar? Apostar tudo é loucura. Apostar muito pouco desperdiça o edge. Kelly Criterion resolve esse problema matematicamente.

python
def kelly_stake(prob: float, odds: float, bankroll: float, fraction: float = 0.25) -> float:
    """Calcula stake ótimo pelo Kelly Criterion fracionário."""
    edge = prob * odds - 1
    if edge <= 0:
        return 0.0
    
    kelly_full = edge / (odds - 1)
    kelly_fractional = kelly_full * fraction  # 1/4 Kelly é mais seguro
    
    stake = bankroll * kelly_fractional
    max_stake = bankroll * 0.03  # nunca mais que 3% do bankroll
    return min(stake, max_stake)

# Exemplo:
# prob=0.55, odds=2.10, bankroll=R$5000
# kelly_stake(0.55, 2.10, 5000, 0.25) = R$59.66

Por que usar 1/4 Kelly e não Kelly completo

Kelly completo maximiza o crescimento do bankroll no longo prazo, mas a volatilidade é insana. Drawdowns de 50-70% são comuns. Na prática, ninguém aguenta isso emocionalmente.

1/4 Kelly reduz a volatilidade drasticamente, sacrificando pouco do crescimento. É o sweet spot que a maioria dos profissionais usa. Alguns usam 1/2 Kelly se forem mais agressivos.

Resultados de um experimento real

Rodei um detector de value bets por 4 meses no Brasileirão Série A e B. Modelo XGBoost calibrado, edge mínimo de 5%, 1/4 Kelly. Aqui vão os números reais — sem maquiar.

Números do experimento (4 meses)

  • Total de apostas: 847
  • Win rate: 46.3% (normal pra value betting — você perde mais do que ganha em quantidade)
  • ROI sobre stakes: +4.7% (cada R$ 100 apostado retornou R$ 104.70 em média)
  • Máximo drawdown: -12.4% do bankroll (aconteceu no mês 2, recuperou no mês 3)
  • Melhor mês: +8.2% do bankroll
  • Pior mês: -5.1% do bankroll
  • Yield por liga: Série B (+6.8%) superou Série A (+2.1%) — menos eficiência no mercado

Nada espetacular. Mas lembra: 4.7% de ROI consistente é melhor que 95% dos apostadores. O ponto é que value betting não é esquema pra ficar rico rápido. É uma operação de longo prazo com retornos modestos mas consistentes — se o modelo tiver bom.

Perguntas frequentes

Preciso saber programar pra fazer value betting?

Não obrigatoriamente. Existem ferramentas prontas como RebelBetting e Trademate que detectam value bets pra você. Mas se quiser personalizar o modelo, controlar as features e ter edge de verdade, Python é o caminho.

Quanto tempo leva pra saber se o modelo funciona?

No mínimo 500 apostas pra ter significância estatística razoável. Com 3-5 apostas por dia, isso dá uns 3-4 meses. Antes disso, qualquer resultado (positivo ou negativo) pode ser variância pura.

Value betting é a mesma coisa que arbitragem?

Não. Arbitragem é lucro garantido (sem risco) apostando em todos os outcomes em casas diferentes quando as odds permitem. Value betting tem risco — você pode perder apostas individuais. A diferença é que arbitragem tem margens minúsculas e precisa de muito capital, enquanto value betting tem margens maiores mas com variância.

As casas vão limitar minha conta?

Provavelmente sim, se você lucrar consistentemente. Casas como Bet365 e Betano são conhecidas por limitar apostadores vencedores. Betfair Exchange é mais tolerante porque o modelo deles é diferente — eles ganham comissão, não na sua perda. Diversificar entre casas ajuda, mas eventualmente limitações vão aparecer.