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

 
mytarmailS #:
Nah, ce n'est pas si simple.
Il n'est pas facile de les isoler, mais sinon, à quoi bon compliquer les choses ?
 
Maxim Dmitrievsky #:
Il n'est pas facile de les isoler, mais sinon, à quoi bon compliquer les choses ?

Les cycles sont trop grands pour les saisir, et il n'y a pas de prévisions sur eux, sauf pour l'agriculture, et là, tout n'est pas si simple. Les composantes temporelles - les événements qui se répètent dans le temps - ne peuvent qu'être distinguées. Et si l'on trouve aussi les liens entre les événements et les influences sur le prix, c'est un but)))).

 

Evolution grammaticale / régression symbolique, une version plus avancée de la programmation génétique....

Ces outils vous permettent de rechercher automatiquement des modèles de toutes sortes.


Par exemple, vous pouvez rechercher le contrôle optimal d'un indicateur à l'aide d'une formule.

nous créons un modèle de fonction (zone de recherche)

library(gramEvol)
ruleDef <- list(expr  = grule(op(expr, expr), func(expr), var),
                func  = grule(sin, cos, log, sqrt),
                op    = grule("+", "-", "*","/"),
                var   = grule(distance, distance^n),
                n     = grule(1, 2, 3, 4))

grammarDef <- CreateGrammar(ruleDef)
gr <- GrammarRandomExpression(grammarDef,numExpr = 10,max.depth = 5)
q <- as.matrix(unlist(lapply(gr,as.character)),ncol=1)
q

et il crée automatiquement des formules :

[1,] "sqrt(log(cos(sqrt(cos(distance^2)))))"                                                                  
 [2,] "sin(log(sqrt(sin(sqrt(distance * distance))) * (sin(log(distance^3)) - cos(cos(distance)) - distance)))"
 [3,] "(sin(distance * sqrt(sin(distance * sqrt(distance^3)))) + distance^1)/distance"                         
 [4,] "sin(log(log(distance^4)))"                                                                              
 [5,] "distance"                                                                                               
 [6,] "distance^4"                                                                                             
 [7,] "log(sin(distance)) * (log(distance) - cos(distance^4 - distance^4))"                                    
 [8,] "distance^1"                                                                                             
 [9,] "distance"                                                                                               
[10,] "log(distance) * (distance/log((distance^4 - distance^3) * distance^2))"        

qui recherchent ensuite génétiquement la meilleure solution.

=====================

Il est également possible de créer des règles logarithmiques et de rechercher ainsi des régularités.

Là encore, nous créons un modèle de fonction (zone de recherche ).

library(gramEvol)
ruleDef <- list(
  expr = grule(expr & sub.expr, 
               expr | sub.expr, 
               sub.expr),
  sub.expr = grule( com(var, var) ),
  com = grule(">=","<="),
  var = grule(x,y,w,z,q,y,r)
  )

grammarDef <- CreateGrammar(ruleDef)
gr <- GrammarRandomExpression(grammarDef,numExpr = 15,max.depth = 3)

q <- as.matrix(unlist(lapply(gr,as.character)),ncol=1)
q

Les résultats sont des règles

[1,] "x >= y"                  
 [2,] "y <= y | y >= y | w >= y"
 [3,] "y <= x"                  
 [4,] "y <= y"                  
 [5,] "y <= r"                  
 [6,] "z <= z"                  
 [7,] "y <= y"                  
 [8,] "x <= y"                  
 [9,] "z <= y | y >= z & r >= y"
[10,] "z >= x"                  
[11,] "y >= y | q >= y | q >= q"
[12,] "y >= y | q <= y | z >= q"
[13,] "y >= y | x <= y | x >= x"
[14,] "y >= r"                  
[15,] "y >= w"

dont l'adéquation est ensuite testée par la génétique.

=============================

Si vous avez une TS et que vous souhaitez l'améliorer, mais que vous n'avez pas assez d'imagination pour essayer des millions de variantes, vous pouvez essayer de le faire à l'aide d'un algorithme.

Parexemple, nous avons un point d'entrée : la rupture du bolinger avec le prix à la baisse ("PRIX < BOLINGER").

Nous ajoutons cette règle à notre grammaire.

library(gramEvol)
ruleDef <- list(
  expr = grule(expr & sub.expr, 
               expr | sub.expr, 
               sub.expr),
  sub.expr = grule( com(var, var)  ,  PRICE < BOLINGER),
  com = grule(">=","<="),
  var = grule(x,y,w,z,q,y,r)
  )

grammarDef <- CreateGrammar(ruleDef)
gr <- GrammarRandomExpression(grammarDef,numExpr = 15,max.depth = 3)

q <- as.matrix(unlist(lapply(gr,as.character)),ncol=1)
q

Les règles sont un peu stupides, mais c'est parce qu'elles sont générées de manière aléatoire.

[1,] "y >= q"                                                                                                        
 [2,] "PRICE < BOLINGER & y >= y | x >= x"                                                                            
 [3,] "PRICE < BOLINGER | PRICE < BOLINGER & x <= y | y <= w"                                                         
 [4,] "r <= y & PRICE < BOLINGER | w >= x | y <= x"                                                                   
 [5,] "PRICE < BOLINGER | PRICE < BOLINGER | y <= y & PRICE < BOLINGER"                                               
 [6,] "PRICE < BOLINGER"                                                                                              
 [7,] "PRICE < BOLINGER & PRICE < BOLINGER & z <= x | PRICE < BOLINGER & PRICE < BOLINGER | PRICE < BOLINGER | z <= x"
 [8,] "y <= y | PRICE < BOLINGER | x <= y | PRICE < BOLINGER | PRICE < BOLINGER"                                      
 [9,] "PRICE < BOLINGER & x <= y | y <= q & PRICE < BOLINGER"                                                         
[10,] "q >= z & PRICE < BOLINGER | q >= w & y <= x"                                                                   
[11,] "PRICE < BOLINGER | PRICE < BOLINGER"                                                                           
[12,] "w >= y"                                                                                                        
[13,] "PRICE < BOLINGER"                                                                                              
[14,] "y <= y & PRICE < BOLINGER | q >= x | PRICE < BOLINGER"                                                         
[15,] "q >= x" 

Le fait est que nous réduisons considérablement l'espace de recherche si nous ajoutons notre propre règle.

Si nous avons une bonne règle et que nous ne savons pas comment l'améliorer, mais que nous voulons le faire, nous pouvons l'"habiller" avec d'autres règles et la vérifier automatiquement.

 
mytarmailS #:

Evolution grammaticale / régression symbolique, une version plus avancée de la programmation génétique....

Vous pouvez utiliser ces outils pour rechercher automatiquement des modèles, quels qu'ils soient.


Par exemple, vous pouvez rechercher le contrôle optimal d'un indicateur à l'aide de la formule suivante

créer un modèle de fonction (zone de recherche)

et il crée automatiquement des formules :

qui recherche ensuite génétiquement la meilleure solution.

=====================

Vous pouvez également créer des règles de journalisation afin de rechercher des modèles.

Créez à nouveau un modèle de fonction (zone de recherche )

Dans le résultat, nous obtenons les règles suivantes

dont l'adéquation est ensuite testée par la génétique.

=============================

Si vous avez un CT et que vous souhaitez l'améliorer, mais que vous n'avez pas assez d'imagination pour essayer des millions de variantes, vous pouvez essayer de le faire à l'aide d'un algorithme.

Parexemple, nous avons un point d'entrée : la rupture du bolinger avec le prix à la baisse ("PRIX < BOLINGER").

Nous ajoutons cette règle à notre grammaire.

Les règles sont un peu stupides, mais c'est parce qu'elles sont générées de manière aléatoire.

Le fait est que nous réduisons considérablement l'espace de recherche si nous ajoutons notre propre règle.

Si nous avons une bonne règle et que nous ne savons pas comment l'améliorer, mais que nous voulons le faire, nous pouvons l'"habiller" avec d'autres règles et la vérifier automatiquement.

C'est comme si on mettait des arbres profonds autour des panneaux.
 
Maxim Dmitrievsky #:
C'est comme si on mettait des arbres profonds autour des panneaux.
Il s'agit là d'exemples simples, destinés à illustrer la polyvalence de l'outil.

Au lieu de simples plantes vivaces, il pourrait s'agir de fonctions, de réseaux neuronaux ou de tout ce que vous voulez.


Et tout cela sera automatique.
 
mytarmailS #:
Il s'agit d'exemples simples, destinés à illustrer la polyvalence de l'outil.

Au lieu de simples parens, il peut s'agir de fonctions, de réseaux neuronaux ou de ce que vous voulez.


Et tout ceci sera sur l'huilage automatique
Nous attendons le développement du sujet
 
elibrarius #:

Une question pour ceux qui sont impliqués dans la MO.
Comment vous motivez-vous pour cette entreprise presque sans espoir ?
En 18, lorsque j'ai commencé, j'avais un petit revenu et une motivation matérielle, ou plutôt l'espoir que la MO sur le marché m'aiderait.

Aujourd'hui, je gagne beaucoup plus, presque passivement, sans passer par le marché. La question matérielle ne me préoccupe pas. Au cours des deux dernières années, je me suis lancé dans la MO trois fois pendant un à deux mois, pour vérifier l'idée qui m'intéressait.
J'ai du temps libre, mais c'est paresseux de le consacrer à la MO après un grand nombre d'expériences infructueuses. Je n'ai pratiquement aucun espoir de retour. La seule chose - c'est d'avoir une autre source en cas de nouvel effondrement financier (si quelque chose se produit). Mais la motivation est faible pour le moment.

Qui se motive avec quoi ?

J'ai une longue relation avec le marché des changes. J'ai commencé comme analyste dans une maison de courtage (formation en économie), puis j'ai travaillé comme croupier et assistant manager, j'ai négocié, puis je me suis intéressé aux bots et à la MO.

Il y a eu beaucoup d'inefficacités (y compris des inefficacités techniques), mais j'ai réussi à retirer des sommes décentes.
 
Maxim Dmitrievsky #:

J'ai une longue relation avec le forex. J'ai commencé comme analyste dans un centre de courtage (formation en économie), puis j'ai travaillé comme croupier et assistant manager, j'ai négocié, puis je me suis intéressé aux bots et à la MO.

Il y a eu beaucoup d'inefficacités (y compris des inefficacités techniques), mais j'ai réussi à gagner des sommes décentes.
La motivation est toujours la rémunération ?
Eh bien, avec l'aide de la MO, personne ne s'en sort.... tout le monde cherche.
 
elibrarius #:
La motivation, c'est gagner de l'argent ?
Il semble que personne ne se débrouille bien avec l'aide du MO.... tout le monde regarde.

En plus, c'est un besoin irrationnel.

Comme lorsque vous étiez enfant, vous aimiez casser vos jouets et en construire de nouveaux.
 
Maxim Dmitrievsky #:

Non seulement cela, mais c'est un besoin irrationnel.

Comme lorsque j'étais enfant, j'aimais casser les jouets et en fabriquer de nouveaux.

En général, la créativité. Mais la créativité "sur la table", parce que tout ce travail a peu de chances d'être vu et apprécié par qui que ce soit.