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

 
Aleksey Vyazmikin:

Quelle est l'entrée pour le clustering - tous les prédicteurs de l'échantillon ou quoi ?

Eh bien, oui... mais on peut aussi expérimenter.

 
Aleksey Nikolayev:

Je vais pousser l'idée jusqu'à une conclusion logique. Supposons que nous ayons un ensemble de systèmes sur le même bien. Chaque système, lorsqu'il est sur le marché, tient une position de volume fixe, mais la direction peut changer. Les rendements et les volatilités de la stratégie sont connus. Définissons la corrélation entre les stratégies à l'aide de la formule (t1-t2)/sqrt(T1*T2) où T1 et T2 sont la durée de leur présence sur le marché, t1 et t2 sont la durée pendant laquelle ces stratégies sont simultanément sur le marché et dirigées respectivement dans la même direction et dans la direction opposée. Il s'agit d'une formule simplifiée dérivée de l'hypothèse de la proximité des prix par rapport à l'OS. Nous disposons maintenant de toutes les données nécessaires pour appliquer la théorie de Markowitz afin de trouver le portefeuille optimal.

De toute évidence, nous n'obtiendrons pas de portefeuilles significatifs de cette manière (au moins parce qu'un seul actif est utilisé). Nous avons besoin de quelques modifications.

1) Modifier l'algorithme d'optimisation (limites des paramètres, pénalités). Clarifier la définition de la corrélation entre les stratégies.

2) Optimiser le portefeuille dès le moment de la création de la stratégie. En d'autres termes, recherchez les stratégies en fonction de la condition d'optimalité du portefeuille qui leur est imposée. La manière dont cela peut être formalisé de manière pratique n'est pas très claire, mais cette approche semble plus logique en général. Bien que, comme vous l'avez déjà écrit, cela nécessiterait de réécrire les algorithmes, etc. etc. Pas sûr que ça en vaille la peine.

Tout ce que vous dites est vrai. Mais je ne prendrais pas en compte uniquement le temps d'entrée sur le marché - nous avons besoin d'une certaine mesure de la performance pendant cette période, parce qu'il ne suffit pas d'entrer sur le marché, mais nous devons aussi en sortir à temps, et ici, sous condition, deux stratégies similaires, mais l'une avec prise fixe et l'autre sans prise, donneront une corrélation temporelle élevée mais des résultats financiers différents. Deux stratégies similaires peuvent être utiles, par exemple, l'une d'entre elles donnera des bénéfices dans des conditions plates et l'autre donnera plus de bénéfices dans des conditions de tendance qui, ensemble, lisseront la courbe d'équilibre.

S'il n'y a pas trop de stratégies, leur recherche directe et leur estimation conjointe sont possibles.

 
mytarmailS:

Je suppose que oui... mais nous pouvons aussi expérimenter.

Et quel algorithme dois-je choisir pour obtenir un résultat acceptable sans randomisation et avec un temps de calcul raisonnable ? Je ne suis pas très doué pour les regroupements.

 
Aleksey Vyazmikin:

J'ai étudié CatBoost, je vais donc en parler.

La profondeur de l'arbre est recommandée de 4 à 6 fentes. C'est la profondeur que j'essaie en général.

La division du prédicteur est effectuée par trois algorithmes différents parmi lesquels vous pouvez choisir. Une "grille" est créée.

Les résultats du fractionnement sont intéressants à tirer et à voir par soi-même. Comment AlgLib divise-t-il les prédicteurs en parts égales lors de la construction de l'arbre pour la forêt ?

AlgLib divise le morceau entrant par la médiane (correction - pas par le milieu, mais par la médiane. ). Par exemple, si 100 exemples sont arrivés, il trie les valeurs et les divise par la valeur du 50e exemple. Il existe une option quantile dans le code, mais elle n'est pas utilisée.

Je me suis souvenu que XGBoost avait une variante de la division aléatoire. Il semble qu'il en soit de même pour le catbust.

En général, il est étrange qu'ils recommandent des arbres aussi peu profonds.
Comme je l'ai déjà écrit, avec un arbre aussi peu profond, il est peu probable qu'un secteur comme 20 à 30% de la valeur soit sélectionné. Au mieux, 1 ou 2 fois, la division par les médianes ou par des valeurs aléatoires dans les Boosts.
Si la profondeur était de 100, elle pourrait très bien atteindre un secteur de 20 à 30 % selon certains prédicteurs.

Je suppose que dans Boosts, cela est compensé par un grand nombre d'arbres de raffinement, qui peuvent utiliser d'autres prédicteurs qui n'ont pas été utilisés dans l'arbre principal, mais eux aussi ne seront séparés que de 1 à 2 fois.

 
Aleksey Vyazmikin:

Et quel algorithme dois-je choisir pour obtenir un résultat acceptable sans aléatoire et avec un temps de calcul raisonnable ? Je ne suis pas très doué pour les regroupements.

Oui dans un trailer quelconque (knn,som,dtwclust...), la meilleure variante montrera certainement l'expérience ...

Ne vous méprenez pas, je n'utilise pas ce que j'ai écrit, j'ai juste lu votre idée et l'ai regardée d'un côté légèrement différent de la mise en œuvre, alors je me suis exprimé... Je ne garantis aucun résultat

 
elibrarius:

Algib divise la tranche entrante par la médiane. Par exemple, si 100 exemples arrivent, il trie les valeurs et les divise par la valeur du 50ème exemple. Il existe une variante par quantiles dans le code, mais elle n'est pas utilisée.

Je me suis souvenu que XGBoost avait une option de division aléatoire. Il semble qu'il en soit de même pour le catbust.

En général, il est étrange qu'ils recommandent des arbres aussi peu profonds.
Comme je l'ai déjà écrit, avec un arbre aussi peu profond, il est peu probable qu'un secteur comme 20 à 30% de la valeur soit sélectionné. Au mieux, 1 ou 2 fois, la division par les médianes ou par des valeurs aléatoires dans les Boosts.
Si la profondeur était de 100, elle pourrait très bien atteindre un secteur de 20-30% selon un quelconque prédicteur.

Je suppose que dans Boosts, cela est compensé par le grand nombre d'arbres de raffinement, qui peuvent utiliser d'autres prédicteurs qui n'ont pas été utilisés dans l'arbre principal.

La réalité n'est peut-être pas ce que nous imaginons - nous devrions essayer de reproduire les algorithmes de séparation de CatBoost et voir ce qui se passe réellement et à quel point c'est correct.

En ce qui concerne le caractère aléatoire - il y a un caractère aléatoire sur le choix de la partition de la grille de prédiction, comme pas le meilleur, mais aléatoire, si je comprends bien. Et il y a des algorithmes qui font que la pile est divisée de façon inégale par plages.

 
mytarmailS:

Oui, dans une remorque, vous pouvez utiliser n'importe quelle méthode (knn,som,dtwclust...), la meilleure option sera bien sûr démontrée par l'expérience...

Ne vous méprenez pas, je n'utilise pas ce que j'ai écrit, j'ai juste lu votre idée et l'ai regardée d'un côté légèrement différent de la mise en œuvre, alors je me suis exprimé... Je ne garantis aucun résultat.

Est-ce que je parle de garanties - je suis juste intéressé à comprendre votre idée.

 


L'indicateur Neuro est presque prêt ;) Il s'agit d'un EA, purement un indicateur que je n'avais pas la compétence.
 
Zone orange en haut - prédit un mouvement à la baisse, verte en bas - mouvement à la hausse, épaisseur du degré de confiance du réseau neuronal. Fonctionne uniquement sur BTCUSD M1 (pour l'instant...).
C'est cool ? ))
 
Evgeny Dyuka:
La zone orange au-dessus prédit un mouvement à la baisse, la zone verte en dessous - un mouvement à la hausse. Il ne fonctionne que sur BTCUSD M1 (pour l'instant).
C'est cool ? ))

Je dirais que c'est pas mal, mais c'est frustrant.

Il fonctionne essentiellement comme un indicateur normal de surachat/survente.

Parfois c'est bien, parfois c'est mal, ça ne devrait pas être...

Avez-vous testé ce filet pour le commerce ? Mon expérience me dit que ça ne va pas rapporter d'argent...

A moins que vous ne mettiez un filtre sur la "confiance" du filet.