L'Apprentissage Automatique dans le trading : théorie, modèles, pratique et trading algo - page 3322
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Personne n'a discuté de quoi que ce soit, vous vous êtes immiscé dans une conversation sur la complexité des modèles ou vous avez réagi à un message, vous êtes donc connu comme un optimisateur.
C'est tout, Maxim. Il est inutile de poursuivre la discussion, tout le monde a déjà tout découvert. Sanych nous regarde ici, lui qui me soutient depuis des siècles qu'il est néfaste de chercher un global, ce à quoi j'ai répondu "selon le type de global", et Sanych n'a pas encore compris qu'il cherche un global en fin de compte.
J'espère ramener la discussion dans une direction calme, amicale et constructive.
Et tous ceux qui lisent régulièrement ce fil de discussion se souviennent de qui, quoi et quand cela a été dit, n'incluez pas l'inconscience - c'est inutile. J'ai fait une erreur aujourd'hui - j'ai mal dessiné le graphique, j'ai calmement admis mon erreur et je l'ai dit. Il est normal d'admettre ses erreurs, Maxim.
Pourquoi pas ? Oui. Je n'ai pas d'idée différente, c'est juste que beaucoup de gens n'aiment pas appeler les choses par leur nom pour une raison ou une autre.
Quand exactement arrêter l'apprentissage est une question de choix méthodologique, je soulignais seulement qu'il est impossible d'arrêter l'apprentissage sans détecter un extremum global (enfin, ou de force, ce qui n'aura aucune utilité pratique).
Je vois juste une incompréhension de la part des opposants - il a été question tout à l'heure d'optimisation, et du fait que l'overfitting dans un testeur et l'entraînement d'un modèle sont des choses différentes. C'est juste que dans l'apprentissage automatique, le processus de sélection des prédicteurs est généralement une tâche distincte, alors que dans le testeur terminal, vous pouvez souvent modifier les valeurs de ces prédicteurs - un exemple simple est la recherche de paramètres d'indicateurs, mais en même temps, dans le testeur, vous pouvez utiliser des variables pour traiter les valeurs de ces indicateurs - déplacer les seuils, les règles de comparaison, les coefficients avec une signification logique différente.
Par conséquent, sans voir le code de l'Expert Advisor, on ne peut pas dire sans ambiguïté quel est le processus d'optimisation - création de règles ou recherche de prédicteurs qui fonctionnent mieux avec des règles fixes, ou l'une et l'autre partie sont mises en œuvre. D'où tout l'argument, à mon avis, sur ce sujet.
Considérant que l'ajustement excessif de tout et n'importe quoi est généralement appliqué, Maxim affirme qu'il ne s'agit pas d'un apprentissage avec un professeur, car la logique de balisage peut manquer et les situations ne sont pas similaires les unes aux autres, ce qui complique le processus d'apprentissage. Et à juste titre, nous avons essentiellement de nombreuses classes différentes qui sont regroupées en fonction de ce qu'elles aiment et n'aiment pas, mais elles peuvent ne pas être similaires dans leurs attributs les unes aux autres. Plus tôt, j'ai proposé une méthode pour éliminer progressivement ces données, par un apprentissage incrémental, en isolant l'absence de contradictions dans l'échantillon initial à l'aide d'un modèle entraîné, puis en l'entraînant sur les données restantes. Ce n'est pas la seule solution. Le sujet mérite vraiment qu'on s'y attarde.
En ce qui concerne le critère d'arrêt, vous pouvez bien entendu choisir votre critère et rechercher sa valeur optimale, en fonction de ce qui est prioritaire dans les réponses du modèle. Cependant, il ne doit pas nécessairement s'agir d'un critère d'apprentissage automatique - parfois, vous pouvez simplement fixer un nombre fixe d'itérations - c'est-à-dire que vous pouvez vous entraîner sans ce critère. La question est toujours différente : comment choisir un modèle qui fonctionnera sur de nouvelles données ? Il est préférable de rechercher des critères qui répondent à cette question.
Ainsi, l'apprentissage automatique peut être considéré comme une optimisation, l'objectif étant de trouver la combinaison de paramètres du modèle qui minimise la fonction de perte et permet d'obtenir les meilleures performances du modèle.
Bingo !
Vous avez enfin compris que tout apprentissage n'est rien d'autre qu'une optimisation avec recherche d'un extremum global. Ou peut-être ne l'avez-vous pas encore réalisé, mais vous le ferez.
Il ne peut en être autrement, vous avez toujours besoin d'un critère sans ambiguïté pour arrêter l'apprentissage et ce critère est toujours conçu de telle sorte qu'il s'agisse d'un extremum global. En général, un critère intégral est conçu (pas toujours). Vous avez parlé de critères intégraux.
Le problème des neurones en Python, ce sont de belles images de statistiques à l'échelle macro. Dès que vous commencez à les analyser, il s'avère que le neurone devient une moyenne mobile - il est proche du prix de prédiction, mais il ne devine pas la direction. La direction est devinée à 50/50, il est donc impossible de trader sur ces neurones.
J'ai essayé les articles ici, et avec ChatGPT nous avons collecté 10 000 neurones en 3 couches, ou 10 couches de 1000 neurones, ou une couche de 100 000 neurones (ma RTX 3080 était complètement bouchée, et si vous en prenez plus - python a écrit qu'il n'y avait pas assez de mémoire), et RNN, et LSTM, et CNN, et CNN-LSTM, et CNN-BiLSTM, et CNN-BiLSTM-MLP avec deux régulations et des dropouts, et Q-learning. DQN a seulement échoué, Chat a écrit Actor-Critic pour quelques pages, mais le code s'est avéré avoir des bogues que ni moi ni Chat n'avons pu réparer.
Tout cela ne fonctionne pas. Le résultat est le même partout - se transformer en moyenne mobile. J'ai entré tout ce qui était possible dans le fil "what to input to the neural network", et bien d'autres choses encore.
Et me voilà en train de couper des oignons dans la cuisine, avec YouTube en fond sonore et des recommandations données à un type aux cheveux bouclés qui est sur le point de construire un réseau neuronal qui prédit les prix. D'accord, allez, me dis-je, essayez.
Il ouvre donc Google-collab et commence à y écrire du code Python (je crois que c'est du Python). Il y ajoute les prix de clôture, si je ne me trompe pas, du jour, du bitcoin. Il l'entraîne. Il le vérifie. Là, je me suis essuyé les yeux et j'ai commencé à regarder le résultat.
Le résultat est le suivant : la prédiction va à côté du prix réel, mais... avec une supposition directionnelle. Disons que le prix était de 35 000, que la prédiction est de 37500 et que le prix réel est de 37100. Étape suivante : prévision de 35700, réalité de 35300. Prévision 34000, réalité - 35000. Et ainsi de suite. Il a écrit un réseau qui prédit non pas le prix suivant, mais 12, je crois, prix suivants dans une rangée à la fois. Et ici, ils coïncidaient après chaque pas dans la direction.
Question : est-il vraiment possible d'écrire quelque chose qui fonctionne en Python ?
C'est tout, Maxim. La poursuite de la discussion n'a aucun sens, tout a déjà été découvert. Ici, ici, près de et Sanych observe, qui depuis des temps immémoriaux a argumenté avec moi que, disons, la recherche globale est nuisible, ce à quoi j'ai répondu "en fonction de quel global", et Sanych n'a pas encore réalisé qu' en fin de compte, il cherche un global.
J'espère ramener la discussion dans une direction calme, amicale et constructive.
Et tous ceux qui lisent régulièrement ce fil de discussion se souviennent de qui, quoi et quand cela a été dit, n'incluez pas l'inconscience - c'est inutile. J'ai fait une erreur aujourd'hui - j'ai mal dessiné le graphique, j'ai calmement admis mon erreur et je l'ai dit. Il est normal d'admettre ses erreurs, Maxim.
Ne le faites pas pour moi.
Nous parlions du testeur, pas du MO.
Dans le MO, on ne cherche pas un optimum, mais une coïncidence d'erreur sur la formation, le test et la validation. Ensuite, ils l'exécutent étape par étape sur un autre fichier. Partout, l'erreur doit être à peu près la même.
Il n'y a pas de place pour l'optimisation.
Ne le faites pas pour moi.
La discussion portait sur le testeur, pas sur le MO.
En MO, ils ne cherchent pas un optimum, mais une coïncidence d'une erreur lors de la formation, du test et de la validation. Et ensuite, on l'exécute pas à pas sur un autre fichier. Il devrait y avoir à peu près la même erreur partout.
Il n'y a pas de place pour l'optimisation.
Le rouge est l'optimisation, dans votre cas il s'agira de "réduire la variance" ou de "fixer une variance fixe d'une valeur donnée" en fonction de ce que vous faites)))
Le rouge est l'optimisation, dans votre cas il s'agirait de "réduire la variance" ou de "fixer une variance fixe d'une valeur donnée" en fonction de ce que vous faites)))
D'une certaine manière, vous ne percevez pas le texte.
L'optimisation ( ?) n'est possible QUE sur la formation sur laquelle le modèle est entraîné. Lors de l'entraînement, il y a un algorithme et vous pouvez voir l'optimisation à la loupe. Ensuite, il y a un test de ce modèle, qui n'a AUCUN retour avec "l'optimisation", parce qu'il n'y a pas de paramètres dans le modèle qui peuvent affecter les résultats du test. Pour affecter les résultats, il faut agir sur les prédicteurs et/ou l'enseignant.
Dans la MOE, c'est-à-dire le prétraitement, l'ajustement du modèle et l'estimation du modèle, il ne peut PAS y avoir d'optimisation parce que l'erreur résultante est une propriété de ces trois étapes.