Taxa de acerto histórica elevada não estabelece vantagem. Um backtest avalia regras explícitas em dados definidos, sob um modelo de execução. Mesmo um estudo cuidadoso não garante retorno futuro. A utilidade começa por conseguir reproduzir decisões e identificar onde a regra ou o cálculo contradizem os próprios pressupostos.

O que um teste histórico pode mostrar

Uma expectativa positiva descreve a amostra testada. Pode resultar de acaso, seleção ou sobreajustamento. Avalie observações reservadas, custos e robustez antes de generalizar. Contar negócios ou olhar uma curva não basta para separar essas possibilidades. Um resultado negativo também precisa de reconciliação: um custo duplicado pode fazer uma regra parecer pior do que o modelo efetivamente calcula.

Defina quando cada informação está disponível

Registe símbolo, período, inputs, momento de ordem, saídas e dimensionamento. Numa regra diária fictícia, compare fecho da barra concluída com máximo da anterior e envie pedido apenas quando esse fecho existe. Usar esse fecho final para entrar na abertura anterior da mesma barra antecipa informação futura.

Especifique posição já existente, dados indisponíveis e margem insuficiente. Parâmetros de indicador não resolvem essas decisões nem garantem execução. Compare decisões reproduzidas independentemente, investigando diferenças antes do total. Estudar uma vantagem liga a hipótese à evidência, sem transformar histórico positivo em promessa.

Dados adequados e incerteza explícita

Escolha contrato e modelo de execução correspondentes ao que pretende estudar. Futuros cambiais centralizados, spot OTC e CFD são produtos diferentes. Uma série de futuros não substitui automaticamente o produto de retalho. Documente fornecedor, lado da cotação, fuso, lacunas e versão.

Não existe limiar universal de significância de cem negócios. Dispersão, dependência, dimensão do efeito, seleção e regimes influenciam a evidência; apresente limites e dimensão efetiva da amostra. Mais símbolos podem alterar a hipótese em vez de apenas acrescentar observações. Dois ou cinco anos não são exigência universal.

OHLC não revela necessariamente qual de stop ou alvo tocou primeiro na mesma barra. A documentação MT5 informa que um minuto com barra mas sem ticks pode receber ticks gerados, mesmo num teste orientado por ticks reais. Confira dados e diário, não só o nome do modo. Num cesto, use o universo elegível à data; em notícias, dados disponíveis então, não revisões posteriores.

Duas medições reconciliam o mesmo ganho

Modelo completo fictício: compra e venda de uma unidade arbitrária, sem comissão, financiamento ou deslizamento. Na entrada, Bid 100/Ask 102, médio 101. Na saída, Bid 103/Ask 105, médio 104. Comprar em Ask 102 e vender em Bid 103 dá +1 unidade de preço.

Dois métodos, o mesmo resultadoUma unidade fictícia, entrada 100/102, médio 101; saída 103/105, médio 104. Execução exata, sem custos separados.EXEMPLO DE CÁLCULOExecuçãoAsk 102→Bid 103Médios101→104Dupla cobrança3−2−2=−1
Dois métodos, o mesmo resultado. Uma unidade fictícia, entrada 100/102, médio 101; saída 103/105, médio 104. Execução exata, sem custos separados.

103−102=3−1−1=1; subtrair dois spreads completos seria erro.

Execução
Ask 102→Bid 103 – Resultado +1
Médios
101→104 – +3 menos 1 menos 1=+1
Dupla cobrança
3−2−2=−1 – Incompatível com execuções dadas

Os médios sobem 104−101=3. A entrada ficou 1 acima do médio e saída 1 abaixo: 3−1−1=1, o mesmo resultado. Os spreads completos são 2 em cada instante. Subtrair ambos ao movimento médio dá 3−2−2=−1, incompatível com as execuções. Subtrair outro 2 a 103−102 também duplica o custo. Não é uma segunda execução válida, mas erro de medição.

Guarde fonte de cada preço e reconcilie antes de comparar relatórios. Uma unidade de preço não é automaticamente um euro ou um pip. Num modelo adicional, mantendo exatamente as execuções e atribuindo 10 EUR por unidade de variação, o resultado de preço é 10 EUR. Comissão separada 2 EUR deixa 8 EUR. Subtrair mais 20 EUR de «spread» produziria −12 EUR e repetiria um efeito já incluído. A conversão monetária é estipulada, não especificação real de Forex.

Custos e sensibilidade sem dupla cobrança

Acrescente comissões, financiamento e diferenças de execução que não estejam incluídos no primeiro resultado. No exemplo separado, spread 0,8 pip representa 0,4% da distância de alvo 200 pips e 16% de alvo 5 pips. São parcelas de distância, não percentagem da vantagem nem estimativa de lucro real.

Noutro modelo, 50 negócios fechados têm 30 ganhos de 40 PLN e 20 perdas de 50 PLN antes de custos: ganhos 1200 PLN, perdas 1000 PLN, total 200 PLN, média 4 e profit factor 1,20. Aplique o mesmo custo completo a vencedores e perdedores. Com 2 PLN por negócio, ganhos individuais 38 e perdas 52: total 100, média 2, profit factor 1140/1040≈1,10.

Com 4 PLN por negócio, ganhos 36 e perdas 54, total zero, média zero e profit factor 1. A tabela muda só o custo estipulado, não apresenta estratégia observada. Teste custos e execução plausíveis; dobrar custo médio ou rejeitar quando consome 20% do ganho bruto são filtros escolhidos, não margens de segurança universais.

Sensibilidade de50 negócios fictícios ao custo completo por negócio,em PLN
CustoTotal líquidoMédia líquidaProfit factor líquido
0PLN200PLN4PLN1,20
2PLN100PLN2PLN1140/1040≈1,10
4PLN0PLN0PLN1,00

Seleção e cronologia não acabam num corte 70/30

Escolher o melhor entre parâmetros, instrumentos e divisões de amostra pode ajustar peculiaridades do passado. Registe todas as tentativas, incluindo ideias descartadas fora do otimizador. Um resultado selecionado forte não diagnostica sozinho sobreajustamento, mas exige avaliação distinta. Limitar otimização a dois parâmetros não elimina seleção nas restantes escolhas.

Congele divisão antes de afinar. 70/30 é uma possibilidade, não garantia. Um resultado inferior depois pode refletir regime ou amostragem, além de sobreajustamento. Alterar estratégia após olhar o teste usa esse período no desenvolvimento. A documentação scikit-learn distingue separação de dados e prevenção de fuga de informação: transformações aprendidas também não devem usar o teste para escolher o modelo.

Preço anterior não significa resultado já conhecido

Num modelo, uma decisão em t recebe rótulo em t+3. O primeiro teste começa em t10 e o ajuste tem de acabar antes. Entre decisões t1–t9, só t1–t6 têm resultados disponíveis antes de t10. A decisão t6 recebe rótulo em t9; t7–t9 só em t10–t 12 e não podem informar esse ajuste. Preços anteriores podem continuar necessários ao indicador de teste.

A exclusão resolve a sobreposição de rótulos estipulada, não todas as fugas possíveis. TimeSeriesSplit oferece índices cronológicos e gap contado em amostras; resultados de duração variável exigem verificar disponibilidade efetiva. Um valor de gap não é automaticamente uma distância em dias ou uma solução para contratos de durações diferentes.

Interprete números atribuídos sem lhes acrescentar conclusões

Probabilidade de ganho 0,54, ganho médio 2,3 R e perda 1 R dão expectativa bruta 0,54 × 2,3−0,46=0,782 R e profit factor 1,242/0,46=2,70. Não determinam drawdown ou retorno total. Separadamente, um retorno atribuído 87% em exatamente cinco anos equivale a 1,87^(1/5)−1≈13,34% anuais compostos. Não foi derivado das estatísticas dos negócios anteriores.

Registe exposição, capital próprio de posições abertas, custos e tentativas de seleção. Não existe uma faixa universal de taxa de acerto, profit factor ou drawdown «boa». Uma demonstração em tempo real pode testar operação, sem exigir passagem para conta real depois de resultado favorável ou três meses de demo.

Cinco ações para um teste reproduzível

  1. Guarde regra num ficheiro, com instante de informação, ordens, volume e tratamento de ambiguidades.
  2. Identifique dados e divisão cronológica antes de afinar; conserve perdas, sinais ausentes e casos intrabar ambíguos.
  3. Reconcilie preços de execução, spread e custos separados, testando sensibilidade sem limiar universal.
  4. Reporte contagem, dependência, dispersão e incerteza; avalie se acrescentar símbolos muda a hipótese.
  5. Compare comportamento demo com modelo congelado e investigue cada divergência, sem assumir execução real idêntica.

Para um exemplo reprodutível de completude, consulte o estudo da biblioteca sobre calendário de referência BCE 2016–2025 (em inglês). O snapshot estudado tem 2560 publicações EUR/USD e 49 dias úteis sem publicação, coincidentes com encerramentos TARGET. Uma taxa diária de referência não fornece percurso intradiário ou execução de stops; valor não publicado não equivale automaticamente a lacuna inesperada.