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

 
СанСаныч Фоменко #:

Mi può fare qualche esempio di AO? Avevo l'impressione che la ricerca di un insegnante fosse un lavoro a pezzi e si prestasse all'automazione.

Si può...

Bisogna renderlo il più semplice e riproducibile possibile, se c'è interesse...

Ci vorrebbe un po' di tempo.

 
mytarmailS #:

è possibile...

Dobbiamo rendere l'esempio il più semplice e riproducibile possibile, se c'è interesse...

avete bisogno di un po' di tempo

È molto interessante per me. La mia ricerca di un insegnante è un processo lungo e doloroso.

 
mytarmailS #:

Il vostro problema è un problema di ottimizzazione, alla ricerca di parametri sconosciuti.

Ecco l'UNICO articolo di cui avete bisogno per studiare https://www.mql5.com/ru/articles/2225.


Se volete insegnare l'AMO per massimizzare il profitto e minimizzare il drawdown:


è necessario

1) creare una funzione di fitness, una funzione che conti i profitti e le perdite dei segnali di trading.

2) un qualsiasi algoritmo MO che generi segnali per il trading, per la funzione di fitness (p.1)

3) un qualsiasi algoritmo di ottimizzazione (genetico, a sciame di particelle, di sfornamento) che generi segnali come target per l'AMO (p.2).


algoritmo come questo

1) AO crea un obiettivo per AMO

2) AMO viene addestrato su questo obiettivo

3) AMO crea una previsione dei segnali di trading

4) I segnali commerciali vengono valutati da FF e producono un risultato.

5) il risultato di FF viene valutato da AO e massimizzato/minimizzato ulteriormente e così via in cerchio fino a ottenere un risultato accettabile.


==========

AO - algoritmo di ottimizzazione

AMO - algoritmo di apprendimento automatico

FF - funzione di fitness

=========


ps. se si vuole lavorare con neuronka e non con alcun AMO, è possibile modificare i pesi mediante AO, senza apprendere il targeting.

Grazie!

Questa formulazione della risposta ha portato immediatamente alla questione della concretizzazione del trading manuale, dove mancano la chiarezza e la concretezza dei segnali, la loro varietà e l'eccessiva flessibilità. Ecco, questo è uno spunto di riflessione.

 
СанСаныч Фоменко #:

È molto interessante per me. La mia ricerca di un insegnante è un processo lungo e doloroso.

Ecco il codice dell'insegnamento della foresta di rendom per mezzo di AO,

la funzione di fitness (il NOSTRO OBIETTIVO) è trovare una crescita del profitto bella/stabile, cioè la massima correlazione tra la dinamica del bilancio e la linea di crescita retta.

#  install.packages(c("randomForest","GA"))
library(randomForest)
library(GA)


#  создаю фейковые данные для простоты воспроизводимости
price <- cumsum(rnorm(100))
X <- embed(price,dimension = 10)[,10:1]
X <- t(apply(X,1,scale))
price <- tail(price,nrow(X))

#  настройка графики
par(mar=c(2,2,2,2))
layout(1:2)

#  запускаю генетический алгоритм
#  который "придумывает" такой таргет полсе обучения на котором
#  АМО даст самый красивый прирост капитала
best_res <- 0
GA <- ga(type = "real-valued",
         fitness = fitness, 
         lower = rep(-5,nrow(X)),
         upper = rep( 5,nrow(X)),
         popSize = 100,
         maxiter = 50,
         run = 20)


Ecco il codice delle funzioni per calcolare il profitto e la FF.

#  простая функция которая считает прибыль ( возможно не верно :)  ) 
count_equity <- function(trade_signal, price)  cumsum(c(diff(price),0)*trade_signal)

#  ФФ которая берет выход из АО и обучает АМО
fitness <- function(ga_out){
  
  target <- ga_out
  set.seed(123)
  rf <- randomForest(target~., X, ntree=100)
  pr <- predict(rf,X)
  
  trade_signal <- sign(pr)
  balance <- count_equity(trade_signal = trade_signal,price = price)
  res <- cor(balance, 1:length(balance))
   
  #  просто графика, необезательный елемент
  if(res>best_res){
    best_res <<- res
    plot(price,t="l",main="price")
    color <- ifelse(trade_signal==1,3,2)
    points(price,col=color,lwd=5,pch=20)
    plot(balance,t="l",col=4,main="balance")
  }
  return(res)
}



Ecco il risultato: AO ha trovato un target per l'AMO tale che, se operiamo con i suoi segnali, otterremo una bella crescita dei profitti.


 
Elvin Nasirov #:

Grazie!

Questa risposta ha portato immediatamente alla questione della concretizzazione del trading manuale, dove mancano la chiarezza e la concretezza dei segnali, la loro varietà e l'eccessiva flessibilità. Questo è uno spunto di riflessione.

Non riesco ancora a concretizzare il mio trading manuale....

 
mytarmailS #:

Ecco il codice per insegnare la Forrest di Rendom con gli strumenti di AO,

funzione fitness (NOSTRO OBIETTIVO) - trovare una crescita dei profitti bella/stabile, ovvero la massima correlazione tra la dinamica del bilancio e una linea retta ascendente


Ecco il codice delle funzioni di calcolo degli utili e del FF



Ecco il risultato, AO ha trovato un target per AMO tale che se operiamo con i suoi segnali otterremo una bella crescita dei profitti.


Quindi? ) Come influisce il risultato sui nuovi dati? È fatto senza ff con un semplice markup.
 
Elvin Nasirov #:

Non direi che sono pigro nel fare altri markup, provo diverse varianti e dato che non sono un esperto di machine learning, quando mi viene in mente un'idea, cerco di trovare almeno alcune varianti di esempi con tentativi di raggiungere il risultato.

Quando ho provato a realizzare una versione parametrica della soluzione con i propri valori degli indicatori, ma si è scoperto che ci sono così tante varianti dell'insieme dei valori degli indicatori che con l'attuale potenza di calcolo la selezione dei parametri sarà effettuata quasi 10 anni).

Sono rimasto sorpreso quando ho letto la frase "prendere qualsiasi TS redditizio dal mercato". Non avevo nemmeno preso in considerazione questa opzione, perché pensavo che non ci fossero.

Si tratta di una sorta di percezione complicata. È necessario trovare l'inefficienza. Se non riuscite a trovarla da soli, cercatela negli altri. Ci sono segnali con una storia sul mercato.
 
Maxim Dmitrievsky #:
E allora? ) È un semplice markup senza FF.

Se fosse così semplice, non ci sarebbero AO e FF...


È quando sappiamo esattamente cosa ci serve e capiamo come algoritmarlo che possiamo farlo con il markup.

E ci sono casi in cui vogliamo semplicemente dire: "Non so come dovrebbe essere, ma che sia bello".

Tutto ciò che possiamo descrivere è buono/cattivo, ed è quello che viene inserito nel FF.


Ecco un esempio di compito:

Il compito è quello di addestrare un AMO tale da non commettere errori nelle sue previsioni su nuovi dati relativi a una delle classi, mentre a una delle classi è vietato commettere errori...

come creare un markup di questo tipo?


 
mytarmailS #:

Se fosse così semplice, non esisterebbero AO e FF.


Quando si sa esattamente di cosa si ha bisogno e si capisce come algoritmarlo, si può usare il markup.

E ci sono casi in cui vogliamo semplicemente dire: "Non so come dovrebbe apparire, ma che sia bello".

Tutto ciò che possiamo descrivere è buono/cattivo, e questo è ciò che è incorporato nel FF.


Ecco un esempio di compito:

Il compito è quello di addestrare AMO in modo che non commetta errori nelle sue previsioni su nuovi dati relativi a una delle classi.

come farlo con il markup?


Dopo il markup, si buttano le operazioni perdenti nella terza classe e si ottiene la stessa curva piatta.
E come può la selezione dei criteri di ottimizzazione fare qualcosa per i nuovi dati? È un mezzo per migliorare un TS già pronto. Cercare le perdite personalizzate e vedere cosa c'è nei nuovi dati? Neanche questa è una buona idea.
 
Maxim Dmitrievsky #:
Dopo aver effettuato la marcatura, si buttano le operazioni perdenti nella terza classe e si ottiene la stessa curva regolare.

Ecco quanto codice bisogna scrivere con queste classi, buttarle fuori, riqualificarle...

In FF scrivo solo 2 righe, che penalizzano per un errore di classe e premiano per una risposta corretta, e questo è tutto, e poi immagina come farlo da solo e non ha bisogno di una montagna di codice....


OK, è stato facile, un altro esempio di compito

L'input di AMO è l'eurodollaro e voglio che l' output sia una serie che sia

1) cointegrata con la sterlina

2) se facciamo arbitraggio AMO riga / sterlina, in modo che ci sia un profitto.

Come si può fare questo attraverso il markup?

Maxim Dmitrievsky #:
l'ottimizzazione può fare qualcosa per i nuovi dati?

Come per la MO normale, ci alleniamo e guardiamo con un occhio alla traccia e con l'altro al test.