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

 
SanSanych Fomenko:

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

Merci pour ces informations. Les résultats sont déjà clairs - une absence totale.

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.

 
Alexey Burnakov:
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 :)


 
Yury Reshetov:

* TruePositives : 245

* TrueNegatives : 113
* Faux positifs : 191
* Faux négatifs : 73

Vous avez donc un pourcentage de victoire de 57,6 % sur test.csv, n'est-ce pas ? Je vais essayer ma méthode pour trier les prédicteurs et former le neurone, je rapporterai les résultats demain.
 
Dr. Trader:

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 :)


Si vous ne disposez pas de suffisamment de données, la validation croisée peut donner de mauvais résultats. L'apprentissage automatique implique des dizaines de milliers d'observations. Si la validation croisée est mauvaise, cela signifie que le modèle dans son ensemble est comme ça.
 

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.

 
Alexey Burnakov:

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 !

Hubr n'est pas silencieux - Hubr lit.
De très nombreuses lettres.
 
Dr. Trader:

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.

Oui, 1,5 pts avec un écart de 1.

Tous les autres indicateurs seront évalués ensemble : je posterai des hiboux sur mt4 sur le modèle entraîné.

Malheureusement, je ne peux pas calculer Sharp, etc. en R, car je dispose de 49 échantillons aléatoires, qui ne restituent pas la séquence des transactions.

Les résultats sont donnés pour 13000 trades pour l'eurusd en particulier .
 
Dr. Trader:
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%.

 
Yury Reshetov:

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 :

méthode fonction_perte cv_folds sac_frac paramètres du modèle AUC_cv précision_formation précision_validation
GBM bernoulli 4 0.4 0.015_|_7_|_70_|_600 0.429659 0.590361 0.50501
GBM bernoulli 4 0.6 0.02_|_5_|_110_|_600 0.485727 0.586345 0.51503

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%.

Raison: