Entendendo um Backtest

Kaio Valente
devtrader
Published in
6 min readMay 21, 2020

Entre as principais vantagens de se automatizar estratégias de trading está na possibilidade de poder testar de forma rápida e simples sua execução em dados históricos. Esta prática permite que a estratégia seja testada em diferentes ciclos de mercado, tendências de alta, tendências de baixa e consolidações. Desta forma, evita-se um erro comum de traders que operam de forma manual, onde testes visuais são feitos em pequenas quantidades de dados para se avaliar a eficácia de uma estratégia. Dependendo do ciclo que é testado pode-se obter um falso positivo, uma estratégia que não é lucrativa no longo prazo, pode dar um resultado positivo no período pequeno em que foi testada.

Neste estudo vamos mostrar como é possível executar backtests de forma automatizada na plataforma Metatrader 5. Vamos entender as principais estatísticas geradas no relatório final para se obter estratégias lucrativas no longo prazo. Para isso vou utilizar dados de um robô (sem alavancagem) que executo diariamente em minha conta pessoal.

Testador de Estratégia

Esta é a ferramenta disponível no metatrader para executar backtests, vamos ver os principais campos

Testador de Estratégia

Expert Advisor: Nome do Robô que será executado

Ativo: Ativo em que será executado. WIN$N é a série histórica do índice futuro da Bovespa. Usamos a série histórica para executar testes em todo histórico disponível do ativo

M5: Time frame do teste

Data: Período em que o teste será executado

Para frente: Esta é uma funcionalidade importante disponível no metatrader e possibilita executar Walk Forward Analysis em otimizações de estratégias. Não vamos falar sobre isso neste texto por ser um assunto mais avançado. Mas pretendo abordar futuramente.

Latência: Simula latência na execução das ordens de entrada e saída das operações

Modelagem: Aqui é definida a granularidade dos dados que serão executados em modo de teste. “OHLC por 1 minuto” significa Open, High, Low, Close. Neste modo a mínima informação conhecida para execução das ordens serão as máximas, mínimas, abertura e fechamento de um candle de 1 minuto. Toda variação que houver dentro do candle de 1 minuto será gerada de forma aleatória. A opção “Cada Tick”, como o nome diz, simula a execução de cada tick para formação dos candles, logo mais dados serão processados. Sua escolha nessa opção impacta diretamente no tempo de execução do backtest.

Depósito: Valor financeiro considerado no início da execução do teste

Otimização: Habilita o modo de otimização. Vou falar sobre otimizações em outro momento.

Parâmetros de Entrada

Na aba “Parâmetros de entrada” é onde definimos os atributos input da estratégia. Na imagem abaixo é exibido os parâmetros de entrada do robô desenvolvido neste artigo.

Parâmetros de Entrada

Nesta etapa deve ser definida todas as variáveis de entrada necessárias para execução do robô. Atente para não informar dados inválidos.

Gráfico

Na aba “Gráfico”, podemos visualizar a curva de capital gerada durante o backtest.

Curva de Capital

Não está claro na imagem acima, mas existem duas linhas, uma verde e uma azul. A verde representa o capital líquido, ou seja, a variação do capital durante a execução dos trades, também conhecida como floating. Já a linha azul representa a curva de capital dos trades fechados, o saldo das operações vencedoras e perdedoras. Ao analisar um robô, atente para a linha verde, robôs que executam preço médio tendem a ter uma volatilidade grande do capital líquido, o que aumenta consideravelmente o risco da estratégia.

Principais Estatísticas

Na aba “Backtest” temos as principais informações do teste, todas as estatísticas importantes da estratégias são encontradas aqui.

Estatísticas do Backtest

Lucro Líquido Total: Saldo final das operações

Fator de Lucro: Representa a média de assertividade pela média de ganhos. Quanto maior, melhor. Fórmula: (Negociações com lucro / Negociações com perda) * (Média de lucro / Média de perda).

Total de Negociações: Total de Trades feitos durante o teste. Aqui há uma pegadinha do Metatrader. Se sua estratégia faz realizações parciais, como é o caso da minha, a cada realização será contada como uma nova negociação.

Rebaixamento absoluto do saldo: O maior rebaixamento de capital abaixo do saldo inicial do teste, neste caso 5000.

Rebaixamento máximo do saldo: Essa é sem dúvida a métrica mais importante a ser analisada, também chamada de drawdown. Representa o risco máximo tomado pela estratégia durante o período do teste. Este valor deve ser usado para basear o gerenciamento de risco assumido para rodar este robô.

As mesmas métricas de rebaixamento estão disponíveis para o capital líquido. Ambas são importantes.

Negociações com Lucro: É o percentual de acerto da estratégia

Média de Lucro na Negociação: O nome é auto explicativo

Média de Perda na Negociação: O nome é auto explicativo

Lembre-se da relação existente entre taxa de acerto e payoff. Analisar taxa de acerto de forma isolada não é a forma correta. Para ler mais sobre isso, acesse este artigo.

Outras informações interessantes de serem observadas, mas que são derivadas das métricas acima, especialmente sob a ótica do fator psicológico ao rodar a estratégia em conta real: Máximos Ganhos Consecutivos/Máximas Perdas Consecutivas e Média de Ganhos Consecutivos/Média de Perdas Consecutivas.

O que eu levo em consideração ao analisar um Backtest?

Essas informações são pessoais e não representam se uma estratégia é lucrativa ou não, é apenas uma questão de perfil e gerenciamento de risco:

  • Todos os anos positivos
  • Mais meses positivos do que negativos dentro de 1 ano
  • Não apresentar mais do que 3 meses de perdas consecutivas
  • No máximo R$ 2000 de risco por contrato utilizado.

Confiabilidade

Via de regra, quanto menor a quantidade de trades, maior o timeframe e maior os alvos, mais confiável será o backtest. A medida que você vai diminuindo essas variáveis, a confiabilidade do backtest também diminui. Logo, estratégias scalpers tem os resultados de backtest menos confiáveis.

Monitoramento

O monitoramento é uma boa prática ao desenvolver uma estratégia. Após realizar todas as etapas de testes e chegar a configuração ideal, é necessário que haja um acompanhamento da execução real em relação aos resultados de backtest. As diferenças entre as execuções não pode ser gritante. É comum encontrar discrepâncias relacionadas a questões de execução de ordem, latência, spread, etc. Os valores não precisam ser exatamente os mesmos, mas devem ser muito próximos para que seu backtest tenha validade estatística. Caso a diferença nas operações de teste e operações reais estejam muito grandes, é necessário rever e comparar os cenários. Um dos motivos para essa diferença pode ser a execução de testes em OHLC, se o timeframe e alvos/stops forem muito curtos os testes não irão representar a realidade.

Se você gostou desse tipo de conteúdo e gostaria de acompanhar, siga @devtrader no instagram.

--

--