Por que o backtesting falhou?

Para adicionar comentários, por favor Faça o login ou registrar
Rogerio Figurelli
Moderador
58523
Rogerio Figurelli  
Talvez essa seja a pergunta mais comum de quem começou a utilizar robôs. Afinal, tudo parece absolutamente matemático e científico. Os modelos e algoritmos parecem perfeitos.
 
Mas o backtesting falhou.
 
Você pode ter descoberto o modelo operacional mais avançado possível, e comprovado ele em backtesting, mas não esqueça que o mercado de capitais não é determinístico. Assim como não é o futuro.

Mas meu modelo era probabilístico?
 
Assim mesmo, o alto nível de incerteza do futuro exige um outro tipo de abordagem, cujo backtesting por si só não é suficiente para endereçar.
 
E a ciência e estatística, onde foram parar?
 
Continuam ai, ao seu lado, mas você deve moldar ela ao seu favor. E não contra. Pois a realidade do backtesting é baseada em amostras estatísticas.
 
Por exemplo, se pegarmos o ativo que talvez seja o mais relevante no mundo atual, pelo menos em termos de volatilidade, que é o par EUR/USD do Forex, em apenas 1 dia, contando as informações de tick a tick, temos mais de 1G byte de dados.
 
Sim, 1G byte em um dia. E pode ter certeza que o MetaTrader 5 não irá processar esse 1G byte. Nem será feito o download de toda essa informação para seu computador. Seu computador tem uma simplificação estatística, uma amostra desse valor.
 
Da mesma forma, quanto mais parâmetros possui a sua estratégia, maior o número de combinações e complexidade de convergência para uma boa solução através do algoritmo genético do MT5.
 
Bem, e se eu resolver todos esses problemas de capacidade, ou até mesmo optar por outra plataforma que assim o faça?
 
Duvido que exista, você já está com uma super plataforma, capaz de simular em nuvem estratégias altamente complexas e em poucos minutos.
 
Além disso, mesmo que fosse possível, não esqueça que o backtesting é um teste do passado, e sua estratégia irá enfrentar os dados do futuro, e nada há de garantia sobre eles.
 
Reconhecer e entender porque os backtestings falham (e eles irão falhar, mais cedo ou mais tarde), apesar de sua grande relevância, torna a descoberta de boas estratégias mais desafiadora.
 
Podemos diminuir essa falha e mudar o jogo?
 
Certamente, e nesse ponto a estatística, ciência e tecnologia, mas principalmente expertise com robôs, irá ajudar, e muito.
 
Richer Araujo
2317
Richer Araujo  
Muito legal sua abordagem.
Rogerio Figurelli
Moderador
58523
Rogerio Figurelli  
richeraraujo:
Muito legal sua abordagem.
Muito obrigado Richer.
Thiago Ferreira
2018
Thiago Ferreira  

É verdade figurelli. Eu como exemplo tenho um EA que me fez milhões, testei em 2 plataformas diferentes MT5, com 100% de qualidade dos dados, e pela [Editado pelo Moderador] com 98%, fiz backtests e testes para frente, mas quando coloquei na real os resultados foram diferentes, contrário do que eu imaginava. Talvez porque o MT5 não processa os Gb. com todos os dados tick by tick, conforme você nos disse. Pode ter sido também um overfit (acho que é assim que se escreve), que pode causar. Mas como nos testes para frente continuou com uma lucratividade excelente, acredito que não seja isso.

Depois disso, não parei de criar EAs baseados em meus estudos, mas não um com a mesma lucratividade deste meu anterior e com drawndown baixíssimo.

Rogerio Figurelli
Moderador
58523
Rogerio Figurelli  
tcferreira:

É verdade figurelli. Eu como exemplo tenho um EA que me fez milhões, testei em 2 plataformas diferentes MT5, com 100% de qualidade dos dados, e pela [Editado pelo Moderador] com 98%, fiz backtests e testes para frente, mas quando coloquei na real os resultados foram diferentes, contrário do que eu imaginava. Talvez porque o MT5 não processa os Gb. com todos os dados tick by tick, conforme você nos disse. Pode ter sido também um overfit (acho que é assim que se escreve), que pode causar. Mas como nos testes para frente continuou com uma lucratividade excelente, acredito que não seja isso.

Depois disso, não parei de criar EAs baseados em meus estudos, mas não um com a mesma lucratividade deste meu anterior e com drawndown baixíssimo.

Olá Thiago, obrigado por compartilhar, teu caso infelizmente não é a exceção, mas a regra. Mas sem dúvida esse é o desafio que equilibra as forças, pois senão os mercados estariam dominados apenas pela questão técnica.

No segmento de finanças quantitativas as portas estão abertas para todas as áreas do conhecimento, e todos profissionais, até mesmo os relacionados aos aspectos mais comportamentais do mercado.

E não parar, ou seja, perseverar, como você bem comenta, também é uma qualidade comportamental fundamental do trader quantitativo.

katsu
34
katsu  

Muito interessante Figurelli. Esses dias estava testando um robô que achava ser campeão. De janeiro pra cá fez muita grana, mas quando fui rodar somente no mês de abril, ele quebrou.

Hoje em dia há várias configurações de EAs, cada um com sua estratégia. Vejo também que os robôs mais avançados tem diversos parâmetros dentro de uma só. Uma coisa estranha é pensar nesses robôs complexos que, num momento de perda e a outra estratégia é contrária, qual seria a posição dele em relação a isso, digo isso numa que tenha somente dois parâmetros, imagina os que tem cerca de 5 a 10.

Como sou meio japonês meio brazuka estava pensando num método contrário, digo no conceito. Informar o robô de alguma forma para NÂO entrar em determinados momentos.

Seguindo este conceito, tenho conseguido configurar alguns robôs e tenho tido resultados surpreendentes. Falta algumas coisinhas para realizar o teste completo, como não sou programador dificulta.

O negócio é ir trabalhando até achar a receita ideal para o bolo $$$$$. 

Rogerio Figurelli
Moderador
58523
Rogerio Figurelli  
katsu:

Muito interessante Figurelli. Esses dias estava testando um robô que achava ser campeão. De janeiro pra cá fez muita grana, mas quando fui rodar somente no mês de abril, ele quebrou.

Hoje em dia há várias configurações de EAs, cada um com sua estratégia. Vejo também que os robôs mais avançados tem diversos parâmetros dentro de uma só. Uma coisa estranha é pensar nesses robôs complexos que, num momento de perda e a outra estratégia é contrária, qual seria a posição dele em relação a isso, digo isso numa que tenha somente dois parâmetros, imagina os que tem cerca de 5 a 10.

Como sou meio japonês meio brazuka estava pensando num método contrário, digo no conceito. Informar o robô de alguma forma para NÂO entrar em determinados momentos.

Seguindo este conceito, tenho conseguido configurar alguns robôs e tenho tido resultados surpreendentes. Falta algumas coisinhas para realizar o teste completo, como não sou programador dificulta.

O negócio é ir trabalhando até achar a receita ideal para o bolo $$$$$. 

Olá Katsu, perfeito, obrigado, muito interessante tua experiência, essa é mais uma grande vantagem dos robôs apontadas por ti, que é aprendermos com eles a partir dos ajustes, uma vez que existe muita inteligência estratégica a partir dessa evolução do backtesting até resultados em conta real.
ROGERIO MEDEIROS
115
ROGERIO MEDEIROS  

Boa tarde pessoal!!! 

Eu utilizo o MT4, vocês sabem onde encontrar uma base de dados que seja no mínimo confiável para fazer os testes?

Encontrei por aí bases que são compradas mas, claro que se forem gratuitas será melhor. 

humbertobrandao Brandao
138
humbertobrandao Brandao  

Para quem envia muitas ordens por dia, sobre o mesmo ativo, recomendo não usar a simulação do MT5!!! (principalmente para quem manda ordens limite (peding orders) para concorrer no order book);

Ela é mais ou menos confiável apenas para algotraders de baixa frequência.

Possui alguns erros metodológicos GRAVÍSSIMOS no que diz respeito a simulação do mercado financeiro. E não são poucos os erros que deixam a desejar na simulação.

Com relação ao back test, que usa candles (OHLC) ou outras formas para simulação, os problemas são ainda maiores. E estratégias de baixa frequência também podem ter diferenças gritantes de performance.

No meu caso que envio muitas ordens, a simulação do MT5  apresenta resultados muito diferentes da realidade, em função de não ter um bom controle sobre a prioridade da minha ordem sobre o book de ofertas.

Alerto a vocês com propriedade, e não como leigo em simulação.

Para aqueles que enviam poucas ordens, e mandam a mercado, o simulador é razoável (em tempo real. o backtest continua a desejar).

O MT5 é uma ótima ferramenta para programadores do ponto de vista de roteamento de ordens. Mas temos que ter muio cuidado com a ilusão dos resultados simulados dele. 

Rodrigo Malacarne
Moderador
8089
Rodrigo Malacarne  
humbertobrandao:

Para quem envia muitas ordens por dia, sobre o mesmo ativo, recomendo não usar a simulação do MT5!!! (principalmente para quem manda ordens limite (peding orders) para concorrer no order book);

Ela é mais ou menos confiável apenas para algotraders de baixa frequência.

Possui alguns erros metodológicos GRAVÍSSIMOS no que diz respeito a simulação do mercado financeiro. E não são poucos os erros que deixam a desejar na simulação.

Com relação ao back test, que usa candles (OHLC) ou outras formas para simulação, os problemas são ainda maiores. E estratégias de baixa frequência também podem ter diferenças gritantes de performance.

No meu caso que envio muitas ordens, a simulação do MT5  apresenta resultados muito diferentes da realidade, em função de não ter um bom controle sobre a prioridade da minha ordem sobre o book de ofertas.

Alerto a vocês com propriedade, e não como leigo em simulação.

Para aqueles que enviam poucas ordens, e mandam a mercado, o simulador é razoável (em tempo real. o backtest continua a desejar).

O MT5 é uma ótima ferramenta para programadores do ponto de vista de roteamento de ordens. Mas temos que ter muio cuidado com a ilusão dos resultados simulados dele. 

Olá humbertobrandao,

Com relação a esse assunto, por favor dê uma olhada nessas discussões antigas do fórum MQL5 em Português.

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

Avaliação de EA's rodando com real-money em comparação aos backtests

Malacarne, 2014.01.27 14:10

Mais um tópico interessante, Rodrigo! Parabéns! Tentarei, rapidamente, externar minha experiência/opinião sobre esse assunto...

Para mim, a principal diferença entre o modo real e o modo de backtest é, justamente, o fato de que esse último não consegue simular com exatidão a realidade... Pelo menos no caso do MT5, o chamado modo "Cada Tick" do backtest não é baseado em ticks reais, mas sim, em ticks simulados, como já bastante discutido nesse tópico. A metodologia de geração dos ticks no Strategy Tester do MT5 pode ser lida nesse artigo, entretanto, apesar de ser uma boa metodologia,  a MetaQuotes não abre totalmente os detalhes dessa metodologia.

Ainda com relação às principais diferenças entre os dois modos, o modo "real" de trading conta com outros aspectos que não existem no backtest, como falhas de energia e falhas ou delays na conexão de internet, entre outros exemplos... No caso de pings de conexão muito altos, corre-se atualmente um sério risco de duplicidade de ordens no MT5, como discutido nesse tópico do fórum em inglês.

A sua pergunta "o que é possível fazer para ajustá-los?" é muito interessante... pelo menos no meu caso, eu costumo usar dentro de OnTimer( ) alguns parâmetros de verificação de erros, como por exemplo o, cancelar o EA (assim como todas as ordens pendentes caso não haja posição) quando ordens em duplicidade forem identificadas... outro exemplo: cancelar o EA (ou emitir um alerta) quando a velocidade de execução das ordens for superior a "x" segundos... enfim, existem "n" checagens altamente relevantes que devem ser feitas quando um EA "black box" for colocado pra rodar... se o EA for um "gray box" é o próprio ser humano quem faz essas checagens... mas no caso de black boxes todas as checagens possíveis devem ser feitas dentro do próprio código... por isso mesmo o EA é chamado de "black box"... :-)

Por fim, as duas variáveis que mais impactam a performance de um EA rodando em modo real são: 1) problemas de conexão (latência ou interrupção) e 2) liquidez do ativo onde o EA está sendo rodado, caso os parâmetros do EA estejam dentro de OnTick()... Logo, um baixo número de trades, pelo menos na minha opinião, implica sim num risco maior para o EA... Interessante notar que uma liquidez muito alta também impacta o EA, caso não sejam implementados filtros para resolver o problema de ordens enviadas em duplicidade.

Espero ter ajudado. Abraços,
Malacarne 


humbertobrandao Brandao
138
humbertobrandao Brandao  
Malacarne:

Olá humbertobrandao,

Com relação a esse assunto, por favor dê uma olhada nessas discussões antigas do fórum MQL5 em Português.


Boa discussão Malacarne.
Vamos torcer para nas próximas versões a simulação melhore. :)
12
Para adicionar comentários, por favor Faça o login ou registrar