Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 3048

 
Aleksey Vyazmikin #:

Und die Vergangenheit Code-Skript, das gepostet wurde früher ein bisschen - nicht mehr funktionieren - verwendet werden, um zu arbeiten - vor den Updates.

library(patchwork)

Ist es installiert?

 
Aleksey Vyazmikin #:

Im Allgemeinen aktualisiert, auch der Fehler nicht schreiben, aber das Ergebnis ist das gleiche - alle bis fast.

lief es, ich habe das gleiche Bild))


Ich erkannte den Fehler, da hatte ich einen Blick in die Zukunft in das Ziel... ja... wir verlieren unseren Griff.

Diese Zeile sollte ersetzt werden

dp <- с(diff(close),0)   

durch ersetzen.

dp <- tail(c(diff(close),0),nrow(X))


Ich habe den Code etwas lesbarer umgeschrieben.

close <- cumsum(rnorm(10000,sd = 0.00001))+100
par(mar=c(2,2,2,2))  ; plot(close,t="l")


D <- make_data(close)
tr <- 1:500
R <- make_rules(y = D$Y[tr] , x = D$X[tr,])
# head(R)
buy_rules <- R$condition[ R$pred==1 ]



plot(x = 1:2000,y = rep(NA,2000), ylim = c(-0.001,0.001)) 
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
  lines(cum_profit,col=8,lwd=1)}
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
      
      if(length(cum_profit)>30){
      ccor <- cor(cum_profit, 1:length(cum_profit))
      if(ccor>=0.95)  lines(cum_profit,col=i,lwd=2)
      }
}
abline(h = 0,col=2,lty=2)
gc(T,T)

Hilfsfunktionen

make_rules <- function(y, x){
  library(inTrees)  # ?inTrees::getRuleMetric()
  library(RRF)
  rf <- RRF(x = x,y = y,ntree=100)
  rule <- getRuleMetric(unique(extractRules(RF2List(rf),x)),x,y)
  rule <- data.frame(rule,stringsAsFactors = F)
  for(i in c(1,2,3,5)) rule[,i] <- as.numeric(rule[,i])
  return(rule)}
make_data <- function(close){
  sw <- embed(x = close,dimension = 10)[,10:1] #  make slide window data
  X <- t(apply(sw,1,scale)) #  normalase data
  
  dp <- tail(c(diff(close),0),nrow(X)) #  diff prices
  Y <- as.factor( ifelse(dp>=0,1,-1) ) #  target for classification
  res <- list(Y=Y,X=X,diff_price=dp)
  return(res)
}


 
Maxim Dmitrievsky #:

Nun, wenn es keine anderen Bewertungskriterien gibt, dann durch die Stabilität der Parameter

kann man die Ausgangswerte des TS auch als Signale in der Zeit darstellen und ihre Entropie messen und mit der Zufälligkeit vergleichen. Wenn der TS einige Regelmäßigkeiten erfasst, die sich mit einer gewissen Periodizität wiederholen, wird er reflektiert.

Für die Erbauer benutzerdefinierter FFs könnte dies nützlich sein.

Das beste Maß sind Zeit und Tests im wirklichen Leben. Jedes TC wird aufhören zu funktionieren.

Ich habe bereits verstanden, warum das Ganze bei neuen Daten nicht funktioniert, und weiß sogar ungefähr, was zu tun ist.

 
Aleksey Nikolayev #:

Die Frage nach ONNX aus ONNX ergab sich einfach aus der Gegenüberstellung von zwei Aussagen, die mir begegnet sind: 1) die Modellerfassung kann als Pipeline dargestellt werden, 2) die Pipeline kann in das ONNX-Format konvertiert werden.

Es ist klar, dass dies in der Praxis kaum möglich ist. Ich würde gerne verstehen, was genau die Umsetzung einer solchen Möglichkeit verhindert, um die grundlegenden Grenzen dieser Technologie als Ganzes zu erkennen.

Es ist eine Sache, wenn es sich um Beschränkungen wie die Unmöglichkeit handelt, in eine Datei zu schreiben, und eine andere, wenn es sich um Beschränkungen wie die fehlende Unterstützung für Datentypen (z. B. Datenrahmen) handelt.

Beide Aussagen sind richtig. Es ist möglich, ein Modell mit Vorverarbeitung zu erhalten. Leider nicht in allen Frameworks und nur in den einfachsten. TF/Keras implementieren die ersten NN-Schichten, die die Vorverarbeitung durchführen. scikit-learn hat die größte Auswahl an Pipeline+Model, siehe scl2onnx.

Es ist gut zu sehen, dass ernsthafte Mitwirkende erkennen, dass ONNX die gesamte Pipeline beinhalten sollte, beginnend mit der Vorverarbeitung. Neue Daten in der Produktion müssen die gleichen Vorverarbeitungsschritte durchlaufen wie beim Training. Andernfalls werden die Ergebnisse des ONNX-Modells unvorhersehbar sein.

Diese Richtung entwickelt sich schnell und ich denke, dass dieses Problem bald gelöst sein wird. Bis dahin sollten Sie experimentieren.

Viel Erfolg!

 
Kommentare, die für dieses Thema nicht relevant sind, wurden in die Rubrik "Inakzeptable Art der Kommunikation" verschoben.
 
mytarmailS #:

durchführte, erhielt ich das gleiche Bild ))


Ich habe meinen Fehler erkannt und einen Blick in die Zukunft geworfen... ja, ich habe den Faden verloren.

Diese Zeile sollte ersetzt werden

durch


Der Code wurde leicht umgeschrieben, damit er besser lesbar ist.

Hilfsfunktionen


Ausprobieren des geänderten Codes

close <- cumsum(rnorm(10000,sd = 0.00001))+100
par(mar=c(2,2,2,2))  ; plot(close,t="l")


D <- make_data(close)
tr <- 1:500
R <- make_rules(y = D$Y[tr] , x = D$X[tr,])
#  head(R)
buy_rules <- R$condition[ R$pred==1 ]



plot(x = 1:2000,y = rep(NA,2000), ylim = c(-0.001,0.001)) 
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
  lines(cum_profit,col=8,lwd=1)}
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
  
  if(length(cum_profit)>30){
    ccor <- cor(cum_profit, 1:length(cum_profit))
    if(ccor>=0.95)  lines(cum_profit,col=i,lwd=2)
  }
}
abline(h = 0,col=2,lty=2)
gc(T,T)

make_rules <- function(y, x){
  library(inTrees)  # ?inTrees::getRuleMetric()
  library(RRF)
  rf <- RRF(x = x,y = y,ntree=100)
  rule <- getRuleMetric(unique(extractRules(RF2List(rf),x)),x,y)
  rule <- data.frame(rule,stringsAsFactors = F)
  for(i in c(1,2,3,5)) rule[,i] <- as.numeric(rule[,i])
  return(rule)}
make_data <- function(close){
  sw <- embed(x = close,dimension = 10)[,10:1] #  make slide window data
  X <- t(apply(sw,1,scale)) #  normalase data
  
  dp <- tail(c(diff(close),0),nrow(X)) #  diff prices
  Y <- as.factor( ifelse(dp>=0,1,-1) ) #  target for classification
  res <- list(Y=Y,X=X,diff_price=dp)
  return(res)
}

Ich erhalte einen Fehler

> D <- make_data(close)
Error in make_data(close) : could not find function "make_data"
> source('~/.active-rstudio-document', echo=TRUE)

> close <- cumsum(rnorm(10000,sd = 0.00001))+100

> par(mar=c(2,2,2,2))  ; plot(close,t="l")

> D <- make_data(close)
Error in make_data(close) : could not find function "make_data"
> source('~/.active-rstudio-document', echo=TRUE)

> close <- cumsum(rnorm(10000,sd = 0.00001))+100

> par(mar=c(2,2,2,2))  ; plot(close,t="l")

> D <- make_data(close)
Error in make_data(close) : could not find function "make_data"
> 
 
Aleksey Vyazmikin #:

Ausprobieren des geänderten Codes

erhalte ich einen Fehler

Weil Funktionen erst deklariert und dann verwendet werden müssen...

Sind Sie trolling oder was?
 
mytarmailS #:
Denn Funktionen müssen erst deklariert und dann verwendet werden...

Trollst du dich oder was?

Woher soll ich das wissen...

Dann ist das der Fehler

> D <- make_data(close)
Error in h(simpleError(msg, call)) : 
  ошибка при оценке аргумента '.data' при выборе метода для функции 'embed': argument ".data" is missing, with no default
 
Interessanter Artikel über RL. https://habr.com/ru/articles/349800/
Auch ein interessantes Gespräch im Kometarium zwischen dem Ersteller dieses Threads und einem anderen Mitglied.
 
mytarmailS #:
Interessanter Artikel über RL. h ttps:// habr.com/ru/articles/349800/
Auch ein interessantes Gespräch im Kometarium zwischen dem Ersteller dieses Threads und einem anderen Mitglied.

Ist das Konzept des RL für Handelsaufgaben nicht überflüssig? Wir haben den Einfluss der Umgebung auf den Agenten, aber gibt es auch einen Einfluss des Agenten auf die Umgebung? Es ist wahrscheinlich möglich, diesen zweiten Einfluss künstlich einzuführen, aber ist das sinnvoll?

Zwei (oder drei) Ideen aus dem Artikel sind für uns keineswegs überflüssig - nämlich, dass die Verlustfunktion genau das widerspiegeln sollte, was wir brauchen, und dass sie glatt (und monoton) sein sollte. In unserem Fall sollte es der Gewinn sein, und er sollte glatt und monoton von den Parametern des Modells abhängen.

Die Glättung eines Analogons des Gewinns kann wahrscheinlich irgendwie erreicht werden (zum Beispiel durch so etwas wie Kernel-Glättung). Aber ich bezweifle sehr, dass sie monoton ist.