Previsão de divisas da rede neural


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.

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.

Previsão Forex da rede neuronal
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.

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.

Forex Mecânico.
Negociação no mercado FX usando estratégias mecânicas de negociação.
Redes neurais na negociação: não é sobre a criação de previsões extremamente precisas.
Há alguns dias eu comecei meu & # 8220; Neural Netorks na Trading & # 8221; série em que pretendo explicar conceitos relacionados a redes neurais, além de revelar aplicações práticas aos meus leitores fiéis. Na primeira publicação desta série, falei sobre alguns dos conceitos básicos das redes neurais, o que elas são e para o que elas podem ser úteis. Hoje, vou abordar uma questão muito mais prática sobre as redes neurais, com foco na maneira como elas podem ser usadas corretamente na negociação como sistemas autônomos (I & # 8217; abrangerão usos posteriores, como o aprimoramento do sistema, mais tarde ). Dentro dos parágrafos a seguir, você aprenderá por que as redes neurais não são muito boas na previsão de valores de preços futuros exatos, mas porque isso não é necessário para criar estratégias de negociação lucrativas baseadas exclusivamente nessa técnica.
Uma rede neural e # 8211; como discutimos antes do & # 8211; é simplesmente uma série de funções ou "neurônios" e # 8221; que pode tentar gerar modelos preditivos para sistemas não-lineares. Se você treinar uma rede neural em um determinado conjunto de dados, a rede ajustará seus pesos de função para prever com precisão os dados do conjunto de treinamento e, posteriormente, essa informação pode ser usada em dados fora da amostra para obter algumas informações valiosas sobre o mercado. Muitas pessoas pensam que as redes neurais podem, portanto, prever valores de preço exatos (como o próximo, alto, baixo, etc. de futuras horas, dias ou semanas), mas a verdade é que as redes neurais falham miseravelmente quando são aplicadas dessa maneira.
Por que as redes neurais falham quando você tenta prever valores de preços dessa maneira? O problema aqui é que uma rede neural pode apresentar um modelo que prevê valores futuros & # 8220; fechar & # 8221; para os reais, mas muitas vezes o erro na previsão é tão alto que se torna inútil. Outro problema é que as redes neurais não são ditas "modelos estáveis" # 8221; no sentido de que o treinamento repetitivo pode gerar um conjunto inteiramente diferente de previsões futuras (diferindo ligeiramente das anteriores) e, portanto, você geralmente precisa criar uma comunidade de redes para criar uma previsão significativa. O resultado é freqüentemente que o valor predito próximo / alto / baixo para o futuro terá um nível de incerteza que tornará difícil lucrar com a previsão exata (tentando atingir esse nível exato). Tentando tornar a rede mais precisa para prever esses valores geralmente faz com que ele perca recursos de generalização, tornando-o obsoleto em dados futuros.
Isso significa que a criação de um sistema a partir de uma rede neural é impossível? Não, significa apenas que você precisa abordar as coisas de uma perspectiva diferente. Ao usar uma rede neural, geralmente é muito melhor não procurar uma previsão exata sobre um valor de preço futuro, mas procurar uma previsão que seja útil desde uma perspectiva comercial, mas vaga em seu senso de definição. Por exemplo, em vez de prever a próxima semana & # 8217; s perto, podemos querer prever se a próxima semana & # 8217; s fechar será maior ou menor do que a semana atual # 8217; s perto. Tal previsão é mais fácil de fazer para a rede com sucesso, uma vez que depende apenas de uma resposta binária.
Nos últimos meses, fiz um progresso significativo no meu desenvolvimento de estratégias baseadas em redes neurais, conseguindo alguns resultados lucrativos com base nesse tipo de В & # 8220; vago e # 8221; previsões. Embora esses resultados não sejam de forma alguma espectacular, com precisões e taxas de lucro semelhantes às dos meus outros sistemas técnicos desenvolvidos e aqueles derivados de estruturas de programação genética simples (como o Coatl), eles mostram que você pode realmente Desenvolver modelos lucrativos baseados meramente em uma vaga previsão sobre as condições futuras, porque tais previsões são geralmente tendenciosas para o trabalho quando são obrigadas a obter mais lucro. Por exemplo, ao prever a próxima direção da próxima semana, a rede neural atinge apenas cerca de 52% do tempo, mas uma estratégia de negociação usando essa informação é muito lucrativa porque a rede geralmente consegue suas previsões quando ocorrem grandes eventos e continuações de tendências enquanto raramente cai em uma inversão que faz com que ele perca grandes quantidades de dinheiro.
No geral, é muito possível criar estratégias bem-sucedidas baseadas exclusivamente em redes neurais baseadas unicamente nos resultados de previsões perdidas. No entanto, é sempre importante considerar que a rede neural é na natureza uma caixa preta & # 8221; O modelo e, portanto, o teste precisam ser muito mais robustos do que as estratégias tecnicamente derivadas tradicionais (este será o tema de outra publicação). Há muitas maneiras pelas quais isso foi feito, mas, no caso dos sistemas acima, empregue um período de treinamento de 5 anos seguido de um período de teste de 5 anos fora da amostra para testar se a rede conseguiu alcançar resultados bem-sucedidos.
Outra etapa importante de desenvolvimento com as redes neurais é também amarrar essas previsões perdidas nas categorias de redes e grupos de redes, a fim de aumentar as chances de sucesso. Por exemplo, você pode usar 5 redes treinadas para prever a próxima direção da próxima semana, juntamente com 5 redes que prevêem a direção de fechamento mensal e 5 redes que prevêem a direção fechada de 2 semanas entrando em negociações somente quando todas as redes dizem que esse preço está indo do mesmo jeito. A criação de comidades e o alinhamento do alinhamento de previsões de modelos diferentes, mas semelhantes, aumentará as chances de sucesso de uma abordagem baseada na rede neural para negociação.
Agora, já desenvolvi uma boa base de conhecimento na área de redes neurais e já criei as DLLs que devemos usar para explorar essas técnicas no MQL4 / 5, porém ainda preciso coletar muita experiência adicional e fazer uma uma série de testes de robustez adicionais em meus modelos de rede neural, mas certamente estamos a poucos meses de distância (talvez menos ainda) dos primeiros sistemas de negociação de Asirikuy baseados exclusivamente em modelos de redes neurais.
Se você quiser saber mais sobre o meu trabalho em negociação automatizada e como você também pode construir e projetar seus próprios sistemas de negociação automatizados com base em táticas comerciais de som e compreensão, considere se juntar a Asirikuy, um site cheio de vídeos educacionais, sistemas de negociação, desenvolvimento e uma abordagem sólida, honesta e transparente para negociação automatizada em geral. Espero que tenha gostado deste artigo ! : o)
3 Respostas para Redes Neurais na Negociação: Não é Sobre a Produção de Previsões Extremamente Precisas e # 8221;
Grande série em Redes Neurais e muito interessado em ver o que você imagina em termos de um sistema tão bom ou melhor do que seus outros sistemas baseados em regras.
Eu notei que alguns sistemas baseados na Rede Neural (pelo menos da literatura do produto) parecem se concentrar na negociação de pares. Um popular (com resultados incríveis e # 8211; e sendo vendido apenas como serviço de sinal) é Leotrader. Eu tenho uma instalação do Meta-Trader com acesso somente leitura para uma de suas contas que transformou um depósito de $ 500 em agosto em mais de US $ 2500 agora. Resultados impressionantes por qualquer medida e continua a marcar os vencedores.
De qualquer forma, uma vez que NN & # 8217; s realmente só faz & # 8220; Yes ou No & # 8221; decisões, pode ser útil para ferrar relações entre 2 pares e # 8211; no caso do Leotrader, GBP / USD e EUR / USD. Pense nisso, porque parece haver algo lá que outros encontraram e estão explorando com sucesso.
Tome cuidado e mantenha o excelente trabalho,
Muito obrigado pelo seu comentário: o) Fico feliz que você goste dessa série e seu potencial. A vantagem disso é o fato de que o procedimento de formação da rede neural e seus critérios exatos de entrada / saída serão transparentes e nunca haverá execução ou outros problemas (como quando as copiadoras comerciais são usadas). Tenha em mente que nunca planejaria capturar movimentos de mercado muito pequenos (o que me falta os dados para simular com precisão como você sabe), mas eu pretendo prever fechamentos semanais, movimentos de pares de longo prazo, etc.
Um aspecto muito importante das redes neurais de negociação é ter um controle absoluto sobre a rede para que você saiba exatamente o que está sendo feito. Eu duvidava seriamente de qualquer desses sistemas extremamente lucrativos e # 8221; uma vez que estão disfarçados de riscos ocultos para os índices de recompensa e a técnica geral por trás deles é # 8211; na realidade & # 8211; desconhecido. Poderia haver uma rede neural ou um macaco tendo entradas com um dardo atrás das cortinas de qualquer fornecedor de sinal comercial e # 8211; como você sabe & # 8211; os resultados a curto prazo são enganosos e inúteis, vimos muitas vezes que os lucros ainda maiores em períodos de curto prazo são eliminados no longo prazo: o). Sempre que vejo uma tática de negociação com enormes lucros a curto prazo e sem simulações de longo prazo com a validação da amostra correta na caixa # 8220; caixa preta & # 8221; modo, uma coisa vem à mente & # 8212; fugir !
O que eu procuro fornecer é uma educação completa em torno de redes neurais e ferramentas verdadeiras que podem ajudar os membros da Asirikuy a construir sistemas inteiros fora das redes e até mesmo criar redes para melhorar as estratégias baseadas em regras atuais. Esta é apenas outra ferramenta de programação muito poderosa que procuro fazer uma parte importante de Asirikuy (como eu tentei fazer com a genética). Muito obrigado novamente por seu comentário Chris,
Se você pode dizer de forma confiável que sua experiência levou a uma taxa de previsão bem-sucedida de direção de 52%, os resultados da rede neural são bastante aleatórios (o extra de 2% pode ser uma variação normal). Eu acho que eu poderia virar uma moeda e dizer heads = mercado vai acabar na próxima semana, e obter resultados semelhantes.
Dito isso, acho que há usos práticos para NNs, porque usar caixas pretas de última geração com inteligência artificial para gerar as previsões é mais mentalmente aceitável do que lançar um centavo. Além disso, & # 8220; random & # 8221; é muito melhor do que a maioria dos indicadores técnicos, o que corretamente preveja a direção muito menos de 40% do tempo (mais como 30%!). Se as pessoas realmente conhecessem as probabilidades de seus indicadores, eles provavelmente não o trocarão!
Com base na sua experiência, fazer mais insumos para o treinamento NN levam a melhores chances de previsão, ou os resultados são aleatórios, independentemente da quantidade de insumos utilizados? Além disso, quantas previsões você considerou para obter seus 52%? Eu realmente apreciaria se você pudesse responder a essas perguntas. Eu acho que muitas pessoas poderiam se beneficiar das respostas também.

Комментарии

Популярные сообщения из этого блога

Opções de negociação

Opções de troca para hoje

Opções de estoque da volkswagen