Backtesting é uma simulação matemática usada pelos traders para avaliar o desempenho de uma estratégia de negociação. A simulação aproveita os dados históricos do mercado na tentativa de calcular o desempenho de uma estratégia de negociação no passado.
Em sua essência, o backtesting é uma maneira de os traders tentarem prever se uma estratégia será lucrativa ou não quando implementada com capital real. Os comerciantes usam backtesting para filtrar qualquer estratégia que não tenha sido lucrativa historicamente.
Embora o desempenho histórico não garanta resultados futuros, o backtesting ainda é a maneira mais confiável de identificar estratégias robustas. É necessário estudar essas simulações para filtrar estratégias que claramente apresentam desempenho inferior. Assim, temos mais chances de ganhar dinheiro e não precisamos testar estratégias com fundos reais.
À medida que as ferramentas de negociação de criptomoedas se tornaram mais populares, o mesmo aconteceu com o backtesting. Hoje, é recomendado que os traders testem completamente todas as estratégias antes de lançá-las no mercado criptográfico selvagem. Dessa forma, podemos ganhar confiança de que a estratégia tem potencial para funcionar de maneira ideal.
Requisitos de Dados de Backtesting
Antes de começarmos as estratégias de backtesting, devemos entender os diferentes tipos de dados que os desenvolvedores usam para criar ferramentas de backtesting e como cada um deles representa o mercado do mundo real.
Dados do Castiçal
A maneira mais comum de implementar uma ferramenta de backtesting é que os desenvolvedores usem dados de velas OHLCV. A razão pela qual a maioria dos desenvolvedores usa esses dados é porque eles estão prontamente disponíveis.
Infelizmente, embora sejam os dados mais fáceis de acessar para construir essas ferramentas, são os dados menos confiáveis. Na verdade, usar dados de velas OHLCV para executar backtests pode ser a diferença entre construir uma estratégia lucrativa e perder seu dinheiro.
A situação fica ainda pior quando os traders usam dados de velas agregados de fontes como CoinMarketCap. Os dados agregados não são uma representação válida dos pedidos reais que estavam disponíveis em uma bolsa específica no momento.
Não use dados de velas para criar ferramentas de backtesting.
Dados de Negociação Tick-by-Tick
Os dados comerciais tick-by-tick podem ser um componente útil para ferramentas de backtesting históricas. Negociações de ticks individuais são as negociações exatas que foram executadas em uma bolsa a cada momento. Essas negociações individuais representam ordens reais que foram preenchidas, então sabemos com certeza que deve ter havido uma ordem aberta disponível naquele preço na bolsa.
Embora os dados de negociação de ticks possam ser um aspecto poderoso dos serviços de backtesting, eles ainda serão apenas um pouco mais precisos do que os dados de velas OHLCV. Pontos de dados comerciais individuais não fornecem informações sobre o estado do livro de ordens no momento da negociação. Como resultado, os desenvolvedores não podem avaliar com precisão quais ordens estariam disponíveis na bolsa naquele exato momento em que uma negociação simulada é executada.
O uso de dados comerciais tick-by-tick para ferramentas de backtesting é desencorajado.
Dados Instantâneos do Livro de Pedidos
O último tipo de dados comum nas ferramentas de backtesting são os instantâneos do livro de pedidos. Os instantâneos do livro de pedidos fornecem o estado exato de um mercado no momento do instantâneo. A intenção é ter uma representação completa de quais pedidos estavam disponíveis na bolsa em um determinado momento.
Ao criar ferramentas de backtesting, esse é o tipo de dados mais poderoso a ser usado. Como os dados incluem as ordens precisas que estavam disponíveis no momento em que uma negociação é simulada, podemos calcular as negociações exatas que poderíamos realizar e o preço de cada uma dessas negociações.
Os instantâneos do livro de pedidos permitem que os desenvolvedores simulem o impacto do spread de compra e venda, derrapagem e liquidez.
Os instantâneos do livro de pedidos são altamente recomendados como o tipo de dados para ferramentas de backtesting.
Fontes de Dados
A principal fonte de dados do livro de pedidos é cada troca de criptografia individual. Na maioria dos casos, esses dados são transmitidos ao vivo pelos websockets de uma exchange. No entanto, devido ao grande volume de dados, as trocas geralmente não armazenam esses dados a longo prazo. Isso significa que, uma vez que os dados são enviados por meio de um websocket de troca, eles desaparecem para sempre.
A menos, é claro, que alguém colete os dados da bolsa e os disponibilize por meio de um serviço terceirizado. É aqui que os provedores de dados entram em cena. Os provedores de dados são essencialmente empresas que agregam dados em cada troca e os armazenam para que outras pessoas possam acessá-los posteriormente.
Os provedores de dados para instantâneos históricos do livro de pedidos são poucos e distantes entre si. Devido ao fornecimento limitado desses dados, os desenvolvedores têm recorrido a conjuntos de dados alternativos, como castiçais OHCLV, que podem causar imprecisões para backtests. Como resultado, a maioria das ferramentas de backtesting disponíveis no mercado hoje deturpam o desempenho das estratégias.
Depois de uma recente parceria entre Shrimpy e Kaiko, Shrimpy agora é capaz de oferecer um catálogo histórico completo de instantâneos do livro de pedidos em todas as principais bolsas. Desde 2014, a Kaiko vem coletando meticulosamente dados comerciais tick-by-tick, instantâneos do livro de pedidos e castiçais OHLCV.
Os desenvolvedores podem acessar esses dados por meio do APIs de desenvolvedor do Shrimpy. Usando o modelo simples de precificação sob demanda, os clientes podem consultar instantâneos em diferentes prazos, pares de negociação e trocas.
A Kaiko fornece os dados mais precisos do mercado. Agora, todo desenvolvedor pode acessar os dados da Kaiko para simular backtests com precisão por meio das APIs do Shrimpy.
Simulando um Backtest
Para calcular com precisão o desempenho de uma estratégia, um backtest requer os números mais exatos possíveis. Alguns fatores que devem ser considerados durante um backtest incluem:
- Taxa de negociação da bolsa
- O spread de compra e venda para o par de negociação
- Derrapagem do mercado no livro de ofertas
- Tempo para cada negociação individual
Ao simular a compra de um ativo, devemos utilizar o preço pedido no livro de ofertas. Se você estiver na bolsa, o melhor preço pedido é o preço mais baixo que alguém na bolsa está disposto a vender o ativo. Não se esqueça de levar em consideração também a taxa de negociação e a derrapagem.
Usando o livro de pedidos em figura 1 como exemplo, vamos imaginar que queremos comprar 1.500 USDT de ENJ. Para este exemplo, vamos supor que este livro de pedidos seja para a Binance, que tem uma taxa de negociação básica de 0,1%.
Poderíamos simular a compra de 1.500 USDT em ENJ aumentando gradualmente o preço de nosso pedido sobre o livro de pedidos até que tenhamos comprado nosso valor desejado de 1.500 USDT em ENJ. As negociações consecutivas que executaríamos incluem o seguinte:
- Compre 1151,74904126 ENJ a 0,20559424 USDT cada = 236,97296881 USDT + 0,2369729 USDT em taxas (1262,79005829 USDT restantes)
- Compre 2.559,954 ENJ a 0,20640294 USDT cada = 528,38203186 USDT + 0,52838203 USDT em taxas ( 733,8796444 USDT restantes)
- Compre 1992,51418976 ENJ a 0,20659518 USDT cada = 411,64382769 USDT + 0,41164382 USDT em taxas (321,82417288 USDT restante)
- Compre 1555,85587451 ENJ a 0,20663894 USDT cada = 321,50267164 USDT + 0,32150267 USDT em taxas (0 USDT restante)
Observe que havia alguma sobra no livro de pedidos que não poderíamos comprar ao preço de 0,20663894. A quantia que não compramos permaneceria na bolsa para que outro participante do mercado a pegasse.
No total, compramos exatamente 7260.08410553 ENJ depois que todas as negociações foram concluídas. Se tivéssemos usado apenas dados de velas OHLCV, nossa estimativa provavelmente teria sido tão distante quanto 7319.76112984. Esta é uma diferença de quase 60 ENJ ou quase 1%. Pode não parecer muito, mas essa pequena porcentagem aumenta incrivelmente rapidamente se estivermos simulando centenas ou milhares de negócios.
Depois que a simulação de negociação estiver concluída, registre os resultados do pedido para que possamos usar esses fundos para negociar com outro ativo posteriormente no backtest. Usando este registro comercial detalhado, podemos manter registros meticulosos de cada negociação que foi feita durante o backtest. Esses logs podem ser usados para calcular estatísticas adicionais, como o volume de negociação que executamos, quantas negociações realizamos e a frequência de compra ou venda de um determinado ativo.
Resultados de Desempenho
Calcular o desempenho de uma estratégia é simples. Tudo o que precisamos fazer é calcular o valor do nosso portfólio no início do backtest e compará-lo com o valor do nosso portfólio no final do backtest.
O valor de uma carteira é calculado multiplicando o valor de cada ativo que possuímos pelo preço desse ativo e somando os valores de todos os ativos da carteira.
Ao fazer esse cálculo no início do backtest e novamente no final do backtest, podemos obter a variação de valor do nosso portfólio ao longo do backtest.
O cálculo do desempenho pode então ser feito usando a equação:
Desempenho = [( Vf – Vi) / Vi] x 100
Onde,
- Vf é o valor final da carteira
- Vi é o valor inicial da carteira
- Multiplique por 100 para converter de um decimal para uma porcentagem
Observe que o objetivo de um backtest não é apenas otimizar o desempenho. Essencialmente, só porque uma estratégia específica funciona bem nas condições de backtest, isso não significa automaticamente que é uma boa estratégia. Também devemos considerar a consistência e robustez da estratégia.
Consistência de backtesting – A capacidade de produzir resultados semelhantes em diferentes períodos históricos e condições de mercado variáveis.
Robustez do teste de volta – A capacidade de produzir resultados semelhantes mesmo quando pequenas alterações são feitas nos parâmetros da estratégia.
Uma estratégia sem robustez pode sofrer grandes oscilações de desempenho mesmo quando as menores alterações são feitas nos parâmetros de uma estratégia. Da mesma forma, uma estratégia que não é consistente provavelmente experimentará resultados muito diferentes ao testar diferentes períodos históricos.
No caso ideal, queremos usar uma estratégia que possa ser testada em qualquer período histórico e produzir resultados semelhantes. Da mesma forma, o desempenho de nossa estratégia não deve sofrer grandes oscilações quando pequenas alterações são feitas na estratégia.
Estratégias sem consistência ou robustez podem levar a um desempenho futuro amplamente imprevisível. Se o backtest de uma variedade de períodos históricos e configurações para nossa estratégia produzir resultados muito variados, isso pode indicar que nossa estratégia é imprevisível. Nesse caso, selecionar apenas uma única configuração ou período de backtesting para avaliar seria essencialmente sobreajustar a estratégia a uma situação particular. Os resultados de um backtest de overfit não seriam uma representação geral da estratégia.
Um exemplo de estratégia consistente que encontramos é o reequilíbrio. Na grande maioria dos casos, o reequilíbrio superou o hodling. Mesmo quando ajustamos o período de reequilíbrio de 1 hora para 1 dia para 1 mês.
Sinalizadores Vermelhos de Backtest
Devido à natureza técnica do backtesting, às vezes é difícil identificar se um backtest é confiável. Os itens de alerta a seguir o ajudarão a identificar se os resultados de um backtest são razoáveis. Esta não é uma lista extensa, mas alguns dos casos mais comuns.
- O desempenho aumenta após cada negociação. Se o desempenho aumentar consistentemente, especialmente após cada negociação, isso pode indicar que há um erro de cálculo na lógica de negociação.
- Crescimento exponencial consistente dos fundos. Quando os resultados de desempenho de um backtest crescem exponencialmente ao longo do tempo, isso geralmente pode ser o resultado do uso de castiçais OHLCV para as simulações de negociação ou aponta para um erro de cálculo que é uma porcentagem de desconto.
- As estratégias de negociação de alta frequência não diminuem de valor. Em geral, uma estratégia que negocia uma quantia significativa perderá valor devido às taxas de negociação. Se uma estratégia de negociação de alta frequência não perder valor, o backtest pode não considerar taxas de câmbio.
- Os mercados de baixa liquidez funcionam da mesma forma que os mercados de alta liquidez. Um simples wa y para detectar se uma ferramenta de backtesting usa dados de velas OHLCV ou dados agregados é executar a estratégia em um mercado de baixa liquidez que normalmente tem um grande spread. A negociação de alta frequência em um mercado de baixa liquidez deve resultar em grandes perdas de portfólio.
- Mudar as trocas não impacta os resultados. Cada troca tem diferentes taxas de liquidez e negociação. Ao testar estratégias em diferentes trocas, você deve obter resultados diferentes. Se você obtiver os mesmos resultados em bolsas diferentes, isso sugere que a ferramenta de backtesting está usando dados agregados e não usa a taxa de negociação correta para cada bolsa individual.
Antes de aceitar os resultados de um backtest pelo valor de face, use essas bandeiras vermelhas para identificar problemas com as negociações simuladas.
Conclusões
Houve alguns temas principais ao longo deste artigo. Primeiramente, demonstramos como pode ser difícil construir uma ferramenta robusta de backtesting. No entanto, ao mesmo tempo, pudemos ilustrar a importância de testar uma estratégia antes de implantá-la ao vivo.
O primeiro passo para construir uma estratégia de backtesting sempre foi ter dados de alta qualidade. Sem dados de carteira de pedidos de alta qualidade, os resultados serão altamente imprecisos. Em última análise, tomar decisões com base em ferramentas de backtesting defeituosas pode ser caro. Isso pode nos levar a ter expectativas irrealistas para uma estratégia que corrói nosso portfólio.
Ao criar uma ferramenta de backtesting, não se esqueça de simular as taxas de negociação, derrapagem e o spread de compra e venda. Cada um desses aspectos de um backtest pode fazer uma grande diferença. Remover até mesmo um desses componentes do backtest pode ser a diferença entre uma estratégia lucrativa e uma não lucrativa.
Por fim, antes de implantar uma estratégia baseada em backtests, continue testando. Quando você achar que terminou o teste, teste novamente. Em vez de 100 testes, execute 100.000 testes. Backtesting é a melhor maneira de entendermos o comportamento de uma estratégia. Tente formular novas hipóteses para estratégias e testar essas hipóteses para identificar novas estratégias. Continue o ciclo de experimentação até encontrar estratégias que funcionem para você.
Perguntas Frequentes
1. O que é backtesting?
Backtesting é uma simulação matemática usada pelos traders para avaliar o desempenho de uma estratégia de negociação. A simulação aproveita os dados históricos do mercado na tentativa de calcular o desempenho de uma estratégia de negociação no passado.
2. Por que o backtesting é importante?
O backtesting é importante porque permite que os traders avaliem a viabilidade de uma estratégia de negociação antes de implementá-la com capital real. Isso ajuda a filtrar estratégias que não foram lucrativas historicamente e aumenta as chances de sucesso.
3. Quais são os diferentes tipos de dados usados no backtesting?
Os diferentes tipos de dados usados no backtesting incluem dados de velas OHLCV, dados de negociação tick-by-tick e instantâneos do livro de pedidos. Os instantâneos do livro de pedidos são os mais recomendados devido à sua precisão e capacidade de simular o impacto do spread de compra e venda, derrapagem e liquidez.
4. O que são sinalizadores vermelhos no backtesting?
Sinalizadores vermelhos no backtesting são indicadores de que os resultados de um backtest podem não ser confiáveis. Isso inclui desempenho que aumenta consistentemente após cada negociação, crescimento exponencial dos fundos, estratégias de negociação de alta frequência que não diminuem de valor, mercados de baixa liquidez que funcionam da mesma forma que mercados de alta liquidez e mudanças de trocas que não impactam os resultados.
5. Como calcular o desempenho de uma estratégia de backtesting?
O desempenho de uma estratégia de backtesting pode ser calculado comparando o valor do portfólio no início do backtest com o valor do portfólio no final do backtest. A fórmula para calcular o desempenho é:
Desempenho = [( Vf – Vi) / Vi] x 100
Onde,
- Vf é o valor final da carteira
- Vi é o valor inicial da carteira
- Multiplique por 100 para converter de um decimal para uma porcentagem
Resumindo
O backtesting é uma ferramenta essencial para traders que desejam avaliar o desempenho de suas estratégias de negociação antes de implementá-las com capital real. Ao usar dados de alta qualidade, como instantâneos do livro de pedidos, e simular fatores como taxas de negociação, derrapagem e spread de compra e venda, os traders podem obter uma visão mais precisa do comportamento de suas estratégias. É crucial continuar testando e ajustando estratégias para identificar aquelas que são consistentes e robustas. Ao seguir essas práticas, os traders podem aumentar suas chances de sucesso no mercado de criptomoedas.