L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 32

 
Alexey Burnakov:
Yuri, merci. Je vais y réfléchir.

Nous avons une question. Comment avez-vous sélectionné les prédicteurs ?

Je ne les élimine pas de toute façon. C'est ce que fait VMR. Le 21e siècle a plus de 16 ans et tous les travaux grossiers devraient être effectués par des systèmes automatisés, et non par des humains.

Yury Reshetov:

... Plus précisément, VMR réduit l'hyperespace en réduisant certains des prédicteurs.

Il existe même un exemple concret où VMR réduit automatiquement l'un des prédicteurs. Voir Prévision des faillites

Et sur cette page, vous pouvez même essayer un exemple simple et classique de la façon dont l'algorithme procède : Réduction des prédicteurs non informatifs et des vecteurs non porteurs (échantillons) dans un ensemble d'apprentissage.

Прогнозируем банкротства - Векторная машина Решетова
  • sites.google.com
Авторы: Myoung-Jong Kim, Ingoo Han опубликовали статью под названием: «The discovery of experts decision rules from qualitative bankruptcy data using genetic algorithms». Судя по оригинальной авторской статье, выборка предназначалась для генетических алгоритмов, т. к. предполагалось, что для других алгоритмов она не по зубам. Однако, вынужден...
 
Je dois essayer votre algorithme en pratique. Je ne peux pas imaginer pourquoi ça marcherait si bien.
 
Yury Reshetov:

Je ne les élimine en aucun cas. C'est ce que fait VMR. Le 21e siècle a plus de 16 ans et tout le travail difficile devrait être fait par des systèmes automatisés, pas par des humains.


D'après mon expérience, que je n'absolutise PAS, les algorithmes de sélection des prédicteurs intégrés aux modèles sont les plus inefficaces. Les nombreux progiciels et fonctions distincts disponibles pour la sélection des prédicteurs ne le sont pas non plus.

Pourquoi est-ce que je dis ça ?

Pour moi, il y a un test simple et pour le commerce de base.

Apprenez le modèle. Nous le testons sur un échantillon qui est en dehors de l'échantillon de formation par le temps et comparons les erreurs. Tout d'abord, les erreurs ne peuvent pas être de l'ordre de 50 % - ce n'est pas du tout un modèle d'apprentissage. Nous considérons les erreurs de moins de 40%. Si, sur l'échantillon d'apprentissage et de validation, ces erreurs sont à peu près égales, alors le modèle n'est pas réentraîné. Si ces erreurs sont significativement différentes et peuvent diverger de plusieurs fois, surtout si l'erreur d'apprentissage est inférieure à 10%, alors le modèle est surentraîné. La raison du réentraînement est qu'il existe des prédicteurs de bruit que l'algorithme d'apprentissage du modèle ne réentraîne PAS.

Jusqu'à présent, je n'ai pas rencontré d'ensembles de prédicteurs qui n'incluent pas de bruit. Et tous les algorithmes de sélection de prédicteurs n'ont pas pu faire face à ce bruit, pas plus que l'idée de grossissement (régularisation) des modèles !

Votre opinion est donc erronée, et le fait d'obtenir des modèles surentraînés est dangereux pour la réalité, qui est toujours "hors échantillon".

 
Alexey Burnakov:

Je propose le problème numéro un. Je posterai sa solution plus tard. SanSanych l'a déjà vu, ne me dites pas la réponse.

Introduction : Pour construire un algorithme de trading, il faut savoir sur quels facteurs se baser pour prédire le prix, ou la tendance, ou la direction d'ouverture du trade. La sélection de ces facteurs n'est pas une tâche facile, et elle est infiniment compliquée.

Vous trouverez ci-joint une archive contenant un ensemble de données csv artificielles que j'ai créé.

Les données contiennent 20 variables préfixées par input_, et une variable de droite output.

La variable de sortie dépend d'un certain sous-ensemble de variables d'entrée(le sous-ensemble peut contenir de 1 à 20 entrées).

Tâche : à l'aide de n'importe quelle méthode (apprentissage automatique), sélectionnez les variables d'entrée, à l'aide desquelles il est possible de déterminer l'état des variables de sortie sur les données existantes.

D'autres problèmes avec la classification binaire ? Parce que je suis arrivé à un charivari alors que les résultats et la méthode de génération d'échantillons étaient déjà exposés.

J'aimerais participer et tester une nouvelle version de mon classificateur binaire en même temps.

 
IvannaSvon:
Yuri, veuillez répondre à un message privé.

Le script est dans la pièce jointe.

Le jeu de données provient de l'EURUSD H1.

Dossiers :
 
Yury Reshetov:

D'autres problèmes avec la classification binaire ? Parce que je suis arrivé à un charivari, alors qu'ils ont déjà publié les résultats et la méthode de génération d'échantillons.

J'aimerais participer et essayer une nouvelle version de mon classificateur binaire par la même occasion.

Il y a toujours des tâches à accomplir :)

Il y a deux fichiers dans l'archive - train.csv et test.csv. La dernière colonne des fichiers est le résultat requis de la classification binaire. Nous devons utiliser le fichier train.csv pour former le modèle, puis appliquer le modèle à test.csv. Les résultats cibles déjà connus pour test.csv ne peuvent pas être utilisés au préalable, ils ne sont nécessaires que pour la vérification finale. Les données sont tirées de eurusd d1, classe 0 ou 1 - baisse ou hausse du prix dans la barre suivante. Si le modèle prédit correctement le résultat pour test.csv au moins dans 6 cas sur 10, alors vous pouvez essayer de négocier avec lui dans le Forex. Si la prédiction est correcte dans 7 cas sur 10 (et plus) - c'est le bon chemin vers le graal, nous devons essayer de former et de tester le modèle sur d'autres années et mois, et si tout sera identique - alors très bien.

J'ai pris en compte les erreurs passées, maintenant les fichiers sont basés sur le delta des barres au lieu des valeurs brutes. Et tout est normalisé par rangées étant donné le même type de prédicteurs dans une rangée plutôt que par colonnes.

J'essaie moi-même d'utiliser la génétique pour dénombrer les variantes de prédiction. Sur un ensemble de prédicteurs, j'entraîne le modèle en composantes principales avec deux validations croisées et je renvoie l'erreur de classification comme valeur de fitness pour la génétique. Lorsque la génétique atteint sa limite, je prends l'ensemble final de prédicteurs et entraîne à nouveau le neurone avec deux validations croisées. L'erreur de prédiction finale sur les données de test est d'environ 40%. Voici les mauvaises nouvelles - en fonction des paramètres du neurone (nombre de poids internes, nombre d'itérations entre les validations croisées) l'erreur finale varie, elle tourne aléatoirement autour de 30%-50%. J'étais autrefois heureux de n'obtenir que 30 %, mais il s'est avéré que je ne peux pas le contrôler et que je n'obtiens qu'une moyenne de 40 %.
La question logique est de savoir pourquoi vous avez besoin d'un modèle de composantes principales au milieu ? Il n'y a pas de paramètres de formation, de données d'alimentation, de modèle, de calcul d'erreur de validation croisée sur les données de test. Si vous utilisez un réseau neuronal pour déterminer la fonction d'aptitude de la génétique, le temps de formation augmente considérablement, sans compter que les paramètres de formation à utiliser pour le réseau neuronal lui-même ne sont pas clairs.

J'ai également porté le modèle VMR de Yuri à R, dans l'appendice. J'ai pris mes données avec des prédicteurs de bruit, j'ai obtenu une erreur sur les données d'entraînement de 30%, et une erreur sur les données de test de 60%, c'est-à-dire qu'il n'y a pas eu de miracle, le modèle s'est recyclé. Il est possible qu'il y ait eu un bug dans la migration du code, si vous voyez des incohérences, faites-le moi savoir. Lors de l'entraînement du modèle, je n'avais pas assez de mémoire pour une machine à grand cœur, j'ai utilisé une machine moyenne ( paramètre kernelTrickMode <- 2). Je ne pouvais pas attendre un million d'itérations par colonne, j'ai utilisé 10000 (iterPerColumn <- 10000).

Dossiers :
 
Dr. Trader:

Il y a toujours des tâches à accomplir :)

Il y a deux fichiers dans l'archive - train.csv et test.csv.

Malheureusement, mon archive RAR ne se décompose pas. A mon avis, il est préférable de tout emballer dans le ZIP. Il existe des décompresseurs pour les fichiers ZIP sur toutes les plateformes. En outre, de nombreux utilisateurs n'utilisent pas RAR.



Dr. Trader:
J'ai aussi porté le modèle VMR de Yuri en R, dans l'application. J'ai pris mes données avec des prédicteurs de bruit et j'ai obtenu une erreur de 30% sur les données d'entraînement et une erreur de 60% sur les données de test, c'est-à-dire qu'aucun miracle ne s'est produit et que le modèle a été réentraîné. Il s'agit probablement d'un bug dans le code de portage, si vous voyez des incohérences, faites-le moi savoir.

Je vais certainement m'y intéresser. Mais je ne connais pas assez bien R.

Le portage a-t-il été effectué manuellement ou par une sorte d'automate ?

 
Quelqu'un d'autre pourrait-il essayer la méthode des composantes principales pour le rejet du bruit, mais des prédicteurs avec des milliers d'observations, plutôt que la façon dontle Dr.Trader le fait ?
 
Dr. Trader:


Voir le message privé.
 
SanSanych Fomenko:
Peut-être que quelqu'un d'autre essaiera la méthode des composantes principales pour rejeter le bruit, mais avec des prédicteurs ayant des milliers d'observations, pas commeDr.Trader ?

Pourquoi n'essayez-vous pas ?

ps. J'ai essayé il y a longtemps et je n'en ai rien tiré d'intéressant.

Au cours de mes recherches, j'ai obtenu quelques résultats modestes mais intéressants, que j'aimerais partager mais sur ce "merveilleux" forum, je ne peux ni ajouter une image ni joindre un fichier, qui sait peut-être quel est le problème ?