Friday 18 May 2018

Testing trading strategies in matlab


Teste e Análise de Estratégias de Negociação Algorítmica em Problemas e Soluções do MATLAB (Parte 1) Olá, meu nome é Igor Volkov. Tenho desenvolvido estratégias de negociação algorítmica desde 2006 e trabalhei em vários fundos de hedge. Neste artigo, gostaria de discutir as dificuldades que surgem no caminho do desenvolvedor de estratégias de negociação do MATLAB durante testes e análises, bem como oferecer soluções possíveis. Eu tenho usado o MATLAB para testar estratégias de algoritmo 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 estatísticos e econométricos complexos, redes neurais, aprendizado de máquina, filtros digitais, lógica difusa, etc, adicionando a caixa de ferramentas. A linguagem MATLAB é bastante simples e bem documentada, por isso mesmo um não programador (como eu) pode dominá-la. Como Tudo começou8230 Foi em 2008 (se não me engano) quando o primeiro webinar sobre negociação algorítmica no MATLAB com Ali Kazaam foi lançado, abordando o tópico de otimização de estratégias simples baseadas em indicadores técnicos, etc. apesar de um código bastante caótico , 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 liberdade das ações do MATLAB durante a criação das próprias estratégias de comércio, ao mesmo tempo em que permitiria controlar o processo. de teste e os dados obtidos e sua análise posterior escolheria carteira eficaz de sistemas de negociação robustos. Posteriormente, os webinars do Mathworks foram atualizados todos os anos e gradualmente introduziram elementos cada vez mais interessantes. Assim, o primeiro webinar sobre troca de pares (arbitragem estatística) usando a Caixa de Ferramentas Econométricas foi realizado em 2010, embora a Caixa de Ferramentas de teste e análise permanecesse a mesma. Em 2013, surgiu o Trading Toolbox da Mathworks que permitia conectar o MATLAB a diferentes corretores para 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 de negociação com um ciclo completo: desde o carregamento de dados até a execução de estratégias de negociação automatizadas. Por que todos os Algotraders devem reinventar a roda No entanto, a Mathworks não ofereceu uma solução completa para testar e analisar as estratégias que os códigos que você poderia obter dos webinars eram os únicos testes de um sistema completo, e foi necessário modificá-los, personalize-os e adicione-os à GUI para facilidade de uso. Foi muito demorado, colocando assim uma questão: seja qual for a estratégia, ela deve passar pelo mesmo processo de teste e análise, o que permitiria classificá-la como estável e utilizável, então por que todo algotrader deveria reinventar a roda e escrever sua / seu próprio código para estratégias de teste adequadas no MATLAB Assim, foi tomada a decisão de criar um produto que permitisse executar todo o processo associado ao teste e análise de estratégias de negociação algorítmica usando uma interface simples e fácil de usar. MatlabTrading Este post é sobre como é importante usar diferentes tipos de métodos de otimização, como algoritmos genéticos e paralelização, para obter resultados mais rapidamente. Otimização de Algoritmos Genéticos Apesar do fato de que o princípio do algoritmo genético (evolucionário) é muito bem explicado nos webinars do MathWorks, nos exemplos, no entanto, ele é usado apenas para otimização da escolha de um grupo de estratégia de um conjunto. Este é um bom exemplo do uso desses algoritmos, no entanto, acontece que há uma necessidade de definir muitas variáveis ​​com intervalos significativos para uma estratégia, você não consegue com uma iteração e a paralelização dos cálculos do processo 8211 pode levar vários dias . Certamente, existem estratégias no estágio final de otimização. quando quase certamente sabemos que a estratégia de negociação é bem-sucedida, também podemos esperar vários dias ou alugar todo o cluster - o resultado pode valer a pena. No entanto, se precisamos 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 no WFAToolbox: Método Linear 8211 é um modo usual de ordenação no qual você verá todos os resultados intermediários (sub-ótimos). Dá máxima precisão. Método paralelo 8211 todos os kernels da sua CPU serão usados. Não permite ver resultados intermediários, mas acelera significativamente a operação. Dá máxima precisão durante o aumento da velocidade de cálculo. Método Genético 8211 utiliza o algoritmo de otimização evolutiva. Permite ver valores sub-ótimos, mas dá o resultado próximo ao melhor. Não é um método muito preciso, mas é preciso o suficiente 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 a GPU em cálculos. Infelizmente, a GPU não é adequada 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 testes de núcleos gráficos. Infelizmente, devido a essa não universalidade do método, não é possível usar GPU no WFAToolbox. Continuando a parte 2 da discussão de problemas e soluções em testes e análises da estratégia de negociação algorítmica no MATLAB, eu o convido a ler este post sobre o problema da indisponibilidade de 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 de negociação. como a TradeStation. MetaStock. Multicharts etc. e sempre fiquei surpreso com a pouca atenção dada à visualização do processo de teste. O problema é que, quando não vemos os resultados dos valores intermediários e sub-ótimos de parâmetros otimizados, muitas vezes jogamos ouro fora junto com a sujeira. A questão é por causa de uma amostra excessivamente ampla, a estratégia ajusta os parâmetros da maneira como vemos uma estratégia perfeita que falha na vida real ou vê uma ou duas transações, que são supostamente as melhores porque foram selecionados esses dados de intervalo de tempo onde A melhor estratégia de negociação seria comprar e manter, mas por que outras estratégias são necessárias para a visualização do processo de teste da estratégia de negociação no MATLAB? Como resultado, sem ver resultados intermediários, precisamos mudar os parâmetros para tentar para obter os melhores dados ou assisti-los em algum 3D ou 4D (a cor é a quarta dimensão), como proposto nos webinars. A análise de valores nos espaços N-dimensionais pode definitivamente ser uma alternativa, mas tem várias limitações: E se houver mais de quatro dimensões? Quando você vê quais sinais e em que frequência eles aparecem na faixa de preço, você tem quase todos os representação visual necessária de sua estratégia: a freqüência das transações, sua lucratividade (curva de renda), a precisão da abertura, a similaridade com outros valores subótimos, etc., que não podem ser ditas 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ótimos em uma ou mais áreas. Ao otimizar uma estratégia no WFAToolbox 8211 Walk-Forward Analysis Toolbox para MATLAB174. Como um novo valor ótimo é encontrado, os sinais da estratégia de negociação no período in-sample e out-of-sample aparecem imediatamente no gráfico, para que você possa sempre controlar qual faixa de opções deve ser atribuída e também pausar a otimização sem esperar pelo fim do teste, quando ficar claro que algo deu errado ou está tudo bem. Olá, meu nome é Igor Volkov. Tenho desenvolvido estratégias de negociação algorítmica desde 2006 e trabalhei em vários fundos de hedge. Neste artigo, gostaria de discutir as dificuldades que surgem no caminho do desenvolvedor de estratégias de negociação do MATLAB durante testes e análises, bem como oferecer soluções possíveis. Eu tenho usado o MATLAB para testar estratégias de algoritmo 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 estatísticos e econométricos complexos, redes neurais, aprendizado de máquina, filtros digitais, lógica difusa, etc, adicionando a caixa de ferramentas. A linguagem MATLAB é bastante simples e bem documentada, por isso mesmo um não programador (como eu) pode dominá-la. Como tudo começou. Foi em 2008 (se não me engano) quando o primeiro webinar sobre comércio algorítmico no MATLAB com Ali Kazaam foi lançado, cobrindo o tópico de otimização de estratégias simples baseadas em indicadores técnicos, etc. apesar de um código 8220chaotic8221, 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 estratégias comerciais próprias, ao mesmo tempo em que permitiria controlar o processo. de teste e os dados obtidos e sua análise posterior escolheria carteira eficaz de sistemas de negociação robustos. Posteriormente, os webinars do Mathworks foram atualizados todos os anos e gradualmente introduziram elementos cada vez mais interessantes. Assim, o primeiro webinar sobre troca de pares (arbitragem estatística) usando a Caixa de Ferramentas Econométricas foi realizado em 2010, embora a Caixa de Ferramentas de teste e análise permanecesse a mesma. Em 2013, surgiu o Trading Toolbox da Mathworks que permitia conectar o MATLAB a diferentes corretores para 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 de negociação com um ciclo completo: desde o carregamento de dados até a execução de estratégias de negociação automatizadas. Por que todos os Algotraders devem 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 obter 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, ela deve passar pelo mesmo processo de teste e análise, o que permitiria classificá-la como estável e utilizável, então por que todo algotrader deveria reinventar a roda e escrever? seu próprio código para estratégias de teste adequadas no MATLAB Assim, foi tomada a decisão de criar um produto que permitisse executar todo o processo associado ao teste e análise de estratégias de negociação algorítmica, usando uma interface simples e amigável. Primeiramente, gostaria de responder às seguintes perguntas: O que aconteceu com o blog 1. Jev Kuznetsov não é mais o dono O blog foi comprado de nosso amigo Jev Kuznetsov, que se mudou para seu outro blog tradingwithpython. blogspot. Ele concluiu que o Python é melhor que o MATLAB para negociação, o que eu considero falso. MATLAB continua a ser um dos melhores softwares do mundo para fins de comércio algorítmico IMHO (eu tenho alguns fatos sobre isso, embora para discussão futura). 2. Nós mudamos a marca A partir deste momento, o blog será chamado de MatlabTrading, que é muito mais compreensível em relação aos tópicos que serão incluídos. Além disso, o nome de domínio foi alterado para matlabtrading, em vez do matlab-trading. blogspot inicial. embora o domínio antigo ainda esteja funcionando redirecionando do nome de domínio principal. O que acontecerá com o blog 1. Mais postagens e artigos Esperamos trazer vida a este blog publicando conteúdos relevantes uma ou duas vezes por semana. Nos primeiros meses, postaremos na maior parte os artigos e vídeos que já temos para facilitar aos nossos queridos leitores a busca de informações sobre um recurso e que tenham links para eles. Então, temos planos de escrever posts sobre aspectos práticos de 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 / reversão à média / estratégias de negociação de mercado neutras baseadas em cointegração / bandas de bollinger / filtro de kalman etc para commodities, ações e Forex. Tendência seguindo estratégias com Jurik Moving Average e outros sofisticados filtros digitais Estratégias de previsão com aprendizado de máquina (Support Vector Machines) e outros métodos Criando estratégias robustas de negociação usando gerenciamento visual de dinheiro para reinvestir seu capital (ciência sobre como obter 1M de 10K em um ano com recompensas máximas, mas estimadas de risco e suor). Talvez depois de ler isto você tenha pensado que este vai ser outro artigo idiota para aqueles pobres sujeitos que buscam como ficar rico negociando em forex e tudo mais. 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 Eu ficarei feliz se todos pudermos nos relacionar através de comentários em posts. Assine nossas notícias para receber alertas sobre as novas postagens e eventos. Posteriormente, temos planos de fazer seminários on-line dos Hangouts do Google. Não perca, clique no botão Seguir no canto superior direito para se juntar à nossa comunidade. O que você gostaria de ler em nossos posts? Que tópicos você pode sugerir? Por favor, escreva aqui nos comentários. No meu post anterior, cheguei à conclusão de que a negociação de pares próximos ao fim não é tão rentável hoje como costumava ser antes de 2010. Um leitor apontou que pode ser que a natureza de reversão da média de spreads tenha se deslocado para escalas de tempo menores. . Por acaso, compartilho a mesma ideia, então decidi testar essa hipótese. Desta vez, apenas um par é testado: 100 SPY vs -80 IWM. O backtest é executado em dados de barras de 30 segundos, de 11.2011 a 12.2012. As regras são simples e semelhantes à estratégia que testei no último post: se o retorno do par na barra exceder 1 no z-score, troque a próxima barra. O resultado parece muito bonito: eu consideraria isso uma prova suficiente de que ainda há muita reversão à média na escala de 30 segundos. Se você acha que este gráfico é bom demais para ser verdade, infelizmente é realmente o caso. Nenhum custo de transação ou spread bid-ask foi considerado. Na verdade, duvido que restaria algum lucro depois de subtrair todos os custos de negociação. Ainda assim, esse tipo de gráfico é a cenoura pendurada na frente do meu nariz, me fazendo continuar. Más notícias a todos, de acordo com os meus cálculos (que sinceramente espero que estejam incorretos), a negociação de pares clássicos está morta. Algumas pessoas discordariam fortemente, mas aqui está o que eu encontrei: Vamos pegar uma estratégia hipotética que funciona em uma cesta de etfs: SPY, XLY, XLE, XLF, XLI, XLB, XLK, IWM, QQQ, DIA. pares podem ser feitos. Cada par é construído como um spread neutro de 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 z-score gt limiar, vá curto, feche no dia seguinte Se z-score lt - threshold vá longo, feche no dia seguinte Para manter tudo simples, o cálculo é feito sem qualquer gerenciamento de capital (pode-se ter até 90 pares em carteira em cada dia). Os custos de transação também não são levados em consideração. Para simplificar, essa estratégia monitora a natureza de reversão da média de um dia dos spreads neutros de mercado. Aqui estão os resultados simulados para vários limites: Não importa qual limiar é usado, a estratégia é altamente lucrativa em 2008, muito boa em 2009 e completamente sem valor desde o início de 2010. Esta não é a primeira vez que me deparo com essa mudança na reversão da média. comportamento em etfs. Não importa o que eu tentei, não tive sorte em encontrar uma estratégia de negociação de pares que funcionasse com os ETFs de 2010. Minha conclusão é que esses tipos de modelos stat-arb simples simplesmente não são mais utilizados. Testes e análises de estratégias de negociação algorítmicas em MATLAB (Parte 2) GUI fácil de usar Neste post, na continuação da Parte 1. Vou tentar descrever os problemas mais comuns que ocorrem durante o teste de estratégias de negociação algorítmica no MATLAB ao usar o próprio trabalho de base do one8217s ou o código do webinars de negociação automatizada. Fácil de usar GUI Let8217s começar com o fato de que não há interface gráfica porque se presumimos que quase todo o processo de teste e análise de estratégias de negociação é padronizado (é 99), você gostaria de ter a interface que ajuda você Chame os dados necessários e inicie o processo de teste com um clique. Alguém (usuários experientes do MATLAB, em particular) pode argumentar que o uso de funções prontas não é pior e, na verdade, às vezes é melhor e mais conveniente que a GUI estática. É possível, mas uma GUI tem várias vantagens: Para usuários novos (e não apenas) do MATLAB, é muito mais conveniente usar uma GUI com botões e campos de entrada do que procurar no código, portanto, existe uma GUI nas caixas de ferramentas MathWorks na maioria dos casos, porque é mais conveniente. Ele permite focar apenas no código de sua estratégia, porque o uso de uma GUI não implica, de forma alguma, que ela limita de alguma forma sua capacidade de escrever uma estratégia. Assim, no WFAToolbox. criamos a possibilidade de escrever códigos para sua estratégia, usar qualquer uma das caixas de ferramentas MATLAB e trabalhar com vários ativos para as estratégias, como pares de negociação, negociação de cestas ou tripletes, etc., mas, ao mesmo tempo, esse código é facilmente integrado GUI por meio de padrões, que são simples o suficiente para serem aplicados no código e não limitam as oportunidades. Para dominar facilmente os padrões de código para criar suas estratégias, não apenas criamos a Documentação detalhada do WFAToolbox. mas também o Tutorial de Vídeo do WFAToolbox. que fornece uma oportunidade para um trabalho em grande escala com o aplicativo em poucos minutos.

No comments:

Post a Comment