Como fazer backtest com dados reais e de qualidade

 

Estou realizando backtests de uma estratégia usando o modo Every Tick na série histórica do mini-índice (WIN$N). Ocorre que esse modo me parece bastante impreciso, porque por várias vezes, mesmo colocando ordens limite, o testador dá a ordem como executada em ticks acima ou abaixo do previsto (muitas vezes). Até imaginei que fosse o caso, por exemplo, de a ordem ter sido 'pulada', mas realmente não acredito que seja isso.

No exemplo da imagem, a operação deveria ser encerrada exatamente na linha amarela, porém ela foi finalizada dois ticks abaixo:


Exemplo


Isso causa uma distorção absurda no resultado do backtest (seja positivamente ou negativamente). Nesse caso, a operação teria sido encerrada com prejuízo, mas como a compra foi feita num valor abaixo do que o esperado, houve uma distorção positiva do resultado, que não refletiria a realidade.

Por outro lado, o método Every Tick Based on Real Ticks simplesmente não funciona. Testei usando contas na XP, na Rico e na Clear. Nas três os ticks simplesmente são falhos: assim que o EA começa a operar, milhares/centenas de milhares de ordens são enviadas e executadas dentro de um mesmo candle, ignorando completamente as condições de abertura/fechamento da posição.

Dito isso: como fazer o backtest com dados históricos que realmente correspondam à realidade?

 
Emanuel Amorim:

Estou realizando backtests de uma estratégia usando o modo Every Tick na série histórica do mini-índice (WIN$N). Ocorre que esse modo me parece bastante impreciso, porque por várias vezes, mesmo colocando ordens limite, o testador dá a ordem como executada em ticks acima ou abaixo do previsto (muitas vezes). Até imaginei que fosse o caso, por exemplo, de a ordem ter sido 'pulada', mas realmente não acredito que seja isso.

No exemplo da imagem, a operação deveria ser encerrada exatamente na linha amarela, porém ela foi finalizada dois ticks abaixo:




Isso causa uma distorção absurda no resultado do backtest (seja positivamente ou negativamente). Nesse caso, a operação teria sido encerrada com prejuízo, mas como a compra foi feita num valor abaixo do que o esperado, houve uma distorção positiva do resultado, que não refletiria a realidade.

Por outro lado, o método Every Tick Based on Real Ticks simplesmente não funciona. Testei usando contas na XP, na Rico e na Clear. Nas três os ticks simplesmente são falhos: assim que o EA começa a operar, milhares/centenas de milhares de ordens são enviadas e executadas dentro de um mesmo candle, ignorando completamente as condições de abertura/fechamento da posição.

Dito isso: como fazer o backtest com dados históricos que realmente correspondam à realidade?

O dado corresponde a realidade a execução que não, voce precisa ler como o testador funciona para ver entender as limitações dele. Uma coisa que facilita diminuir a discrepancia é no testador somente utilizar ordens a mercado. Mas mesmo isso vai ter discrepancias. Falo isso por que as ordens limites são executadas sem considerar a fila de execução e ainda priorizam o que o EA solicitou. Se tu estava na linha amarela e mandou comprar com ordem limitada 100 ticks acima. Ele vai comprar 100 ticks acima e ignorar que o preço atual de mercado era outro melhor. Triste isso não?
 
Emanuel Amorim:

Estou realizando backtests de uma estratégia usando o modo Every Tick na série histórica do mini-índice (WIN$N). Ocorre que esse modo me parece bastante impreciso, porque por várias vezes, mesmo colocando ordens limite, o testador dá a ordem como executada em ticks acima ou abaixo do previsto (muitas vezes). Até imaginei que fosse o caso, por exemplo, de a ordem ter sido 'pulada', mas realmente não acredito que seja isso.

No exemplo da imagem, a operação deveria ser encerrada exatamente na linha amarela, porém ela foi finalizada dois ticks abaixo:




Isso causa uma distorção absurda no resultado do backtest (seja positivamente ou negativamente). Nesse caso, a operação teria sido encerrada com prejuízo, mas como a compra foi feita num valor abaixo do que o esperado, houve uma distorção positiva do resultado, que não refletiria a realidade.

Por outro lado, o método Every Tick Based on Real Ticks simplesmente não funciona. Testei usando contas na XP, na Rico e na Clear. Nas três os ticks simplesmente são falhos: assim que o EA começa a operar, milhares/centenas de milhares de ordens são enviadas e executadas dentro de um mesmo candle, ignorando completamente as condições de abertura/fechamento da posição.

Dito isso: como fazer o backtest com dados históricos que realmente correspondam à realidade?

Isso não seria o Spread?

Mostrar BID e ASK

 

Fala Emanuel, como vai? Cara, eu venho estudando como ter mais precisao nos meus backtests baseado no "cada tick real" há algum tempo, o que posso te dizer é que simplesmente os ticks dessas corretoras que voce citou, sao bem ruins, experimente criar um ativo sintético no MT5 da Genial e compare somente o numero de ticks entre eles e a XP, voce vai ver que praticamente o número de ticks é quase o dobro.

Bom, a parte chata é que nenhuma corretora armazena esses ticks por muito tempo, pois sao muito pesados, o que estamos fazendo aqui no escritório é armazenar diariamente os ticks reais, e com isso já estamos melhorando muito a precisao dos nossos backtests. Se você procurar outros temas aqui no fórum sobre os ticks reais vai ver que eu venho procurando informações sobre o assunto há algum tempo já.... 

Aqui já estamos com os arquivos desde 2022 (ticks reais validados), alguns GB, mas infelizmente (pelo menos para o nosso caso), não vemos solução melhor. 

Qualquer coisa, nos procure no ins.ta:    outliers.invest 
Mas de ante-mão, esqueça os ticks dessas corretoras que você mencionou e faça com um teste com a Genial, perdemos muito tempo até descobrir isso. rsrsrs

Razão: