Saturday 11 May 2019

Testando estratégias de negociação em matlab


MatlabTrading Esta publicação é sobre como é importante usar diferentes tipos de métodos de otimização, como algoritmos genéticos e paralelização, para obter resultados mais rápidos. Otimização de Algoritmos Genéticos Apesar do fato de que o princípio do algoritmo genético (evolutivo) é muito bem explicado nos webinars de MathWorks, no entanto, ele é usado apenas para otimizar a escolha de um grupo de estratégia a partir de um conjunto. Este é um bom exemplo do uso desses algoritmos, no entanto, acontece que é necessário estabelecer muitas variáveis ​​com intervalos significativos para uma estratégia, você não passa por uma iteração e a paralelização de processos. Os cálculos podem levar vários dias . Certamente, existem estratégias na fase final de otimização. Quando quase certamente sabemos que a estratégia de negociação é bem sucedida, podemos aguardar vários dias também ou alugar todo o cluster - o resultado pode valer a pena. No entanto, se precisarmos estimar os resultados de uma estratégia volumosa e decidir se vale a pena gastar o tempo, então os algoritmos genéticos podem ser perfeitamente adequados. Nós fornecemos a possibilidade de usar três métodos para otimizar a estratégia em WFAToolbox: Método linear 8211 é um modo usual de classificação em que você verá todos os resultados intermédios (sub-ótimos). Ele fornece a máxima precisão. Método paralelo 8211, todos os kernels da sua CPU serão usados. Não permite ver resultados intermédios, mas acelera significativamente a operação. Ele fornece a máxima precisão durante o aumento da velocidade de computação. O método genético 8211 usa o algoritmo de otimização evolutiva. Permite ver valores sub-óptimos, mas dá o resultado próximo ao melhor. Não é um método muito preciso, mas é suficientemente preciso para a execução inicial da estratégia. Muito rápido. Muitas vezes, nos perguntam se o WFAToolbox - Walk-Forward Analysis Toolbox para MATLAB tem a capacidade de usar o GPU em cálculos. Infelizmente, o GPU não é adequado para todas as tarefas e seu uso é muito específico. Para usá-lo, você precisa ajustar a lógica e o código de cada estratégia para o teste de núcleos gráficos. Infelizmente, devido a tal não-universalidade do método, não se pode usar o GPU no WFAToolbox. Continuando a Parte 2 da discussão de problemas e soluções no teste e análise da estratégia de negociação algorítmica no MATLAB, convido você a ler esta publicação sobre o problema da indisponibilidade da visualização dos processos em soluções de software modernas para testar sistemas de negociação. Visualização do processo de teste Na minha experiência de trabalho, muitas vezes analisei outras plataformas populares para testes de estratégia comercial. Como a TradeStation. MetaStock. Multicartas etc e sempre fiquei surpreso com a pouca atenção dada à visualização do processo de teste. A coisa é que, quando não vemos os resultados dos valores intermédios, sub-ótimos de parâmetros otimizados, muitas vezes jogamos fora o ouro junto com a sujeira. A questão é devido a uma amostragem muito ampla, a estratégia ajusta os parâmetros da maneira como vemos uma estratégia perfeita que falha na vida real ou veja uma ou duas ofertas, que são supostamente as melhores porque foi selecionado esses dados de intervalo de tempo onde a A melhor estratégia de negociação seria buy-and-hold, mas por que outras estratégias são necessárias para a visualização do processo de teste de estratégia de negociação em MATLAB (proposto no webinar). Como resultado, sem ver resultados intermédios, nós precisamos que simpatizar187 mudar os parâmetros para tentar Para obter melhores dados ou assistir em alguns 3D ou 4D (a cor é a 4ª dimensão), conforme proposto nos webinars. A análise de valores nos espaços N-dimensionais pode definitivamente ser uma alternativa, mas tem várias limitações: o que acontece se houver mais de 4 dimensões. Quando você vê quais sinais e em que freqüência aparecem na faixa de preço, você tem quase todos os Representação visual necessária da sua estratégia: a frequência das transacções, a sua rentabilidade (curva de rendimento), a precisão da abertura, a semelhança com outros valores sub-óptimos, etc., que não pode ser dito sobre o desempenho no espaço N-dimensional, onde todas as informações úteis É, de fato, que o valor ótimo não é apenas um, mas há toda uma gama de valores subóptimos em uma ou mais áreas. Ao otimizar uma estratégia na WFAToolbox 8211 Walk-Forward Analysis Toolbox para MATLAB174. Como um novo valor ótimo é encontrado, os sinais de estratégia de negociação no período em amostra e fora da amostra aparecem imediatamente no gráfico, para que você sempre possa controlar o intervalo de opções que você deve atribuir e também pode pausar a otimização Sem esperar o fim do teste, pois fica claro que algo deu errado ou tudo está bem. Hola, meu nome é Igor Volkov. Desenvolvi estratégias de negociação algorítmicas desde 2006 e trabalhei em diversos fundos de hedge. Neste artigo, gostaria de discutir as dificuldades surgidas no caminho do desenvolvedor de estratégias de negociação MATLAB durante testes e análises, bem como oferecer soluções possíveis. Eu tenho usado o MATLAB para testar estratégias de algoritmos desde 2007 e cheguei à conclusão de que esta não é apenas a ferramenta de pesquisa mais conveniente, mas também a mais poderosa porque possibilita o uso de modelos complexos estatísticos e econométricos, redes neurais, Aprendizado de máquina, filtros digitais, lógica difusa, etc., adicionando caixa de ferramentas. O idioma MATLAB é bastante simples e bem documentado, então mesmo um não programador (como eu) pode dominá-lo. Como tudo começou. Foi 2008 (se não me enganei) quando o primeiro webinar sobre negociação algorítmica em MATLAB com Ali Kazaam foi lançado, abrangendo o tópico de otimização de estratégias simples baseadas em indicadores técnicos, etc., apesar de um código bastante 8220chaotic8221, as ferramentas eram interessantes O suficiente para usar. Eles serviram como ponto de partida para pesquisa e aprimoramento de um modelo de teste e análise que permitiria usar todo o poder das caixas de ferramentas e a liberdade das ações do MATLAB durante a criação de suas próprias estratégias comerciais, ao mesmo tempo que permitiria controlar o processo De testes e os dados obtidos e suas análises subsequentes escolheriam um portfólio efetivo de sistemas de negociação robustos. Posteriormente, os webinars Mathworks foram atualizados a cada ano e gradualmente introduziram elementos cada vez mais interessantes. Assim, o primeiro webinar sobre negociação de pares (arbitragem estatística) usando a Econometric Toolbox foi realizado em 2018, embora a caixa de ferramentas de testes e análises permaneceu a mesma. Em 2017, surgiu o Trading Toolbox da Mathworks, que permitiu conectar o MATLAB a corretores diferentes para a execução de suas aplicações. Embora existissem soluções automáticas para a execução das transações, a partir desse ponto, o MATLAB poderia ser considerado um sistema para o desenvolvimento de estratégias comerciais com um ciclo completo: desde o carregamento de dados até a execução de estratégias de negociação automatizadas. Por que cada Algotrader deve reinventar a roda No entanto, a Mathworks não ofereceu uma solução completa para testar e analisar as estratégias. Os códigos que você poderia sair dos webinars eram os únicos elementos de um teste completo do sistema, e era necessário modificá-los. , Personalize-os e adicione-os à GUI para facilidade de uso. Foi muito demorado, colocando uma questão: seja qual for a estratégia, deve passar pelo mesmo processo de análise e análise, o que permitiria classificar-se como estável e utilizável. Por isso, cada algotrader deve reinventar a roda e escrever Seu próprio código para estratégias de teste adequadas em MATLAB Então, a decisão foi tomada para criar um produto que permitisse realizar todo o processo associado ao teste e análise de estratégias de negociação algorítmicas utilizando uma interface simples e fácil de usar. Em primeiro lugar, gostaria de responder as seguintes perguntas: O que aconteceu com o blog. Jev Kuznetsov já não é o proprietário. O blog foi adquirido ao nosso amigo, Jev Kuznetsov, que se mudou para o seu outro blog com o blog. Ele concluiu que Python é melhor que o MATLAB para negociação, o que eu considerava falso. MATLAB continua a ser um dos melhores softwares do mundo para fins de negociação algorítmica IMHO (eu tenho alguns fatos sobre isso, porém para discussão futura). 2. Nós mudamos a marca. A partir deste momento, o blog será chamado MatlabTrading, o que é muito mais compreensível em relação aos tópicos que irá incluir. Além disso, o nome do domínio foi alterado para matlabtrading em vez do matlab-trading. blogspot inicial. Embora o domínio antigo ainda esteja funcionando redirecionando do nome do domínio primário. O que acontecerá com o blog 1. Mais publicações e artigos Esperamos trazer a vida a este blog postando conteúdos relevantes uma ou duas vezes por semana. Nos primeiros meses, publicaremos principalmente artigos e vídeos que já temos para tornar mais fácil para os nossos queridos leitores pesquisar informações sobre um recurso e reticular-se sobre eles. Então temos planos para escrever posts sobre aspectos práticos da negociação algorítmica no MATLAB. Como criar estratégias modernas de negociação automática, tais como: negociação de pares de arbitragem estatística significa estratégias de negociação neutras de mercado de reversão com base na cointegração bollinger bandas filtro kalman etc para commodities, ações e Forex. Tendência de estratégias seguidas com Jurik Moving Average e outros filtros digitais sofisticados. Estratégias de previsão com aprendizado de máquina (Support Vector Machines) e outros métodos. Criando estratégias de negociação robustas usando o gerenciamento de dinheiro visual para o reinvestimento de sua capital (ciência sobre como obter 1M de 10K Em um ano com o máximo, mas o risco estimado e as recompensas de suor). Talvez depois de ler isso, você pensou que este seria um outro artigo burro para aqueles caras pobres que procuram como se tornar rico através da negociação no forex e tudo isso. Bem, isso é totalmente falso Estamos trabalhando no MATLAB, e a maioria de nós somos cientistas e especialistas nesse aspecto, então tudo é sério. 2. Mais interatividade Ficarei feliz se pudermos nos relacionar com comentários em postagens. Assine nossas novidades para receber alertas sobre as últimas postagens e eventos. Mais tarde, temos planos de fazer webinars do Google Hangouts. Não perca, clique no botão Siga no canto superior direito para se juntar à nossa comunidade. O que você gostaria de ler em nossas postagens de blog Que tópicos você pode sugerir Por favor, escreva aqui nos comentários. Na minha publicação anterior, cheguei à conclusão de que a negociação de pares fechados para fechar não é tão lucrativa hoje como costumava ser antes de 2018. Um leitor apontou que poderia ser que a natureza reversa dos spreads acabasse de mudar para prazos mais curtos . Eu compartilhei a mesma idéia, então eu decidi testar essa hipótese. Desta vez, apenas um par é testado: 100 SPY vs -80 IWM. Backtest é executado em dados de barra de 30 segundos de 11.2017 a 12.2017. As regras são simples e similares à estratégia que testei na última publicação: se o retorno da barra do par exceder 1 no z-score, troque a barra seguinte. O resultado parece muito bonito: considero que isso é uma prova suficiente de que ainda existe uma grande inversão média na escala de 30 segundos. Se você acha que este gráfico é muito bom para ser verdade, isso infelizmente é o caso. Não foram considerados custos de transação ou spread de oferta e solicitação. Na verdade, eu duvidava que houvesse algum lucro depois de subtrair todos os custos de negociação. Ainda assim, este tipo de gráficos é a cenoura pendurada na minha frente, mantendo-me em pé. Mal notícias de todos, de acordo com os meus cálculos (que espero sinceramente são incorretas), o comércio de pares clássicos está morto. Algumas pessoas estariam totalmente em desacordo, mas aqui é o que eu encontrei: vamos tomar uma estratégia hipotética que funcione em uma cesta de etfs: SPY, XLY, XLE, XLF, XLI, XLB, XLK, IWM, QQQ, DIA A partir destes etfs 90 unique Podem ser feitos pares. Cada par é construído como um spread neutro no mercado. Regras de estratégia: em cada dia, para cada par, calcule o z-score com base no desvio padrão de 25 dias. Se o limite de gt de z-score, fique curto, feche o próximo dia. Se o limite de z-score lt for longo, feche o próximo dia. Para manter tudo simples, o cálculo é feito sem gerenciamento de capital (um pode ter até 90 pares em portfólio Em cada dia). Os custos de transação também não são considerados. Simplificando, esta estratégia acompanha a natureza do dia de um dia reverter a natureza dos spreads do mercado neutro. Aqui estão os resultados simulados para vários limiares: não importa o limite utilizado, a estratégia é altamente rentável em 2008, muito boa até 2009 e completamente inútil desde o início de 2018. Esta não é a primeira vez que me deparo com essa mudança na reversão média Comportamento em etfs. Não importa o que tentei, não tive sorte em encontrar uma estratégia de negociação de pares que funcionasse em ETFs em 2018. Minha conclusão é que esses tipos de modelos simples de stat-arb simplesmente não cortaram mais. Sucessas Backtesting de Algorithmic Trading Strategies - Parte I Este artigo continua com a série sobre negociação quantitativa, que começou com o Guia de Iniciantes e Estratégia de Identificação. Ambos os artigos mais longos e mais envolvidos têm sido muito populares, então eu continuo nesse sentido e fornece 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 troca de mercado. Eu não poderia esperar abordar todos esses tópicos em um artigo, então vou dividi-los em duas ou três peças menores. O que vamos discutir nesta seção Iniciarei por definir backtesting e depois descreverei os conceitos básicos de como é realizado. Então, elucidaremos os vícios que abordamos no Guia para Negociadores Quantitativos para Iniciantes. Em seguida, apresentarei uma comparação das várias opções de software de backtesting disponíveis. Nos artigos subseqüentes, 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. Comece por discutir 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 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 troca (que significaremos aqui uma ida e volta de dois sinais) terá um lucro ou perda associada. O acúmulo desta lucrativa durante a duração do backtest da estratégia levará ao lucro total (também conhecido como PL ou PnL). Essa é a essência da idéia, embora, é claro, o diabo está sempre em 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 Estratégica. Nosso objetivo no estágio de pesquisa inicial era configurar um pipeline de estratégia e, em seguida, 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 pedidos, latência, liquidez ou outros problemas de microestrutura de mercado. Otimização - Embora a otimização de 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 específico em que o sistema de execução é a chave para o desempenho da estratégia, como com os algoritmos de ultra alta frequência. Infelizmente, o backtesting é 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 do comércio algorítmico, pelo que é nosso trabalho minimizá-los do melhor modo possível para tomar decisões informadas sobre nossas estratégias algorítmicas. Existem quatro vieses principais que eu gostaria de discutir: otimização do viés. Look-Ahead Bias. 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 é o encaixe de curva ou o 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. Parâmetros nesta instância podem ser os critérios de entrada, os períodos de retorno, os períodos de média (ou seja, o parâmetro de suavização da média móvel) ou a freqüência de medição de 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 este 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. Há uma vasta literatura sobre algoritmos de otimização multidimensional e é uma área de pesquisa altamente ativa. Eu não vou pensar nisso aqui, mas mantenha-o no fundo de sua mente quando você encontrar uma estratégia com um bônus de observação maravilhoso Look-Ahead Bias O avanço do look-ahead é introduzido em um sistema de backtesting quando os dados futuros são incluídos acidentalmente em um ponto no Simulação onde esses dados não estavam realmente disponíveis. Se estivermos executando o backtest cronologicamente e alcançarmos o ponto do tempo N, então o viés avançado ocorre se os dados estiverem incluídos para qualquer ponto Nk, onde k0. Os erros de polarização anteriores podem ser extremamente sutis. Aqui estão três exemplos de como o avanço da aparência pode ser introduzido: Bugs técnicos - Arraysvectors no código geralmente têm iteradores ou variáveis ​​de índice. Deslocamentos incorretos desses índices podem levar a um viés de frente, incorporando dados em Nk para zero não-zero. Cálculo de Parâmetros - Outro exemplo comum de polarização prospectiva ocorre ao calcular parâmetros de estratégia ótimos, como 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 de forma retroativa a uma estratégia de negociação para fins de otimização, os dados futuros estão sendo incorporados e existe um viés prospectivo. MaximaMinima - Certas estratégias de negociação utilizam valores extremos em qualquer período de tempo, como a incorporação dos preços altos ou baixos nos dados da OHLC. No entanto, uma vez que estes valores máximos máximos só podem ser calculados no final de um período de tempo, um viés prospectivo é introduzido se esses valores forem usados ​​- durante o período atual. É sempre necessário atrasar os valores de alta velocidade em pelo menos um período em qualquer estratégia de negociação 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 aos seus testes anteriores significativamente na negociação ao vivo. Survivorship Bias 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 à hora atual. Como 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 falharam, 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 à frente, uma vez 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 em seus testes de estratégia: Survivorship Bias Free Datasets - No caso de dados de capital, é possível comprar conjuntos de dados que incluem entidades excluídas, embora não sejam baratos e que apenas sejam 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 futuros derivados). 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 os sobreviventes, simplesmente porque há 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 é frequentemente 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 isso 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 de Sharpe e até mesmo as características de retirada e ficar satisfeito com os resultados. Por exemplo, a estratégia pode possuir 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 ocorrem 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. Eu observei 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 disse que ele é um 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, 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 backtesting 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 de 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 do 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 PL de longo prazo do que a terceirização, tanto quanto possível, para o software do fornecedor. Isto deve-se ao risco negativo de ter erros externos ou idiossincrasias 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 do Bunch - Alguns softwares de backtesting, como o 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çá-lo a fazer isso), então você terá mais dificuldade em mudar para o novo software (ou um novo corretor), se for necessário. Interactive Brokers fornece 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 quase todas as operações matemáticas imagináveis, mas também permitem uma personalização extensiva, quando necessário. Complexidade de Estratégia - Certos softwares simplesmente não são cortados para uma grande combinação de números ou complexidade matemática. O Excel é um desses softwares. 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 ter certeza de que, se você quiser criar toda a funcionalidade, que não introduza bugs 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 no quarto aqui Velocidade de Execução - Se sua estratégia for completamente dependente da pontualidade de execução (como em HFTUHFT), 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 nossa infra-estrutura de software, eu quero executar alguns dos pacotes mais populares e como eles comparam: Nota: Eu só vou incluir o software 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 configuração de varejo e pessoalmente não tenho experiência com elas. Comparação de software Backtesting Descrição: linguagem de alto nível projetada para velocidade de desenvolvimento. Grande variedade de bibliotecas para quase qualquer tarefa programática imaginável. Obtendo maior aceitação em fundos de hedge e comunidade de bancos de investimento. Não é tão rápido quanto CC para velocidade de execução. Execução: plugins Python existem para corretores maiores, como Interactive Brokers. Portanto, o sistema de backtest e execução pode fazer parte da mesma stack de tecnologia. Personalização: Python tem uma comunidade de desenvolvimento muito saudável e é uma linguagem madura. NumPySciPy fornecem ferramentas científicas científicas e de análise estatística rápidas relevantes para o comércio de quant. Complexidade de Estratégia: existem muitos plugins para os algoritmos principais, mas não tão grande como uma comunidade quant para MATLAB. Minimização de polarização: existem problemas de minimização de bias semelhantes para qualquer linguagem de alto nível. Precisa ser extremamente cuidadoso com os testes. Velocidade de desenvolvimento: a maior vantagem de Pythons é a velocidade de desenvolvimento, com recursos robustos em testes de teste. Velocidade de Execução: não tão rápido como C, mas os componentes de computação científica são otimizados e o Python pode conversar com o código nativo C com determinados plugins. Custo: FreeOpen Fonte Descrição: Linguagem madura e de alto nível projetada para velocidade de execução. Amplo conjunto de finanças quantitativas e bibliotecas numéricas. Mais difícil de depurar e muitas vezes leva mais tempo para implementar do que o Python ou o MATLAB. Extremamente prevalente tanto no lado da compra como da venda. Execução: a maioria das APIs de corretagem são escritas em C e Java. Assim, existem muitos plugins. Personalização: CC permite o acesso direto à memória subjacente, portanto, estratégias de ultra-alta freqüência podem ser implementadas. Complexidade de Estratégia: C STL oferece ampla gama de algoritmos otimizados. Quase qualquer algoritmo matemático especializado possui uma implementação de código aberto de código aberto na web. Bias Minimisation: Look-ahead bias can be tricky to eliminate, but no harder than other high-level language. Good debugging tools, but one must be careful when dealing with underlying memory. Development Speed: C is quite verbose compared to Python or MATLAB for the same algorithmm. More lines-of-code (LOC) often leads to greater likelihood of bugs. Execution Speed: CC has extremely fast execution speed and can be well optimised for specific computational architectures. This is the main reason to utilise it. Cost: Various compilers: LinuxGCC is free, MS Visual Studio has differing licenses. Different strategies will require different software packages. HFT and UHFT strategies will be written in CC (these days they are often carried out on GPUs and FPGAs ), whereas low-frequency directional equity strategies are easy to implement in TradeStation, due to the all in one nature of the softwarebrokerage. My personal preference is for Python as it provides the right degree of customisation, speed of development, testing capability and execution speed for my needs and strategies. If I need anything faster, I can drop in to C directly from my Python programs. One method favoured by many quant traders is to prototype their strategies in Python and then convert the slower execution sections to C in an iterative manner. Eventually the entire algo is written in C and can be left alone to trade In the next few articles on backtesting we will take a look at some particular issues surrounding the implementation of an algorithmic trading backtesting system, as well as how to incorporate the effects of trading exchanges. We will discuss strategy performance measurement and finally conclude with an example strategy. Clique abaixo para aprender mais sobre. A informação contida neste site é a opinião dos autores individuais com base em sua observação pessoal, pesquisa e anos de experiência. A editora e seus autores não são conselheiros de investimento registrados, advogados, CPAs ou outros profissionais de serviços financeiros e não prestam assessoria jurídica, fiscal, contábil, de investimento ou outros serviços profissionais. A informação oferecida por este site é apenas de educação geral. Como cada situação factual de indivíduos é diferente, o leitor deve procurar seu próprio conselheiro pessoal. Nem o autor nem o editor assumem qualquer responsabilidade ou responsabilidade por quaisquer erros ou omissões e não devem ter responsabilidade nem responsabilidade para qualquer pessoa ou entidade em relação a danos causados ​​ou alegadamente causados ​​direta ou indiretamente pelas informações contidas neste site. Use por sua conta e risco. Além disso, este site pode receber compensações financeiras das empresas mencionadas através de publicidade, programas afiliados ou de outra forma. Taxas e ofertas de anunciantes exibidos neste site mudam com freqüência, às vezes sem aviso prévio. Enquanto nos esforçamos para manter informações precisas e oportunas, os detalhes da oferta podem estar desactualizados. Os visitantes devem assim verificar os termos de tais ofertas antes de participar delas. The author and its publisher disclaim responsibility for updating information and disclaim responsibility for third-party content, products, and services including when accessed through hyperlinks andor advertisements on this site. Statistical Arbitrage Build, test, and implement statistical arbitrage trading strategies with MATLAB Statistical arbitrage, also referred to as stat arb . is a computationally-intensive approach to algorithmically trading financial market assets such as equities and commodities. It involves the simultaneous buying and selling of security portfolios according to predefined or adaptive statistical models. Statistical arbitrage techniques are modern variations of the classic cointegration - based pairs trading strategy. This strategy is based on short-term mean reversion principles coupled with hedging strategies that take care of overall market risk . Hedge funds, mutual funds, and proprietary trading firms build, test, and implement trading strategies based on statistical arbitrage. An effective workflow entails: Gathering data from databases and industry-standard datafeeds Select Your Country

No comments:

Post a Comment