Backtesting trading sistemático


Backtesting trading sistemático
O QuantDesk é uma solução completa de ponta a ponta para um fundo quantitativo de qualquer tamanho. Inclui OpenQuant IDE, QuantRouter (servidor de execução de algo com replicação de feed, consolidação, agregação e roteamento de pedidos inteligentes), QuantBase (servidor de dados de mercado com captura de feed em tempo real e gerenciamento de dados históricos centralizado), QuantTrader (mecanismo de implantação de produção para estratégias de negociação automatizadas desenvolvidas com OpenQuant) e QuantController, um aplicativo de servidor que complementa o QuantDesk para permitir um gerenciamento eficiente da arquitetura de negociação distribuída da SmartQuant.
Claro, ainda passamos muito tempo experimentando, tentando e testando diferentes estratégias. Ter um bom ambiente de desenvolvimento não permite que você ignore esse passo. A vantagem real de uma estrutura bem projetada é cortar o tempo entre testes e produção ao mínimo, e na natureza escalonável da infra-estrutura, que pode crescer com a empresa de gerenciar um pequeno capital de semente para níveis verdadeiramente institucionais. Com um sistema como este, os gerentes emergentes podem se sentir em condições equitativas ao negociar no mesmo mercado como concorrentes muito maiores e podem perceber plenamente as vantagens inerentes de ser ágil e adaptável.

Backtesting trading sistemático
Backtesting está aplicando uma estratégia para dados históricos para ver "como você teria feito".
O backtesting do portfólio permite que você crie e teste estratégias em vários símbolos.
Tanto o Multicharts como o Tradestation 2000i estão disponíveis para backtesting.
Otimização da Estratégia de Negociação.
Uma estratégia de negociação é criada tomando conceitos comerciais, idéias e observações sobre o comportamento histórico do mercado e implementando-os em um sistema de comércio. Sempre que você encontrar uma solução ótima para fazer qualquer coisa na vida cotidiana, você está realizando otimização implícita. Assim, as pessoas geralmente usam a otimização do sistema de negociação ao criar estratégias comerciais também. A otimização testa muitas combinações de entrada possíveis para encontrar as que resultam no melhor desempenho.
O que é otimização de estratégia?
A otimização de estratégia é a busca de parâmetros ótimos para critérios predefinidos. Ao testar uma série de valores de entrada de estratégia, a otimização ajuda a selecionar valores que correspondem ao desempenho ideal da estratégia com base em dados históricos.

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 Frank Smietana em 18 de julho de 2017.
Neste artigo, Frank Smietana, um dos colaboradores experientes do QuantStart, descreve a paisagem do software de backtesting de código aberto da Python e fornece conselhos sobre quais framework de backtesting são adequados para suas próprias necessidades de projeto.
Backtesting é indiscutivelmente a parte mais crítica do processo de produção da Sistemática de Negociação Sistemática (STS), sentado entre o desenvolvimento da estratégia e a implantação (negociação ao vivo). Se uma estratégia é defeituosa, um teste rigoroso provavelmente expõe isso, evitando que uma estratégia de perda seja implantada.
Uma série de capacidades relacionadas se sobrepõem com backtesting, incluindo simulação comercial e negociação ao vivo. O Backtesting usa dados históricos para quantificar o desempenho STS. Os simuladores de negociação levam backtesting um passo adiante, visualizando o desencadeamento de trades e desempenho de preços em uma base bar-a-bar. A negociação simulada / ao vivo implementa um STS testado em tempo real: negociações de sinalização, gerando ordens, roteando ordens para corretores e mantendo as posições à medida que as ordens são executadas.
A maioria dos quadros vai além do backtesting para incluir algumas capacidades de negociação ao vivo. Isso é conveniente se você deseja implantar a partir de sua estrutura de backtesting, que também funciona com o seu fornecedor preferido e fontes de dados. Quantopian / Zipline vai um passo adiante, fornecendo uma solução totalmente integrada de desenvolvimento, backtesting e implantação.
A comunidade Python é bem servida, com pelo menos seis estruturas de backtesting de código aberto disponíveis. No entanto, estão em vários estágios de desenvolvimento e documentação. Se você gosta de trabalhar em uma equipe construindo uma estrutura de backtesting de código aberto, confira seus reembolsos Github.
Antes de avaliar quadros de teste, vale a pena definir os requisitos do seu STS.
Qual classe de ativos você está negociando? Embora a maioria dos frameworks ofereça suporte aos dados da US Equities via YahooFinance, se uma estratégia incorporar derivados, ETFs ou títulos de EM, os dados precisam ser importados ou fornecidos pela estrutura. As coberturas de classe de ativos vão além dos dados. O framework pode lidar com futuros e opções de tamanho finito e gerar negociações de roll-over automaticamente? E quanto aos mercados ilíquidos, quão realista é uma suposição ao executar grandes encomendas?
Qual a frequência e o detalhe dos dados do seu STS? Um sistema de negociação que exige que cada marca ou lance / peça tenha um conjunto muito diferente de problemas de gerenciamento de dados do que um intervalo de 5 minutos ou horário. Os hedge funds e as lojas HFT investiram significativamente na construção de quadros robustos e escaláveis ​​de backtesting para lidar com esse volume e freqüência de dados. Algumas plataformas fornecem um conjunto rico e profundo de dados para várias classes de ativos, como ações da S & P, com resolução de um minuto.
Qual (s) tipo (s) de ordem o seu STS requer? No mínimo, o limite, as paradas e o OCO devem ser suportados pela estrutura.
Nível de suporte e amp; documentação necessária. Os quadros de estágio inicial têm escassa documentação, poucos têm suporte além de placas comunitárias.
Os Componentes de um Quadro de Teste de Backtesting.
Dados e aquisição de STS: os componentes de aquisição consomem o arquivo de script / definição STS e fornecem os dados necessários para testes. Se a estrutura exige que qualquer STS seja recodificado antes do teste posterior, a estrutura deve suportar funções enlatadas para os indicadores técnicos mais populares para acelerar o teste STS. Os usuários determinam o tempo de um período histórico para fazer backtest com base no que o framework fornece, ou o que eles são capazes de importar.
O teste de desempenho aplica a lógica STS à janela de dados históricos solicitada e calcula uma ampla gama de riscos & amp; métricas de desempenho, incluindo redução máxima, taxas Sharpe e Sortino. A maioria dos frameworks suporta um número decente de capacidades de visualização, incluindo curvas de equidade e estatísticas decimais.
A otimização tende a exigir a maior parte dos recursos de computação no processo STS. Se o seu STS precisar de otimização, concentre-se em uma estrutura que suporte processamento escalável distribuído / paralelo.
No contexto de estratégias desenvolvidas usando indicadores técnicos, os desenvolvedores de sistemas tentam encontrar um conjunto ideal de parâmetros para cada indicador. Mais simplesmente, a otimização pode achar que um fluxo de média móvel de 6 e 10 dias STS acumulou mais lucro sobre os dados de teste históricos do que qualquer outra combinação de períodos de tempo entre 1 e 20. Já com este exemplo trivial, 20 * 20 = 400 combinações de parâmetros devem ser calculado & amp; classificado.
No contexto de um portfólio, a otimização procura encontrar a ponderação ideal de cada ativo na carteira, incluindo os instrumentos em curto e alavancado. Em uma base periódica, o portfólio é reequilibrado, resultando na compra e venda de participações da carteira, conforme necessário, para alinhar com os pesos otimizados.
O dimensionamento de posição é um uso adicional da otimização, ajudando os desenvolvedores de sistemas a simular e analisar o impacto da alavancagem e dimensionamento de posição dinâmico no STS e no desempenho do portfólio.
Seis quadros de teste para o Python.
As capacidades padrão das plataformas open source Python backtesting parecem incluir:
Gerenciamento de eventos, flexível e irrestrito Coleta decente de indicadores técnicos pré-definidos Captação de desempenho padrão / visualização / geração de relatórios.
PyAlgoTrade.
PyAlgoTrade é uma estrutura de backtesting mutuamente documentada, juntamente com capacidades de negociação em papel e ao vivo. O suporte a dados inclui Yahoo! Finanças, Google Finance, NinjaTrader e qualquer tipo de série de tempo baseada em CSV, como Quandl. Os tipos de pedidos suportados incluem Market, Limit, Stop e StopLimit.
O PyAlgoTrade suporta a negociação Bitcoin via Bitstamp e o gerenciamento de eventos do Twitter em tempo real.
bt - Backtesting para Python.
bt "visa promover a criação de blocos de lógica de estratégia facilmente testáveis, reutilizáveis ​​e flexíveis para facilitar o rápido desenvolvimento de estratégias comerciais complexas".
O framework é particularmente adequado para testar STS com base em portfólio, com algos para ponderação de ativos e reequilíbrio de portfólio. A modificação de uma estratégia para executar em diferentes freqüências de tempo ou pesos de ativos alternativos envolve um mínimo de ajuste de código. bt é construído em cima do ffn - uma biblioteca de funções financeiras para Python.
Backtrader.
Esta plataforma está excepcionalmente bem documentada, com um blog acompanhante e uma comunidade on-line ativa para postar perguntas e solicitações de recursos. O Backtrader suporta uma série de formatos de dados, incluindo arquivos CSV, Pandas DataFrames, iteradores de incandescência e feeds de dados em tempo real de três corretores. Esses feeds de dados podem ser acessados ​​simultaneamente e podem até representar diferentes cronogramas. Os corretores suportados incluem Oanda para negociação de Forex e negociação de classes de ativos múltiplos através de Interactive Brokers e Visual Chart.
Pysystemtrade.
O desenvolvedor da Pysystemtrade, Rob Carver, tem uma ótima postagem em discussão sobre o porquê ele se propôs a criar mais uma nova estrutura de teste do Python e os argumentos para e contra o desenvolvimento do framework. A estrutura backtesting para pysystemtrade é discutida no livro Rob, "Systematic Trading".
Pysystemtrade lista uma série de recursos de roteiro, incluindo um testador de back-up completo, que inclui técnicas de otimização e calibração e negociação de futuros totalmente automáticos com Interactive Brokers. Os contribuidores da fonte aberta são bem-vindos.
Zipline é um simulador de negociação algorítmica com recursos de papel e negociação ao vivo. Acessível através da interface do navegador IPython baseado no navegador, a Zipline fornece uma alternativa fácil de usar para ferramentas de linha de comando. Suportado e desenvolvido por Quantopian, Zipline pode ser usado como uma estrutura de backtesting autônomo ou como parte de um ambiente completo de desenvolvimento, teste e implantação de STS, de Aosta / Zipline STS. A Zipline fornece 10 anos de dados de estoque históricos históricos de última hora e uma série de opções de importação de dados.
QSTrader é uma estrutura de backtesting com capacidades de negociação ao vivo. O fundador da QuantStart, Michael Halls-Moore, lançou o QSTrader com a intenção de construir uma plataforma robusta e escalável o suficiente para atender às necessidades dos fundos de hedge quantitativos institucionais, bem como aos comerciantes quantos de varejo. O QSTrader atualmente suporta dados de resolução "barra" da OHLCV em várias escalas de tempo, mas permite que dados de marca sejam usados.
Tanto o backtesting como o comércio ao vivo são completamente orientados para eventos, simplificando a transição das estratégias da pesquisa para o teste e, finalmente, a negociação ao vivo. A estratégia básica / código do portfólio geralmente é idêntico em ambas as implementações.
O principal benefício do QSTrader é em sua modularidade, permitindo uma ampla personalização de código para aqueles que possuem requisitos específicos de gerenciamento de risco ou portfólio.
Abraçando o Backtest.
É a natureza humana se concentrar na recompensa de desenvolver um STS (esperançosamente lucrativo), então apressar-se a implantar uma conta financiada (porque esperamos), sem gastar tempo e recursos suficientes para testar completamente a estratégia. Mas backtesting não é apenas um gatekeeper para nos impedir de implementar estratégias erradas e perder capital comercial, também fornece uma série de diagnósticos que podem informar o processo de desenvolvimento STS. Por exemplo, testando um STS idêntico em dois intervalos de tempo diferentes, compreendendo a redução máxima de uma estratégia no contexto de correlações de ativos e criando portfólios mais inteligentes por backtesting de alocações de ativos em várias regiões geográficas.
Em futuras postagens, iremos abordar frameworks de backtesting para ambientes que não sejam Python e o uso de várias técnicas de amostragem como bootstrapping e jackknife para testar modelos de negociação preditivos.
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.

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 espera. 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.

Backtesting trading sistemático
Antes de responder ainda mais, quero fazer uma pequena declaração de responsabilidade que sou co-fundador da Upstox, uma corretora de desconto e Diretor de Trade Academy, onde ensinamos usuários a negociar.
Eu não sou programador. Eu nunca aprendi a programar (C ++, Java, python, etc.) e, depois de um certo ponto, conscientemente decidiu não aprender a programar. No entanto, eu passo 2 horas por dia para testar estratégias.
Como eu faço isso? Microsoft Excel.
Quando eu digo às pessoas que eu backtest através do Excel, elas não podem acreditar nisso. Por que eu usaria o Excel para desenvolver e backtest qualquer coisa quando isso pode ser feito programaticamente?
Por causa do fluxo. Qualquer quantia irá dizer-lhe que construir, fazer back-testing, refinar e desenvolver exige que você esteja em um ótimo estado de espírito. Estar no fluxo, na minha opinião, é o aspecto mais importante para a construção de uma estratégia com sucesso.
Uma vez que leva tempo para codificar uma estratégia no Excel, isso lhe dá tempo para pensar. Como você pode ver os números na sua frente, você pode visualizar a estratégia que está sendo construída. E porque você pode ver as coisas visualmente, você pode fazer mudanças rápidas para otimizar e revisar sua estratégia. Em outras palavras, back-testing através do Excel permite que você seja ágil.
Concedido, a programação via Excel exige uma tremenda paciência. E uma vez que você encontrou uma boa prova de conceito, você pode testar sua hipótese em um conjunto de dados muito maior através de uma rota algorítmica e programática. Mas, sendo dito, ainda sou um grande fã do Excel.
Em caso de dúvida, K. I.S. S. Mantenha isso simples, idiota!
Questões relacionadas Mais respostas abaixo.
Em vez de lhe contar a melhor ferramenta ou processo que você pode usar para fazer backtesting, deixe-me concentrar-se nos maiores erros que você precisa evitar para fazer um backtest confiável.
Estes são alguns dos fatores mais importantes que você precisa ter em mente quando testar estratégias de negociação de ações -
Sobreposição de dados: este é, de longe, o maior erro que a maioria das pessoas faz na busca de criar uma estratégia que dê resultados espetaculares. Ao criar a estratégia, se você começar a ajustar seus parâmetros de forma a maximizar os retornos, então essa estratégia provavelmente falhará miseravelmente em condições de vida. Existem duas maneiras de superar isso: testes fora da amostra e criação de estratégias baseadas em lógica ao invés de ajustes de parâmetros de entrada. Compartilhamento avançado: isso acontece quando você usa dados para gerar sinais que de outra forma não estariam disponíveis nesse momento no passado. Por exemplo, se o final do ano financeiro de uma empresa é março e você usa seus dados de ganhos para o ano anterior em 1º de abril, é muito provável que a empresa não anunciasse dados antes de maio ou junho. Isso resultaria em um viés voltado para o futuro. Sobrevida de sobrevivência: este é um daqueles erros difíceis de notar. Digamos que você tenha uma estratégia que negocia com uma lista de 500 ações de pequena capitalização com base em alguns indicadores técnicos. As possibilidades são que se você tentar obter dados de preços históricos de 10 anos para esses 500 estoques para o seu teste de retorno, você não incluirá os dados para todos os estoques que foram retirados da lista nesse período de 10 anos. Quando você testar sua estratégia, você não contabilizaria possíveis negócios que teriam sido gerados em qualquer uma dessas ações "ruins" se você realmente tivesse executado essa estratégia durante esse período. Concentrando-se puramente em retornos: há vários parâmetros que você precisa considerar para julgar a qualidade de uma estratégia. Concentrar-se puramente em retornos pode levar a problemas importantes. Por exemplo, se a Estratégia A oferecer retorno de 10% ao longo de um determinado período, com uma redução máxima de -2%, e a estratégia B dá retornos de 12% com redução de -10%, então B não é claramente uma estratégia superior a A. são outros parâmetros importantes, tais como redução de custos, taxa de sucesso, taxa de compartilhamento, etc. Impacto do mercado, encargos de transação: quando se considera a viabilidade de uma estratégia, é muito importante considerar o possível impacto no mercado do comércio e os custos de transação incorridos . Você pode ser tentado a criar uma estratégia que compre / venda grandes volumes de alguns estoques de baixa liquidez que tendem a dar retornos excepcionais. Mas quando você entra no mercado para executar esta estratégia, uma grande encomenda em um estoque ilíquido irá mover o preço que você não teria tido em conta em seus testes. Além disso, os custos de transação também podem alterar substancialmente os retornos, de modo que você sempre deve analisar os lucros líquidos. Exploração de dados: isso é bastante semelhante ao problema de superposição de dados. "Se você tortura os dados por tempo suficiente, confessará qualquer coisa. "Esta é uma piada comum entre os cientistas de dados que acreditam que, se você gastar tempo suficiente, você pode encontrar um padrão em quase qualquer conjunto de dados! Isso não significa necessariamente que esse padrão seja válido no futuro. Mudança de fundamentos: pode muito bem acontecer que você encontre uma estratégia que desempenhe excepcionalmente bem em dados passados. Mas uma mudança fundamental na dinâmica do mercado pode fazer a mesma estratégia falhar no futuro. É bem sabido que quase qualquer boa estratégia precisa continuar evoluindo com as mudanças nas condições do mercado. Pequeno período de tempo: é crucial testar a estratégia por um período de tempo suficientemente longo e na mudança das condições do mercado. Isto é especialmente verdadeiro para as estratégias de negociação de ações que podem ser excepcionalmente boas em um mercado de touro, mas eliminariam sua conta bancária em um mercado de lado ou urso.
Há muitas outras coisas a serem consideradas quando testar. Mas eventualmente, a única maneira de garantir que uma estratégia funciona em condições de vida é "testá-lo em condições de vida".
(Disclaimer: Eu sou o co-fundador da Tauro Wealth. As visualizações aqui apresentadas são apenas minhas opiniões pessoais e são apenas para fins informativos.)
A Tauro Wealth é uma empresa de tecnologia financeira (Tauro Wealth) que procura resolver os problemas enfrentados pelos investidores de varejo na Índia. Esperamos fornecer soluções globais de investimento a longo prazo em uma fração dos custos tradicionais.
Há alguns corretores que fornecem backtesting aos clientes como parte de sua suíte de software para clientes. No entanto, na maioria das vezes, essas são "caixa preta" no sentido de que você não sabe como os cálculos são feitos.
Em seguida, existem backtesters gratuitos on-line. Mas IMO você obtém o que você paga.
O software autônomo pode ser pesquisado em: Backtesting Software.
A lista inclui software de backtesting incluído nas ferramentas de uma corretora, mas também possui software autônomo.
Se você está negociando para ganhar a vida (seu próprio dinheiro ou de outra pessoa), é minha preferência usar software autônomo.

Comments

Popular Posts