Neste artigo
Depois deste artigo, saberá…
- Reconciliar preço Ask/Bid e modelo de médios com meias diferenças.
- Aplicar custo completo a negócios vencedores e perdedores.
- Excluir resultados ainda indisponíveis do ajuste anterior ao teste.
Conceitos sem sair do artigo
Bid e Ask Spread Bid/Ask Backtesting: teste histórico de regras Bancos centrais Comissão Drawdown — queda a partir de um máximoTaxa 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.
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.
| Custo | Total líquido | Média líquida | Profit factor líquido |
|---|---|---|---|
| 0PLN | 200PLN | 4PLN | 1,20 |
| 2PLN | 100PLN | 2PLN | 1140/1040≈1,10 |
| 4PLN | 0PLN | 0PLN | 1,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
- Guarde regra num ficheiro, com instante de informação, ordens, volume e tratamento de ambiguidades.
- Identifique dados e divisão cronológica antes de afinar; conserve perdas, sinais ausentes e casos intrabar ambíguos.
- Reconcilie preços de execução, spread e custos separados, testando sensibilidade sem limiar universal.
- Reporte contagem, dependência, dispersão e incerteza; avalie se acrescentar símbolos muda a hipótese.
- 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.
Verifique o que aprendeu
Aprox. 2 minutos de prática.
Ver resposta e explicação
103−102=1. Não desconte novamente o efeito dos lados usados.
Mais perguntas
O que é sobreajustamento?
Adaptar modelo a peculiaridades que não generalizam. Taxa de acerto sozinha não diagnostica: reveja pagamentos, custos, história de seleção e dados realmente reservados. Consultar e alterar após teste incorpora-o no desenvolvimento.
Que ferramenta escolher?
A que representa regras, produto, dados e execução. MT5 testa EAs com vários modos; confira histórico e configurações. Replay e código respondem a questões diferentes; nenhum impede por si antecipação de dados ou execução irrealista.
Quantos anos ou negócios preciso?
Não existe número universal. Dependência, dispersão, condições e ideias tentadas importam. Mais símbolos podem mudar hipótese. Conserve avaliação cronológica com resultados indisponíveis durante desenvolvimento.
Como são resultados realistas de um bom teste?
Não há faixa universal de taxa de acerto, profit factor ou drawdown. Reconcilie resultados líquidos, exposição, capital próprio, custos e seleção. No modelo 50 negócios, subir custo de 0 para 4 PLN reduz total 200→0, não valida conta real.
Fontes e verificação
- MetaQuotes — Real and Generated Ticks
Bid/Ask de execução distintos de preços do gráfico e ticks gerados quando há minuto sem histórico de ticks.
- scikit-learn — Common pitfalls: data leakage
Separar desenvolvimento/teste e aprender transformações só no desenvolvimento; não estudo de rentabilidade cambial.
- scikit-learn — TimeSeriesSplit
Índices cronológicos, gap em número de amostras e pressupostos; duração variável exige disponibilidade explícita.
- Forex Basics — ECB reference calendar 2016–2025
Investigação original da biblioteca, 2560 observações e 49 dias úteis de encerramento no snapshot, com código/dados; referência diária não é preço executável.
Os cálculos usam pressupostos explícitos. Não substituem os dados atuais do mercado nem as condições do prestador.
