Sistemas de negociação de backtesting
Backtesting: Interpretando o Passado.
O backtesting é um componente chave do desenvolvimento efetivo do sistema de negociação. Isso é realizado reconstruindo, com dados históricos, negociações que teriam ocorrido no passado usando regras definidas por uma determinada estratégia. O resultado oferece estatísticas para avaliar a eficácia da estratégia.
A teoria subjacente é que qualquer estratégia que funcionou bem no passado provavelmente funcionará bem no futuro e, inversamente, qualquer estratégia que tenha tido um desempenho ruim no passado provavelmente terá um desempenho ruim no futuro. Este artigo analisa quais aplicativos são usados no backtesting, que tipo de dados é obtido e como colocá-lo em uso.
Os dados e as ferramentas.
O backtesting pode fornecer muitos dados estatísticos valiosos sobre um determinado sistema. Algumas estatísticas de backtesting universais incluem:
Lucro líquido ou perda - Porcentagem líquida ganha ou perdida Medidas de volatilidade - Máximo percentual de acréscimo e desvantagem Médias - Ganho médio percentual e perda média, barras médias detidas Exposição - Porcentagem do capital investido (ou exposto ao mercado) Índices - Ganhos a perdas ratio Retorno anualizado - Retorno percentual ao longo de um ano Retorno ajustado pelo risco - Retorno percentual em função do risco.
Normalmente, o software de backtesting terá duas telas importantes. O primeiro permite que o comerciante personalize as configurações para o backtesting. Essas personalizações incluem tudo, desde período de tempo até custos de comissão. Aqui está um exemplo de tal tela no AmiBroker:
A segunda tela é o relatório de resultados de backtesting real. É aqui que você pode encontrar as estatísticas mencionadas acima. Mais uma vez, aqui está um exemplo desta tela no AmiBroker:
Em geral, a maioria dos softwares de negociação contém elementos semelhantes. Alguns programas de software high-end também incluem funcionalidades adicionais para realizar dimensionamento automático de posição, otimização e outros recursos mais avançados.
As 10 regras para o backtesting.
Há muitos fatores que os investidores prestam atenção quando estão testando estratégias de negociação. Aqui está uma lista das 10 coisas mais importantes a serem lembradas durante o backtesting:
Leve em consideração as amplas tendências de mercado no período de tempo em que uma determinada estratégia foi testada. Por exemplo, se uma estratégia só foi testada novamente em 1999-2000, ela pode não se sair bem em um mercado em baixa. Muitas vezes, é uma boa ideia fazer backtest durante um longo período de tempo, abrangendo vários tipos diferentes de condições de mercado. Leve em conta o universo em que ocorreu o backtesting. Por exemplo, se um sistema amplo de mercado for testado com um universo constituído por ações de tecnologia, ele pode não se dar bem em setores diferentes. Como regra geral, se uma estratégia é direcionada para um gênero específico de estoque, limite o universo a esse gênero; mas, em todos os outros casos, mantenha um universo grande para fins de teste. Medidas de volatilidade são extremamente importantes para considerar no desenvolvimento de um sistema de negociação. Isto é especialmente verdadeiro para as contas alavancadas, que são sujeitas a chamadas de margem se o seu patrimônio cai abaixo de um certo ponto. Os comerciantes devem procurar manter a volatilidade baixa para reduzir o risco e facilitar a transição dentro e fora de um determinado estoque. O número médio de bares mantidos também é muito importante para assistir ao desenvolver um sistema de negociação. Embora a maioria dos softwares de backtesting inclua custos de comissão nos cálculos finais, isso não significa que você deva ignorar essa estatística. Se possível, aumentar o seu número médio de barras pode reduzir os custos de comissão e melhorar seu retorno geral. A exposição é uma faca de dois gumes. O aumento da exposição pode levar a lucros mais altos ou perdas maiores, enquanto a diminuição da exposição significa lucros menores ou perdas menores. Em geral, é uma boa ideia manter a exposição abaixo de 70% para reduzir o risco e facilitar a transição para dentro e para fora de um determinado estoque. A estatística de ganho médio / perda, combinada com a taxa de ganhos por perdas, pode ser útil para determinar o tamanho ideal de posição e gerenciamento de dinheiro usando técnicas como o Critério Kelly. Os traders podem assumir posições maiores e reduzir custos de comissão aumentando seus ganhos médios e aumentando sua taxa de ganhos por perdas. (Para mais, consulte: Gerenciamento de dinheiro usando o critério Kelly.) O retorno anualizado é usado como uma ferramenta para avaliar os retornos de um sistema em relação a outros locais de investimento. É importante não só olhar para o retorno anualizado global, mas também para levar em conta o aumento ou diminuição do risco. Isso pode ser feito observando o retorno ajustado ao risco, que é responsável por vários fatores de risco. Antes de um sistema de negociação ser adotado, ele deve superar todos os outros espaços de investimento em risco igual ou menor. A personalização de backtesting é extremamente importante. Muitos aplicativos de backtesting têm entradas para quantidades de comissão, tamanhos de lotes redondos (ou fracionários), tamanhos de ticks, requisitos de margem, taxas de juros, premissas de slippage, regras de dimensionamento de posição, regras de saída de barra idêntica, configurações de parada (trailing) e muito mais. Para obter os resultados de backtesting mais precisos, é importante ajustar essas configurações para imitar o broker a ser usado quando o sistema for ativado. O backtesting às vezes pode levar a algo conhecido como otimização excessiva. Essa é uma condição na qual os resultados de desempenho são ajustados tão altos para o passado que não são mais precisos no futuro. Geralmente, é uma boa ideia implementar regras que se apliquem a todas as ações, ou a um conjunto selecionado de ações específicas, e que não sejam otimizadas na medida em que as regras não sejam mais compreensíveis pelo criador. O backtesting nem sempre é a maneira mais precisa de avaliar a eficácia de um determinado sistema de negociação. Às vezes, as estratégias que tiveram bom desempenho no passado não se dão bem no presente. O desempenho passado não é indicativo de resultados futuros. Certifique-se de que o comércio de papel é um sistema que foi testado com sucesso antes de entrar em operação para garantir que a estratégia ainda se aplica na prática.
Conclusão.
O backtesting é um dos aspectos mais importantes do desenvolvimento de um sistema de negociação. Se criado e interpretado corretamente, ele pode ajudar os traders a otimizar e melhorar suas estratégias, encontrar falhas técnicas ou teóricas, bem como ganhar confiança em sua estratégia antes de aplicá-la aos mercados do mundo real. (Para leitura relacionada, consulte: Backtesting and Forward Testing: A Importância da Correlação.)
Sistemas de negociação de backtesting
- ações, opções, futuros, moedas, cestas e instrumentos sintéticos personalizados são suportados.
- múltiplos feeds de dados de baixa latência suportados (velocidade de processamento em milhões de mensagens por segundo em terabytes de dados)
- C # e estratégia baseada em backtesting e otimização.
- execução de múltiplos corretores suportados, sinais de negociação convertidos em ordens FIX.
- QuantDEVELOPER - framework e IDE para desenvolvimento de estratégias de negociação, depuração, backtesting e otimização, disponível como um plug-in do Visual Studio.
- QuantDATACENTER - permite gerenciar um data warehouse histórico e capturar dados de mercado em tempo real ou com latência ultra baixa de provedores e trocas.
- QuantENGINE - permite implantar e executar estratégias pré-compiladas.
- multi-ativos, dados de latência de vários períodos, múltiplos corretores suportados.
- OpenQuant - C # e VisualBasic backtesting e trading de sistemas em nível de portfólio, multi-asset, testes em nível intradiário, otimização, WFA etc., múltiplos brokers e feeds de dados suportados.
- QuantTrader - ambiente de comércio de produção.
- QuantBase - gerenciamento centralizado de dados.
- QuantRouter - roteamento de dados e pedidos.
- solução multi-ativos, múltiplos feeds de dados suportados, banco de dados suporta qualquer tipo de RDBMS fornecendo uma interface JDBC, e. Oracle, Microsoft SQL Server, Sybase, MySQL etc.
- os clientes podem usar o IDE para rotear sua estratégia em Java, Ruby ou Python, ou podem usar sua própria estratégia IDE.
- execução de múltiplos corretores suportados, sinais de negociação convertidos em ordens FIX.
- solução de múltiplos ativos (forex, opções, futuros, ações, ETFs, commodities, instrumentos sintéticos e spreads de derivativos personalizados etc.), vários feeds de dados suportados.
- estrutura para desenvolvimento de estratégias de negociação, depuração, backtesting e otimização.
- Execução de vários corretores suportados, sinais comerciais convertidos em pedidos FIX (IB, JPMorgan, FXCM etc.)
- dados diários e intraday (nos estoques para 43 + anos, futuros para 61 + anos)
- Prático para sinais baseados em preço de backtesting (análise técnica), suporte para linguagem de programação EasyLanguage.
- apoiando ações e ETFs dos EUA, futuros, índices dos EUA, ações alemãs, índices alemães, forex.
- US $ 249,95 mensais para não profissionais (somente plataforma de software Tradestation, sem corretagem)
- $ 299,95 mensalmente para profissionais (apenas plataforma de software de tradestation, sem corretagem)
- suporte a estratégias diárias / intraday, testes e otimização em nível de portfólio, gráficos, visualização, relatórios personalizados, análise multi-threaded, gráficos 3D, análise WFA, etc.
- melhor para sinais baseados em preços de backtesting (análise técnica)
- link direto para eSignal, Interactive Brokers, IQFeed, myTrack, FastTrack, QP2, TC2000, qualquer feed compatível com DDE, MS, txtfiles e mais (Yahoo Finance.)
- backtesting e trading do sistema de nível de portfólio, multi-ativos, teste de nível intradiário, otimização, visualização, etc.
- permite a integração R, negociação automática na linguagem de script Perl com todas as funções subjacentes escritas em C nativo, preparadas para co-localização do servidor.
- Suporte nativo FXCM e Interactive Brokers.
- suporte a estratégias diárias / intraday, testes e otimização em nível de portfólio - melhor para sinais baseados em preço de backtesting (análise técnica), scripts C # - extensões de software suportadas - manipulação de feeds de dados, execução de estratégias etc.
- Dados de Axioma ou de terceiros.
- análise fatorial, modelagem de risco, análise do ciclo do mercado.
- melhor para testes de backtesting baseados em preços (análise técnica), suporte a estratégias diárias / intradiárias, teste de nível de portfólio e otimização.
- Turtle Edition - motor de backtesting, gráficos, relatórios, testes EoD.
- Professional Edition - além de editor de sistema, análise prospectiva, estratégias intraday, testes multi-threaded, etc.
- Pro Plus Edition - mais gráficos de superfície 3D, scripts etc.
- Builder Edition - IB API, depurador etc.
- Edição profissional $ 1.990.
- Pro Plus Edition $ 2.990.
- Builder Edition $ 3.990.
- suporte a estratégias diárias / intraday, testes e otimização em nível de portfólio, gráficos, visualização, relatórios personalizados, etc.
- melhor para sinais baseados em preços de backtesting (análise técnica)
- link direto para Interactive Brokers, MB Trading, TD Ameritrade, FXCM e outros.
- dados de arquivos de texto, eSignal, Google Finance, Yahoo finance, IQFeed e outros.
- funcionalidade avançada - alugue uma licença vitalícia de $ 50 / mês ou $ 995.
- melhor para sinais baseados em preço de backtesting (análise técnica), suportando estratégias diárias / intraday, testes e otimização em nível de portfólio, gráficos, visualização, relatórios personalizados.
- Suporta C # e Visual Basic.
- link direto para Interactive Brokers, IQFeed, txtfiles e muito mais (Yahoo Finance.)
- alugar $ 50 por mês.
- suporte a estratégias diárias / intraday, testes e otimização em nível de portfólio, gráficos, visualização, relatórios personalizados.
- sinais técnicos e também fundamentais, suporte multi-ativos.
- $ 595 para a versão premium (suporte a vários provedores de dados e corretores)
- suporte a estratégias diárias / intradiárias, testes de nível de portfólio e otimização.
- melhor para sinais baseados em preços de backtesting (análise técnica)
- dados embutidos para ações, futuros e forex (ações diárias dos EUA a partir de 1990, futuros diários de 31+ anos, forex de 1983 etc.)
- usa o idioma MQL4, usado principalmente para negociar o mercado forex.
- Suporta vários corretores de Forex e feeds de dados.
- suporta o gerenciamento de várias contas.
- suporte a estratégias diárias / intradiárias, testes de nível de portfólio e otimização.
- melhor para sinais baseados em preços de backtesting (análise técnica), suporte para a linguagem de programação EasyLanguage.
- suporte a múltiplos feeds de dados (Bloomberg, Thomson Reuters, CSI, CQG, eSignal etc.), suporte direto a múltiplos corretores (Interactive Brokers etc.)
- Vida útil multidatos $ 1.497.
- Multicharts Pro $ 9,900 (Bloomberg & Thomson Reuters, alimentação de dados, etc.)
- estoques e ETFs dos EUA (diariamente)
- dados fundamentais pontuais desde 1999.
- estratégias longas / curtas, sinais orientados por preços / fundamentais.
- "Gerente" - $ 199 / mês - funcionalidade completa.
- Este produto é para uso de comerciantes / pesquisadores de baixa, média e alta freqüência. Todos os cálculos são feitos usando dados de mercado de alta freqüência que beneficiam comerciantes / pesquisadores de baixa e alta freqüência.
- backtesting intradía, gerenciamento de risco de portfólio, previsão e otimização a cada preço segundo, minutos, horas, fim de dia. Entradas do modelo totalmente controláveis.
- Fontes de dados de marca de mercado 8k + desde 2012 (ações, índices e ETFs negociados no NASDAQ). Os clientes também podem carregar seus próprios dados de mercado (por exemplo, ações chinesas).
- 40 + métricas do portfólio (VaR, ETL, alfa, beta, razão de Sharpe, razão Omega, etc.)
- suporta R, Matlab, Java e Python.
- 10 + otimizações de portfólio.
- Preços de ações dos EUA (diariamente / intradía), desde 1998, dados da QuantQuote.
- dados forex da FXCM.
- apoiar Trader & Interactive Brokers para negociação ao vivo.
- Ações dos EUA e ETFs (diária / intraday), desde 2002.
- dados fundamentais da Morningstar (mais de 600 métricas)
- apoiando Interactive Brokers para negociação ao vivo.
- simples de usar, estratégias de alocação de ativos, dados desde 1992.
- Momento de série temporal e estratégias de média móvel em ETFs.
- Estratégias de stock-picking simples e de valor simples.
- dados de até 25 anos para 49 ações Futures e S & P500.
- caixa de ferramentas em Python e Matlab.
- Quantiacs hospeda competições de negociação algorítmica com investimentos variando de 500k a 1 milhão de dólares
- Backtest em dois cliques.
- Navegue pela biblioteca de estratégias ou crie e otimize sua estratégia.
- Comércio de papel, negociação automatizada e e-mails em tempo real.
- Dados FX (Forex / Moeda) em pares principais, voltando para 2007.
- Negociação ao vivo compatível com qualquer corretor que esteja usando o Metatrader 4 como seu back-end.
- Suporta backtesting de múltiplas estratégias de negociação em um único portfólio unificado.
- Suporta dezenas de tipos de barras intradiárias e diárias.
- Suporta 18 tipos diferentes de scripts que estendem a plataforma e podem ser escritos em C #, VB, F # e R.
- Suporta um SDK de conectividade que pode ser usado para conectar a plataforma a qualquer fornecedor de dados ou corretor.
- Quantitative Stock Screener e Backtester.
- 18.000 ações cobrindo os últimos 20 anos, os dados vêm da Morningstar, com dados macroeconômicos da Quandl.
- fórmula de built-int e editor de funções.
- sem habilidades de programação necessárias.
- análise de monte carlo.
- otimizador de walk-forward e ferramentas de análise de cluster.
- mais de 40 indicadores, padrões de preços, etc.
- Construa, re-teste, melhore e otimize sua estratégia.
- dados históricos gratuitos de carrapatos.
- compromissos compostos dos comerciantes (COT)
- dados históricos de longo prazo.
- indicador de volume e juros em aberto.
- visualização da estrutura a termo.
- visualização de hedgers e especuladores.
- fatores de equidade múltipla com valores de referência alfa sobre bench-cap, múltiplos universos de investimento e filtros de gerenciamento de risco.
- backtests de estratégias de alocação de ativos, misturando alocação de ativos e seleção de fatores em um portfólio.
- US $ 50 / mês ou US $ 480 / ano - universidades de investimento mais amplas dos EUA, ações do Reino Unido e da UE, estratégias de alocação de ativos.
- mais de 10 000 stocks nos EUA, dados até 20 anos de história.
- critérios técnicos fundamentais +.
- US $ 50 por mês - funcionalidade completa.
- facilidade de armazenamento e manuseio de dados eficaz, facilidades gráficas para análise de dados, facilmente estendidas via pacotes.
- extensões recomendadas - quantstrat, Rmetrics, quantmod, quantlib, PerformanceAnalytics, TTR, portfólio, portfolioSim, backtest, etc.
- computação paralela e GPU, backtesting e otimização, amplas possibilidades de integração, etc.
- os usuários podem usar o VBA para criar estratégias para o BacktestingXL Pro, o conhecimento do VBA é opcional, os usuários podem construir regras de negociação em uma planilha usando códigos de teste de teste padrão pré-fabricados.
- suporta piramidação, limitação de posições curtas / longas, cálculo de comissão, controle de patrimônio, controle de out-of-money, customizing de preço de compra / venda.
- relatórios múltiplos de desempenho / risco.
- extensões recomendadas - pandas (Biblioteca de Análise de Dados Python), pyalgotrade (Biblioteca Python Algorithmic Trading), Zipline, ultrafinance etc.
- permite que o usuário misture vários ETF / opções / futuros / fatores de equidade com alfa comprovada sobre benchmarks de mercado.
- $ 149 / mo - opção livre + opções de seleção, estratégias de futuros, estratégias vix.
- ferramenta de backtesting de entrada simples e baseada na web para testar a força relativa e estratégias de média móvel nos ETFs.
- estoques dos EUA, dados da ValueLine de 1986 a 2014.
- preço e dados fundamentais, 1700 ações, teste mensal de granularidade.
Backtesting e Trade Systems.
As ferramentas avançadas de sistema de backtesting e comércio da CQG colocam você no controle de suas estratégias. Desenvolva e otimize seu sistema e sinais, modelando em comparação com anos de dados históricos disponíveis. Quando estiver pronto, negocie-o automaticamente por meio do AutoTrader da CQG.
Teste suas idéias antes de arriscar seu dinheiro.
Nosso pacote de sistema comercial permite que os clientes analisem a atividade de negociação anterior e criem estratégias com base nessa atividade. Aproveite os nossos recursos para ajustar os pontos de entrada e saída e testar valores de parâmetros definidos pelo usuário.
Beneficie-se de nossos inúmeros recursos de backtesting examinando a atividade de negociação com base na criação de negócios longos ou curtos, uma variedade de sinais de entrada e saída e as comissões que o trader deve pagar.
Avalie os sinais de entrada usando suas condições favoritas.
Com o Signal Evaluator, você pode analisar a eficácia em um determinado período de tempo usando seus próprios sinais de compra e venda específicos. Sua análise pode ser aplicada tanto para carteiras quanto para commodities individuais.
Otimize seus parâmetros do sistema.
Otimize seu fluxo de trabalho usando o Trade System Optimizer, uma valiosa ferramenta de negociação que testa os resultados de sistemas de negociação que executam configurações diferentes e a combinação de parâmetros incluídos em sinais de negociação.
Negocie Automaticamente Seu Sistema de Negociação.
Agora que você tem seu sistema de negociação, faça com que o CQG troque-o automaticamente. O CQG AutoTrader é um mecanismo de execução de negociação proprietário que permite aos clientes executar simultaneamente numerosos sistemas de uma vez com igual precisão e disciplina. Por sua vez, fornece aos traders maior capacidade e precisão na negociação de sistemas versus execução manual.
O produto suporta vários tipos de pedidos e permite que os clientes configurem parâmetros de execução relacionados a preço, tamanho e tempo de pedidos. Para máxima transparência, o CQG AutoTrader é integrado a vários módulos de monitoramento de posição, como a janela Pedidos e posições e o estudo ATS (sistema de negociação automatizado), onde os clientes podem monitorar sinais e posições de negociação em gráficos e interfaces de negociação. O CQG AutoTrader pode ser usado em modos de negociação ao vivo ou de demonstração.
Backtesting Videos.
Especialista em produtos da CQG Doug Janson descreve os recursos de automação do CQG IC. Aprenda como definir fórmulas, testar fórmulas usando o Entry Signal Evaluator e criar um sistema de negociação.
O especialista em produtos da CQG, Jim Stavros, demonstra a eficácia do uso de nossas ferramentas de sistema de backtesting e trade.
Use nossa tabela de comparação para encontrar os produtos CQG exatos que correspondem às suas necessidades específicas.
Assuma nossa principal plataforma, o CQG Integrated Client, para uma avaliação gratuita de 2 semanas sem risco.
Adoramos saber de você. Preencha nosso formulário de contato e um representante de vendas entrará em contato com você.
Como backtest sistemas de negociação e evitar o ajuste de curva.
Para julgar como um determinado sistema comercial deve funcionar no futuro, nós o testamos em dados de mercado anteriores. O backtesting aplica um conjunto de regras de negociação a dados históricos para estimar como essas regras teriam sido realizadas se realmente as tivéssemos negociado. Bons resultados históricos hipotéticos não garantem que um conjunto de regras funcionará bem no futuro. No entanto, resultados históricos hipotéticos pobres quase certamente significam que um sistema não deve ser negociado em tempo real.
O valor percebido do backtesting está enraizado na crença de que as tendências históricas se repetem. Os comerciantes têm testado estratégias sobre dados históricos por gerações. No entanto, a prática tornou-se popular com o advento dos computadores pessoais e do software de teste do sistema, como o System Writer, que evoluiu para o TradeStation. Este software e um banco de dados de dados históricos permitiram que aqueles sem um histórico de escrita de códigos testassem as idéias do sistema de negociação. A compreensão e aceitação mais amplas dos sistemas de negociação, bem como a frustração que muitos enfrentaram ao tentar construir sistemas de negociação por conta própria, ajudaram o mercado de sistemas de terceiros a florescer durante os anos 90.
A Futures Truth é uma empresa independente que acompanha os sistemas de negociação disponíveis comercialmente desde os anos 80. Atualmente, ele rastreia mais de 500 sistemas. A Futures Truth testa sistemas de negociação em tempo real, não em dados históricos. Isso impede a modificação de regras ao longo do tempo e simula melhor a execução de regras em condições reais de mercado, como períodos de alta volatilidade. De acordo com a Futures Truth, apenas cerca de 45% dos sistemas rastreados são rentáveis a longo prazo, enquanto apenas 20% apresentaram uma boa relação risco / recompensa. No entanto, esses números provavelmente são melhores do que a população em geral, porque apenas os fornecedores realmente confiantes em sua lógica entregam-se à Futures Truth para análise em tempo real e crítica pública.
Muitos sistemas falham porque não têm uma premissa válida. Em vez disso, os parâmetros de entrada e saída são derivados da mineração de dados. A mineração de dados simplesmente verifica dados históricos em busca de regras que funcionariam no passado. Freqüentemente, essas regras se encaixam precisamente no passado e não têm esperança de funcionar melhor do que aleatoriamente em dados não vistos. Em vez disso, o desenvolvimento do sistema deve começar com uma teoria que pode ser testada, analisada e ajustada para aplicação. Esse conceito também implica uma perspectiva diferente do próprio teste do sistema: o objetivo do backtesting não é produzir uma coleção de estatísticas hipotéticas de lucros e perdas. É testar a validade da teoria e a precisão das regras para capturar a premissa.
O teste do sistema é um processo multifacetado a partir dos dados, até a escala de tempo, para as suposições de entrada do pedido, para as especificações do contrato e controle de risco. A falha em qualquer um destes pode arruinar um teste e mdash de outro modo válido; ou, manipulá-los pode gerar resultados muito superiores ao que atingiríamos em tempo real. Você precisa fazer isso corretamente se você deseja validar o & mdash; ou quando apropriado, invalidar & mdash; Seu sistema.
Existem dois elementos para backtesting: As ferramentas adequadas & mdash; software e dados & mdash; e um método científico para desenvolver sistemas usando essas ferramentas. Vamos começar por olhar para as ferramentas do comércio.
Muitas opções estão disponíveis para testar suas ideias. Eles diferem na facilidade de transformar idéias em código e em como eles lidam com os detalhes, o que pode ter um grande impacto nos resultados. Por exemplo, se um sistema entrar em uma ordem de limite, algum software registrará um preenchimento se esse preço for tocado. No entanto, dificilmente há uma garantia de que tal ordem teria sido preenchida em negociação real, nem há uma garantia de que não vai ser. Entrar em paradas garante uma entrada, mas não um preço.
Outra questão é registrar preços reais. Embora a maioria dos softwares desenvolvidos profissionalmente não tenha mais esse problema, ainda é uma preocupação para aqueles que testam manualmente sistemas em planilhas, como o Microsoft Excel. Por exemplo, se um sistema comprar em uma parada igual ao fechar mais um terço do alcance médio nos últimos três períodos, e se o alcance médio for 10, então estamos comprando no final mais 3.333. Se estamos negociando o E-mini S & amp; P 500, ele troca em 0,25. Isso significa que o diferencial de entrada deve arredondar para 3.50. Um operador iniciante pode não perceber isso se processar manualmente os números, e não faz muito tempo que muitos programas profissionais cometeram o mesmo erro. Ao longo do tempo, esse erro pode se somar a uma discrepância considerável.
No quadro geral, no entanto, tais detalhes processuais são menores. O grande problema são os dados.
Sistemas de negociação de backtesting
Construção de arquitetura de alto desempenho e baixa latência para negociação automática completa com centenas de símbolos.
Implementação do Servidor.
Reduza a latência de execução e aumente a confiabilidade ao implantar sistemas na infra-estrutura do corretor.
R Integração.
A integração nativa com R permite que os estatísticos e os quentes sejam diretamente envolvidos no desenvolvimento da estratégia sem exigir programadores.
e Automated Trading.
A arquitetura de alto desempenho e baixa latência suporta o comércio automático completo com centenas de símbolos.
Integração k R.
Os desenvolvedores têm acesso ao pacote estatístico líder de código aberto R dentro da plataforma SEER.
H implantação do servidor.
Os sistemas de negociação desenvolvidos no Seer podem ser implantados em servidores fisicamente próximos ou em centros de dados de corretores.
3 multi sistemas.
Crie vários sistemas que executem simultaneamente a partir da mesma base de caixa / capital próprio.
L Proteção da propriedade intelectual.
Os sistemas comerciais são criptografados para usuários específicos. Isso significa que não há risco de redistribuição do sistema.
1 classes Multi-Asset.
Crie sistemas que abranjam várias classes de ativos, como ações, futuros e Forex.
v Visualização e otimização.
Visualize seus resultados de testes de contra-relógio com mais de 35 indicadores de desempenho para encontrar o melhor equilíbrio entre risco e recompensa.
Y Portfolio Backtesting.
True backtesting de passagem única e otimização, independentemente do número de sistemas de negociação, símbolos, prazos ou gerenciamento de dinheiro usado.
Testemunhos.
Honestamente, o mais sofisticado back-testing e motor de execução direta que já usamos!
H. Van Eeden, System Developer & Trader.
Corretores Suportados.
A FXCM é uma provedora líder de negociação de moeda estrangeira (FX) on-line, negociação de CFDs, apostas de spread e serviços relacionados. A missão da empresa é fornecer aos comerciantes globais o acesso ao mercado maior e mais líquido do mundo, oferecendo ferramentas de negociação inovadoras, contratando excelentes educadores comerciais, cumprindo padrões financeiros rígidos e buscando a melhor experiência de negociação on-line no mercado. Os clientes têm a vantagem do comércio móvel, a execução de pedidos com um clique e a troca de gráficos em tempo real. Além disso, a FXCM oferece cursos educacionais sobre negociação FX e fornece ferramentas de negociação, dados proprietários e recursos premium.
A OANDA utiliza tecnologia computacional e financeira inovadora para fornecer serviços de informações cambiais e de moeda estrangeira com base na Internet para todos, de indivíduos a grandes corporações, de gestores de carteiras a instituições financeiras. OANDA é um formador de mercado e uma fonte confiável de dados monetários. Ele tem acesso a um dos maiores bancos de dados históricos e de alta frequência filtrados do mundo.
Durante 36 anos, o IB Group 1 vem construindo tecnologia de negociação de acesso eletrônico que oferece vantagens reais para comerciantes, investidores e instituições em todo o mundo. Interactive Brokers Group e o capital próprio de suas afiliadas excede US $ 4,8 bilhões. Nós somos o maior corretor dos EUA com base em operações diárias de receita média que executam 407 mil negócios por dia. Descubra algumas das razões pelas quais comerciantes profissionais e investidores escolhem o IB.
Backtesting Bem-sucedido de Estratégias de Negociação Algorítmica - Parte I.
Backtesting Bem-sucedido de Estratégias de Negociação Algorítmica - Parte I.
Este artigo continua com a série sobre negociação quantitativa, que começou com o Guia do Iniciante e Identificação Estratégica. Ambos os artigos mais longos e mais envolvidos têm sido muito populares, então continuarei nesta linha e fornecerá detalhes sobre o tema da estratégia de backtesting.
O backtesting algorítmico requer conhecimento de muitas áreas, incluindo psicologia, matemática, estatística, desenvolvimento de software e microestrutura de mercado / troca. Eu não poderia esperar para cobrir todos esses tópicos em um artigo, então eu vou dividi-los em duas ou três peças menores. O que vamos discutir nesta seção? Começarei definindo o backtesting e depois descreverei o básico de como ele é realizado. Então eu vou elucidar sobre os preconceitos que tocamos no Beginner's Guide to Quantitative Trading. Em seguida, apresentarei uma comparação das várias opções de software de backtesting disponíveis.
Nos artigos subseqüentes, veremos os detalhes das implementações de estratégia que são mal mencionadas ou ignoradas. Também consideraremos como tornar o processo de backtesting mais realista, incluindo as idiossincrasias de uma troca comercial. Em seguida, discutiremos os custos de transação e como modelá-los corretamente em uma configuração de backtest. Terminaremos com uma discussão sobre o desempenho de nossos backtests e, finalmente, forneceremos um exemplo de uma estratégia quantitativa comum, conhecida como troca de pares de reversão média.
Vamos começar discutindo o que é backtesting e por que devemos realizá-lo em nossa negociação algorítmica.
O que é o backtesting?
A negociação algorítmica se diferencia de outros tipos de classes de investimento, porque podemos fornecer expectativas mais confiáveis sobre o desempenho futuro do desempenho passado, como consequência da disponibilidade abundante de dados. O processo pelo qual isso é realizado é conhecido como backtesting.
Em termos simples, o backtesting é realizado expondo seu algoritmo de estratégia particular a um fluxo de dados financeiros históricos, o que leva a um conjunto de sinais comerciais. Cada comércio (o que significaremos aqui ser uma "ida e volta" de dois sinais) terá um lucro ou perda associada. A acumulação deste lucro / perda ao longo da sua estratégia backtest levará ao lucro total (também conhecido como 'P & L' ou 'PnL'). Essa é a essência da ideia, embora, é claro, o "diabo esteja sempre nos detalhes"!
Quais são os principais motivos para testar uma estratégia algorítmica?
Filtração - Se você se lembra do artigo sobre Identificação de Estratégia, nosso objetivo na fase de pesquisa inicial foi configurar um pipeline estratégico e depois filtrar qualquer estratégia que não atendesse a determinados critérios. O backtesting nos fornece outro mecanismo de filtragem, pois podemos eliminar estratégias que não atendem às nossas necessidades de desempenho. Modelagem - O backtesting nos permite testar (com segurança!) Novos modelos de certos fenômenos de mercado, como custos de transação, roteamento de ordens, latência, liquidez ou outras questões de microestrutura do mercado. Otimização - Embora a otimização da estratégia seja repleta de vieses, o backtesting nos permite aumentar o desempenho de uma estratégia, modificando a quantidade ou os valores dos parâmetros associados a essa estratégia e recalculando seu desempenho. Verificação - Nossas estratégias são muitas vezes adquiridas externamente, através do nosso pipeline de estratégia. Backtesting uma estratégia garante que não foi implementado incorretamente. Embora raramente tenhamos acesso aos sinais gerados por estratégias externas, muitas vezes teremos acesso às métricas de desempenho, como as características de Sharpe Ratio e Drawdown. Assim, podemos compará-los com nossa própria implementação.
Backtesting oferece uma série de vantagens para negociação algorítmica. No entanto, nem sempre é possível fazer backtest diretamente de uma estratégia. Em geral, à medida que a frequência da estratégia aumenta, torna-se mais difícil modelar corretamente os efeitos de microestrutura do mercado e das trocas. Isso leva a backtests menos confiáveis e, portanto, uma avaliação mais complicada de uma estratégia escolhida. Este é um problema particular em que o sistema de execução é a chave para o desempenho da estratégia, como acontece com os algoritmos de freqüência ultra-alta.
Infelizmente, o backtesting é repleto de preconceitos de todos os tipos. Nós abordamos algumas dessas questões em artigos anteriores, mas vamos agora discuti-las em profundidade.
Biases que afetam a estratégia Backtests.
Existem muitos vieses que podem afetar o desempenho de uma estratégia de backtested. Infelizmente, esses vieses tendem a inflar o desempenho em vez de prejudicá-lo. Assim, você sempre deve considerar um backtest como um limite superior idealizado sobre o desempenho real da estratégia. É quase impossível eliminar os vieses do comércio algorítmico, por isso é nosso trabalho minimizá-los da melhor forma possível, a fim de tomar decisões informadas sobre nossas estratégias algorítmicas.
Existem quatro vieses principais que eu gostaria de discutir: Bias de Otimização, Bias de Look-Ahead, Bias de Sobrevivência e Bias de Tolerância Psicológica.
Viés de otimização.
Este é provavelmente o mais insidioso de todos os preconceitos de backtest. Envolve o ajuste ou a introdução de parâmetros de negociação adicionais até que o desempenho da estratégia no conjunto de dados de backtest seja muito atraente. No entanto, uma vez que viver, o desempenho da estratégia pode ser muito diferente. Outro nome para esse viés é "ajuste de curva" ou "viés de snooping de dados".
O viés de otimização é difícil de eliminar, pois as estratégias algorítmicas geralmente envolvem muitos parâmetros. Os "Parâmetros" nesta instância podem ser os critérios de entrada / saída, períodos de retorno, períodos de média (ou seja, o parâmetro de suavização da média móvel) ou a frequência de medição da volatilidade. O viés de otimização pode ser minimizado mantendo o número de parâmetros no mínimo e aumentando a quantidade de pontos de dados no conjunto de treinamento. Na verdade, é preciso também ter cuidado com este último, já que os pontos de treinamento mais antigos podem estar sujeitos a um regime prévio (como um ambiente regulatório) e, portanto, podem não ser relevantes para sua estratégia atual.
Um método para ajudar a atenuar esse viés é realizar uma análise de sensibilidade. Isso significa variar os parâmetros de forma incremental e traçar uma "superfície" de desempenho. Som, o raciocínio fundamental para opções de parâmetros deve, com todos os outros fatores considerados, levar a uma superfície de parâmetro mais suave. Se você tem uma superfície de desempenho muito nervosa, muitas vezes significa que um parâmetro não está refletindo um fenômeno e é um artefato dos dados do teste. Existe uma vasta literatura sobre algoritmos de otimização multidimensional e é uma área altamente ativa de pesquisa. Não vou me aprofundar aqui, mas mantenha-o no fundo de sua mente quando você encontrar uma estratégia com um backtest fantástico!
Look-Ahead Bias.
O viés de antecipação é introduzido em um sistema de backtesting quando dados futuros são acidentalmente incluídos em um ponto da simulação onde esses dados não estariam disponíveis. Se estamos executando o backtest cronologicamente e chegarmos ao ponto de tempo $ N $, o viés de frente para a frente ocorre se os dados estiverem incluídos para qualquer ponto $ N + k $, onde $ k> 0 $. Os erros de polarização anteriores podem ser extremamente sutis. Aqui estão três exemplos de como o viés de look-ahead pode ser introduzido:
Bugs técnicos - Arrays / vetores no código geralmente têm iteradores ou variáveis de índice. Deslocamentos incorretos desses índices podem levar a um viés avançado, incorporando dados em $ N + k $ por zero $ k $. Cálculo de parâmetro - Outro exemplo comum de polarização aparente ocorre ao calcular parâmetros de estratégia ótimos, como, por exemplo, com regressões lineares entre duas séries temporais. Se todo o conjunto de dados (incluindo dados futuros) é usado para calcular os coeficientes de regressão e, portanto, aplicado retroativamente a uma estratégia de negociação para fins de otimização, os dados futuros estão sendo incorporados e existe um viés de futuro. Maxima / Minima - Certas estratégias de negociação utilizam valores extremos em qualquer período de tempo, como incorporar os preços altos ou baixos nos dados da OHLC. No entanto, uma vez que estes valores máximos / mínimos só podem ser calculados no final de um período de tempo, um viés de avanço é introduzido se esses valores forem usados - durante o período atual. É sempre necessário atrasar valores altos / baixos em pelo menos um período em qualquer estratégia de negociação fazendo uso deles.
Tal como acontece com o viés de otimização, é preciso ter muito cuidado para evitar sua introdução. Muitas vezes, é a principal razão pela qual as estratégias de negociação têm um desempenho inferior aos backtests significativamente em "negociação ao vivo".
Viés de sobrevivência.
O viés de sobrevivência é um fenômeno particularmente perigoso e pode levar a um desempenho significativamente inflacionado para certos tipos de estratégia. Ocorre quando as estratégias são testadas em conjuntos de dados que não incluem o universo completo de ativos anteriores que podem ter sido escolhidos em um determinado momento, mas consideram apenas aqueles que "sobreviveram" à hora atual.
Por exemplo, considere testar uma estratégia em uma seleção aleatória de ações antes e depois do crash do mercado de 2001. Algumas ações de tecnologia faliram, enquanto outras conseguiram ficar à tona e até prosperaram. Se tivéssemos restringido esta estratégia apenas às ações que passaram pelo período de retirada do mercado, estaremos apresentando um viés de sobrevivência porque já demonstraram seu sucesso para nós. Na verdade, este é apenas outro caso específico de viés de antecipação, já que informações futuras estão sendo incorporadas à análise passada.
Existem duas maneiras principais de atenuar o viés de sobrevivência em seus backtests de estratégia:
Survivorship Bias Free Datasets - No caso de dados de capital, é possível comprar conjuntos de dados que incluam entidades excluídas, embora não sejam baratos e apenas tendem a ser utilizados por empresas institucionais. Em particular, os dados do Yahoo Finance NÃO são livres de viés de sobrevivência, e isso é comumente usado por muitos traders de algoritmos de varejo. Pode-se também negociar em classes de ativos que não são propensas ao viés de sobrevivência, como certas commodities (e seus derivados futuros). Use dados mais recentes - No caso de ações, o uso de um conjunto de dados mais recente mitiga a possibilidade de que a seleção de ações escolhida seja ponderada para "sobreviventes", simplesmente porque há uma menor probabilidade de exclusão geral de estoque em períodos de tempo mais curtos. Também é possível começar a criar um conjunto de dados pessoal livre de viés de sobrevivência, coletando dados do ponto atual em diante. Depois de 3 a 4 anos, você terá um sólido conjunto de dados de equidade livres de viés de sobrevivência, com o qual será feito backtest de estratégias adicionais.
Vamos agora considerar certos fenômenos psicológicos que podem influenciar o seu desempenho comercial.
Tendência da Tolerância Psicológica.
Este fenômeno particular não é freqüentemente discutido no contexto da negociação quantitativa. No entanto, é discutido extensivamente em relação a métodos comerciais mais discricionários. Ele tem vários nomes, mas eu decidi chamar de "viés de tolerância psicológica" porque capta a essência do problema. Ao criar backtests durante um período de 5 anos ou mais, é fácil olhar para uma curva de capital de tendência ascendente, calcular o retorno anual composto, o índice de Sharpe e até as características de rebaixamento e ficar satisfeito com os resultados. Como exemplo, a estratégia pode possuir um rebaixamento relativo máximo de 25% e uma duração máxima de rebaixamento de 4 meses. Isso não seria atípico para uma estratégia momentânea. É direto convencer-se de que é fácil tolerar tais períodos de perdas porque a imagem geral é corajosa. No entanto, na prática, é muito mais difícil!
Se rebotes históricos de 25% ou mais ocorrerem nos backtests, então, com toda a probabilidade, você verá períodos de rebaixamento similar em negociações ao vivo. Estes períodos de abandono são psicologicamente difíceis de suportar. Observei em primeira mão como pode ser uma redução prolongada, em um ambiente institucional, e isso não é agradável - mesmo que os backtests sugiram que tais períodos ocorrerão. A razão pela qual eu o denominei de "viés" é que, com frequência, uma estratégia que seria bem-sucedida é interrompida durante os períodos de rebaixamento estendido e, portanto, levará a um desempenho significativamente inferior em comparação com um backtest. Assim, mesmo que a estratégia seja de natureza algorítmica, os fatores psicológicos ainda podem ter uma forte influência na lucratividade. O objetivo é assegurar que, se você vir rebotes de uma certa porcentagem e duração nos backtests, então você deve esperar que eles ocorram em ambientes de negociação ao vivo, e será necessário perseverar para alcançar a lucratividade mais uma vez.
Pacotes de software para backtesting.
A paisagem do software para teste de estratégia é vasta. As soluções vão desde software sofisticado de nível institucional totalmente integrado até linguagens de programação como C ++, Python e R, onde quase tudo deve ser escrito do zero (ou 'plugins' obtidos). Como comerciantes quantos estamos interessados no equilíbrio de poder "possuir" nossa plataforma de tecnologia comercial versus a velocidade e a confiabilidade de nossa metodologia de desenvolvimento. Aqui estão as principais considerações para a escolha de software:
Habilidade de programação - A escolha do ambiente será, em grande parte, reduzida a sua capacidade de programar o software. Eu diria que estar no controle da pilha total terá um efeito maior em seu P & L de longo prazo do que a terceirização, tanto quanto possível, do software do fornecedor. Isso ocorre devido ao risco de ter erros externos ou idiossincrasias que você não consegue consertar no software do fornecedor, o que, de outra forma, seria facilmente solucionado se você tivesse mais controle sobre sua "pilha de tecnologia". Você também quer um ambiente que encontre o equilíbrio certo entre produtividade, disponibilidade de biblioteca e velocidade de execução. Faço minha própria recomendação pessoal abaixo. Capacidade de Execução / Interação Broker - Alguns softwares de backtesting, como Tradestation, vinculam diretamente uma corretora. Eu não sou fã desta abordagem, pois reduzir os custos de transação são muitas vezes um grande componente de obter uma proporção Sharpe mais alta. Se você estiver vinculado a um corretor particular (e a Tradestation "força" você a fazer isso), então você terá um tempo mais difícil de transição para o novo software (ou um novo corretor) se for necessário. Os Interactive Brokers fornecem uma API robusta, embora com uma interface ligeiramente obtusa. Personalização - Um ambiente como o MATLAB ou o Python oferece uma grande flexibilidade ao criar estratégias de algo, pois oferecem bibliotecas fantásticas para praticamente qualquer operação matemática imaginável, mas também permitem uma personalização extensiva, quando necessário. Complexidade de estratégia - Certos softwares simplesmente não são feitos para processamento pesado de números ou complexidade matemática. O Excel é um desses softwares. Embora seja bom para estratégias mais simples, ele não pode realmente lidar com numerosos ativos ou algoritmos mais complicados, em velocidade. Minimização de viés - Uma determinada peça de software ou dados se presta mais a vieses de negociação? Você precisa se certificar de que se você quiser criar toda a funcionalidade você mesmo, que não introduza problemas que possam levar a desvios. Velocidade de desenvolvimento - Não se deve ter que passar meses e meses implementando um mecanismo de backtest. A prototipagem só deve demorar algumas semanas. Certifique-se de que seu software não está atrapalhando o seu progresso em grande medida, apenas para pegar alguns pontos percentuais extras de velocidade de execução. C ++ é o "elefante na sala" aqui! Velocidade de Execução - Se sua estratégia for completamente dependente da pontualidade de execução (como em HFT / UHFT), será necessário um idioma como C ou C ++. No entanto, você estará se aproximando da otimização do kernel do Linux e do uso do FPGA para esses domínios, o que está fora do escopo deste artigo! Custo - Muitos dos ambientes de software com os quais você pode programar estratégias de negociação algorítmica são completamente livres e de código aberto. Na verdade, muitos fundos de hedge fazem uso de software de código aberto para todas as suas pilhas de negociação de algoritmos. Além disso, o Excel e o MATLAB são relativamente baratos e existem alternativas gratuitas para cada um deles.
Agora que listámos os critérios com os quais precisamos escolher a nossa infra-estrutura de software, quero executar alguns dos pacotes mais populares e como eles comparam:
Nota: Eu só vou incluir o software que está disponível para a maioria dos profissionais de varejo e desenvolvedores de software, pois este é o público do site. Enquanto outros softwares estão disponíveis, como as ferramentas de grau institucional, eu acho que estas são muito caras para ser efetivamente usadas em uma área de varejo e eu pessoalmente não tenho experiência com elas.
Construção de arquitetura de alto desempenho e baixa latência para negociação automática completa com centenas de símbolos.
Implementação do Servidor.
Reduza a latência de execução e aumente a confiabilidade ao implantar sistemas na infra-estrutura do corretor.
R Integração.
A integração nativa com R permite que os estatísticos e os quentes sejam diretamente envolvidos no desenvolvimento da estratégia sem exigir programadores.
e Automated Trading.
A arquitetura de alto desempenho e baixa latência suporta o comércio automático completo com centenas de símbolos.
Integração k R.
Os desenvolvedores têm acesso ao pacote estatístico líder de código aberto R dentro da plataforma SEER.
H implantação do servidor.
Os sistemas de negociação desenvolvidos no Seer podem ser implantados em servidores fisicamente próximos ou em centros de dados de corretores.
3 multi sistemas.
Crie vários sistemas que executem simultaneamente a partir da mesma base de caixa / capital próprio.
L Proteção da propriedade intelectual.
Os sistemas comerciais são criptografados para usuários específicos. Isso significa que não há risco de redistribuição do sistema.
1 classes Multi-Asset.
Crie sistemas que abranjam várias classes de ativos, como ações, futuros e Forex.
v Visualização e otimização.
Visualize seus resultados de testes de contra-relógio com mais de 35 indicadores de desempenho para encontrar o melhor equilíbrio entre risco e recompensa.
Y Portfolio Backtesting.
True backtesting de passagem única e otimização, independentemente do número de sistemas de negociação, símbolos, prazos ou gerenciamento de dinheiro usado.
Testemunhos.
Honestamente, o mais sofisticado back-testing e motor de execução direta que já usamos!
H. Van Eeden, System Developer & Trader.
Corretores Suportados.
A FXCM é uma provedora líder de negociação de moeda estrangeira (FX) on-line, negociação de CFDs, apostas de spread e serviços relacionados. A missão da empresa é fornecer aos comerciantes globais o acesso ao mercado maior e mais líquido do mundo, oferecendo ferramentas de negociação inovadoras, contratando excelentes educadores comerciais, cumprindo padrões financeiros rígidos e buscando a melhor experiência de negociação on-line no mercado. Os clientes têm a vantagem do comércio móvel, a execução de pedidos com um clique e a troca de gráficos em tempo real. Além disso, a FXCM oferece cursos educacionais sobre negociação FX e fornece ferramentas de negociação, dados proprietários e recursos premium.
A OANDA utiliza tecnologia computacional e financeira inovadora para fornecer serviços de informações cambiais e de moeda estrangeira com base na Internet para todos, de indivíduos a grandes corporações, de gestores de carteiras a instituições financeiras. OANDA é um formador de mercado e uma fonte confiável de dados monetários. Ele tem acesso a um dos maiores bancos de dados históricos e de alta frequência filtrados do mundo.
Durante 36 anos, o IB Group 1 vem construindo tecnologia de negociação de acesso eletrônico que oferece vantagens reais para comerciantes, investidores e instituições em todo o mundo. Interactive Brokers Group e o capital próprio de suas afiliadas excede US $ 4,8 bilhões. Nós somos o maior corretor dos EUA com base em operações diárias de receita média que executam 407 mil negócios por dia. Descubra algumas das razões pelas quais comerciantes profissionais e investidores escolhem o IB.
Backtesting Bem-sucedido de Estratégias de Negociação Algorítmica - Parte I.
Backtesting Bem-sucedido de Estratégias de Negociação Algorítmica - Parte I.
Este artigo continua com a série sobre negociação quantitativa, que começou com o Guia do Iniciante e Identificação Estratégica. Ambos os artigos mais longos e mais envolvidos têm sido muito populares, então continuarei nesta linha e fornecerá detalhes sobre o tema da estratégia de backtesting.
O backtesting algorítmico requer conhecimento de muitas áreas, incluindo psicologia, matemática, estatística, desenvolvimento de software e microestrutura de mercado / troca. Eu não poderia esperar para cobrir todos esses tópicos em um artigo, então eu vou dividi-los em duas ou três peças menores. O que vamos discutir nesta seção? Começarei definindo o backtesting e depois descreverei o básico de como ele é realizado. Então eu vou elucidar sobre os preconceitos que tocamos no Beginner's Guide to Quantitative Trading. Em seguida, apresentarei uma comparação das várias opções de software de backtesting disponíveis.
Nos artigos subseqüentes, veremos os detalhes das implementações de estratégia que são mal mencionadas ou ignoradas. Também consideraremos como tornar o processo de backtesting mais realista, incluindo as idiossincrasias de uma troca comercial. Em seguida, discutiremos os custos de transação e como modelá-los corretamente em uma configuração de backtest. Terminaremos com uma discussão sobre o desempenho de nossos backtests e, finalmente, forneceremos um exemplo de uma estratégia quantitativa comum, conhecida como troca de pares de reversão média.
Vamos começar discutindo o que é backtesting e por que devemos realizá-lo em nossa negociação algorítmica.
O que é o backtesting?
A negociação algorítmica se diferencia de outros tipos de classes de investimento, porque podemos fornecer expectativas mais confiáveis sobre o desempenho futuro do desempenho passado, como consequência da disponibilidade abundante de dados. O processo pelo qual isso é realizado é conhecido como backtesting.
Em termos simples, o backtesting é realizado expondo seu algoritmo de estratégia particular a um fluxo de dados financeiros históricos, o que leva a um conjunto de sinais comerciais. Cada comércio (o que significaremos aqui ser uma "ida e volta" de dois sinais) terá um lucro ou perda associada. A acumulação deste lucro / perda ao longo da sua estratégia backtest levará ao lucro total (também conhecido como 'P & L' ou 'PnL'). Essa é a essência da ideia, embora, é claro, o "diabo esteja sempre nos detalhes"!
Quais são os principais motivos para testar uma estratégia algorítmica?
Filtração - Se você se lembra do artigo sobre Identificação de Estratégia, nosso objetivo na fase de pesquisa inicial foi configurar um pipeline estratégico e depois filtrar qualquer estratégia que não atendesse a determinados critérios. O backtesting nos fornece outro mecanismo de filtragem, pois podemos eliminar estratégias que não atendem às nossas necessidades de desempenho. Modelagem - O backtesting nos permite testar (com segurança!) Novos modelos de certos fenômenos de mercado, como custos de transação, roteamento de ordens, latência, liquidez ou outras questões de microestrutura do mercado. Otimização - Embora a otimização da estratégia seja repleta de vieses, o backtesting nos permite aumentar o desempenho de uma estratégia, modificando a quantidade ou os valores dos parâmetros associados a essa estratégia e recalculando seu desempenho. Verificação - Nossas estratégias são muitas vezes adquiridas externamente, através do nosso pipeline de estratégia. Backtesting uma estratégia garante que não foi implementado incorretamente. Embora raramente tenhamos acesso aos sinais gerados por estratégias externas, muitas vezes teremos acesso às métricas de desempenho, como as características de Sharpe Ratio e Drawdown. Assim, podemos compará-los com nossa própria implementação.
Backtesting oferece uma série de vantagens para negociação algorítmica. No entanto, nem sempre é possível fazer backtest diretamente de uma estratégia. Em geral, à medida que a frequência da estratégia aumenta, torna-se mais difícil modelar corretamente os efeitos de microestrutura do mercado e das trocas. Isso leva a backtests menos confiáveis e, portanto, uma avaliação mais complicada de uma estratégia escolhida. Este é um problema particular em que o sistema de execução é a chave para o desempenho da estratégia, como acontece com os algoritmos de freqüência ultra-alta.
Infelizmente, o backtesting é repleto de preconceitos de todos os tipos. Nós abordamos algumas dessas questões em artigos anteriores, mas vamos agora discuti-las em profundidade.
Biases que afetam a estratégia Backtests.
Existem muitos vieses que podem afetar o desempenho de uma estratégia de backtested. Infelizmente, esses vieses tendem a inflar o desempenho em vez de prejudicá-lo. Assim, você sempre deve considerar um backtest como um limite superior idealizado sobre o desempenho real da estratégia. É quase impossível eliminar os vieses do comércio algorítmico, por isso é nosso trabalho minimizá-los da melhor forma possível, a fim de tomar decisões informadas sobre nossas estratégias algorítmicas.
Existem quatro vieses principais que eu gostaria de discutir: Bias de Otimização, Bias de Look-Ahead, Bias de Sobrevivência e Bias de Tolerância Psicológica.
Viés de otimização.
Este é provavelmente o mais insidioso de todos os preconceitos de backtest. Envolve o ajuste ou a introdução de parâmetros de negociação adicionais até que o desempenho da estratégia no conjunto de dados de backtest seja muito atraente. No entanto, uma vez que viver, o desempenho da estratégia pode ser muito diferente. Outro nome para esse viés é "ajuste de curva" ou "viés de snooping de dados".
O viés de otimização é difícil de eliminar, pois as estratégias algorítmicas geralmente envolvem muitos parâmetros. Os "Parâmetros" nesta instância podem ser os critérios de entrada / saída, períodos de retorno, períodos de média (ou seja, o parâmetro de suavização da média móvel) ou a frequência de medição da volatilidade. O viés de otimização pode ser minimizado mantendo o número de parâmetros no mínimo e aumentando a quantidade de pontos de dados no conjunto de treinamento. Na verdade, é preciso também ter cuidado com este último, já que os pontos de treinamento mais antigos podem estar sujeitos a um regime prévio (como um ambiente regulatório) e, portanto, podem não ser relevantes para sua estratégia atual.
Um método para ajudar a atenuar esse viés é realizar uma análise de sensibilidade. Isso significa variar os parâmetros de forma incremental e traçar uma "superfície" de desempenho. Som, o raciocínio fundamental para opções de parâmetros deve, com todos os outros fatores considerados, levar a uma superfície de parâmetro mais suave. Se você tem uma superfície de desempenho muito nervosa, muitas vezes significa que um parâmetro não está refletindo um fenômeno e é um artefato dos dados do teste. Existe uma vasta literatura sobre algoritmos de otimização multidimensional e é uma área altamente ativa de pesquisa. Não vou me aprofundar aqui, mas mantenha-o no fundo de sua mente quando você encontrar uma estratégia com um backtest fantástico!
Look-Ahead Bias.
O viés de antecipação é introduzido em um sistema de backtesting quando dados futuros são acidentalmente incluídos em um ponto da simulação onde esses dados não estariam disponíveis. Se estamos executando o backtest cronologicamente e chegarmos ao ponto de tempo $ N $, o viés de frente para a frente ocorre se os dados estiverem incluídos para qualquer ponto $ N + k $, onde $ k> 0 $. Os erros de polarização anteriores podem ser extremamente sutis. Aqui estão três exemplos de como o viés de look-ahead pode ser introduzido:
Bugs técnicos - Arrays / vetores no código geralmente têm iteradores ou variáveis de índice. Deslocamentos incorretos desses índices podem levar a um viés avançado, incorporando dados em $ N + k $ por zero $ k $. Cálculo de parâmetro - Outro exemplo comum de polarização aparente ocorre ao calcular parâmetros de estratégia ótimos, como, por exemplo, com regressões lineares entre duas séries temporais. Se todo o conjunto de dados (incluindo dados futuros) é usado para calcular os coeficientes de regressão e, portanto, aplicado retroativamente a uma estratégia de negociação para fins de otimização, os dados futuros estão sendo incorporados e existe um viés de futuro. Maxima / Minima - Certas estratégias de negociação utilizam valores extremos em qualquer período de tempo, como incorporar os preços altos ou baixos nos dados da OHLC. No entanto, uma vez que estes valores máximos / mínimos só podem ser calculados no final de um período de tempo, um viés de avanço é introduzido se esses valores forem usados - durante o período atual. É sempre necessário atrasar valores altos / baixos em pelo menos um período em qualquer estratégia de negociação fazendo uso deles.
Tal como acontece com o viés de otimização, é preciso ter muito cuidado para evitar sua introdução. Muitas vezes, é a principal razão pela qual as estratégias de negociação têm um desempenho inferior aos backtests significativamente em "negociação ao vivo".
Viés de sobrevivência.
O viés de sobrevivência é um fenômeno particularmente perigoso e pode levar a um desempenho significativamente inflacionado para certos tipos de estratégia. Ocorre quando as estratégias são testadas em conjuntos de dados que não incluem o universo completo de ativos anteriores que podem ter sido escolhidos em um determinado momento, mas consideram apenas aqueles que "sobreviveram" à hora atual.
Por exemplo, considere testar uma estratégia em uma seleção aleatória de ações antes e depois do crash do mercado de 2001. Algumas ações de tecnologia faliram, enquanto outras conseguiram ficar à tona e até prosperaram. Se tivéssemos restringido esta estratégia apenas às ações que passaram pelo período de retirada do mercado, estaremos apresentando um viés de sobrevivência porque já demonstraram seu sucesso para nós. Na verdade, este é apenas outro caso específico de viés de antecipação, já que informações futuras estão sendo incorporadas à análise passada.
Existem duas maneiras principais de atenuar o viés de sobrevivência em seus backtests de estratégia:
Survivorship Bias Free Datasets - No caso de dados de capital, é possível comprar conjuntos de dados que incluam entidades excluídas, embora não sejam baratos e apenas tendem a ser utilizados por empresas institucionais. Em particular, os dados do Yahoo Finance NÃO são livres de viés de sobrevivência, e isso é comumente usado por muitos traders de algoritmos de varejo. Pode-se também negociar em classes de ativos que não são propensas ao viés de sobrevivência, como certas commodities (e seus derivados futuros). Use dados mais recentes - No caso de ações, o uso de um conjunto de dados mais recente mitiga a possibilidade de que a seleção de ações escolhida seja ponderada para "sobreviventes", simplesmente porque há uma menor probabilidade de exclusão geral de estoque em períodos de tempo mais curtos. Também é possível começar a criar um conjunto de dados pessoal livre de viés de sobrevivência, coletando dados do ponto atual em diante. Depois de 3 a 4 anos, você terá um sólido conjunto de dados de equidade livres de viés de sobrevivência, com o qual será feito backtest de estratégias adicionais.
Vamos agora considerar certos fenômenos psicológicos que podem influenciar o seu desempenho comercial.
Tendência da Tolerância Psicológica.
Este fenômeno particular não é freqüentemente discutido no contexto da negociação quantitativa. No entanto, é discutido extensivamente em relação a métodos comerciais mais discricionários. Ele tem vários nomes, mas eu decidi chamar de "viés de tolerância psicológica" porque capta a essência do problema. Ao criar backtests durante um período de 5 anos ou mais, é fácil olhar para uma curva de capital de tendência ascendente, calcular o retorno anual composto, o índice de Sharpe e até as características de rebaixamento e ficar satisfeito com os resultados. Como exemplo, a estratégia pode possuir um rebaixamento relativo máximo de 25% e uma duração máxima de rebaixamento de 4 meses. Isso não seria atípico para uma estratégia momentânea. É direto convencer-se de que é fácil tolerar tais períodos de perdas porque a imagem geral é corajosa. No entanto, na prática, é muito mais difícil!
Se rebotes históricos de 25% ou mais ocorrerem nos backtests, então, com toda a probabilidade, você verá períodos de rebaixamento similar em negociações ao vivo. Estes períodos de abandono são psicologicamente difíceis de suportar. Observei em primeira mão como pode ser uma redução prolongada, em um ambiente institucional, e isso não é agradável - mesmo que os backtests sugiram que tais períodos ocorrerão. A razão pela qual eu o denominei de "viés" é que, com frequência, uma estratégia que seria bem-sucedida é interrompida durante os períodos de rebaixamento estendido e, portanto, levará a um desempenho significativamente inferior em comparação com um backtest. Assim, mesmo que a estratégia seja de natureza algorítmica, os fatores psicológicos ainda podem ter uma forte influência na lucratividade. O objetivo é assegurar que, se você vir rebotes de uma certa porcentagem e duração nos backtests, então você deve esperar que eles ocorram em ambientes de negociação ao vivo, e será necessário perseverar para alcançar a lucratividade mais uma vez.
Pacotes de software para backtesting.
A paisagem do software para teste de estratégia é vasta. As soluções vão desde software sofisticado de nível institucional totalmente integrado até linguagens de programação como C ++, Python e R, onde quase tudo deve ser escrito do zero (ou 'plugins' obtidos). Como comerciantes quantos estamos interessados no equilíbrio de poder "possuir" nossa plataforma de tecnologia comercial versus a velocidade e a confiabilidade de nossa metodologia de desenvolvimento. Aqui estão as principais considerações para a escolha de software:
Habilidade de programação - A escolha do ambiente será, em grande parte, reduzida a sua capacidade de programar o software. Eu diria que estar no controle da pilha total terá um efeito maior em seu P & L de longo prazo do que a terceirização, tanto quanto possível, do software do fornecedor. Isso ocorre devido ao risco de ter erros externos ou idiossincrasias que você não consegue consertar no software do fornecedor, o que, de outra forma, seria facilmente solucionado se você tivesse mais controle sobre sua "pilha de tecnologia". Você também quer um ambiente que encontre o equilíbrio certo entre produtividade, disponibilidade de biblioteca e velocidade de execução. Faço minha própria recomendação pessoal abaixo. Capacidade de Execução / Interação Broker - Alguns softwares de backtesting, como Tradestation, vinculam diretamente uma corretora. Eu não sou fã desta abordagem, pois reduzir os custos de transação são muitas vezes um grande componente de obter uma proporção Sharpe mais alta. Se você estiver vinculado a um corretor particular (e a Tradestation "força" você a fazer isso), então você terá um tempo mais difícil de transição para o novo software (ou um novo corretor) se for necessário. Os Interactive Brokers fornecem uma API robusta, embora com uma interface ligeiramente obtusa. Personalização - Um ambiente como o MATLAB ou o Python oferece uma grande flexibilidade ao criar estratégias de algo, pois oferecem bibliotecas fantásticas para praticamente qualquer operação matemática imaginável, mas também permitem uma personalização extensiva, quando necessário. Complexidade de estratégia - Certos softwares simplesmente não são feitos para processamento pesado de números ou complexidade matemática. O Excel é um desses softwares. Embora seja bom para estratégias mais simples, ele não pode realmente lidar com numerosos ativos ou algoritmos mais complicados, em velocidade. Minimização de viés - Uma determinada peça de software ou dados se presta mais a vieses de negociação? Você precisa se certificar de que se você quiser criar toda a funcionalidade você mesmo, que não introduza problemas que possam levar a desvios. Velocidade de desenvolvimento - Não se deve ter que passar meses e meses implementando um mecanismo de backtest. A prototipagem só deve demorar algumas semanas. Certifique-se de que seu software não está atrapalhando o seu progresso em grande medida, apenas para pegar alguns pontos percentuais extras de velocidade de execução. C ++ é o "elefante na sala" aqui! Velocidade de Execução - Se sua estratégia for completamente dependente da pontualidade de execução (como em HFT / UHFT), será necessário um idioma como C ou C ++. No entanto, você estará se aproximando da otimização do kernel do Linux e do uso do FPGA para esses domínios, o que está fora do escopo deste artigo! Custo - Muitos dos ambientes de software com os quais você pode programar estratégias de negociação algorítmica são completamente livres e de código aberto. Na verdade, muitos fundos de hedge fazem uso de software de código aberto para todas as suas pilhas de negociação de algoritmos. Além disso, o Excel e o MATLAB são relativamente baratos e existem alternativas gratuitas para cada um deles.
Agora que listámos os critérios com os quais precisamos escolher a nossa infra-estrutura de software, quero executar alguns dos pacotes mais populares e como eles comparam:
Nota: Eu só vou incluir o software que está disponível para a maioria dos profissionais de varejo e desenvolvedores de software, pois este é o público do site. Enquanto outros softwares estão disponíveis, como as ferramentas de grau institucional, eu acho que estas são muito caras para ser efetivamente usadas em uma área de varejo e eu pessoalmente não tenho experiência com elas.
Комментарии
Отправить комментарий