L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 2639

 
mytarmailS #:
No, non è così semplice.
Non è facile isolarli, ma altrimenti che senso ha complicare le cose?
 
Maxim Dmitrievsky #:
Non è facile isolarli, ma altrimenti che senso ha complicare le cose?

I cicli sono troppo grandi per catturarli e non ci sono previsioni su di essi, tranne che per l'agricoltura, e allora non tutto è così semplice. Le componenti temporali - eventi che si ripetono nel tempo - possono essere solo individuate. E se si trovano anche i collegamenti degli eventi e le influenze sul prezzo, è un obiettivo)))).

 

Evoluzione grammaticale / regressione simbolica, una versione più avanzata della programmazione genetica....

Con questi strumenti è possibile ricercare automaticamente modelli di qualsiasi tipo.


Ad esempio, è possibile cercare il controllo ottimale degli indicatori attraverso una formula.

Creiamo un modello di funzione (area di ricerca)

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

e questo crea automaticamente delle formule:

[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))"        

che poi ricercano geneticamente la soluzione migliore.

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

Oppure è possibile creare regole di registro, cercando così delle regolarità.

Anche in questo caso si crea un modello di funzione (area di ricerca ).

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

L'output è costituito da regole

[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"

che vengono poi testate dalla genetica per verificarne l'idoneità.

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

Se avete una ST e volete migliorarla ma non avete abbastanza fantasia per provare milioni di varianti, potete provare a farlo con l'aiuto di un algoritmo.

Adesempio, abbiamo un punto di ingresso: la rottura del bolinger con il prezzo al ribasso ("PRICE < BOLINGER").

Aggiungiamo questa regola alla nostra grammatica.

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

Le regole sono un po' stupide, ma è perché sono generate in modo casuale.

[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" 

Il punto è che riduciamo di molto lo spazio di ricerca se aggiungiamo una nostra regola.

Se abbiamo una buona regola e non sappiamo come migliorarla, ma vogliamo farlo, possiamo "vestirla" con altre regole e controllarla automaticamente.

 
mytarmailS #:

Evoluzione grammaticale / regressione simbolica, una versione più avanzata della programmazione genetica....

È possibile utilizzare questi strumenti per cercare automaticamente modelli di qualsiasi tipo.


Ad esempio, è possibile cercare il controllo ottimale di un indicatore utilizzando la formula

creare un modello di funzione (area di ricerca)

e crea automaticamente le formule:

che poi cerca geneticamente la soluzione migliore.

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

Oppure si possono creare delle regole di log, in modo da cercare degli schemi.

Creare nuovamente un modello di funzione (area di ricerca )

E nell'output otteniamo le regole

che vengono poi verificate dalla genetica per verificarne l'idoneità.

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

Se avete una TC e volete migliorarla ma non avete abbastanza fantasia per provare milioni di varianti, potete provare a farlo con l'aiuto di un algoritmo.

Adesempio, abbiamo un punto di ingresso: la rottura del bolinger con il prezzo al ribasso ("PRICE < BOLINGER").

Aggiungiamo questa regola alla nostra grammatica.

Le regole sono un po' stupide, ma questo perché sono generate in modo casuale.

Il punto è che riduciamo di molto lo spazio di ricerca se aggiungiamo una nostra regola.

Se abbiamo una buona regola e non sappiamo come migliorarla, ma vogliamo farlo, possiamo "vestirla" con altre regole e controllarla automaticamente.

È come mettere alberi profondi intorno ai segni.
 
Maxim Dmitrievsky #:
È come mettere alberi profondi intorno ai cartelli.
Questi sono semplici esempi, solo per capire la versatilità dello strumento.

Invece di semplici perenni, potrebbero essere funzioni, o reti neurali, o quello che volete.


E tutto questo sarà automatico.
 
mytarmailS #:
Questi sono semplici esempi, solo per capire la versatilità dello strumento.

Invece di semplici parentesi, possono essere funzioni, reti neurali o qualsiasi altra cosa si voglia.


E tutto questo sarà su oliatura automatica
Aspettiamo lo sviluppo dell'argomento
 
elibrarius #:

Una domanda per coloro che sono impegnati nella MO.
Come si motiva per questa impresa quasi senza speranza?
Nel 18, quando ho iniziato, avevo un piccolo reddito e un incentivo materiale, o meglio la speranza che la MO sul mercato potesse aiutare.

Ora ricevo molto di più, quasi passivamente, non dal mercato. La questione materiale non mi preoccupa. Negli ultimi 2 anni ho intrapreso il MO 3 volte per 1-2 mesi, per verificare l'idea che mi interessava.
Ho del tempo libero, ma è pigro spenderlo nel MO dopo un sacco di esperimenti senza successo. Non ho quasi nessuna speranza di ritorno. L'unica cosa - solo per avere un'altra fonte in caso di un altro crollo finanziario (se si scopre qualcosa). Ma il motivo è debole al momento.

Chi si motiva con cosa?

Un lungo rapporto con il forex. Ho iniziato come analista in una società di brokeraggio (formazione economica), poi ho lavorato come dealer e assistente manager, ho fatto trading, poi mi sono interessato ai bot e al MO.

Ci sono state molte inefficienze (anche tecniche), quando sono riuscito a prelevare somme decenti.
 
Maxim Dmitrievsky #:

Ho un lungo rapporto con il forex. Ho iniziato come analista in un centro di brokeraggio (formazione economica), poi ho lavorato come dealer e assistente manager, ho fatto trading, poi mi sono interessato ai bot e al MO.

Ci sono state molte inefficienze (anche tecniche), quando sono riuscito a tirare fuori somme decenti.
La motivazione è ancora il guadagno?
Beh, nessuno con l'aiuto della MO non funziona.... tutti cercano.
 
elibrarius #:
La motivazione sta tutta nel guadagnare soldi?
Beh, sembra che nessuno con l'aiuto di MO stia facendo bene.... tutti guardano.

Non solo, è un impulso irrazionale.

Come quando da bambino ti piaceva rompere i giocattoli e costruirne di nuovi.
 
Maxim Dmitrievsky #:

Non solo, è un impulso irrazionale.

Come quando ero bambino, mi piaceva rompere i giocattoli e crearne di nuovi.

In generale, la creatività. Ma creatività "a tavolino", perché tutto questo lavoro difficilmente sarà visto e apprezzato da qualcuno.