597 / 736BT

Backtesting

Teste retrospetivo de estratégias

Backtesting testa regras de negociação com dados do passado. Ajuda a identificar erros e custos, mas um lucro histórico, por si só, não comprova que a estratégia continuará a funcionar.

Backtesting simula como regras de negociação definidas previamente teriam funcionado com dados históricos, conforme um modelo escolhido de execução e custos.

Pedro percebe que um dia de alta às vezes é seguido por outra subida. Em vez de comprar por intuição, escreve uma regra e a aplica a preços antigos. Isso é Backtesting: testar uma ideia no passado. O resultado descreve o que ocorreu no modelo escolhido, não dinheiro que Pedro realmente ganhou. Bailey et al. explicam por que um resultado histórico atraente deve ser separado de uma validação confiável da estratégia. [1]

Pedro só pode usar informações disponíveis antes da operação. Uma regra baseada no fechamento do dia não pode justificar uma compra naquela mesma manhã. QuantConnect chama esse erro de Look-ahead Bias: informação futura entrou numa decisão passada. Para dados publicados, importa quando ficaram disponíveis, não apenas o período descrito; revisões posteriores também não eram conhecidas. Nosso exemplo usa, portanto, fechamentos anteriores já concluídos e somente a abertura seguinte. [2]

Selecionar apenas mercados ou empresas que ainda existem cria outra distorção. QuantConnect a chama de Survivorship Bias e a ilustra com o uso retroativo da composição atual de um índice. Nos dados de Bitcoin também importam a corretora, as interrupções e o método de construção dos preços. Uma cotação de um serviço pode não ser negociável em outro. Erros podem ser corrigidos com rastreabilidade; apagar quedas inconvenientes mudaria a pergunta investigada. [2]

O programa precisa decidir quando uma ordem é executada, a que preço e em qual quantidade. Para isso servem os modelos de execução descritos por QuantConnect. Tocar um preço no gráfico não significa que toda a ordem poderia ser executada ali. Ordens reais podem ter execução parcial; os modelos prontos dessa plataforma supõem execução completa nos backtests. Também é preciso verificar a idade da cotação e a liquidez, isto é, a possibilidade de encontrar contraparte. [3]

Slippage é a diferença entre o preço de execução esperado e o obtido; pode favorecer ou prejudicar o operador. QuantConnect mostra como modelá-lo. Também entram taxas e, quando aplicáveis, financiamento e outros custos da estratégia. Um custo já incluído no preço não deve ser descontado de novo. Slippage zero é uma hipótese, não uma constatação sobre o mercado real. Repetir o teste com execução pior e custos maiores ajuda a avaliar se a conclusão se sustenta. [4]

Se Pedro ajusta a regra nos mesmos dados usados para medir seu sucesso, faz uma prova cujas respostas já conhece. Primeiro deve separar dados anteriores para desenvolvimento e posteriores para validação. TimeSeriesSplit do scikit-learn ajuda a preservar essa ordem. Sozinho, porém, não evita vazamento de informação na preparação dos dados, períodos-alvo sobrepostos ou ajustes repetidos. Alterar a regra depois de ver a validação significa usar também esses dados no desenvolvimento. [5]

Entre muitos ajustes, algum pode parecer excelente por acaso. Mostrar apenas o vencedor esconde quantas buscas foram feitas. Bailey et al. estudam Backtest Overfitting: adaptar uma estratégia às particularidades de um histórico específico. Registre parâmetros, períodos e mercados testados, não só a melhor curva. Os autores propõem um procedimento próprio para estimar a probabilidade desse problema; uma divisão simples dos dados não o substitui, e nosso exemplo não calcula essa estimativa. [1]

Um relatório honesto permite rastrear dados, versão das regras, operações, custos e períodos de perda. A estratégia de referência precisa de hipóteses comparáveis. A NFA dos EUA também destaca a vantagem da visão retrospectiva e a ausência de perdas financeiras reais nos resultados hipotéticos; suas regras publicitárias abrangem membros específicos. Um backtest ajuda a descartar ou investigar melhor uma ideia. Mesmo um cálculo correto não prova que ela funcionará em outro mercado ou na negociação real. [6]

ExemploEXEMPLO · BT

Uma regra que pode ser conferida à mão

Usamos um exemplo fictício próprio com períodos A, B, C e D de igual duração. Começamos com 1000 USD em caixa, sem posição aberta, dívida, depósitos ou saques. Os dois fechamentos anteriores a A são [100, 100] USD/BTC. As aberturas de A até D são [101, 103, 102, 105] USD/BTC e os fechamentos [102, 101, 104, 103] USD/BTC. A regra compra 1 BTC no início do período somente se o último fechamento concluído superar o anterior; vende toda a posição ao terminar esse mesmo período. Os sinais são [0, 1, 0, 1]: 1 significa operar e 0 não operar. Supomos execução completa exatamente nesses preços, sem spread nem Slippage, e um único custo: 0.1 USD por compra e por venda. Em B compramos por 103 USD e vendemos por 101 USD; em D compramos por 105 USD e vendemos por 103 USD. Os resultados brutos por período são [0, -2, 0, -2] USD. As quatro compras e vendas executadas custam juntas 0.4 USD, deixando resultados líquidos de [0, -2.2, 0, -2.2] USD. O resultado bruto total é -4 USD, o líquido -4.4 USD e o caixa final 995.6 USD. O gráfico mostra a contribuição líquida de cada período, não o saldo da conta ou a probabilidade de lucro. O exemplo verifica a ordem das informações e a contabilização; não usa dados reais, não otimiza parâmetros nem prevê resultados.

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 significa que posso ganhar com a estratégia?

Ele mostra lucro apenas nos dados históricos selecionados e sob certas hipóteses. Confira a disponibilidade das informações, a execução, os custos e quantas variantes antecederam o resultado. Nem uma validação histórica independente garante o desempenho futuro.

02Basta descontar todas as taxas no final?

Somente se isso corresponder ao modelo e os custos ao longo do caminho não mudarem os recursos disponíveis nem as decisões. Em geral, o custo pertence à operação correspondente. Execuções e taxas devem ser registradas sem omissões ou cobrança duplicada no cálculo.

DOC · 001Bailey et al. — The Probability of Backtest OverfittingFonte primária DOC · 002QuantConnect — Research GuideDocumentação DOC · 003QuantConnect — Trade Fills: Key ConceptsDocumentação DOC · 004QuantConnect — Slippage: Key ConceptsDocumentação DOC · 005scikit-learn — TimeSeriesSplitDocumentação DOC · 006NFA — Use of Promotional Material Containing Hypothetical Performance ResultsDocumentação
Revisto em: Fontes em primeiro lugar · Não é recomendação de investimento