Execução

O backtest contra a execução real: para onde vai a diferença

Quase toda estratégia rende pior no real do que na simulação, e a diferença normalmente é atribuída ao azar ou a uma mudança de condições. As duas explicações estão disponíveis e as duas normalmente estão erradas: a diferença tem fontes mecânicas, e elas podem ser listadas.

· 10 min de leitura

A diferença não é ruído

Quando uma estratégia testada rende abaixo no real, a primeira hipótese oferecida é que o mercado mudou. Essa hipótese é infalsificável no curto prazo e portanto inútil, e além disso normalmente é desnecessária, porque a diferença entre uma simulação e um extrato de conta tem causas que não exigem de jeito nenhum que o mercado tenha mudado.

O enquadramento útil é que um backtest é um modelo, e todo modelo difere da realidade em lugares específicos. A pergunta não é se o modelo estava errado mas onde, e essa pergunta tem respostas que você pode ir conferir em vez de especular.

Há seis fontes recorrentes, e na prática a maior parte da diferença numa estratégia dada vem de uma ou duas delas. Identificar quais é um exercício de diagnóstico, e vale ser feito antes de concluir qualquer coisa sobre se a ideia de fundo funciona.

O mercado não necessariamente mudou. Um backtest é um modelo, e modelos diferem da realidade em lugares específicos que você pode ir conferir.

Fonte um: execuções que você não teria conseguido

A mais comum e a maior. Uma simulação tipicamente supõe que uma ordem parada num preço é executada quando o mercado toca aquele preço. Na realidade, tocar um preço significa que alguém negociou ali, não que você negociou: a sua ordem espera numa fila atrás de todos que colocaram naquele nível antes, e o mercado pode tocar, executar o começo da fila, e ir embora sem te alcançar.

Isso afeta as estratégias de forma assimétrica e na pior direção possível. As suas operações vencedoras, onde o preço tocou o seu nível e se afastou, são exatamente aquelas em que a fila talvez não tenha sido esvaziada. As perdedoras, onde o preço tocou e atravessou, são as que certamente executaram. A simulação te dá as duas; a realidade te dá a segunda de forma confiável e a primeira às vezes.

O diagnóstico é direto: conte a proporção das suas execuções simuladas que ocorreram num nível que o mercado só tocou e não atravessou. Se for alta, essa é a sua diferença principal, e a correção honesta é exigir que o mercado atravesse o seu nível por alguma margem antes de contar uma execução.

Fonte dois: o spread que você não modelou

Muitas simulações rodam sobre uma única série de preços, tipicamente o fechamento de cada intervalo, e entram e saem naquele preço. Mas não existe um preço único: existe uma compra e uma venda, e você compra num e vende no outro. Usar um ponto médio ou um fechamento para os dois lados tira um custo inteiro de cada ida e volta.

A magnitude dessa omissão é proporcional à frequência com que a estratégia opera, e é por isso que ela destrói as de alta frequência e mal toca as de horizonte longo. Uma estratégia que toma uma posição por mês pode absorver a omissão; uma que toma vinte por dia não pode, e a diferença de resultado entre as duas é inteiramente um artefato da escolha de modelagem.

A correção é modelar os dois lados explicitamente: comprar na venda, vender na compra, usando o spread real que existia na época e não um valor típico. Onde não houver histórico de spread, usar uma constante prudente é infinitamente melhor que não usar nenhuma, porque nenhuma é uma suposição de zero e zero é o único valor certamente errado.

Fonte três: taxas aplicadas de forma incompleta

Erros de modelagem de taxas são comuns e quase sempre vão na mesma direção. A versão frequente é aplicar uma única alíquota a cada operação quando a estrutura real distingue ordens que trazem liquidez de ordens que a tomam, e supor que as suas ordens se comportam como a categoria mais barata mais vezes do que se comportam.

Há também o custo de financiamento das posições alavancadas, que não é uma taxa de trading e não aparece em nenhuma tabela. Uma simulação de uma estratégia que carrega contratos de um dia para o outro sem contar os pagamentos periódicos de financiamento mede outra coisa que não o que a conta teria feito, e a omissão se acumula com o tempo de carregamento.

A correção é aritmética e vale ser feita com precisão: aplicar a alíquota certa por tipo de ordem conforme o que cada ordem realmente foi, e somar os custos periódicos de qualquer posição carregada através dos intervalos em que eles são cobrados. É a fonte menos interessante da diferença e uma das mais fáceis de eliminar.

Fonte quatro: informação que você não tinha

O viés de antecipação é o sutil e ele se esconde em código comum. Todo cálculo que usa informação de um candle para decidir dentro daquele candle usa o futuro, e a versão clássica é decidir na abertura de um período a partir de um valor calculado sobre o fechamento dele.

Ele também entra pela revisão de dados. Algumas séries são corrigidas após a publicação, e uma série baixada hoje contém essas correções; uma estratégia testada sobre a série corrigida tinha um conhecimento que ninguém tinha na época. Isso afeta as entradas fundamentais e macro muito mais que os preços, mas séries de preços não são imunes onde uma praça republicou dados.

O teste de antecipação é rodar a estrutura de um jeito que estruturalmente não possa ver o futuro: processar os dados uma observação por vez, tomando cada decisão só com o que a precedia. Se os resultados desabam, você tinha antecipação, e o tamanho do desabamento é exatamente a parte do seu resultado feita de informação de que você não dispunha.

Decidir na abertura de um período com um valor calculado sobre o fechamento dele é a antecipação clássica. É invisível numa planilha e fatal num resultado.

Fonte cinco: os sobreviventes sobre os quais você testou

Uma estratégia testada sobre os ativos que existem hoje foi testada sobre um conjunto selecionado por ter sobrevivido. Os ativos que foram listados, negociados e depois sumiram estão ausentes dos seus dados, e a estratégia nunca teve que lidar com eles, o que lisonjeia o resultado exatamente no montante que esses fracassos teriam custado.

Em ativos digitais esse efeito é incomumente grande, porque a taxa de fracasso dos ativos listados é alta e os desaparecimentos não são graduais. Uma estratégia que opera um universo amplo e só foi testada sobre o universo atual carrega um otimismo embutido que não é visível em nenhuma das estatísticas dela.

A correção exige dados históricos que incluam ativos retirados e mortos, o que é mais difícil de obter e vale obter se a sua estratégia opera um conjunto amplo. Para uma estratégia que opera um número pequeno de ativos grandes e antigos, o efeito é menor, e saber em qual situação você está é mais útil que supor uma ou outra.

Fonte seis: as escolhas que você fez ao testar

A última fonte não é um erro de modelagem mas um erro estatístico, e é a mais difícil de ver. Cada parâmetro que você tentou e descartou, cada variante que testou e abandonou, cada faixa de datas que olhou, é um teste, e o melhor resultado de muitos testes supera a verdade num montante que cresce com o número de testes.

O mecanismo é o mesmo que fabrica os padrões de calendário, e não exige desonestidade nenhuma. Quem tenta cem variantes e fica com a melhor não trapaceou; simplesmente produziu um número que reflete a busca tanto quanto a estratégia, e o resultado real reverte para o que a estratégia sozinha produz.

A defesa é guardar dados de lado e contar. Reserve um período que a estratégia nunca tocou, teste a versão final sobre ele uma única vez, e trate esse número único como a estimativa. E mantenha a conta de quantas variantes foram tentadas, porque essa conta é a medida do otimismo a esperar e é um número que ninguém anota.

Qual é a sua

Uma sequência de diagnóstico útil, por ordem de magnitude típica. Confira primeiro as execuções: qual proporção dependia de um nível tocado e não atravessado. Confira depois se os dois lados do spread foram modelados. Verifique então a aritmética das taxas, o que é rápido. Essas três respondem pela maior parte da diferença na maioria das estratégias ativas.

Depois as três difíceis. Teste antecipação processando sequencialmente. Pergunte se o seu universo de ativos foi selecionado por sobrevivência. E conte as variantes que você tentou, honestamente, incluindo as abandonadas no primeiro minuto.

A ordem importa porque as três primeiras são corrigíveis e as três últimas em geral não são. Uma estratégia cuja diferença vem da aritmética das taxas pode ser consertada; uma cujo resultado veio de tentar duzentas variantes não pode ser consertada, só reestimada, e a reestimativa é o número que sempre foi verdadeiro.

Para que serve um backtest corrigido

O propósito de retirar essas seis fontes não é produzir um número que bata com o desempenho real, porque ele não vai bater. O propósito é produzir um número que não seja sistematicamente otimista, para que comparações entre estratégias façam sentido e para que a decisão de alocar capital seja tomada sobre algo que não seja um artefato.

Um backtest corrigido também muda o que você aprende de uma divergência no real. Se a simulação foi honesta sobre execuções, spread e taxas, e os resultados reais mesmo assim diferem substancialmente, isso é informação autêntica sobre uma mudança de condições, que é exatamente o sinal que a versão não corrigida jamais poderia te dar porque ela ia divergir de qualquer jeito.

Esse é o verdadeiro custo de um backtest otimista. Ele não só exagera o resultado; ele destrói a sua capacidade de detectar quando algo de fato deu errado, porque uma diferença permanente e inexplicada torna cada diferença nova banal.

A prática que pega isso mais cedo

Rode a estratégia no real num tamanho pequeno o bastante para que o resultado não importe, por tempo suficiente para acumular um número significativo de operações, e compare cada operação individual com o que a simulação dizia que aquela operação teria sido. Não o agregado, as operações individuais.

A comparação é muito mais informativa que o agregado porque ela localiza a diferença. Se as entradas batem e as saídas não, isso é um problema. Se as execuções batem e o custo por operação é consistentemente maior, isso é outro. O agregado te diz que uma diferença existe; a comparação operação a operação te diz onde ela mora.

A maioria pula essa etapa porque ela não é empolgante e atrasa o lançamento. Ela também é a única etapa que distingue um erro de modelagem que você pode consertar de uma ideia que não funciona, e confundir os dois sai caro nas duas direções: abandonar uma ideia sólida, ou escalar uma quebrada.

Perguntas frequentes

Por que minha estratégia sempre rende pior no real?

Normalmente nem azar nem mudança de mercado. Seis fontes mecânicas produzem a diferença: execuções que você não teria recebido, um spread não modelado, aritmética de taxas incompleta, viés de antecipação, um universo de ativos selecionado por sobrevivência, e o número de variantes tentadas antes de ficar com a melhor.

Qual é a causa mais comum?

As execuções supostas. Simulações tipicamente executam uma ordem parada quando o mercado toca o preço dela, mas tocar significa que alguém negociou ali, não que você negociou. As suas operações vencedoras são justo aquelas em que a fila talvez não tenha sido esvaziada; as perdedoras certamente executaram.

Por que o spread importa tanto?

Muitas simulações usam uma só série de preços e entram e saem naquele preço, tirando um custo inteiro de cada ida e volta. A magnitude é proporcional à frequência de operação, e por isso a omissão destrói estratégias de alta frequência e mal toca as de horizonte longo.

O que é viés de antecipação exatamente?

Usar informação que não estava disponível quando a decisão foi tomada. A versão clássica é decidir na abertura de um período a partir de um valor calculado sobre o fechamento dele. Ele também entra por séries revisadas que contêm correções que ninguém tinha na época.

Como eu testo antecipação?

Rode a estratégia de modo que ela estruturalmente não possa ver o futuro: processe uma observação por vez, cada decisão só com o que a precedia. Se os resultados desabam, você tinha antecipação, e o tamanho do desabamento é a parte do resultado feita de informação indisponível.

O que é viés de sobrevivência em cripto?

Testar sobre os ativos que existem hoje é testar sobre um conjunto selecionado por ter sobrevivido. Os ativos listados, negociados e desaparecidos estão ausentes, então a estratégia nunca teve que lidar com eles. O efeito é incomumente grande aqui porque a taxa de fracasso é alta e os desaparecimentos abruptos.

O número de variantes tentadas importa mesmo?

Sim, e é a fonte mais difícil de ver. O melhor resultado de muitos testes supera a verdade num montante crescente com o número de testes, sem desonestidade nenhuma. A defesa é um período reservado testado uma vez, e uma conta honesta de quantas variantes foram tentadas.

Como eu descubro de onde vem a minha diferença?

Opere no real num tamanho que não importe e compare cada operação individual com o que a simulação dizia que ela seria. O agregado te diz que uma diferença existe; a comparação operação a operação a localiza, distinguindo um erro de modelagem consertável de uma ideia que não funciona.

Abrir uma conta Todos os artigos