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

 
Dr. Trader:

Je ne prévois que 2 classes - "achat" et "vente", ce qui signifie que j'aurai toujours une transaction ouverte. Je travaille avec un seul modèle, je ne vois pas l'intérêt de faire deux modèles qui donnent simplement des résultats opposés.

Mais je voudrais passer progressivement à 3 classes - "acheter"/"fermer tout et ne pas échanger"/"vendre". Cela donnerait l'occasion de négocier avec une stratégie plus complexe. Je l'ai essayé quelques fois, mais j'ai eu des problèmes avec l'entraînement des modèles à trois classes, surtout si le modèle est régressif suivi de l'arrondissement du résultat aux classes.
Je pense qu'il vaut la peine d'essayer de créer deux modèles avec les classes originales 1/0/-1 transformées en 1/0/0 pour le premier modèle(achat uniquement), et 0/0/1 pour le second modèle (vente uniquement). Cela conduirait à des classes déséquilibrées dans chaque modèle (le nombre d'exemples avec une classe est beaucoup plus élevé que l'autre), mais j'ai trouvé de bonnes métriques pour évaluer les modèles qui fonctionnent dans de telles conditions - F-score et kappa. Je n'ai encore rien fait dans ce sens, mais un tel plan semble assez possible.

Les problèmes des méthodes de cette branche sont non seulement la non-stationnarité des séries temporelles (différentes échelles des mêmes modèles par prix et par temps), mais aussi la variabilité des modèles. En d'autres termes, les modèles qui, hier, annonçaient une croissance, peuvent aujourd'hui signifier une stagnation, voire une chute.

Un enseignement séparé pour l'achat et la vente résout partiellement ces problèmes. J'ai écrit il y a quelques pages comment, j'ai deux grilles, une apprenant sur les signaux d'achat (1;0) - acheter ou ne rien faire, et une autre sur la vente (-1;0) - vendre ou ne rien faire. À la sortie de ces deux grilles, il y a un commutateur qui rassemble les signaux selon un schéma (-1;0;1). Le travail de ce comité de grilles s'avère très intéressant : au début, de bons signaux sur la rétroaction, progressivement le nombre de signaux diminue, c'est-à-dire que plus souvent la réponse est 0 sur la sortie (les modèles cessent d'être reconnus et c'est mieux que les faux signaux commerciaux), et après un certain temps, il commence à apparaître de faux signaux commerciaux (les modèles ont changé). Ainsi, dès le stade où le nombre de signaux passe en dessous d'un seuil donné, on peut et on doit considérer que le besoin d'un nouvel entraînement sur de nouvelles données commence à se faire sentir.

Mais en fait, cette "formation" et cette "pratique" n'existent pas. Toutes sortes de validations croisées et de tests OOS ne donnent pas et ne peuvent pas donner l'effet attendu d'eux. Le fait est que ces astuces ne sont rien d'autre que la recherche et le choix des valeurs qui fonctionnent de manière à peu près satisfaisante à la fois dans la zone d'apprentissage et dans la zone de test, c'est-à-dire que cet ensemble de paramètres existe déjà au départ parmi toutes leurs variantes possibles et que cela revient à choisir toute la zone d'historique en une seule fois.

Néanmoins, l'utilisation de deux modèles (dans mon cas, deux grilles) est, à mon avis, la meilleure qui puisse être appliquée parmi les méthodes d'"apprentissage automatique" actuellement disponibles. Il ne s'agit pas de formation ou de coaching, mais d'une manière d'optimiser le modèle.

Il n'y a pas de véritable formation disponible aujourd'hui. Reconnaître des schémas identiques ou similaires n'est pas le résultat d'un apprentissage, mais d'une mémorisation. La formation doit impliquer une certaine forme de processus de pensée (aussi primitif soit-il), qui permettrait de raisonner et de tirer des conclusions en recevant de nouvelles informations, ainsi que la capacité de générer de nouvelles informations de manière indépendante. Le marché exige justement une telle approche - une réflexion qui, à ma connaissance, n'existe pas aujourd'hui. Et ce que nous utilisons aujourd'hui, c'est la mémorisation, pas la réflexion, malheureusement.

 
Andrey Dik:

Mais, en fait, il n'existe pas de "formation" et de "coaching". Toutes sortes de validations croisées et de contrôles OOS ne produisent pas et ne peuvent pas produire l'effet attendu d'eux. Le fait est que ces astuces ne sont rien d'autre que la recherche et la sélection des valeurs qui fonctionnent approximativement de manière satisfaisante à la fois dans la zone d'apprentissage et dans la zone de test, c'est-à-dire que cet ensemble de paramètres existe déjà parmi toutes leurs variantes possibles et que cela revient à sélectionner toute la zone d'historique en une seule fois.

Il existe des modèles qui réussissent la validation croisée mais qui échouent le test sur de nouvelles données. Et il y a des modèles qui peuvent passer la validation croisée et ensuite, d'une manière ou d'une autre, échanger quelque chose en profit. Mais si un modèle échoue à la validation croisée, il est inutile d'essayer de l'utiliser sur de nouvelles données.
À mon avis, c'est une très bonne première étape pour sélectionner les prédicteurs et les paramètres du modèle. Ensuite, un test d'anticipation pour savoir si le modèle (ou une heuristique d'ajustement des paramètres du modèle et des prédicteurs) peut fonctionner avec de nouvelles données. Si ce n'est pas le cas, nous devons changer quelque chose.

Vous avez deux neurones - vous n'avez pas obtenu leurs paramètres à partir de zéro, n'est-ce pas ? Couches, taux d'apprentissage, inhibition, contrôle du poids, et des dizaines d'autres paramètres dont disposent les neurones. Vous avez dû faire une sorte de test de roll-forward pour déterminer les paramètres appropriés, ce qui est aussi une validation croisée par nature. Je ne crois pas que vous puissiez simplement prendre deux neurones avec des paramètres par défaut et commencer à trader sur les bénéfices.

 
Dr. Trader:

Je ne crois pas que vous puissiez prendre deux neurones avec des paramètres par défaut et commencer à trader en même temps avec profit.

Pourquoi pas ?
 
Dr. Trader:

1. Il existe des modèles qui réussissent la validation croisée mais échouent au test sur de nouvelles données.

2. et il existe des modèles qui peuvent réussir la validation croisée et qui, d'une manière ou d'une autre, échangent quelque chose dans le plus.

Mais si le modèle échoue à la validation croisée, il est inutile d'essayer de négocier avec lui sur les nouvelles données.

4. À mon avis, il s'agit d'une très bonne première étape pour sélectionner les prédicteurs et les paramètres du modèle.

5. Ensuite, un test d'anticipation pour déterminer si le modèle peut s'adapter aux nouvelles données. Si ce n'est pas le cas, nous devons changer quelque chose.

6. Vous avez deux neurones - vous n'avez pas obtenu leurs paramètres du sol, n'est-ce pas ? Couches, vitesse d'apprentissage, inhibition, contrôle du poids, et des dizaines d'autres paramètres dont disposent les neurones. Vous avez dû faire une sorte de test de roll-forward pour déterminer les paramètres appropriés, ce qui est aussi une validation croisée par nature. Je ne crois pas que vous puissiez simplement prendre deux neurones avec des paramètres par défaut et commencer à trader avec profit immédiatement.

1. Oui. Cela ne signifie pas que le modèle est mauvais. Cela peut signifier soit que le modèle a une "mémoire insuffisante" pour la quantité donnée de données, soit que le jeu de paramètres qui est approprié pour l'ensemble de la parcelle avec les parcelles d'apprentissage et de validation n'a pas été trouvé. Le problème est qu'il n'y a aucun moyen de déterminer exactement quel est le problème avec l'échec du test sur les nouvelles données.

2. Oui. Cela signifie "mémoire suffisante". Vous pouvez obtenir la même chose au point 1 en réduisant simplement la quantité de données d'entraînement. Le fait que nous ayons obtenu quelque chose de positif sur les données inconnues peut être considéré comme une pure "chance", parce que nous avons trouvé des modèles, qui sont les mêmes ou très similaires à ce que le système connaît et en même temps nous avons eu les réactions exactes du marché qui se sont produites avant les modèles correspondants. Le problème est que les modèles changent constamment, progressivement et parfois brutalement, et qu'il n'y a aucune garantie pour l'avenir.

3. Oui. Mais ce n'est pas bien pire si elle était passée, pour les raisons mentionnées ci-dessus.

4. Oui, une bonne. Mais pas pour donner confiance dans la robustesse du modèle à l'avenir, mais seulement pour faire passer les validations et rien de plus.

5. La marche en avant est le seul moyen de valider le système. Le seul. À mon avis, si l'on parvient à créer un système qui est au moins 55-60% efficace (c'est-à-dire une réduction de 30% ou plus de l'efficacité par rapport aux parcelles "d'apprentissage"), alors on peut considérer que le succès est atteint. Mais même cela ne signifiera qu'un compromis entre la vitesse de changement des modèles de marché et la capacité du système à se souvenir de la quantité nécessaire d'informations, mais cela ne signifiera pas que le système est "muet" de 30%, mais cela signifiera que le système n'apprend pas 30% de modèles nouveaux ou anciens modifiés.

6. L'approche à deux neurones que j'ai mentionnée ne signifie pas "apprentissage" en tant que tel. Il s'agit de la même "mémorisation", juste appliquée de manière intelligente. J'oublie les anciens schémas et ne reconnais pas les nouveaux, comme vous, mais je ne négocie pas dans des schémas inconnus, le commerce s'estompe avec le temps, et ensuite les faux signaux se produisent. Je fais (faisais avant) des tests de valk-forward où le nouvel apprentissage avait lieu lorsque le nombre de transactions par unité de temps diminuait en dessous du seuil autorisé, j'ai donc obtenu des sections de test de longueur différente sur valk-forward avec les mêmes sections d'"apprentissage". Cela a entraîné une diminution moyenne de l'efficacité de 30 %.

 
Combinator:
Pourquoi ?

La neuronique, comme tout autre modèle, va simplement trouver des modèles dans les données disponibles. Que ces motifs correspondent à certains processus internes du Forex ou qu'ils soient simplement captés par les neurones selon le principe "multipliez quelque chose par quelque chose, si seulement le résultat coïncide" - personne ne le sait, il n'y a aucune garantie. Pour qu'il puisse détecter les processus internes du forex, sa structure (couches, connexions) doit d'une manière ou d'une autre correspondre au forex, il doit être spécifiquement configuré pour lui, ce n'est qu'alors qu'il commencera à produire de bons résultats de manière constante.

Par exemple, les réseaux neuronaux convolutifs pour la classification des images sont très populaires actuellement. Leur utilisation semble très simple (téléchargez la bibliothèque Python, et le tour est joué), mais les gens oublient que de nombreuses universités participent depuis des décennies à des concours de "reconnaissance d'images", où elles se battent pour chaque pourcentage de gain. Les trucs à la mode comme "peindre une image comme Van Gogh" ou substituer des visages dans une image sont le résultat de décennies de travail des universités, avec tous leurs étudiants de premier cycle et diplômés (et probablement leurs professeurs), qui passent beaucoup de temps à ajuster les paramètres du modèle, ou à développer de nouveaux modèles.
Pour le forex, c'est également possible, mais vous devez déployer autant d'efforts. Dans ce cas, les gains sont de véritables profits forex, c'est pourquoi les configurations modèles ne sont pas vantées et ne sont pas mises à la disposition du public, chaque nouveau participant doit recommencer.

 
Dr. Trader:

Je ne crois pas qu'il suffise de prendre deux neurones avec des paramètres par défaut et de commencer à trader en même temps avec profit.

Bien sûr, je n'y crois pas non plus. Car cela reviendrait à créer une machine à penser qui n'aurait besoin d'être entraînée qu'une seule fois dans sa vie. L'humanité est encore loin des machines pensantes.
 
Andrey Dik:

L'apprentissage séparé de l'achat et de la vente résout partiellement ces problèmes. J'ai écrit il y a quelques pages comment, j'ai deux grilles, une apprenant sur les signaux d'achat (1;0) - acheter ou ne rien faire, et une autre sur la vente (-1;0) - vendre ou ne rien faire.

Mon classifieur ternaire a également deux mailles, mais avec des couches cachées différentes et les deux classifient la prévision de la prochaine direction du prix, c'est-à-dire 1 ou -1. Il y a un interrupteur sur la sortie, qui, si l'une des grilles sort 1 et l'autre -1 (se contredisant l'une l'autre), alors l'interrupteur sort 0 - ne fait rien.

Tout est clair avec l'achat et la vente pour les valeurs de la variable dépendante, car elles peuvent être déterminées par le fait - la direction du mouvement du prix suivant le modèle. Mais une question délicate se pose ici : à quelle condition vos classificateurs binaires marquent-ils la variable dépendante à 0 - ne rien faire ?

Les faits dans la nature n'existent pas, IMHO.

 
Andrey Dik:

5. ...

6. ...

Avec ces explications, on dirait que c'est vrai. Et combien de modèles rares échangez-vous ? Disons que si nous avons des exemples de formation avec les classes"ouvrir une position d' achat" et "fermer toutes les transactions", quel sera le rapport en pourcentage de ces classes ? Je peux supposer que la classe d'achat correspond à la forte hausse du prix de plusieurs centaines de points, c'est-à-dire que la quantité de classe d'achat est d'environ 10% de tous les exemples d'entraînement ?
 
Andrey Dik:

1. Oui. Cela ne signifie pas que le modèle est mauvais. Il peut s'agir d'une "mémoire insuffisante" du modèle pour la quantité de données fournies,

2. car les modèles qui se sont produits sont identiques ou très similaires à ce que le système connaît et aux réactions exactes du marché qui se sont produites avant l'apparition des modèles correspondants. Le problème est que les modèles changent constamment, progressivement et parfois brusquement, et qu'il n'y a aucune garantie pour l'avenir.

1) Il existe un réseau qui peut préapprendre s'il reçoit des données qu'il ne connaît pas encore. Vous serez peut-être intéressé par ce sujet, le réseau s'appelle SOINNhttps://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=soinn.

2) Je suis fatigué d'écrire à ce sujet, de plus j'ai pratiquement prouvé que le marché va à l'encontre de mes propres statistiques et j'ai même expliqué la mécanique, pourquoi il fait cela, et toute la formation en forme classique ne peut pas être appliquée à cela, mais personne n'est intéressé, tout le monde fait la même chose.

Google
Google
  • www.google.com.ua
Голосовой поиск – это очень удобно! Чтобы найти нужную информацию, скажите "О'кей, Google" и произнесите запрос.
 
Yury Reshetov:

Mon classifieur ternaire a également deux mailles, mais avec des couches cachées différentes et les deux classifient le fait de la prochaine direction du prix, c'est-à-dire 1 ou -1. Il y a un interrupteur sur la sortie, qui au cas où l'une des mailles donne 1 et l'autre -1, l'interrupteur donne 0 - rien à faire.

Tout est clair avec l'achat et la vente car ils peuvent être identifiés par le fait - la direction du mouvement du prix suivant le modèle. Mais ici, nous sommes confrontés à une question délicate : à quelle condition vos classificateurs binaires marquent-ils la variable dépendante comme 0 - ne rien faire ?

En fait, il n'existe pas de tels faits dans la nature, IMHO.

VENTE ACHAT Interprétation

-1 0 vendre

0 0 clôture

0 1 achat

-1 1 clôture

Voici le tableau des interrupteurs. Vous pouvez y voir que les signaux se produisent lorsque les signaux de la grille sont présents et ne se contredisent pas. Après l'entraînement, les modèles sont reconnus et une transaction réussie a lieu. Avec le temps, les lectures commencent à se contredire (out 0 - fence) ou les deux grilles cessent de reconnaître les modèles (out 0 - fence). Ainsi, au fil du temps, le nombre de transactions diminue, c'est-à-dire que l'on applique le principe "si vous n'êtes pas sûr, ne faites pas de transactions".

Mais votre question semble être différente : comment amener le réseau concerné à acheter/vendre au lieu de rester sur la touche ? - La réponse est simple, un système de points. Des points sont attribués pour les réponses correctes et des pénalités pour les réponses incorrectes et la clôture. Nous devons choisir le ratio des points, c'est aussi une grande tâche, car nous devons parvenir à un travail coordonné des deux grilles à la fin, mais le résultat en vaut la peine.

À mon avis, les modèles sont différents pour l'achat et la vente. C'est l'idée, comme cela peut l'être dans votre cas.