Conteúdo do artigo
- Evidências e escopo
- Ilustração
- Processo
- Responda a quatro perguntas diferentes em ordem.
- 1. Dados disponíveis em cada momento e significado do volume
- 2. Tempos de confirmação e invariância de prefixo
- 3. É necessário que exista um pedido para que ele possa ser atendido.
- 4. O dimensionamento de risco deve usar unidades consistentes.
- 5. Avaliação progressiva, expurgo e embargo
- 6. Ablação, múltiplas tentativas e testes de estresse
- 7. Métricas, expectativa e níveis de evidência
- Publique artefatos que outro pesquisador possa inspecionar.
- Erros comuns
- Lista prática de verificação
- Perguntas frequentes
- Fontes de pesquisa
Evidências e escopo
Este artigo propõe um fluxo de trabalho de validação, não uma estratégia lucrativa ou um novo backtest. As fontes citadas abordam inferência de padrões, mecânica de simulação e sobreajuste estatístico; nenhuma delas garante a lucratividade de todos os métodos desta biblioteca.
Fluxo de trabalho prático
- Registre a hipóteseCongelar o mercado, as regras, os custos, as métricas e os experimentos de pesquisa permitidos.
- Valide as entradasVerifique a disponibilidade em um determinado momento, o significado do volume, o universo e os registros de data e hora.
- Reproduza eventos respeitando a disponibilidade dos dadosConfirme os sinais antes de criar ordens e permitir a execução.
- Limitar o riscoAplique requisitos de tamanho, margem, exposição e cenários de estresse por gaps.
- Avalie com walk-forwardElimine os rótulos sobrepostos, selecione na validação e congele cada teste.
- Relate todas as evidências.Publicar resultados de ablações, testes de estresse, incertezas e o nível de evidência.
Responda a quatro perguntas diferentes em ordem.
Primeiro, o padrão pode ser reconhecido de forma consistente? Segundo, ele contém informações condicionais sobre resultados subsequentes? Terceiro, essas informações podem ser convertidas em retornos líquidos positivos com ordens viáveis? Quarto, o resultado persiste em dados genuinamente não vistos? Um estudo que responde a uma dessas perguntas não deve ser apresentado como respondendo a todas as quatro.
A pesquisa formal de padrões demonstra como o reconhecimento e a inferência estatística podem ser investigados. [1] Um topo duplo visualmente convincente ou uma distribuição de retornos estatisticamente diferente ainda não constituem um sistema de negociação completo. Entradas, saídas, custos, dimensionamento de posição e o conjunto de oportunidades ainda determinam os resultados econômicos.
Elabore uma ficha de hipóteses antes de analisar o desempenho. Inclua o mercado elegível, o período de tempo, os campos de entrada, a regra de formação, o atraso de confirmação, os mecanismos de entrada e saída, o orçamento de risco, os custos, o benchmark, a métrica de avaliação e as variações de parâmetros permitidas. A ficha deve ser suficientemente precisa para que outra pessoa possa implementá-la sem se preocupar com a interpretação da estética do gráfico.
Defina também um resultado negativo útil. Por exemplo, um filtro de volume pode não adicionar nenhuma expectativa líquida incremental após a correspondência da exposição. Registrar esse resultado impede que um processo de pesquisa substitua silenciosamente a pergunta original sempre que um resultado preferido falhar.
1. Dados disponíveis em cada momento e significado do volume
É preciso distinguir quando um evento ocorreu, quando os dados foram recebidos e quando a estratégia pôde utilizá-los. Um registro de data e hora em uma barra, por si só, pode não revelar um atraso na publicação, uma correção ou uma latência na mesma. Simulações históricas devem reconstruir o conjunto de informações relevantes, em vez de usar indiscriminadamente o banco de dados corrigido mais recente.
Mantenha identificadores de instrumentos estáveis, histórico de membros e registros de eventos corporativos. As ações que sobrevivem hoje não representam o universo de investimento de ontem. Lide explicitamente com exclusões de listagem, reutilização de tickers, novas listagens e preços indisponíveis. Para eventos corporativos, as datas de vigência e de anúncio podem responder a diferentes questões de disponibilidade.
Utilize preços brutos negociáveis para as execuções e uma convenção de ajuste documentada para os sinais. Uma série contínua de futuros pode ser útil analiticamente, mas uma execução deve ocorrer em um contrato real a um preço real. Transações de rolagem, multiplicadores e vencimento do contrato não podem ser inferidos a partir de um gráfico contínuo.
O volume é específico de cada mercado. O volume de ações negociadas em bolsas, o volume de contratos futuros, a contagem de ticks no mercado Forex e a quantidade negociada em uma plataforma de criptomoedas são medidas diferentes. Uma etiqueta como volume de compra ou delta requer um método de classificação específico; dados OHLCV comuns não revela a identidade do participante nem o fluxo de ordens de todo o mercado.
Crie testes de integridade para barras duplicadas, intervalos ausentes, relações impossíveis OHLC, volume negativo e descontinuidades de fuso horário. Preserve as versões do conjunto de dados e os registros de correção. Uma base de código reproduzível com entradas não versionadas e variáveis não produz um experimento reproduzível.
2. Tempos de confirmação e invariância de prefixo
Um ponto de pivô no índice i, que requer r barras à sua direita, é confirmado não antes de i+r. Sua localização pode ser desenhada em i para análise, mas uma decisão de negociação não pode ser tomada retrospectivamente nesse ponto. Armazene occurred_at e confirmed_at como campos separados e execute a partir do timestamp disponível mais recente.
A invariância de prefixo é um teste prático: execute o algoritmo em cada prefixo crescente do conjunto de dados e compare com os eventos confirmados já publicados. A inclusão de observações futuras não deve sobrescrevê-las. Os candidatos provisórios podem mudar se forem explicitamente rotulados como tal; os sinais históricos confirmados devem permanecer estáveis sob entradas inalteradas.
Os dados de prazos maiores exigem a mesma disciplina. Associe um valor horário concluído a uma estratégia de minuto somente após a observação horária estar disponível. O valor máximo, mínimo ou de fechamento eventual de uma hora ainda não concluída não pode ser fornecido para decisões de minuto anteriores.
Ajuste as normalizações, os parâmetros de agrupamento e os modelos estatísticos na partição histórica permitida. Um algoritmo de escala treinado em todo o conjunto de dados vaza informações sobre a distribuição futura, mesmo quando cada entrada de negociação individual é atrasada corretamente. A causalidade se aplica tanto ao pré-processamento quanto aos indicadores.
Um teste informativo altera deliberadamente os preços e volumes futuros, mantendo o prefixo histórico fixo. Se um sinal confirmado anteriormente mudar, rastreie a dependência em vez de presumir que a plataforma de gráficos resolveu a repintura automaticamente.
3. É necessário que exista um pedido para que ele possa ser atendido.
Representa a sequência desde o sinal até a criação, submissão, aceitação, disparo, execução parcial e conclusão ou cancelamento da ordem. Pode haver latência em cada etapa. Um toque de preço histórico que precedeu a aceitação da ordem não é uma execução disponível para essa ordem.
A documentação da estratégia da plataforma ajuda a identificar as premissas de tempo e ordem do emulador. [2] Esses mecanismos são convenções do simulador, não uma garantia de execução real na bolsa. Uma ordem stop-market restringe a ativação, embora seu preço final possa ser diferente; uma ordem limite restringe o preço, mas pode não ser executada. [3]
As barras OHLC não revelam a ordem dos eventos intrabarra. Se a entrada, o stop e o alvo estiverem todos dentro de uma mesma barra, utilize dados mais detalhados ou divulgue os limites do resultado. Não selecione o caminho que melhore a estratégia. Uma ordem em espera também não pode ser cancelada após observar a execução desfavorável que sua existência permitiu.
Modele preenchimentos parciais e quantidades pendentes. Se um stop de proteção for criado somente após a entrada, indique por quanto tempo a posição pode permanecer desprotegida. Se uma entrada for revertida antes da conclusão, reconcilie a exposição real e as ordens pendentes, em vez de presumir que todas as metas solicitadas foram atingidas.
Os custos incluem comissão, spread, slippage, impacto, empréstimo de ativos e funding ou financiamento aplicáveis. Debite-os nos momentos contratuais reais. Não suponha um intervalo universal de funding para todos os produtos cripto nem conte o spread novamente quando já estiver incluído nas execuções ao bid/ask.
4. O dimensionamento de risco deve usar unidades consistentes.
Para um instrumento linear, uma fórmula de dimensionamento proposta é q=floor(B/(abs(E−S)×multiplier+c_unit)), onde B é o orçamento de perdas de caixa, E a entrada planejada, S o stop e c_unit um custo estimado de ida e volta por unidade. As conversões de moeda devem colocar o numerador e o denominador na mesma moeda da conta.
Esta fórmula estima a perda planejada; ela não limita a perda por gap. Contratos inversos, opções e produtos não lineares exigem seu próprio cálculo de retorno, em vez de utilizar uma fórmula de ações. Tamanhos mínimos de lote e margem da corretora podem reduzir ainda mais a quantidade viável.
Considere o patrimônio sintético de $20,000 e o risco de 0.5%, resultando em B=$100. Com entrada em 100, stop em 99.50 e estimativa de custo de $0.04 por ação, resultando em q=floor(100/0.54)=185. A perda planejada, incluindo esse custo, é de $99.90.
Se a saída for preenchida em 99.20, a perda de preço será de $148 e o custo estimado será de $7.40, totalizando $155.40. Um relatório que limita essa perda ao orçamento pretendido de $100 elimina o risco de execução em vez de mensurá-lo.
Em nível de portfólio, reserve a exposição para ordens em aberto, limite os riscos nocionais brutos e líquidos e os riscos correlacionados agregados. Várias posições individualmente pequenas podem reagir ao mesmo choque de mercado. Reporte tanto o risco de stop planejado quanto a perda sob estresse em caso de movimentos adversos simultâneos.
5. Avaliação progressiva, expurgo e embargo
Separe o desenvolvimento, a validação e a avaliação ao longo do tempo. Ajuste os modelos aos dados de treinamento, escolha as configurações permitidas usando os dados de validação e, em seguida, congele a configuração antes de avaliar o próximo segmento de teste. A repetição desse processo cronológico mede um procedimento de atualização, em vez de uma única configuração selecionada retrospectivamente.
Os rótulos podem sobrepor-se aos limites. Se o resultado de um exemplo de treinamento se estender para o intervalo de validação ou teste, remova esse exemplo do conjunto de treinamento. Da mesma forma, os rótulos de validação usados para seleção não devem incluir resultados do intervalo de teste. Registre o início e o fim de cada rótulo em vez de descartar um número fixo estimado de linhas.
Um embargo exclui observações próximas onde o projeto de validação cruzada permitiria que amostras de treinamento do lado futuro compartilhassem informações com um intervalo de teste. Não é um substituto universal para a separação cronológica e não corrige registros de data e hora incorretos. A apresentação do autor citado discute esses mecanismos; não é uma prova de que qualquer duração arbitrária de embargo seja suficiente. [4]
Mantenha um conjunto de dados de teste final adicional caso o processo de pesquisa inspecione repetidamente os resultados walk-forward. Uma vez que esses resultados orientem as revisões, eles terão influenciado o desenvolvimento. Selecione a configuração final usando apenas as informações de desenvolvimento, avalie o conjunto de dados de teste bloqueado uma única vez e relate o resultado sem reajustes.
Cada transformação deve ser ajustada dentro do conjunto de treino de seu fold: scalers, seleção de variáveis, limiares de regime e bases de volume que exigem estimação. Mesmo uma divisão com rótulos corretamente expurgados pode vazar informação se o pré-processamento foi ajustado na amostra inteira.
6. Ablação, múltiplas tentativas e testes de estresse
A análise de ablação questiona o que cada componente adiciona. Compare o preço puro, o preço mais RVOL e o preço mais RVOL mais VWAP usando o mesmo universo de oportunidades, dimensionamento e premissas de execução. Altere separadamente a lógica de entrada e saída quando ambas utilizarem o novo indicador; caso contrário, a origem da melhoria permanece obscura.
Mantenha um registro de testes que inclua ideias que não deram certo, filtros manuais de gráficos, períodos, conjuntos de dados, grades de parâmetros e subconjuntos de mercado. Relatar apenas a configuração final bem-sucedida oculta o número de oportunidades que o pesquisador teve para descobrir um resultado fortuito.
O Índice de Sharpe Deflacionado aborda o viés de seleção e o comportamento não normal dos retornos sob suas premissas. [5] Não se trata da probabilidade de uma estratégia gerar lucro em tempo real. A Probabilidade de Sobreajuste em Backtesting diz respeito à deterioração da classificação entre as partições em sua estrutura, e não à probabilidade direta de perda de capital da conta. [6]
Os testes de sensibilidade propostos incluem: análise dos custos de execução em múltiplos predefinidos, como 1.5 e 2; atraso de entrada em uma barra; teste de parâmetros próximos; e análise da dependência das cinco maiores negociações. Uma estratégia de tendência depende naturalmente de grandes ganhos; excluí-los fornece informações úteis, mas não é uma regra automática de aprovação ou reprovação.
Analise a sensibilidade do regime e da capacidade com observações suficientes para sustentar a comparação. Dividir os dados em muitos regimes favoráveis muito pequenos cria outro problema de seleção. Um efeito estável simples após os custos geralmente é mais persuasivo do que uma explicação elaborada em torno de alguns períodos excepcionais.
7. Métricas, expectativa e níveis de evidência
Relate separadamente o número de oportunidades, ordens enviadas, execuções, negociações concluídas e dias lucrativos. Um filtro pode melhorar a taxa de sucesso das negociações, excluindo muitas oportunidades lucrativas. A frequência de dias lucrativos não é uma taxa de sucesso das negociações e, sem considerar a magnitude dos ganhos e das perdas, nenhum dos dois determina o retorno esperado.
Calcule o drawdown a partir de uma série do patrimônio da conta marcado a mercado que inclua posições em aberto e custos. Indique a frequência de retorno para o Sharpe, em vez de tratar retornos de negociações irregulares como intercambiáveis com retornos diários. Mantenha a distinção entre retorno total, CAGR, IRR sensível ao fluxo de caixa e alfa de regressão.
Uma estratégia sintética com probabilidade de vitória 0.40, vencedor médio 2R, perdedor médio 1R e custo 0.08R tem expectativa 0.40×2−0.60×1−0.08=0.12R. Sua taxa de vitória de equilíbrio sob esses pagamentos fixos é (1+0.08)/(2+1)=0.36.
Outra estratégia sintética que vence em 65% das operações, ganhando 0.5R em operações vencedoras e perdendo 1R em outras, com o mesmo custo, tem expectativa de 0.65×0.5−0.35×1−0.08=−0.105R. Uma taxa de acerto mais alta pode, portanto, coexistir com um sistema perdedor.
Inclua perdas extremas, tempo abaixo do pico anterior do patrimônio, giro da carteira, participação, exposição e intervalos de incerteza. Distinga um método descritivo, backtest relatado pelo autor, reprodução de código e dados, revisão independente, paper trading prospectivo e evidências reais verificadas. Essas etapas respondem a perguntas progressivamente diferentes; nenhuma delas implica em um retorno futuro garantido.
Publique artefatos que outro pesquisador possa inspecionar.
Arquive a versão da hipótese, as versões dos dados de entrada, o registro de experimentos de pesquisa, os limites de dobra, os eventos de sinalização, os eventos de ordem, as execuções, os custos e os cálculos de patrimônio líquido. Uma tabela de desempenho final sem os registros intermediários é difícil de diagnosticar quando outra implementação apresenta resultados diferentes.
O pipeline abaixo separa o período de desenvolvimento, usado repetidamente, de um holdout final reservado para avaliação. Suas funções são especificações a serem implementadas e testadas, e não provas executáveis de correção. Em particular, a limpeza deve inspecionar os intervalos de rótulos e a execução deve respeitar a disponibilidade real dos eventos.
Um pacote de revisão útil inclui pelo menos um exemplo bem-sucedido, uma negociação malsucedida, uma ordem rejeitada e um caso ambíguo dentro da mesma barra, quando disponíveis. Explique como o simulador lida com cada um deles. Isso fornece evidências concretas de que as regras operam de forma consistente quando os resultados são desfavoráveis.
Congele as métricas de publicação antes de ler o resultado final do holdout final. Se o resultado final for decepcionante, relate-o e inicie uma nova versão da pesquisa com um novo plano de avaliação. Editar repetidamente o mesmo método com o mesmo suposto holdout final destrói a própria evidência que o teste deveria fornecer.
spec = freeze_hypothesis_and_trial_registry()
data = load_versioned_point_in_time_inputs()
assert_data_integrity(data)
assert_confirmed_events_are_prefix_invariant(data)
development, final_test = split_chronologically_before_research(data)
for fold in chronological_folds(development, spec):
train = purge_overlapping_labels(fold.train, fold.validation + fold.test)
validation = purge_overlapping_labels(fold.validation, fold.test)
model = fit_using_train_only(train)
config = select_on_validation(model, validation)
freeze(config)
events = replay_causally(fold.test, config)
fills = simulate_orders_after_available_at(events, spec.execution)
equity = mark_to_market(fills, fees=spec.costs)
archive_all_results(config, events, fills, equity)
final_config = freeze_selection_using_development_only()
evaluate_final_holdout_once(final_test, final_config)
report_net_metrics_ablations_stress_and_uncertainty()
Erros comuns
Tratar um detector atraente como uma estratégia lucrativa
Geometria, informações preditivas, execução e desempenho fora da amostra são etapas de validação separadas. A aprovação em uma delas não garante a aprovação nas outras.
Um gráfico limpo com sinais confirmados somente mais tarde
Desenhar um ponto de pivô em sua localização histórica pode ocultar um horário de confirmação posterior. Armazene tanto occurred_at quanto confirmed_at e teste cada decisão em relação à disponibilidade de informações.
Comprimir todos os custos em uma pequena comissão
Spread, impacto, empréstimos ou financiamento e falhas de execução podem ser mais importantes do que a comissão. Modele-os para o instrumento e sua liquidez.
Uma linha de taxas realista com preenchimentos irreais.
A comissão não pode compensar preenchimentos impossíveis de fechamento de sinal, sequenciamento favorável presumido dos eventos intrabar ou execução de limite garantida.
Inspecionar repetidamente o mesmo período de teste
Assim que os resultados dos testes orientarem as revisões, esse período passa a fazer parte do desenvolvimento. Registre cada uso e preserve uma nova etapa de avaliação intocada.
Salvando apenas as configurações vencedoras
Sem o número de ensaios e a distribuição das variantes malsucedidas, a evidência a favor da estratégia selecionada pode ser superestimada.
Utilizando correções estatísticas como certificados de rentabilidade
DSR, PBO e valores p abordam questões específicas de inferência sob determinadas premissas. Eles não substituem os testes de execução nem estabelecem lucros futuros da conta.
Lista de verificação antes de usar este método
Marque cada item após verificá-lo nos seus dados. O progresso fica salvo neste navegador; isso não certifica que a estratégia seja lucrativa.
Perguntas frequentes
Quantas operações são suficientes para comprovar que uma estratégia funciona?
Não existe um limiar universal. A dependência, as caudas da distribuição de retornos, os regimes de mercado e a magnitude do efeito determinam a incerteza. Relate essas características em vez de tratar uma contagem fixa de negociações como prova.
Uma estratégia deve ser rejeitada se os custos eliminarem a vantagem competitiva relatada?
A versão negociável pode falhar, embora a relação estatística subjacente permaneça útil. Apresente ambas as conclusões e evite apresentar o efeito bruto como um retorno líquido executável.
Publicar o código torna um backtest reproduzível?
O código é apenas um dos requisitos. Versões de dados, convenções de ações corporativas, parâmetros, histórico de experimentos e premissas de execução também precisam estar disponíveis ou documentados com precisão.
Fontes de pesquisa
Cada fonte sustenta a definição ou evidência descrita ao lado. O pseudocódigo, os exemplos sintéticos e os parâmetros propostos exigem validação separada.
- Foundations of Technical Analysis: Computational Algorithms, Statistical Inference, and Empirical ImplementationAndrew W. Lo, Harry Mamaysky, Jiang Wang. Leitura de pesquisa original sobre reconhecimento de padrões e inferência estatística. Não demonstra rentabilidade para todas as regras da biblioteca. Verificado em: .
- Pine Script — StrategiesTradingView. A documentação principal deve ser lida para entender o momento certo para executar ordens de estratégia e o comportamento do emulador de corretora, e não como um modelo universal de execução em bolsas de valores. Verificado em: .
- Understanding Order Types — Investor BulletinU.S. SEC — Investor.gov. Boletim principal para leitura sobre os mecanismos de ordens de mercado, limite e stop e suas limitações de execução. Verificado em: .
- MLX 2018 — The 7 Reasons Most Machine Learning Funds FailMarcos López de Prado — bản trình bày đăng trên SlideShare. Os slides da apresentação do autor foram lidos para fins de expurgo e embargo. Isso não garante acesso ou leitura do livro completo sobre aprendizado de máquina no setor financeiro. Verificado em: .
- The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting and Non-NormalityDavid H. Bailey, Marcos López de Prado — 2014. Li o artigo metodológico completo. O ajuste do viés de seleção requer suposições e informações de experimentos de pesquisa; não se trata de uma probabilidade de lucro em tempo real. Verificado em: .
- The Probability of Backtest OverfittingBailey, Borwein, López de Prado, Zhu. Metodologia utilizada para CSCV e PBO. A deterioração da classificação fora da amostra é diferenciada da probabilidade de perda de dinheiro. Verificado em: .
Métodos relacionados
Nota de risco
Este conteúdo apoia a educação e o planejamento de pesquisas, não constitui aconselhamento financeiro. O Backtest é uma simulação histórica, não garante desempenho futuro e não executa operações reais. Os métodos desta biblioteca não são necessariamente recursos disponíveis no aplicativo. Consulte a metodologia e a central de aprendizado.
Valide as regras antes de arriscar capital real
Verifique o suporte do aplicativo, os dados e cada operação simulada; detectores avançados podem exigir uma implementação própria.
Baixe o Backtest na App Store