backtest histórico — 3 estratégias

Estratégia 1 — AH -0.5 Mandante em Necessidade

vitória do mandante · odd típica 1.40–1.55

Filtro: mandante com necessidade alta (nq_home) + favorito pelo Elo + forma ofensiva superior ao visitante. Yield calculado usando o preço soft disponível.

FiltroN jogosAcerto% Odd Justa médiaYield (soft)
nq>0.3 + elo>100 + forma 273 74.0% 1.415 +5.95%
nq>0.3 + elo>100 625 70.7% 1.464 +4.97%
nq>0.5 + elo>100 + forma 156 72.4% 1.411 +3.59%
nq>0.3 + elo>150 437 72.3% 1.406 +2.50%
nq>0.5 + elo>50 446 69.3% 1.529 +8.44%

Últimos 20 jogos — nq>0.3 + elo>100 + forma

DataJogoLiganqelo ΔOdd JRes
2026-05-30 Flamengo RJ vs Coritiba Serie A 0.480 235 None ✓ H
2026-05-17 Ath Madrid vs Girona La Liga 1.587 176 None ✓ H
2026-05-17 Lille vs Auxerre Ligue 1 0.769 168 None ✗ A
2026-05-16 Leverkusen vs Hamburg Bundesliga 0.378 206 None ✗ D
2026-05-09 Liverpool vs Chelsea Premier League 1.740 111 None ✗ D
2026-05-09 Hoffenheim vs Werder Bremen Bundesliga 0.764 101 None ✓ H
2026-05-09 RB Leipzig vs St Pauli Bundesliga 0.737 236 None ✓ H
2026-05-09 Ath Madrid vs Celta La Liga 1.547 138 None ✗ A
2026-05-03 Lille vs Le Havre Ligue 1 1.433 209 None ✗ D
2026-04-27 Fluminense vs Chapecoense-SC Serie A 0.423 276 None ✓ H
2026-04-26 Stuttgart vs Werder Bremen Bundesliga 0.671 165 None ✗ D
2026-04-26 Villarreal vs Celta La Liga 0.410 114 None ✓ H
2026-04-25 Ath Madrid vs Ath Bilbao La Liga 1.357 114 None ✓ H
2026-04-24 RB Leipzig vs Union Berlin Bundesliga 0.360 213 None ✓ H
2026-04-19 Flamengo RJ vs Bahia Serie A 0.584 143 None ✓ H
2026-04-18 Lille vs Nice Ligue 1 0.668 137 None ✗ D
2026-04-18 Leverkusen vs Augsburg Bundesliga 0.346 232 None ✗ A
2026-04-11 RB Leipzig vs M'gladbach Bundesliga 1.231 163 None ✓ H
2026-04-10 Marseille vs Metz Ligue 1 1.208 279 None ✓ H
2026-04-04 Leverkusen vs Wolfsburg Bundesliga 0.302 235 None ✓ H

Leitura

nq_home mede pressão de necessidade: times que precisam de pontos (disputa por título, rebaixamento) × vantagem Elo × progresso da temporada.


elo_diff > 100 = mandante tem ~60–65% de probabilidade real de vitória segundo o Elo.


Yield positivo significa que o filtro identifica jogos onde o mandante ganha MAIS do que a Pinnacle implica, e o preço soft paga acima do justo.


Atenção: com elo_diff > 200, a Pinnacle já incorpora toda a vantagem e oferece odds abaixo do break-even — yield negativo.

Estratégia 2 — BTTS (Ambas Marcam)

mercado BTTS Sim · odd típica 1.75–1.90

Filtros testados em combinação: média de gols marcados e sofridos dos últimos 5 jogos, equilíbrio entre times, recorte por liga. Yield estimado para odds de 1.85 e 1.75 (não temos BTTS odds nos dados históricos).

FiltroN jogosBTTS% Odd break-evenYield @1.85Yield @1.75
Bundesliga + ambos + elo<150 163 65.6% 1.523 +21.44% +14.88%
Bundesliga + hgf5>1.5 + agf5>1.5 455 63.7% 1.569 +17.91% +11.54%
PL+Bundesliga + hgf5>1.5 + agf5>1.5 907 60.4% 1.655 +11.78% +5.73%
Bundesliga geral 1985 59.3% 1.686 +9.70% +3.77%
ambos ataque+defesa + elo<150 587 57.2% 1.747 +5.89% +0.17%

Últimos 20 jogos — Bundesliga + h_gf5>1.5 + a_gf5>1.5

DataJogoPlacarhgf5agf5BTTS
2026-05-16 Union Berlin vs Augsburg 4:0 1.60 2.20 ✗ não
2026-05-16 Bayern Munich vs FC Koln 5:1 3.40 1.60 ✓ sim
2026-05-10 FC Koln vs Heidenheim 1:3 1.80 2.20 ✓ sim
2026-05-09 Stuttgart vs Leverkusen 3:1 2.00 2.80 ✓ sim
2026-05-02 Bayern Munich vs Heidenheim 3:3 4.00 2.20 ✓ sim
2026-05-02 Leverkusen vs RB Leipzig 4:1 2.60 2.80 ✓ sim
2026-04-25 FC Koln vs Leverkusen 1:2 2.00 2.40 ✓ sim
2026-04-19 Freiburg vs Heidenheim 2:1 1.60 2.00 ✓ sim
2026-04-19 Bayern Munich vs Stuttgart 4:2 3.40 2.40 ✓ sim
2026-04-19 M'gladbach vs Mainz 1:1 1.60 1.60 ✓ sim
2026-04-18 Hoffenheim vs Dortmund 2:1 1.60 1.80 ✓ sim
2026-04-11 Dortmund vs Leverkusen 0:1 2.20 2.80 ✗ não
2026-04-11 RB Leipzig vs M'gladbach 1:0 2.20 1.80 ✗ não
2026-04-04 M'gladbach vs Heidenheim 2:2 1.60 1.60 ✓ sim
2026-04-04 Werder Bremen vs RB Leipzig 1:2 1.60 2.20 ✓ sim
2026-04-04 Stuttgart vs Dortmund 0:2 3.00 2.20 ✗ não
2026-03-20 RB Leipzig vs Hoffenheim 5:0 1.60 2.00 ✗ não
2026-03-15 Stuttgart vs RB Leipzig 1:0 2.60 2.00 ✗ não
2026-03-14 Leverkusen vs Bayern Munich 1:1 1.80 3.60 ✓ sim
2026-03-07 RB Leipzig vs Augsburg 2:1 1.80 1.60 ✓ sim

Leitura

Bundesliga tem a maior taxa histórica de BTTS (59.8%) entre as 5 ligas europeias — estilo de jogo mais ofensivo.


h_gf5 > 1.5 = mandante marcou em média mais de 1.5 gols nos últimos 5 jogos. Mesmo filtro para o visitante (a_gf5).


63.7% BTTS com n=455 é o melhor filtro com amostra >300. A odd de break-even é 1.569 — qualquer BTTS Sim acima disso gera EV positivo.


Importante: yield é estimado — precisamos de odds reais de BTTS para calcular CLV.

Estratégia 3 — Score Composto (Mandante Forte em Casa)

vitória do mandante · top 20% do score

Score = nq_home × 0.4 + h_gf5 × 0.3 − a_gf5 × 0.3 + elo_norm × 0.3 — combina necessidade, forma ofensiva e diferença de qualidade. Top 20% dos jogos por score (threshold ≈ 0.43).

FiltroN jogosAcerto% Odd Justa médiaYield (soft)
Top 20% — geral 3353 66.6% 1.531 +5.15%
Top 20% — La Liga 491 73.3% 1.464 +13.84%
Top 20% — Bundesliga 452 67.7% 1.524 +4.83%
Top 20% — Serie A 1399 64.7% 1.548 +4.64%
Decil 10 (score>0.70) 1676 70.6% 1.418 +2.36%

Últimos 20 jogos — top 20% do score composto

DataJogoLigaScoreRes
2026-05-31 Palmeiras vs Chapecoense-SC Serie A 1.014 ✓ H
2026-05-30 Flamengo RJ vs Coritiba Serie A 0.685 ✓ H
2026-05-24 Milan vs Cagliari Serie A 1.143 ✗ A
2026-05-24 Villarreal vs Ath Madrid La Liga 0.520 ✓ H
2026-05-24 Man City vs Aston Villa Premier League 0.463 ✗ A
2026-05-24 Cruzeiro vs Chapecoense-SC Serie A 0.677 ✓ H
2026-05-24 Napoli vs Udinese Serie A 0.701 ✓ H
2026-05-24 Liverpool vs Brentford Premier League 0.671 ✗ D
2026-05-23 Lazio vs Pisa Serie A 0.791 ✓ H
2026-05-23 Real Madrid vs Ath Bilbao La Liga 0.563 ✓ H
2026-05-18 Arsenal vs Burnley Premier League 1.208 ✓ H
2026-05-17 Botafogo RJ vs Corinthians Serie A 0.652 ✓ H
2026-05-17 Lyon vs Lens Ligue 1 0.782 ✗ A
2026-05-17 Inter vs Verona Serie A 1.867 ✗ D
2026-05-17 Roma vs Lazio Serie A 0.936 ✓ H
2026-05-17 Udinese vs Cremonese Serie A 0.654 ✗ A
2026-05-17 Juventus vs Fiorentina Serie A 1.269 ✗ A
2026-05-17 Lille vs Auxerre Ligue 1 0.583 ✗ A
2026-05-17 Ath Madrid vs Girona La Liga 1.288 ✓ H
2026-05-17 Bahia vs Gremio Serie A 0.448 ✗ D

Leitura

Score alto = mandante com necessidade, ataque em forma, visitante defensivamente fraco, e Elo superior.


La Liga top 20% se destaca: 73.3% de acerto, yield +13.84% — possível viés estrutural da liga.


Decil 10 (score > 0.70): n=1.676, acerto=70.6%, mas yield menor (+2.36%) porque Pinnacle já precifica bem favoritos fortes.


Melhor janela: decil 9 (score 0.43–0.70): n=1.676, acerto=62.6%, yield=+6.96% — mandante favorito moderado que Pinnacle sub-precia ligeiramente.

Aviso de overfitting (S1/S2/S3): Estes filtros foram otimizados nos dados históricos disponíveis — os mesmos dados usados para testá-los. Isso introduz otimismo. Para validação real, aplique somente em jogos futuros com odds ao vivo. Próximo passo: conectar get_odds_df() em calc_value_signals.py a um feed de odds ao vivo e acompanhar o CLV real das apostas.

M1 — Over 1.5 Gols

odd estimada 1.30 · mercado principal: Bundesliga ambos atacam
Ambos os times marcam em média >1.5 gols nos últimos 5 jogos.

Resumo — filtros (backtest histórico)

FiltroNAcertoOdd Est.Yield Est.
Bundesliga + hgf5>1.5 agf5>1.5 489 85.9% 1.3 +11.66%
PL+Bundesliga + hgf5>1.5 agf5>1.5 961 83.8% 1.3 +8.90%
Bundesliga geral 2142 83.6% 1.3 +8.70%
qualquer + hgf5>1.8 agf5>1.8 671 82.0% 1.3 +6.56%
Premier League + hgf5>1.5 agf5>1.5 472 81.6% 1.3 +6.04%

Últimos 20 jogos (Bundesliga hgf5>1.5 agf5>1.5)

DataJogoGolsOver 1.5h_gf5a_gf5
2026-05-16 Union Berlin × Augsburg 4–0 SIM 1.60 2.20
2026-05-16 Bayern Munich × FC Koln 5–1 SIM 3.40 1.60
2026-05-10 FC Koln × Heidenheim 1–3 SIM 1.80 2.20
2026-05-09 Stuttgart × Leverkusen 3–1 SIM 2.00 2.80
2026-05-02 Bayern Munich × Heidenheim 3–3 SIM 4.00 2.20
2026-05-02 Leverkusen × RB Leipzig 4–1 SIM 2.60 2.80
2026-04-25 FC Koln × Leverkusen 1–2 SIM 2.00 2.40
2026-04-19 Freiburg × Heidenheim 2–1 SIM 1.60 2.00
2026-04-19 Bayern Munich × Stuttgart 4–2 SIM 3.40 2.40
2026-04-19 M'gladbach × Mainz 1–1 SIM 1.60 1.60
2026-04-18 Hoffenheim × Dortmund 2–1 SIM 1.60 1.80
2026-04-11 Dortmund × Leverkusen 0–1 NÃO 2.20 2.80
2026-04-11 RB Leipzig × M'gladbach 1–0 NÃO 2.20 1.80
2026-04-04 M'gladbach × Heidenheim 2–2 SIM 1.60 1.60
2026-04-04 Werder Bremen × RB Leipzig 1–2 SIM 1.60 2.20
2026-04-04 Stuttgart × Dortmund 0–2 SIM 3.00 2.20
2026-03-20 RB Leipzig × Hoffenheim 5–0 SIM 1.60 2.00
2026-03-15 Stuttgart × RB Leipzig 1–0 NÃO 2.60 2.00
2026-03-14 Leverkusen × Bayern Munich 1–1 SIM 1.80 3.60
2026-03-07 RB Leipzig × Augsburg 2–1 SIM 1.80 1.60
Melhor filtro: Bundesliga + hgf5>1.5 agf5>1.5 → 85.9% acerto, n=489, yield estimado +11.66% @ 1.30. Break-even: 76.9% — qualquer cenário com ambas médias >1.5 fica confortavelmente acima.

M2 — BTTS ou Over 2.5

odd estimada 1.30 · ganha se QUALQUER um dos dois for verdadeiro
Bundesliga com ambos atacando (hgf5>1.5). Ganha se BTTS ou Over 2.5 ocorrer.

Resumo — filtros (backtest histórico)

FiltroNAcertoOdd Est.Yield Est.
Bundesliga + hgf5>1.5 agf5>1.5 489 77.7% 1.3 +1.02%

Últimos 20 jogos (Bundesliga hgf5>1.5 agf5>1.5)

DataJogoGolsBTTSOver 2.5Ganha?
2026-05-16 Union Berlin × Augsburg 4–0 NÃO SIM
2026-05-16 Bayern Munich × FC Koln 5–1 SIM SIM
2026-05-10 FC Koln × Heidenheim 1–3 SIM SIM
2026-05-09 Stuttgart × Leverkusen 3–1 SIM SIM
2026-05-02 Bayern Munich × Heidenheim 3–3 SIM SIM
2026-05-02 Leverkusen × RB Leipzig 4–1 SIM SIM
2026-04-25 FC Koln × Leverkusen 1–2 SIM SIM
2026-04-19 Freiburg × Heidenheim 2–1 SIM SIM
2026-04-19 Bayern Munich × Stuttgart 4–2 SIM SIM
2026-04-19 M'gladbach × Mainz 1–1 SIM NÃO
2026-04-18 Hoffenheim × Dortmund 2–1 SIM SIM
2026-04-11 Dortmund × Leverkusen 0–1 NÃO NÃO
2026-04-11 RB Leipzig × M'gladbach 1–0 NÃO NÃO
2026-04-04 M'gladbach × Heidenheim 2–2 SIM SIM
2026-04-04 Werder Bremen × RB Leipzig 1–2 SIM SIM
2026-04-04 Stuttgart × Dortmund 0–2 NÃO NÃO
2026-03-20 RB Leipzig × Hoffenheim 5–0 NÃO SIM
2026-03-15 Stuttgart × RB Leipzig 1–0 NÃO NÃO
2026-03-14 Leverkusen × Bayern Munich 1–1 SIM NÃO
2026-03-07 RB Leipzig × Augsburg 2–1 SIM SIM
Atenção: M2 tem yield positivo (+1.02%) mas margem estreita. Mais defensivo que M1; ganha mesmo com placares como 2–0 ou 0–2 (Over 2.5) ou 1–1 (BTTS). Break-even: 76.9% — margem de segurança pequena no filtro ótimo (77.7%).

M3 — Double Chance 1X (Mandante não perde)

odd estimada 1.45 · resultado H ou D
Mandante com vantagem de Elo superior a 100 pontos. Ganha em vitória ou empate.

Resumo — filtros (backtest histórico)

FiltroNAcertoOdd Est.Yield Est.
elo_diff > 100 3559 87.4% 1.45 +26.67%
hgf5>avg_liga + elo>50 3631 85.8% 1.45 +24.47%
elo_diff > 50 + nq>0.3 899 85.9% 1.45 +24.52%
Serie A (Italy) + elo>50 917 86.0% 1.45 +24.76%
elo>50 + soft_home < 2.5 5668 85.2% 1.45 +23.49%
elo_diff > 50 5809 84.6% 1.45 +22.73%
elo_diff 50–150 3768 82.0% 1.45 +18.91%
nq_home > 0.5 665 80.8% 1.45 +17.09%

Últimos 20 jogos (elo_diff > 100)

DataJogoLigaElo ΔOdd HResultadoDC 1X
2026-05-31 Palmeiras × Chapecoense-SC Serie A 386 None H
2026-05-30 Flamengo RJ × Coritiba Serie A 235 None H
2026-05-24 Cruzeiro × Chapecoense-SC Serie A 240 None H
2026-05-24 Milan × Cagliari Serie A 211 None A
2026-05-24 Napoli × Udinese Serie A 165 None H
2026-05-24 Man City × Aston Villa Premier League 171 None A
2026-05-24 Liverpool × Brentford Premier League 112 None D
2026-05-23 Lazio × Pisa Serie A 200 None H
2026-05-23 Real Madrid × Ath Bilbao La Liga 236 None H
2026-05-23 Betis × Levante La Liga 111 None H
2026-05-18 Arsenal × Burnley Premier League 413 None H
2026-05-17 Palmeiras × Cruzeiro Serie A 137 None D
2026-05-17 Nice × Metz Ligue 1 179 None D
2026-05-17 Lille × Auxerre Ligue 1 168 None A
2026-05-17 Brest × Angers Ligue 1 101 None D
2026-05-17 Udinese × Cremonese Serie A 121 None A
2026-05-17 Atalanta × Bologna Serie A 102 None A
2026-05-17 Inter × Verona Serie A 454 None D
2026-05-17 Juventus × Fiorentina Serie A 144 None A
2026-05-17 Como × Parma Serie A 187 None H
Destaque: elo_diff > 100 → 87.4% acerto, n=3.559, yield estimado +26.67% @ 1.45. Break-even: 68.9%. Mesmo @ 1.20 (odd muito conservadora) yield = +4.88%. M3 é o achado mais robusto — amostra grande, margem enorme.
Aviso de overfitting (M1/M2/M3): Filtros derivados dos mesmos dados usados para testá-los. Para validação real, acompanhe em jogos futuros com as odds reais. Use 🔴 Hoje para ver os jogos ao vivo.