Redes Neurais: Previsão de Lucros.
As redes de neurônios são algoritmos de última geração, imutáveis, que imitam certos aspectos importantes no funcionamento do cérebro humano. Isso lhes dá uma capacidade única de auto-treinamento, a capacidade de formalizar informações não classificadas e, o mais importante, a capacidade de fazer previsões com base na informação histórica que eles têm à sua disposição.
As redes de neurônios têm sido usadas cada vez mais em uma variedade de aplicativos de negócios, incluindo soluções de pesquisa de previsão e marketing. Em algumas áreas, como detecção de fraude ou avaliação de riscos, são líderes indiscutíveis. Os principais campos em que as redes neurais encontraram aplicações são operações financeiras, planejamento empresarial, negociação, análise de negócios e manutenção de produtos. As redes neurais podem ser aplicadas de forma lucrativa por todos os tipos de comerciantes, por isso, se você é um comerciante e ainda não foi introduzido em redes neurais, nós o acompanharemos através deste método de análise técnica e mostraremos como aplicá-lo a seu estilo de negociação.
Use redes neurais para descobrir oportunidades.
Assim como qualquer tipo de excelente produto ou tecnologia, as redes neurais começaram a atrair todos aqueles que estão procurando por um mercado em desenvolvimento. Torrents de anúncios sobre software de próxima geração inundaram o mercado - anúncios comemorando o mais poderoso de todos os algoritmos de rede neural já criados. Mesmo nesses casos raros, quando reivindicações publicitárias se assemelham à verdade, tenha em mente que um aumento de 10% na eficiência é provavelmente o máximo que você obterá de uma rede neural. Em outras palavras, ele não produz retornos milagrosos e, independentemente de quão bem ele funciona em uma situação particular, haverá alguns conjuntos de dados e classes de tarefas para as quais os algoritmos utilizados anteriormente são superiores. Lembre-se disso: não é o algoritmo que faz o truque. Informações de entrada bem preparadas sobre o indicador segmentado são o componente mais importante do seu sucesso com as redes neurais.
A Convergência mais rápida é melhor?
Muitos daqueles que já utilizam redes neurais acreditam erroneamente que quanto mais rápido sua rede fornece resultados, melhor será. Isso, no entanto, é uma ilusão. Uma boa rede não é determinada pela taxa em que produz resultados e os usuários devem aprender a encontrar o melhor equilíbrio entre a velocidade na qual a rede treina e a qualidade dos resultados que produz.
Aplicação correta de redes neurais.
Muitos comerciantes aplicam redes neurais de forma incorreta porque depositam muita confiança no software que utilizam, sem terem fornecido instruções adequadas sobre como usá-lo adequadamente. Para usar uma rede neural do jeito certo e, portanto, de forma lucrativa, um comerciante deve prestar atenção a todas as etapas do ciclo de preparação da rede. É o comerciante e não a rede dele que é responsável por inventar uma ideia, formalizando essa idéia, testando e melhorando, e, finalmente, escolhendo o momento certo para descartá-la quando não for mais útil. Consideremos os estágios deste processo crucial com mais detalhes:
1. Encontrando e Formalizando uma Idéia de Negociação.
2. Melhorando os Parâmetros do seu Modelo.
3. Eliminação do modelo quando se torna obsoleto.
Todo modelo baseado na rede neural possui uma vida útil e não pode ser usado indefinidamente. A longevidade do período de vida de um modelo depende da situação do mercado e de quanto tempo as interdependências do mercado refletem nele permanecerem atualizadas. No entanto, mais cedo ou mais tarde, qualquer modelo se torna obsoleto. Quando isso acontece, você pode redirecionar o modelo usando dados completamente novos (ou seja, substituir todos os dados que foram usados), adicionar alguns dados novos ao conjunto de dados existente e treinar o modelo novamente, ou simplesmente retirar o modelo completamente.
Muitos comerciantes cometem o erro de seguir o caminho mais simples - eles dependem fortemente e usam a abordagem para a qual seu software fornece a funcionalidade mais amigável e automatizada. Essa abordagem mais simples é prever um preço de algumas barras à frente e basear seu sistema de negociação nesta previsão. Outros comerciantes prevêem variação de preço ou porcentagem da mudança de preço. Esta abordagem raramente produz melhores resultados do que prever o preço diretamente. Ambas as abordagens simplistas não conseguem descobrir e explorar de forma lucrativa a maior parte das importantes interdependências a longo prazo e, como resultado, o modelo torna-se rapidamente obsoleto à medida que as forças motrizes globais mudam.
A Abordagem Geral Mais Ótima para o Uso de Redes Neurais.
Neural Trading: chaves biológicas para lucrar.
O cérebro humano é um dos objetos mais complexos do universo conhecido. Não é a sua velocidade de processamento superior e espaço de armazenamento que o tornam extraordinário, mas sua capacidade de aprender e se adaptar. Recentemente, cientistas da computação concentraram seus esforços em escrever software que permite aos computadores imitar essa capacidade de aprendizagem. Tais esforços são realizados através do que agora é conhecido como rede neural. Esta tecnologia tem várias aplicações, particularmente na previsão e negociação de vendas. Este artigo analisa a forma como as redes neurais funcionam e como elas podem ser aplicadas na negociação.
As redes neurais são essencialmente uma coleção de neurônios interligados, cada um contendo várias entradas e saídas. Essas entradas variam em termos de peso (importância) e freqüência. Enquanto isso, as saídas são uma função de entradas líquidas. A imagem abaixo dos neurônios biológicos demonstra a interação dos neurônios:
Aqui vemos o neurônio azul enviando um impulso ao neurônio amarelo. O neurônio amarelo pode estar recebendo outras entradas (variando de força) de outros neurônios, mas envia apenas um sinal (uma função de todas as entradas).
Agora, aqui é como podemos aplicar esse processo de entrada-saída a um computador:
O diagrama acima mostra uma série de entradas com força variável sendo inserida em uma função que produz uma saída. A construção de redes neurais artificiais fica muito mais complicada a partir daqui; envolve modelos neurais e matemática que estão além do escopo deste artigo. No entanto, se você quiser saber mais sobre como eles funcionam, clique aqui.
Embora não sejam tão complexas quanto as suas contrapartes biológicas, esses componentes acabarão por imitar a maneira como nosso cérebro funciona, a fim de tomar decisões mais rápidas e precisas.
Negociação com Redes Neurais.
Então, o que torna essas redes tão especiais quando aplicadas na negociação? Bem, muitos fatores contribuem para fazer um comércio: análise fundamental, análise técnica, sentimento do mercado, fatores econômicos e mesmo (sem dúvida) aleatoriedade em si. Fazer sentido de tudo isso pode se tornar um problema. Muitas aplicações comerciais são capazes de considerar um ou dois desses fatores, mas nenhum deles pode levar todos eles em conta. As redes neurais são usadas para preencher esse vazio.
O que fazem as redes neurais?
As redes neurais utilizadas na negociação variam muito. Eles variam daqueles que dependem puramente de conceitos genéticos para aqueles que envolvem complexos modelos de redes neurais.
Os modelos neurais que utilizam programação genética pura utilizam dados históricos (insumos) e equações geradas aleatoriamente (funções) para criar regras efetivas de compra / venda. O processo começa com a criação de um "indivíduo" executando as entradas através de uma determinada função. Em seguida, indivíduos aleatórios (dos quais os melhores artistas recebem preferência) são levados a criar um híbrido de segunda geração. Este processo continua através de várias gerações, cada um aperfeiçoando a equação. O resultado, em teoria, é uma equação perfeita que poderá gerar sinais de compra / venda lucrativos.
Felizmente, grande parte disso pode ser realizada através de um programa de interface gráfica-usuário (GUI) fácil de usar. Aqui está um exemplo do Merchant of Venice, que é um projeto gratuito sobre análise de patrimônio:
Aqui você pode simplesmente inserir o número de gerações que o programa deve executar, o número de indivíduos em cada geração, o número de indivíduos aleatórios que devem ser selecionados de cada geração para criar o híbrido e assim por diante.
Os outros tipos de aplicativos de negociação neural permitem que você crie redes neuronais reais ao invés de simplesmente usar os conceitos genéticos. Uma dessas aplicações é Joone, outro programa livremente disponível. Eles oferecem plug-ins que recebem entrada de fontes como Yahoo! Finanças, e permitem que você crie suas próprias redes neurais. Veja como se destaca esta aplicação:
Aqui podemos ver o plug-in de entrada do Yahoo! Finanças, a função sendo aplicada e um gráfico mostrando correlações sendo impressas. Versões simplificadas deste tipo de aplicação também estão disponíveis comercialmente.
Quem usa o Neural Trading?
Além disso, muitos críticos dizem que a idéia de software ser capaz de "aprender" os mercados é falho. Se os seres humanos não conseguem prever os mercados com certeza, como é possível criar um software que possa realizar algo que nem compreendemos completamente?
Como você pode imaginar, existem várias alternativas comerciais disponíveis. No entanto, faça uma abordagem com cuidado, pois muitos desses serviços e aplicativos de sinal podem ser enganadores. Afinal, se alguém desenvolveu um sistema que obteve lucros garantidos sem qualquer trabalho por parte do comerciante, por que essa pessoa o venderia ao público? Certifique-se de fazer sua pesquisa antes de comprar um sistema que faça garantias. Ou, se você é ambicioso, tente criar um para você usando uma das ferramentas acima mencionadas.
As redes neurais funcionam tomando uma série de entradas ponderadas e colocando-as em uma função para fornecer uma saída. Essas saídas são, por sua vez, aplicadas às gerações subsequentes para efetivamente "aprender" como prever os eventos com mais precisão. Muitas empresas oferecem aplicativos que permitem criar redes neurais e ainda mais empresas que lhe vendem redes neurais. A teoria está sendo lentamente melhorada e até adotada por alguns na comunidade comercial. O tempo indicará até que ponto as redes neurais irão mudar os mercados no futuro.
Negociação Algorítmica.
Desenvolva sistemas de negociação com MATLAB.
A negociação algorítmica é uma estratégia comercial que usa algoritmos computacionais para gerar decisões comerciais, geralmente nos mercados financeiros eletrônicos. Aplicado em instituições de compra e venda, a negociação algorítmica é a base da negociação de alta freqüência, da negociação FOREX e da análise de riscos e execução associada.
Construtores e usuários de aplicativos de negociação algorítmica precisam desenvolver, testar e implementar modelos matemáticos que detectem e explorem os movimentos do mercado. Um fluxo de trabalho efetivo envolve:
Desenvolvimento de estratégias de negociação, utilizando métodos temporais técnicos, métodos de aprendizagem mecânica e métodos de séries temporais não-lineares Aplicação de computação paralela e de GPU para teste de tempo eficiente e identificação de parâmetros Cálculo de lucro e perda e realização de análise de risco Execução de análise de execução, como modelagem de impacto de mercado, análise de custos de transações e detecção de iceberg Incorporando estratégias e análises em ambientes de negociação de produção.
Exemplos e como fazer.
Análise Walk-Forward: usando o MATLAB para testar sua estratégia comercial 35:15 - Webinar Cointegration e Pairs Trading com Econometria Toolbox 61:27 - Webinar Servidor de Produção MATLAB para Aplicações Financeiras 38:28 - Webinar Começando com o Trading Toolbox, Parte 1: Conecte-se para Interactive Brokers 7:22 - Video CalPERS Analisa a Dinâmica do Mercado de Moedas para Identificar Oportunidades de Negociação Intraday - História do Usuário Negociação Quantitativa: Como Construir Seu Próprio Negócio de Negociação Algorítmica, por Ernest Chan - Algorithmic Trading - Algorithmic Trading Code e Outros Recursos - Arquivo Exchange Financial Analysis & amp; Trading - MathWorks Consulting.
Referência de Software.
Funções da Caixa de Ferramentas de Negociação - Aplicação de Aprendizagem de Classificação de Documentação: Estatística e Ferramenta de Aprendizagem de Máquina Aplicação de movimentos: Gráfico de médias móveis e de atraso avançado - Caixa de ferramentas financeiras Função sharpe: Calcular taxa de Sharpe - Caixa de ferramentas financeiras Função gaoptimset: Criar estrutura de opções de algoritmo genético - Otimização global Toolbox Function Cointegration Testing - Econometria Toolbox Functions Neural Network Time Series Tool - Neural Network Toolbox Documentação.
Escolha o seu país.
Escolha o seu país para obter conteúdo traduzido, quando disponível, e veja eventos e ofertas locais. Com base na sua localização, recomendamos que você selecione:.
Você também pode selecionar um local da seguinte lista:
América Latina (Español) Canadá (Inglês) Estados Unidos (Inglês)
Bélgica (Inglês) Dinamarca (Inglês) Deutschland (Deutsch) España (Español) Finlândia (Inglês) França (Français) Irlanda (Inglês) Italia (Italiano) Luxemburgo (Inglês)
Holanda (Inglês) Noruega (Inglês) Österreich (Deutsch) Portugal (Inglês) Suécia (English) Suíça Deutsch English Français Reino Unido (Inglês)
Ásia-Pacífico.
Austrália (Inglês) Índia (Inglês) Nova Zelândia (Inglês) 中国 (简体 中文) 日本 (日本語) 한국 (한국어)
Explore produtos.
Experimente ou compre.
Aprenda a usar.
Obter Suporte.
Sobre o MathWorks.
Acelerando o ritmo da engenharia e da ciência.
MathWorks é o principal desenvolvedor de software de computação matemática para engenheiros e cientistas.
Forex Mecânico.
Negociação no mercado FX usando estratégias mecânicas de negociação.
Redes Neurais na Negociação: Construindo um poderoso comércio & # 8220; brain & # 8221; com vários NN.
Vamos começar a semana com boas notícias: o). Nos últimos 2 anos, o desenvolvimento de sistemas de aprendizagem de máquinas tem sido uma grande prioridade para mim. Essas técnicas nos oferecem o sonho de implementações de negociação permanentemente auto-adaptadas, onde as decisões de negociação são constantemente ajustadas para corresponderem aos dados mais recentes. Embora eu esteja ciente de que mesmo este nível de adaptabilidade não garante qualquer rentabilidade e # 8211; como os modelos subjacentes podem tornar-se inúteis em algumas novas condições & # 8211; Isso nos proporciona um maior grau de confiança em relação à nossa capacidade de prever um determinado instrumento de mercado no futuro. Na publicação de hoje, vou mostrar-lhe o meu mais recente desenvolvimento no mundo das redes neurais, onde finalmente consegui o que considero resultados de testes históricos excepcionais baseados em técnicas de aprendizado de máquina. Através deste artigo, vou discutir os diferentes métodos que entraram neste novo sistema e como a chave para o seu sucesso veio de reunir alguns dos que já foram bem sucedidos e # 8211; ainda não excelente e # 8211; implementações de negociação.
Em primeiro lugar, gostaria de descrever a maneira pela qual eu desenvolvo estratégias de redes neurais para que você possa entender melhor meus sistemas e os últimos desenvolvimentos. Meus sistemas de negociação de rede neural são projetados para que eles sempre se reciclem de pesos recém-casualizados em cada nova barra diária utilizando as barras N passadas (geralmente são usados dados por cerca de 200-500 dias) e então faça uma decisão de negociação apenas para a próxima barra diária . O processo de reciclagem é feito em todas as barras, a fim de evitar qualquer ajuste de curva para um determinado tempo de início ou freqüência de treinamento e os pesos são completamente reiniciados para evitar qualquer dependência do comportamento de treinamento anterior. As redes neurais que eu programei aproveitam nossa estrutura de programação F4 e a biblioteca FANN (Fast Artificial Neural Network), que é o núcleo da implementação da aprendizagem de máquinas. A topologia da rede não é otimizada contra a rentabilidade, mas simplesmente atribuída como a quantidade mínima de neurônios necessários para alcançar a convergência dentro de um número razoável de épocas de treinamento. Algumas variáveis, como o número de insumos de treinamento e os exemplos usados, são de fato deixados como parâmetros do modelo. Agora que você entenda melhor como me aproximo das redes neurais, podemos aprofundar o meu trabalho no NN.
Eu tenho que confessar que minha busca por melhorar as estratégias de negociação de redes neurais foi preenchida com frustração. Levei muito tempo para desenvolver o meu primeiro modelo de sucesso (o sistema de negociação Sunqu # 8212, que é realmente lucrativo depois de mais de um ano de negociação ao vivo), mas depois desse desenvolvimento inicial eu não consegui melhorá-lo muito além (além de alguns pequenos aprimoramentos). Depois disso, eu decidi deixar este modelo sozinho e # 8211; o que é realmente complicado na natureza & # 8211; e tentar desenvolver um modelo mais simples, que seria mais fácil de melhorar. Foi quando desenvolvi o sistema Paqarin, que usa um conjunto mais simples de entradas e saídas para alcançar níveis similares de rentabilidade histórica no EUR / USD. No entanto, # 8211; para continuar minha frustração # 8211; Paqarin não era muito fácil de melhorar também. Eu fiz alguns progressos na melhoria desta estratégia de negociação durante as últimas semanas, mas eu quero deixar essa discussão para uma publicação futura (na medida em que trata de insumos).
Minha última tentativa de superar os problemas acima foi a estratégia comercial de Tapuy, um sistema inspirado em um artigo que trata do uso do NN nas imagens. Usando as bibliotecas ChartDirector, DeVil e FANN, consegui implementar um mecanismo de criação e processamento de imagens que usava gráficos diários EUR / USD (uma drástica redução deles) para fazer previsões sobre o próximo dia de negociação. Este sistema é muito interessante porque mostra que os pixels simples dentro desses gráficos contêm informações suficientes para tomar decisões que tenham uma vantagem histórica significativa. Â Tapuy também é interessante no sentido de que ele processa gráficos comerciais, a mesma entrada que os comerciantes manuais usam para enfrentar o mercado. No entanto, este sistema não era panaceia e melhorar essa estratégia também foi extremamente difícil. O Tapuy também é difícil de testar (leva muito tempo devido à criação e ao processo de leitura da imagem) e, portanto, a quantidade de experiências que poderiam ser feitas foi reduzida.
Depois de criar esses três sistemas, minhas novas criações NN eram nulas. Eu não poderia melhorá-los substancialmente e não consegui encontrar uma nova estratégia para criar um NN, essa foi a principal razão pela qual eu comecei a experimentar novas técnicas de aprendizado de máquina (como classificadores lineares, keltners, máquinas de vetor de suporte, etc. ). No entanto, durante a semana passada, tive uma espécie de epifania quando pensei em maneiras pelas quais eu poderia limitar a exposição do mercado desses sistemas, fazendo-os trocar menos de alguma maneira e percebendo que a solução para meus problemas estava na minha frente o todo Tempo. A solução para melhorar o desempenho de três classificadores & # 8211; todos eles mostrando bordas históricas de longo prazo e # 8211; é simples & # 8230; Basta juntá-los para tomar decisões comerciais! : o)
Certamente, minha experiência com outras técnicas de aprendizado de máquinas me disse que colocar os classificadores juntos para tomar decisões comerciais geralmente melhorou o desempenho, mas nunca pensei em juntar esses sistemas, porque eu os vi principalmente como estratégias de negociação separadas e não simplesmente como aprendentes de máquinas. No entanto, fez todo o sentido colocar os três núcleos de tomada de decisão em uma estratégia: o que agora eu gosto de chamar o & # 8220; AsirikuyBrain & # 8221; e chegar a conclusões sobre decisões comerciais a partir de uma previsão que esteja em conformidade com as três técnicas. Se todos tiverem bordas de longo prazo, seu acordo total deve ter mais poder preditivo do que o seu acordo parcial. O resultado me surpreendeu. As estratégias de negociação melhoraram enormemente as estatísticas de cada um (muito mais do que se fossem negociadas em conjunto como sistemas dentro de um portfólio) e, além disso, diminuíam a exposição geral ao mercado das estratégias por uma grande margem. O sistema possui apenas uma posição aberta em qualquer momento, mas precisa que todos os preditores concordem para entrar ou sair de uma posição.
A rentabilidade global é a mais alta entre todos os sistemas e a redução é a mais baixa, o que significa que o AsirikuyBrain atinge um Razão Anualizada Média ao Rácio de Drawdown Máximo que é maior do que qualquer uma das técnicas de negociação individuais utilizadas, o período do período de retirada máximo também é reduzido consideravelmente, de mais de 1000 dias para os outros sistemas NN, para menos de 750 dias. A linearidade do sistema de negociação em simulações de não composição também aumenta enormemente (para R ^ 2 = 0,98), graças ao poder de suavização obtido com o efeito do comitê (o que significa que a idéia funciona!). Como você pode ver nas imagens dentro desta publicação, as curvas para os sistemas individuais são marcadamente inferiores quando comparadas com a curva de equidade da estratégia AsirikuyBrain. Eu continuarei a fazer alguns testes e melhorias, então espere algumas novas postagens no NN nos próximos dias e semanas (incluindo algumas postagens sobre insumos, precisão de previsão de lucratividade e previsões de rentabilidade com previsões de direcionalidade).
Se você quiser saber mais sobre as estratégias de rede neural e como você também pode construir continuamente a reconversão de sistemas NN usando FANN que pode ser executado no MQL4 / MQL5 / JForex ou na API Oanda REST, considere se juntar a Asirikuy, um site cheio de informações educacionais vídeos, sistemas de negociação, desenvolvimento e uma abordagem sólida, sincera e transparente em relação ao comércio automatizado em geral. Espero que tenha gostado deste artigo ! : o)
7 Respostas às Redes Neurais na Negociação: Construindo um poderoso comércio & # 8220; brain & # 8221; com vários NN & # 8221;
Você vai lançar este AsirikuyBrain ea no futuro próximo?
Obrigado pelo seu comentário: o) Sim, será na atualização F4.3.14 no próximo fim de semana,
Conceito interessante. I & # 8217; m calculando um CAGR = 3,5% ou perto dele. Eu acho que isso é muito baixo (o SPX TR para o mesmo período é de cerca de 10%) e combinado com o recuo muito longo, acho que você ainda pode ter um longo caminho a percorrer com isso. É bom que você seja persistente. :)
E se você ajustar as previsões do tamanho da posição 2 concordam em 2/3 e até a posição completa quando todos concordam?
Você mantém a posição aberta até que um preditor não concorde ou apenas feche-a no final do dia? Não sei se perdi isso.
Obrigado por publicar: o)
Conceito interessante. Eu estou calculando um CAGR = 3,5% ou perto dele. Eu acho que isso é muito baixo (o SPX TR para o mesmo período é de cerca de 10%) e combinado com o recuo muito longo, acho que você ainda pode ter um longo caminho a percorrer com isso. É bom que você seja persistente. :)
O CAGR não pode ser calculado a partir desta simulação de não composição como você faria regularmente, uma vez que o risco é um valor constante em USD (1% do saldo inicial). Ao usar a gestão regular de dinheiro (1% de risco de saldo no comércio aberto), o CAGR é aproximadamente cerca de 10% e o AAR / MaxDD está na região 0,8-0,9 (o DD máximo é de cerca de 13,5%). A combinação regular de gerenciamento de dinheiro geraria gráficos de crescimento exponencial (que são difíceis de interpretar visualmente adequadamente) pelo que sempre postei simulações não-complexas. No entanto, ao negociar ao vivo, você sempre usaria gerenciamento de dinheiro regular, arriscando uma porcentagem fixa do saldo no comércio aberto. Eu também fiz algumas melhorias significativas nos últimos dias e obtive o comprimento máximo de retirada inferior a 500 dias: o)
E se você ajustar as previsões do tamanho da posição 2 concordam em 2/3 e até a posição completa quando todos concordam?
É uma ideia interessante! Vou tentar e ver o que recebo.
Você mantém a posição aberta até que um preditor não concorde ou apenas feche-a no final do dia? Não sei se perdi isso.
Eu tentei os dois, fechando posições em algum desacordo me deram resultados ruins, eu só negociações sempre que o SL é atingido ou um sinal oposto (onde todos NNs concordam) aparece.
Obrigado novamente por comentar Bog: o)
A combinação regular de gerenciamento de dinheiro geraria gráficos de crescimento exponencial (que são difíceis de interpretar visualmente adequadamente) pelo que sempre postei simulações não-complexas. No entanto, ao negociar ao vivo, você sempre usaria o gerenciamento regular de dinheiro, arriscando uma porcentagem fixa do saldo no comércio aberto. & # 8221;
Eu sou de opinião que MM regular deve ser usado em backtests porque é um método anti-martingale apropriado. É raro ver o crescimento exponencial devido a retiradas. A melhor maneira de backtest é que eu acredito na maneira como você realmente troca e que envolve MM.
Eu sou de opinião que MM regular deve ser usado em backtests porque é um método anti-martingale apropriado. É raro ver o crescimento exponencial devido a retiradas. A melhor maneira de backtest é que eu acredito na maneira como você realmente troca e que envolve MM.
Sim, é claro, concordo plenamente com isso, este (com MM) é, obviamente, a maneira pela qual nós testamos os sistemas para analisar antes da negociação ao vivo. Eu apenas executo as simulações de não composição no blog porque elas são mais fáceis de analisar e tirar conclusões de (tendo apenas os gráficos). Uma simulação de MM regular sem as estatísticas (apenas o gráfico) é mais difícil de analisar. Na próxima vez, eu também publicarei algumas estatísticas regulares de MM. Obrigado novamente por comentar Bob: o)
A linearidade da curva de equidade é Daniel muito impressionante. Obrigado por compartilhar seu trabalho árduo.
Redes neurais para negociação algorítmica. Previsão de séries temporais simples.
ACTUALIZAÇÃO IMPORTANTE:
Esta é a primeira parte dos meus experimentos em aplicação de aprendizado profundo para financiar, em particular para negociação algorítmica.
Eu quero implementar o sistema de negociação a partir do zero com base apenas em abordagens de aprendizado profundo, então, para qualquer problema que temos aqui (previsão de preços, estratégia de negociação, gerenciamento de riscos), usaremos diferentes variações de redes neuronais artificiais (RNAs) e veremos o quanto elas podem lide com isso.
Agora eu planejo trabalhar nas próximas seções:
Previsão de séries temporais com dados brutos Previsão de séries temporais com recursos personalizados Otimização de hiperparâmetros Implementação de estratégia de negociação, backtesting e gerenciamento de riscos Estratégias de negociação mais sofisticadas, reforço de aprendizagem Indo ao vivo, corretores API, ganhando (l̶o̶s̶i̶n̶g̶) dinheiro.
Eu recomendo que você verifique o código e o IPython Notebook neste repositório.
Nesta primeira parte, quero mostrar como MLPs, CNNs e RNNs podem ser usados para a previsão de séries temporais financeiras. Nesta parte, não vamos usar nenhuma engenharia de recursos. Vamos considerar o conjunto de dados históricos dos movimentos dos preços do índice S & P 500. Temos informações de 1950 a 2016 sobre preços abertos, fechados, altos e baixos para todos os dias do ano e volume de negócios. Primeiro, tentaremos apenas prever fechar o preço no final do próximo dia, em segundo lugar, tentaremos prever o retorno (preço fechado - preço aberto). Baixe o conjunto de dados do Yahoo Finance ou deste repositório.
Definição do problema.
Consideraremos o nosso problema como 1) problema de regressão (tentando prever exatamente fechar o preço ou retornar no dia seguinte) 2) problema de classificação binária (o preço aumentará [1; 0] ou abaixo [0; 1]).
Para treinar NNs, usaremos framework Keras.
Primeiro vamos preparar nossos dados para treinamento. Queremos prever o valor de t + 1 com base em informações de N dias anteriores. Por exemplo, tendo preços próximos dos últimos 30 dias no mercado, queremos prever, que preço será amanhã, no 31º dia.
Utilizamos as primeiras 90% das séries temporais como conjunto de treinamento (considere-a como dados históricos) e 10% como conjunto de testes para avaliação do modelo.
Aqui é exemplo de carregamento, dividindo em amostras de treinamento e pré-processamento de dados de entrada brutos:
Problema de regressão. MLP.
Será apenas um perceptron de 2 camadas escondidas. O número de neurônios escondidos é escolhido de forma empírica, vamos trabalhar na otimização de hiperparâmetros nas próximas seções. Entre duas camadas ocultas, adicionamos uma camada de Saída para evitar a sobreposição.
O importante é Dense (1), Activation ('linear') e 'mse' na seção de compilação. Queremos um produto que possa estar em qualquer intervalo (prevemos valor real) e nossa função de perda é definida como erro quadrático médio.
Vamos ver o que acontece se apenas passarmos pedaços de preços próximos de 20 dias e prever o preço no 21º dia. Final MSE = 46.3635263557, mas não é uma informação muito representativa. Abaixo está um gráfico de previsões para os primeiros 150 pontos do conjunto de dados de teste. A linha preta é dados reais, um azul - previsto. Podemos ver claramente que nosso algoritmo não é nem mesmo de perto, mas pode aprender a tendência.
Vamos dimensionar nossos dados usando o método de sklearn pré-processamento. Escala () para ter nossa série zero de tempo e variância unitária e treinar o mesmo MLP. Agora temos MSE = 0.0040424330518 (mas está em dados dimensionados). No gráfico abaixo, você pode ver as séries temporais reais escaladas (preto) e a nossa previsão (azul) para ela:
Para usar este modelo no mundo real, devemos retornar às séries temporais não escaladas. Podemos fazê-lo, multiplicando ou preditivo por desvio padrão de séries temporais que usamos para fazer predição (20 etapas de tempo não escalonadas) e adicione seu valor médio:
MSE neste caso é igual a 937.963649937. Aqui está o enredo de previsões restauradas (vermelho) e dados reais (verde):
Não está mal, não é? Mas vamos tentar algoritmos mais sofisticados para esse problema!
Problema de regressão. CNN.
Eu não vou mergulhar na teoria das redes neurais convolutivas, você pode verificar esses recursos incríveis:
Vamos definir a rede neural convolucional de 2 camadas (combinação de camadas de convolução e max-pooling) com uma camada totalmente conectada e a mesma saída que anteriormente:
Vamos verificar resultados. MSEs para dados escalados e restaurados são: 0.227074542433; 935.520550172. As parcelas estão abaixo:
Mesmo olhando para MSE em dados escalados, esta rede aprendeu muito pior. Provavelmente, uma arquitetura mais profunda precisa de mais dados para o treinamento, ou simplesmente é superada devido ao número muito alto de filtros ou camadas. Vamos considerar esta questão mais tarde.
Problema de regressão. RNN.
Como arquitetura recorrente, eu quero usar duas camadas LSTM empilhadas (leia mais sobre LSTM aqui).
As parcelas das previsões estão abaixo, MSEs = 0.0246238639582; 939.948636707.
A previsão da RNN se parece mais com o modelo médio móvel, não pode aprender e prever todas as flutuações.
Então, é um resultado pouco esperável, mas podemos ver que os MLPs funcionam melhor para esta previsão de séries temporais. Vamos verificar o que acontecerá se nós passarmos de regressão para problema de classificação. Agora, usaremos os preços não fechados, mas o retorno diário (fechar preço-preço aberto) e queremos prever se o preço fechado é maior ou menor do que o preço aberto com base nos últimos 20 dias de devolução.
Problema de classificação. MLP.
O código é alterado um pouco - alteramos nossa última camada Densa para ter saída [0; 1] ou [1; 0] e adicione a saída softmax para esperar resultados probabilísticos.
Para carregar saídas binárias, mude a linha seguinte do código:
Também mudamos a função de perda para cross-entopy binário e adicionamos métricas de precisão.
Oh, não é melhor do que adivinhar aleatoriamente (50% de precisão), vamos tentar algo melhor. Confira os resultados abaixo.
Problema de classificação. CNN.
Problema de classificação. RNN.
Conclusões
Podemos ver que o tratamento da previsão de séries temporárias financeiras como problema de regressão é uma abordagem melhor, pode aprender a tendência e os preços próximos do real.
O que foi surpreendente para mim, que MLPs estão tratando dados de seqüência melhor como CNNs ou RNNs que deveriam funcionar melhor com séries temporais. Explico isso com conjunto de dados bastante pequeno (
Selos de tempo de 16k) e escolha de hiperparâmetros fofos.
Você pode reproduzir resultados e melhorar usando o código do repositório.
Eu acho que podemos obter melhores resultados em regressão e classificação usando diferentes recursos (não apenas séries temporais escalonadas) como alguns indicadores técnicos, volume de vendas. Também podemos tentar dados mais freqüentes, digamos carrapatos minuto a minuto para ter mais dados de treinamento. Todas essas coisas que eu vou fazer depois, então fique atento :)
Ao bater palmas mais ou menos, você pode nos indicar quais são as histórias que realmente se destacam.
Alex Honchar.
máquinas de ensino e raphamento.
Mundo de aprendizagem de máquinas.
O melhor sobre Aprendizado de Máquinas, Visão de Computador, Aprendizagem Profunda, Processamento de linguagem natural e outros.
Redes neurais para negociação algorítmica: aprimorando estratégias clássicas.
Olá a todos! Em cinco últimos tutoriais, discutimos a previsão financeira com redes neurais artificiais onde comparamos diferentes arquiteturas para a previsão de séries temporais financeiras, percebemos como fazer esta previsão adequadamente com pré-processamento e regularização de dados corretos, realizamos nossas previsões com base em séries temporais multivariadas e podendo produzir realmente bons resultados para a previsão de volatilidade e implementaram funções de perda personalizada. No último, estabelecemos e experimentamos o uso de dados de diferentes fontes e a resolução de duas tarefas com rede neural única e hiperparâmetros otimizados para melhores previsões.
Hoje eu quero fazer uma espécie de conclusão de séries temporais financeiras com um caso de uso prático de previsão: melhoraremos uma estratégia de média móvel clássica com rede neural e mostraremos que ela realmente melhora o resultado final e analisa os novos objetivos de previsão que você provavelmente gostaria Brincar com.
Publicações anteriores:
Você pode verificar o código para treinar a rede neural no meu Github.
Já vimos antes, que podemos prever valores muito diferentes - das mudanças de preços à volatilidade. Antes de considerarmos essas previsões como algo abstrato e até tentamos negociar apenas olhando essas previsões "para cima", o que não era tão bom. Mas também sabemos que existem muitas outras estratégias comerciais, baseadas em análises técnicas e indicadores financeiros. Por exemplo, podemos construir médias móveis de diferentes janelas (um "longo", digamos 30 dias e mais um "curto", provavelmente, 14 dias) e acreditamos que os pontos de passagem são os momentos em que a tendência muda:
Mas esta estratégia de negociação tem uma chance principal: nas regiões planas, continuaremos a fazer os negócios nos pontos onde nada realmente muda, então vamos perder dinheiro:
Como podemos superar isso com o uso da aprendizagem por máquinas?
Vamos verificar a seguinte hipótese de estratégia: nos momentos em que as médias móveis estão cruzando, faremos a previsão de mudança de algumas características, e se realmente esperamos um salto, acreditaremos neste sinal de negociação. Caso contrário, vamos ignorá-lo, porque não queremos perder dinheiro em regiões planas.
Como um objetivo de previsão, quero tentar a afinidade - uma medida de assimetria de uma distribuição. Vamos supor que, se prevermos uma mudança em uma distribuição, isso significará que nossa tendência atual (não apenas região plana) mudará no futuro.
Dados de entrada.
Aqui vamos usar pandas e PyTi para gerar mais indicadores para usá-los como entrada também. Usaremos MACD, nuvem Ichimocku, RSI, volatilidade e outros. Todos esses valores formam séries temporais multivariadas que serão achatadas para uso posterior em MLP ou permanecerão para CNN ou RNN.
Recursos de indicadores obtidos que concateno com tuplas de OHLCV para gerar o vetor final.
Arquitetura de rede.
Aqui eu quero mostrar uma das opções de como treinar o MLP regularizado para a previsão de séries temporais:
O ponto "Novel" aqui é adicionar pequeno ruído à entrada e à saída da camada única da nossa rede neural. Pode funcionar muito parecido com a regularização de L2, explicação matemática que você pode verificar neste incrível livro.
A rede neural é treinada de uma maneira usual, verifiquemos como nossas previsões de afinidade podem melhorar (ou não) a estratégia de médias móveis.
Treinamos nossa rede nos preços AAPL de 2012 a 2016 e como teste em 2016-2017 como fizemos em um dos tutoriais anteriores.
Após a formação de uma rede, planejei nossos preços próximos, médias móveis e linhas verticais em pontos de passagem: as linhas vermelhas e alaranjadas representam pontos em que gostaríamos de negociar e os verdes - onde melhor não podemos fazer. Não parece perfeito, mas vamos fazer backtest para julgá-lo.
Resultados sem rede neural.
Eu usei backtesting descrito nesta publicação, então eu vou fornecer apenas métricas e gráficos importantes:
("Sharpe Ratio", "16,27"),
('Duração do Drawdown', '204')]
Resultados com rede neural.
Como usaremos apenas sinais comerciais "vermelhos" e "laranja" e ignoraremos os verdes. Como podemos ver, essa estratégia fez 2 negociações menos e isso nos ajudou a reduzir o primeiro rebaixamento um pouco e a aumentar o retorno final quase duas vezes!
("Sharpe Ratio", "27,99"),
('Duração do Drawdown', '102')]
Possíveis melhorias.
Parece que essa idéia tem pelo menos algum sentido! Gostaria de apresentar-lhe algumas melhorias possíveis. Eu recomendo que você tente por sua conta:
Diferentes estratégias de indicadores: as estratégias de negociação MACD, RSI Pairs podem ser otimizadas extremamente bem com a abordagem proposta. Procura prever diferentes características da série temporal: expoente Hurst, coeficiente de autocorrelação, talvez outros momentos estatísticos.
Com esta publicação, gostaria de terminar (pelo menos por um tempo) o processo de previsão de séries de tempo financeiro usando redes neurais. Vamos ser honestos, definitivamente não é um Santo Graal e não podemos usá-los diretamente para prever se o preço vai subir ou descer para ganhar muito dinheiro. Consideramos diferentes fontes de dados e objetivos, tratados cuidadosamente com superposição e hiperparâmetros otimizados. Que conclusões podemos fazer?
Tenha cuidado com a sobreposição! Você vai fazer isso em 99% dos casos, não confie em valores como 80% de precisão de parcelas de aparência muito bonita - deve ser um erro Tente prever algo diferente, mas fechar preços ou retornos - volatilidade, skewness, talvez outras características Uso Aprendizagem multimodal se você tiver fontes de dados diferentes Não se esqueça de encontrar os hiperparâmetros certos! Crie uma estratégia que possa ser uma mistura de alguns clássicos e baseada no aprendizado da máquina e faça o backtest!
Espero que esta série de postagens seja útil para alguém, voltarei logo em breve com tópicos de notícias ... Fique atento! :)
Ao bater palmas mais ou menos, você pode nos indicar quais são as histórias que realmente se destacam.
Alex Honchar.
máquinas de ensino e raphamento.
Mundo de aprendizagem de máquinas.
O melhor sobre Aprendizado de Máquinas, Visão de Computador, Aprendizagem Profunda, Processamento de linguagem natural e outros.
Comments
Post a Comment