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

 
Mihail Marchukajtes:
Vous avez tout à fait raison au début. Finalement, des personnes sensées sont apparues dans la branche. Mais le modèle lui-même a un rôle prédictif, et ce n'est pas le modèle lui-même qui importe, mais la réaction du marché à ce modèle. Et si cette réaction est identique à celle de l'entraînement, le filet en tirera la bonne conclusion. Alors c'est comme ça : ....
Que faire ? Essayer d'utiliser le classificateur bayésien naïf ou étudier les j-prédicteurs ?
 
Yuri Evseenkov:
Que faire ? Essayer de tirer le classificateur naïf de Besovian, ou étudier les gPredictors ?
xQu'est-ce que le classificateur de Besovie ???? Je ne comprends pas, maintenant Reshetov a fait un truc terriblement cool, on, off, pâte. Et tu es toujours en train de déconner avec tes R. Faire un tas de manipulations de données inutiles. Et quel est l'exemple de l'iris ???? Il est intéressant de voir comment le Predictor va s'en sortir.....
 
Mihail Marchukajtes:
xQu'est-ce que le classificateur de Besov ???? Je ne comprends pas, maintenant Reshetov a fait un truc terriblement cool, on, off, pâte. Et vous continuez à tripoter vos R. Faire un tas de manipulations de données inutiles. Et quel est l'exemple de l'iris ???? Il est intéressant de voir comment le Predictor va s'en sortir.....
Oui, je n'ai découvert R qu'ici. Et dans le mot classificateur bayésien a accidentellement manqué une lettre (peut-être par Freud). Et que le programme de Reshetov est cool, je ne le discute pas. Je ne sais pas pour l'iris.
 
Yuri Evseenkov:
Je n'ai découvert R qu'ici. Et j'ai accidentellement manqué une lettre dans le mot classificateur bayésien (peut-être par Freud). Et le programme de Reshetov est cool, je ne discute pas. Je ne sais pas pour Iris.
La machine d'IShaitan Reshetov :-)
 
Mihail Marchukajtes:
xQu'est-ce que le classificateur de Besov ???? Je ne comprends pas, maintenant Reshetov a fait un truc terriblement cool, on, off, pâte. Et vous continuez à tripoter vos R. Faire un tas de manipulations de données inutiles. Et quel est l'exemple de l'iris ???? Intéressant de voir comment le Predictor va s'y retrouver.....

Puis-je voir le résultat des transactions d'hier ?

 
Mihail Marchukajtes:
La voiture d'IShaitan Reshetov :-)
Devons-nous supprimer les messages commençant par ma faute de frappe ?
 
mytarmailS:

Pourquoi les indicateurs n'ont jamais fonctionné et ne fonctionneront jamais, mon avis...

quelqu'un a-t-il essayé quelque chose ? des pensées qui vous viennent à l'esprit ? ou n'était-ce même pas clair ce dont il s'agissait ?
 
2 Dr. Trader.

Salut.

Oui, j'ai essayé de mettre en place un comité.

J'ai 1000 modèles formés. Il y a un échantillon différé de 5 ans. J'ai demandé à mon collègue des conseils sur la manière de constituer des commissions. Il a conseillé de réunir le comité sur une partie de l'échantillon différé et de le tester sur l'autre partie. C'est là que j'ai failli. Le comité s'est recyclé pour la première partie et a montré une prune sur la deuxième partie.

C'est la même histoire avec les modèles individuels. Je fais l'erreur de sélectionner un modèle par échantillonnage différé. Après cela, le modèle peut facilement se rincer.
 

Une grande partie de cela, vous le savez vous-même et l'avez fait, mais je vais écrire plus en détail pour exclure certaines hypothèses dont nous parlons de la même manière mais que nous faisons différemment.

Vous devez disposer d'une fonction d'aptitude soigneusement affinée pour estimer les paramètres du modèle. Si la fonction évalue les paramètres spécifiques du modèle et les prédicteurs sélectionnés avec un score élevé - alors il devrait y avoir de bons résultats dans le test sur les nouvelles données.
(Je garderai à l'esprit pour toute estimation que plus elle est élevée, meilleure elle est)

Par exemple, vous avez des données pour la formation, 5 ans. Et les paramètres pour gbm sont n.trees, interaction.depth, shrinkage, n.minobsinnode, distribution, bag.fraction.

La fonction d'aptitude doit se répéter au moins 50 fois dans un cycle :
1) diviser les données en 2 parties, 50%/50%. Il devrait y avoir à la fois un échantillonnage aléatoire avec échantillon et un échantillonnage séquentiel (le morceau pour la formation se trouve quelque part au milieu, et pour la validation ce qui l'entoure au début et à la fin des données brutes). Y compris les versions extrêmes, où la formation porte sur la première moitié du tableau et la validation sur la dernière, et vice versa. Je pense qu'il est important d'avoir à la fois des échantillons échantillonnés séquentiellement et des échantillons aléatoires pour la formation. Dans l'image, vous pouvez voir plus clairement quelques exemples de partitionnement aléatoire et séquentiel, les lignes vertes sont pour la formation, les jaunes sont pour la validation.


2) former le modèle sur l'échantillon de formation (les paramètres du modèle et les prédicteurs utilisés sont les mêmes tout au long du cycle, ceux que vous essayez d'estimer), puis prédire ces mêmes données avec ce modèle, et évaluer la prédiction - précision, r^2, ou autre. Par exemple, j'arrondis le résultat de la régression aux classes, et j'utilise la fonction Kappa de Cohen pour l'estimation, elle vient de caret, je l'aime mieux que la précision de la classification ou la précision de la régression. Mais cela ne fonctionne que pour deux classes. Pour trois classes, je trouve difficile de suggérer quoi que ce soit, il est important que l'estimation prenne en compte la précision de chaque classe séparément, et donne une estimation globale sur cette base.
3) Appliquer un modèle entraîné pour prédire les données d'un échantillon de validation, estimer la prédiction avec la même fonction.
4) Les deux estimations (formation et validation) doivent être proches l'une de l'autre, et aussi élevées que possible. J'utilise ce code pour le score final - (min(score1,score2) - (max(score1,score2)-min(score1,score2)) - de la valeur min est soustrait de leur delta.

À la fin de chaque itération, nous obtiendrons un certain score, qui, en raison du fractionnement aléatoire des données, peut varier de -1 à 1 (ou dans un autre intervalle, selon la fonction utilisée). Nous calculons leur valeur moyenne, et la renvoyons comme résultat de la fonction fitness. De plus, je soustrais de la valeur de fitness un petit nombre (0.0001) pour chaque prédicteur utilisé, afin de pénaliser le modèle pour un trop grand ensemble de données requises.

J'applique cette méthode avec la génétique, qui sélectionne les prédicteurs et les paramètres du modèle, en maximisant la valeur d'adaptation.

Le résultat final est un ensemble de prédicteurs et de paramètres de modèle qui, en moyenne, ont de bons résultats de prédiction sur les données d'apprentissage disponibles. Le modèle peut trouver certains modèles dans les données, en tirer des enseignements et réussir à trouver ces mêmes modèles dans les nouvelles données de validation, quel que soit l'échantillon de données utilisé pour la formation.
Comme le modèle est entraîné en utilisant à chaque fois seulement 50% des données disponibles et que les paramètres et les prédicteurs sont choisis sur cette base, il s'agit d'une condition importante pour le modèle.
Le modèle du comité doit être entraîné dans les mêmes conditions - soit par échantillonnage, soit en sélectionnant successivement 50% des données pour l'entraînement. Pour chaque nouveau modèle, un nouvel échantillon (ou ensemble séquentiel) est également nécessaire.

On ne sait pas combien de temps un tel comité pourra donner de bonnes prévisions, mais si l'on considère que les données d'entraînement portaient sur 5 ans, il est évident que le comité vivra moins longtemps que les 5 prochaines années.
Et un autre point important - si après tout le temps passé pour la création du comité, le trading sera déficitaire - alors le paquet utilisé pour les prévisions n'est pas adapté au forex. Il a peut-être trop de degrés de liberté, ou n'est tout simplement pas adapté. Il est préférable de prendre un autre paquet. Vous pouvez aussi essayer de réduire le pourcentage de données d'entraînement de 50 % à moins encore.

Tout cela à partir des conseils de ce forum et de l'expérience.

 
Dr. Trader:

Une grande partie de cela, vous le savez vous-même et l'avez fait, mais je vais écrire plus en détail pour exclure certaines hypothèses dont nous parlons de la même manière mais que nous faisons différemment.

Il faut disposer d'une fonction de fitness soigneusement affinée pour estimer les paramètres du modèle. Si la fonction évalue les paramètres spécifiques du modèle et les prédicteurs sélectionnés avec un score élevé - alors il devrait y avoir de bons résultats dans le test sur les nouvelles données.
(Je garderai à l'esprit pour toute estimation que plus elle est élevée, meilleure elle est)

Par exemple, vous avez des données pour la formation, 5 ans. Et les paramètres pour gbm sont n.trees, interaction.depth, shrinkage, n.minobsinnode, distribution, bag.fraction.

La fonction d'aptitude doit se répéter au moins 50 fois dans un cycle :
1) diviser les données en 2 parties, 50%/50%. Il devrait y avoir à la fois un échantillonnage aléatoire avec échantillon et un échantillonnage séquentiel (le morceau pour la formation se trouve quelque part au milieu, et pour la validation ce qui l'entoure au début et à la fin des données brutes). Y compris les versions extrêmes, où la formation porte sur la première moitié du tableau et la validation sur la dernière, et vice versa. Je pense qu'il est important d'avoir à la fois des échantillons échantillonnés séquentiellement et des échantillons aléatoires pour la formation. Dans l'image, vous pouvez voir plus clairement quelques exemples de partitionnement aléatoire et séquentiel, les lignes vertes sont pour la formation, les jaunes sont pour la validation.


2) former le modèle sur l'échantillon de formation (les paramètres du modèle et les prédicteurs utilisés sont les mêmes tout au long du cycle, ceux que vous essayez d'estimer), puis prédire ces mêmes données avec ce modèle, et évaluer la prédiction - précision, r^2, ou autre. Par exemple, j'arrondis le résultat de la régression aux classes, et j'utilise la fonction Kappa de Cohen pour l'estimation, elle vient de caret, je l'aime mieux que la précision de la classification ou la précision de la régression. Mais cela ne fonctionne que pour deux classes. Pour trois classes, je trouve difficile de suggérer quoi que ce soit, il est important que l'estimation prenne en compte la précision de chaque classe séparément, et donne une estimation globale sur cette base.
3) Appliquer un modèle entraîné pour prédire les données d'un échantillon de validation, estimer la prédiction avec la même fonction.
4) Les deux estimations (formation et validation) doivent être proches l'une de l'autre, et aussi élevées que possible. J'utilise ce code pour le score final - (min(score1,score2) - (max(score1,score2)-min(score1,score2)) - de la valeur min est soustrait de leur delta.

À la fin de chaque itération, nous obtiendrons un certain score, qui, en raison du fractionnement aléatoire des données, peut varier de -1 à 1 (ou dans un autre intervalle, selon la fonction utilisée). Nous calculons leur valeur moyenne, et la renvoyons comme résultat de la fonction fitness. De plus, je soustrais de la valeur de fitness un petit nombre (0.0001) pour chaque prédicteur utilisé, afin de pénaliser le modèle pour un trop grand ensemble de données requises.

J'applique cette méthode avec la génétique, qui sélectionne les prédicteurs et les paramètres du modèle, en maximisant la valeur d'adaptation.

Le résultat final est un ensemble de prédicteurs et de paramètres de modèle qui, en moyenne, ont de bons résultats de prédiction sur les données d'apprentissage disponibles. Le modèle peut trouver certains modèles dans les données, en tirer des enseignements et réussir à trouver ces mêmes modèles dans les nouvelles données de validation, quel que soit l'échantillon de données utilisé pour la formation.
Comme le modèle est entraîné en utilisant à chaque fois seulement 50% des données disponibles et que les paramètres et les prédicteurs sont choisis sur cette base, il s'agit d'une condition importante pour le modèle.
Le modèle du comité doit être entraîné dans les mêmes conditions - soit par échantillonnage, soit en sélectionnant successivement 50% des données pour l'entraînement. Pour chaque nouveau modèle, un nouvel échantillon (ou ensemble séquentiel) est également nécessaire.

On ne sait pas combien de temps un tel comité pourra donner de bonnes prévisions, mais si l'on considère que les données d'entraînement portaient sur 5 ans, il est évident que le comité vivra moins longtemps que les 5 prochaines années.
Et un autre point important - si après tout le temps passé pour la création du comité, le trading sera déficitaire - alors le paquet utilisé pour les prévisions n'est pas adapté au forex. Il a peut-être trop de degrés de liberté, ou n'est tout simplement pas adapté. Il est préférable de prendre un autre paquet. Vous pouvez aussi essayer de réduire le pourcentage de données pour la formation de 50% à moins encore.

Tout cela à partir des conseils de ce forum et de l'expérience.

Un excellent résumé.

Félicitations !