Monday 19 March 2018

Backtesting das estratégias de negociação


Backtesting: interpretando o passado.


Backtesting é um componente chave do desenvolvimento efetivo do sistema comercial. É conseguido reconstruindo, com dados históricos, trades que teriam ocorrido no passado usando regras definidas por uma determinada estratégia. O resultado oferece estatísticas que podem ser usadas para avaliar a eficácia da estratégia. Usando esses dados, os comerciantes podem otimizar e melhorar suas estratégias, encontrar falhas técnicas ou teóricas e ganhar confiança em sua estratégia antes de aplicá-la aos mercados reais. 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 fraco no passado provavelmente irá apresentar um desempenho fraco no futuro. Este artigo analisa o que os aplicativos são usados ​​para testar, o tipo de dados obtidos e como usá-lo!


Os dados e as ferramentas.


Lucro ou prejuízo líquido - Ganhos ou perdas de percentagem líquida. Prazo - Datas passadas nas quais o teste ocorreu. Universo - estoques incluídos no backtest. Medidas de volatilidade - percentual máximo para cima e para baixo. Médias - Ganho médio percentual e perda média, barras médias mantidas. Exposição - Porcentagem de capital investido (ou exposto ao mercado). Razões - Índice de vitórias para perdas. Retorno anualizado - Retorno percentual ao longo de um ano. Retorno ajustado ao risco - Retorno percentual em função do risco.


Normalmente, o software backtesting terá duas telas que são importantes. O primeiro permite ao comerciante personalizar as configurações de backtesting. Essas personalizações incluem tudo, desde o período de tempo até os custos de comissão. Aqui está um exemplo dessa tela em AmiBroker:


A segunda tela é o relatório de resultados de backtesting. Aqui é onde você pode encontrar todas as estatísticas mencionadas acima. Mais uma vez, aqui está um exemplo desta tela em 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 executar dimensionamento automático de posição, otimização e outros recursos mais avançados.


Os 10 mandamentos.


Tenha em consideração as tendências gerais do mercado no período em que uma determinada estratégia foi testada. Por exemplo, se uma estratégia só foi testada de 1999 a 2000, pode não estar bem em um mercado ostentoso. Muitas vezes, é uma boa idéia fazer um teste longo em um longo período de tempo que engloba vários tipos diferentes de condições de mercado. Tome em consideração o universo em que ocorreu o backtesting. Por exemplo, se um sistema de mercado amplo é testado com um universo composto por estoques tecnológicos, pode deixar de funcionar bem em diferentes setores. Como regra geral, se uma estratégia é direcionada a um gênero específico de estoque, limite o universo a esse gênero; mas, em todos os outros casos, mantenha um grande universo para fins de teste. As medidas de volatilidade são extremamente importantes a serem consideradas no desenvolvimento de um sistema comercial. Isto é especialmente verdadeiro para as contas alavancadas, que são submetidas a chamadas de margem se o seu patrimônio cai abaixo de um determinado ponto. Os comerciantes devem procurar manter a volatilidade baixa para reduzir o risco e permitir uma transição mais fácil dentro e fora de uma determinada ação. O número médio de barras mantidas é também muito importante para assistir ao desenvolver um sistema comercial. Embora a maioria dos softwares de backtesting incluam custos de comissão nos cálculos finais, isso não significa que você deve ignorar esta estatística. Se possível, aumentando o número médio de barras mantidas pode reduzir os custos de comissão e melhorar seu retorno geral. A exposição é uma espada de dois gumes. O aumento da exposição pode levar a maiores lucros ou maiores perdas, enquanto a menor exposição significa lucros menores ou menores perdas. No entanto, em geral, é uma boa idéia manter a exposição abaixo de 70%, a fim de reduzir o risco e permitir uma transição mais fácil dentro e fora de uma determinada ação. A estatística de ganho médio / perda, combinada com o índice de ganhos para perdas, pode ser útil para determinar o dimensionamento ótimo da posição e gerenciamento de dinheiro usando técnicas como o critério Kelly. (Ver Gestão de Dinheiro Usando o Critério de Kelly.) Os comerciantes podem assumir posições maiores e reduzir os custos de comissão, aumentando seus ganhos médios e aumentando seu índice de ganhos para perdas. O retorno anualizado é importante porque é usado como uma ferramenta para comparar os resultados de um sistema contra outros locais de investimento. É importante não só olhar para o retorno anual anualizado, mas também levar em consideração o aumento ou diminuição do risco. Isso pode ser feito observando o retorno ajustado ao risco, que contabiliza vários fatores de risco. Antes que um sistema de negociação seja adotado, ele deve superar todos os outros locais de investimento com risco igual ou menor. A personalização do backtesting é extremamente importante. Muitos aplicativos de backtesting têm entrada para valores de comissão, tamanhos de lotes redondos (ou fracionários), tamanhos de garotas, requisitos de margem, taxas de juros, suposições de deslizamento, regras de dimensionamento de posição, regras de saída da mesma barra, configurações de parada (muito próximas) e muito mais. Para obter os resultados de backtesting mais precisos, é importante ajustar essas configurações para imitar o corretor que será usado quando o sistema for atualizado. Backtesting às vezes pode levar a algo conhecido como over-optimization. Esta é uma condição em que os resultados de desempenho são tão ajustados ao passado que não são mais precisos no futuro. Geralmente, é uma boa idéia implementar regras que se aplicam a todos os estoques ou um conjunto seleto de ações segmentadas, e não são otimizadas na medida em que as regras não são mais compreensíveis pelo criador. 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 funcionaram bem no passado não conseguem fazer bem no presente. O desempenho passado não é indicativo de resultados futuros. Certifique-se de trocar papel com um sistema que tenha sido testado com sucesso antes de entrar em operação para ter certeza de que a estratégia ainda se aplica na prática.


Backtesting é um dos aspectos mais importantes do desenvolvimento de um sistema comercial. Se criado e interpretado adequadamente, pode ajudar os comerciantes 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.


Backtesting.


O que é 'Backtesting'


Backtesting é o processo de testar uma estratégia de negociação em dados históricos relevantes para assegurar sua viabilidade antes que o comerciante arrisque qualquer capital real. Um comerciante pode simular a negociação de uma estratégia durante um período de tempo apropriado e analisar os resultados para os níveis de rentabilidade e risco.


BREAKING DOWN 'Backtesting'


Uma quantidade significativa do volume negociado no mercado financeiro de hoje é feita por comerciantes que usam algum tipo de automação de computador. Isto é especialmente verdadeiro para estratégias comerciais baseadas em análises técnicas. Backtesting é parte integrante do desenvolvimento de um sistema de negociação automatizado.


Backtesting significativo.


Quando feito corretamente, backtesting pode ser uma ferramenta inestimável para tomar decisões sobre se utilizar uma estratégia de negociação. O período de tempo da amostra em que um backtest é executado é crítico. A duração do período de tempo da amostra deve ser suficientemente longa para incluir períodos de diferentes condições do mercado, incluindo as tendências de elevação, as tendências de baixa e as negociações vinculadas ao intervalo. Realizar um teste em apenas um tipo de condição de mercado pode produzir resultados únicos que podem não funcionar bem em outras condições do mercado, o que pode levar a conclusões falsas.


O tamanho da amostra no número de trocas nos resultados do teste também é crucial. Se o número da amostra de negócios for muito pequeno, o teste pode não ser estatisticamente significativo. Uma amostra com muitos negócios durante um período muito longo pode produzir resultados otimizados, em que um número irresistible de negociações vencedoras coalesce em torno de uma condição de mercado específica ou tendência favorável para a estratégia. Isso também pode causar um comerciante para tirar conclusões enganosas.


Mantendo a realidade.


Um backtest deve refletir a realidade na melhor medida possível. Os custos de negociação que, de outra forma, podem ser considerados insignificantes pelos comerciantes, quando analisados ​​individualmente, podem ter um impacto significativo quando o custo agregado é calculado durante todo o período de backtesting. Esses custos incluem comissões, spreads e derrapagens, e podem determinar a diferença entre se uma estratégia comercial é lucrativa ou não. A maioria dos pacotes de software de backtesting incluem métodos para explicar esses custos.


Talvez a métrica mais importante associada ao backtesting seja o nível de robustez da estratégia. Isso é conseguido comparando os resultados de um teste de retorno otimizado em um período de tempo de amostra específico (referido como na amostra) com os resultados de um backtest com a mesma estratégia e configurações em um período de tempo de amostra diferente (referido como out - de-amostra). Se os resultados forem igualmente rentáveis, a estratégia pode ser considerada válida e robusta e está pronta para ser implementada em mercados em tempo real. Se a estratégia falhar em comparações fora da amostra, então a estratégia precisa de um desenvolvimento adicional, ou deve ser abandonada por completo.


QuantStart.


Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo bem informado de mentalistas quant pronto para responder suas perguntas comerciais mais importantes.


Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.


Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.


Por Michael Halls-Moore em 26 de abril de 2018.


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 / intercâmbio. 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 backtesting e depois descreverei os conceitos básicos de como é realizado. Então, elucidaremos os vícios que abordamos no Guia do Iniciante de Negociação Quantitativa. Em seguida, apresentarei uma comparação das várias opções de software de backtesting disponíveis.


Em artigos subsequentes, analisaremos os detalhes das implementações da estratégia que muitas vezes são mal mencionadas ou ignoradas. Também consideraremos como tornar o processo de backtesting mais realista, incluindo as idiossincrasias de uma troca comercial. Então discutiremos 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 é Backtesting?


A negociação algorítmica se distingue de outros tipos de classes de investimento porque podemos fornecer expectativas mais confiáveis ​​sobre o desempenho futuro do desempenho passado, como conseqüência da abundante disponibilidade 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 idéia, embora seja claro que o "diabo está 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. Backtesting nos fornece outro mecanismo de filtração, pois podemos eliminar estratégias que não atendem às nossas necessidades de desempenho. Modelagem - Backtesting nos permite (com segurança!) Testar novos modelos de certos fenômenos do mercado, como custos de transação, roteamento de ordens, latência, liquidez ou outros problemas de microestrutura de mercado. Otimização - Embora a otimização da estratégia esteja repleta de preconceitos, 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 sua performance. Verificação - Nossas estratégias geralmente são obtidas externamente, através do nosso pipeline estratégico. 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 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 uma estratégia de forma direta. Em geral, à medida que a frequência da estratégia aumenta, torna-se mais difícil modelar corretamente os efeitos da 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 ultra alta frequência.


Infelizmente, o backtesting está repleto de preconceitos de todos os tipos. Nós abordamos algumas dessas questões em artigos anteriores, mas agora vamos discutir em profundidade.


Biases que afetam a estratégia Backtests.


Existem muitos preconceitos que podem afetar o desempenho de uma estratégia pré-testada. Infelizmente, esses distúrbios tendem a inflar o desempenho ao invés de prejudicar. Assim, você sempre deve considerar um backtest como um limite superior idealizado sobre o desempenho real da estratégia. É quase impossível eliminar os vícios da negociação algorítmica, pelo que é nosso trabalho minimizá-los da melhor forma possível para 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.


Bias de otimização.


Este é provavelmente o mais insidioso de todos os preconceitos de backtest. Isso 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 do backtest seja muito atraente. No entanto, uma vez que o desempenho da estratégia pode ser marcadamente diferente. Outro nome para este viés é "ajuste de curva" ou "viés de snooping de dados".


O viés de otimização é difícil de eliminar, pois 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 ao 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 mitigar 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 de pesquisa altamente ativa. 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 prospectivo é introduzido em um sistema backtesting quando os dados futuros são incluídos acidentalmente em um ponto na simulação onde esses dados não estarão realmente 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 favorável 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 comercial que os use.


Tal como acontece com o viés de otimização, é preciso ter o cuidado de evitar sua introdução. Muitas vezes, é a principal razão pela qual as estratégias de negociação apresentam um desempenho inferior ao de seus efeitos negativos significativamente na "negociação ao vivo".


Viés de sobrevivência.


O viés de sobrevivência é um fenômeno particularmente perigoso e pode levar a desempenho significativamente inflacionado para determinados 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 apenas consideram aqueles que "sobreviveram" até o momento 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 o sucesso deles. Na verdade, este é apenas outro caso específico de viés prospectivo, já que as futuras informações estão sendo incorporadas na análise passada.


Existem duas maneiras principais de mitigar o viés de sobrevivência na estratégia de backtests:


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 viés de sobrevivência livre, e isso é comumente usado por muitos comerciantes de algo 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. Pode-se também começar a construir um conjunto de dados pessoais sem sobrevivência, coletando dados do ponto atual. Após 3-4 anos, você terá um sólido conjunto de dados de ações de sobrevivência e tendenciosidade com o qual voltar a testar outras estratégias.


Vamos agora considerar certos fenômenos psicológicos que podem influenciar o seu desempenho comercial.


Tolerância de 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. Tem vários nomes, mas eu decidi chamá-lo de "viés de tolerância psicológica" porque ele capta a essência do problema. Ao criar backtests ao longo de um período de 5 anos ou mais, é fácil analisar uma curva de equidade tendencialmente ascendente, calcular o retorno anual composto, o índice Sharpe e até mesmo as características de retirada e ficar satisfeito com os resultados. Como exemplo, a estratégia pode ter uma redução relativa máxima de 25% e uma duração máxima de retirada de 4 meses. Isso não seria atípico para uma estratégia de impulso. É 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 as retiradas históricas de 25% ou mais ocorrerem nos backtests, então, com toda a probabilidade, você verá períodos de rebaixamento similar na negociação ao vivo. Esses períodos de retração são psicologicamente difíceis de suportar. Tenho observado de primeira mão o que pode ser um alongamento prolongado, em um ambiente institucional, e não é agradável - mesmo que os backtests sugerem que tais períodos ocorrerão. A razão pela qual eu chamo de "viés" é que, muitas vezes, uma estratégia que, de outra forma, seria bem-sucedida, é interrompida na negociação durante os períodos de redução prolongada e, portanto, levará a um desempenho inferior significativo 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 takeaway é garantir que, se você ver retrações 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 precisará perseverar para alcançar a rentabilidade mais uma vez.


Pacotes de software para backtesting.


A paisagem do software para teste de estratégia é vasta. As soluções variam de software sofisticado de grau institucional totalmente integrado até linguagens de programação como C ++, Python e R, onde quase tudo deve ser escrito a partir do zero (ou "plugins" adequados 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 escolha de software:


Habilidade de programação - A escolha do ambiente será, em grande parte, reduzida a sua capacidade de programar o software. Eu argumentaria que estar no controle da pilha total terá um maior efeito em sua P & L de longo prazo do que a terceirização, tanto quanto possível, para o software do fornecedor. Isso deve-se ao risco negativo de ter erros ou idiossincrasias externas que você não conseguiu consertar no software do fornecedor, o que de outra forma seria facilmente corrigido se você tivesse mais controle sobre sua "stack de tecnologia". Você também quer um ambiente que alcance o equilíbrio certo entre produtividade, disponibilidade da 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 corretores interativos fornecem uma API que é 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 recortados para uma grande combinação de números ou complexidade matemática. O Excel é uma dessas peças de software. Embora seja bom para estratégias mais simples, não pode realmente lidar com inúmeros recursos ou algoritmos mais complicados, com rapidez. Minimização de polarização - Uma determinada peça de software ou dados se presta mais aos viés 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 do Desenvolvimento - Não devemos passar meses e meses implementando um mecanismo de back-test. A prototipagem só deve demorar algumas semanas. Certifique-se de que o seu software não está impedindo o seu progresso em grande medida, apenas para obter alguns pontos percentuais adicionais 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á presumindo a otimização do kernel do Linux e o uso de FPGA para esses domínios, que está fora do escopo deste artigo! Custo - Muitos dos ambientes de software que você pode programar estratégias de negociação algorítmicas são totalmente gratuitos e de código aberto. Na verdade, muitos hedge funds utilizam software de código aberto para todas as suas plataformas de troca de algo. Além disso, o Excel e o MATLAB são relativamente baratos e existem até alternativas gratuitas para cada um.


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.


1.000 USD para uma licença.


Estratégias diferentes exigirão diferentes pacotes de software. As estratégias HFT e UHFT serão escritas em C / C ++ (estes dias são muitas vezes realizadas em GPUs e FPGAs), enquanto as estratégias de equidade direcional de baixa freqüência são fáceis de implementar na TradeStation, devido à natureza "tudo em um" da software / corretagem.


Minha preferência pessoal é para o Python, pois fornece o grau certo de personalização, velocidade de desenvolvimento, capacidade de teste e velocidade de execução para minhas necessidades e estratégias. Se eu precisar de algo mais rápido, posso "entrar" em C ++ diretamente dos meus programas Python. Um método preferido por muitos comerciantes quant é prototar suas estratégias em Python e depois converter as seções de execução mais lentas em C ++ de maneira iterativa. Eventualmente, todo o algo está escrito em C ++ e pode ser "deixado sozinho para trocar"!


Nos próximos artigos sobre backtesting, analisaremos algumas questões específicas relacionadas à implementação de um sistema de backtesting de negociação algorítmica, bem como a forma de incorporar os efeitos das trocas comerciais. Vamos discutir a medida de desempenho da estratégia e finalmente concluir com uma estratégia de exemplo.


Apenas iniciando o comércio quantitativo?


3 razões para se inscrever para a lista de e-mails QuantStart:


1. Quant Trading Lessons.


Você terá acesso instantâneo a um curso de e-mail gratuito de 10 partes, repleto de sugestões e dicas para ajudá-lo a começar a negociação quantitativa!


2. Todo o conteúdo mais recente.


Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.


Real, dicas de negociação viáveis, sem tonturas.


Pioneering Tomorrow's Trading.


Pesquisa, Backtest e comércio de seus investimentos.


Inscreva-se gratuitamente.


Como funciona?


Construa Algoritmos em um ID do navegador,


Usando estratégias de modelos e dados gratuitos.


Desenhe e teste sua estratégia em nossos dados gratuitos e, quando estiver pronto, implemente-o ao vivo para sua corretora. Code em várias linguagens de programação e aproveite nosso cluster de centenas de servidores para executar o backtest para analisar sua estratégia em ações, FX, CFD, Opções ou Futures Markets.


QuantConnect é a próxima revolução no comércio quantitativo, combinando computação em nuvem e acesso aberto a dados.


Velocidade sem paralelo.


Aproveite o nosso farm de servidores para velocidades institucionais do seu computador desktop. Você pode iterar em suas idéias mais rápido do que você já fez antes.


Massive Data Library.


Nós fornecemos uma enorme biblioteca gratuita de dados de resolução de carrapatos de 400 TB que cobre os US Equities, Options, Futures, Fundamentals, CFD e Forex desde 1998.


Execução de classe mundial.


Nossos algoritmos de negociação ao vivo estão co-localizados junto aos servidores do mercado em Equinix (NY7) para uma execução rápida resiliente, segura e fácil de iluminação para os mercados.


Tem algumas ótimas ideias? Vamos testá-lo! Comece seu algoritmo.


Qualidade profissional, Open Data Library.


Estratégias de design com nossa biblioteca de dados cuidadosamente com curadoria, abrangendo os mercados globais, do tico à resolução diária. Os dados são atualizados quase que diariamente, para que você possa testar os dados mais recentes possíveis e o viés de sobrevivência livre.


Oferecemos dados de ticks de ações que retornam a janeiro de 1998 para cada símbolo negociado, totalizando mais de 29 mil ações. O preço é fornecido pela QuantQuote.


Além do que, além do mais; temos dados fundamentais da Morning Star para os 8.000 símbolos mais populares para mais de 900 indicadores desde 1998.


Crypto, Forex e amp; CFD.


Nós lideramos o mundo com a negociação algorítmica criptográfica no GDAX além de oferecer 100 contratos de divisas e 70 CFD cobrindo todas as principais economias fornecidas pela FXCM e pela OANDA. Todos os dados estão disponíveis na resolução do carrapato, começa em abril de 2007 e é atualizado diariamente.


Nós oferecemos o comércio de trocas de futuros e citar dados de janeiro de 2009 para o presente, para cada contrato negociado em CME, COMEX e GLOBEX. Os dados são atualizados semanalmente e são fornecidos pela AlgoSeek.


Oferecemos opções de negociação e cotação até resolução de minutos, para cada opção negociada na ORPA desde 2007, cobrindo milhões de contratos. Os dados são atualizados dentro de 48 horas e são fornecidos pela AlgoSeek.


Baixe dados FX e CFD gratuitamente - Explore nossa biblioteca de dados Inscreva-se hoje.


Colaboração em equipe.


Encontre novos amigos na comunidade e colabore com nosso recurso de codificação de equipe! Compartilhe projetos e veja seu código instantaneamente à medida que eles escrevem. Você pode até mesmo conceder acesso ao vivo e controlar o algoritmo ao vivo em conjunto. Use nossa mensagem instantânea interna para encontrar futuros membros da equipe para unir forças!


Propriedade Intelectual Segura.


Nosso foco é dar-lhe a melhor plataforma de negociação algorítmica possível e proteger sua valiosa propriedade intelectual. Nós sempre seremos um fornecedor de infraestrutura e tecnologia primeiro. Quando você estiver pronto para negociação ao vivo, nós o ajudaremos a executar com seu corretor de escolha.


Execute através de corretores líderes.


Nós nos integramos com corretoras líderes mundiais para fornecer a melhor execução e taxas mais baixas para a comunidade.


OPÇÕES DE FUTUROS FOREX DE EQUITY.


$ 1 MÍNIMO, $ 0.005 / COMPARTILHAR.


A indústria titan Interactive Brokers oferece acesso a mercado de ações, futuros e opções com uma conta e algumas das taxas mais baixas do setor.


De & pound; 0,07 por lote.


Com baixo acesso direto e direto ao mercado, a FXCM oferece acesso a FX com taxas transparentes, excelentes preenchimentos e um pequeno depósito de abertura.


Taxas de spread.


Fundada em 1995, a OANDA fornece acesso a FX e CFD's com taxas de spread abrangendo todos os principais mercados globais.


Trocas Comerciais Crypto.


Comércio Bitcoin, Etherum e LiteCoin em uma troca totalmente regulamentada nos EUA.


FOREX CFD EQUITY CRYPTO.


Negociação de papel.


Com QuantConnect & trade; Paper Trading, você pode simular condições de mercado ao vivo, taxas de modelagem e pedidos preenchidos para testar sua estratégia antes de colocá-la ao vivo.


World Leading Brokerage Execution Trade Live.


Corretoras suportadas.


Graças aos nossos parceiros de corretagem, oferecemos negociação ao vivo gratuita para os clientes da corretora FXCM Brokerage e OANDA Brokerage, permitindo que você faça o backtest e comercialize sua estratégia totalmente gratuitamente.


Estratégias conduzidas por eventos.


Projetar um algoritmo não poderia ser mais fácil. Existem apenas duas funções necessárias e cuidamos de tudo o resto! Você apenas inicializa () sua estratégia e lida com os eventos de dados solicitados.


Você pode criar novos indicadores, classes, pastas e arquivos com um compilador C # completo baseado na web e auto-completar. Estamos empenhados em oferecer-lhe a melhor experiência de design de algoritmo possível.


Aproveite seu potencial.


Opt in users pode ter suas estratégias apresentadas aos clientes hedgefund em um painel de estratégia de estratégia transparente. As estratégias são validadas pelo backtesting e negociação ao vivo da QuantConnect, dando-lhe uma revisão neutra do código de terceiros.


Os hedgefunds interessados ​​podem contatá-lo diretamente através da QuantConnect para oferecer emprego ou financiamento para sua estratégia!


Junte-se a nossa comunidade.


Temos uma das maiores comunidades comerciais quantitativas do mundo, construindo, compartilhando e discutindo estratégias através da nossa comunidade. Converse com algumas das mentes mais brilhantes do mundo enquanto exploramos novos domínios de ciência, matemática e finanças.


Como avaliar, fazer backtest e validar uma estratégia de negociação.


Ultimamente tenho trabalhado com backtesting várias estratégias que eu invento ou encontrei em sites como o TradingView. Eu vou acompanhar o processo de como eu:


Identificar uma estratégia possível Encontrar uma variedade de ações para executar através de um backtest estruturado Execute o próprio teste real.


No final desses 3 passos, posso identificar o quão bem-sucedido é a estratégia e se eu deveria usá-lo para negociação ao vivo e (aproximadamente) quanto eu poderia esperar fazer em um determinado período de tempo com base em um número determinado de negócios.


Identificando a Estratégia.


Eu identifiquei essa estratégia juntada por Chris Moody no TradingView. É chamado de Williams VIX Fix e é baseado nos escritos de Larry Williams em torno de um cálculo sintético Vix. Se você quiser saber mais sobre o VIX, a Wikipedia é um ótimo lugar para começar.


Depois de fazer alguns testes visuais em várias moedas, desenvolvi um sistema de negociação simples que queria testar. As regras deste sistema são simples:


Digite um longo comércio para todos os sinais de entrada agressivos ou filtrados gerados pelo sistema, a menos que o RSI Stochastic seja próximo ou superior a 80 (o RSI estocástico é um indicador livremente disponível no TradingView e em uma série de outras plataformas de gráficos financeiras). Sair do comércio quando o RSI está acima de 80 e a linha K atravessa a linha D Se ocorrerem múltiplos sinais, adicione a posição atual assumindo que as condições em # 1 acima são atendidas (por exemplo, se houver duas entradas filtradas em dias concorrentes, uma delas compraria o mesmo # de ações no dia 2 como no dia 1)


Eu não levei em consideração Money Management para as regras, pois variará para cada comerciante individual.


Encontrando Estoques para Backtest.


Utilizei o Mapa de FinViz e a Unicorn Bay para encontrar uma gama de moedas para fazer backtest. Meus critérios para selecionar moedas são os seguintes:


Teste as moedas em setores e indústrias (para evitar testes contra, digamos, todas as ações de tecnologia durante anos que as ações de tecnologia viram um boom) Teste pelo menos 2 moedas altamente dissimilares / não correlacionadas para ver como a estratégia funciona contra conjuntos de dados muito diferentes.


As moedas que eu resolvi fazer foram:


Além disso, testei dois títulos altamente não correlacionados, identificados a partir da página de Ativos correlacionados mais ou menos da Unicorn Bay:


Correndo o Backtest.


Em seguida, executei isso através do TradingSim, um simulador de negociação onde você pode praticar estratégias reais usando uma conta simulada. Usando este software, você pode abrir posições em ações usando uma conta falsa e negociar como se fossem ações reais. A única desvantagem é que o backtest é de apenas 2 anos.


Eu continuei a executar o backtest para cada estoque durante os 2 anos completos com uma conta falsa de US $ 10.000. Para cada comércio, eu coloquei.


20% do capital em risco (o que não é necessariamente o que você faria no mundo real, mas queria amplificar os resultados neste caso). Os resultados foram promissores. Ao longo de um período de 2 anos, cada ação fez um retorno de saúde. Os negócios individuais estão listados aqui.


Mais backtesting.


Embora esses resultados iniciais tenham sido promissores, 2 anos de testes não foram suficientes. Para aumentar o estresse, testei-o, codifiquei uma Estratégia em TradingView com base nas regras do meu sistema comercial. Você pode encontrar o sistema aqui. Você pode vê-lo e modificá-lo se desejar no TradingView.


Os dados do TradingView remontam muito mais longe (pelo menos todo o caminho até 1968 para muitas ações), então testei cada uma das 13 ações novamente usando a mesma conta virtual de US $ 10.000 para ver se eles acabaram com lucro.


Apenas 1 dos 13 pares não saiu lucrativo (GS - Goldman Sachs). Eu decidi descobrir por que isso era, e se houvesse algum padrão que pudesse ser entendido sobre qualquer estoque que talvez não fosse útil para usar esta estratégia.


Eu usei o criador do TradingView para testar a estratégia em uma variedade de ações de menor volatilidade, e encontrei uma série de candidatos que parecem adequados para o teste para frente devido ao seu alto fator de lucro. Uma lista crescente de ações que apresentam alto potencial de lucro com esta estratégia é visível aqui. Abaixo estão algumas capturas de tela de alguns dos desempenhos de estoque anteriores.


Mais uma vez, nada disso é dizer que simplesmente colocar seu dinheiro todo na AAPL em 2004 e simplesmente manter não é uma ótima estratégia. Você pode fazer isso, bem como ter lucros previsíveis, mesmo através de mergulhos do mercado, como em 2001 e 2008 e, através de alguns compostos, ganhar dinheiro digno com estratégias como esta.


Realizar o teste de uma série de ações usando o Robinhood e mostrar resultados positivos, depois aumentar as contribuições de capital. Codificar a estratégia / algoritmo em Quantopian e ganhar suporte / capital para negociar essa estratégia. Encontre / desenvolva outras estratégias adequadas para negociação.


Disclaimer: Tudo isso é especulativo e não é considerado um conselho de investimento definitivo. Eu não sou responsável por lucros ou perdas que experimente usar esta estratégia, seja em formato parcial ou completo. Eu não sou um profissional de investimento ou corretor. Faça mais pesquisas antes de usar qualquer uma das estratégias descritas nesta publicação.


O crédito para Williams VIX FIX estratégia vai para Chris Moody.


Estratégia usada no TradingView disponível aqui.


Lista de tickers de ações que mostram excelentes retornos e curvas de ações disponíveis aqui.


Ao bater palmas mais ou menos, você pode nos indicar quais são as histórias que realmente se destacam.


Timothy Jaeger.


Experiente UX Designer, Trader (Opções, Stocks, Forex), HODLer (Crypto), Futurista. Interessado em coisas e coisas.

No comments:

Post a Comment