En supposant que la date actuelle est $ T $, utilisez Deep Learning pour prédire la moyenne mobile simple des prix quotidiens de $ T + 1 $ à $ T + 30 $. Nous avons effectué une transaction de simulation dans laquelle les bénéfices sont confirmés si le prix dépasse (en dessous) la moyenne mobile prévue du prix lors de la détention (ou de la vente à découvert) d'une position longue. De plus, si vous le tenez pendant 30 jours, vous serez obligé de le fermer. Je ferai de mon mieux pour faire des entrées s'il y a un solde pour chaque date et heure.
chainer ver1.3~1.5 Juste dans la version 1.5, la compatibilité a considérablement changé et il était difficile de la gérer. Il semble que ce soit la version 2.0.2 d'août 2017.
Données historiques de Mizuho https://www.mizuhobank.co.jp/rate/market/historical.html Ci-dessous, nous avons utilisé les données de date et d'heure pour 23 devises. Tous sont contre le yen japonais. Les 8 principales devises en gras sont les devises qui ont vérifié la simulation de trading. (Du 1er avril 2002 au 29 janvier 2016, uniquement les devises qui ont des données quotidiennes sans faute pendant une journée) Au moment de l'apprentissage, tous sont normalisés par 0-1.
Données quotidiennes pour les devises des 23 pays ci-dessus et des 30 derniers jours. La raison du choix de ces données d'entrée est que nous supposons que les fluctuations des taux de change dans chaque devise peuvent être corrélées à des facteurs fondamentaux et techniques.
Soit les données de l'enseignant une moyenne mobile simple sur 30 jours 30 jours après une devise. Cette fois, nous avons prédit chacune des huit devises couramment utilisées par les sociétés japonaises de change (les devises en gras dans les données ci-dessus). Au fait, j'ai essayé des prédictions ponctuelles (comme la prédiction des données quotidiennes pour le lendemain) au lieu de moyennes mobiles, mais je n'ai pas obtenu de bons résultats. Après tout, on dit que c'est une marche aléatoire, donc cela peut être difficile à moins que vous ne prédisiez la tendance pour une certaine période de temps.
Il s'agit d'un simple feed forward NN avec 3 couches intermédiaires. (La couche d'entrée est 690, la couche intermédiaire 1 est 512, 2 est 256, 3 est 128, la couche de sortie est 1) Il est délicat de savoir si cela peut être appelé apprentissage en profondeur, mais dans wikipedia, il semble que cela puisse être dit à partir de la couche intermédiaire 3 couches, donc je suis autorisé à le nommer pour le moment. J'ai utilisé ReLU comme fonction d'activation et Adam comme fonction d'optimisation. Les hyperparamètres auraient dû être la valeur par défaut de Chainer. J'ai également utilisé des décrocheurs, mais je me souviens de ne pas avoir obtenu de très bons résultats. La fonction d'activation de la couche de sortie est $ tanh $ et la fonction d'erreur est l'erreur carrée.
Nous avons appris et vérifié avec 2000 jours de données de formation et 1325 jours de données de test. Les résultats de la livre sterling contre le yen japonais avec des résultats particulièrement bons sont les suivants. Tous les résultats avaient tendance à être plus divergents plus tard au cours de la période d'essai. Cela ne semble pas être simplement un janken tardif (le taux de la veille est utilisé comme valeur prédite). Je pense que cela est en partie dû à l'évolution des tendances du marché, il peut donc être préférable de diviser la période d'apprentissage et la période de vérification en plus petits morceaux, ou d'utiliser un modèle spécifique aux séries chronologiques tel que LSTM. .. Le résultat d'apprentissage global est le suivant. L'erreur est exprimée sous forme de dispersion. Le franc suisse a un grand écart car la partie de la poussée de 2015 vient de chevaucher la période d'essai. Il est impossible de prédire les mouvements de prix qui ne sont pas liés aux données d'entrée utilisées pour l'apprentissage, donc s'il y a des mouvements de prix importants dus à des facteurs fondamentaux, il est difficile d'utiliser simplement les données des séries chronologiques passées et les dernières informations telles que Twitter et les actualités. Je pense qu'il est nécessaire de détecter le plus tôt possible la partie susceptible d'affecter le mouvement des prix.
J'ai facilement fait un test de dos par moi-même et je l'ai fait. La période de vérification est de 1325 jours du 2010/7/7 au 2015/12/11, qui est la période des données de test. Le montant initial est de 10 millions, l'unité de transaction est de 1 000 unités monétaires et le spread est également pris en compte. Cependant, comme les données n'utilisent que les données quotidiennes ci-dessus, elles fluctuent finement dans le commerce réel et on ne sait pas si le contrat sera décidé, de sorte que la reproductibilité en tant que test arrière est faible. Après tout, de bons résultats ont été obtenus avec GBP, qui avait la plus grande précision d'apprentissage. Au contraire, le CHF a un mauvais résultat d'apprentissage, donc le résultat de trading est également mauvais.
Pour rappel, cette fois nous apprenons à réduire l'erreur de la période de test à la limite inférieure, donc ce résultat d'apprentissage est optimisé dans la période de test, et il ne fonctionnera pas même si nous testons en utilisant le même résultat d'apprentissage dans une autre période. (Ajustement de la courbe) Il y a une possibilité. Par exemple, la façon dont le marché évolue change en fonction de la période, car l'écart devient plus grand dans la seconde moitié de la période de test. Par conséquent, il est préférable de définir une période de vérification en dehors de la période de test et d'effectuer une simulation réelle, mais cette fois, nous ne l'avons pas fait.
Je pense qu'il est difficile de prédire exactement le taux de change par apprentissage profond. Cependant, en fonction des données d'utilisation et de la méthode d'achat et de vente, il semble que le trading utilisant le deep learning puisse produire des résultats même à partir de données de séries chronologiques uniquement. Bien sûr, il y a un risque que les tendances du marché fluctuent, il semble donc que ce ne sera pas rentable à long terme. Puisqu'il y a beaucoup de problèmes, j'aimerais étudier et vérifier en lisant d'autres résultats et documents de vérification. Si vous êtes convaincu que vous ferez des bénéfices en répétant les améliorations et les vérifications, je voudrais essayer le fonctionnement réel.
↓ Tutoriel pour créer un système de trading de devises (FX) en utilisant le deeplearning http://qiita.com/jiji_platform/items/268377c542706e6f44b1
Recommended Posts