Previsão de mercado de câmbio com redes neurais

10

Eu gostaria de usar a ANN para automatizar as moedas de negociação, de preferência USD / EUR ou USD / GBP. Eu sei que isso é difícil e pode não ser simples. Já li alguns trabalhos e fiz algumas experiências, mas sem muita sorte. Eu gostaria de obter conselhos de ESPECIALISTAS para fazer este trabalho.

Aqui está o que eu fiz até agora:

  1. Recebi dados de tick by tick para o mês de julho de 2013. Ele possui lance / venda / volume de lances / volume de vendas.
  2. Extraídos todos os ticks para o período de 12h às 14h durante todos os dias.
  3. A partir desses dados, criou um conjunto de dados em que cada entrada consiste em n valores de lances em sequência.
  4. Usaram esses dados para treinar uma RNA com entradas n-1 e a saída é o valor da n-ésima oferta prevista.
  5. A RNA tinha n-1 neurônios de entrada, (n-1) * 2 + 1 oculto e 1 neurônio de saída. A camada de entrada tinha TF linear, a oculta tinha TF logarítmico e a saída tinha TF linear.
  6. Treinei a rede com propagação traseira com o n-125 primeiro e depois com o 10.

Para ambos n, o MSE não caiu abaixo de 0,5 e permaneceu nesse valor durante o treinamento completo. Supondo que isso pudesse ser devido ao fato de as séries temporais serem totalmente aleatórias, usei o pacote R para encontrar autocorrelação parcial no conjunto de dados (pacf). Isso deu valores diferentes de zero para apenas 2 e 3 defasagens.

Pergunta 1: O que isso significa exatamente?

Então usei o hurst expoent 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?

Repeti o treinamento da RNA com n = 3. A RNA foi treinada e conseguiu obter um valor bastante baixo para o MSE. No entanto, a saída calculada dessa RNA não difere muito do (n-1) é o valor da oferta. Parece que a ANN aceita apenas o último lance como o próximo! Tentei diferentes estruturas de rede (todas as percepções de várias camadas), diferentes parâmetros de treinamento etc., mas os resultados são os mesmos.

Pergunta 3: Como posso melhorar a precisão? Existem outros métodos de treinamento além da retropropagação?

user1300
fonte
Não tenho certeza se você fará melhor do que prever o ruído 1 / f ao usar valores passados ​​como indicadores para futuros. scholarpedia.org/article/1/f_noise#Stock_markets_and_the_GNP - seus resultados até agora parecem consistentes com isso. Provavelmente, você deve procurar outros recursos possíveis que tenham algum motivo para se correlacionar com as taxas de câmbio futuras. Se isso fosse fácil, haveria mais cientistas de dados ricos.
Neil Slater
Sim, talvez outras variáveis ​​estejam contribuindo para o próximo valor mais do que a série temporal valoriza. Eu também experimentarei isso. Obrigado pelas indicações.
precisa saber é o seguinte

Respostas:

6

Os resultados que você vê não são um subproduto do seu produto de treinamento, mas neural netsnão são uma ótima opção para esta tarefa. Neural netssão efetivamente um meio de criar uma função não linear de alta ordem, compondo várias funções mais simples. Isso geralmente é uma coisa muito boa, porque permite que as redes neurais se ajustem a padrões muito complexos.

No entanto, em uma bolsa de valores, qualquer padrão complexo, quando negociado, decai rapidamente. A detecção de um padrão complicado geralmente não gera resultados úteis, porque geralmente são padrões complexos no curto prazo. Além disso, dependendo da métrica que você escolher, há várias maneiras de obter um bom desempenho que, na verdade, não compensa em investir (como prever o último valor no seu exemplo).

Além disso, o mercado de ações é surpreendentemente caótico, o que pode resultar em um neural netajuste excessivo. Isso significa que os padrões que ela aprende generalizarão mal. Algo semelhante ao de ver apenas uma ação diminuir ao longo de um dia e decidir uniformemente que a ação sempre diminuirá apenas porque foi vista em um prazo relativamente curto. Em vez disso, técnicas como ridgee robust regression, que identificarão padrões mais gerais e menos complexos, se saem melhor.

O vencedor de uma competição semelhante do Kaggle usado robust regressionpor esse motivo. É provável que você obtenha melhores resultados se mudar para um modelo de aprendizado superficial que encontrará funções de ordem polinomial inferior, sobre as funções complexas e profundas de uma rede neural.

indico
fonte
muito obrigado. Vou avaliar a regressão robusta e ver como ela vai.
precisa saber é o seguinte