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

 
Maxim Dmitrievsky:
Je ne vois pas très bien pourquoi cela pourrait fonctionner.

Supposons qu'il y ait des prédicteurs aléatoires dans l'échantillon, en fait du bruit, l'objectif est de nettoyer le bruit.

Pensez-vous que cela ne va pas améliorer les résultats ?

 
Aleksey Vyazmikin:

Supposons qu'il y ait des prédicteurs aléatoires dans l'échantillon, en fait du bruit, l'objectif est de nettoyer le bruit.

Pensez-vous que cela n'améliorera pas les résultats ?

Il est plus facile de prendre n'importe quelle combinaison puce-cible et de filtrer les signaux par temps jusqu'à ce qu'un signal stable soit trouvé. Et construire un robot à partir de ces modèles
 
Maxim Dmitrievsky:
Il est plus facile de prendre n'importe quel faisceau puce-cible et de filtrer les signaux par temps jusqu'à ce qu'un signal stable soit trouvé. Et construire un robot à partir de ces modèles

Soit je ne comprends pas le point, alors écrivez plus en détail, soit je ne comprends pas en quoi l'action proposée est différente de l'ajout au prédicteur_1 d'un prédicteur_2 supplémentaire, contenant des informations sur le temps ?

 
Aleksey Vyazmikin:

J'ai réfléchi à la manière d'améliorer la méthode de sélection des prédicteurs/attributs/caractéristiques par l'analyse du modèle résultant.

J'ai quelques idées pour la mise en œuvre de l'algorithme, mais j'ai décidé de les partager avec la communauté respectée, peut-être y aura-t-il des critiques constructives ou des ajouts/affinements à l'algorithme avant que nous commencions à travailler sur la mise en œuvre de cet algorithme. C'est intéressant de penser que rien ne fonctionnera avec la justification.


Sélection des prédicteurs par fréquence d'utilisation (importance des caractéristiques) lors de la création d'un modèle CatBoost
.

L'idée est que chaque algorithme a ses propres particularités de construction d'arbre et nous allons sélectionner les prédicteurs qui sont utilisés le plus souvent par l'algorithme, dans ce cas CatBoost.

Cependant, pour estimer l'uniformité sur l'échelle de temps, nous utiliserons plusieurs échantillons et agrégerons leurs données dans un seul tableau. Cette approche permet d'éliminer les événements aléatoires qui ont une forte influence sur le choix du prédicteur dans l'un des modèles. Les régularités sur lesquelles le modèle est construit doivent apparaître dans tout l'échantillon, ce qui peut faciliter une classification correcte sur les nouvelles données. Cette caractéristique est applicable aux données du marché, c'est-à-dire aux données non complètes, y compris la cyclicité cachée, c'est-à-dire non temporelle, mais événementielle. Ce faisant, il est souhaitable de pénaliser les prédicteurs qui ne se trouvent pas dans les 30-50% supérieurs dans l'un des graphiques, ce qui permettra de sélectionner les prédicteurs les plus fréquemment demandés pour les modèles sur différents horizons temporels.

De plus, pour réduire le facteur aléatoire, nous devrions utiliser des modèles avec différentes valeurs Seed. Je pense qu'il devrait y avoir entre 25 et 100 modèles de ce type. Je ne sais pas encore si le coefficient doit être ajouté en fonction de la qualité du modèle obtenu ou simplement pour faire la moyenne de tous les résultats par prédicteurs, mais je pense que nous devrions commencer par le plus simple, c'est-à-dire faire la moyenne.

La question de l'utilisation d'une table de quantification est importante, elle peut être cruciale dans la sélection des prédicteurs. Si la table n'est pas fixe, chaque modèle créera sa propre table pour le sous-échantillon, ce qui rendra impossible la comparaison des résultats. La table doit donc être commune à tous les échantillons.

Il est possible d'obtenir une table de quantification :

  1. En définissant des hyperparamètres pour CatBoost sur le type et le nombre de partitions en quanta de l'ensemble de l'échantillon d'entraînement, et en enregistrant les résultats en csv.
  2. Définissez les hyperparamètres pour CatBoost par type et nombre de partitions en quanta en sélectionnant une des zones de l'échantillon, disons la meilleure, et enregistrez les résultats en csv.
  3. Obtenez un tableau en utilisant un script séparé qui sélectionne les meilleurs choix à partir d'un ensemble de tableaux.
Les tables obtenues précédemment sont utilisées pour chaque échantillon par le biais d'un chargement forcé des tables pendant la formation.

La quantification peut être faite par vous-même avant d'alimenter le booster - tout sera sous votre contrôle.
De 0 à 0,00005 = 0,00005 de 0,00005 à 0,00010 = 0,00010, etc.

 
elibrarius:

Vous pouvez vous quantifier avant d'alimenter le boost - tout sera sous votre contrôle.
0 à 0,00005 = 0,00005 0,00005 à 0,00010 = 0,00010 etc.

La troisième option d'obtention d'une table de quantification comprend également l'évaluation de tables de quantification personnalisées, que je pré-génère. Les expériences montrent que ce n'est pas toujours la meilleure option. Au fait, puisque nous parlons de séquences numériques, quelles autres étapes peuvent être utilisées en dehors des séquences linéaires, Fibonacci, exponentielles ?

 
Aleksey Vyazmikin:

La troisième option pour obtenir un tableau de quantification comprend également l'évaluation de tableaux de quantification personnalisés, que je pré-génère. Les expériences montrent que ce n'est pas toujours la meilleure option. Au fait, puisque nous parlons de suites numériques, quelles sont les étapes autres que linéaire, Fibonacci, exponentielle ?

3 ne te suffisent pas ? J'ai déjà triplé le nombre d'expériences)) où d'autre ?
 
Aleksey Vyazmikin:

Soit je ne comprends pas le point, alors écrivez plus en détail, soit je ne comprends pas en quoi l'action proposée diffère de l'ajout d'un prédicteur_2 supplémentaire contenant des informations temporelles au prédicteur_1 ?

Il y a des raisons de ne pas écrire les détails, mais ils apparaîtront un jour ou l'autre. Certaines parties du système ont déjà été décrites ici. Je la considère comme la seule option raisonnable, non liée à une sélection d'attributs. Idéalement, les attributs peuvent être n'importe quoi, tout comme les balises. La tâche de l'algorithme est de les calibrer, en tenant compte de la composante temporelle (en filtrant les endroits où ces attributs ne fonctionnent pas). Preuves - méta-étiquetage de Prado avec quelques ajustements de cette approche. Vous êtes dans une steppe complètement différente, donc la compréhension peut ne pas se faire.
 
elibrarius:
Trois n'est pas suffisant pour vous ? Le nombre d'expériences a déjà triplé) ; que reste-t-il à faire ?

Bien sûr, pas assez :) En fait, je sélectionne la table optimale pour chaque prédicteur, et plus il y a de non-échantillonnage, mieux c'est. La dernière version du script sélectionne les meilleurs intervalles de tous les tableaux et les combine en un seul tableau pour chaque prédicteur.

 
Maxim Dmitrievsky:
Il y a des raisons de ne pas encore écrire les détails, mais ils viendront un jour. Certaines parties de ce système ont déjà été décrites ici. Je la considère comme la seule option raisonnable, non liée à une enveloppe de sélection d'attributs. Idéalement, les attributs peuvent être n'importe quoi, tout comme les balises. La tâche de l'algorithme est de les calibrer, en tenant compte de la composante temporelle (en filtrant les endroits où ces attributs ne fonctionnent pas). Pruffs - Le méta-étiquetage de Prado avec quelques ajustements de cette approche. Vous êtes dans une steppe complètement différente, donc la compréhension peut ne pas se faire.

Oui, à propos de la calibration de l'algorithme, ce n'est vraiment pas clair. Même si vous avez filtré les lieux de formation, la manière de reconnaître ces lieux dans l'application n'est pas claire.

 

Vous êtes un fan du film The Matrix ?

Qu'est-ce que cela a à voir avec la matrice ?
Je lis des gens intelligents, vous pouvez obtenir plus d'informations en une heure de lecture qu'en 10 ans de lecture de toutes sortes de gonflements par des outsiders d'outre-mer...
et pas tant que ça...