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

 
fxsaber #:

Je l'ai réalisé pour mes propres besoins et j'ai partagé le code de fonctionnement. Tous ceux qui en ont besoin peuvent y jeter un coup d'œil.

Où puis-je voir le code final ?

 

Quelqu'un a-t-il déjà essayé de travailler avec des "valeurs aberrantes" ? Et je ne parle pas des valeurs aberrantes en tant qu'erreur, mais d'événements rares.

C'est amusant, mais il s'est avéré que dans certaines chaînes d'échantillons, les valeurs aberrantes sont enregistrées dans plus de 50 % des prédicteurs....

Ces valeurs aberrantes sont-elles prises en compte dans les modèles ?

Il semble donc que ce ne soit pas seulement pour les NS que cela soit critique....

 
fxsaber #:

Je ne fais pas de comparaisons, je fournis un code que chacun peut mesurer dans son propre cas.

La longueur de la chaîne de 100 correspond à la longueur du motif. Vous n'avez probablement pas besoin de plus que cela.

La mémoire est limitée à 15 000 échantillons en raison de la taille quadratique de la matrice de corrélation. Plus il y a d'échantillons, mieux c'est. C'est pourquoi j'ai écrit un programme maison où il peut y en avoir un million.

Je n'ai ni l'envie ni le temps de me consacrer à une comparaison objective. Je l'ai créé pour mes propres besoins et j'ai partagé le code de travail. Quiconque en a besoin le verra.

Les variantes de la matrice accélération - sortie doivent être stockées dans uchar. En règle générale, nous modifions les pourcentages par incréments de 1 % et nous regardons quelque chose. uchar - jusqu'à +- 128. Vous pouvez modifier votre propre conception pour uchar, et alglib aussi, le code est disponible. Les matrices totales peuvent être 8 fois plus grandes avec la même mémoire.

 
Aleksey Vyazmikin #:

Quelqu'un a-t-il déjà essayé de travailler avec des "valeurs aberrantes" ? Et je ne parle pas des valeurs aberrantes en tant que bogue, mais plutôt d'événements rares.

C'est amusant, mais il s'est avéré que dans certaines chaînes de l'échantillon, la valeur aberrante est corrigée dans plus de 50 % des prédicteurs....

La question de savoir si ces valeurs aberrantes sont incluses dans les modèles est tout à fait volontaire, comme il s'avère.

Il semble donc que ce ne soit pas seulement pour les NS que cela soit critique....

Cygnes blancs/noirs... fxsaber en a parlé dans son blog. J'ai connu de telles variantes parmi de nombreuses autres : j'ai négocié pendant environ une semaine tous les deux ans. En général, l'expert s'assoit et attend le mouvement. Mais il s'agit d'une performance idéale dans le testeur. Dans la vie réelle, les dérapages (ils sont énormes pendant le mouvement) peuvent tout gâcher.

 
Forester #:

Cygnes blancs/noirs..... fxsaber en a parlé dans son blog. Parmi de nombreuses variantes, j'ai connu la suivante : trading pendant environ une semaine tous les deux ans. En général, l'expert s'assoit et attend le mouvement. Mais il s'agit là d'une performance idéale pour le testeur. Dans la vie réelle, les dérapages (ils sont énormes pendant le mouvement) peuvent tout gâcher.

J'ai essayé de supprimer les lignes de l'échantillon où il y a beaucoup de valeurs aberrantes.

Et l'entraînement a radicalement changé.

Si avant le test, il y avait de bons résultats en moyenne dans le plus, et à l'examen - presque tous dans le moins - ceci sur 100 modèles, alors le nettoyage des valeurs aberrantes a changé le résultat - les résultats du test se sont beaucoup détériorés (profit moyen proche de zéro), et à l'examen au contraire - un grand nombre de modèles sont devenus dans le plus.

Je ne suis pas encore prêt à dire qu'il s'agit d'une régularité, j'essaierai de le vérifier sur d'autres échantillons.

En outre, la question de savoir comment déterminer au mieux la valeur aberrante reste ouverte pour moi. Pour l'instant, je me contente de prendre jusqu'à 2,5 % de chaque côté, tant que les rangs ne dépassent pas cette limite.

 
En général, on a l'impression qu'il existe un cycle de quelques années après la formation, au cours duquel les modèles commencent à trouver soudainement des modèles dans les nouvelles données.
 
Aleksey Vyazmikin #:

J'ai essayé de supprimer les lignes de l'échantillon où il y a beaucoup de valeurs aberrantes.

Et la formation a radicalement changé.

Si, au début du test, il y avait de bons résultats en moyenne plus, et à l'examen - presque tous en moins - ceci à partir de 100 modèles, alors le nettoyage des valeurs aberrantes a changé le résultat - les résultats du test sont devenus beaucoup plus mauvais (profit moyen proche de zéro), et à l'examen au contraire - de nombreux modèles sont devenus plus.

Je ne suis pas encore prêt à dire qu'il s'agit d'une régularité, j'essaierai de vérifier sur d'autres échantillons.

En outre, la question de savoir comment déterminer au mieux la valeur aberrante reste ouverte pour moi. Pour l'instant, je me contente de prendre jusqu'à 2,5 % de chaque côté, tant que les rangs ne dépassent pas cette limite.

Si vous ne prenez que 2,5 % (ou autre), le nombre de valeurs aberrantes dépend de la distribution, ce qui n'est pas correct.

Il vaut mieux prendre un quantile avec 100 parcelles et ne pas supprimer les valeurs avant 1% et après 99%, mais les remplacer par des valeurs de 1% et 99%. Il n'est pas possible de supprimer quoi que ce soit.

 
fxsaber #:
NumPy semble avoir un algorithme différent de celui d'ALglib, puisqu'il diffère grandement en termes de performances. Mais il est clair que dans l'immense communauté Python, il y a eu un algorithmicien très fort qui a consacré un temps décent à l'étude de cette question.

Le code source est ouvert, vous pouvez y jeter un coup d'œil. La fonction de calcul de la corrélation, sur le côté droit, il y a [source], après avoir cliqué dessus, vous serez dirigé vers le code. Nous sommes intéressés par les lignes 2885-2907. Dans la ligne 2889 la covariance est utilisée, après avoir cliqué sur cov, toutes les mentions de cov dans le code apparaîtront à droite, après avoir cliqué sur la ligne avec def cov.... permet d'accéder à la fonction de covariance, et ainsi de suite. MQL est un langage de type C, tous les langages de type C sont similaires à ~90%, vous pouvez comprendre C#, Java, Python, JavaScript sans trop de problèmes.

 
СанСаныч Фоменко #:

Si vous ne prenez que 2,5 % (ou autre), le nombre de personnes supprimées dépend de la répartition, ce qui n'est pas correct.

Il vaut mieux prendre un quantile avec 100 parcelles et ne pas supprimer avant 1% et après 99%, mais remplacer par des valeurs de 1% et 99%. Vous ne pouvez pas supprimer quoi que ce soit.

Je prends un pourcentage des données, pas un pourcentage de la plage. Ainsi, s'il y a beaucoup de données (elles sont denses), l'arrêt sera rapide sur l'échelle de l'intervalle.

Sauter de la moyenne et de la variance s'est avéré peu efficace.

J'ai exploré la question du remplacement par d'autres valeurs (mais je l'ai fait uniquement pour la quantification), et j'ai aimé l'option du remplacement par des valeurs aléatoires du sous-ensemble restant, en tenant compte de la probabilité.

 
Aleksey Vyazmikin #:

Je prends un pourcentage des données, pas un pourcentage de la plage. Ainsi, s'il y a beaucoup de données (c'est dense), l'arrêt sera rapide sur l'échelle de la plage.

Sauter de la moyenne et de la variance s'est avéré peu efficace.

J'ai exploré la question du remplacement par d'autres valeurs (mais je l'ai fait uniquement pour la quantification), et j'ai aimé l'option du remplacement par des valeurs aléatoires du sous-ensemble restant, en tenant compte de la probabilité.

Les quantiles sont des probabilités. Nous supprimons/remplaçons donc les données dont la probabilité de tomber dans l'intervalle inférieur à 1 %/supérieur à 99 % ou d'autres valeurs. Il n'est pas possible de couper des quantités - nous avons des distributions asymétriques et à queue.

Ils écrivent que la valeur de remplacement est mieux considérée comme une prédiction de cette quantité par le MOE. Mais cela me semble un peu exagéré.