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

 
SanSanych Fomenko:

L'entraînement, le réentraînement et le surentraînement sont des choses fondamentalement différentes.

Toute cette formation sur chaque nouveau bar est passée à la moulinette sur ce forum et en général au sein de TA.

Dans la lutte contre le surentraînement (overfitting), je connais deux méthodes.

1. nettoyage de l'ensemble des prédicteurs des prédicteurs non liés à la variable cible - nettoyage du bruit de l'ensemble des prédicteurs d'entrée. Les 100 premiers messages de ce fil de discussion en ont parlé en détail.

2. Après avoir nettoyé l'ensemble des prédicteurs du bruit, nous commençons à ajuster le modèle avec l'échantillon d'entraînement, puis avec l'échantillon de test et de validation, qui sont des échantillons aléatoires d'un fichier. L'erreur dans les trois ensembles devrait être approximativement la même.

3. Prenez ensuite un fichier distinct du précédent et exécutez le modèle sur celui-ci. Là encore, l'erreur devrait être à peu près la même que les précédentes.

4. Si ces contrôles sont effectués régulièrement, la question "un effondrement de 20 % est un signal pour le recyclage" ne sera pas du tout posée puisque les trois premières étapes ont abouti à un effondrement en tant que paramètre du modèle et qu'aller au-delà indique que le modèle ne fonctionne pas et que tout doit être recommencé.


Eh bien, c'est un cas général, oui. Et dans chaque cas, vous devez travailler davantage avec chaque TS particulier, et ensuite la compréhension viendra quand il sera bien formé, quand il sera recyclé, et quand il aura des périodes. Par exemple, le ratio achat/vente doit être approximativement le même, et l'échantillon d'entraînement doit contenir une tendance à la hausse, une tendance à la baisse et une tendance plate, sinon il s'agit d'un tirage à sens unique. L'essentiel dans ce cas est de ne pas se "surentraîner" :)

Il faut également tenir compte du facteur saisonnier, du facteur de crise et de nombreuses autres régularités.

 
SanSanych Fomenko:

1. nettoyer l'ensemble de prédicteurs des prédicteurs non pertinents pour la variable cible - nettoyer le bruit de l'ensemble de prédicteurs d'entrée. Dans les 100 premiers jalons de ce fil de discussion, cette question a été discutée en détail.

Quelle solution a finalement émergé - comment identifier les prédicteurs non liés aux commandes de sortie ?
 
elibrarius:
Quelle a été la solution finale - comment définir des prédicteurs qui ne sont pas liés aux commandes de sortie ?
Comment ? - Tout dépend des spécificités. Il m'a fallu 2 jours pour résoudre un problème simple. Maintenant, la solution semble évidente.))
 
Yuriy Asaulenko:
Comment ? - Tout dépend des spécificités. Il m'a fallu deux jours pour résoudre un problème simple. Maintenant, la solution semble évidente)).
Je suppose qu'il existe aussi des principes généraux, universels ? Il est également intéressant de connaître votre exemple spécifique.
 
Elibrarius:
Je suppose qu'il existe aussi des principes généraux, universels ? Il est également intéressant de connaître votre exemple particulier.

Regardez sur mon blog.

Les principes, oui, sont universels. Mais il n'existe pas de solutions générales. Sauf pour certaines catégories de tâches.

 

Un résumé des cent pages précédentes :)

Neuronics et presque tous les autres modèles populaires sont très loin de l'intelligence artificielle. Ils peuvent simplement trouver les combinaisons de valeurs prédicteurs qui permettent d'atteindre la précision d'apprentissage souhaitée, et dans les prévisions futures, ils interpolent (ou extrapolent) en quelque sorte les résultats passés pour obtenir une nouvelle prévision.

Cela signifie que si nous prenons, par exemple, Ma, Rci et Stochastic comme prédicteurs et que nous formons le réseau neuronal en utilisant les inversions en zigzag comme cible de formation, nous dirons au réseau neuronal "ces trois prédicteurs peuvent prédire les inversions. Et le réseau neuronal lui-même ne saura pas si ces prédicteurs correspondent vraiment. Il se souviendra de ces données avec une précision acceptable et dans le trading, nous espérons que les mêmes combinaisons de Ma, Rci et Stochastique seront enregistrées avant le renversement. Mais ils ne le feront pas, et ce sera un échec.

Un modèle basé sur des prédicteurs inutiles échouera, qu'il s'agisse de gbm, de neurones ou de régression. Vous pouvez même générer des séries aléatoires et les utiliser comme prédicteurs, la neuronique trouvera des combinaisons récurrentes parmi elles et les mémorisera.
C'est la tâche d'un mineur de données humain de sélectionner les prédicteurs et le but de la formation, en utilisant d'autres outils. Et la formation du modèle (le neurone) est une minuscule avant-dernière étape.

Les prédicteurs doivent garder une corrélation avec la cible sur les données d'entraînement, tant dans le passé que dans le futur. C'est pourquoi SanSanych parle de tester le modèle sur différents fichiers, juste pour s'assurer que les dépendances trouvées ne disparaissent pas avec les nouvelles données.
C'est-à-dire que nous étudions et collectons soigneusement les prédicteurs et la cible, entraînons le modèle et le testons. Ensuite, nous le testons sur des données totalement nouvelles pour le modèle. Si la précision de la prévision dans les deux cas ne coïncide pas, les prédicteurs ou la cible ne sont pas appropriés. Nous devrions en chercher d'autres.


SanSanych Fomenko:

La NS peut-elle prédire des séries non stationnaires ? Si oui, quels types de non-stationnarité ?

À mon avis, la neuronique est totalement inadaptée au travail sur les prix pour prédire les séries temporelles non stationnaires. Le comportement des prix change constamment, les modèles trouvés cessent de fonctionner après les heures de travail, tout est chaotique. Et puis quelqu'un prend un neuroncu, lui donne des prix pendant quelques mois et demande de trouver les dépendances qui se répètent pendant ce temps. Mais il n'y a pas de dépendances répétées et ce que le neurone peut trouver et retenir ne sera qu'une coïncidence aléatoire à 100%.

Si l'on veut utiliser un neurone, il faut lui donner uniquement des prix traités (et non des ohlc purs), par exemple des indicateurs.

 

Merci pour le résumé, je n'avais pas envie de lire 100 pages...).

Le processus de sélection manuelle des prédicteurs, par exemple par des combinaisons de 3 pcs, prendra beaucoup de temps. Dans MT5, il existe 38 indicateurs techniques standard. Combinaisons de 3 - nombre énorme. En outre, nous devons sélectionner les périodes, les types de prix et d'autres paramètres d'entrée. Et si nous ajoutons des indicateurs non standard intéressants, le nombre de tests augmentera encore plus.

Par conséquent, nous devrions rechercher une estimation automatisée des indicateurs. J'ai trouvé 2 méthodes communes dans les articles de Vladimir Perervenko:

1) Suppression des variables fortement corrélées - elle est implémentée dans R.

2) Sélection des variables les plus importantes - également résolu en R.

Je suis toujours en train d'écrire directement dans MT5, peut-être y a-t-il des solutions toutes prêtes pour ces questions ? Ou une méthode pour transférer les solutions de R à MT5, au moins en version simplifiée.... ?

Si nous cherchons la corrélation des indicateurs, nous cherchons simplement la différence entre chaque paire d'indicateurs -> la résumer pour chaque barre -> diviser par le nombre de barres. (ou d'une autre manière ?)

Avec les plus importants - pas complètement résolus...

Peut-être existe-t-il d'autres méthodes pour effacer les prédicteurs ?

 
elibrarius:

Mais je suis toujours en train d'écrire directement sur MT5, peut-être y a-t-il déjà des solutions prêtes pour ces problèmes ? Ou une méthode pour transférer les solutions de R à MT5, au moins dans une version simplifiée.... ?

Pour écrire tout en une fois dans MQL, mais en s'appuyant sur R n'est pas la meilleure option. Il est plus facile de développer une stratégie en R, puis d'utiliser cette bibliothèque https://www.mql5.com/ru/code/17468 pour appeler le code R depuis le conseiller expert et le tester dans le testeur.
Il est probable que beaucoup de choses seront supprimées et modifiées pendant la création et le test, des changements de paquets, de modèles, etc., il est plus facile de modifier et de tester tout cela dans R lui-même.

Enfin, lorsque vous l'aimez et que tout fonctionne, vous pouvez essayer de porter le code vers mql à la main.
De nombreux paquets utilisés dans R sont en fait écrits en C/C++ et vous pouvez trouver le code source des paquets standard icihttps://cran.r-project.org/web/packages/available_packages_by_name.html,

 
Dr. Trader:

Un résumé des cent pages précédentes :)

Neuronics et presque tous les autres modèles populaires sont très loin de l'intelligence artificielle. Ils peuvent simplement trouver les combinaisons de valeurs prédicteurs qui permettent d'atteindre la précision d'apprentissage souhaitée, et dans les prévisions futures, ils interpolent (ou extrapolent) en quelque sorte les résultats passés pour obtenir une nouvelle prévision.

Cela signifie que si nous prenons, par exemple, Ma, Rci et Stochastic comme prédicteurs et que nous formons le réseau neuronal en utilisant les inversions en zigzag comme objectif de formation, nous dirons au réseau neuronal "ces trois prédicteurs peuvent prédire les inversions. Et le réseau neuronal lui-même ne saura pas si ces prédicteurs correspondent vraiment. Il mémorisera ces données avec une précision acceptable et dans le trading, nous espérons que les mêmes combinaisons de Ma, Rci et Stochastique seront sauvegardées avant le renversement. Mais ils ne le feront pas, et ça échouera.

Un modèle formé sur des prédicteurs inutiles échouera, qu'il s'agisse de gbm, de neurones ou de régression. Vous pouvez même générer des séries aléatoires et les utiliser comme prédicteurs, la neuronique trouvera des combinaisons récurrentes parmi elles et les mémorisera.
C'est la tâche d'un mineur de données humain de sélectionner les prédicteurs et le but de la formation, en utilisant d'autres outils. Et la formation du modèle (le neurone) est une minuscule avant-dernière étape.

Les prédicteurs doivent garder une corrélation avec la cible sur les données d'entraînement, tant dans le passé que dans le futur. C'est pourquoi SanSanych parle de tester le modèle sur différents fichiers, juste pour s'assurer que les dépendances trouvées ne disparaissent pas avec les nouvelles données.
C'est-à-dire que nous étudions et collectons soigneusement les prédicteurs et la cible, entraînons le modèle et le testons. Puis nous le testons sur des données totalement nouvelles pour le modèle. Si la précision des prévisions ne coïncide pas dans les deux cas, les prédicteurs ou la cible ne sont pas appropriés. Nous devrions en chercher un autre.


À mon avis, la neuronique n'est pas adaptée à la prédiction de séries temporelles non stationnaires. Le comportement des prix change constamment, les modèles trouvés cessent de fonctionner après les heures de travail, tout est chaotique. Et puis quelqu'un prend un neuroncu, lui donne des prix pendant quelques mois et demande de trouver les dépendances qui se répètent pendant ce temps. Mais il n'y a pas de dépendances répétées et ce que le neurone peut trouver et retenir ne sera qu'une coïncidence aléatoire à 100%.

Si nous utilisons un neurone, nous ne pouvons lui donner que des prix traités (pas du pur ohlc), par exemple des indicateurs.

Le problème n'est pas la neuronique elle-même ou tout autre élément applicable aux marchés. Le problème est ce qui est entré dans l'outil DM. Et c'est une pure folie d'utiliser un prix nu comme entrée.

Le problème, ce sont les prédicteurs, comme les appelle CC. Autrement dit, le problème est de savoir comment représenter une série non stationnaire comme stationnaire. Celui qui est le plus proche de la résolution de ce problème est le meilleur.

 
Dr. Trader:

Ce n'est pas la meilleure solution de tout écrire en MQL, en s'appuyant sur R en même temps. Il est plus facile de développer la stratégie en R puis, à l'aide de cette bibliothèque https://www.mql5.com/ru/code/17468, d' appeler le code R depuis le conseiller expert et de le tester dans le testeur de stratégie.
Il est très probable que lors de la création et des tests, beaucoup de choses seront supprimées et modifiées, des paquets seront remplacés, des modèles seront modifiés, etc. Il est plus facile de tout modifier et de tout tester dans R lui-même.

Enfin, lorsque vous l'aimez et que tout fonctionne, vous pouvez essayer de porter le code vers mql à la main.
De nombreux paquets utilisés dans R sont en fait écrits en C/C++ et vous pouvez trouver le code source des paquets standard icihttps://cran.r-project.org/web/packages/available_packages_by_name.html,

C'est compliqué... Cela prendrait plus de temps que de comprendre l'algorithme (comme pour la K-corrélation ci-dessus) et de l'écrire. Je pense que la fonction consistant à essayer toutes les entrées, à calculer la corrélation et à éliminer les entrées fortement corrélées prendra quelques heures.

J'espère qu'il sera aussi facile d'utiliser d'autres solutions pour éliminer les prédicteurs).

Existe-t-il donc d'autres solutions pour trouver des prédicteurs inutiles ?