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

 
Mihail Marchukajtes:
Yuri, j'ai décidé d'utiliser le saint des saints et de fabriquer un graal, mais j'ai reçu une inscription indiquant que les valeurs prédites ne peuvent être supérieures à 10. S'agit-il d'une restriction délibérée ou d'une limite de l'algorithme ? ? ??? Parce que plus de 10 est extrêmement pertinent donc....

Après 10 il peut y avoir un débordement du type int, et il n'a que 32 bits, c'est-à-dire qu'avant le débordement il peut contenir des nombres ne dépassant pas la valeur 2^32=2147483648. C'est juste un peu plus de deux milliards. Bien sûr, vous pouvez mettre en œuvre des compteurs avec une capacité de chiffres plus élevée, mais la vitesse de calcul sera plusieurs fois plus lente.

C'est pourquoi Dr. Trader n'a pas pu faire fonctionner la libVMR complète réécrite en R - trop de calculs et beaucoup de mémoire.

 
Yury Reshetov:

Après 10 il peut y avoir un débordement du type int, et il n'a que 32 bits, c'est-à-dire qu'il convient aux nombres sans débordement ne dépassant pas 2^32=2147483648. C'est juste un peu plus de deux milliards. Bien sûr, vous pouvez écrire des compteurs avec une plus grande profondeur de bits, mais la vitesse de calcul sera plusieurs fois plus lente.

HMM... Il est préférable de ne pas réduire la vitesse... Dans les versions précédentes, c'était une vraie galère. ok, 10 donc 10, maintenant il est préférable d'améliorer la qualité des entrées et je pense qu'il est possible de travailler.....
 
Yury Reshetov:

Après 10 il peut y avoir un débordement du type int, et il n'a que 32 bits, c'est-à-dire qu'avant le débordement il contient des nombres ne dépassant pas la valeur 2^32=2147483648. C'est juste un peu plus de deux milliards. Bien sûr, vous pouvez écrire des compteurs avec une capacité de chiffres plus élevée, mais la vitesse des calculs diminuera de plusieurs fois.

C'est pourquoi le Dr. Trader n'a pas pu exécuter la libVMR complète réécrite sur R - trop de calculs et trop de mémoire.

Laissez-moi vous raconter une histoire. Je me souviens vous avoir interrogé sur les calculs en parallèle. Pour que je puisse compter plus d'entrées sur le coprocesseur mathématique. Un seul connard est arrivé, il a réécrit LibVMRx en C++ et l'a mis en parallèle. Il avait un ordinateur très puissant et il lui fallait environ 40 minutes pour traiter 8 colonnes, comme il l'a dit. Il ne m'a même pas envoyé le programme ou autre chose, il m'a juste harcelé d'excuses et de conneries. Bien que je lui ai fourni toutes les données et que j'étais prêt à partager le système et les considérations pour construire le modèle. Mais il a refusé de m'aider. Il y a de telles personnes. Souffler et sortir ....
 
Mihail Marchukajtes:
Laissez-moi vous raconter une histoire - je me souviens que je vous avais interrogé sur les calculs de parallélisme. Pour que je puisse compter plus d'entrées sur le coprocesseur mathématique. Un seul connard est arrivé, il a réécrit LibVMRx en C++ et l'a mis en parallèle. Il avait un ordinateur très puissant et il lui fallait environ 40 minutes pour traiter 8 colonnes, comme il l'a dit. Il ne m'a même pas envoyé le programme ou autre chose, il m'a juste harcelé d'excuses et de conneries. Bien que je lui ai fourni toutes les données et que j'étais prêt à partager le système et les considérations pour construire le modèle. Mais il a refusé de m'aider. Il y a de telles personnes. Souffler et sortir ....

J'ai tout mis en parallèle dans la dernière version 6.01. Rien d'autre ne fonctionne. Si c'était possible, je l'aurais mis en parallèle avec d'autres. Je le faisais pour moi, c'est-à-dire que j'ai besoin que tout soit calculé plus rapidement.


Maintenant, j'ai mis au point un algorithme pour calculer les prédicteurs faibles afin de pouvoir les supprimer. Cela prendra beaucoup de temps à calculer, mais cela en vaudra la peine, car au lieu d'un prédicteur faible, vous pourrez le remplacer par un prédicteur plus fort. Ou se débarrasser des prédicteurs faibles, en augmentant à la fois la vitesse de calcul et la capacité de généralisation. Car, pour le trading, il faut constamment recalculer les modèles dès que le marché commence à tricher. Et c'est ainsi que fonctionne le marché, dès que d'autres traders fusionnent, ils changent leurs stratégies et vous devez vous y adapter à nouveau.

 
Yury Reshetov:

J'ai tout mis en parallèle dans la dernière version 6.01. Rien d'autre ne fonctionne. Si c'était possible, je l'aurais mis en parallèle avec d'autres. Je le faisais pour moi, c'est-à-dire que j'ai besoin de calculer tout cela plus rapidement moi-même.

Maintenant, j'ai trouvé un algorithme, comment calculer les prédicteurs faibles, afin qu'ils puissent être supprimés. Le calcul sera long, mais il en vaudra la peine, car au lieu d'un prédicteur faible, nous pourrons substituer des prédicteurs plus forts. Ou se débarrasser des prédicteurs faibles, en augmentant à la fois la vitesse de calcul et la capacité de généralisation. Car, pour le trading, il faut constamment recalculer les modèles dès que le marché commence à tricher. Le marché est ainsi fait, dès que d'autres traders fusionnent, ils changent leurs stratégies et vous devez à nouveau vous y adapter.

Vous êtes dans le vrai. Je suis impatient de voir les changements. Je suis du même avis que vous. Je pense également que le marché est en constante évolution et qu'il faut s'y adapter à chaque fois qu'un événement ou une nouvelle apparaît. Et ne pas chercher un graal dans 5 ans, comme le font certaines personnes ici. C'est une utopie, mais je suis déjà épuisé de l'expliquer...
 
HMM... Regardez, j'ai maintenant entraîné le modèle et les deux modèles ont les mêmes valeurs de niveau de généralisation, c'est-à-dire que les deux modèles ont le même segment de marché scié. Je pense que c'est la clé pour choisir le modèle approprié. Je continue à m'entraîner, à chercher des contributions, etc.
 
Au fait, je libère un cœur dans le processus d'optimisation, sinon il devient impossible de travailler sur l'ordinateur.....
 
Mihail Marchukajtes:
C'est tout. Je suis impatient de voir les changements.

Il est possible de passer manuellement en revue les prédicteurs un par un, mais c'est long et pénible, même si c'est aussi la bonne direction. Vous avez besoin de beaucoup de temps, mais cela doit être automatique et en un temps raisonnable et pas si atroce.

Mihail Marchukajtes:


Nous sommes du même côté de la barrière, je crois aussi que le marché est en constante évolution et qu'il doit être ajusté chaque fois que quelque chose se passe ou que des nouvelles sont publiées. Ne cherchez pas un graal dans 5 ans, comme le font certaines personnes. C'est une utopie, mais je suis déjà épuisé de l'expliquer...

Il est possible de trouver des graals faibles à long terme. J'en ai eu quelques-uns. Mais mon profit est à la limite de la faute, mon profit est de l'ordre du centime même si j'ai un bon dépôt.

Théoriquement, il est possible de trouver un graal solide et durable, mais la probabilité est probablement de zéro virgule zéro ?

Le moyen le plus sûr :

  1. Sélectionner correctement les prédicteurs les plus forts
  2. Des modèles à court terme avec des ajustements systématiques en fonction de l'évolution du marché. Mais il est préférable de faire tout cela en mode entièrement automatique, ou du moins de limiter au maximum les interventions manuelles.
 
Mihail Marchukajtes:
HM... Regardez, maintenant que j'ai entraîné le modèle, les deux modèles ont obtenu les mêmes valeurs de niveau de généralisation, c'est-à-dire que le segment de marché est scié de la même façon par les deux modèles. Je pense que c'est la clé pour choisir le modèle approprié. Je continue à m'entraîner, à chercher des contributions, etc.

Regardez dans le fichier java. S'il y a des lignes "Variable got under reduction", elles indiquent des prédicteurs faibles. Ces prédicteurs sont exclus du code du modèle - ils ne sont calculés nulle part dans le code du classificateur binaire.

Il est vrai que si tous les prédicteurs sont approximativement les mêmes, de telles lignes n'apparaissent pas.

Voici un exemple (mis en évidence en gras). Le sixième prédicteur v5 (compté à partir de zéro) - la septième colonne du CSV peut être remplacée par un autre, plus fort :

double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5) {
   double x0 = 2.0 * (v0 + 1.0) / 2.0 - 1.0;
   double x1 = 2.0 * (v1 + 1.0) / 2.0 - 1.0;
   double x2 = 2.0 * (v2 + 1.0) / 2.0 - 1.0;
   double x3 = 2.0 * (v3 + 1.0) / 2.0 - 1.0;
   double x4 = 2.0 * (v4 + 1.0) / 2.0 - 1.0;
//Variable v5 got under reduction
   double decision = -0.23641879194630872 -0.10890380313199105 * x2
 -0.14546040268456376 * x0 * x2
 + 0.07270693512304251 * x1 * x2
 -0.07182997762863534 * x3
 -0.07383982102908278 * x0 * x1 * x2 * x3
 -0.4362541387024608 * x4
   ;
   return decision;

}
 
Yury Reshetov:

Regardez dans le fichier java. S'il y a des lignes "Variable got under reduction", elles indiquent des prédicteurs faibles. Ces prédicteurs sont exclus du code du modèle - ils ne sont calculés nulle part dans le code du classificateur binaire.

Il est vrai que si tous les prédicteurs sont approximativement les mêmes, de telles lignes n'apparaissent pas.

Voici un exemple (mis en évidence en gras). Le sixième prédicteur v5 (compté à partir de zéro) - la septième colonne du CSV peut être remplacée par une autre, plus forte :

double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5) {
double x0 = 2,0 * (v0 + 1,0) / 2,0 - 1,0 ;
double x1 = 2,0 * (v1 + 1,0) / 2,0 - 1,0 ;
double x2 = 2,0 * (v2 + 1,0) / 2,0 - 1,0 ;
double x3 = 2,0 * (v3 + 1,0) / 2,0 - 1,0 ;
double x4 = 2,0 * (v4 + 1,0) / 2,0 - 1,0 ;
//La variable v5 a été réduite
double décision = -0.23641879194630872 -0.10890380313199105 * x2
-0,14546040268456376 * x0 * x2
+ 0,07270693512304251 * x1 * x2
-0.07182997762863534 * x3
-0,07383982102908278 * x0 * x1 * x2 * x3
-0.4362541387024608 * x4
;
décision de retour ;

}

Je sais, j'utilise votre bibliothèque depuis un an déjà. Ces choses sont claires pour moi..... Je n'ai pas de telles chaînes, tous les prédicats sont impliqués......
Raison: