L'Apprentissage Automatique dans le trading : théorie, modèles, pratique et trading algo - page 30
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
2. Voir la vidéo :
Désolé, mais c'est l'absurdité habituelle d'un doctorant sans formation...
Comme on dit, ce que j'achète, je le vends. On m'a posé une question, j'ai donné une vidéo avec une réponse détaillée. Le conférencier n'est pas intelligent, il débite la théorie de l'apprentissage statistique.
voir. Vapnik V.N. Théorie de l'apprentissage statistique. NY : John Wiley, 1998.
SanSanych Fomenko:
1. Une détérioration notable de la généralisabilité, si nous supprimons au moins un prédicteur informatif de l'échantillon.
Croyez-moi, malheureusement, cela ne prouve rien. De plus, si l'ensemble des prédicteurs est mauvais (beaucoup de bruit), cet effet sera d'autant plus fort que le bruit est important. Cela s'explique très simplement : plus il y a de bruit, plus il est facile pour l'algorithme de trouver une valeur "convenable".
Comme on dit, au goût et à la couleur ...
SanSan Fomenko:
En ce qui concerne votre dossier.
1. J'ai échoué à construire 6 modèles de classification sur vos données : erreur supérieure à 50%. Si vous voulez, je peux poster les résultats ici
SanSanych Fomenko:
2. La raison de ce résultat est que vous avez un très mauvais ensemble de prédicteurs - du bruit, c'est-à-dire des prédicteurs non pertinents pour la variable cible. Les prédicteurs 6, 7 et 8 ont un certain pouvoir prédictif, mais très faible. Je ne travaille pas avec de tels prédicteurs. Les autres ne sont que du bruit.Eh bien, eh bien. Sans bruit, n'importe quel idiot est capable de classer correctement. Le bruit est là et en quantité décente. Il y a aussi des informations utiles. Voici, par exemple, les résultats de l'ancienne libVMR 3.01:
/**
* La qualité de la modélisation en dehors de l'échantillon :
*
* TruePositives : 245
* TrueNegatives : 113
* Faux positifs : 191
* Faux négatifs : 73
* Total des motifs dans les échantillons avec statistiques : 622
* Total des erreurs hors échantillon : 264
* Sensibilité de la capacité de généralisation : 56.19266055045872%.
* Spécificité de la capacité de généralisation : 60,752688172043015%.
* Capacité de généralisation : 16,94534872250173%.
* Indicateur de Reshetov : 0.1075044213677977
*/
Je veux dire, j'ai gagné presque 17% en capacité de généralisation.
Les performances du nouveau sont nettement meilleures.
Utilisez la validation croisée pour choisir le nombre de composants. Meilleure valeur sur la validation croisée puis vérification sur l'ensemble de validation.
Il est ressorti pas bon encore une fois. J'aurais pris 20 composants, car min(trainwinrate. validate1winrate, validate2winrate) est le plus grand par rapport aux autres quantités de composants. Et j'ai obtenu un résultat de ~55% dans le fronttest, encore pire qu'avant. Un modèle étrange est apparu - le pourcentage de gain est un peu plus de 50% (non adapté au forex), la validation croisée ne fonctionne pas, l'importance des prédicteurs ne peut être retirée. Je ne peux que l'imprimer et l'accrocher au mur :)
* TruePositives : 245
* TrueNegatives : 113
* Faux positifs : 191
* Faux négatifs : 73
Il est ressorti pas bon à nouveau. J'aurais pris 20 composants, car min(trainwinrate. validate1winrate, validate2winrate) est le plus grand par rapport aux autres quantités de composants. Et j'ai obtenu un résultat de ~55% dans le fronttest, encore pire qu'avant. Un modèle étrange est apparu - le pourcentage de gain est un peu plus de 50% (non adapté au forex), la validation croisée ne fonctionne pas, l'importance des prédicteurs ne peut être retirée. Je ne peux que l'imprimer et l'accrocher au mur :)
Voici les résultats de ma grande expérience. En raison d'un bug dans le vent, le code a été interrompu et je n'ai pas fini d'apprendre sur tous les personnages. Mais cela me suffit pour l'instant. Bons résultats sur l'eurusd.
Je n'ai montré que les valeurs maximales que j'ai trouvées sans spécifier aucun paramètre. Il y a déjà un bon résultat. Les subtilités de la mise en place du GBM aident.
En prédisant l'eurusd 512 minutes à l'avance, vous pouvez gagner 1,5 pips par transaction, ai-je raison ? Et l'écart est également pris en compte ? Il est également important de connaître le drawdown maximal pour cette période, cela n'a pas de sens de trader pour même 10 pips, si le drawdown pour cette période était de deux cents. Pour estimer le trade, il serait bon d'utiliser le ratio de Sharpe mais je ne l'ai pas vu dans R, pour commencer nous pouvons utiliser le facteur suivant : (profit final)/(drawdown maximal de l'équité sur tout le temps).
Par exemple, supposons que nous ayons un signal 1. Le trader a gagné 1000% pendant l'année mais son drawdown maximal était de 50%. En même temps, le signal 2 n'a que 600% de profit sur l'année, mais le drawdown maximal était de 25%. Il peut sembler que le trader 1 est meilleur (en termes de profit), mais en fait il ne l'est pas, il risque juste deux fois plus. Le premier trader a 1000/50 = 20, le second a 600/25 = 24. Il est donc préférable de s'inscrire au deuxième signal, et de doubler le risque si vous voulez risquer 50 % du dépôt.
De plus, dans votre expérience, il est important d'évaluer les risques. Le trading dans un petit intervalle peut s'avérer beaucoup plus rentable, car le modèle peut réagir à temps aux pics de prix et gagner sur ceux-ci, plutôt que d'attendre un énorme drawdown au risque d'attraper un stop loss.
Chers collègues, si vous avez le temps, pouvez-vous me poser des questions sous l'article ?https://habrahabr.ru/company/aligntechnology/blog/303750/.
Parce que Habr est silencieux !
De très nombreuses lettres.
En prédisant l'eurusd 512 minutes à l'avance, vous pouvez gagner 1,5 pips par transaction, ai-je raison ? Et l'écart est également pris en compte ? Il est également important de connaître le drawdown maximal pour cette période, cela n'a pas de sens de trader pour même 10 pips, si le drawdown pour cette période était de deux cents. Pour estimer le trade, il serait bon d'utiliser le ratio de Sharpe mais je ne l'ai pas vu dans R, pour commencer nous pouvons utiliser le facteur suivant : (profit final)/(drawdown maximal de l'équité sur tout le temps).
Par exemple, supposons que nous ayons un signal 1. Le trader a gagné 1000% pendant l'année mais son drawdown maximal était de 50%. En même temps, le signal 2 n'a que 600% de profit sur l'année, mais le drawdown maximal était de 25%. Il peut sembler que le trader 1 est meilleur (en termes de profit), mais en fait il ne l'est pas, il risque juste deux fois plus. Le premier trader a 1000/50 = 20, le second a 600/25 = 24. Il est donc préférable de s'inscrire au deuxième signal, et de doubler le risque si vous voulez risquer 50 % du dépôt.
Dans votre expérience, il est également important d'évaluer les risques. Le trading dans un petit intervalle peut s'avérer beaucoup plus rentable, car le modèle peut réagir à temps aux pics de prix et gagner sur ceux-ci, plutôt que d'attendre un énorme drawdown au risque d'attraper un stop loss.
Donc votre pourcentage de victoire sur test.csv est de 57,6 %, n'est-ce pas ? J'essaierai ma méthode pour éliminer les prédicteurs et former le neurone et je rapporterai les résultats demain.
Pas le gain, mais le nombre de prédictions correctes de l'orientation future des prix. Le classificateur produit l'une des deux valeurs suivantes sur l'échantillon test : Positive - une augmentation future du prix est attendue, Négative - une diminution future du prix est attendue. S'il prédit correctement un échantillon de test, il se verra attribuer la mention Vrai. Si c'est faux, c'est faux.
Sensibilité de la capacité de généralisation : 56.19266055045872% - la croissance future des prix est correcte : 100% * TP / (TP + FP) = 100% * 245 / (245 + 191) = 100% * 245 / 436 = 56.192660550458715%.
Spécificité de la capacité de généralisation : 60.752688172043015% - prédit correctement la future baisse des prix : 100% * TN / (TN + FN) = 100% * 113 / (113 + 73) = 100% * 113 / 186 = 60.75268817204302%.
Pas le gain, mais le nombre de prédictions correctes de l'orientation future des prix. Le classificateur sur l'échantillon test produit l'une des deux valeurs suivantes : positive - on suppose une croissance future des prix, négative - on suppose une baisse future des prix. S'il prédit correctement un échantillon de test, il se verra attribuer la mention Vrai. Si c'est faux, c'est faux.
Sensibilité de la capacité de généralisation : 56.19266055045872% - la croissance future des prix est correcte : 100% * TP / (TP + FP) = 100% * 245 / (245 + 191) = 100% * 245 / 436 = 56.192660550458715%.
Spécificité de la capacité de généralisation : 60.752688172043015% - prédit correctement la future baisse des prix : 100% * TN / (TN + FN) = 100% * 113 / (113 + 73) = 100% * 113 / 186 = 60.75268817204302%.
Yuri, le premier essai sur vos données :
Deux ensembles différents de valeurs de paramètres pour la formation. Il convient de noter que l'AUC est inférieure à la plinthe lors de la validation croisée.
Globalement, une précision de 51,5 % sur le test est le meilleur résultat obtenu.
Je ne sais même pas comment tu arrives à contourner 60%.