Backtesting é uma simulação histórica de regras de negociação ou decisão com dados, ordem temporal e pressupostos de execução explicitamente definidos. Permite verificar o comportamento de uma regra numa amostra passada, mas o seu valor informativo depende da conceção de todo o teste.
Backtesting reproduz regras sobre dados históricos e calcula o resultado que teriam sob os pressupostos escolhidos. Bailey e os coautores descrevem-no como uma simulação histórica de uma estratégia algorítmica e alertam também para o risco de falsas descobertas. A nossa delimitação editorial: o resultado pertence a uma versão específica das regras, dos dados e do modelo de execução. Não comprova que alguém tenha realmente efetuado essas operações. Um cálculo reproduzível pode revelar um erro ou uma ideia inadequada, mas, por si só, não transforma o passado numa previsão fiável. [Bailey et al. — The Probability of Backtest Overfitting]
A QuantConnect descreve o enviesamento em que a simulação usa informações futuras, como dados contabilísticos antes da publicação ou as suas correções posteriores. A nossa própria regra temporal exige, para cada dado de entrada, o momento da sua disponibilidade, e não apenas a data do período a que pertence. Um sinal de uma vela fechada não pode, sem um pressuposto adicional, obter uma operação a um preço que já não era possível aproveitar. No nosso exemplo, os preços de fecho anteriores só são usados no período seguinte, e o modelo define explicitamente a execução ao preço de abertura desse período. [QuantConnect — Research Guide]
A QuantConnect chama a atenção para testes que incluem apenas títulos que sobreviveram até ao fim do período e para a aplicação retrospetiva da composição atual de um índice. A nossa questão mais geral é saber se o conjunto histórico conserva também os instrumentos disponíveis na altura que desapareceram mais tarde. É necessário documentar os dados em falta, as alterações de metodologia e a seleção dos mercados. Numa simulação de bitcoin, não se pode considerar automaticamente o preço de um serviço como um preço alcançável noutro serviço. A qualidade dos dados significa poder rastrear as correções, não eliminar resultados inconvenientes. [QuantConnect — Research Guide]
A documentação da QuantConnect distingue o sinal e a ordem do modelo que determina o preço e a quantidade executada. Também destaca a diferença entre a execução parcial na negociação real e o pressuposto de execução total nos modelos predefinidos. O nosso requisito é descrever quando uma ordem pode ser executada, o que acontece perante liquidez insuficiente e como se trata um preço desatualizado. O simples toque num nível de preço nos dados históricos não prova a disponibilidade de uma contraparte para uma ordem de dimensão arbitrária. O resultado do modelo de execução continua a ser um pressuposto da simulação. [QuantConnect — Trade Fills: Key Concepts]
A QuantConnect descreve Slippage como a diferença entre o preço de execução esperado e o efetivo e refere a influência da latência, da ligação e das condições de mercado; o desvio pode ser favorável ou desfavorável. A nossa verificação dos custos separa as comissões, o preço de execução e eventuais outros custos de manutenção da posição ou de financiamento. Um custo já incluído no preço de execução não pode ser novamente subtraído. Um valor nulo é um pressuposto concreto do modelo, não uma prova de que o mercado não tem custos. A sensibilidade a custos mais elevados ajuda a determinar se um pequeno lucro histórico depende de uma configuração otimista. [QuantConnect — Slippage: Key Concepts]
A documentação de TimeSeriesSplit explica a divisão ordenada no tempo para evitar treinar o modelo no futuro e avaliá-lo no passado. O nosso requisito metodológico é definir o período de conceção das regras e o período da sua validação posterior antes de observar os resultados. Se, após um insucesso, as regras voltarem a ser ajustadas em função do período de validação, esse período já influenciou o desenvolvimento. A divisão cronológica, por si só, não resolve a fuga de informação do pré-processamento, de variáveis-alvo sobrepostas ou da seleção repetida de variantes. É necessário descrever o procedimento e as fronteiras entre os conjuntos de dados. [scikit-learn — TimeSeriesSplit]
Bailey e os coautores mostram que procurar repetidamente a melhor configuração nos mesmos dados aumenta o risco de falsas descobertas e de ajuste ao ruído passado. A nossa regra de apresentação exige indicar o historial de tentativas, e não apenas a curva vencedora. Isso inclui alterações de parâmetros, de períodos e da seleção de instrumentos. Um resultado escolhido após muitas tentativas não tem o mesmo valor informativo que uma regra definida previamente e mantida sem alterações. O método destes autores para estimar a probabilidade de sobreajuste não é aplicado no nosso exemplo simples nem substituído por uma única divisão dos dados. [Bailey et al. — The Probability of Backtest Overfitting]
A NFA alerta que os resultados hipotéticos não representam negociação real, podem beneficiar do conhecimento posterior dos acontecimentos e modelar imperfeitamente a liquidez, a derrapagem do preço ou o comportamento perante uma perda real. O nosso relatório deve, por isso, conservar a versão dos dados e do código, as regras, os pressupostos de execução, os custos incluídos e a lista completa das operações simuladas. A rentabilidade total precisa do contexto do risco e de uma comparação em condições idênticas; um gráfico atraente selecionado não basta. Nem uma implementação sem erros de um teste histórico garante a viabilidade ou a rentabilidade no mercado futuro. [NFA — Use of Promotional Material Containing Hypothetical Performance Results]
Sinal do período anterior, execução no seguinte
Para ter uma visão mais completa, leia este verbete junto com Trading Plan, Trading Journal, Slippage, Overfitting, Walk-forward Analysis. Também há referências a este verbete em Technical analysis, OHLCV, Timeframe, Candlestick chart.
01Um backtest lucrativo prova que a estratégia dará lucro?+
Não. O resultado pode depender dos dados específicos, dos custos, do modelo de execução ou da seleção da melhor variante. É necessário verificar a correção temporal, os pressupostos e o processo de seleção; mesmo depois disso, não existe garantia de rentabilidade futura.
02Basta subtrair as comissões apenas ao lucro final?+
Só se esse método corresponder exatamente ao modelo e não afetar o capital disponível nem as decisões seguintes. Normalmente, é necessário contabilizar os custos nos acontecimentos correspondentes, distinguir o preço de execução das comissões e evitar a dupla subtração.