Friday 23 March 2018

Previsão de forex usando redes neurais


Previsão de Forex.
Este exemplo é muito semelhante ao anterior. A única diferença é que ele mostra dados para divisas (forex) pares de moedas.
Como trabalhar com o applet.
Se você não viu o primeiro exemplo, explore-o primeiro - a descrição básica está disponível lá. Neste applet, os dados a seguir estão disponíveis. Todos eles são valores próximos do fim do dia para todo o ano de 2007, ou seja, 313 valores. Como no applet anterior, cada uma dessas séries temporais tem os seguintes valores: zero para intervalo abaixo de 0, valor de fechamento no intervalo 0-número de valores e novamente zero após o último valor conhecido. EURUSD - USD EUR USD moeda estrangeira dados par USDJPY - EUR USD moeda estrangeira par data USDCHF - EUR USD moeda estrangeira par dados EURJPY - EUR USD moeda estrangeira par dados Observe novamente que este exemplo é fornecido apenas para ilustração. O comércio usando esta configuração simples geralmente não está longe de usar a previsão pelo último valor disponível. Observe também que, para o comércio, precisamos desenvolver regras de entrada e saída e que são mais importantes do que a previsão exata.
Aguarde até que o applet seja carregado.
Applet e descrição (c) Marek Obitko, 2008; A rede neural no applet usa classes Java BPNeuron e BPNet.
do NeuralWebspace, (c) Tom Vehovský, 1998, que foram modificados para os propósitos deste applet.

Previsão de taxas de câmbio em moeda estrangeira usando o CGP e rede neuronal recorrente ☆
O feedback na Neuro-Evolution é explorado e avaliado para sua aplicação na elaboração de modelos de previsão para taxas de câmbio de moeda estrangeira. Uma nova abordagem para a previsão de taxas de câmbio em moeda estrangeira com base em Neuro-Evolution Recorrente é introduzida. A Programação Genética Cartesiana (CGP) é o algoritmo implementado para o modelo de previsão. A Rede de Neural Artificial (RCGPANN) evoluiu de forma evolutiva para produzir um modelo computacionalmente eficiente e preciso para a predição de forex com uma precisão de até 98,872% por um período de 1000 dias. A abordagem utiliza as tendências que estão sendo seguidas em dados históricos para prever cinco taxas de câmbio em relação ao dólar australiano. O modelo é avaliado usando métricas estatísticas e comparado. O método computacional supera os outros métodos, em particular devido à sua capacidade de selecionar a melhor característica possível em tempo real e a flexibilidade que o sistema oferece na seleção de recursos, padrão de conectividade e rede.
Seleção e revisão por pares sob responsabilidade do Instituto de Pesquisa em Engenharia da Informação.

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

FOREX Rate Prediction Usando o Caos, a rede neural e a otimização de enxertia de partículas.
Dadabada Pradeepkumar Vadlamani Ravi.
Este artigo apresenta dois modelos de previsão de taxa de FOREX híbridos inteligentes de dois estágios que compreendem caos, Rede Neural (NN) e PSO. Nesses modelos, o Stage-1 obtém as previsões iniciais e as músicas finas do Stage-2 as definem. Os dados das taxas de câmbio de Dólar Americano versus Iene Japonês (JPY), Libra Britânica (GBP) e Euro (EUR) são usados ​​para testar a eficácia de modelos híbridos. Concluímos que os modelos híbridos inteligentes propostos produzem melhores previsões em relação às redes neurais de base e PSO em termos de MSE e MAPE.
Preview.
Referências.
Informações sobre direitos autorais.
Autores e afiliações.
Dadabada Pradeepkumar 1 2 Vadlamani Ravi 1 1. Centro de Excelência em CRM e Analytics Institute for Development and Research in Banking Technology Hyderabad Índia 2. SCIS Universidade de Hyderabad Hyderabad Índia.
Sobre este artigo.
Recomendações personalizadas.
Cite o papel.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Download instantâneo legível em todos os dispositivos Possuí-lo para sempre Imposto de venda local incluído, se aplicável.
Cite o papel.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Mais de 10 milhões de documentos científicos ao seu alcance.
Switch Edition.
&cópia de; 2017 Springer International Publishing AG. Parte de Springer Nature.

Previsão Forex usando redes neurais
Obter através da App Store Leia esta publicação em nosso aplicativo!
Previsão do mercado cambial com redes neurais.
Gostaria de usar ANN para automatizar moedas de negociação, de preferência USD / EUR ou USD / GBP. Eu sei que isso é difícil e pode não ser direto. Já li alguns trabalhos e fiz alguns experimentos, mas sem muita sorte. Gostaria de obter conselhos dos EXPERTS para que isso funcionasse.
Aqui é o que eu fiz até agora:
Recebi dados de tick by tick para o mês de julho de 2018. Tem volume de lance / pedido / oferta / volume. Extraiu todos os carrapatos para o período 12PM a 14PM para todos os dias. A partir desses dados, criou um conjunto de dados onde cada entrada consiste em n valores de lance em seqüência. Usou esses dados para treinar uma ANN com entradas n-1 e a saída é o ntimo valor de lance previsto. A ANN teve n-1 neurônios de entrada, (n-1) * 2 + 1 escondido e 1 neurônio de saída. A camada de entrada teve TF linear, oculto tinha log TF e a saída tinha TF linear. Treinou a rede com propagação traseira com o n-125 primeiro e depois 10.
Para ambos, o MSE não caiu abaixo de 0,5 e ficou nesse valor durante o treinamento completo. Supondo que isso poderia ser devido à série temporal ser totalmente aleatória, usei o pacote R para encontrar autocorrelação parcial no conjunto de dados (pacf). Isso deu valores não-zero para apenas 2 e 3 atrasos.
Pergunta 1: O que isso significa exatamente?
Então usei o expoente de Hurst para avaliar a aleatoriedade. Em R, hurst (valores) apresentou valores acima de 0,9.
Pergunta 2: É suposto ser quase aleatório. Deveria ter um valor mais próximo de 0,5?
Eu repeti o treinamento da ANN com n = 3. A ANN foi treinada e conseguiu obter um valor bastante baixo para MSE. No entanto, o resultado calculado desta ANN não difere muito do valor de lance (n-1) th. Parece que a ANN apenas leva o último lance como a próxima oferta! Eu tentei diferentes estruturas de rede (todas as percepções multicamadas), diferentes parâmetros de treinamento, etc., mas os resultados são iguais.
Pergunta 3: Como posso melhorar a precisão? Existem outros métodos de treinamento do que a backpropagation?
Os resultados que você está vendo não são um subproduto do seu produto de treinamento, mas sim que as redes neurais não são uma ótima escolha para esta tarefa. As redes neurais são efetivamente um meio para criar uma função não-linear de alta ordem, compondo uma série de funções mais simples. Isso geralmente é uma coisa boa, porque permite que redes neurais se encaixem em padrões muito complexos.
No entanto, em uma bolsa de valores, qualquer padrão complexo, quando negociado, se deteriorará rapidamente. Detectar um padrão complicado geralmente não gerará resultados úteis, pois normalmente é um padrão complexo no curto prazo. Além disso, dependendo da métrica que você escolher, há várias maneiras de se comportar bem, que na verdade não vai pagar no investimento (como apenas prever o último valor em seu exemplo).
Além disso, o mercado de ações é surpreendentemente caótico, o que pode resultar em uma superação de rede neural. Isso significa que os padrões que ele aprende generalizarão mal. Algo ao longo da linha de apenas ver uma redução de estoque ao longo de um dia e decidir uniformemente que o estoque sempre diminuirá apenas porque foi visto em um curto prazo. Em vez disso, técnicas como ridge e regressão robusta, que identificará padrões mais gerais, menos complexos, melhorará.
O vencedor de uma competição Kaggle similar usou uma regressão robusta por essa mesma razão. É provável que você veja melhores resultados se você mudar para um modelo de aprendizagem superficial que encontrará funções de uma ordem polinomial inferior, sobre as funções complexas profundas de uma rede neural.

No comments:

Post a Comment