"Estou a -4% de ROI ao fim de 400 apostas, o meu modelo não funciona." Esta frase é dita todos os dias, e na maioria das vezes está errada — não porque o modelo seja bom, mas porque 400 apostas simplesmente não chegam para resolver a questão.
As apostas desportivas têm uma relação sinal-ruído lamentável. Um edge de 2% vive dentro de dezenas de pontos percentuais de variância. Antes de interpretares um resultado, precisas de saber o que uma amostra desse tamanho é capaz de mostrar.
A matemática, em três linhas
Para apostas com stake fixo a uma odd c com probabilidade de ganhar p, o lucro por aposta tem uma esperança e um desvio-padrão que podes escrever diretamente. A incerteza sobre o ROI observado encolhe com a raiz quadrada de n — é aí que tudo se decide.
import math
def roi_noise(odds=1.95, edge=0.02, n=400):
p = (1 + edge) / odds # probabilidade de ganhar implícita no edge alvo
gain, loss = odds - 1, -1.0
mean = p * gain + (1 - p) * loss # = edge
var = p * (gain - mean) ** 2 + (1 - p) * (loss - mean) ** 2
return mean, math.sqrt(var / n) # esperança, desvio-padrão do ROI observado
mean, se = roi_noise(n=400)
print(f"true edge {mean:.2%} | noise at 400 bets ±{se:.2%}")
# true edge 2.00 % | noise at 400 bets ±4.87 %Por outras palavras: com um edge genuíno de 2%, o teu ROI observado ao fim de 400 apostas oscila num intervalo de cerca de ±10 pontos (dois desvios-padrão). Qualquer valor entre -8% e +12% é perfeitamente compatível com o mesmo modelo vencedor.
A probabilidade de mostrares uma perda quando está tudo bem
Inverte a pergunta: qual é a probabilidade de apresentares um ROI negativo ao fim de n apostas, sabendo que o edge é real? A resposta é brutal.
from statistics import NormalDist
def p_losing(odds=1.95, edge=0.02, n=400):
mean, se = roi_noise(odds, edge, n)
return NormalDist(mean, se).cdf(0) # P(ROI observado < 0)
for n in (200, 500, 1000, 2000, 5000):
print(f"{n:>5} bets → {p_losing(n=n):.0%} chance of being down")
# 200 bets → 39 %
# 500 bets → 32 %
# 1000 bets → 26 %
# 2000 bets → 18 %
# 5000 bets → 7 %Um em cada três apostadores com um edge real de 2% ainda está no vermelho ao fim de 500 apostas. Estatisticamente não há nada para corrigir: simplesmente ainda não jogaram o suficiente para o sinal emergir.
Estes números assumem apostas independentes a um preço constante. Se fizeres várias seleções correlacionadas no mesmo dia, ou os teus preços variarem entre 1.3 e 5.0, a variância real é superior — logo precisas de ainda mais apostas.
Então quantas apostas são precisas?
Para separar um edge de zero com confiança razoável, o edge tem de valer pelo menos o dobro do ruído. Num edge de 2% a 1.95, esse rácio só atinge 1.6 às 6.000 apostas e 2.0 às 10.000. O requisito cresce com o inverso do quadrado do edge: reduz o teu edge a metade e quadruplicas a amostra necessária.
- Edge de 5% a 1.95: algumas centenas de apostas bastam para ver com clareza.
- Edge de 2%: vários milhares.
- Edge de 1% a preços de 3.00: dezenas de milhares — fora do alcance de qualquer acompanhamento manual.
Medir outra coisa que não o resultado
A conclusão prática não é "faz 6.000 apostas antes de concluíres", é "para de medir aquilo que converge mais devagar". O resultado de uma aposta é uma variável binária muito ruidosa; a qualidade do preço que apanhaste é observável de imediato.
- Distância à closing line: o teu preço face ao último preço do mercado. Cada aposta gera uma medição, sem necessidade de esperar pelo resultado.
- Distância às odds justas no momento em que apostaste: mede a tua seleção, independentemente de qualquer movimento posterior.
- Slippage realizado: a diferença entre o preço que visavas e o preço que obtiveste. É frequentemente aqui que o edge desaparece, não no modelo.
As três partilham uma virtude: não dependem de como o jogo terminou, logo não carregam a variância do resultado. Algumas centenas de apostas bastam para saber se os teus preços são bons — enquanto o teu ROI ainda está a anos de dizer alguma coisa.
O resultado diz-te o que aconteceu. O preço diz-te se tinhas razão. Ambos convergem, mas não à mesma velocidade.
Define os teus limiares a frio
Este cálculo tem uma utilidade preventiva: define os teus limiares antes da sequência, não durante ela. Sabendo que o teu ROI vai oscilar num intervalo de ±10 pontos, um stop-loss a -5% garante que vais matar uma estratégia saudável. O limiar tem de ficar além do ruído esperado, calculado para O TEU edge estimado e O TEU volume.
E para estimar esse edge sem perseguires a tua própria cauda, não partas do ROI passado — parte dos teus preços. Reconstruir as odds justas e os preços de fecho linha a linha em todo o teu histórico de apostas dá-te uma estimativa de edge estável que podes introduzir na matemática acima.
# o preço de fecho da linha exata que jogaste
curl -H "X-API-Key: $APINN_KEY" \
"https://api.apinn.io/api/closing?event_id=1610000123"
# o movimento completo, abertura → fecho, para situares a tua entrada
curl -H "X-API-Key: $APINN_KEY" \
"https://api.apinn.io/api/history?event_id=1610000123"Um edge estimado a partir dos preços, um limiar de stop calculado a partir da variância esperada, e um stake dimensionado para sobreviver ao intervalo: esse trio é o que te impede de abandonar uma estratégia vencedora na aposta 400.
Estas contas, com dados reais
Odds da Pinnacle em tempo real com true odds incluídas, mais histórico de abertura e fecho — acesso self-serve, chave API em minutos.