Backtesting e testes prospetivos: métodos, evidência e armadilhas

Testar uma estratégia significa verificar como as suas regras se comportam nos dados e em que medida o resultado depende dos pressupostos. Um backtest utiliza o passado; um teste prospetivo regista decisões à medida que chegam dados novos. Ambos exigem uma especificação clara, uma contabilização realista dos custos e uma descrição honesta da amostra. Esta lição apresenta uma ficha de teste com doze campos, exemplos de validação cronológica, ferramentas de cálculo executáveis e um procedimento para comparar simulações históricas com observações posteriores. O objetivo é distinguir o que a evidência sustenta do que continua incerto, sem transformar um gráfico favorável numa promessa de rendimentos futuros.

A demo observa sinais que chegam, mas não reproduz todas as condições de execução real.

Mantém-se a ilustração original. A demo utiliza execuções simuladas; a execução efetiva em condições reais é avaliada na conta micro. O método escrito abaixo explica os pressupostos e as limitações da progressão representada.

Pontos essenciais em 60 segundos
  • Tanto os testes históricos como os prospetivos podem fornecer evidência. Nenhum demonstra automaticamente uma vantagem duradoura, e a execução em demo não é execução real.
  • Fixe a pergunta, a versão, a divisão dos dados, o modelo de execução e os critérios de avaliação antes de examinar o resultado da avaliação. Mantenha um registo de todas as tentativas de investigação.
  • A disponibilidade do sinal e o momento da execução são coisas diferentes. Os lados bid/ask, as trajetórias intravela ambíguas, as execuções parciais, os gaps e os encargos podem alterar a conclusão.
  • O número de observações, por si só, não é uma nota de aprovação. Apresente a dispersão dos resultados, a dependência, a cobertura e a incerteza; os intervalos da taxa de acerto não estimam o valor esperado.
  • A simulação bootstrap cria amostras alternativas sob determinados pressupostos, não novas observações do mercado. Um percentil de drawdown simulado não garante uma perda máxima.
  • «Não passar a real» e «inconclusivo» são resultados legítimos. Uma lista de verificação ou uma duração de calendário nunca obriga a começar a negociar em real.

Registe a hipótese, as regras, a amostra e os resultados no Toolkit N: o protocolo de teste de estratégias. O formulário complementa o método deste capítulo com gravação local, exportação e impressão.

1. Backtesting e testes prospetivos: perguntas diferentes, respostas diferentes

Um bom backtest não significa que uma estratégia esteja pronta para negociar. O teste histórico investiga o passado com um modelo especificado. O teste prospetivo observa decisões à medida que chegam dados novos. As duas etapas fornecem informação diferente: um backtest pode oferecer uma amostra mais longa de resultados, enquanto a observação prospetiva pode revelar problemas de temporização, implementação e cumprimento das regras. Só uma etapa real devidamente controlada mede as execuções e os encargos reais; a execução em demo continua a ser uma simulação. Utilizar uma etapa em substituição da outra elimina a informação que a etapa em falta deveria fornecer.

Backtesting: a pergunta histórica

Um backtest pergunta: «Como se teriam comportado estas regras, por exemplo, nos três a dez anos anteriores?» A utilidade da resposta depende da qualidade dos dados, do modelo de execução e custos e da validade do desenho da investigação. É retrospetivo:

  • Pode ser rápido. Cinco anos de dados podem demorar minutos num teste simples, embora uma modelação detalhada com ticks e pesquisas alargadas de parâmetros possam demorar muito mais.
  • Pode produzir centenas ou milhares de observações, consoante a frequência dos sinais e o período histórico.
  • Permite comparar variantes dos parâmetros. Essa flexibilidade é também uma fonte importante de enviesamento de seleção e sobreajustamento.
  • É sensível a ticks incorretos, velas em falta, carimbos temporais errados e custos irrealistas. Uma amostra grande não corrige um erro sistemático nos dados ou no modelo.

Um backtest não demonstra que uma estratégia funciona agora. Um regime representado em 2018–2022 não tem de persistir em 2024–2026. Da mesma forma, os resultados de uma tendência histórica específica do iene não podem ser simplesmente transferidos para um ambiente diferente de política monetária ou intervenção. Estes exemplos ilustram uma mudança de condições, sem afirmar que uma estratégia identificada tenha de ter sucesso ou fracassar num determinado período. Documente a exposição aos regimes em vez de tratar o intervalo de datas como evidência suficiente.

Testes prospetivos: a pergunta voltada para o futuro

Um teste prospetivo pergunta: «Como se comportam as regras fixadas à medida que chegam novas observações, e a sua implementação corresponde ao processo previsto?» Avança em tempo real:

  • Demora tempo. Com cinco operações por semana, 100 operações exigem cerca de 20 semanas, aproximadamente cinco meses, sem contar com feriados e oportunidades não aproveitadas.
  • A amostra pode continuar pequena. Um piloto de 30–80 operações é um exemplo de evidência limitada, não uma descrição verificada da prática de todos os traders de retalho.
  • As observações futuras não estão disponíveis no momento de uma verdadeira decisão em tempo real. Isso elimina uma via de antecipação, mas a posterior reclassificação, os dados revistos ou as alterações retrospetivas ainda podem contaminar a avaliação registada.
  • Pode revelar alterações do spread, latência, pedidos rejeitados e slippage. A evidência depende da modalidade: os registos reais medem a execução real, enquanto as modalidades demo e simulada não a reproduzem integralmente.
  • Revela erros humanos de implementação: quantidades erradas, decisões tardias, sinais perdidos e intervenção discricionária numa posição aberta.

Um teste prospetivo curto não resolve uma alegação de vantagem a longo prazo. É especialmente útil para identificar um desfasamento entre os pressupostos históricos e a implementação atual. A inferência a mais longo prazo continua a depender da dimensão da amostra, da dependência, da cobertura dos regimes e da incerteza, não do rótulo «prospetivo».

Três modalidades de teste: análise manual, reprodução e automatização

«Backtesting» pode referir-se a três atividades diferentes. Separe-as antes de comparar a evidência que fornecem:

  • Análise manual dos gráficos. Percorre o histórico e regista decisões. Ajuda a identificar regras pouco claras e casos-limite. Uma análise corrente com as velas posteriores visíveis é vulnerável ao efeito retrospetivo, à escolha seletiva do ritmo e à memória do resultado; não deve ser apresentada como uma amostra imparcial do desempenho. Um protocolo manual cego cuidadosamente concebido é um exercício diferente e mais exigente.
  • Reprodução vela a vela. Uma ferramenta revela o histórico sequencialmente, ocultando as observações posteriores. Alguns exemplos são a reprodução de gráficos, os modos visuais dos testadores e aplicações específicas de reprodução, sujeitos ao comportamento efetivo dos seus dados e tempos. A reprodução pode testar a coerência da classificação discricionária e o tempo de resposta se o ritmo for controlado. Continua sem estabelecer custos reais de execução. Recuar depois de ver o resultado e substituir a decisão original contamina essa execução do teste; registe separadamente uma reprodução exploratória.
  • Testes históricos automatizados. O código aplica regras a um conjunto de dados. É uma via eficiente para obter amostras grandes e reproduzíveis, mas introduz todos os perigos da secção 2: fuga de informação, pressupostos de execução, custos e seleção repetida. A automatização também reproduz uma regra defeituosa com grande coerência.

A sequência importa. A reprodução antes da programação pode revelar instruções que duas pessoas interpretam de forma diferente. Um testador não consegue fornecer a definição em falta; limita-se a implementar a interpretação que o programador escolheu. Fixe a especificação e a versão da estratégia antes da sua avaliação, conforme descrito no artigo 15.3, e não depois de examinar o resultado.

O que cada etapa pode e não pode revelar

QuestãoTeste históricoTeste prospetivo
Antecipação: informação futura utilizada numa decisãoUm relatório de lucros não diagnostica a sua própria fuga de informação. A revisão do código, a verificação dos carimbos temporais e a reprodução controlada podem revelá-la.Os registos em tempo real podem revelar divergências em relação a uma reconstrução histórica posterior. Preserve os valores e as decisões originais.
Ajustamento dos parâmetros à curvaUma avaliação intacta, a investigação walk-forward e um registo completo das tentativas podem investigá-lo; nenhum é uma cura automática.Pode revelar deterioração após observações suficientes ou uma mudança de regime. Um piloto curto favorável ainda pode ser sorte.
Custos de execução insuficientemente modeladosApenas na medida em que os dados de entrada e o modelo de execução os representem.Os custos reais podem ser medidos diretamente. Os custos em demo e em negociação simulada continuam a ser aproximações incompletas.
Uma mudança de regime após o período históricoNão consegue observar condições futuras ausentes do conjunto de dados.Observa o ambiente atual, mas detetá-lo não estabelece automaticamente quanto tempo durará.
O trader não consegue seguir as regrasUm teste mecânico normalmente pressupõe que as suas instruções programadas são seguidas; os protocolos manuais podem revelar alguns problemas de usabilidade.As decisões com carimbo temporal revelam sinais perdidos, desvios e intervenções do operador efetivo.
Precisão da estimativa da vantagem operacionalUma amostra mais longa pode reduzir a incerteza se a sua qualidade, dependência e seleção forem tratadas corretamente.Um piloto prospetivo curto é frequentemente insuficiente: 5 operações por semana produzem cerca de 130 observações em meio ano (26 × 5), com um intervalo amplo para essa dimensão amostral. A precisão também depende da distribuição dos resultados.
Drawdown num horizonte longo (3+ anos, vários ciclos)Vários anos podem abranger mais condições históricas, mas 5 anos não garantem vários ciclos de mercado independentes nem a pior trajetória possível de perdas.Um piloto prospetivo curto costuma abranger apenas 1 ciclo de mercado ou as condições efetivamente observadas; um registo prospetivo mais longo pode acabar por acrescentar evidência mais abrangente.

O trabalho histórico fornece contexto e profundidade amostral; o trabalho prospetivo verifica se o processo resiste ao contacto com dados novos e ao ambiente operacional previsto. Um backtest rápido e uma etapa de observação de 90 dias impõem tempos de espera muito diferentes, mas o tempo decorrido não é motivo para omitir esta última. Nem um cálculo de dez minutos nem um piloto de três meses garantem que a evidência necessária tenha sido recolhida.

Reconciliar sinais históricos e prospetivos

Um diagnóstico particularmente útil é uma comparação sinal a sinal nas mesmas datas. Exporte ambas as fontes para um esquema comum, por exemplo:

timestamp_utc, broker_server_time, pair, setup_id, direction, entry_rule_hash,
entry_price, sl_price, tp_price, trigger_bar_close, source

Preserve campos adicionais suficientes para distinguir o momento do sinal, a disponibilidade efetiva da informação, os pedidos de ordens e as execuções. Depois dos primeiros 30–60 dias de observação, execute a implementação histórica fixada sobre os dados arquivados desses mesmos dias. Compare os dois inventários. Um limiar ilustrativo de discrepância de 5–10% pode desencadear uma investigação, mas diferenças menores também podem importar se favorecerem sistematicamente o backtest. Defina o denominador e se está a fazer a correspondência entre sinais, pedidos ou execuções antes de apresentar uma percentagem.

As causas possíveis incluem fuga de informação futura, repintura, feeds diferentes, erros de fuso horário, código incoerente e tentativas falhadas de envio de ordens em tempo real. Cinquenta sinais históricos contra doze prospetivos nas mesmas datas são uma discrepância substancial por resolver; não avance até estar explicada. Ler Close[0] durante uma vela não é automaticamente um erro: o erro é tratar o seu valor final posterior como se fosse conhecido no momento da decisão anterior.

Normalize o tempo antes de diagnosticar a estratégia. Guarde tanto timestamp_utc como broker_server_time juntamente com a convenção de desfasamento do servidor específica de cada data. Alguns fornecedores de MT4/MT5 utilizam relógios de servidor UTC+2 ou UTC+3 associados ao fecho de Nova Iorque, mas isso não é universal. Comparar registos não normalizados pode criar um aparente problema de antecipação quando os dois sistemas utilizaram, na realidade, velas diferentes. Converta corretamente os carimbos temporais e depois compare. Conte também as velas em falta e os carimbos temporais duplicados, distinguindo encerramentos legítimos do mercado de falhas do feed. Carimbos temporais de ticks duplicados podem representar atualizações de cotação distintas, por isso não elimine todos os ticks com a mesma hora sem verificar a sua identidade e sequência.
Porque é que a observação prospetiva é uma etapa separada. Alguns processos de investigação institucional observam uma estratégia nova nos dados que vão chegando antes de lhe atribuírem capital. As descrições públicas são demasiado gerais para fornecer um único «número padrão de meses» transferível. A duração adequada depende da frequência dos sinais, dos recursos e da precisão exigida. A lição prática é separar as etapas de evidência, não apelar a um calendário institucional. Omitir a observação em demo ou em paralelo depois de um bom backtest elimina uma oportunidade de detetar defeitos de temporização e operacionais antes de arriscar fundos; continua a ser necessária uma etapa real limitada posterior para medir a execução real, e esta requer a sua própria autorização.

A ficha de teste: doze campos antes de interpretar o resultado

Sem uma ficha de teste, pode ser impossível reproduzir um resultado seis meses depois. É necessário saber que dados, implementação, modelo de custos e histórico de seleção o produziram. Preencha os primeiros nove campos antes de executar a avaliação. O resto deste artigo explica por que motivo cada campo pode alterar a conclusão.

Ficha ilustrativa: não representa desempenho histórico. Todos os valores na coluna de exemplo são sintéticos e demonstram o formato de apresentação. O fornecedor referido é uma escolha hipotética de dados, não uma afirmação de que esse conjunto de dados foi efetivamente obtido e esse teste realizado.
CampoO que registarEntrada ilustrativa: dados sintéticos
1. PerguntaUma frase que indique o que o teste investiga.«O breakout do intervalo pré-Londres do EUR/USD tem valor esperado positivo após custos?»
2. Versão da estratégia e do códigoIdentificador da versão e hash da especificação e implementação fixadas.lonbreak v1.3, prefixo ilustrativo do hash a91f…, fixados antes da primeira execução OOS.
3. Dados e períodoFornecedor, instrumento, resolução, bid/ask/mid, fuso horário, cobertura e limpeza.Ticks bid/ask EUR/USD da Dukascopy, UTC, 2018-01 → 2024-12; registos duplicados confirmados removidos; mantidas atualizações distintas que partilham um carimbo temporal; documentados 4 dias em falta e 11 falhas superiores a 30 minutos.
4. DivisãoLimites cronológicos de IS, validação e OOS; identifique se «prospetivo» significa uma reserva histórica ou dados que vão chegando.IS 2018-01 → 2021-12; validação 2022-01 → 2023-06; OOS intacto 2023-07 → 2024-12. A observação prospetiva começa em 2026-05-04.
5. Modelo de execuçãoDisponibilidade do sinal, execução, atraso, execuções parciais, gaps e tratamento de velas ambíguas.Sinal no fecho M15; execução longa no ask após um atraso modelado de 300 ms, curta no bid; uma vela com ordem por resolver entre stop e alvo é contabilizada como stop primeiro; um gap utiliza o próximo preço executável disponível. Este exemplo de ficha de teste é separado da estratégia candidata do artigo anterior.
6. CustosSpread, slippage, comissão e financiamento, com verificação explícita de dupla contagem.Spread dos ticks bid/ask; slippage adverso ilustrativo de 0,1 × M5 ATR(14) na entrada e saída; comissão equivalente a 0,6 pip por operação completa de ida e volta; financiamento segundo a tabela pertinente do fornecedor. O spread incorporado nas execuções não é novamente deduzido.
7. Variantes e tentativasTodas as combinações de parâmetros e versões de regras experimentadas, incluindo as descartadas.96 combinações de parâmetros mais 4 experiências adicionais autónomas de saída = 100 tentativas. Aplicar o produto completo 96 × 4 significaria, em alternativa, 384 tentativas. Registe cada tentativa em 02_IS/trial_log.csv.
8. MétricasDefinições, denominadores e convenções de amostragem.Valor esperado em R com R₀ fixado como risco monetário planeado antes da entrada; fator de lucro; drawdown a partir do máximo de capital atingido até cada momento; número de operações e estimativas de incerteza.
9. Critérios de decisão pré-especificadosResultados positivos, negativos e inconclusivos, escritos antes dos testes.Continuar a investigação se o limite inferior de 95% do valor esperado OOS for superior a zero; regressar ao desenho se o limite superior for inferior a zero; caso contrário, classificar o resultado como inconclusivo. «Continuar» não é autorização automática para negociar em real.
10. ResultadosEstimativas com intervalos, não apenas valores pontuais.OOS n = 214, valor esperado +0,12R, intervalo ilustrativo de 95% (−0,07R, +0,31R): inclui zero.
11. LimitaçõesO que o teste não mede e o que o pode contaminar.Um fornecedor e um par; sem dados de profundidade do livro de ordens; nenhuma crise de liquidez observada; 100 tentativas exploratórias sem um ajustamento especificado para testes múltiplos. Indique como a seleção e a integridade da reserva de avaliação afetam a inferência.
12. Ficheiros de reproduçãoCaminhos e hashes completos dos dados de entrada, código e resultados necessários.01_data/eurusd_2018_2024.csv (sha256), lonbreak_v1_3.mq5, costs.json, trial_log.csv e o notebook bootstrap. O hash abreviado acima é apenas um exemplo de apresentação.

O campo 9 é fácil de omitir. Um critério escrito depois de ver o resultado é uma descrição retrospetiva, não uma regra de decisão pré-especificada. O campo 7 é igualmente importante: sem o número total de tentativas, o aparente vencedor pode ser apenas o máximo de muitas pesquisas. É no campo 11 que as limitações por resolver devem ficar explícitas. Se um dado de entrada essencial de um campo anterior for desconhecido, não o invente; assinale-o como não resolvido e adie o teste ou restrinja a sua interpretação em conformidade.

2. Armadilhas dos testes: antecipação, sobrevivência, ajustamento de curvas e sobreajustamento

São riscos metodológicos, não meros sinais de descuido do investigador. Uma plataforma ou um script próprio podem produzir um relatório convincente enquanto a sua configuração ou implementação permite um erro grave. Questões cognitivas como o enviesamento de confirmação e o efeito retrospetivo são discutidas na secção de psicologia do trading. Aqui, o foco é o desenho técnico do teste e as verificações necessárias para revelar as suas fragilidades.

Armadilha 1: enviesamento de antecipação

A antecipação ocorre quando uma decisão utiliza informação que só ficaria disponível mais tarde. As vias comuns incluem:

  • Uma decisão intravela baseada no fecho final. Uma estratégia calcula a SMA(20) incluindo a vela M5 atual e indica que entra quando essa vela fecha acima da média. No segundo 240 da vela de cinco minutos, o fecho final ainda é desconhecido. Ler o valor atual de Close[0] não é, por si só, fuga de informação futura; interpretar um fecho final posterior como o valor disponível no segundo 240 é. Verifique o que o modo efetivo do testador e o código devolvem em cada callback, em vez de pressupor que um modo chamado «Apenas preços de abertura» suporta a regra intravela pretendida.
  • Um marcador histórico confirmado mais tarde. ZigZag, ferramentas de pontos de oscilação, fractais, âncoras pitchfork selecionadas manualmente e alguns canais próprios podem marcar uma vela anterior usando informação que chega depois. Um máximo de oscilação desenhado hoje dez velas atrás pode não ter sido confirmado nessa vela. O nome do indicador não estabelece o comportamento exato; a implementação e o carimbo temporal da confirmação estabelecem-no.
  • Dados macroeconómicos indexados pelo período de referência em vez do momento de divulgação. Um valor identificado como «IPC de março» pode só ser publicado em abril. Uma estratégia que o utilize antes da divulgação efetiva está a usar informação indisponível. Verifique o calendário de divulgação do emissor, a convenção de carimbos temporais do fornecedor e a versão dos dados disponível na altura. As revisões posteriores são outra fonte de fuga de informação.

Deteção: observe a estratégia fixada nos dados que vão chegando e depois reconcilie os seus sinais originais com uma reconstrução histórica das mesmas datas. Uma divergência é um problema a diagnosticar, não uma prova de antecipação por si só. Outras explicações incluem um feed diferente, repintura, conversão temporal incorreta e tentativas falhadas de envio de ordens em tempo real. Primeiro alinhe o tempo e os dados; distinga sinais de pedidos e execuções; depois examine o fluxo de informação da estratégia. Reescrever um indicador correto antes de verificar as velas de entrada pode criar um novo problema sem explicar o anterior.

As implementações que merecem uma verificação explícita do momento de disponibilidade da informação incluem:

  • ZigZag, fractais e construções pitchfork. Determine quando um pivô ou âncora se torna conhecível e se o ponto anterior apresentado pode deslocar-se. Um sinal confirmado com o atraso correto é diferente de fingir que o pivô era conhecido na sua origem.
  • Heikin-Ashi, SuperTrend, médias móveis Hull e canais próprios. Nenhum é intrinsecamente fraudulento. Teste a implementação efetiva para detetar alterações nos sinais de velas concluídas. Os preços sintéticos das velas Heikin-Ashi também exigem tratamento separado: não são automaticamente preços de mercado executáveis.
  • Indicadores de mercados de aplicações com código fechado. Não é possível inspecionar a sua lógica interna. Sob uma política que exija validação ao nível do código-fonte, rejeite-os para esse fluxo de investigação. Testes temporais de caixa negra podem revelar defeitos, mas não estabelecer todas as dependências internas.
  • iCustom(): leituras dos buffers. Identifique o buffer, o desfasamento da vela, o tratamento de valores indisponíveis e se os valores históricos do buffer são recalculados.
  • Decisões intravela com Close[0] em MT4. O valor atual é um preço em evolução da vela atual, não o valor final de fecho. O teste tem de reproduzir a mesma sequência de informação da regra real.
  • Dados de um período temporal superior num gráfico de período inferior. Um valor H4 utilizado por uma decisão M15 antes de essa vela H4 fechar é provisório. Em Pine, o comportamento de request.security() depende dos desfasamentos das expressões, das definições de antecipação e da avaliação histórica em comparação com a avaliação em tempo real. Utilize o padrão documentado de período superior confirmado quando essa for a regra pretendida; não pressuponha que acrescentar [1] em qualquer ponto resolve todos os problemas temporais. Verifique também a implementação MQL correspondente.
  • Séries macroeconómicas datadas por período. Associe-as pela disponibilidade efetiva da informação e pela versão dos dados, não pelo primeiro dia do mês descrito pela estatística.

Uma verificação prática contra a repintura: num feed em tempo real, registe o valor do indicador para uma vela concluída identificada que esteja atualmente dez velas atrás. Depois de chegarem cinco velas novas, examine o mesmo carimbo temporal, agora quinze velas atrás. Cinco novas velas M1 demoram aproximadamente cinco minutos; cinco velas H1 demoram aproximadamente cinco horas, excluindo falhas entre sessões. Se o valor mudar, uma apresentação histórica não reproduz necessariamente o sinal original. Registe quando ficou disponível qualquer confirmação.

Não haver mudança numa vela não é um certificado de ausência de repintura. Repita em várias velas, casos-limite e regimes de volatilidade; inclua alterações após reconexão ou atualização do histórico quando pertinente. É um protocolo de observação, não uma afirmação de que todas as implementações podem ser validadas em poucos minutos. Preserve os registos para que a comparação seja reproduzível.

Exemplo ilustrativo: Heikin-Ashi e 200 setups aparentemente A+. São valores sintéticos, não um registo de trading. Um teste de cinco anos que combina uma implementação própria de Heikin-Ashi e um oscilador identifica 200 setups A+, uma taxa de acerto de 85% e uma curva suspeitosamente suave que lembra um anúncio de um EA caro. Um piloto real numa conta micro regista depois dez saídas por stop nos primeiros doze setups. Essa amostra curta de desempenho não estabelece a causa. A evidência decisiva vem dos sinais registados: esta implementação própria específica altera resultados anteriores após velas posteriores, enquanto a reconstrução histórica do oscilador trata um valor posterior de Close[0] como se estivesse disponível durante a vela. O problema é o código e a temporização, não o conceito de Heikin-Ashi em si. A reconciliação revela diferenças superiores a 50% segundo a regra de correspondência do exemplo e bloqueia qualquer progressão. Doze operações são demasiado poucas para estimar a vantagem com precisão, mas uma divergência nas regras diretamente reproduzível pode ser identificada a partir de poucos casos. Amostra pequena ou dependente: limite a conclusão sobre o desempenho, não a investigação de um defeito de implementação demonstrado.

Armadilha 2: enviesamento de sobrevivência

Suponha que um investigador utiliza uma lista atual de pares de moedas para testar um período anterior. Essa seleção pode omitir instrumentos que eram negociáveis na altura, mas que depois desapareceram ou ficaram indisponíveis. O problema inverso de implementação também importa: resultados históricos atrativos podem depender fortemente de um instrumento que o fornecedor previsto já não oferece em condições comparáveis. O USD/RUB em torno das mudanças posteriores a 2022 é um exemplo de por que razão a disponibilidade, as restrições por sanções, a liquidez e as condições de execução exigem verificação específica por data e fornecedor, não uma afirmação universal sobre o acesso atual.

A seleção nos mercados de aplicações cria um problema relacionado. Um EA atualmente visível com cinco estrelas e 200 avaliações positivas pertence aos produtos ainda listados e notados. Produtos falhados, retirados ou pouco populares podem estar ausentes da comparação. As classificações, por si só, não identificam toda a coorte de lançamento, nem estabelecem a probabilidade de sobrevivência ou que todos os EA tivessem originalmente a mesma probabilidade de sucesso.

Deteção: reconstrua o universo de instrumentos tal como existia na data da decisão histórica. Um teste de 2018–2020 deve identificar o que o fornecedor pertinente oferecia em 2018, incluindo instrumentos retirados mais tarde. Restringir o histórico aos sobreviventes atuais utiliza informação futura na seleção do universo. A viabilidade atual é uma limitação separada: registe que instrumentos históricos continuam disponíveis na entidade jurídica prevista e quanto do resultado histórico veio dos que já não são utilizáveis. Para produtos de mercados de aplicações, conserve datas de publicação, histórico de versões e informação sobre a coorte de comparação, em vez de interpretar uma classificação atual como uma amostra não selecionada.

Armadilha 3: ajustamento de curvas

Considere períodos SMA de 20, 22, 25 e 30; períodos RSI de 11, 14 e 17; e um limiar ATR de 0,8 a 1,5 em incrementos de 0,1. São 4 × 3 × 8 = 96 combinações. Pesquisar muitas alternativas aumenta a probabilidade de encontrar um resultado atrativo mesmo sem existir uma vantagem duradoura. Não garante que uma pareça excecional, mas o máximo selecionado não é uma observação única pré-especificada comum.

Num exemplo sintético, a melhor combinação é SMA-22, RSI-14 e ATR 1,1, com +180% em três anos históricos. Os 60 dias seguintes produzem −8%. Este contraste pode ser compatível com o ajustamento ao ruído histórico, mas o par de rendimentos, por si só, não prova o diagnóstico; os custos, a implementação, o regime e a amostragem também têm de ser verificados. O que é certo é que o vencedor histórico foi selecionado entre 96 tentativas e o seu relatório tem de revelar esse processo.

Deteção: examine um mapa de calor dos parâmetros. Uma célula favorável isolada, rodeada de maus resultados, sugere sensibilidade que merece investigação. Um patamar amplo apenas indica que o resultado não está preso a uma única definição. Um patamar não prova valor esperado positivo. Pode continuar a ser um artefacto do mesmo conjunto de dados excessivamente explorado, ou apenas refletir parâmetros cujas pequenas alterações deixam inalterado o conjunto de operações.

Continua a ser necessária avaliação independente: um período OOS genuinamente intacto, um procedimento walk-forward pré-especificado e comparação com a referência da secção 3. Apresente o número de operações, a incerteza e todo o histórico de seleção, não apenas um mapa de calor suave ou uma média favorável. Um resultado OOS consultado repetidamente enquanto se altera o método já não está intacto.

Armadilha 4: sobreajustamento das regras

O ajustamento de curvas por parâmetros é uma forma de sobreajustamento. Outra é acrescentar regras para eliminar perdas históricas específicas. «Sem entradas depois das 13:00 Europe/London às terças-feiras» pode ter sido introduzido apenas porque duas operações perdedoras ocorreram nesse intervalo; corresponde ao limite das 14:00 do exemplo polaco com o desfasamento habitual entre o Reino Unido e a Polónia. Remover essas operações melhora essa amostra por construção, não necessariamente a estratégia subjacente.

Não apresente um filtro de sexta-feira como validado só porque três perdas passadas ocorreram às sextas-feiras. Um filtro proposto depois de examinar perdas é uma nova hipótese de investigação. Pode ser investigado nos dados de desenvolvimento, mas precisa de uma razão, de uma entrada no registo de tentativas e de avaliação independente antes de ser chamado melhoria. Fixe-o antes da avaliação utilizada para sustentar a alegação.

Este artigo de exemplo apresenta um aviso de trabalho conservador para mais de quatro parâmetros otimizados em menos de 200 operações e discute a heurística aproximada parâmetros otimizados × 30 ≤ número de operações: quatro parâmetros implicam 120 operações, oito implicam 240. São heurísticas ilustrativas de auditoria, não teoremas estatísticos ou normas de mercado. Um modelo abaixo da linha de aviso pode continuar sobreajustado, e um acima não é refutado apenas pelo rácio.

Investigue a sensibilidade, o número de variantes experimentadas, a dependência e o desempenho independente. Quando as variantes partilham observações, avalie as diferenças de desempenho com um método emparelhado ou de reamostragem adequado, em vez de pressupor que intervalos separados sobrepostos resolvem a comparação. Um resultado OOS favorável ou um mapa de calor estável são evidência a avaliar, não uma prova universal de que o sobreajustamento foi eliminado.

Armadilha 5: custos insuficientemente modelados

Um teste MT4 configurado com um spread fixo de 1 pip aplica um custo simplificado independentemente do estado histórico da liquidez. Verifique as definições e capacidades do testador instalado, em vez de pressupor que todas as plataformas ou versões utilizam a mesma predefinição. Os spreads reais podem diferir substancialmente entre sobreposições líquidas de sessões, rollover e divulgações importantes. Frações de pip, vários pips e spreads breves de dois dígitos em pips são magnitudes de cenários a investigar no feed pertinente, não cotações atuais de fornecedores nem limites garantidos. Uma estratégia concentrada numa janela noturna de pouca liquidez pode parecer lucrativa sob um pressuposto de spread fixo e falhar num modelo adequado de spread variável.

O segundo componente é o slippage. Uma execução histórica ao preço exato é um pressuposto, não uma promessa de execução real. O exemplo ilustra 0,2–0,5 pip em condições normais, 1–3 pips em torno de breakouts e 5–15 pips após divulgações. Esses intervalos não devem ser tratados como uma distribuição medida para a sua conta. Uma estimativa bruta de +0,3R poderia cair para +0,1R se os custos adicionais de implementação fossem 0,2R; a redução efetiva depende da distância inicial de risco, do tipo de ordem e das execuções medidas.

O terceiro componente é o financiamento. Uma estratégia swing que mantém posições durante três a oito dias pode incorrer em débitos ou créditos de rollover consoante o instrumento, a direção e o fornecedor. Não pressuponha que uma posição longa em EUR/USD tem sempre um determinado sinal. No cálculo ilustrativo, um encargo noturno de 3 pips com distância inicial ao stop de 20 pips equivale a 0,15R por dia cobrado. Cinco encargos de um dia totalizam 0,75R, ultrapassando uma estimativa de +0,4R antes do financiamento. Um stop de 60 pips torna o mesmo encargo igual a 0,05R por dia. Utilize os multiplicadores diários efetivos, incluindo os ajustamentos pertinentes de fins de semana e feriados, em vez de equiparar cinco noites de calendário a cinco encargos idênticos. A conversão é custo de financiamento em R = financiamento em unidades equivalentes em pips / distância inicial ao stop em pips, tratando coerentemente a dimensão da posição e a conversão cambial.

O quarto componente é a comissão. Algumas contas de spread bruto cobram separadamente por volume negociado; uma designação «ECN» não estabelece um tipo de conta obrigatório nem a respetiva tarifa. Para um valor ilustrativo de USD 6 por lote padrão e operação completa de ida e volta, 200 operações de 0,1 lote custam 200 × 0,1 × 6 = USD 120. São 12% de um saldo inicial de USD 1.000 antes de considerar quaisquer resultados dos preços. O intervalo USD 5–7 do exemplo é ilustrativo, não um levantamento atual de preços. Um teste de scalping que omita um encargo material por operação completa não pode sustentar a alegação pretendida sobre o desempenho líquido.

Exemplo ilustrativo: backtest com spread fixo de 1 pip face a um spread de divulgação de 8 pips. Os valores são sintéticos. Uma estratégia de reversão na divulgação dos dados de emprego produz 14 operações em dois anos, aproximadamente 64% de vencedoras e valor esperado de +0,8R num teste MT4 simplificado. É uma amostra pequena e fortemente dependente de eventos. O trader utiliza depois risco planeado de 0,5% num cenário real, mas o spread da primeira divulgação é oito vezes o valor modelado. O bid ou ask executável pode ultrapassar um nível de proteção apertado mesmo sem o movimento do preço médio sugerido por um gráfico de um só lado. Quatro perdas ilustrativas da conta são −2,1%, −1,8%, −2,4% e −1,9%. A sua soma é −8,2%; aplicadas sequencialmente ao capital restante, a variação da conta é aproximadamente −7,95%. Uma perda de 2,1% face a risco planeado de 0,5% equivale a −4,2R, não a −1R. Um stop não garante o seu preço de ativação: um gap, uma interrupção de cotações ou uma alteração acentuada do spread pode produzir uma perda muito maior. O modelo não representou o cenário de execução. Um teste melhor precisa de dados históricos bid/ask adequados e de pressupostos de temporização, custos e gaps; Tick Data Suite ou os dados Dukascopy podem integrar um fluxo de trabalho, mas nenhum nome de produto, por si só, o certifica, e carimbos temporais em milissegundos não garantem liquidez executável completa. Amostra pequena ou dependente: limite a conclusão sobre a vantagem.

Armadilha 6: exploração oportunista dos dados

Um investigador experimenta 30 estratégias, descarta 28 e publica dois backtests atrativos. Os cálculos individuais podem estar corretos enquanto o processo de seleção torna enganadora a sua significância aparente. Sob 30 testes independentes da hipótese nula a um limiar de 5%, o número esperado de falsos positivos é 1,5 e a probabilidade de pelo menos um é cerca de 78,5%. Isto não significa que exatamente duas ou três tenham de ter sucesso, nem que as estratégias publicadas tenham uma probabilidade quase nula de funcionar. Significa que a pesquisa completa, não apenas as sobreviventes, pertence à inferência.

Um controlo convencional do erro familiar é o ajustamento de Bonferroni: para 30 testes a um nível global de 0,05, o limiar por teste é 0.05 / 30 ≈ 0.00167.[2] Pode ser conservador, sobretudo para testes relacionados. Outras abordagens tratam objetivos diferentes, incluindo controlo da taxa de falsas descobertas e o rácio de Sharpe deflacionado.[3] Não são interruptores intercambiáveis e os seus pressupostos e dados de seleção têm de ser fornecidos. Em todos os casos, ocultar as tentativas falhadas impede uma avaliação significativa.

Deteção: mantenha um registo de cada estratégia e variante testada, incluindo resultados rejeitados. Duas vencedoras selecionadas de 30 candidatas exploratórias exigem interpretação diferente de duas avaliações genuinamente pré-especificadas. Por isso, o campo 7 da ficha de teste é obrigatório.

Um erro explicado: stop e alvo na mesma vela

Esta ambiguidade de execução pode inflacionar materialmente um backtest enquanto parece um resultado normal de uma operação. A sua importância depende da frequência com que as saídas da estratégia ficam na mesma vela registada.

O registo incorreto: uma vela H1 tem abertura 1.0850, máximo 1.0885, mínimo 1.0815 e fecho 1.0870. Assume-se uma posição longa já executada a 1.0850, com stop a 1.0820 e alvo a 1.0880, ambos a 30 pips de distância. Os dois níveis estão dentro do intervalo da vela. Um teste próprio que verifica primeiro a condição do alvo regista +1R, embora os dados OHLC não revelem qual o nível atingido primeiro. É um exemplo definido de implementação otimista, não uma afirmação de que todos os testadores utilizam alvo primeiro por predefinição.

O modelo de execução corrigido: Os OHLC, por si só, não conseguem reconstruir toda a sequência de eventos intravela. Indique como é tratada a ambiguidade:

  • Uma predefinição conservadora conta uma vela que toca ambas as saídas como uma saída por stop. Identifique-a como pessimista, não como realismo demonstrado, no campo 5 da ficha de teste.
  • Examine dados de período inferior ou ticks para as velas ambíguas. M1 ainda pode deixar ambas as saídas numa vela; dados de cotação suficientemente detalhados e com o lado correto podem resolver alguns casos, mas as execuções podem continuar a exigir pressupostos sobre o estado da ordem e a liquidez.
  • Calcule ambos os extremos: todas as operações ambíguas com stop primeiro e todas com alvo primeiro. Se esse intervalo alterar a decisão, apresente a incerteza em vez de selecionar o extremo favorável.
  • Registe o número de velas ambíguas nas limitações. Se os stops e alvos forem próximos em relação ao intervalo da vela de decisão, a resolução OHLC escolhida pode ser inadequada para a alegação.

Cálculo sintético: um teste de 200 operações contém 14 dessas velas. Tratar todas como alvo primeiro dá valor esperado de +0,18R. Alterar as 14 de +1R para −1R retira 28R, ou 0,14R por operação, deixando +0,04R. Uma reprodução suficientemente detalhada identifica nove casos de stop primeiro e cinco de alvo primeiro. Face ao caso de todos os alvos primeiro, nove operações perdem 2R cada: 18R / 200 = 0,09R, pelo que a estimativa resolvida é +0,09R. O modelo otimista sobrestima essa estimativa em 0,09R por operação, o que pode ser material em relação à margem da estratégia para custos. A vela H1, por si só, não consegue estabelecer esta sequência. Apresente a limitação e o método utilizado para a resolver, não o resultado que parecer melhor.

Seis armadilhas do backtesting com controlos específicos de momento dos dados, universo, parâmetros e custos
O histórico de tentativas e a avaliação independente sustentam a avaliação; um gráfico atrativo não estabelece uma vantagem.

3. Análise walk-forward: validação com dados limitados

A análise walk-forward, ou WFA, avalia uma sequência de janelas de desenvolvimento e de avaliação posterior. Robert Pardo discute o método de forma sistemática em The Evaluation and Optimization of Trading Strategies.[1] Em vez de selecionar parâmetros em todo o histórico, desenvolva numa janela dentro da amostra, avalie a escolha fixada numa janela posterior fora da amostra e depois avance segundo um procedimento estabelecido antecipadamente.

Uma divisão cronológica: desenvolvimento, validação e OOS

Uma ilustração simples em duas partes utiliza:

  • Cinco anos de calendário: 1 de janeiro de 2020–31 de dezembro de 2024.
  • Aproximadamente 70% para desenvolvimento: 1 de janeiro de 2020–30 de junho de 2023, ou três anos e meio.
  • Aproximadamente 30% para avaliação final: 1 de julho de 2023–31 de dezembro de 2024, ou um ano e meio, examinado pela primeira vez apenas depois de fixadas as regras selecionadas.

A divisão 70/30 é um pressuposto do cenário, não uma norma de mercado. Escolha uma divisão que forneça números utilizáveis de sinais e condições relevantes dos dois lados. A cronologia importa: nesta tarefa de previsão e trading, a avaliação segue o desenvolvimento. Misturar aleatoriamente observações de datas diferentes pode introduzir informação sobre regimes futuros e dependências no processo de investigação.

Há também três funções distintas, mesmo quando a primeira ilustração tem apenas dois blocos principais de datas:

  • Desenvolvimento dentro da amostra: pesquise, otimize e rejeite candidatos aqui. A seleção de parâmetros é legítima quando declarada como desenvolvimento.
  • Validação para seleção: uma janela posterior na fase de desenvolvimento ajuda a escolher entre candidatos. Depois de utilizada nessa escolha, faz parte da seleção, não de um teste final intacto. Reserve-a explicitamente dentro do período de desenvolvimento se utilizar o exemplo em duas partes acima.
  • Avaliação OOS final: examine-a depois de fixar a estratégia e o procedimento de avaliação. Se o seu resultado orientar um novo filtro, deixa de ser evidência independente para esse filtro revisto; registe a contaminação.

Uma janela de seleção separada é útil ao comparar vários candidatos. Não é logicamente necessária para um único candidato totalmente pré-especificado, mas a janela OOS final nunca deve tornar-se silenciosamente no local onde escolhe o vencedor. «Vamos experimentar mais um filtro» depois de ver o resultado altera a função dos dados.

Pode regressar ao desenvolvimento após um resultado OOS fraco, mas não pode alterar as regras, repetir o mesmo período e chamar ao novo resultado validação intacta. Conserve o primeiro resultado e assinale a utilização posterior como desenvolvimento ou reutilização diagnóstica. Uma repetição idêntica para verificar a reprodutibilidade não cria, por si só, uma hipótese nova; uma alteração de regras orientada pelo resultado cria.

Análise walk-forward móvel

Um único período final pode ser invulgarmente favorável ou difícil. A avaliação móvel examina o procedimento em vários períodos sucessivos, embora não possa garantir que representem todas as condições futuras:

PassoJanela de desenvolvimentoJanela de avaliação subsequente
12020-01 a 2022-12 (3 anos)2023-01 a 2023-06 (6 meses)
22020-07 a 2023-06 (3 anos)2023-07 a 2023-12 (6 meses)
32021-01 a 2023-12 (3 anos)2024-01 a 2024-06 (6 meses)
42021-07 a 2024-06 (3 anos)2024-07 a 2024-12 (6 meses)

As quatro janelas de avaliação não se sobrepõem no calendário e, em conjunto, cobrem dois anos. Isso não as torna estatisticamente independentes. São adjacentes, as janelas de desenvolvimento sobrepõem-se substancialmente e um regime persistente pode abranger vários blocos de avaliação. Fixe o procedimento de seleção móvel antes de examinar a sequência combinada; caso contrário, o próprio procedimento pode ser ajustado aos aparentes resultados OOS.

Resultados líquidos positivos em três ou quatro janelas podem justificar mais investigação da robustez, mas o número, por si só, é evidência fraca. Num modelo ilustrativo de sinais independentes e equiprováveis, pelo menos três positivos em quatro ocorrem com probabilidade 5/16 = 31,25%. A dependência altera essa probabilidade, não necessariamente numa direção universalmente previsível. Apresente o número de operações, o valor esperado líquido, a incerteza e a exposição a regimes de cada janela. Uma ou duas janelas positivas podem sugerir sensibilidade ao regime; zero ou uma não fornecem um caso convincente para ativação. Nenhum destes números substitui os critérios estatísticos e operacionais pré-especificados.

Investigação walk-forward para um trader de baixa frequência

Com cinco a dez operações por mês, uma estratégia swing produz aproximadamente 300–600 operações em cinco anos. Uma parcela OOS de 30% contém cerca de 90–180. Perto de uma taxa de acerto de 60%, um intervalo binomial independente de 95% tem uma semi-amplitude aproximada de 7–11 pontos percentuais, consoante o número e o método. Isso pode limitar a alegação sobre a taxa de acerto, mas não estabelece, por si só, um perfil de resultados lucrativo após custos.

Com 50–100 operações por mês, cinco anos fornecem cerca de 3.000–6.000 observações. A incerteza amostral pode diminuir, mas a dependência, a seleção, a cobertura dos regimes e a modelação da execução continuam importantes. Um número elevado de operações não torna automaticamente o modelo de custos a única questão por resolver.

Com uma ou duas operações por mês, uma estratégia de posição fornece apenas 60–120 operações em cinco anos, deixando aproximadamente 18–36 num segmento OOS de 30%. A incerteza resultante pode ser demasiado ampla para distinguir um valor esperado útil de uma perda. As respostas possíveis incluem:

  • Histórico mais longo: dez a quinze anos dão cerca de 120–360 operações a essas frequências, com aproximadamente 36–108 numa parcela de avaliação de 30%. Verifique se as condições de mercado e de execução mais antigas continuam relevantes.
  • Vários instrumentos: seis a dez pares de moedas podem acrescentar observações, mas eventos de moedas partilhadas e posições sobrepostas criam dependência. Valide a alegação entre instrumentos e não conte cada operação como uma nova experiência independente.
  • Bootstrap por blocos: reamostre blocos dos resultados observados para examinar a variação sob pressupostos de dependência declarados. Isto reutiliza as observações existentes; não cria nova evidência de mercado. Não consegue transformar uma amostra minúscula numa vantagem bem estabelecida apenas por gerar muitas trajetórias simuladas.

A referência: com o que está a estratégia a ser comparada?

Uma média positiva pode ser apresentada sem uma referência, mas alegar que as regras adicionais da estratégia acrescentam valor exige um comparador pertinente. Antes de interpretar «+0,25R por operação», aplique o mesmo período de dados, pressupostos de execução e contabilização de custos a alternativas explicitamente definidas:

  • O gatilho sem os filtros adicionais. Se quatro filtros não melhorarem o objetivo pré-especificado de desempenho ou risco, podem apenas reduzir a amostra e acrescentar flexibilidade. Compare mais do que a média se os filtros se destinavam a alterar o drawdown ou a exposição.
  • Entradas aleatórias com frequência, política de direção e regras de saída equivalentes. Simulações repetidas produzem uma distribuição de referência em vez de um único número convenientemente escolhido. Especifique o universo de entradas elegíveis, o procedimento de aleatorização e a semente. Uma estratégia perto do seu centro não mostrou uma distinção nessa comparação; não é uma prova universal de que todos os aspetos da estratégia são aleatórios.
  • Manter uma direção especificada durante o período. Para uma estratégia swing de um único par, isto pode revelar quanto do resultado se assemelha a deriva direcional. Utilize exposição comparável e inclua o financiamento; manter sem ajustar a escala não é automaticamente uma comparação justa do risco.
  • O mesmo procedimento com o sinal invertido. Se ambas as direções parecerem lucrativas, investigue temporização, saídas assimétricas, efeitos da volatilidade e o modelo de custos. O resultado não é automaticamente um erro, mas põe em causa a alegação de que a previsão direcional é a única fonte de valor.

Registe no campo 10 os resultados da estratégia e da referência. A análise de sensibilidade faz a mesma pergunta localmente: o que acontece quando cada parâmetro se desloca um passo em cada direção? Se a aparente vantagem desaparecer quando um limiar ATR passa de 1,1 para 1,0, investigue as alterações do conjunto de operações e a incerteza. Uma única célula atrativa num mapa de calor não é evidência forte de uma vantagem robusta.

Fixar o OOS: pastas, hashes de configuração e registo de tentativas

Um resultado OOS fraco seguido de alterações de parâmetros e de inspeção repetida desse mesmo período é desenvolvimento sobre o histórico combinado, não evidência walk-forward intacta. Uma estrutura simples de projeto ajuda a tornar a distinção visível:

  • Mantenha diretórios separados como 01_raw_data, 02_IS_optimization e 03_OOS_locked. Acrescente, quando utilizado, um subconjunto de validação para seleção claramente identificado e os seus limites.
  • Antes da primeira execução OOS final, registe hashes completos da especificação, do código, dos parâmetros, do modelo de custos e dos limites de datas em 03_OOS_locked/run_001.lock. Depois acrescente o resultado e os metadados da execução sem substituir os dados de entrada originais.
  • Um candidato alterado recebe um novo registo de execução, como run_002.lock, e uma nota de que o período anteriormente examinado já não é evidência intacta para a revisão. Não apague o registo histórico válido do que produziu o primeiro candidato fixado.
  • Cada janela de avaliação final tem uma primeira inspeção sob o procedimento pré-especificado. As verificações idênticas de reprodutibilidade distinguem-se das novas variantes orientadas pelos resultados. Planeie antecipadamente as janelas móveis e registe quando um bloco de avaliação anterior passa a ser dados passados legítimos para uma etapa de desenvolvimento posterior programada.

Um nome de ficheiro terminado em .lock ou um hash não impede fisicamente alterações ou consultas. Fornece um rasto de auditoria quando associado a ficheiros preservados e a um acesso disciplinado. Um bloqueio aparente sem registo de quem examinou que dados não prova independência.

O que fazer após um resultado OOS fraco

Não acrescente um filtro apenas porque o resultado é desconfortável. Siga uma sequência de decisão documentada:

  1. Aceite e conserve o resultado. O candidato atual não cumpriu o critério de validação previsto. Um resultado pode ser inconclusivo em vez de conclusivamente negativo; utilize o critério escrito antes do teste.
  2. Regresse ao conceito. Reveja a hipótese, o ciclo de desenvolvimento e a definição de vantagem nas primeiras três secções do artigo 15.3. Verifique se o mecanismo proposto continua a fazer sentido e se defeitos de implementação ou dos dados explicam o resultado.
  3. Se o mecanismo continuar plausível, investigue a dependência do regime como uma nova pergunta de investigação. Quatro a seis janelas móveis pré-especificadas podem ajudar. Duas janelas de tendência favoráveis e quatro de consolidação desfavoráveis sugerem uma possível interação com o regime, não autorização imediata para reativar sempre que surgir uma tendência. Cada janela precisa da sua dimensão amostral e do intervalo de valor esperado líquido. Três janelas positivas com apenas oito operações cada podem continuar profundamente inconclusivas. Um filtro de regime descoberto a partir desses resultados precisa de uma especificação versionada e de avaliação independente.
  4. Se o conceito falhar, retire o candidato. Preserve o motivo e o histórico de tentativas, depois passe a outra ideia em vez de acumular exceções em torno de uma alegação rejeitada.
Exemplo ilustrativo: «auditorias» repetidas transformam uma estratégia num ajustamento a um único trimestre. São valores sintéticos. Uma estratégia candidata de breakout GBP/USD tem três janelas positivas em quatro na WFA histórica; esse número de sinais positivos, por si só, não estabelece um sistema estatisticamente saudável. O seu primeiro trimestre fraco contém 30 operações com valor esperado de −0,15R. Com desvio-padrão amostral próximo de 1,4R, um intervalo de 95% por aproximação normal tem uma semi-amplitude de cerca de 0,50R, abrangendo aproximadamente −0,65R a +0,35R. O resultado não resolve o sinal do valor esperado sob essa aproximação. Ainda assim, o trader começa alterações semanais: a semana 2 remove aberturas de segunda-feira após duas perdas; a semana 5 exclui ATR abaixo de 0.0080 sem sequer registar as unidades e o período temporal do indicador; a semana 9 remove entradas antes de um limite horário recém-selecionado. Três regras originais tornam-se oito. Uma repetição sobre o mesmo trimestre mostra agora 61% de vencedoras e +0,4R; o trimestre real seguinte perde 12%. O exemplo ilustra seleção orientada pelo resultado, não prova que a estratégia original era sólida nem que uma alteração específica causou a perda posterior. Uma verdadeira alteração de regras precisa de um motivo diagnóstico documentado e de uma hipótese nova, não apenas de remover algumas operações desconfortáveis. Limites de segurança pré-especificados e defeitos demonstráveis nos dados ou na execução podem justificar uma pausa imediata sem esperar por um intervalo estreito do valor esperado. Alterar as regras de investigação continua a exigir uma nova versão e avaliação independente. Amostra pequena ou dependente: limite a conclusão.
Análise walk-forward: janelas móveis dentro e fora da amostra Cada janela azul cobre três anos. A sua janela vermelha de avaliação cobre os seis meses seguintes. As janelas avançam seis meses de cada vez; uma calibração posterior pode incluir dados de avaliações anteriores, mas cada intervalo avaliado segue a sua própria calibração fixada. Análise walk-forward: quatro janelas IS/OOS sucessivas ao longo de cinco anos 2020 2021 2022 2023 2024 2025 IS 1: 2020-01 → 2022-12 OOS 1 IS 2: 2020-07 → 2023-06 OOS 2 IS 3: 2021-01 → 2023-12 OOS 3 IS 4: 2021-07 → 2024-06 OOS 4 Dentro da amostra: calibração de parâmetros, três anos Fora da amostra: seis meses, parâmetros fixados
Quatro janelas móveis de desenvolvimento/avaliação. Cada bloco de desenvolvimento abrange três anos, cada bloco de avaliação seguinte seis meses, e o procedimento avança seis meses. Os quatro blocos de avaliação cobrem janeiro de 2023–dezembro de 2024 sem sobreposição de datas. Não são necessariamente estatisticamente independentes. Apresente o número de operações e a incerteza do valor esperado líquido de cada um, não apenas o número de janelas positivas. Apenas esquemático; não são apresentados dados de desempenho.
Walk-forward: quatro janelas. IS sobrepostos; datas OOS separadas não garantem independência. Compare uma referência pré-especificada no mesmo período e universo e com o mesmo modelo de custos.
IS sobrepostos; datas OOS separadas não garantem independência. Compare uma referência pré-especificada no mesmo período e universo e com o mesmo modelo de custos.
A barreira prática ao trabalho walk-forward. O suporte das ferramentas varia. O testador MT5 inclui uma divisão histórica Forward, com opções descritas na sua documentação como metade, um terço, um quarto ou um limite personalizado.[6] É uma reserva dentro dos dados históricos, não observação prospetiva de cotações que chegam, e uma divisão única não é um procedimento WFA móvel completo. Outras plataformas ou fluxos próprios em Python podem suportar ou orquestrar as execuções necessárias; verifique as suas capacidades efetivas em vez de pressupor que todas as plataformas gráficas referidas fornecem WFA idêntica. A estimativa do exemplo de 8–20 horas para aprender um fluxo de trabalho e 4–8 horas para um primeiro teste é uma margem ilustrativa de planeamento, não uma norma medida do setor. A WFA pergunta se o processo de seleção fixado resiste às janelas posteriores em vez de apenas à sua amostra de desenvolvimento. Não consegue revelar um defeito de custos que continue ausente do modelo de todas as janelas. No exemplo dos dados de emprego, uma avaliação OOS com um modelo de execução adequado à janela de divulgação poderia ter exposto os pressupostos antes das perdas reais ilustrativas; o walk-forward, por si só, não teria garantido esse diagnóstico.

4. Análise de Monte Carlo: uma trajetória histórica não mostra o quadro completo

Um backtest regista uma sequência de oportunidades e resultados. Uma amostra de estratégia de cinco anos pode conter 100 operações; um histórico de mercado diferente poderia ter produzido 95 ou 110, a outros preços e com outros resultados. A reamostragem não reconstrói todos esses mercados possíveis. Faz uma pergunta mais restrita: como variam os resultados sob um modelo explicitamente escolhido a partir das observações que já tem?

Uma simulação produz uma distribuição em vez de uma estimativa pontual. Essa distribuição pode revelar sensibilidade oculta pela ordenação original, mas é condicional ao modelo e à amostra de entrada. Não é uma medição completa do risco real nem uma garantia de que os resultados futuros fiquem dentro da sua envolvente.

Dois métodos básicos de reamostragem

Bootstrap de operações individuais: pegue numa lista de, por exemplo, 200 resultados em R —+1,5R, −1R, +2,2R e assim por diante— e amostre 200 observações com reposição. Repita 1.000 vezes para construir 1.000 trajetórias. Tanto a ordem como a frequência de determinados resultados podem mudar.

Isto difere de uma permutação aleatória sem reposição. Reordenar os mesmos resultados fixos em R deixa a sua soma inalterada. Com dimensionamento por fração constante e sem restrições dependentes da trajetória, também deixa inalterado o produto dos fatores de capital, embora o drawdown possa mudar. Não descreva permutação e bootstrap como procedimentos intercambiáveis.

Bootstrap por blocos: amostre blocos contíguos, por exemplo dez operações consecutivas de cada vez, em vez de operações isoladas. Preserva alguma dependência dentro de cada bloco, mas quebra relações nas novas fronteiras de junção. Ser ou não mais adequado depende das dependências observadas da estratégia. A dimensão do bloco é um parâmetro a investigar; compare opções como 5, 10 e 20 em vez de selecionar a que dá o resultado mais tranquilizador.

O que calcular a partir de 1.000 trajetórias simuladas

  • Mediana do rendimento final: o centro da distribuição simulada de rendimentos para o horizonte indicado. Chame-lhe anual apenas se o horizonte e o modelo temporal representarem genuinamente um ano.
  • O quinto percentil do rendimento: um quantil da cauda inferior dentro da simulação. Não é o pior resultado possível nem um «pior resultado realista» garantido. Empates e interpolação em amostras finitas podem alterar a fração estritamente abaixo dele.
  • O percentil 95 da magnitude do drawdown: um resumo da cauda superior das quedas simuladas do pico ao mínimo. Compare-o com os limites de risco pré-especificados do plano sem o tratar como um teto.
  • A taxa de ultrapassagem de um limiar definido: por exemplo, a proporção de trajetórias cujo drawdown excede 30%. Identifique o limiar e se é medido a partir do saldo inicial ou de um máximo atingido até cada momento. Um drawdown de 30% não é literalmente insolvência.

Valores ilustrativos, não resultados históricos: suponha que a trajetória original de um modelo anual apresenta rendimento de +45% e drawdown máximo de 12%. Uma simulação hipotética de 1.000 trajetórias dá rendimento mediano de +38%, rendimento no quinto percentil de +8%, magnitude do drawdown no percentil 95 de 22% e uma taxa de 4% de drawdowns superiores a 30%. Significa que cerca de uma em cada 25 trajetórias deste modelo ultrapassa o limite escolhido; não estabelece uma probabilidade real de ruína de 4%. Cada drawdown percentual já pressupõe uma política de dimensionamento de posições, pelo que não é uma propriedade apenas do sinal de entrada.[4]

Utilize um conjunto coerente de definições das métricas

Antes de executar o código, defina valor esperado em R, fator de lucro, drawdown e respetiva duração, fator de recuperação e qualquer pontuação do tipo SQN. O artigo 15.9 é a referência do capítulo para fórmulas e denominadores. Três pontos são essenciais aqui:

  • O drawdown utiliza o máximo atingido até cada momento, não o máximo global final. Defina H_t = max(capital até t), D_t = (H_t - E_t) / H_t e maxDD = max(D_t). Para 100 → 80 → 120 → 110, a maior queda a partir de um máximo anterior é 20%, de 100 para 80. Utilizar o máximo posterior de 120 e o mínimo anterior de 80 dá 33,3%, o que não é o drawdown da trajetória.
  • Indique a curva e a frequência de amostragem. O capital avaliado a preços de mercado, incluindo posições abertas, difere do saldo das operações fechadas. A amostragem por tick, diária e após cada operação pode produzir máximos diferentes. «Drawdown de 12%» sem essas definições não é diretamente comparável com outro relatório ou com o seu plano.
  • Indique a convenção da pontuação. Uma pontuação de média de R/desvio-padrão multiplicada por √N varia com N. As variantes com teto e sem teto são quantidades diferentes. Utilize a mesma convenção e N comparáveis, e não trate uma pontuação como substituto da incerteza ou como regra de afetação.

Mantenha também explícitas outras convenções de apresentação. O fator de lucro monetário pode não ser igual ao fator de lucro em R quando a unidade monetária de risco varia. Sharpe exige um intervalo de rendimento definido, uma referência e pressupostos de anualização; R por operação não é automaticamente uma série de rendimentos de calendário. Calmar exige rendimento anualizado declarado e drawdown num horizonte comparável. Inclua perdas de cauda, duração das sequências de perdas, duração do drawdown e estados operacionais por resolver, em vez de reduzir o relatório a um só rácio.

Um exemplo Python de bootstrap por blocos

Pode executar o exemplo num ambiente Python local com NumPy e pandas, ou num serviço de notebooks como Google Colab. O Colab oferece um ambiente de notebooks no navegador com limites de utilização; consulte a sua informação atual sobre o serviço e o armazenamento. Crie um notebook, cole o código numa célula e execute-o. Os dados de entrada predefinidos são sintéticos, pelo que não são necessários dados pessoais de trading para ver o formato dos resultados.

Para utilizar o seu próprio diário, prepare um CSV com uma coluna numérica R e uma operação completa por linha, por ordem cronológica. Retire o comentário da linha de importação e forneça o ficheiro. Cada valor R deve incluir os custos pertinentes uma única vez e utilizar o risco monetário positivo planeado antes da entrada. Remova os identificadores pessoais antes de ponderar um carregamento na nuvem e mantenha locais as exportações sensíveis da conta se não quiser que sejam armazenadas num serviço de terceiros.

import numpy as np
import pandas as pd

def block_bootstrap_strategy(trades_R, n_simulations=1000, block_size=10,
                             risk_per_trade=0.01, seed=42):
    """Reamostrar blocos contíguos e não circulares dos resultados líquidos das operações em R.

    trades_R: resultados cronológicos finitos, uma operação completa por valor.
    n_simulations: número de trajetórias sintéticas, não novas observações do mercado.
    block_size: dimensão do bloco contíguo; investigar 5, 10 e 20.
    risk_per_trade: fração fixa do capital de cada momento arriscada por operação.
    seed: dado de reprodutibilidade; registar também a versão NumPy.

    Os rendimentos abrangem len(trades_R) operações, NÃO são automaticamente anuais.
    Os drawdowns são amostrados após cada operação e guardados como valores negativos.
    """
    trades_R = np.asarray(trades_R, dtype=float)
    if trades_R.ndim != 1 or trades_R.size == 0:
        raise ValueError("trades_R tem de ser um array unidimensional não vazio")
    if not np.isfinite(trades_R).all():
        raise ValueError("trades_R tem de conter apenas valores finitos")
    for name, value in (("n_simulations", n_simulations),
                        ("block_size", block_size)):
        if isinstance(value, bool) or not isinstance(value, (int, np.integer)):
            raise ValueError(name + " tem de ser um inteiro positivo")
        if value < 1:
            raise ValueError(name + " tem de ser um inteiro positivo")
    if not np.isfinite(risk_per_trade) or not 0 < risk_per_trade < 1:
        raise ValueError("risk_per_trade tem de estar entre zero e um")

    rng = np.random.default_rng(seed)
    n_trades = len(trades_R)
    # Corresponder a este exemplo: limitar um bloco demasiado grande à dimensão da amostra.
    # Um bloco da amostra completa não tem diversidade de reamostragem; apresentar essa limitação.
    block_size = min(block_size, n_trades)
    n_blocks = (n_trades + block_size - 1) // block_size
    final_returns, max_drawdowns = [], []
    threshold_breaches = 0

    for _ in range(n_simulations):
        # Amostrar posições iniciais com reposição; preservar cada bloco.
        starts = rng.integers(0, n_trades - block_size + 1, size=n_blocks)
        sample = np.concatenate(
            [trades_R[s:s + block_size] for s in starts]
        )[:n_trades]  # Manter exatamente o número original de operações.

        equity, equity_curve = 1.0, [1.0]
        for outcome in sample:
            # Absorver em zero se uma perda esgotar o capital. Não é um modelo de dívida
            # nem afirma que se aplique proteção legal contra saldo negativo.
            equity *= max(0.0, 1.0 + outcome * risk_per_trade)
            equity_curve.append(equity)
        equity_curve = np.asarray(equity_curve)
        peak = np.maximum.accumulate(equity_curve)
        drawdown = (equity_curve - peak) / peak
        worst = float(drawdown.min())
        final_returns.append(equity - 1.0)
        max_drawdowns.append(worst)
        if worst < -0.30:  # Estritamente mais profundo do que uma queda de 30% do máximo atingido até cada momento.
            threshold_breaches += 1

    return {
        "trades_per_path": n_trades,
        "effective_block_size": block_size,
        "median_return": float(np.median(final_returns)),
        "p05_return": float(np.percentile(final_returns, 5)),
        "p95_return": float(np.percentile(final_returns, 95)),
        # DD negativo: o quinto percentil é a magnitude adversa do percentil 95.
        "p95_max_dd": float(np.percentile(max_drawdowns, 5)),
        "p99_max_dd": float(np.percentile(max_drawdowns, 1)),
        "prob_dd_over_30pct": threshold_breaches / n_simulations,
        "mean_return": float(np.mean(final_returns)),
    }

# Dados próprios opcionais: um valor R líquido por operação concluída, ordem cronológica.
# trades = pd.read_csv("my_results.csv")["R"].to_numpy(dtype=float)

# Demonstração SINTÉTICA, não resultados de uma estratégia de mercado.
# 20 valores: 6 vencedoras, total +2R, média +0.10R; domina um valor atípico de +7.2R.
toy = np.array([-1.0, -1.0, 3.1, -1.0, -1.0, -1.0, 0.9, -1.0, 7.2, -1.0,
                -1.0, -0.6, 1.4, -1.0, -1.0, -1.0, 2.3, -1.0, -1.0, 0.7])
trades = np.tile(toy, 10)  # Repetição artificial, NÃO 200 observações independentes.
# Para utilizar o seu CSV, substituir a linha acima pela linha opcional de importação.

print("Versão NumPy:", np.__version__)
for risk in (0.01, 0.02):
    result = block_bootstrap_strategy(trades, n_simulations=2000,
                                      block_size=10, risk_per_trade=risk, seed=42)
    print(f"Fração de risco por operação: {risk:.0%}")
    print(f"Rendimento mediano em {result['trades_per_path']} operações: {result['median_return']:.2%}")
    print(f"Rendimento no quinto percentil: {result['p05_return']:.2%}")
    print(f"DD adverso no percentil 95: {result['p95_max_dd']:.2%}")
    print(f"Trajetórias com DD mais profundo do que 30%: {result['prob_dd_over_30pct']:.2%}")

O cálculo testa como a amostra escolhida se comporta sob reamostragem e a política de dimensionamento especificada. A sequência de demonstração de 20 valores soma +2R e tem média de +0,10R; remover a sua observação de +7,2R altera materialmente o quadro. Repeti-la dez vezes cria uma demonstração de código com 200 entradas e periodicidade artificial, não dez vezes mais evidência independente.

Resultados de exemplo verificados com NumPy 2.5.3, semente 42 e 2.000 trajetórias: com risco de 1%, o rendimento mediano em 200 operações é +19,56%, o rendimento no quinto percentil −4,11%, o drawdown adverso no percentil 95 −17,66%, e nenhuma trajetória simulada excede 30% de drawdown. Com risco de 2%, os valores correspondentes são +32,25%, −13,71%, −33,70% e 11,05% das trajetórias além do limiar. Os drawdowns adversos no percentil 99 são aproximadamente −21,09% e −39,51%, respetivamente. São resultados sintéticos em 200 operações, não previsões anuais. Registe o código e a versão NumPy, além da semente: o gerador não promete uma sequência inalterada em todas as versões futuras. A relação importante é que o drawdown percentual depende do dimensionamento e também da sequência de R.

Registe os critérios de simulação no campo 9 da ficha de teste antes de examinar os resultados. Uma política ilustrativa poderia exigir rendimentos positivos na mediana e no quinto percentil, o quantil adverso do drawdown abaixo do limite do plano e menos de 1% das trajetórias simuladas a ultrapassar um limiar de drawdown de 30%. São regras de decisão do cenário, não normas de mercado. Falhar significa que o candidato não passa esse modelo e essa escala sob os critérios escolhidos; não é um convite para deslocar os limiares depois.

Limitações importantes: a reamostragem não consegue criar uma perda individual mais extrema do que o pior resultado de entrada, embora perdas repetidas possam produzir um drawdown acumulado mais profundo. Não consegue inventar uma crise de liquidez não observada, um novo regime de financiamento ou uma falha de execução ausente. Zero ultrapassagens do limiar numa simulação finita não implica risco real nulo. A curva do código após cada operação omite a variação do capital dentro da operação, a liquidação por margem, as posições sobrepostas e a dívida residual. O seu limite inferior de capital zero é uma convenção de modelação, não uma proteção legal da conta.

A mesma percentagem, um montante monetário diferente

Uma queda de 15% sobre PLN 5.000 é PLN 750; sobre PLN 50.000 é PLN 7.500. Mantém-se a moeda do cenário polaco original, sem conversão cambial. A mesma aritmética aplica-se em qualquer moeda da conta: 15% de 5.000 unidades são 750 e 15% de 50.000 são 7.500. A percentagem é idêntica, enquanto as consequências monetárias e as restrições do titular podem diferir substancialmente.

O drawdown aceitável e a dimensão da posição em diferentes escalas de conta pertencem ao artigo 15.11; os limites diários, semanais e mensais pertencem ao plano no artigo 15.2. Para este teste, compare o quantil simulado com o limite documentado antes da execução, não com o montante que passa a estar disposto a tolerar depois de ver o resultado.

Porquê considerar blocos em vez de reamostragem independente?

A concentração de volatilidade diz respeito à magnitude dos movimentos. Não significa automaticamente que uma operação perdedora torne mais provável perder na seguinte. A dependência nos sinais e resultados é uma propriedade a investigar na sua estratégia, não um facto universal a pressupor. Um regime partilhado, pares correlacionados ou um único evento macro podem criar sequências que a reamostragem independente separa.

A amostragem por blocos conserva sequências locais e pode, por isso, dar uma análise de sensibilidade mais pertinente quando essa dependência importa. Não preserva todas as relações de longo alcance e não há garantia de que o erro do bootstrap independente subestime o risco em todos os conjuntos de dados. Compare dimensões de bloco de 5, 10 e 20, revele todos os resultados e examine a estrutura de dependência original. Um quantil adverso do drawdown que aumenta com blocos mais longos sugere sensibilidade ao esquema de reamostragem; não prova, por si só, um modelo de dependência específico. Pouca mudança neste pequeno exercício de sensibilidade também não prova que a independência seja inofensiva em todas as condições.

Bootstrap por blocos: 2000 trajetórias de 200 resultados. Sequência de demonstração de 20 repetida 10×; bloco 10, semente 42. A faixa pontual não é um percentil do DD máximo. Horizonte: 200 operações, não um ano; sem garantia sobre perdas futuras.
Sequência de demonstração de 20 repetida 10×; bloco 10, semente 42. A faixa pontual não é um percentil do DD máximo. Horizonte: 200 operações, não um ano; sem garantia sobre perdas futuras.

5. Testes prospetivos: demo, negociação simulada e piloto real limitado

As etapas seguintes aumentam o realismo e a consequência financeira de um erro. Encurtar o processo não remove os pressupostos não testados; deixa mais deles por descobrir depois de os fundos estarem expostos. A sequência é um enquadramento educativo, não uma exigência de que todos os candidatos acabem por avançar para negociação real.

Dois significados diferentes de «forward»

Distinga sempre estes casos num relatório de teste:

  • Reserva histórica posterior: o testador separa uma parte posterior de um conjunto de dados existente, seleciona parâmetros na parte anterior e avalia-os no segmento reservado. O MT5 chama Forward à sua opção de divisão histórica.[6] Examina outra janela histórica sob o modelo do testador. Não mede a execução futura efetiva.
  • Observação prospetiva: a estratégia fixada funciona à medida que chegam observações após a data de fixação. As decisões originais com carimbo temporal não podem utilizar observações que ainda não existem. Preserve esses registos, no entanto, porque revisões posteriores ou reclassificação retrospetiva ainda podem contaminar a avaliação. Especifique se as ordens são simuladas, apenas registadas no papel ou efetivamente executadas em real; só a última modalidade fornece execuções reais.

Registe a modalidade e a data de fixação no campo 4 da ficha de teste. Sem essa data, «funcionou em dados novos» é indistinguível de «funcionou em dados já disponíveis quando as regras foram escolhidas».

Etapa 1: demo nos dados que chegam

O ambiente demo de um fornecedor pode assemelhar-se à sua plataforma real sem partilhar todos os feeds, regras de execução ou restrições. Verifique essas diferenças em vez de pressupor condições idênticas. A demo é útil porque:

  • Erros de ordens e de estratégia não fazem perder diretamente capital real da conta.
  • Pode descobrir um defeito após dez operações e regressar ao desenvolvimento sem perda financeira de trading. Registe a nova versão e conserve as observações antigas em vez de misturar a regra revista na mesma avaliação.
  • Pode testar a integração de ferramentas: alertas, arranque do EA, implementação de regras, tratamento do estado das ordens e exportações do diário.

As suas limitações incluem:

  • Execuções simuladas: o slippage e o tratamento da liquidez podem diferir da execução real. Não deduza o motivo de um fornecedor a partir de uma execução demo favorável; identifique a diferença mensurável.
  • Consequências financeiras diferentes: podem continuar a existir mecanismos simulados de margem e stop-out, mas a ausência de uma perda monetária real não reproduz a reação do utilizador à exposição com capital real.
  • Comportamento incompleto dos pedidos: o tratamento de rejeições, recotações e execuções parciais pode diferir. Depende da modalidade de execução e das definições do produto, não apenas de uma designação comercial ECN ou STP.

Uma etapa demo ilustrativa de 30 dias e 30 operações faz perguntas práticas: os alertas dispararam à hora prevista, o EA perdeu sinais, o spread observado diferiu do modelo e o operador alterou manualmente as regras? Esses números são limiares do cenário, não normas de mercado. Com um sinal a cada duas semanas, o mesmo objetivo de observação demora muitos meses. Mesmo 30 operações corretas sustentam sobretudo uma verificação da infraestrutura e do processo; não estabelecem uma estimativa precisa do valor esperado.

Registe os resultados prospetivos desde o primeiro dia. Reconstruir manualmente um mês de operações favorece omissões e torna a reconciliação pouco fiável. O esquema do diário, as importações e a comparação com os extratos do fornecedor pertencem ao artigo 15.9. Preserve, no mínimo, o momento do sinal, os momentos do pedido e da execução, os preços executáveis, o slippage, os encargos, a versão do setup e o risco monetário inicial. Sem contabilização compatível, o múltiplo de R prospetivo não pode ser comparado com o R do teste.

Etapa 2: negociação simulada num feed em tempo real, opcionalmente 30–60 dias

Um processo em paralelo ou de negociação simulada regista todos os sinais elegíveis e calcula um resultado hipotético utilizando um modelo explícito de spread, slippage e execução sem colocar ordens. Proporciona controlo sobre o modelo e evita depender de execuções demo não explicadas. Não produz evidência de execução efetiva e pode não revelar se o operador teria enviado a ordem com dinheiro real em jogo. A duração ilustrativa de 30–60 dias é opcional e depende da pergunta que permaneça por resolver após a demo. Não é automaticamente uma fonte adicional de observações independentes do mercado se abranger os mesmos sinais.

Etapa 3: um piloto real limitado autorizado separadamente

O cenário desenvolvido ilustra uma pequena conta com capital de PLN 1.000–2.000 e ordens de 0,01–0,05 lote padrão. Conserve-os como montantes do cenário polaco, não como recomendação de depósito adequado ou dimensão da posição. A dimensão válida deve resultar da distância ao stop, do valor do pip, dos encargos, dos requisitos de margem e do orçamento de perdas do titular. Mesmo 0,01 lote pode ser demasiado para uma conta pequena ou um stop largo. Se a dimensão mínima do fornecedor não couber no orçamento autorizado, o resultado correto é não realizar esse piloto aí.

O objetivo de uma etapa real limitada é investigar a implementação efetiva com uma exposição planeada delimitada e explicitamente aceite, não testar se pode proporcionar rendimento. Pode medir:

  • Execução efetiva: spreads observados, slippage, latência, rejeições e quaisquer recotações na modalidade da conta real.
  • Cumprimento operacional: saídas manuais fora das regras, alterações de stops, sinais ignorados e outros desvios. Defina o denominador da taxa de erro: sinais elegíveis, ordens enviadas e operações concluídas são populações diferentes.
  • Financiamento efetivo: reconcilie os débitos e créditos com a especificação aplicável do símbolo real em vez de uma tabela demo.
  • Integração em condições reais: confirme que o EA, os alertas, os registos e os procedimentos de controlo se comportam como previsto.

As metas do exemplo de 90 dias e 60–100 operações são pressupostos ilustrativos de planeamento. Pré-especifique como serão comparadas as estimativas históricas e prospetivas, permitindo a incerteza nas duas amostras. Perguntar apenas se a nova média fica dentro do intervalo de confiança da média histórica não é uma comparação adequada de duas amostras. A sobreposição de dois intervalos separados também não é matematicamente equivalente a um intervalo de confiança da sua diferença conter zero.

Estime a diferença com um método adequado aos dados e à dependência e defina uma margem aceitável de deterioração se a pergunta disser respeito à equivalência prática. Um intervalo de diferença que contém zero significa que a diferença está por resolver; não prova que as duas implementações sejam equivalentes. Juntamente com essa comparação, exija comportamento de execução compreendido, cumprimento dos limites de risco e uma taxa medida e aceitável de violações das regras. Um percentil de drawdown simulado pode ser um gatilho de revisão predefinido, não um limite futuro inviolável. Registe todos estes critérios antes de começar.

Critérios de transição

As durações e os números abaixo mantêm este cenário de exemplo. As regras efetivas de decisão pertencem ao campo 9 da ficha de teste; a tabela não autoriza avançar apenas porque decorreram dias suficientes.

DePossível etapa seguinteFiltro ilustrativo
Investigação históricaObservação demo ou em paraleloCritérios OOS/WFA pré-especificados cumpridos; Monte Carlo: rendimento no percentil 5 > 0, com taxa de ultrapassagem do limiar abaixo do limite registado na ficha de teste (campo 9); modelo de custos realista. Reveja a incerteza e as limitações antes de avançar.
DemoPiloto real limitado autorizado separadamenteIlustrativamente, 30+ dias e 30+ operações; reconciliação de sinais e verificações de integração aprovadas; diferenças observadas explicadas; uma comparação adequada não viola o critério pré-especificado de deterioração. Confirme uma dimensão mínima viável e um orçamento explícito de risco real.
Piloto real limitadoQualquer escala autorizada pelo plano de trading (15.2)Ilustrativamente, 90+ dias e 60+ operações; custos reais e diferenças dos resultados avaliados com incerteza; drawdown dentro dos controlos do plano; desvios medidos aceitavelmente baixos; nenhum defeito operacional por resolver. Aumentar a escala exige uma decisão separada, não uma transição automática.

O ramo que falta em muitos planos é «não passar a real». Falhar um filtro é um resultado a registar, não um convite a baixar o critério. Este calendário de exemplo totaliza quatro a oito semanas de trabalho histórico, 30 dias de demo e 90 dias de piloto: 148–176 dias, aproximadamente cinco a seis meses, excluindo a etapa opcional de simulação e quaisquer pausas. Esta aritmética é um exemplo de planeamento, não uma garantia de evidência suficiente nem uma previsão de que saltar uma etapa tenha de produzir uma perda. Saltá-la deixa as suas perguntas sem resposta.

Viabilidade operacional: o que um modelo histórico não testa

Uma estratégia que exige uma decisão às 13:30 Europe/London não é operacionalmente viável para alguém indisponível em reuniões até às 16:00 nesse mesmo fuso. São os equivalentes do exemplo polaco original das 14:30 e 17:00, não um calendário universal de eventos. Um inventário prospetivo de sinais revelará as oportunidades perdidas. Registe-as como não execuções; não as remova para fingir que a investigação e a prática utilizaram o mesmo conjunto de oportunidades.

O artigo 15.5 abrange janelas de decisão compatíveis com o trabalho, alertas e períodos temporais superiores. O artigo 15.1 abrange continuidade do posto de trabalho, monitorização do VPS e arranque; o artigo 15.3 regista os pressupostos de temporização e execução da estratégia. São responsabilidades diferentes, todas relevantes para a implementação.

Um stop no servidor não é um preço de execução garantido. Um stop aceite e mantido pelo fornecedor pode continuar ativo quando o terminal local ou o VPS se desconecta. Uma regra trailing calculada localmente normalmente deixa de atualizar quando o seu processo para, ficando apenas o último nível no servidor aceite. Verifique este comportamento para a conta, instrumento e tipo de ordem efetivos. Um gap ou uma cotação em falta ainda podem produzir uma execução pior do que o stop e um resultado inferior a −1R. O campo 5 da ficha de teste tem de representar essa possibilidade. Não pressuponha que clicar num controlo local prova que o fornecedor aceitou a proteção.
Separe o imposto sobre o rendimento do cálculo do desempenho de trading. O teste apresenta resultados de trading após os custos pertinentes de execução e financiamento, antes de qualquer cálculo separado do imposto sobre o rendimento. A discussão original das obrigações declarativas polacas está no capítulo 14, em polaco; o tratamento internacional depende da jurisdição e do estatuto. Um imposto ou encargo sobre transações efetivamente cobrado numa ordem continua a ser um custo de trading e não deve ser omitido apenas porque o imposto sobre o rendimento é contabilizado separadamente.
Exemplo ilustrativo: as execuções demo não reproduzem a conta com capital real. São valores sintéticos. Um scalper EUR/USD com alvo apertado parece lucrativo num ambiente demo simplificado, mas encontra aproximadamente 1,5 pips de slippage adverso na entrada e na saída num cenário real. A diferença de 3 pips por operação completa é 0,5R quando a distância inicial de risco é 6 pips, transformando um pressuposto +0,3R em −0,2R antes de quaisquer outras diferenças. Esta aritmética não prova um mecanismo específico de encaminhamento. Designações como B-Book, ECN e STP não estabelecem qualidade de execução e o slippage, por si só, não consegue diagnosticar «last look». Examine carimbos temporais, pedidos rejeitados, política de execução e dados de cotação antes de atribuir a causa ou selecionar outro fornecedor. Numa ilustração de dimensão linear, uma perda de USD 24 a 0,01 lote seria USD 2.400 a 1 lote: 100 vezes o volume e 100 vezes o resultado baseado nos preços, pressupondo execuções inalteradas e custos proporcionais. A execução a dimensões maiores não tem de permanecer idêntica. Um piloto de seis semanas pode identificar uma discrepância concreta mesmo enquanto a vantagem a longo prazo permanece incerta. A lição é medir a implementação real pretendida, não pressupor que mudar a designação da conta resolve o problema.
Ciclo de teste da estratégia: hipótese, especificação fixada, verificações dos dados e do código, investigação histórica, avaliação independente, observação dos dados que chegam, comparação e decisão. Alterações de regras iniciam uma nova versão; não passar a real é um resultado igualmente válido. Oito passos ordenados de investigação conduzem a uma decisão. Uma regra alterada regressa a uma nova hipótese e especificação em vez de reescrever um resultado anterior. Qualquer passagem a risco real exige uma decisão separada e explícita. Ciclo de teste: oito passos, um ciclo de nova versão e uma saída válida de «não passar a real» 1. Hipótese mecanismo e condições o que a refutaria 2. Especificação fixada regras, parâmetros, hash critérios de avaliação escritos 3. Verificações dos dados e código fonte, falhas, tempo, custos antecipação, repintura 4. Investigação histórica IS + validação registar todas as tentativas 5. Avaliação independente um teste OOS intacto + comparação com referência 6. Teste dos dados que chegam demo ≠ execução real piloto real só se autorizado 7. Comparar com os critérios utilizar a ficha de teste fixada incerteza, não apenas uma média 8. Decisão continuar / suspender / rejeitar Regra alterada → nova versão → novo teste; conservar o resultado antigo Dimensão pelo plano (15.2) uma opção, não uma recompensa Não passar a real um resultado igualmente válido Passar um teste não basta: não garante sucesso nem exige negociação real.
O ciclo completo de teste: oito passos, um caminho de retorno para «alteração de regras → nova versão → nova avaliação» e duas decisões igualmente válidas na revisão final. Uma regra revista não repara a evidência da versão antiga. Defina os critérios de transição antes de executar as etapas e mantenha a opção de não passar a real. Apenas esquemático; sem dados de desempenho.
Exemplo ilustrativo: saltar a demo e o piloto limitado. Um trader passa seis semanas a investigar uma estratégia candidata de reversão GBP/JPY, obtém uma estimativa OOS de +0,4R e uma simulação atrativa e passa diretamente a um cenário com capital de USD 5.000 a risco planeado de 0,5%. As primeiras 30 operações contêm 11 ganhos: 36,7%, convencionalmente arredondado para 37%, em vez dos 54% históricos. Uma fração de ganhos de exatamente 38% não pode ocorrer com 30 resultados binários de operações. A média ilustrativa é −0,2R, pelo que a soma é 30 × −0,2R = −6R. Com um R monetário fixo de USD 25, equivale a USD 150, ou 3% do capital inicial. Se, em alternativa, o risco for recalculado como 0,5% do capital variável, o resultado monetário exato depende dos resultados individuais e da sequência; a soma, por si só, é insuficiente.

Nesse cenário, o modelo histórico apenas com bid utilizava 1,5 pips de custo, enquanto o modelo observado exige spread de 2,5–4 pips mais slippage de 0,5–1,5 pips em cada lado: 3,5–7 pips no total. São pressupostos sintéticos, não cotações atuais de GBP/JPY. A diferença em R depende da distância ao stop. Por exemplo, aumentar os custos de 1,5 para 4,5 pips acrescenta 3 pips; com D = 5 pips são 0,6R, suficientes para passar +0,4R a −0,2R. Uma verificação demo pode revelar diferenças no modelo de cotações, mas não garante descobrir slippage real. Com um décimo do risco monetário, os mesmos −6R seriam USD 15 em vez de USD 150, apenas se a dimensão mínima do fornecedor e os pressupostos de custos proporcionais permitirem essa escala. Trinta operações continuam a dar evidência limitada sobre o valor esperado. As discrepâncias de custos medidas podem, ainda assim, justificar corrigir um modelo, reconhecendo que os próprios custos variam e que a execução nas caudas permanece incerta.

6. Quantas observações são suficientes? N, valores p e intervalos de confiança

Um backtest de 30 operações com 18 vencedoras tem taxa de acerto observada de 60%. É uma descrição válida da amostra, não uma medição precisa da probabilidade subjacente de ganho da estratégia. Sob ensaios de Bernoulli independentes e identicamente distribuídos, o intervalo bilateral de Clopper–Pearson de 95% é aproximadamente 40,6–77,3%. O procedimento dos intervalos tem pelo menos a cobertura declarada em amostras repetidas sob o modelo; não atribui probabilidade de 95% a um parâmetro fixo desconhecido depois de esta amostra específica ter sido observada.

Uma percentagem amostral favorável pode deixar uma faixa ampla por resolver. Com 24 ganhos em 40 operações, a taxa observada continua a ser 60%, mas o intervalo exato correspondente é aproximadamente 43,3–75,1%. Uma menor probabilidade de ganho implicar ou não uma estratégia perdedora depende do perfil de ganhos e perdas. Com uma taxa hipotética de ganho de 41%, ganho médio 2R e perda 1R, o valor esperado antes de custos adicionais é 0,41 × 2 − 0,59 × 1 = +0,23R. Com ganhos e perdas em proporção 1:1 é −0,18R. Uma estimativa posterior perto de 51% não tem de significar que uma vantagem desapareceu; a estimativa anterior pode ter sido apenas imprecisa. A estimativa pontual original media a amostra, mas não era uma afirmação precisa ou certa sobre o desempenho futuro.

O teorema do limite central, as caudas pesadas e a ausência de um número mágico

O teorema do limite central não declara N = 30 universalmente suficiente. A sua aplicabilidade e a qualidade da aproximação dependem de pressupostos de distribuição e de dependência. Os resultados financeiros das operações podem ser assimétricos, ter caudas pesadas e agrupar-se: um ganho de +5R ou uma perda por gap de −3R podem alterar materialmente a média e a dispersão de uma amostra pequena. A convergência pode ser lenta e alguns modelos nem sequer satisfazem os pressupostos habituais de variância finita.

Não há um único número mágico de operações. A adequação depende da dispersão dos resultados em R, da dependência entre operações, da frequência dos sinais, da cobertura dos regimes, do número de variantes experimentadas e da precisão exigida para a decisão. Trinta entradas expostas à mesma tendência semanal ou evento macro não são automaticamente trinta experiências independentes. Apresente sempre o número de observações, mas juntamente com o intervalo, método e pressupostos, em vez de como nota de aprovação isolada.

Intervalos da taxa de acerto com diferentes dimensões amostrais

Número de operações NGanhos e taxa observadosIntervalo exato bilateral de 95%Consegue distinguir vantagem de ruído?
3060%40,6–77,3% (aproximadamente ±18 pontos percentuais)Por resolver: o intervalo inclui taxas de acerto inferiores ao limiar de equilíbrio; com uma proporção de ganhos e perdas de 1:1 e sem custos, esse limiar é 50%.
5060%45,2–73,6% (aproximadamente ±14 pontos percentuais)O limite inferior mantém-se abaixo de 50%.
10060%49,7–69,7% (aproximadamente ±10 pontos percentuais)O intervalo ainda inclui 50%; o arredondamento não deve alterar a decisão.
20060%52,9–66,8% (aproximadamente ±7 pontos percentuais)Exclui 50% sob o modelo indicado; isto não estabelece um perfil de ganhos e perdas lucrativo após custos.
50060%55,6–64,3% (aproximadamente ±4 pontos percentuais)Incerteza mais estreita sobre a probabilidade de ganho, não prova de valor esperado lucrativo.
1.00060%57–63% (arredondado; aproximadamente ±3 pontos percentuais)Maior precisão sob o modelo; a qualidade dos dados, a dependência e o perfil de ganhos e perdas continuam importantes.

A tabela utiliza intervalos bilaterais de Clopper–Pearson de 95% com números inteiros de ganhos e ensaios independentes de probabilidade constante. A dependência ou uma probabilidade de ganho variável invalida essa interpretação simples; o agrupamento positivo reduz frequentemente a informação efetiva, mas não pressuponha que todas as dependências possíveis têm um efeito idêntico. Indique como são tratadas condições agrupadas ou variáveis.

A coluna de comparação utiliza 50% apenas porque é a taxa de equilíbrio num modelo de dois resultados com proporção fixa de ganhos e perdas de 1:1 sem custos adicionais. Mais geralmente, com magnitude positiva do ganho W e magnitude da perda L, a taxa de equilíbrio sem custos adicionais é L / (W + L), equivalentemente 1 / (1 + W/L). Um ganho de 2R face a uma perda de 1R dá 33,3%; um ganho de 0,5R face a uma perda de 1R dá 66,7%. Um custo médio constante adicional c eleva o limiar do modelo para (L + c) / (W + L), desde que esse custo não esteja já incluído em W e L.

A conclusão operacional não é «200 operações são suficientes». É que a incerteza em relação ao limiar de decisão escolhido importa. Com n = 100, o intervalo bilateral ainda inclui 50%, pelo que esse critério específico do intervalo está por resolver. Com n = 200 exclui 50%, mas alegar uma estratégia lucrativa continua a exigir todo o perfil de ganhos e perdas e os custos. Um resultado por resolver pede normalmente a continuação da investigação segundo o plano; não autoriza automaticamente uma posição real menor nem prova que uma estratégia existente tenha de ser retirada. Os limites de segurança e os defeitos de implementação demonstrados continuam a ser motivos separados para suspender.

Um teste binomial: a probabilidade de ganho é superior a 50%?

A hipótese nula aqui é p = 0.5, com a alternativa pré-especificada p > 0.5. Não é o mesmo que «nenhuma vantagem de trading». Uma estratégia com 40% de vencedoras e proporção de ganhos e perdas de 3:1 tem valor esperado positivo antes de custos, enquanto mesmo 70% de vencedoras com proporção 0,5:1 produzem apenas uma pequena margem positiva que os custos podem eliminar.

O valor p unilateral é a probabilidade, sob a hipótese nula e os seus pressupostos de amostragem, de observar pelo menos tantos ganhos quantos a amostra contém. Não é a probabilidade de a hipótese nula ser verdadeira, de a estratégia ter uma vantagem ou de o seu resultado futuro ser lucrativo. Se utilizar faixas descritivas como as deste artigo de exemplo, interprete-as com cuidado:

  • Abaixo de 0,01: um resultado de cauda superior relativamente invulgar sob esta hipótese nula para um único teste pré-especificado, não prova de um efeito útil no trading.
  • 0,01–0,05: pode passar um teste unilateral pré-especificado de 5%, mas a seleção entre muitos candidatos exige um procedimento de multiplicidade adequado.
  • 0,05–0,10: não passa um limiar de rejeição de 5%. O efeito permanece incerto sob esse critério.
  • Acima de 0,10: evidência insuficiente para rejeitar esta hipótese nula sobre a probabilidade de ganho nesses limiares. Não prova desempenho aleatório nem ausência de uma vantagem baseada no perfil de ganhos e perdas.

Escolha a direção do teste e o limiar antes de ver o resultado. Quando foram pesquisadas 30 variantes, o menor valor p não ajustado é um resultado selecionado; a secção 2 explica por que importa todo o histórico de tentativas.

No SciPy moderno, utilize from scipy.stats import binomtest, depois binomtest(wins, n_trades, 0.5, alternative='greater').pvalue. A documentação oficial da API regista a sua introdução na versão 1.7.0. A função anterior binom_test foi desaconselhada na 1.10.0 e removida na 1.12.0; utilize a API atual com objeto de resultado em vez de copiar excertos obsoletos.

Para 60 ganhos em 100 operações, o valor p unilateral é aproximadamente 0,02844. Para 18 ganhos em 30, é aproximadamente 0,18080, apesar da mesma taxa de acerto observada de 60%. O primeiro passa um teste não ajustado e pré-especificado de 5%, unilateral; o segundo não. Não há contradição com o intervalo de 100 operações da tabela incluir 50%: a tabela utiliza um intervalo bilateral de 95%. Faça corresponder o nível de confiança e a direção do teste antes de comparar as suas decisões.

Teste o resultado em R, não apenas a taxa de acerto

Com 40% de vencedoras, ganho médio 3R e perda média 1R, o valor esperado antes de custos adicionais é 0,4 × 3 − 0,6 × 1 = +0,6R. Com 70% de vencedoras, ganho médio 0,5R e perda média 1R, é apenas +0,05R. A segunda tem uma taxa de acerto maior, mas uma margem para custos muito menor. Nenhum pressuposto numérico é evidência da qualidade efetiva de uma estratégia.

Um teste t de uma amostra pode examinar a média de R líquido face a zero quando os seus pressupostos e a aproximação são adequados. A sua estatística é t = mean_R / (sample_sd_R / sqrt(N)), com N−1 graus de liberdade. Não é a resposta estatística completa para resultados de trading selecionados, dependentes ou de caudas pesadas; estes podem exigir outro desenho de inferência ou método de reamostragem.

Para uma média amostral ilustrativa de +0,3R e desvio-padrão amostral de 1,5R, N = 30 dá t ≈ 1,10 e um valor p unilateral em torno de 0,14. Com N = 200, a mesma média e dispersão dão t ≈ 2,83 e um valor p unilateral em torno de 0,003. O segundo é evidência mais forte contra essa hipótese nula específica de média zero sob os pressupostos, não certeza nem autorização automática para real. A API SciPy do teste t de uma amostra suporta alternativas explícitas; escolha alternative='greater' apenas se essa for a pergunta pré-especificada.

O exemplo mostra por que a mesma estimativa pontual pode sustentar conclusões diferentes com dimensões amostrais diferentes. Registe N e um intervalo adequado em torno do valor esperado líquido. Atingir um N específico não torna o resultado certo e verificar repetidamente até surgir significância introduz outro problema de seleção.

A fórmula operacional do valor esperado

Valor esperadoR = (W% × avgWinR) − (L% × avgLossR)

Utilize frações para W% e L% e magnitudes positivas para os ganhos e perdas médios condicionais. As operações em equilíbrio contribuem zero, mas continuam a pertencer ao número total. Com 54% de vencedoras, ganho médio 1,8R e perda média 1R, o resultado é 0,54 × 1,8 − 0,46 × 1 = 0,512R, aproximadamente +0,51R.

Têm de ser médias realizadas, não uma proporção de alvos planeada. Um alvo de 1,8 vezes a distância inicial do stop não implica que os ganhos tenham efetivamente uma média de +1,8R: saídas parciais, fechos antecipados e execução alteram o resultado. Se a série de R já for líquida de todos os encargos, não volte a subtrair os custos. Se for anterior a encargos específicos, inclua-os uma única vez antes de avaliar a alegação líquida. Um custo de +0,2–0,3R pode eliminar uma estimativa positiva menor antes de custos; a unidade e o denominador têm de tornar esse cálculo rastreável.

SQN: uma convenção de apresentação, não uma decisão de afetação

Uma pontuação da forma SQN = sqrt(N) × mean(R) / std(R) combina resultado médio, dispersão e dimensão amostral.[5] Com a mesma média e desvio-padrão, a forma sem teto sobe com √N. Um teste longo pode, por isso, ter uma pontuação maior sem uma vantagem maior por operação. Identifique a convenção do desvio-padrão amostral e qualquer teto em N; a variante com teto discutida noutra parte deste capítulo não é intercambiável com uma pontuação sem teto.

O artigo 15.9 fornece as definições comuns das métricas e as suas limitações. A SQN não prova que uma vantagem seja real, não substitui a avaliação OOS ou um modelo de custos, nem determina uma afetação de capital por si só.

Exemplo ilustrativo: 57% de vencedoras e uma estratégia perdedora. Após oito meses, um diário sintético contém 47 operações e 27 ganhos: 57,4%. O valor p binomial unilateral face a 50% é aproximadamente 0,19085, e o intervalo exato bilateral de 95% da taxa de acerto é 42,2–71,7%. Isto não rejeita a hipótese nula sobre a probabilidade de ganho. Mais importante, o diário omitia originalmente os resultados em R, pelo que a sua taxa de acerto não podia estabelecer o valor esperado.

Acrescentar ganho médio 0,7R e perda média 1,2R dá (27 × 0,7 − 20 × 1,2) / 47 = (18,9 − 24) / 47 ≈ −0,109R. A soma é −5,1R, não um resultado positivo. Com R monetário fixo igual a 1% do capital inicial, são −5,1% do capital inicial. Se cada um dos 27 ganhos for exatamente +0,7R e cada perda exatamente −1,2R, arriscar 1% do capital atual de cada vez dá 1,007^27 × 0,988^20 − 1 ≈ −5,17%. Se apenas forem conhecidas as duas médias, esse resultado composto não é determinado de forma única, porque as magnitudes dos resultados individuais também importam.

Um resultado monetário positivo juntamente com uma média de R não ponderada negativa pode refletir diferentes ponderações de risco monetário, depósitos ou levantamentos, comissões ou um erro de reconciliação; investigue em vez de pressupor uma explicação. O risco variável não torna o valor esperado em R incalculável. Cada operação precisa do seu próprio R₀ positivo fixado antes da entrada, com R_i = líquido P/L_i / R₀_i. O que não pode fazer é converter a soma não ponderada de R na variação percentual da conta sem as ponderações de risco, a trajetória de capital e a informação dos fluxos de caixa. A lição é preservar as colunas em falta, não descartar oito meses de observações porque uma métrica estava incompleta. Amostra pequena ou dependente: limite a inferência.

Taxa de acerto 60%: incerteza amostral. 95% Clopper–Pearson: observações independentes, probabilidade fixa. 50% é equilíbrio a 1:1 sem custos. Excluir 50% não estabelece uma vantagem líquida.
95% Clopper–Pearson: observações independentes, probabilidade fixa. 50% é equilíbrio a 1:1 sem custos. Excluir 50% não estabelece uma vantagem líquida.
Influência do valor atípico: 20 resultados. Histograma exato de uma amostra sintética antes da comissão. A média não é uma previsão; a recorrência de valores atípicos exige avaliação.
Histograma exato de uma amostra sintética antes da comissão. A média não é uma previsão; a recorrência de valores atípicos exige avaliação.

7. Modelação da execução e dos custos: spread, slippage, financiamento, comissão e execuções parciais

Subestimar custos pode transformar uma implementação perdedora num backtest aparentemente lucrativo. Modele os quatro componentes de custo separadamente e depois reconcilie-os com o modelo de execução para contar cada um exatamente uma vez. Uma folha de cálculo detalhada de comissões não compensa execuções impossíveis.

Spread: fixo ou variável?

ModeloDescriçãoInterpretação adequada
Spread fixo, por exemplo 1 pipUm valor configurado durante todo o teste.Uma triagem inicial rápida ou um cenário explicitamente simplificado. Pode ser otimista em condições de pouca liquidez e precisa de verificações de sensibilidade antes de sustentar uma alegação sobre a implementação real.
Spread médio históricoUma média estimada ao longo de 6–12 meses, apresentada como um único valor.Um modelo grosseiro para uma janela líquida bem definida, desde que a média e o comportamento das caudas sejam representativos. Uma média do dia inteiro pode ocultar os custos efetivos de entrada da estratégia.
Spread por hora do diaValores diferentes por sessão ou estado de liquidez; valores ilustrativos podem ser 0,3 pip num momento líquido e 4 pips em torno do rollover.Um modelo de cenário mais rico, mas a tabela, o fuso horário e os limites de regimes precisam de evidência. Não reproduz todas as cotações ou choques de divulgação.
Spread bid/ask tick a tickO spread implícito em cada observação bid/ask registada no feed selecionado.Útil para estratégias sensíveis ao spread e intravela. Não inclui automaticamente profundidade do livro de ordens, dimensão executável, posição na fila ou as execuções do seu fornecedor.

Tick Data Suite é um fluxo MT4 para dados tick importados, spreads variáveis e definições adicionais de execução. O fornecedor descreve estas capacidades e comercializa um valor de qualidade de modelação de 99%. Esse valor é um indicador relacionado com o testador, não uma probabilidade de 99% de a estratégia ou as suas execuções reais estarem corretas. A decisão de compra depende dos dados em falta ou da capacidade de modelação de que a investigação realmente precisa, não do distintivo.

Uma estratégia de scalping ou de divulgações sensível ao spread pode mudar de sinal quando o modelo muda, enquanto uma estratégia swing com stop de cerca de 100 pips pode ser menos sensível a uma pequena diferença de spread. Meça essa sensibilidade em vez de pressupor que uma ferramenta paga tem de recuperar o seu custo. Este artigo não recomenda uma compra nem fornece preços atuais de subscrições.

Slippage: modelos estáticos e condicionais

O slippage é a diferença entre o preço de referência escolhido e a execução efetiva, com direção e lado da ordem especificados. Comparar um preço de modelo histórico com uma execução real só é útil depois de fazer corresponder o carimbo temporal de referência e a convenção de cotação. Os modelos possíveis incluem:

  • Estático: uma margem adversa fixa, como 0,5 pip em cada entrada e saída. Simples, mas potencialmente inadequada para condições de tensão.
  • Condicionado ao ATR: uma margem ilustrativa de 0,1 × ATR(14) da M5 concluída, convertida em pips. Aumenta com a medida de volatilidade escolhida, mas o coeficiente exige calibração e pode não descrever as caudas.
  • Condicionado à dimensão e profundidade: um modelo que utiliza quantidade da ordem, profundidade disponível e o processo de execução do local de negociação. Precisa dos dados pertinentes de profundidade e de estado das ordens; o histórico corrente de ticks bid/ask não os fornece automaticamente.

O esboço inicial de três regimes do exemplo —frações de pip em condições normais, vários pips em torno de breakouts e potencialmente pips de dois dígitos após divulgações— é ilustrativo, não uma distribuição medida da conta. Construa a sua própria tabela a partir de pedidos e execuções correspondentes. Com números positivos a significar slippage adverso, uma compra utiliza preço executado - preço de referência, enquanto uma venda utiliza preço de referência - preço executado, dividindo depois pela dimensão do pip. Uma saída longa é uma venda e uma saída curta é uma compra. Preserve também as execuções favoráveis, juntamente com os pedidos rejeitados, e indique a referência utilizada.

Algumas dezenas de operações podem revelar uma discrepância normal de implementação, mas raramente caracterizam de forma fiável as caudas raras da execução. Registe o período amostral, as dimensões das operações e as condições em vez de apresentar uma média pequena como todo o modelo de slippage.

Swap e financiamento

As posições mantidas para além do limite de financiamento aplicável podem receber um débito ou crédito. As especificações de símbolos das plataformas suportam diferentes modos de cálculo, pelo que um número de swap apresentado não significa necessariamente «pips por lote por noite». Verifique se representa pontos, um montante em moeda, um cálculo de juros ou outra convenção específica do produto antes de o converter.

  • Direção: obtenha as taxas longas e curtas separadamente. Não são necessariamente iguais e opostas e ambas podem ser encargos. Não pressuponha um swap curto EUR/USD permanentemente positivo ou um swap longo negativo a partir de um ambiente antigo de taxas.
  • Multiplicadores diários: muitos instrumentos FX T+2 utilizam um ajustamento triplo associado ao rollover de quarta-feira, mas o dia efetivo e as exceções de feriados dependem do instrumento e do fornecedor. Modele o calendário da posição em vez de multiplicar um número de noites sem datas.
  • Alterações das taxas: o financiamento reflete o ambiente de taxas e os termos do fornecedor aplicáveis. Para testes históricos, utilize tabelas históricas quando disponíveis ou declare uma aproximação de cenário. A tabela de hoje não reconstrói automaticamente os custos de há vários anos.

Para uma posição swing de três a oito dias, o financiamento pode consumir uma parcela material do valor esperado. Converta um encargo equivalente em pips para R utilizando a distância inicial e depois aplique a sequência efetiva de taxas e multiplicadores datados. Omitir um encargo material deixa a alegação líquida sem suporte; um crédito deve igualmente ser registado com o sinal correto, não presumido como compensação de outro custo.

Comissão

Algumas contas cobram por volume negociado além do spread. O exemplo ilustra USD 5–7 por lote padrão e operação completa para um par principal, USD 6–10 para um secundário e USD 8–15 para um exótico. São intervalos de cenário, não cotações atuais, e as designações ECN/STP não determinam a tarifa. Utilize a tabela aplicável à conta, incluindo encargos mínimos e escalões.

Para expressar a comissão em pips, divida a comissão de ida e volta de um lote pelo valor do pip desse lote na mesma moeda. Para a ilustração padrão de EUR/USD, USD 6 / USD 10 por pip = 0,6 pip por operação completa. Se a conta estiver em PLN ou noutra moeda, converta ambos os montantes coerentemente; converter apenas o numerador altera incorretamente o rácio.

Com 200 operações mensais de 0,1 lote e USD 6 por lote padrão e operação completa, a comissão é USD 120 por mês. Face a USD 1.000 de capital inicial, é um custo mensal de rotação de 12%, ou USD 1.440 —144% desse montante inicial— ao longo de doze meses idênticos. É um total aritmético, não uma previsão ou um rendimento composto da conta. Ilustra por que a rotação e os custos precisam de escrutínio; não prova que todas as estratégias de lotes pequenos sejam antieconómicas.

Uma política ilustrativa mantém a comissão anual dentro de uma parcela ilustrativa de 20–30% do rendimento esperado da estratégia. Trate qualquer rácio desses como política do cenário, não como limiar universal de capital, e defina se o denominador é o lucro bruto esperado ou o lucro após a mesma comissão para evitar raciocínio circular. Aumentar apenas o capital da conta não melhora uma vantagem líquida por operação quando a exposição aumenta proporcionalmente. Avalie primeiro os resultados líquidos efetivos e a incerteza.

Tick Data Suite: um fluxo de dados tick para MT4

O fluxo original pode ser mantido sem tratar o nome do software como certificado de validação profissional:

  • Fornecedor e licenciamento: reveja o site oficial atual do fornecedor e os termos de licenciamento e compatibilidade antes de qualquer compra. Os endereços dos sites e o comportamento dos redirecionamentos podem mudar.
  • Dados: A exportação de dados históricos da Dukascopy é uma fonte possível. Examine cobertura de instrumentos, carimbos temporais, campos bid/ask, falhas e termos de utilização. Uma fonte com resolução temporal fina não garante liquidez executável completa.
  • Configuração inicial: a previsão de duas a três horas do exemplo é ilustrativa, não uma promessa. Descarregue primeiro um pequeno período escolhido, confirme a conversão temporal e as propriedades do símbolo, ligue os dados ao fluxo documentado do testador e verifique que modo de ticks é efetivamente utilizado.
  • Após a configuração: verifique spread variável, comissão, financiamento, restrições de volume e definições de margem e stop face à conta pretendida. Reveja manualmente operações de exemplo. Não interprete «Cada tick», por si só, como prova de que os ticks foram registados em vez de gerados.

O objetivo é investigar uma diferença entre um modelo simplificado de spread e um modelo mais pertinente de dados registados. A ferramenta não consegue validar a hipótese da estratégia, reparar dados de profundidade indisponíveis ou garantir que os custos futuros se assemelhem ao passado. A sua utilidade decorre da necessidade de investigação e das verificações que efetua.

Modelação da execução: atraso, gaps e execuções parciais

A contabilização de custos é apenas metade do modelo de implementação. O campo 5 também tem de indicar o que acontece entre o sinal e a execução:

  • Momento do sinal e latência: após um fecho de vela confirmado, o cálculo, a transmissão e a aceitação demoram tempo. As decisões manuais podem demorar segundos; os atrasos automatizados dependem do sistema e do fornecedor. Meça-os ou modele-os explicitamente. Um pressuposto de atraso zero pode ser material para um breakout, mas a sua contribuição não pode ser declarada uma parcela fixa do custo sem evidência.
  • Gaps: uma ordem stop ao mercado corrente não pode ser executada a um preço indisponível. Modele a próxima cotação executável disponível segundo as regras da ordem, incluindo a possibilidade de execução atrasada ou falhada. Executar sempre exatamente no stop subestima algumas perdas de cauda, sobretudo em torno de encerramentos e divulgações.
  • Execuções parciais: utilize a média das execuções ponderada pela quantidade em vez de apenas o primeiro preço. Uma quantidade parcial costuma criar menos exposição do que o pedido completo, mantendo-se iguais os outros termos, mas alterações de preços de execução e encargos podem modificar essa comparação. Segundo a convenção do diário utilizada aqui, conserve o R₀ original anterior à ordem e registe separadamente a fração não executada. Se outra implementação utilizar risco atribuído à posição executada, registe esse denominador como uma métrica distinta em vez de o alterar retrospetivamente. Saídas parciais de uma única decisão de entrada continuam a ser uma operação; contá-las como observações separadas altera a ponderação e pode distorcer a taxa de acerto.
  • Recotações e rejeições: um sinal histórico pode não se tornar uma execução real. Registe os resultados dos pedidos e distinga rejeição confirmada de estado desconhecido. Cinquenta sinais candidatos e 41 operações executadas podem refletir nove falhas de execução em vez de nove sinais em falta; a reconciliação tem de comparar elementos equivalentes.

Submeta a tensão cada pressuposto material: maior atraso, pior slippage, resolução adversa de uma vela ambígua. Se uma alteração plausível eliminar a vantagem, apresente a sensibilidade e a evidência de implementação em falta. Não declare todos os cenários pessimistas realistas apenas por serem conservadores. Um modelo que pressuponha execuções instantâneas e completas a todos os preços de referência precisa dessa limitação declarada abertamente. Os diagnósticos MAE/MFE e as suas convenções de amostragem são desenvolvidos no artigo 15.9.

Um registo combinado de custos para um script de validação

O exemplo didático executável seguinte amplia o pseudocódigo deste exemplo. Todos os componentes utilizam as unidades de pip do par. As pequenas tabelas de spread e comissão são sintéticas, não dados de fornecedores. As faixas horárias UTC são deliberadamente simplificadas e não modelam mudanças de hora de verão ou choques de divulgação. A investigação para produção deve utilizar cotações datadas ou um modelo condicional corretamente especificado.

Os eventos de financiamento fornecem custos longos e curtos separados e o multiplicador diário aplicável; a função não pressupõe taxas opostas nem adivinha o swap triplo a partir de um simples número de noites. Indicadores identificam componentes já incluídos no lucro/prejuízo testado. O resultado é o ajustamento adicional ainda a deduzir, não autorização para cobrar todo o registo uma segunda vez.

import math

def total_cost_per_trade(pair, hour_utc, atr_pips, direction,
                         financing_events=(), *, spread_in_fills=False,
                         slippage_in_fills=False, commission_in_result=False,
                         financing_in_result=False):
    """Custo adicional em pips; positivo = custo, negativo = crédito líquido.

    Cada evento de financiamento contém CUSTOS diários independentes equivalentes
    em pips de 'long' e 'short' e o 'multiplier' aplicável. Um crédito é negativo.
    Preencher os eventos datados externamente a partir do período efetivo de detenção e das taxas.
    """
    spread_table = {
        "EURUSD": {"low": 1.5, "normal": 0.7, "peak": 0.3},
        "GBPJPY": {"low": 4.0, "normal": 2.0, "peak": 1.2},
    }
    commission_table = {"EURUSD": 0.6, "GBPJPY": 0.8}  # Pips sintéticos por operação completa.
    if pair not in spread_table:
        raise ValueError("Par não suportado: fornecer um modelo explícito de custos")
    if direction not in ("long", "short"):
        raise ValueError("direction tem de ser long ou short")
    if isinstance(hour_utc, bool) or not isinstance(hour_utc, int):
        raise ValueError("hour_utc tem de ser um inteiro de 0 a 23")
    if not 0 <= hour_utc <= 23:
        raise ValueError("hour_utc tem de ser um inteiro de 0 a 23")
    if not math.isfinite(atr_pips) or atr_pips < 0:
        raise ValueError("atr_pips tem de ser finito e não negativo")
    regime = "low" if hour_utc >= 22 or hour_utc <= 6 else (
        "peak" if 8 <= hour_utc <= 16 else "normal"
    )
    spread = 0.0 if spread_in_fills else spread_table[pair][regime]
    slippage = 0.0 if slippage_in_fills else 2 * 0.1 * atr_pips
    commission = 0.0 if commission_in_result else commission_table[pair]
    financing = 0.0
    for event in financing_events:
        rate = float(event[direction])
        multiplier = float(event["multiplier"])
        if not math.isfinite(rate) or not math.isfinite(multiplier) or multiplier < 0:
            raise ValueError("Evento de financiamento inválido")
        if not financing_in_result:
            financing += rate * multiplier
    return spread + slippage + commission + financing

# Exemplo sintético: taxas separadas, não um pressuposto de sinais opostos.
events = [{"long": 0.3, "short": 0.1, "multiplier": 3}]
print(total_cost_per_trade("EURUSD", 10, 5.0, "long", events))  # 2.8 pips
print(total_cost_per_trade("EURUSD", 10, 5.0, "long", events,
                           spread_in_fills=True))             # 2.5 pips

Para uma verificação simples, +0,4R antes de custos adicionais passa a +0,2R se esses custos forem 0,2R, ou a −0,1R se forem 0,5R. Converta o registo em pips utilizando a distância inicial de risco pertinente e a convenção cambial. Sem um registo explícito e um modelo de execução, não sabe que resultado líquido representa o relatório histórico.

8. Seleção conveniente de resultados e seleção de sinais

A seleção conveniente metodológica ocorre quando um investigador remove alguns sinais e apresenta o restante atrativo sem uma regra de seleção válida e pré-especificada. Pode ser deliberada ou inconsciente. Uma implementação completa perdedora pode então parecer lucrativa porque observações desfavoráveis desapareceram da amostra apresentada.

Três formas de seleção conveniente

1. «Salto os sinais que não parecem certos.» Um gráfico histórico contém um sinal válido, mas o investigador rejeita-o como contexto errado. Se as velas posteriores forem visíveis ou recordadas, «não certo» pode correlacionar-se com o resultado perdedor em vez de uma regra disponível no momento original da decisão. Uma estratégia discricionária pode ser estudada, mas precisa de um protocolo de classificação definido, cego ou prospetivo e de decisões anteriores ao resultado preservadas.

2. «Acrescento um filtro depois de ver as perdas.» Um grupo de perdas de terça-feira de manhã leva a uma nova exclusão de terça-feira. O mesmo período histórico melhora por construção. Não estabelece se as terças-feiras são genuinamente diferentes. Trate o filtro como uma hipótese nova, registe por que foi proposto e valide-o independentemente em vez de apresentar a amostra selecionada como confirmação.

3. «Utilizo apenas períodos limpos.» O investigador remove histórico sob tensão, como março de 2020, a crise financeira de 2008 ou as vendas de finais de 2018, e apresenta os períodos restantes como representativos. Estes exemplos precisam de identificações exatas: a Lehman Brothers faliu em setembro de 2008 e o evento habitualmente chamado taper tantrum foi em 2013, não em dezembro de 2018. Uma estratégia pré-especificada pode excluir condições observáveis, mas não pode excluir retrospetivamente uma crise inesperada apenas porque o resultado é inconveniente. Preserve períodos de tensão e indique o que as regras teriam efetivamente feito com a informação disponível na altura.

Como detetar tratamento seletivo de sinais

  • Conte candidatos, sinais elegíveis e execuções separadamente. Os níveis de aviso do exemplo de 10% e 30% de omissões manuais são gatilhos ilustrativos de auditoria, não probabilidades de que tenha ocorrido seleção conveniente. Mesmo uma omissão menor selecionada pelo resultado pode enviesar um resultado; uma taxa elevada de exclusão baseada em regras pode ser legítima.
  • Registe o motivo da rejeição e o seu carimbo temporal. Um filtro escrito antes da avaliação difere de uma decisão improvisada após o resultado. Para discricionariedade intencional, preserve o juízo no momento da decisão em vez de o tratar silenciosamente como um filtro mecânico.
  • Reconstrua o período completo. Compare todos os sinais elegíveis com o subconjunto executado seletivamente, incluindo condições difíceis. Uma diferença de desempenho exige diagnóstico: pode refletir seleção, falha de execução ou um efeito genuíno de filtro pré-especificado. A diferença, por si só, não identifica a causa.

O inventário de sinais: um controlo concreto

Atribua a cada candidato um estado num registo gerado automaticamente ou reconciliado a partir do diário. Torne os estados mutuamente exclusivos no nível escolhido e preserve registos separados de pedidos e execuções quando um candidato avança para execução:

EstadoDefiniçãoConvenção ilustrativa de revisão
takenUm sinal elegível executado segundo a regra especificada.Uma meta acima de 90% pode descrever cumprimento entre sinais elegíveis e executáveis, não entre todos os candidatos brutos antes dos filtros.
skipped_by_ruleUm candidato excluído por uma regra fixada antes da avaliação, como calendário, correlação ou janela temporal.Sem limite percentual universal. Conserve a regra, os dados de entrada medidos e o motivo para que as exclusões continuem auditáveis.
skipped_manualUm sinal de outro modo elegível omitido por uma decisão discricionária não modelada.Este exemplo utiliza 10% como gatilho de escalada. Qualquer omissão orientada pelo resultado exige investigação, mesmo abaixo desse valor.
invalid_dataUm dado de entrada necessário estava em falta, era inválido ou indisponível no momento da decisão.O aviso de 5% do exemplo é ilustrativo. Diagnostique o tipo e o momento do problema; não o esconda como uma exclusão normal por regra.

Falhas do fornecedor ou da infraestrutura após um sinal válido exigem estados adicionais de execução, como order_rejected, order_state_unknown ou partial_fill. Não são automaticamente dados de mercado inválidos. Mantenha o denominador explícito ao apresentar uma taxa de erro; caso contrário, exclusões por regras sem restrições podem tornar matematicamente enganadora a meta do estado «taken».

Segundo a política do exemplo, omissões manuais acima de 10% impedem a progressão até a discrepância ser compreendida. Formalize um motivo defensável como uma nova regra e avalie a nova versão, ou reconheça que o método pretendido não pode ser executado com fiabilidade no fluxo atual. Não reclassifique omissões discricionárias antigas como se o novo filtro existisse na altura. O limiar numérico é uma escolha de processo, não uma fronteira abaixo da qual desaparece o enviesamento de seleção.

Seleção conveniente numa apresentação de venda de um EA

Exemplo ilustrativo: um EA de USD 2.000 e um backtest polido. São valores sintéticos, não uma acusação contra um vendedor específico. Uma apresentação de produto mostra 2018–2022, mais de 1.500 operações e drawdown máximo de 8%. O comprador coloca-o numa conta de USD 5.000; o primeiro mês perde 12% e o segundo também perde. A investigação descobre que o candidato publicado foi selecionado entre 30 alternativas, enquanto as outras 29 e o histórico de pesquisa não foram revelados. O intervalo nominal de datas 2018–2022 também não prova cobertura adequada de tensão: verifique se os registos de março de 2020 foram efetivamente incluídos, estavam completos e eram elegíveis sob as regras. Março de 2020 é um mês, não dois, e uma etiqueta de datas, por si só, não estabelece o que o teste processou. Por fim, o modelo utilizou um spread fixo de 1 pip enquanto o spread ilustrativo pertinente da conta prevista era 1,8 pips. Seleção, cobertura dos dados e desajustamento de custos são questões separadas, cada uma a exigir evidência.

Um critério prudente de compra é conseguir reproduzir o teste pertinente com os seus próprios dados e pressupostos de custos e compreender as suas limitações. O acesso ao código-fonte permite inspeção mais profunda, mas um produto de código fechado não é automaticamente fraudulento; tem um limite de validação que a sua política pode considerar inaceitável. Um preço elevado, uma curva suave ou uma classificação forte não preenchem essa lacuna. Não compre nem coloque em funcionamento apenas porque um relatório selecionado parece convincente.

9. Erros comuns nos testes

Erro 1: otimizar em todo o conjunto de dados

Um investigador experimenta 200 combinações de parâmetros em cinco anos e seleciona a que mostra +180%, sem avaliação intacta. O máximo é um resultado selecionado; a sua dimensão, por si só, não estabelece uma vantagem. Utilize um desenho cronológico de desenvolvimento e avaliação, registe a divisão no campo 4 e as 200 tentativas no campo 7. A divisão 70/30 do exemplo é ilustrativa, não uma regra universal. Uma etapa prospetiva continua a ser útil, mas não torna retrospetivamente a seleção anterior num teste independente.

Erro 2: tratar uma pequena amostra histórica como decisiva

Um backtest de seis meses e 24 operações continua a ser um backtest, mas pode ser evidência fraca para uma alegação ampla a longo prazo. A sua incerteza pode ser grande em relação à média e o período pode conter apenas um regime relevante. Escolha histórico que aborde o âmbito pretendido e apresente os regimes efetivamente observados; «vários anos» não é, por si só, garantia de cobertura. Números como 200 ou 500 neste artigo são exemplos de cenário, não normas de mercado. Avalie a precisão pela distribuição, dependência e limiar de decisão.

Erro 3: utilizar apenas um lado da cotação sem modelar o outro

Uma posição longa aberta e fechada no bid omite o ask de entrada e pode sobrestimar o resultado aproximadamente pelo spread numa comparação simples de preços correspondentes. A entrada longa utiliza ask e a saída bid; a entrada curta utiliza bid e a saída ask. O histórico apenas com bid não é automaticamente inutilizável se for acrescentado um modelo justificado de ask e execução, mas a aproximação tem de ser explícita. O modo de ticks registados do MT5 e um fluxo de dados tick MT4 adequadamente configurado são opções a investigar, não prova de realismo completo.[6] Registe no campo 3 as convenções de bid, ask, ponto médio e dados gerados face a registados.

Erro 4: ignorar diferenças de regime

Um resultado de um ambiente de política, volatilidade ou liquidez pode não se transferir para outro. Não classifique períodos plurianuais inteiros como uniformemente de taxas baixas, taxas altas, QE ou QT quando as condições mudaram dentro deles. A avaliação móvel pode revelar diferenças entre janelas observadas, mas identificar uma vantagem dependente do regime exige evidência suficiente e uma regra que reconheça o regime utilizando informação disponível na altura. Um filtro inventado depois de ver as janelas favoráveis é uma nova variante de investigação, não uma regra automática de ativação.

Erro 5: alegar transferibilidade sem a testar

Um teste EUR/USD aparentemente bem-sucedido não estabelece que o mesmo método funciona entre moedas. Se a alegação abranger vários pares, avalie um conjunto pré-especificado, talvez cinco a oito pares num desenho ilustrativo de investigação, com custos e tratamento de dependência adequados. Se a alegação original for genuinamente específica de EUR/USD, falhar noutro par não a refuta por si só nem prova ajustamento de curvas. O âmbito da conclusão tem de corresponder ao âmbito da evidência.

Erro 6: confundir rendimento com desempenho ajustado ao risco

Suponha que a estratégia A apresenta rendimento anualizado de 35% e drawdown máximo de 22%, enquanto B apresenta 25% e 8% num horizonte de medição comparável. Uma comparação simples do tipo Calmar dá:

  • A: 35 / 22 ≈ 1,6.
  • B: 25 / 8 ≈ 3,1.

B tem o maior rácio entre rendimento e drawdown observado sob essas definições. Isto não estabelece todas as dimensões da estabilidade ou do risco futuro. Não pode calcular Sharpe apenas a partir desses dois números. Sharpe exige uma série de rendimentos a frequência especificada, um rendimento de referência correspondente e uma convenção de anualização: (rendimento periódico médio - rendimento de referência) / desvio-padrão do rendimento periódico, com qualquer anualização pela raiz quadrada do número de períodos justificada pelos pressupostos.

Dividir um rendimento anual por um desvio-padrão mensal sem unidades coerentes não é um cálculo adequado de Sharpe. Dados de entrada em falta significam que a métrica não está disponível, não autorização para inventar um valor aproximado. O artigo 15.9 desenvolve Sharpe, Sortino e Calmar e o que cada um deixa por medir.

Erro 7: deixar de medir após a colocação em funcionamento

Um candidato pode passar investigação histórica, demo e um piloto limitado, e depois deixar de ser medido quando a sua afetação aumenta. Continue a reconciliar a implementação real e a comparar resultados com os pressupostos, incerteza e limites de cenário do teste. Uma amostra nova tem a sua própria incerteza; não basta perguntar se a sua média fica dentro do intervalo de confiança da amostra antiga. O artigo 15.10 define o ritmo de revisão e as decisões de manter, observar, reduzir ou parar. Este artigo fornece o registo de comparação: definições das métricas, intervalos originais, custos e quantis simulados de drawdown.

Erro 8: alterar o método após cada sequência de perdas

Alterações semanais de parâmetros após cinco a dez perdas podem ultrapassar a informação que chega sobre uma única versão. Com resultados independentes e probabilidade de ganho de 52%, cinco perdas num bloco pré-especificado têm probabilidade 0,485 ≈ 2.5%. A probabilidade de pelo menos uma sequência dessas algures em 100 operações é cerca de 75%. A última tem muitas oportunidades sobrepostas para a sequência; tratar essas janelas como independentes utilizando 1 - (1 - q^k)^(N-k+1) sobrestima a probabilidade exata da sequência neste exemplo.

São cálculos de modelo, não uma afirmação de que os seus resultados de operações são independentes. A lição é fazer a pergunta correta sobre probabilidade antes de declarar a estratégia avariada. Utilize critérios pré-especificados de revisão da investigação em vez da aparência da última semana. Falhas operacionais, limites de risco excedidos ou um defeito demonstrado nos dados podem ainda exigir uma pausa imediata; não precisa de uma queda estatisticamente significativa do valor esperado antes de proteger a conta. Uma alteração de regras cria uma nova versão e precisa da sua própria avaliação.

Antes de alterar uma regra: verifique estas camadas por ordem

Não confunda um defeito da estratégia com um problema de implementação ou dos dados. Estabeleça o que o resultado mede antes de editar as regras de trading:

  1. Dados e execução. Reconcilie o diário com os registos do fornecedor, confirme a versão e conte desvios às regras. Um período contaminado não pode ser interpretado como desempenho limpo da estratégia especificada; pode ainda fornecer evidência útil sobre a falha operacional.
  2. Custos. Compare spread, slippage e comissão efetivos com a ficha. Uma redução do valor esperado de 0,15R juntamente com um aumento de custos de 0,15R pode explicar a discrepância. Os custos fazem parte da viabilidade da estratégia negociável mesmo que o mecanismo de entrada não tenha mudado.
  3. Regime. Verifique se as condições em que a estratégia devia operar ocorreram efetivamente e se o seu filtro de elegibilidade foi aplicado corretamente.
  4. Vantagem. Só então avalie a distribuição dos resultados e a incerteza em relação à regra de decisão pré-especificada, não apenas a média da última dúzia de operações.

A tabela completa de decisão «alterar o sistema ou alterar a execução», os critérios de redução e o processo de revisão pertencem ao artigo 15.10. A regra aqui é resolver as primeiras três camadas diagnósticas antes de atribuir a discrepância à lógica de entrada e saída. Qualquer alteração genuína de regras regressa ao processo de teste versionado; não é um remendo invisível à evidência antiga.

Diagnosticar uma discrepância. O número de erros, uma amostra de 30 operações ou um percentil DD não identificam, por si só, a causa. A revisão completa da afetação está no artigo 15.10.
O número de erros, uma amostra de 30 operações ou um percentil DD não identificam, por si só, a causa. A revisão completa da afetação está no artigo 15.10.

10. Lista de verificação: dois filtros distintos para decidir a passagem a real

A lista de verificação contém 20 pontos em cinco categorias: avaliação estatística, controlos metodológicos, custos, testes prospetivos e disciplina operacional. Existem dois filtros porque o ponto 17 exige observações reais e não pode ser um pré-requisito para o primeiro estudo real limitado. Nesta versão, reveja 1–16, 19 e 20 antes de considerar esse estudo autorizado separadamente; reveja os 20 antes de qualquer decisão posterior de aumento da escala. O plano de medição contínua do ponto 20 deve existir antes do piloto, não apenas depois.

Uma pontuação não compensa um requisito crítico em falta. «Não aplicável» exige uma razão escrita. Todas as durações, números de operações e limiares numéricos de políticas aqui são escolhas de cenário, não normas de mercado. Completar a lista não certifica rentabilidade nem autoriza a colocar ordens.

Avaliação estatística: cinco verificações

Controlos metodológicos: seis verificações

Modelo de custos: quatro verificações

Testes prospetivos: três verificações

Disciplina operacional: duas verificações

Documentadas: 0/20 verificações

A página não envia estas respostas nem as guarda deliberadamente como registo de investigação. Um navegador pode restaurar o estado do formulário ao regressar; isso não é evidência de que os pontos foram verificados. Guarde a lista revista com o arquivo datado do teste.

Arquivo necessário: onze componentes

Uma revisão para colocação em funcionamento precisa de um rasto de auditoria. Sem ele, seis meses depois pode ser impossível reconstruir que regras, dados e pressupostos produziram o resultado original:

  1. A ficha de teste com doze campos: campos 1–9 antes da avaliação, resultados e limitações depois, com o manifesto de reprodução completado e verificado.
  2. Dados históricos de entrada: dados brutos de mercado e calendário, fonte, data de aquisição, permissões, hashes, versões limpas, código de transformação e um registo de falhas, duplicados e revisões.
  3. A especificação e implementação da estratégia: regras legíveis, código, parâmetros, versões de dependências e plataforma, carimbo temporal de fixação e comandos exatos. Fixe antes do OOS, não depois de o ver.
  4. Relatórios IS, de validação e OOS: limites da divisão, todo o histórico de tentativas, curvas de capital, intervalos do valor esperado, fator de lucro e drawdown por janela móvel, além de resultados de referência comparáveis.
  5. Relatório de simulação e tensão: ilustrativamente 1.000 trajetórias ou mais, com semente, código, esquema de blocos, horizonte, dimensionamento, quantis de rendimento e drawdown, taxas de ultrapassagem de limiares e limitações. Mais trajetórias não são mais observações de mercado.
  6. O modelo de custos e de conta: spreads por sessão ou tick, pressupostos de slippage, taxas de financiamento separadas e multiplicadores diários, comissão, conversões, margem e restrições do símbolo.
  7. Exportações demo ou de negociação simulada: todo o período de observação planeado, ilustrativamente 30 dias, com carimbos temporais originais dos sinais, estados e reconciliação histórica.
  8. Diário do piloto real limitado, se autorizado e concluído: o período planeado, ilustrativamente 90 dias, com R₀ de cada operação, R líquido, convenção MAE/MFE, custos efetivos, pedidos, execuções, incidentes e capturas de ecrã antes/depois quando úteis.
  9. Inventário de sinais: todos os candidatos e motivos de exclusões, omissões manuais, dados inválidos e falhas de execução, com denominadores reproduzíveis das taxas de desvio.
  10. Registo de definições do fornecedor: tipo de conta, termos do símbolo, alavancagem, volume mínimo, stops e tarifas aplicáveis à data do teste. Conserve a evidência necessária para investigar um litígio de execução sem expor credenciais.
  11. Cópias recuperáveis e registo de decisão: EA fixado, scripts e modelos, conclusões revistas, limitações por resolver, responsáveis, localizações de recuperação e condições de suspensão ou retoma.

Um diretório ilustrativo é strategy_X/2026-Q2/{01_data,02_IS,03_OOS_locked,04_montecarlo,05_demo,06_micro_live,07_artefacts}. Mantenha cópias recuperáveis em armazenamento adequado e proteja exportações sensíveis. O armazenamento na nuvem é uma escolha regida pela sua política de dados, não uma exigência. Os hashes revelam diferenças entre ficheiros; não provam que as cotações subjacentes estão corretas.

Completar o primeiro filtro permite uma revisão sobre se se deve autorizar um estudo real limitado, não uma ordem automática. Completar os vinte pontos permite uma revisão posterior de colocação em funcionamento ou aumento de escala segundo o plano. Uma condição crítica em falta devolve o projeto à etapa por resolver. A decisão final igualmente válida é não passar a real.

Quando não realizar um backtest mecânico de desempenho. Se o setup continuar descrito apenas como «um bom recuo», «ação do preço limpa» ou «momentum convincente», defina primeiro o que o avaliador consegue observar e registar. Um teste codificado não consegue reproduzir um juízo não declarado. Para um processo intencionalmente discricionário, utilize um protocolo fixo de observação e classificação com decisões registadas antes dos resultados; não é intrinsecamente impossível estudar discricionariedade, mas a seleção habitual de gráficos em retrospetiva é inadequada. Este exemplo sugere seis a doze meses de observação sem entradas enquanto as regras se consolidam. Trate-os como um período ilustrativo de desenvolvimento regido pela frequência dos sinais, não uma contagem decrescente obrigatória. O produto a entregar é um método reproduzível e evidência honesta, não uma coleção de gráficos históricos atrativos.

Perguntas frequentes

Quanto demora todo o processo do backtesting à revisão para real?

A sequência ilustrativa aqui é quatro a oito semanas de trabalho histórico, 30 dias de demo e 90 dias de um piloto real limitado autorizado separadamente: 148–176 dias, aproximadamente cinco a seis meses. Um estudo complexo de vários ativos ou períodos temporais pode demorar oito a dezasseis semanas apenas na etapa histórica. São pressupostos de planeamento, não normas do setor nem garantias de evidência suficiente. Sinais raros exigem observação mais longa. Um candidato que falha um filtro continua sem aprovação; o tempo decorrido não é motivo para baixar o critério. A etapa opcional de simulação, as pausas e as versões revistas acrescentam tempo em vez de serem silenciosamente absorvidas no calendário original.

O MT4 Strategy Tester é suficiente para validação?

Depende da estratégia, dos dados e da configuração. Um modelo apenas de preços de abertura não consegue estabelecer uma sequência intravela que não representa. Um spread fixo pode ser inadequado para uma regra sensível ao spread e um procedimento WFA móvel completo precisa de janelas e registos explicitamente geridos. Um fluxo de dados tick como o TDS pode fornecer capacidades em falta, mas uma indicação de qualidade de modelação de 99% não é um certificado de correção. Verifique ticks registados face a gerados, lados de cotação, custos, temporização e operações de exemplo. A opção histórica Forward do MT5 oferece uma divisão com reserva, não observação prospetiva de dados reais.[6] Escolha ferramentas segundo a evidência necessária em vez de pressupor que o nome de uma plataforma torna o teste válido.

E se o teste histórico só tiver 50 operações?

Considere um histórico relevante mais longo, talvez dez em vez de cinco anos; um estudo entre pares pré-especificado quando a hipótese genuinamente se transfere; e sensibilidade de bootstrap por blocos com dimensões como 5, 10 e 20. Um histórico mais longo pode acrescentar observações, mas não necessariamente a uma taxa constante. Cinco a oito pares não produzem automaticamente cinco a oito vezes mais evidência independente. O bootstrap não cria quaisquer observações novas de mercado. Se a incerteza continuar a atravessar o limiar de decisão, registe o resultado como inconclusivo ou limitado pela frequência. Um mecanismo plausível não substitui a evidência em falta nem autoriza, por si só, uma posição real menor. Continue a investigação ou recuse a colocação em funcionamento segundo o plano.

Posso saltar a demo depois de um bom backtest?

Um bom resultado histórico não responde se alertas, arranque, entrega de dados, tratamento do estado das ordens e fluxo do operador funcionam nas observações que chegam. A demo ou um processo em paralelo adequado podem revelar esses defeitos antes de arriscar fundos reais. As execuções demo não medem integralmente o slippage ou a liquidez reais, pelo que um estudo posterior de execução real continua a ser uma decisão separada e explicitamente autorizada. O objetivo não é um ritual obrigatório de plataforma; é evitar saltar silenciosamente as questões operacionais que o backtest não testou.

Que rendimento anual é realista para uma estratégia de retalho?

Este artigo não tem um conjunto de dados fiável que sustente um único «rendimento típico lucrativo de retalho». A percentagem de contas com perdas de um regulador não é a distribuição de rendimentos das contas lucrativas. Rendimentos declarados muito elevados exigem escrutínio de alavancagem, risco, denominador da conta, fluxos de caixa, seleção, custos e duração do período favorável. Uma apresentação de conta prop pode utilizar um denominador diferente do capital próprio do trader; essa diferença tem de ser explicada. Os exemplos ilustrativos de 50%, 200% ou 500% são alegações a investigar, não limiares que provem fraude ou desempenho impossível. Defina um critério de decisão testável em R líquido com incerteza em vez de adotar uma meta promocional de rendimento anual.

Como distinguir uma mudança de regime da deterioração da estratégia?

Comece pelos dados, implementação e custos e depois examine se ocorreram as condições previstas. Um período recente genuinamente não examinado pode fornecer nova evidência de avaliação para regras fixadas, mas a sua dimensão e cobertura de regimes continuam a limitar a conclusão. Um exemplo de seis meses não é automaticamente suficiente. Se sinais históricos reconstruídos e execução prospetiva diferirem nas mesmas datas, reconcilie-os em vez de atribuir tudo ao mercado. Utilizar o novo período para desenhar um filtro de regime torna-o informação de desenvolvimento para essa revisão. As decisões de manter, observar, reduzir ou parar seguem o processo do artigo 15.10, com controlos de segurança separados para problemas operacionais imediatos.

A observação prospetiva pode preceder um backtest histórico?

Sim, sobretudo quando não existem dados históricos disponíveis em cada momento ou classificações discricionárias, mas descreva a limitação. Com cinco operações por semana, 30 dias dão cerca de 21 observações, seis meses cerca de 130 e dois anos cerca de 520. A precisão depende da dispersão e da dependência, não apenas desses números. Um processo de alta frequência que produza 50 operações por dia pode acumular mais de 1.000 registos num mês, mas eventos partilhados podem torná-los altamente dependentes. O trabalho histórico pode acrescentar âmbito e contexto; o trabalho prospetivo fornece um registo do que era efetivamente conhecível e foi feito. Nenhuma designação garante inferência adequada e nenhuma falta de dados históricos exige experiências com capital real.

Uma estratégia bem testada pode ainda sofrer uma chamada de margem ou um fecho forçado?

Sim. Um choque de liquidez ou de política não observado, uma afetação maior, termos de margem alterados pelo fornecedor ou uma falha da infraestrutura podem exceder as condições representadas no teste. Reamostrar operações observadas não gera todos os eventos não observados. Utilize os limites de risco do plano, os critérios documentados de aumento e reversão da escala e o procedimento de incidentes do artigo 15.8. O artigo 15.11 aborda mudanças de escala. Algumas falhas podem ser modeladas sob tensão, mas nenhum modelo garante toda a sua gravidade. Um aviso de margem e um fecho automático também são mecanismos específicos do fornecedor, não eventos universais intercambiáveis. Um trimestre favorável não autoriza aumentar o risco fora do plano.

Posso comprar um EA em vez de construir uma estratégia?

Pode avaliar uma implementação comprada, mas o seu preço, classificação e backtest selecionado não substituem a diligência devida. Peça o histórico de tentativas e versões, dados e pressupostos de custos reproduzíveis e registos reais suficientemente informativos se forem alegados. Este exemplo sugere um registo real público de pelo menos três anos como preferência de triagem; não é garantia e o acompanhamento de terceiros continua a exigir verificações de proveniência e fluxos de caixa. O código-fonte permite validação mais profunda; se a sua política o exigir, uma recusa significa que o produto não cumpre essa política, não prova de que o vendedor seja desonesto. Considere seleção, variantes ocultas, sobrevivência, viabilidade atual e custos de execução. Este artigo não estabelece uma taxa global fiável de sucesso dos EA de mercados de aplicações nem uma vantagem financeira universal de comprar face a construir.

O teste manual é intrinsecamente menos válido do que a automatização?

Não. O teste manual precisa de um protocolo fixo de amostragem e decisão, registos completos e controlos contra o efeito retrospetivo. A automatização precisa de código correto, dados disponíveis em cada momento e um modelo credível de execução. Ambos podem reproduzir repetidamente os seus próprios erros. Indique que partes são discricionárias e preserve as decisões antes dos resultados.

Posso repetir um período fora da amostra?

Um cálculo inalterado pode ser repetido para o reproduzir ou auditar. Se o seu resultado orientar uma alteração ou seleção, esse período torna-se informação de desenvolvimento para a hipótese alterada. Conserve o resultado original e identifique honestamente a utilização posterior; um novo nome de ficheiro não torna os mesmos dados novamente não examinados.

E se o stop e o alvo estiverem ambos dentro de uma vela?

Os OHLC, por si só, não estabelecem o que ocorreu primeiro. Utilize dados mais finos e lados de cotação adequados, ou apresente sensibilidade pessimista com stop primeiro e otimista com alvo primeiro. Nem a cronologia dos ticks estabelece todas as dimensões disponíveis de execução ou garante que uma ordem existia antes da cotação.

Uma taxa de acerto elevada estabelece uma vantagem positiva?

Não. O exemplo de 47 operações ganha 57,4% das vezes, mas soma −5,1R porque a perda média excede o ganho médio. Teste os resultados líquidos realizados com o seu denominador inicial de risco. Um teste binomial da probabilidade de ganho não é um teste da média de R líquido.

Monte Carlo estabelece o drawdown máximo possível?

Não. Os quantis descrevem uma distribuição simulada especificada, não limites rígidos. O resultado depende da amostra de entrada, do método de reamostragem, da dimensão do bloco, do horizonte e do dimensionamento. Choques em falta, alterações do capital dentro da operação e falhas de liquidez não são criados automaticamente por executar mais trajetórias.

Deve o spread ser deduzido de cada operação exportada?

Só se ainda não estiver incluído. Os preços efetivos bid/ask de entrada e saída normalmente incorporam spread e slippage realizado dos preços. Acrescente apenas encargos ainda ausentes do resultado, com unidades coerentes de moeda e quantidade. Reconcilie comissão e financiamento em vez de os deduzir duas vezes.

Um resultado inconclusivo justifica negociar com metade da dimensão?

Não por si só. Evidência insuficiente continua a ser insuficiente. Um estudo limitado de execução real exige uma finalidade separada, autorização, uma ordem mínima viável e um orçamento de perdas aceite. Continuar a observação sem passar a real é uma decisão válida.

Fontes e notas de verificação

As primeiras seis entradas fornecem a lista de leitura metodológica. Sustentam o enquadramento metodológico, não o desempenho das estratégias sintéticas nem qualquer limiar universal de dimensão amostral, risco ou colocação em funcionamento. As referências de plataformas abaixo descrevem funcionalidades técnicas; a documentação descreve essa plataforma, não todos os brokers ou locais de negociação.

Lista de leitura da edição polaca

  1. Robert Pardo, The Evaluation and Optimization of Trading Strategies, Wiley, 2008. Desenvolvimento de estratégias, otimização e avaliação walk-forward.
  2. David Aronson, Evidence-Based Technical Analysis, Wiley, 2007. Testes de hipóteses, mineração de dados e raciocínio estatístico na avaliação de estratégias.
  3. Marcos López de Prado, Advances in Financial Machine Learning, Wiley, 2018. Seleção na investigação, sobreajustamento de backtests e validação com observações financeiras dependentes.
  4. Howard B. Bandy, Quantitative Technical Analysis, Blue Owl Press, 2015. Avaliação de sistemas, reamostragem, dimensionamento de posições e drawdown.
  5. Van K. Tharp, The Definitive Guide to Position Sizing, International Institute of Trading Mastery, 2008. Resultados baseados em R, dimensionamento e avaliação de sistemas. Uma estatística R não é, por si só, aprovação para colocação em funcionamento.
  6. MetaQuotes, Testing Trading Strategies, e MetaTrader 5, Strategy Testing. Modos de testes históricos, partições posteriores e definições de modelação. A partição histórica posterior de um testador não é um período de observação prospetiva de dados reais.

Referências técnicas adicionais conservadas da edição inglesa anterior aparecem abaixo. Os exemplos numéricos continuam a ser cenários educativos, não estudos de desempenho de mercado verificados independentemente. Os intervalos binomiais exatos foram conferidos numericamente e os exemplos NumPy de bootstrap e de registo de custos foram verificados separadamente de qualquer conta de corretagem.

  1. TradingView, Strategies, e Repainting: pressupostos do emulador do broker, gráficos sintéticos e momento da informação. São descrições específicas da plataforma, não regras universais de bolsas.
  2. Bailey e coautores, The Probability of Backtest Overfitting, e The Deflated Sharpe Ratio: seleção e não normalidade na avaliação de desempenho.
  3. MetaTrader 5, Performing Deals, e MQL5, Symbol Properties: tratamento de ordens da plataforma e definições de volume, financiamento e execução específicas do contrato.
  4. MetaTrader 5, Strategy Testing: divisões históricas posteriores, modos de ticks, atraso e definições de conta/custos, incluindo as limitações do cálculo de lucro em pips.
  5. Global Foreign Exchange Committee, The Use of Last Look in FX Markets: definição e divulgação de práticas de last look no contexto do mercado cambial grossista.
  6. NIST/SEMATECH, Confidence intervals for a proportion: construções de intervalos e os seus pressupostos.
  7. SciPy, binomtest, e ttest_1samp: testes distintos para uma probabilidade binomial e uma média populacional.

O seu progresso de aprendizagem

Terminou esta lição? Marque-a você. Abrir ou deslocar uma página nunca a marca como concluída.

O progresso requer JavaScript e armazenamento do navegador.

Guardado apenas neste navegador. Sem conta nem sincronização entre dispositivos. Limpar os dados do site pode apagar o seu progresso.

Jarosław Wasiński

Editor-chefe, ForexMechanics.com • Analista macro e FX

Analista independente e profissional com mais de 20 anos de experiência nos mercados financeiros. Atua no Forex desde 2007, com foco em análise fundamentalista, estrutura do mercado OTC e gestão disciplinada do risco de capital.

  • Criador e editor-chefe do MyBank.pl, oferecendo educação financeira confiável desde 2004.
  • Autor de centenas de comentários de mercado aprofundados, análises estruturais e materiais educacionais para traders e investidores.
  • Defensor da transparência do mercado, promovendo uma educação baseada em dados concretos e relatórios institucionais (BIS, ESMA, CFTC).

Todo o conteúdo tem caráter exclusivamente educacional e informativo – não constitui recomendação de investimento. Lembre-se: operar com alavancagem (Forex/CFD) envolve alto risco de perda rápida de capital.