MatlabTrading Esta mensagem é sobre como é importante usar diferentes tipos de métodos de otimização, como algoritmos genéticos e paralelização para obter resultados mais rápido. 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 a otimização da escolha de um grupo de estratégia a partir 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 se lida com uma iteração ea paralelização de processos 8211 cálculos podem levar vários dias . Certamente, existem estratégias na fase final de otimização. Quando nós quase certamente sabemos que a estratégia de negociação é bem sucedida, podemos esperar por vários dias ou alugar o cluster inteiro - 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 algoritmos genéticos podem ser perfeitamente adequado. 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 intermediários (subótima). Dá a máxima precisão. O método paralelo 8211 todos os kernels de 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. O método genético 8211 utiliza o algoritmo evolutivo de otimização. 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 WFAToolbox - Caixa de ferramentas de análise Walk-Forward para MATLAB tem a capacidade de usar a GPU nos 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 eo código de cada estratégia para testes de núcleos gráficos. Infelizmente, devido a tal não universalidade do método não se pode usar GPU em WFAToolbox. Continuando a parte 2 da discussão de problemas e soluções em testes e análise de estratégia de negociação algorítmica no MATLAB, convido você a ler este post sobre o problema de indisponibilidade de visualização de processos em soluções de software moderno para testes de sistemas de negociação. Visualização do processo de teste Na minha experiência de trabalho, muitas vezes eu analisei outras plataformas populares para testes de estratégia de negociação. Tais como TradeStation. MetaStock. Multicharts etc. e eu fui surpreendido sempre em como pouca atenção foi pagada à visualização do processo testando. A coisa é que quando nós não vemos os resultados dos valores intermediários, sub-optimal dos parâmetros optimized, nós jogamos frequentemente fora o ouro junto com a sujeira. A questão é devido a uma amostragem excessivamente amplo, a estratégia ajusta os parâmetros da forma como vemos uma estratégia perfeita que falha na vida real ou ver um ou dois negócios, que são supostamente o melhor porque foi selecionado tais dados de intervalo de tempo onde a Melhor estratégia de negociação seria buy-and-hold, mas por que são então outras estratégias 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 os resultados intermediários, precisamos 171blindly187 alterar os parâmetros para tentar Para obter os melhores dados ou assisti-lo em alguns 3D ou 4D (cor é a quarta dimensão), como proposto em 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 4 dimensões Quando você vê que sinais e em que freqüência eles aparecem na faixa de preço, você tem quase todos os A representação visual necessária de sua estratégia: a freqüência das transações, sua rentabilidade (curva de renda), a precisão de abertura, a similaridade com outros valores subótimos, etc. que não se pode dizer 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 em 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 imediatamente aparecem no gráfico, para que você sempre pode controlar o intervalo de opções que você deve atribuir, e também você pode pausar a otimização Sem esperar pelo final do teste, como se torna claro que algo deu errado ou tudo está bem. Hola, meu nome é Igor Volkov. Tenho vindo a desenvolver estratégias de negociação algorítmica desde 2006 e trabalharam em vários fundos de hedge. Neste artigo, eu gostaria de discutir as dificuldades que surgem no caminho do desenvolvedor estratégias de negociação MATLAB durante os testes e análises, bem como para oferecer soluções possíveis. Tenho vindo a utilizar o MATLAB para testar estratégias de algoritmos desde 2007 e cheguei à conclusão de que esta não é apenas a ferramenta de investigação mais conveniente, mas também a mais poderosa porque torna possível o uso de modelos estatísticos e econométricos complexos, redes neurais, Aprendizagem de máquina, filtros digitais, lógica fuzzy, etc. adicionando toolbox. A linguagem MATLAB é bastante simples e bem documentada, por isso mesmo um não-programador (como eu) pode dominá-lo. Como tudo começou. Era 2008 (se não me engano) 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 simétrico, as ferramentas eram interessantes Suficiente para usar. Eles serviram como ponto de partida para a pesquisa e o aperfeiçoamento de um modelo de teste e análise que permitiria usar todo o poder das caixas de ferramentas e liberdade de ações do MATLAB durante a criação de estratégias comerciais próprias, ao mesmo tempo que permitiria controlar o processo Dos testes e os dados obtidos e sua análise subsequente escolheriam carteira eficaz de sistemas de negociação robustos. Posteriormente, webinars Mathworks foram atualizados a cada ano e gradualmente introduziu elementos cada vez mais interessantes. Assim, o primeiro webinar sobre pares de negociação (arbitragem estatística) usando a Caixa de Ferramentas Econométrica foi realizado em 2010, embora a Caixa de Ferramentas de teste e análise permaneceu a mesma. Em 2013, Trading Toolbox da Mathworks apareceu que permitiu conectar MATLAB para diferentes corretores 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 desenvolver 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 cada Algotrader deveria 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 de sistema completo e era necessário modificá-los , Personalizá-los e adicioná-los à 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á-lo como estável e utilizável, então por que cada algotrader deveria reinventar a roda e escrever Seu próprio código para estratégias de teste adequadas no MATLAB Então a decisão foi tomada para criar um produto que permitiria executar todo o processo associado ao teste e análise de estratégias de negociação algorítmicas usando uma interface simples e amigável. Em primeiro lugar, gostaria de responder às seguintes perguntas: O que aconteceu com o blog 1. Jev Kuznetsov não é mais o dono O blog foi comprado do nosso amigo, Jev Kuznetsov, que se mudou para o seu outro blog tradingwithpython. blogspot. Ele concluiu que Python é melhor do que MATLAB para negociação, o que eu considerei falso. MATLAB continua a ser um dos melhores softwares do mundo para fins de negociação algorítmica IMHO (tenho alguns fatos sobre isso, embora para discussão futura). 2. Nós mudamos a marca A partir deste momento, o blog será chamado MatlabTrading, que é muito mais compreensível sobre os temas que irá incluir. 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 trabalhando redirecionando do nome de domínio primário. O que acontecerá com o blog 1. Mais artigos e artigos Esperamos trazer vida a este blog postando conteúdo relevante uma ou duas vezes por semana. Nos primeiros meses, publicaremos na maior parte os artigos e vídeos que já temos para tornar mais fácil para os nossos queridos leitores a busca de informações sobre um recurso e ter crosslink sobre eles. Então nós temos planos para escrever posts sobre aspectos práticos de negociação algorítmica no MATLAB. Como criar estratégias de negociação automáticas modernas, tais como: pares de arbitragem estatística negociação / média reversão / negociação neutra estratégias de negociação com base cointegration / bollinger bandas / kalman filtro etc para commodities, ações e Forex. Estratégias de tendência com Jurik Moving Average e outros filtros digitais sofisticados Estratégias de previsão com aprendizado de máquinas (Support Vector Machines) e outros métodos Criando estratégias de negociação robustas usando o teste visual de teste de dinheiro para reinvestir seu capital (ciência sobre como obter 1M de 10K Em um ano com o máximo, mas estimado risco e suor recompensas). Talvez depois de ler este youve pensou que este vai ser outro artigo burro para aqueles caras pobres que procuram como se tornar rico através de negociação em forex e tudo isso. Bem, isso é totalmente falso Estamos trabalhando no MATLAB, ea maioria de nós são cientistas e especialistas nesse aspecto, então tudo é sério. 2. Mais interatividade Eu ficarei feliz se todos nós pudermos relacionar através de comentários em postagens. Assine nossas notícias para receber alertas sobre as postagens e eventos mais recentes. Mais adiante, temos planos para fazer webinars do Google Hangouts. 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 Escreva aqui nos comentários. No meu post anterior, cheguei a uma conclusão de que fechar a fechar pares de negociação não é tão rentável hoje como costumava ser antes de 2010. Um leitor apontou que poderia ser que a natureza reverter média dos spreads apenas mudou para prazos mais curtos . Acontece que partilho a mesma ideia, por isso decidi testar esta hipótese. Desta vez apenas um par é testado: 100 SPY vs -80 IWM. Backtest é realizado em dados de barra de 30 segundos de 11.2011 para 12.2012. As regras são simples e semelhantes à estratégia que testei no último post: se o retorno da barra do par exceder 1 na pontuação z, troque a próxima barra. O resultado parece muito bonito: eu consideraria isso como prova suficiente de que ainda há uma abundância de reversão média na escala de 30 segundos. Se você acha que este gráfico é muito bom para ser verdade, que infelizmente é o caso. Nenhum custo de transação ou spread bid-ask foram considerados. Na verdade, eu duvido que não haveria qualquer lucro à esquerda depois de subtrair todos os custos de negociação. Ainda assim, este tipo de gráficos é a cenoura pendurada na frente do meu nariz, mantendo-me ir. Bad notícias de todos, de acordo com meus cálculos, (que espero sinceramente estão incorretas) o comércio de pares clássicos está morto. Alguns povos discordariam fortemente, mas é aqui o que eu encontrei: Vamos fazer exame de uma estratégia hipotética que trabalhe em uma cesta de etfs: SPY, XLY, XLE, XLF, XLI, XLB, XLK, IWM, QQQ, Pares podem ser feitas. Cada par é construído como uma propagação neutra do mercado. Regras de estratégia: Em cada dia, para cada par, calcule z-score com base no desvio padrão de 25 dias. Se z-score gt limiar, ir curto, fechar próximo dia Se z-score lt - threshold ir longo, fechar próximo dia Para manter tudo simples, o cálculo é feito sem qualquer gestão de capital (pode-se ter até 90 pares em carteira Em cada dia). Os custos de transação também não são considerados. Para colocá-lo simplesmente, esta estratégia rastreia um dia reverter natureza média do mercado neutro espalha. Aqui estão os resultados simulados para vários limiares: Não importa qual limiar é usado, a estratégia é altamente rentável em 2008, muito bom throuh 2009 e completamente inútil a partir de início de 2010. Esta não é a primeira vez que me deparei com esta mudança na média reverter Comportamento em etfs. Não importa o que eu tentei, eu não tive sorte em encontrar uma estratégia de negociação de pares que iria trabalhar em ETFs passado de 2010. Minha conclusão é que esses tipos de simples stat-arb modelos apenas não cortá-lo mais. Mas eu gosto quando esta pergunta é Indo, gostaria de sugerir para torná-lo um pouco mais concreto. Quais partes do processo de backtesting que você gostaria de aprender Isso pode variar em qualquer lugar de apenas estimar um retorno normal, onde o portfólio retorna de sua estratégia já são dadas para implementar uma regra de formação de carteira completa algoritmicamente. Ndash Constantin Dec 30 14 at 21:06 Para ser honesto eu don39t saber muito sobre backtesting. Foi-me dito que eu terei que testar novas estratégias ou melhorar a atual durante o meu estágio. Então eu gostaria de saber um pouco mais sobre o assunto antes de começar. Quais são as diferentes partes dela. Ndash Maxime Dec 30 14 at 21:31 A ideia geral Para os títulos de capital, um backtest simples normalmente consiste em duas etapas: Computação do retorno da carteira resultante de sua regra de formação de carteira (ou estratégia de negociação) Modelo de preços de ativos Passo 2 é simplesmente uma regressão e computacionalmente muito simples no Matlab. O que é complicado é a implementação da etapa 1, que exigirá que você se sinta muito confortável no Matlab, e existem diferentes maneiras de fazer isso. Se você sabe como fazer uma regressão OLS em Matlab, o que você deve se concentrar em todos os tipos de manipulações de matriz. Implementação em Matlab Formação de portfólio e cálculo de retorno Para dar um exemplo de como uma estratégia de negociação primitiva poderia ser implementada no Matlab, vamos assumir dados de retorno mensais e um período de espera uniforme de um mês em n ativos em k períodos, onde i in e k dentro . Supondo que não haja mudanças na composição de seu universo de ações, sua matriz de retorno X é de dimensões k vezes n. X ampères ampères ampères ampères ampères vdots ampères ddots amp vdots ampères ddots amp vdots x ampères dots ampères x ampères dots ampères vdots ampères ddots ampères vdots ampères ddots amp vdots x ampères dots ampères x ampères dots ampères x fim Onde devolve São computados como x frac-1. Assumindo que o seu critério de seleção é algum tipo de característica de estoque que está disponível na freqüência mensal, você também terá uma matriz de características C. Você poderia então escrever um algoritmo que identifica aquelas entradas em C que cumprem o critério de seleção (ex. ) E substituir as entradas correspondentes (onde i e t são iguais) de uma matriz indicadora I (que foi inicializada como uma matriz zero usando a função zeros) com uns. Você pode então multiplicar as entradas de I por aquelas da matriz de retornos X para obter uma matriz R que indica os retornos resultantes de suas participações. Você pode então calcular a média das entradas não-zero para cada linha de R para obter seu vetor de retornos de portfólio. Ajuste de risco e identificação de retornos anormais Na etapa 2 você compara esse vetor com os retornos normais obtidos da estimativa de regressão de um modelo de precificação de ativos, como o modelo Fama-French. Subtraindo o vetor de retorno normal de seu portfólio retorna o vetor, você determina se sua estratégia de negociação resultou em um retorno anormal positivo, que é o que você está buscando. Recomendações Se você é novo no Matlab, sugiro que você se familiarize com ele o suficiente para implementar essa estratégia simplista antes de relaxar algumas das suposições simplificadoras (como o período de manutenção e a periodicidade) e prosseguir para implementações mais sofisticadas. Mais uma vez, o que eu gostaria de salientar é que isso requer que você se sinta muito confortável com Matlab e especialmente as diferentes maneiras de manipular matrizes, o que pode levar algum tempo. Se você não é obrigado a usar o Matlab para o seu estágio e gostaria de obter resultados rápidos, você poderia fazer passo 1 no Excel em vez disso, que é tedioso, mas não requer o investimento inicial (vale a pena) que você precisa fazer para Matlab. Para se familiarizar com Matlab, tenho certeza que você já descobriu a documentação extremamente boa que vem com ele. Isso, para mim, é o recurso mais valioso e provavelmente mais útil do que qualquer outro recurso financeiro específico (com o qual eu esperaria até que você esteja familiarizado com o Matlab). Tudo o que é necessário para determinar o retorno normal é uma regressão OLS e uma compreensão rudimentar dos modelos de precificação de ativos. Respondeu 30 de dezembro 14 às 22: 20Strategy Backtesting estratégia backtesting é uma ferramenta essencial para ver se sua estratégia funciona ou não. Software de Backtesting simula sua estratégia em dados históricos e fornece um relatório de backtesting, que permite que você conduza a análise apropriada do sistema negociando. A versão de 64 bits permite carregar o máximo de dados necessários para o backtesting mais preciso. Para obter informações técnicas sobre este recurso, consulte a página Wiki relacionada. A precisão é fundamental A MultiCharts é uma solução criada especificamente para desenvolvimento de estratégia e backtesting. Nossa filosofia é que a estratégia backtesting deve ser tão realista quanto a tecnologia moderna permite. Multicharts 64-bit torna possível lidar com enorme quantidade de Tick-by-Tick dados para backtesting preciso. Backtesting realista Embora nenhuma aproximação possa ser 100 perfeita, fizemos tudo para recriar com precisão as condições de mercado passadas e a execução de ordens para negociação de estratégia. Motores de backtesting típicos têm um monte de suposições e atalhos, que resultam em testes irrealistas e resultados não confiáveis. MultiCharts é uma plataforma de negociação de nível institucional que minimiza suposições e considera muitos fatores. Advanced tech Estratégia backtesting muitas vezes precisa de um monte de dados, e software que é capaz de processá-lo. Multi-threading é usado quando você processa a otimização de estratégia em MultiCharts. Ele se espalha várias tarefas em diferentes núcleos, de modo que eles completam muito mais rápido. A versão de 64 bits do MultiCharts permite carregar até anos e anos de dados de carrapatos para movimentos de preços detalhados. Fácil de ler Você pode alterar a forma como seus sinais aparecem em seu chartin apenas alguns cliques. As ordens de saída podem ser conectadas por uma linha visível a todas as ordens de entrada relacionadas a linha será verde se o comércio foi rentável, vermelho se não. Se você não gosta dessas cores, ou de todo o outro aspecto visual, você pode facilmente mudá-lo. Escolha sua moeda para backtesting A moeda base permite calcular lucros e perdas durante o backtesting de estratégia com uma moeda especificada para pares de Forex ou símbolos não-americanos. Se você backtest sua estratégia em um símbolo que é baseado em uma moeda diferente de sua conta de corretor, então você pode querer aplicar uma conversão de moeda. Para tornar os resultados o mais próximo possível da perfeição, usamos as taxas de câmbio reais para cada dia. Todas as conversões de moeda ocorrem nos bastidores para tornar sua negociação tão fácil quanto possível. Usamos nossos servidores para solicitar dados em segundo plano e realizar os cálculos necessários. Todos os fatores essenciais contidos no nosso software de backtesting considera os seguintes fatores essenciais: liquidez, mudança de preço tick-by-tick, diferenças de preço ask-bid-trade, comissão, derrapagem, capital inicial, taxa de juros e tamanho do comércio. Levando em conta a liquidez Quando o mecanismo MultiCharts backtests uma estratégia, reconhece que nem todas as ordens de limite serão preenchidas, devido à falta de liquidez. Por esta razão, você tem a opção de preencher ordens quando um alvo de preço é atingido ou quando é excedido por um certo número de pontos (pips). Mais informações estão na nossa página Wiki. Pergunte, lance e preços comerciais Backtesting leva em conta que a compra real acontece a preços de pedir, venda real a preços de oferta. Isso torna nossa simulação backtesting o mais realista possível. Estratégia precisa Backtesting pode dar ao usuário uma emulação mais realista. Para backtest estratégias de alta freqüência, como a arbitragem estatística, o usuário pode precisar ter em conta o histórico bid / ask dados, além dos dados comerciais históricos. Tick-by-tick simulação Bar Magnifier é essencial para aumentar a precisão durante backtesting. MultiCharts pode construir barras maiores de segundos menores e barras de minutos fora de carrapatos, barras de hora e dia fora de minutos. Você pode recriar os movimentos de preços exatos dentro de cada barra usando a lupa de barra. Por exemplo, Bar Magnifier pode invisivelmente carregar minutos que compõem a hora, ea estratégia será backtested em uma base minuto a minuto. Saiba mais detalhes técnicos aqui. Estratégias para a prática imediata O mecanismo de backtesting do MultiCharts emula ordens de mercado, stop, limit, stop limit e one-cancels-other (OCO). Objetivo de lucro, stop-loss e trailing stops também são backtesting padrão características. Além disso, o MultiCharts vem com mais de 80 estratégias EasyLanguage, assim você pode praticar backtesting.
No comments:
Post a Comment