Otimizando um Robô no Metatrader 5 — Aplicando Testes de Robustez— Parte 3

Dando continuidade a série sobre otimizações, nesta parte vou apresentar diferentes tipos de testes de robustez, com objetivo de diminuir a probabilidade de executar estratégias que não irão performar bem em live trading.

Kaio Valente
devtrader
6 min readJan 24, 2022

--

Na primeira parte desta série, vimos qual o objetivo de uma otimização e também o principal problema que ela gera, o overfitting. Assim como algumas boas práticas para evitá-lo.

Na segunda parte, falamos sobre conceitos fundamentais de teste e validação, testes forward e métricas customizadas de performance.

Nesta terceira e última parte, vou apresentar os principais testes de robustez que aplico para identificar se uma estratégia tem capacidade de ganhar dinheiro em live trading ou não. São eles: Distribuição de Resultados, Distribuição de Parâmetros, Walk Forward Analysis (WFA).

Distribuição de Resultados

O objetivo principal deste teste é avaliar se diferentes configurações de uma estratégia geram curvas lucrativas, de um modo geral.

Na prática, executamos uma otimização simples, variando os parâmetros que desejamos testar, seguindo as recomendações descritas na Parte 1. O resultado esperado é que a grande maioria das configurações gerem curvas positivas. Não necessariamente todas as curvas precisam ser ótimas, o importante aqui é observar o grau de generalização da estratégia em diferentes configurações, ao longo do tempo. Para isso, fazemos a avaliação do resultado através de algumas métricas:

  • Média dos Resultados
  • Desvio Padrão
  • Z-Score (média/desvio padrão)
Exemplo de análise de uma Distribuição de Resultados

Avaliamos e coletamos os números de todas as execuções de uma otimização. Geralmente, aplica-se a análise em cima dos Lucros da estratégia, mas é possível executar em cima de qualquer outra métrica, o Drawdown, por exemplo.

Idealmente, buscamos estratégias que tenham pelo menos 90% dos resultados positivos e um Z-Score de pelo menos 3.

Na distribuição de resultados, é importante ter cuidado com o histórico de dados utilizado para executar a otimização, bem como a quantidade de parâmetros otimizados e seus ranges de variação. Todos esses pontos podem impactar na qualidade do teste.

Distribuição de Parâmetros

Já na Distribuição de Parâmetros, queremos entender como cada input/variável/parâmetro da estratégia se comporta a medida que variamos seus valores (range de otimização). O principal objetivo é identificar se a estratégia consegue generalizar além dos parâmetros “ótimos”.

Imagine uma estratégia de cruzamento de médias, que gera uma curva de capital positiva com as médias de 8 e 20 períodos.

E se alterarmos as médias para 9 e 21 períodos e a curva se tornar perdedora? Péssimo sinal, certo? Esse tipo de configuração não tem chance de performar bem em live trading. Este é um exemplo clássico de overfitting, onde o processo de otimização simplesmente encontrou a melhor configuração no passado, porém sem capacidade de generalização.

Dessa forma, na Distribuição de Parâmetros queremos encontrar Clusters de Configuração, são as regiões onde cada variável apresenta resultados satisfatórios. Quanto mais estável for a região, maior a chance da estratégia funcionar em diferentes cenários no live trading.

Essa análise pode ser feita visualmente observando os resultados da otimização geradas pelo Metatrader 5

Análise de Distribuição de Parâmetros

Na imagem, exemplo de um período de média móvel sendo otimizado utilizando o Fator de Recuperação como função de avaliação. Cada ponto representa o resultado da otimização e seu valor pode ser observado na coluna a direita. Note que nas regiões entre 23 e 29 estão os melhores resultados. Porém, também conseguimos identificar outros clusters com resultados bons, entre 47 e 53. Entretanto, quando começamos a aumentar os períodos, o resultado começa a deteriorar.

O desafio desse teste é identificar se de fato há regiões estáveis para cada parametrização da estratégia e evitar a utilização de resultados outliers.

Aqui também devemos nos atentar para as boas práticas de otimização e evitar uma grande quantidade de parâmetros simultaneamente.

Walk Forward Analysis (WFA)

Sem dúvida, este é o teste mais importante e responde duas questões importantes:

  • Minha estratégia tem capacidade de generalização ao longo do tempo?
  • Qual a melhor configuração para executar em live trading?

Vários conceitos que já vimos até aqui devem ser aplicados para executarmos um WFA. Um teste Walk Forward Analysis, nada mais é do que uma bateria de testes Walk Forward executados em sequência.

Na prática, vamos quebrar nosso histórico de dados em diferentes períodos In Sample/Out of Sample e executar diferentes otimizações e validações. O objetivo é avaliar como a estratégia se comporta ao longo do tempo levando em consideração diferentes ciclos de mercado.

Alguns pontos devem ser definidos antes de iniciar um WFA:

  • Histórico total do teste
  • Quantos steps/windows serão executados
  • Tamanho de cada janela de otimização (Período In Sample)
  • Tamanho de cada janela de validação (Período Out of Sample)

Estas questões definem o que chamamos de Walk Forward Matrix (WFM)

WFM com 6 steps — 2 anos In Sample / 6 meses Out of Sample
WFM com 12 steps — 1 ano In Sample / 4meses Out of Sample

Este é um assunto complexo e extenso. Basicamente a escolha da configuração do WFM envolve algumas variáveis: Significância Estatística e Adaptação ao Ciclo de Mercado. A decisão depende da natureza de cada estratégia e da quantidade de histórico disponível.

Algumas questões que devem ser avaliadas neste ponto:

  • A quantidade de operações em cada período é suficiente para ter resultados confiáveis?
  • Quero aumentar a significância estatística da minha otimização?
  • Quero ter mais adaptação aos ciclos de mercado?

E como avaliamos se uma estratégia sobreviveu ao WFA ou não?

Através do cálculo de uma métrica chamada Walk Forward Efficiency (WFE). Ela nos diz, por meio de uma análise individual de cada step se o resultado obtido no final é aceitável. Alguns autores consideram que WFEs acima de 50% já são capazes de gerar bons resultados em conta real. Particularmente, gosto de usar como ponto de corte WFEs acima de 70.

Geralmente estratégias com sinais de overfitting não irão sobreviver ao WFA, gerado resultados insuficientes na análise do WFE.

Este é um teste extenso e trabalhoso de ser executado. Meu objetivo aqui é apenas apresentar uma introdução da sua utilidade e importância.

É possível executar WFAs manualmente utilizando o Metatrader 5, com auxílio de planilhas para catalogar os dados e calcular o WFE. Ao longo do tempo desenvolvi algumas rotinas para automatizar e tornar este processo mais produtivo.

Exemplo de um WFA executado automaticamente

Na imagem acima, exemplo da execução de um WFA com 10 steps. Cada cor representa um período Out of Sample diferente. A curva gerada foi 100% de dados não otimizados. O que mostra a capacidade de generalização da estratégia em dados desconhecidos.

Finalizamos aqui a série sobre otimização de robôs utilizando o Metatrader 5.

Se você tem interesse de aprender em detalhes como aplicar todo o processo de validação e construir estratégias de trading robustas, a turma para Mentoria Backtest Efetivo está aberta. Todos os detalhes estão neste link.

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

--

--