Prévision du marché des changes avec les réseaux de neurones

10

Je voudrais utiliser ANN pour automatiser le trading de devises, de préférence USD / EUR ou USD / GBP. Je sais que c'est difficile et peut-être pas simple. J'ai déjà lu quelques articles et fait quelques expériences mais sans trop de chance. J'aimerais obtenir des conseils d'EXPERTS pour que cela fonctionne.

Voici ce que j'ai fait jusqu'à présent:

  1. J'ai reçu des données tick par tick pour le mois de juillet 2013. Il y a une offre / demande / volume d'offre / volume de demande.
  2. Extrait tous les ticks pour la période de 12h à 14h pour tous les jours.
  3. À partir de ces données, créé un ensemble de données où chaque entrée se compose de n valeurs d'enchères dans l'ordre.
  4. Utilisé ces données pour former un ANN avec n-1 entrées et la sortie est la nième valeur d'offre prévue.
  5. L'ANN avait n-1 neurones d'entrée, (n-1) * 2 + 1 neurones cachés et 1 neurone de sortie. La couche d'entrée avait TF linéaire, cachée avait TF log et la sortie avait TF linéaire.
  6. Formé le réseau avec rétropropagation avec n-125 d'abord puis 10.

Pour les deux n, le MSE n'est pas tombé en dessous de 0,5 et est resté à cette valeur pendant l'entraînement complet. En supposant que cela pourrait être dû au fait que les séries temporelles sont totalement aléatoires, j'ai utilisé le package R pour trouver une autocorrélation partielle sur l'ensemble de données (pacf). Cela a donné des valeurs non nulles pour 2 et 3 retards seulement.

Question 1: Qu'est-ce que cela signifie exactement?

Ensuite, j'ai utilisé exposant hurst pour évaluer le caractère aléatoire. Dans R, hurst (valeurs) a montré des valeurs supérieures à 0,9.

Question 2: Il est censé être presque aléatoire. Doit-il avoir une valeur plus proche de 0,5?

J'ai répété la formation de l'ANN avec n = 3. L'ANN a été formé et a pu obtenir une valeur assez faible pour le MSE. Cependant, la sortie calculée de cette ANN ne diffère pas beaucoup de la (n-1) e valeur de l'offre. Il semble qu'ANN prend la dernière enchère comme la prochaine enchère! J'ai essayé différentes structures de réseau (toutes les perceptions multicouches), différents paramètres de formation, etc., mais les résultats sont les mêmes.

Question 3: Comment puis-je améliorer la précision? Existe-t-il d'autres méthodes de formation que la rétropropagation?

user1300
la source
Je ne sais pas si vous ferez mieux que de prédire le bruit 1 / f lorsque vous utilisez les valeurs passées comme indicateurs pour les futures. scholarpedia.org/article/1/f_noise#Stock_markets_and_the_GNP - vos résultats semblent jusqu'ici cohérents avec cela. Vous devriez probablement examiner d'autres caractéristiques possibles qui ont une raison d'être en corrélation avec les taux de change futurs. Si c'était facile, il y aurait des scientifiques de données plus riches.
Neil Slater
oui, peut-être que d'autres variables contribuent à la valeur suivante plus que les valeurs de séries temporelles elles-mêmes .. Merci pour les pointeurs.
user1300

Réponses:

6

Les résultats que vous voyez ne sont pas un sous-produit de votre produit de formation, mais neural netsne sont pas un excellent choix pour cette tâche. Neural netssont effectivement un moyen de créer une fonction non linéaire d'ordre élevé en composant un certain nombre de fonctions plus simples. C'est souvent une très bonne chose, car cela permet aux réseaux neuronaux de s'adapter à des schémas très complexes.

Cependant, dans une bourse, tout modèle complexe, une fois négocié, se détériorera rapidement. La détection d'un motif complexe ne générera généralement pas de résultats utiles, car il s'agit généralement de motifs complexes à court terme. De plus, selon la métrique que vous choisissez, il existe un certain nombre de façons de bien performer qui ne seront pas rentables en termes d'investissement (comme simplement prédire la dernière valeur dans votre exemple).

En outre, le marché boursier est étonnamment chaotique, ce qui peut entraîner un sur- neural netajustement. Cela signifie que les modèles qu'il apprend se généraliseront mal. Quelque chose dans le sens de simplement voir un stock diminuer sur une journée et de décider uniformément que le stock diminuera toujours simplement parce qu'il a été vu à relativement court terme. Au lieu de cela, les techniques comme ridgeet robust regression, qui identifieront des modèles plus généraux et moins complexes, font mieux.

Le gagnant d'un concours Kaggle similaire utilisé robust regressionpour cette raison même. Vous obtiendrez probablement de meilleurs résultats si vous passez à un modèle d'apprentissage superficiel qui trouvera des fonctions d'un ordre polynomial inférieur, par rapport aux fonctions complexes profondes d'un réseau neuronal.

indico
la source
grand merci. Je vais évaluer une régression robuste et voir comment ça se passe.
user1300