Processo de construção da estratégia (forex)

Construindo uma estratégia EURUSD lucrativa

por Mark Fric
Neste artigo vou explicar o processo passo a passo completo de construção de uma estratégia rentável e robusta para o EURUSD, incluindo múltiplos passos de diferentes testes de robustez.
Há também outra variação deste artigo sobre Processo de construção de estratégia para o E-Mini S & P 500 Futures.

Ao utilizar técnicas de aprendizagem de máquinas, tais como programação genética a parte mais importante do processo de construção de estratégias é a estratégia de teste de robustez para garantir que ela não seja adaptada às curvas dos dados históricos.
Uso filtro OOS duplo mais Testes de Robustez mais Teste de Matriz de Caminhada para frente.

 

 

Entradas

Os únicos insumos que uso são minhas expectativas em relação à estratégia - quero construir uma estratégia para o EURUSD que seja lucrativa e tenha o mínimo possível de drawdowns. Quero que a estratégia seja robusta o suficiente para que funcione também em outros símbolos (GBPUSD) e quero que ela passe no teste Walk-Forward Matrix para garantir que a reoptimização funcione nesta estratégia.


Processo de construção da estratégia

  1. Geração de um grande pool de candidatos potenciais
  2. Primeiro filtro - Verificação fora da amostra (OOS)
  3. Segundo filtro - reteste e segunda verificação OOS
  4. Terceiro filtro - verificação GBPUSD
  5. Quarto filtro - Testes de robustez
  6. Quinto filtro - Teste de matriz Walk-Forward

Geração de um grande pool de candidatos potenciais

No primeiro passo eu simplesmente tenho que gerar um grande conjunto de estratégias potencialmente "boas" que testarei mais tarde para a robustez. Quero que todas as minhas estratégias iniciais sejam rentáveis e robustas (até certo ponto), por isso emprego vários filtros também nesta primeira fase.

Meus ajustes para esta etapa
Você pode baixar as configurações que eu uso nesta etapa usando o link abaixo. Clique no link com o botão direito do mouse e escolha Salvar link como...
Em seguida, em StrategyQuant use Load settings para carregar este arquivo de configurações para o programa.

build_eurusd_strategy.xml

Configurações explicadas
Antes de mais nada, gerei todas as minhas estratégias em múltiplos símbolos. Meu objetivo é encontrar uma boa estratégia para EURUSD, mas quero que minha estratégia seja robusta - por isso quero que ela seja lucrativa também em GBPUSD. Acrescento o GBPUSD aos dados adicionais, portanto, agora a estratégia será testada em ambos os símbolos.

Imagem 1: Definição dos dados

Vou usar dados de 1.1.2007 a 30.6.2011, que é de 4 anos e meio. O resto dos dados serão deixados para novos testes OOS mais tarde.

Vou usar o modo Evolução Genética. A idéia é fazer uma população de 200 estratégias, desenvolvê-las durante 30 gerações e depois recomeçar do zero. Desta forma, evitarei correr para um beco sem saída durante a evolução e as melhores estratégias são continuamente armazenadas no Databank.
Você também pode ver que a única condição para a população inicial é que ela deve fazer pelo menos 100 ofícios. Não precisa ser lucrativa - a evolução genética deve ser capaz de melhorá-la.

Imagem 2: Opções genéticas

A última peça importante é o Ranking de opções. Eu estabeleci o Databank para armazenar 2000 melhores estratégias, porque eu quero ter uma boa base para o processo de seleção posterior. Também estabeleço os critérios de seleção para a relação Retorno / Drawdown - esta é a minha favorita. Você pode usar outros critérios de seleção, talvez obtenha melhores resultados.

Imagem 3: Opções de classificação

O mais importante é estabelecer os critérios iniciais de filtragem das estratégias no Banco de Dados. Quero considerar apenas estratégias que sejam pelo menos $2000 em lucro, tenham relação Retorno/DD > 3, pelo menos 300 negócios E relação Retorno/DD de uma carteira para ser pelo menos 2,5.

Como estou testando as estratégias em dois símbolos - EURUSD e GBPUSD, os resultados da carteira para as estratégias também serão computados. Usando esta condição, eu simplesmente especifico que o desempenho do portfólio não será muito pior do que o desempenho apenas em EURUSD, e o programa descartará todas as estratégias com mau desempenho do portfólio.

Agora só temos que acertar o Início e deixar o programa fazer o trabalho.
Lembre-se, queremos gerar pelo menos 2000 "boas" estratégias antes de continuarmos com o processo de filtragem.

Dependendo das configurações e da velocidade de seu computador, pode levar várias horas ou até mesmo dias, portanto, seja paciente. Se o programa não produzir nenhuma estratégia por muito tempo, talvez devêssemos mudar para um período de tempo maior - H4 ou D1, ou diminuir as restrições.


1. Primeiro filtro - Verificação fora da amostra (OOS)

Quando eu tiver 2000 estratégias potencialmente boas no Banco de Dados, vou parar a geração e iniciar o processo de filtragem.
Aplicarei o primeiro filtro - removendo todo o sistema que tenha um mau desempenho fora da amostra. Posso fazê-lo rapidamente, apenas classificando as estratégias em Databank e eliminando as que têm lucro OOS menor do que $500.

Imagem 4 Banco de dados com conjunto de estratégias classificadas por OOS Net Profit

Este primeiro passo geralmente remove uma grande parte das estratégias, portanto, dos 2000 candidatos iniciais, estamos reduzidos a cerca de 1500.


2. Segundo filtro - reteste e segunda verificação OOS

Nesta etapa, vou re-testar todas as estratégias usando o 1 Minuto de precisão sobre o desconhecido Fora do período da amostra.
Utilizei a precisão do tempo selecionado na etapa Construir para fazer os testes o mais rápido possível, mas antes de uma nova avaliação quero garantir que os testes de retaguarda sejam realmente confiáveis, por isso retestei todas as estratégias com maior precisão.

O re-teste das estratégias é simples - basta selecionar todas as estratégias no Banco de Dados e clicar no botão Retestar. Isto moverá todas as estratégias para uma aba de Reteste. Também confirmarei o diálogo perguntando se ele deve usar as configurações de construção para o Retest

Estenderei então o período de dados até o final dos dados disponíveis. Foram geradas estratégias sobre os dados de 1.1.2007 a 30.6. 2011, agora vou re-testar as estratégias sobre os dados até 30.6.2013 e estabelecerei o período da amostra de 2.7.2011 a 28.6.2013.
Note que isto irá re-testar as estratégias sobre a nova parte desconhecida dos dados, e a parte OOS mostrará o desempenho da estratégia durante o último ano e meio.

Imagem 5: Ajuste da precisão do teste para 1 minuto

Como eu também tenho outra fonte de dados históricos EURUSD (dados gratuitos baixados da Dukascopy) vou adicioná-los a dados adicionais para comparar o desempenho em ambas as fontes de dados EURUSD.

O teste pode demorar algum tempo e depois que for feito removerei novamente todo o sistema que tenha um mau desempenho fora da amostra. Mais uma vez posso classificar as estratégias em Databank by Net Profit (OOS) e excluir as que têm lucro OOS inferior a $500.


3. Terceiro filtro - verificação GBPUSD

Nesta etapa, vou verificar o desempenho das estratégias no símbolo GBPUSD. Vou para Results -> Equity chart, mudar o gráfico para GBPUSD/H1 ou para Portfolio e analisar as estratégias uma a uma olhando o gráfico para GBPUSD.

Imagem 6: Exemplo de bom e mau desempenho GBPUSD

Vou considerar apenas estratégias que mostrem pelo menos alguma rentabilidade em GBPUSD. A curva patrimonial não precisa ser perfeita, mas deve estar crescendo sem drawdowns extremos.

Este filtro é muito importante - geralmente encontramos apenas algumas estratégias que passam neste teste.
Assim, a partir do início de 2000, normalmente estamos reduzidos a 5-15 estratégias.


4. Quarto filtro - Testes de robustez

Depois de remover todas as estratégias com mau desempenho em GBPUSD, restam menos de 10 estratégias que têm bom desempenho em IS e OOS, assim como desempenho satisfatório em GBPUSD. Agora vou testar novamente as estratégias com testes de robustez e gerenciamento de dinheiro para ver como cada uma das estratégias lida com pequenas mudanças nos insumos e para poder comparar as estratégias entre si.

Vou mudar a administração do dinheiro de tamanho fixo para montante fixo, deixando cada risco de startegy $100 por operação. Isto permite uma melhor comparação de estratégias, pois eles arriscam a mesma quantia por operação.

Imagem 7: Ajustando a gestão de dinheiro a um valor fixo

Nos testes de robustez uso pelo menos 20 simulações e testei a estratégia para todos os tipos de situações de estresse. Depois de configurar o teste de robustez, eu re-testo as estratégias novamente.
Desta vez, será rápido porque só restam poucas estratégias no Banco de Dados.

Imagem 8: Testes de robustez

Como avaliar os testes de robustez
Os testes de robustez nos mostram como a estratégia pode se comportar na realidade, quando há negócios perdidos, dados históricos diferentes, etc. Estou procurando estratégias que tenham valores aceitáveis para o Lucro Líquido e o Drawdown no nível de confiança 95%.

Imagem 9: Resultados dos testes de robustez

No exemplo acima podemos ver resultados de robustez para duas estratégias. A estratégia à esquerda tem lucro em nível aceitável, mas o drawdown mais que dobrou em relação ao resultado original.
A estratégia à direita também tem lucro em nível aceitável e o drawdown foi quase inalterado.

Nesta etapa vou escolher apenas 1-3 estratégias finais que serão submetidas ao próximo teste de robustez.
Estas estratégias finais são selecionadas pelos melhores resultados em testes de robustez, rentabilidade geral e simplicidade - quero que as regras da estratégia sejam tão simples quanto possível, e as regras comerciais devem fazer algum sentido.


5. 5. Quinto filtro - Teste de Matriz de Avanço

Ficamos com algumas estratégias e podemos fazer o teste definitivo de robustez - Walk-Forward Matrix test. O WF Matrix é simplesmente uma matriz de otimizações de caminhada para frente com diferentes números de corridas e períodos de corrida.

Se a estratégia passar no teste Walk-Forward Matrix significa que, com a ajuda da reoptimização dos parâmetros, a estratégia é adaptável a uma grande variedade de condições de mercado E também que a estratégia não é curva ajustada a dados particulares - uma vez que com a reoptimização funciona em muitos períodos de tempo diferentes.

Além deste teste WF Matrix também nos diz se a estratégia deve ser permanentemente reoptimizada e qual é o período de reoptimização mais adequado.

O teste Walk-Forward Matrix tem que ser feito para cada estratégia separadamente. Vou carregar minha estratégia para o Optimizer e selecionar a opção Walk-Forward Matrix. Também selecionarei os passos para as corridas e as porcentagens de OOS. StrategyQuant passará por todas estas combinações, realizando a otimização do Walk-Forward da estratégia.

Imagem 10: Montagem da Matriz de Avanço

Definição de parâmetros para otimização
Para que a otimização faça sentido, é preciso definir os parâmetros estratégicos que serão otimizados. Cada estratégia usa lógica diferente e tem parâmetros diferentes, portanto, é preciso configurar a otimização de forma diferente.

Imagem 11: Otimização dos parâmetros

Esta estratégia é relativamente simples, por isso vou otimizar apenas o valor de Stop Loss e o coeficiente de stop trailing.
Não é necessário otimizar todos os parâmetros, apenas aqueles que têm o maior impacto no desempenho da estratégia.

Agora eu posso iniciar a otimização da Matriz WF. Este pode ser um processo longo que pode levar várias horas - dependendo das configurações e do número de passos e parâmetros otimizados e da velocidade do seu computador.

Avaliando a Matriz de Avanço
Quando a otimização tiver terminado, clicarei no resultado da matriz Walk-Forward em Databank para ver os detalhes.

Imagem 13: Resultados do Walk-Forward Matrix

O resultado final é que o Startegy passou no teste de matriz Walk Forward para a robustez. O gráfico de pontuação 3D nos mostra que 16 das 24 combinações passaram em nossos critérios (configurações padrão utilizadas).
A estratégia não precisa passar para cada combinação, estou procurando uma área 2×2 ou 3×3 que tenha a maioria das combinações passadas - este será o grupo das melhores combinações de reoptimização. Neste caso, posso ver que 10 corridas com 30% Out of Sample é uma das melhores combinações, pois está rodeada por outras combinações que também passaram.

Ao verificar a tabela de otimização do Walk-Forward, posso ver que a estratégia continua sendo rentável também durante a reoptimização.

Imagem 14: Gráfico de otimização Walk-Forward

A Walk Forward Matrix também me dá outra informação importante - com que freqüência devemos reoptimizar a estratégia?
Para nossa combinação selecionada de 15 execuções com 30% Out of Sample:


Sumário

Descrevi meu processo completo de trabalho com a StrategyQuant, o que levou a poucas estratégias novas interessantes.
Você mesmo pode tentar, inspirar-se e possivelmente melhorar o processo com suas próprias idéias que você pode compartilhar em nosso fórum.

Possíveis melhorias do processo - você pode tentar buscar estratégias separadamente para direções longas e curtas. Cada direção tem sua própria dinâmica, e diferentes estratégias para longas e curtas poderiam retornar melhores resultados.
Eu não mencionei Melhorador - é uma ferramenta poderosa que lhe permite procurar uma melhor variação de sua estratégia existente, se você ainda não estiver satisfeito com o desempenho.

Basta ter em mente - a questão não é encontrar uma estratégia que seja perfeita em dados históricos. Esta é uma receita para o desastre, porque a estratégia excessivamente otimizada é garantidamente falhada no comércio real.
Nosso objetivo deve ser encontrar uma estratégia que seja robusta através de diferentes dados e/ou símbolos, pois isso significa que ela tem uma vantagem real sobre o mercado.

Assine
Notificação de
1 Comentário
Mais antigo
Novidades Mais Votados
Feedbacks em linha
Ver todos os comentários
Mario Gordon
Mario Gordon
2. 1. 2019 6:10 pm

Como poderiam ser as configurações no SQ4? Vejo que tem novas características e será ótimo carregar as configurações para uma boa geração de estratégias.

Continuar lendo