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

 
elibrarius #:

Nous avons ajouté aujourd'hui un tel prédicteur de la distance par rapport à la barre actuelle. Vous pouvez avoir un numéro ou juste une heure. J'ai pris le temps.

Tout est plus ou moins clair avec le temps cyclique. Je ne comprends pas grand-chose au temps linéaire - sera-t-il différent pour le plateau et l'avant ? Ou bien la "barre de courant" est-elle prise indépendamment pour chaque échantillon ?

J'ai eu l'idée de prendre une régression logistique linéaire ordinaire et de voir la signification de la différence du coefficient zéro au moment (ou à une certaine fonction du temps) ou de comparer cette signification avec celle d'autres prédicteurs.

 
Aleksey Nikolayev #:

Le temps cyclique est plus ou moins clair. Ce n'est pas très clair avec le temps linéaire - sera-t-il différent pour un plateau et un avant ? Ou bien la "barre de courant" est-elle prise indépendamment pour chaque échantillon ?

J'ai eu l'idée de prendre une régression logistique linéaire ordinaire et de voir la signification d'un coefficient de différence par rapport à zéro au moment (ou à une certaine fonction du temps) ou de comparer cette signification avec celle d'autres prédicteurs.

De manière générale, l'idée de nourrir le temps linéaire n'est pas bonne. Au fait, oui : sur le plateau, c'est différent pour chaque ligne et sur l'avant, nous n'analysons qu'une seule ligne à la fois, c'est-à-dire que l'heure sera toujours actuelle (ce qui n'était pas le cas dans le plateau), et le numéro toujours = 0 (et dans le plateau, de 0 à 5000). C'est-à-dire que ni l'heure ni le numéro de plateau ne peuvent être fournis. C'est ce que le test a montré.
 
Donc une onde sinusoïdale à l'entrée
 

Une onde sinusoïdale est destinée à un temps cyclique comme l'heure de la journée ou le jour de la semaine. Et là, à l'origine (Aleksey Vyazmikin), on parlait d'un temps linéaire ordinaire pour essayer de saisir l'effet de la non-stationnarité sous la forme d'une dégradation du modèle. À mon avis, des modèles simples et facilement interprétables devraient être utilisés pour résoudre de tels problèmes. Les modèles complexes sont destinés à des fins pratiques, les modèles simples à une analyse préliminaire.

Toutefois, on peut douter de l'utilité pratique d'un tel bricolage dans ce cas particulier. Il est fort probable que nos schémas n'évoluent pas de manière uniforme dans le temps, mais de manière cyclique (mais sans périodicité).

 
Aleksey Nikolayev #:

Une onde sinusoïdale est destinée à un temps cyclique comme l'heure de la journée ou le jour de la semaine. Et là, à l'origine (Aleksey Vyazmikin), on parlait d'un temps linéaire ordinaire pour essayer de saisir l'effet de la non-stationnarité sous la forme d'une dégradation du modèle. À mon avis, des modèles simples et facilement interprétables devraient être utilisés pour résoudre de tels problèmes. Les modèles complexes sont destinés à des fins pratiques, les modèles simples à une analyse préliminaire.

Toutefois, on peut douter de l'utilité pratique d'un tel bricolage dans ce cas particulier. Il est fort probable que nos régularités évoluent dans le temps non pas de manière uniforme, mais de manière cyclique (mais sans périodicité).

C'est comme dans les fractales. Ils sont cycliques mais pas périodiques. Tout est correct.
 
elibrarius #:
En général, l'idée de nourrir le temps linéaire est mauvaise. Au fait, oui : sur le plateau, c'est différent pour chaque ligne et sur l'avant, nous n'analysons qu'une seule ligne à la fois, c'est-à-dire que l'heure sera toujours actuelle (ce qui n'était pas le cas dans le plateau), et le numéro toujours = 0 (et dans le plateau de 0 à 5000). C'est-à-dire que ni l'heure ni le numéro de plateau ne peuvent être fournis. C'est ce que le test a montré.

Mais je vais réessayer avec le numéro... Parce que le numéro zéro sera inclus dans la partie de l'arbre qui < une certaine division (par exemple <5000) C'est-à-dire qu'une partie de l'arbre pour la redirection sera utilisée. Pas tout. Quelque chose que j'ai décidé de prendre le temps de tester, par erreur.

Mais comment faire un partage par numéro était à une distance optimale pour l'avant ?

 

Je l'ai essayé. Le modèle avec 5000 barres d'historique à apprendre, après l'ajout du numéro de ligne comme caractéristique, pour l'achat s'est amélioré, pour la vente en partie pire, en partie meilleur.
En même temps, si nous enseignons sur 10000 barres, les deux modèles échouent. C'est-à-dire que la tâche principale d'ajouter le numéro de ligne pour la détermination automatique de la longueur d'historique nécessaire n'a pas été remplie.

Jusqu'à présent, il nous suffit d'optimiser/sélectionner manuellement la longueur de l'historique pour la formation.

 

Il semble que l'idée de base de l'utilisation de métriques de trader personnalisées est qu'elles sont utilisées au stade de la sélection du modèle. Au stade de la formation, les métriques standard sont utilisées. Probablement, c'est quelque chose comme ce que Maxim Dmitrievsky a écrit plus tôt sur ce sujet.

Un petit article pour illustrer l'approche.

The training dilemma: loss vs profit function?
The training dilemma: loss vs profit function?
  • Haris (Chariton) Chalvatzis
  • medium.com
In the world of machine learning, models are trained by minimizing some variation of a loss function. For example, when we try to predict the median house value of a specific zip code, we are dealing with a regression type problem and prime suspects for the loss function, to be used to train our model, are the Mean Squared Error (MSE), Mean...
 
Aleksey Nikolayev #:

Apparemment, l'idée principale de l'utilisation des métriques du trader personnalisé est qu'elles sont utilisées au stade de la sélection du modèle.

Cependant, il existe des idées d'utilisation de mesures personnalisées au stade de la formation. En même temps, ils ne sont pas tout à fait semblables à ceux des commerçants, mais plutôt des versions modifiées de ceux du MO.

Peut-être que les mesures des commerçants conduisent à une mauvaise conditionnalité. Cela rappelle, par exemple, l'utilisation de l'entropie croisée au lieu du taux d'erreur original qui nous intéresse (on dit que ce dernier est peu sensible).

Il est nécessaire de réduire d'une manière ou d'une autre les écarts théoriques et pratiques entre la formation en RI et l'optimisation chez le testeur.

 
Aleksey Nikolayev #:

Cependant, il existe des idées d'utilisation de métriques personnalisées dès le stade de la formation. Cependant, ils ne sont pas exactement comme les mesures des commerçants, mais plutôt des variantes modifiées des mesures standard du MEO.

Peut-être que les mesures des commerçants conduisent à une mauvaise conditionnalité. Cela ressemble, par exemple, à l'utilisation de l'entropie croisée au lieu de la fréquence d'erreur originale d'intérêt(on parle d'une mauvaise sensibilité de cette dernière).

Faites confiance mais vérifiez.
Aleksey Nikolayev #:
Nous devons d'une manière ou d'une autre réduire les écarts théoriques et pratiques entre la formation en MO et l'optimisation chez le testeur.

Lorsque je faisais des modèles avec TP/SL, la précision était absolue. Dans le modèle et dans le testeur, les transactions ont été ouvertes sur les mêmes barres et fermées avec les mêmes TP/SL. Mais la rentabilité était d'environ 0.
Je testais en utilisant les prix ouverts. Mais il y a un problème avec eux... L'écart minimum est utilisé dans la barre.

C'est-à-dire qu'une partie des ordres et des TP/SL dans le testeur se déclenchera à

ASK HIGH = BID HIGH + écart minimum.

Ceux qui seraient déclenchés dans le commerce réel ne fonctionneront pas.

ASK HIGH (réel) = BID HIGH + Ecart calculé par l'ASK maximum

À plusieurs reprises, j'ai suggéré aux développeurs d'enregistrer dans les barres non pas l'écart minimum, mais l'écart minimum.

Écart = demande haute - offre haute.

Avec un tel écart, le test par les prix ouverts serait plus proche du test par les ticks réels.

Par exemple, le spread minimum sur une barre = 0,00002, tandis que le spread = ASK HIGH - BID HIGH = 0,00020. C'est-à-dire qu'en réalité le prix ASK était plus élevé que celui du testeur de 0.00018. Où les ouvertures/fermetures du commerce auraient pu avoir lieu.

Mais il n'y a pas eu de réponse de MetaQuotes (en russe)

PS : Pour être plus précis, il faut également calculer l'écart entre la demande et la demande basse.