Processo de desenvolvimento de um robô/estratégia de trading

Vou apresentar um passo a passo do processo de desenvolvimento que eu uso para desenvolver novos robôs, da concepção da estratégia até a execução em conta real.

Kaio Valente
devtrader
6 min readOct 15, 2020

--

No mundo da programação existe uma área conhecida como Engenharia de Software, na qual alguns processos devem ser seguidos para que se construa sistemas de maneira eficaz, confiável e metodológica. Como profissional da área, adaptei alguns processos e trouxe para o mundo do trading algumas etapas para me ajudar a construir estratégias/robôs de investimento que sejam lucrativos no longo prazo. Vou apresentá-las a seguir.

https://www.freepik.com/vectors/idea
  1. Codificar a estratégia inicial, gatilhos de entrada/saída
  2. Teste de funções secundárias: Break Even, Stop Móvel, Horários de negociação, etc…
  3. Otimização com Walk Forward Analysis (WFA)
  4. Análise de resultados/estatísticas
  5. Teste em conta demo
  6. Validação e cruzamento de resultados: Execução Real x Backtest
  7. Executar em conta conta real com lote mínimo
  8. Acompanhar e monitorar
  9. Simular portfólio de estratégias/robôs
  10. Planejar gerenciamento de risco

Vou detalhar cada uma das etapas

Codificar a estratégia inicial, gatilhos de entrada/saída

Este é o ponto de partida de qualquer estratégia. Você já deve ter em mente as regras da estratégia que deseja testar, quais serão os critérios para entrada de novas operações, quais os critério de saída. Quais indicadores usar ou qual modelo quantitativo usará como tomada de decisão.

Nesta etapa é mão na massa. Testar o código usando o modo visual do strategy tester do metatrader ajuda a encontrar possíveis problemas, você consegue identificar se as entradas e saídas estão acontecendo nos pontos previstos. Outro ponto importante nesta etapa é saber debugar seu código, para encontrar e corrigir possíveis bugs de codificação.

Teste de funções secundárias: Break Even, Stop Móvel, Horários de negociação

Após a lógica de compra e venda estar concluída, começo a testar vários cenários que comumente são usados em estratégias de trading, tais como:

Break Even: Mover o stop da operação para o ponto de entrada, quando o preço se movimenta a favor da operação.

Stop Móvel: Mover o stop da operação para além do ponto de entrada, quando o preço se movimenta a favor da operação

Horários de negociação: Testar horários de inicio para abertura de novas ordens, horário limite para abertura de ordens, horário de encerramento de ordens, etc.

Essas são as funcionalidades mais básicas, mas dependendo da complexidade da estratégia, inúmeras funcionalidades podem ser testadas nesta etapa, a exemplo: limites de ganho/perda, aumento de posição (a favor ou contra), etc.

Nesta etapa eu não estou preocupado em descobrir qual é o melhor ponto para ativar meu break even, ou qual o melhor ponto para mover meu stop móvel, ou quais os melhores horários de negociação da estratégia. Minha intenção é apenas codificar estas funcionalidades da maneira correta. Estas perguntas serão respondidas na fase de otimização.

Otimização com Walk Forward Analysis (WFA)

Esta é a etapa mais importante de todo o processo. Se esta etapa não for feita da maneira correta, o resultado pode ser um falso positivo, um robô que parece ter bons resultados nos testes, mas que não irá performar bem em conta real. Em outras palavras, na otimização é possível encontrar o que chamamos de overfitting.

A otimização é o processo de encontrar os melhores parâmetros para uma estratégia. O próprio metatrader faz uma análise combinatória entre os parâmetros especificados para exibir os resultados de cada um deles. E aqui está a maior confusão entre os iniciantes: O que é o melhor parâmetro? A resposta parece simples, é o que ganha mais dinheiro. Errado.

Os melhores parâmetros são os que deixam sua estratégia mais robusta. Em outras palavras, é o que faz a sua curva de capital ser a mais estável possível ao longo do tempo. E muitas vezes, os parâmetros mais lucrativos são exatamente os que não devem ser buscados, pois ali pode estar escondido o overfitting.

Walk forward analysis é uma técnica que implementa conceitos que ajudam a diminuir a possibilidade de super otimização. Em resumo, consiste no seguinte: Os parâmetros são otimizados em parte do período selecionado (in-sample, para trás) em seguida os resultados são testados em um período para frente (out of sample). Dessa forma, os resultados obtidos tendem a ser mais realistas, pois não foram otimizados em todo o período disponível. No metatrader, usamos a opção “Para frente”.

Análise de resultados/estatísticas

De posse dos resultados da otimização, agora o objetivo é analisar os relatórios que apresentam os melhores resultados, de acordo com suas necessidades. As opções quem podem ser buscadas são basicamente: Maiores potencial de lucro, consequentemente maior risco (drawdown); Baixo risco, menor potencial de lucro; ou um equilíbrio entre lucro e risco, esta é a opção que eu busco.

Os principais dados que analiso são: fator de lucro, drawdown, fator de recuperação e relação taxa de acerto / média de ganhos e perdas. Este processo foi detalhado aqui.

Teste em conta demo

Não há muito o que detalhar nesta etapa, o objetivo é executar o robô em conta demo para verificar se tudo que foi programado está de acordo com o esperado. A ideia é encontrar bugs de programação e validar a execução da estratégia em si. Porém, este passo tem uma importância fundamental na etapa seguinte.

Validação e cruzamento de resultados: Execução Real x Backtest

No meu processo de desenvolvimento esta etapa é essencial pra validação da estratégia. Meu objetivo é comparar o resultado da execução real de um dia específico com o backtest do mesmo dia. Não espero que os valores financeiros sejam exatamente os mesmo, por questões do mercado, book, slippage, etc. Mas quero que a quantidade de trades seja a mesma, as entradas, stops, e todas as outras funcionalidades devem estar de acordo com o esperado. O que acontece em uma situação real de mercado deve acontecer no backtest.

Dessa forma, eu tenho certeza que meu backtest é confiável e posso acreditar nas estatísticas que foram analisadas. Repito este processo por alguns dias, até chegar em uma conclusão, positiva ou negativa.

Executar em conta conta real com lote mínimo

Assim que você chegar a conclusão que os dados do seu backtest são confiáveis e as estatísticas auferidas são realistas, você está pronto pra por o robô pra executar em conta real. Faço isso sempre com o lote mínimo (volume financeiro), afinal o processo de validação ainda não acabou.

Acompanhar e monitorar

Esta etapa também é fundamental e muitas vezes negligenciada, você acabou de colocar uma estratégia nova para rodar e agora dinheiro de verdade está em jogo. Ainda podem acontecer problemas não previstos por você em backtest ou conta demo, como problemas comunicação com a corretora, quedas de conexão, gaps, ou qualquer outro tipo de problema inerente ao mercado.

Para acompanhar e monitorar meus robôs eu uso o board real time do BotSpot. Lá é exibido em tempo real, com atualização automática todas as operações abertas e encerradas da minha conta. Dessa forma, consigo acompanhar se alguma coisa não esperada está acontecendo. Abaixo algumas imagens:

Operações abertas e principais estatísticas da conta (BotSpot)
Operações encerradas no dia (BotSpot)
Timeline de operações (BotSpot)

Simular portfólio de estratégias/robôs

Se você está criando sua primeira estratégia, essa etapa não é necessária. Porém, se você usa mais de um robô é essencial que você saiba como todos os seus robôs irão performar em conjunto. Você precisa entender a correlação entre as estratégias, se seu risco está aumentando ou diminuindo adicionando uma nova estratégia, para poder planejar o seu gerenciamento de risco. Este processo eu também faço através do BotSpot.

Planejar gerenciamento de risco

Esta é a etapa final, onde você vai calcular quanto de capital você precisa pra rodar seu portfólio, qual será o seu potencial de lucro e quanto de risco você gostaria de se expor, baseado nas estatísticas auferidas na simulação do portfólio.

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

--

--