L'Apprentissage Automatique dans le trading : théorie, modèles, pratique et trading algo - page 2903

 
vladavd #:

La nouveauté dans ce cas est un zigzag et un canal le long de ce zigzag, c'est l'avant-garde de l'ingénierie.

Ce n'est pas tout ce que vous voyez.

C'est seulement 5% de ce qui est autorisé.))

lynxntech #:

c'est comme le dernier mot et un hamburger.)

il faut toujours se donner une chance de se justifier.

 

Hé, tout le monde !

Quelqu'un pourrait peut-être me donner quelques conseils. J'essaie de prédire la direction d'une paire de devises pour la journée (hausse ou baisse) en utilisant le modèle "DecisionTreeClassifier".

Je ne prends que 5 prédicteurs pour la prédiction, le résultat de la prédiction est une tendance à la hausse (1) ou à la baisse (-1). Taille du jeu de données : 999 lignes et 6 colonnes (jeu de données joint).

Mais j'ai rencontré un problème lorsque l'augmentation de "max_depth" augmente tout le temps la précision sur les échantillons d'entraînement et de test simultanément. La précision sur l'échantillon de test cesse d'augmenter et devient une constante à max_depth=22, égale à 0,780000. Résultats pour différentes valeurs de max_depth :


1) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=3)

Précision sur l'ensemble d'apprentissage : 0.539424 Précision sur l'ensemble de test : 0.565000

2) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=5)

Précision sur l'ensemble d'apprentissage : 0.579474 Précision sur l'ensemble de test : 0.585000

3) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=7)

Précision sur l'ensemble d'apprentissage : 0.637046 Précision sur l'ensemble de test : 0.640000

4) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=9)

Précision surl'ensemble d'apprentissage : 0.667084 Précision sur l'ensemble de test : 0.700000

5) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=11)

Précision sur l'ensemble d'apprentissage : 0,700876 Précision sur l'ensemble de test : 0,710000

6) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=13)

Précision sur l'ensemble d'apprentissage : 0.720901 Précision sur l'ensemble de test : 0.720000

7) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=15)

Précision sur l'ensemble d'apprentissage : 0,734668 Précision sur l'ensemble de test : 0,740000

8) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=17)

Précision sur l'ensemble d'apprentissage : 0,747184 Précision sur l'ensemble de test : 0,760000

9) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=19)

Précision sur l'ensemble d'apprentissage : 0.755945 Précision sur l'ensemble de test : 0.765000

10) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=22)

Précision sur l'ensemble d'apprentissage : 0.760951 Précision sur l'ensemble de test : 0.780000


Je suis extrêmement confus par cette situation, car j'ai entendu dire qu'il ne fallait pas utiliser max_depth plus de 3-4, parce qu'un réentraînement est possible. Mais le modèle se comporte-t-il ainsi lors du recyclage, il ressemble plus à un modèle sous-entraîné.

.

Je ne comprends pas, dans une telle situation, quelle profondeur de l'arbre de décision choisir ou quel modèle même et, en général, s'il vaut la peine de travailler davantage dans cette direction, peut-être qu'il manque quelque chose (mais, par exemple, l'ensemble de données n'est pas de 100 lignes), s'il est possible d'ajouter plus de prédicteurs et combien peuvent être ajoutés à une telle taille de l'ensemble de données (j'ajouterais 2 à 5 pièces supplémentaires).

Le code est simple, je le joins avec le jeu de données :



 
Elvin Nasirov #:

Je suis très confus par cette situation, car j'ai entendu dire qu'il ne fallait pas utiliser max_depth plus de 3-4, parce que le réentraînement est possible. Mais est-ce ainsi que le modèle se comporte lorsqu'il est réentraîné, il ressemble plus à un modèle sous-entraîné.

.

Je ne comprends pas, dans une telle situation, quelle profondeur d'arbre de décision choisir ou quel modèle même et, en général, s'il vaut la peine de travailler davantage dans cette direction, peut-être qu'il manque quelque chose (mais, par exemple, l'ensemble de données n'est pas de 100 lignes), s'il est possible d'ajouter d'autres prédicteurs et combien peuvent être ajoutés à une telle taille de l'ensemble de données (j'ajouterais 2 à 5 pièces supplémentaires).

Le code est simple, je le joins avec le jeu de données :

Bonjour.

Plus de splits - plus de mémoire = risque d'apprentissage de l'échantillon.

Je ne suis pas compétent en python, mais.. :

1. Essayez de diviser l'échantillon sans le mélanger.

2. Il me semble toujours que vous apprenez sur l'ensemble de l'échantillon, et non sur un échantillon réduit.

 
Aleksey Vyazmikin #:

Bonjour.

Plus de fractionnements - plus de mémoire = risque d'apprentissage d'un échantillon.

Je ne maîtrise pas le langage python, mais.. :

1. Essayez de diviser l'échantillon sans le mélanger.

2. Il me semble que vous vous entraînez sur l'ensemble de l'échantillon et non sur un échantillon réduit.

Je vous remercie ! Il semble que vous ayez raison.

J'ai remplacé "clf_20.fit(X, y)" par "clf_20.fit(X_train, y_train)" dans le code ci-dessus et l'image a changé presque à 50/50.

 
Elvin Nasirov #:

Je vous remercie ! Je pense que vous avez raison.

J'ai remplacé "clf_20.fit(X, y)" par "clf_20.fit(X_train, y_train)" dans le code ci-dessus et l'image a changé presque à 50/50.

Il est normal d'obtenir un tel résultat - un résultat trop bon est toujours une raison de commencer à chercher un bogue dans le code.

 
Aleksey Vyazmikin #:

Il est normal d'obtenir ce résultat - un résultat trop bon est toujours une raison de commencer à chercher un bogue dans le code.

J'ai une autre question, si vous le permettez.

Il s'avère que le meilleur résultat est obtenu avec max_depth=1 et ressemble à ceci :

Précision sur l'ensemble d'apprentissage : 0.515021 Précision sur l'ensemble de test : 0.503333

Ce résultat semble extrêmement mauvais et égal à la probabilité de tirer à pile ou face. Ou pouvons-nous considérer qu'il s'agit d'un bon résultat et conclure que nous avons trouvé une formalisation qui nous permet de niveler la probabilité du mouvement du forex et la probabilité du résultat à pile ou face ?

En d'autres termes, la situation est telle que pour chaque combinaison de prédicteurs, il existe deux variantes équivalentes de mouvement du marché : à la hausse ou à la baisse, et il est donc nécessaire de compléter l'ensemble de données avec quelque chose qui pourrait spécifier que la combinaison actuelle est toujours à la hausse ou à la baisse.

 
Elvin Nasirov #:

Une autre question a été soulevée, si je puis me permettre.

Il s'est avéré que le meilleur résultat est obtenu avec max_depth=1 et ressemble à ceci :

Précision sur l'ensemble d'apprentissage : 0.515021 Précision sur l'ensemble de test : 0.503333

Ce résultat semble extrêmement mauvais et égal à la probabilité de tirer à pile ou face. Ou pouvons-nous considérer qu'il s'agit d'un bon résultat et conclure que nous avons trouvé une formalisation qui nous permet de niveler la probabilité d'un mouvement de change et la probabilité d'un jeu de pile ou face ?

En d'autres termes, la situation est telle que pour chaque combinaison de prédicteurs, il existe deux variantes équivalentes de mouvement du marché : à la hausse ou à la baisse, et il est donc nécessaire de compléter l'ensemble de données avec quelque chose qui pourrait spécifier que la combinaison actuelle est toujours à la hausse ou à la baisse.

Lisez d'abord d'autres mesures permettant d'évaluer les résultats de la formation : le rappel (exhaustivité) et la précision (exactitude), qui sont particulièrement pertinents pour un échantillonnage déséquilibré. La stratégie peut consister à produire un résultat financier positif pour la classification avec la même probabilité de résultats corrects et incorrects.

Considérons un balisage cible plus complexe mais logique. Il est plus difficile de déterminer comment une journée se terminera par rapport à son ouverture que de déterminer la probabilité d'une hausse et d'une baisse d'un certain pourcentage de l'ouverture de la journée - il y a une probabilité d'identifier un modèle intrajournalier.

Pour moi, l'échantillon est trop petit.

Pensez à créer des prédicteurs qui peuvent décrire le marché. A partir des indicateurs des prédicteurs, il devrait être possible, à mon avis, de restituer la situation sur le graphique sans le regarder.

Je recommande d'essayer CatBoost pour l'entraînement - il construit des modèles rapidement et la question du transfert des modèles en code pour travailler dans MT5 sans béquilles est résolue.

 
Elvin Nasirov #:

Il s'avère que le meilleur résultat est obtenu lorsque max_depth=1 et se présente comme suit :

Précision sur l'ensemble d'apprentissage : 0.515021 Précision sur l'ensemble de test : 0.503333

Je constate aussi souvent que le meilleur résultat est obtenu à une profondeur de 1, ce qui signifie qu'une seule division sur l'une des caractéristiques a été effectuée. Une division supplémentaire de l'arbre conduit à un surentraînement sur l'ensemble d'entraînement et à de moins bons résultats sur l'ensemble de test.

 
elibrarius #:

Je constate aussi souvent que le meilleur résultat est obtenu à une profondeur de 1, ce qui signifie qu'une seule division a été effectuée sur l'une des caractéristiques. Un fractionnement supplémentaire de l'arbre entraîne un réentraînement sur l'arbre et une détérioration des résultats sur le test.

J'ai vérifié les résultats hier, il s'est avéré que le modèle pour tous les cas a donné une prédiction de "1", en moyenne et donc 50/50. On peut se passer du modèle - tout le temps en disant "up", ça va aller.

 
Trader comme un pro trader professionnel
h ttps://youtu.be/RS9jRVmW1j4

Voici ce que sont les niveaux de support et de résistance selon moi.....

Tout le monde ne le comprendra pas, mais si c'est le cas, bravo à eux....

EARNING SEASON KICKS OFF - Trading Futures Live
EARNING SEASON KICKS OFF - Trading Futures Live
  • 2023.01.13
  • www.youtube.com
Join our FREE Discord community https://discord.gg/zhvUwUUhFirst 5 days of January bullish were followed by Full-year gains 83% of the time since 1950.Earnin...