суббота, 2 июня 2018 г.

Sistema de comércio de redes neurais


SISTEMAS DE NEGOCIAÇÃO.
Criando um Sistema de Negociação Usando Redes Neurais.
A aprendizagem de máquinas tornou-se incrivelmente popular durante a última década com o advento de melhores algoritmos e poder computacional suficiente para enfrentar até mesmo os problemas mais exigentes. Hoje, os algoritmos de aprendizagem de máquinas resolvem problemas em muitas áreas onde relacionamentos complexos entre variáveis ​​são presentes e isso torna a aprendizagem de máquinas uma ferramenta potencialmente viável para a criação de estratégias de negociação. Mas como podemos criar um sistema comercial usando esse tipo de tecnologia? Neste artigo, vamos aprender a usar um algoritmo básico de aprendizado de máquina e ndash; chamado rede neural e ndash; para criar um sistema de negociação simples no EUR / USD.
Todos os fragmentos de codificação são amostras retiradas da nossa estrutura de programação F4, disponível na Asirikuy. A biblioteca de código aberto Shark é usada para a criação e treinamento dos algoritmos de aprendizado da máquina. No entanto, as ideias gerais e as noções algorítmicas apresentadas neste artigo podem ser traduzidas para outras bibliotecas e linguagens de programação.
O que é uma Rede Neural?
Uma rede neural é um tipo de algoritmo de aprendizagem de máquinas. A rede neural clássica mais simples é composta por uma camada de entrada, uma camada oculta e uma camada de saída, onde cada camada contém um número determinado de & ldquo; neurones & rdquo ;. Cada neurônio na camada de entrada obtém um valor, processa-o usando uma função e passa para um ou vários neurônios na camada oculta com um determinado conjunto de pesos, os neurônios repitam o processo e passam os valores para um ou vários neurônios de saída . Em essência, a rede neural possui alguns valores de entrada e entrega alguns valores de saída ao processar as entradas através da sua estrutura funcional. Os neurônios não são senão unidades de processamento funcionais que passam valores multiplicados por certos pesos a outras unidades.
Fragmento de código 1. Função em C ++ que cria 84 exemplos usando 2 retornos como entradas eo retorno da barra seguinte como saída.
No entanto, uma rede neural não sabe como processar entradas desde o início, uma vez que não conhece os pesos atribuídos a cada conexão de rede neural. É por isso que precisamos de & ldquo; train & rdquo; uma rede neural usando um determinado conjunto de entradas e valores de saída, de modo que os pesos que definem as conexões entre os neurônios possam ser adequadamente definidos. Em seguida, usamos uma rede neural treinada para prever os resultados em dados desconhecidos, que é onde podemos obter um benefício ao prever alguns resultados relacionados com os dados de preços.

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.

Sistema de comércio de redes neurais
Obter através da App Store Leia esta publicação em nosso aplicativo!
Usando rede neural para negociação em bolsa de valores.
Eu mergulhei no campo das redes neurais e me encantei com elas.
Eu finalmente desenvolvi uma estrutura de aplicativos para testar sistemas de comércio em bolsas de valores e agora vou implementar minha primeira rede neural nele. Muito simples e primitivo, não destinado a negociação real, apenas para iniciantes.
Eu só quero saber se minha abordagem é uma boa abordagem.
E se você ver que estou perdendo alguma coisa (ou estou errado em relação a alguma coisa) ou você tem uma idéia do que poderia ajudar um iniciante em um campo de redes neurais no mercado, isso só me deixaria super feliz :)
Tenho 40 entradas, valores de mercado da bolsa de valores (S & amp; P e-mini, mas isso não é importante).
Para essas 40 entradas, conheço 2 números.
Quanto dinheiro eu ganharia ou perderia com uma ordem de compra Quanto dinheiro ganharia ou perderia com uma ordem de venda.
Por causa de como as bolsas de valores funcionam, ambos os números podem realmente ser negativos / positivos, o que indica que eu posso perder / ganhar dinheiro para comprar e vender (isto é, porque um comércio pode ter anexado "limitação de perda" ou "segmentação" como STOP, LIMIT etc., que se comportam de forma diferente).
Mas se isso acontecer, é uma indicação de que eu não deveria fazer um pedido, mesmo que ambos os pedidos de compra e venda forneçam números positivos.
Eu imagino que a melhor função de ativação para usar é o. coisa sigmoide, mas com um intervalo de -1 a 1 (eu achei que é chamado de muitos nomes na internet. Sigmóide bipolar, tanh, algo tangente. Não sou um matemático profundo).
Com uma aprendizagem de propagação de volta eu ensino a rede que para as 40 entradas, há 1 saída e essa saída é um desses números.
-1 o que significa que a ordem de venda vai ganhar dinheiro, a compra vai perder dinheiro +1, o que significa que o pedido de compra vai ganhar dinheiro, a venda vai perder dinheiro 0, o que significa que comprar e vender ambos vão vender / perder dinheiro , melhor evitar a negociação.
Estou imaginando que depois de aprender, a saída da rede será sempre um número próximo de -1, 1 ou 0 e é só para mim onde estabeleço o limite para comprar ou vender.
Esta é uma maneira correta de usar uma rede neural?
Em todos os lugares da internet, a saída para aprender pessoas está dando a máquina de aprendizado de propagação traseira são os valores futuros da tabela de mercado e não o rendimento esperado em dinheiro de diferentes entradas comerciais (comprar ou vender). Considero que é uma abordagem ruim porque não estou interessado nos futuros valores do gráfico, mas no dinheiro que eu quero ganhar.
Edit: Pretendo construir uma rede neural para negociação automatizada, não para ajudar a tomar decisões.
Existem falhas severas com essa abordagem.
Primeiro, existem muitas apostas que geralmente ganham, mas que são jogos ruins. Suponha que você tenha a chance de ganhar \ $ 1 $ 90 \% $ do tempo e perca \ $ 100 $ 10 \% $ do tempo. Isso tem um valor negativo esperado, mas a maneira como você está treinando a rede neural ensinaria a recomendar esses bilhetes de loteria reversa.
Em segundo lugar, você está perdendo um grande ponto da bolsa de valores, que é gerenciar o risco. O que determina o preço de um investimento não é apenas o seu retorno, é o retorno versus o risco que não pode ser coberto. Investimentos com altos retornos e altos riscos não são necessariamente melhores do que os investimentos com baixos rendimentos e baixo risco. Se você pode investir sem risco em US $ 6 \% $ e emprestar dinheiro em US $ 5 \% $, isso é mais valioso do que encontrar um investimento muito arriscado com um retorno de $ 60 \% $. Um investimento com uma taxa de retorno negativa ainda pode ser valioso se for fortemente correlacionado negativamente com um investimento de risco com alta taxa de retorno. Assim, a taxa de retorno é insuficiente para avaliar os investimentos.
Terceiro, você deve perceber que você está competindo com outras pessoas que também têm acesso a redes neurais. Existem muitos programas comerciais voltados para comerciantes de dias baseados em redes neurais. (Estes são feitos por pessoas que acham mais rentável vender software para confundir day traders do que usar seus próprios sistemas.) Existem muitos sistemas proprietários, alguns dos quais podem envolver redes neurais. Para encontrar o valor que eles negligenciam, você precisa ter alguma vantagem, e você não mencionou nenhuma.
Eu sou um grande fã das redes neurais, mas acho que usuários típicos de redes neurais no mercado de ações não entendem o básico e queimam dinheiro.
Um retorno esperado de 60% com alto risco pode ser estabilizado repetindo o mesmo investimento vezes suficiente. Eu perdi alguma coisa?
Eu percebi que este é um tópico antigo, mas, no caso de alguém tropeçar nele, o que o OP precisava fazer era esmagar seu campo desejado para dentro do espaço de 0 a 1. ou seja, apenas remape -1 = 0,0, 0 = 0,5 e 1 = 1. Então você pode usar a função de ativação sigmoidal logística padrão.

Pode uma rede neural trocar comercialmente os mercados?
Pode uma rede neural trocar comercialmente os mercados?
Esta é uma discussão sobre a possibilidade de uma rede neural trocar os mercados efetivamente? dentro dos fóruns de Trading Systems, parte da categoria Methods; Eu pensei que compartilharia com você um pequeno experimento que eu estou fazendo para ver se uma rede neural pode ser treinada.
Essa é a teoria de qualquer maneira. Atualmente, não tenho idéia se isso funcionará e pode demorar várias configurações de rede neural antes de eu ter alguns dados consistentes. O que será interessante é ver que tipo de abordagem comercial evolui, eu vou começar a negociar com castiçais diários e será interessante ver se ele decide comprar e segurar é o melhor ou se ele tenta trocar balanços de curto prazo .
Mantenha-se informado, mais os próximos dias ...
Fora de um cachorro, um livro é o melhor amigo de um homem,
Dentro de um cachorro, está muito escuro para ler. - G Marx.
seguirá com interesse.
"Um cavalheiro não deve ser visto antes do meio da manhã, a menos que ele volte para casa da noite anterior".
Fora de um cachorro, um livro é o melhor amigo de um homem,
Dentro de um cachorro, está muito escuro para ler. - G Marx.
Fora de um cachorro, um livro é o melhor amigo de um homem,
Dentro de um cachorro, está muito escuro para ler. - G Marx.
Fora de um cachorro, um livro é o melhor amigo de um homem,
Dentro de um cachorro, está muito escuro para ler. - G Marx.
Fora de um cachorro, um livro é o melhor amigo de um homem,
Dentro de um cachorro, está muito escuro para ler. - G Marx.

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.

Uma biblioteca de redes neurais altamente especializadas para aplicações financeiras.
Redes Neurais para Finanças.
Neural Trader é uma estrutura de rede neural artificial que foi especialmente concebida para aplicações financeiras. Destinado a ser usado por desenvolvedores de software, é uma Rede Neural Artificial (ANN) que simula partes básicas do cérebro.
Usando o código do programa, você pode treinar uma rede neural com informações sobre como negociar e a rede tentará prever o mercado com base no que aprendeu com os dados de treinamento fornecidos.
Para treinar uma rede neural, você deve ter um conjunto de dados contendo dados de amostra (entradas), que correspondem aos resultados (alvos).
Por exemplo, você pode usar indicadores técnicos, ou você pode usar o preço de várias ações, ouro, petróleo ou moedas, ou mesmo dados fundamentais como entradas para uma rede neural.
O valor alvo pode ser o preço futuro, a direção do mercado ou a volatilidade, por exemplo.
Os dados utilizados para o treinamento geralmente são obtidos usando dados históricos nos quais os resultados são conhecidos. Isso é chamado de conjunto de treinamento na amostra.
Uma vez concluído o processo de treinamento e aprendizado da máquina, a rede neural poderá prever as respostas quando as novas entradas forem processadas.
Desenvolvimento do Sistema de Negociação.
Neural Trader ajuda os desenvolvedores a desenvolver o A. I. (também conhecida como computação cognitiva) operando aplicativos usando uma variedade de linguagens de programação, como C ++ e C #.
O Neural Trader apresenta treinamento on-line rápido, entradas / saídas múltiplas, nós escondidos ilimitados e crescimento de rede, recozimento simulado, economia de estado e carregamento, análise de componentes principais e muito mais.
A biblioteca de programação é livre de dependências e fornece um nível incomparável de inteligência computacional para os desenvolvedores, tornando-o adequado para uma série de aplicações financeiras.
Comece com o Neural Trader>
Por que escolher o módulo?
O Modulus é uma empresa de tecnologia financeira. Embora isso não pareça um diferencial real, é. Isso significa que nossas soluções são de nossos anos de experiência no setor de tecnologia financeira. Nossos produtos e serviços são fornecidos por desenvolvedores e engenheiros que possuem experiência de negociação de primeira mão. Todo mundo aqui no Modulus fala seu idioma.
Direitos autorais e cópia; 2002-2018 por Modulus Global, Inc., todos os direitos reservados.

Комментариев нет:

Отправить комментарий