トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 3048

 
Aleksey Vyazmikin #:

ったな。

library(patchwork)

インストールされていますか?

 
Aleksey Vyazmikin #:

一般的な更新では、エラーさえ書かないが、結果は同じである - ほとんどすべてアップ。

それを実行し、私は同じ画像を得た))


私はエラーに気づいた、そこに私は、ターゲット内の未来を覗いていた...うん...私たちは私たちのグリップを失う。

この行は

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

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


コードをもう少し読みやすく書き直した。

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)
}


 
Maxim Dmitrievsky #:

まあ、他に評価基準がないのであれば、パラメーターの安定性を通して

TSの出力値を信号として時間的に表現し、そのエントロピーを測定してランダム性と比較することもできる。TSがある周期性で繰り返される規則性を捉えていれば、それが反映される。

カスタムFFの製作者にとっては有用かもしれない。

最良の尺度は、時間と実生活でのテストである。どんなTCでも機能しなくなる。

なぜ新しいデータではうまくいかないのか、どうすればいいのか、大まかには理解している。

 
Aleksey Nikolayev #:

ONNXからONNXへの疑問は、単に私が遭遇した2つの記述の並置から生じた:1) モデルの獲得はパイプラインとして表現できる。

これが実際にはほとんど不可能であることは明らかだ。実際、私は、この技術の根本的な限界に気づくために、何がそのような可能性の実現を妨げているのかを理解したいと思っている。

ファイルへの書き込みができないといった制限と、データ型(たとえばデータフレーム)がサポートされていないといった制限とでは、また別の話です。

どちらも真実である。前処理を含むモデルを取得することは可能です。残念ながら、すべてのフレームワークで可能なわけではなく、最も単純なものだけです。TF/Kerasは、前処理を実行する最初のNN層を実装しています。 scikit-learnは、パイプライン+モデルの最も豊富な選択肢を持っています。 scl2onnxを参照してください。

ONNXは前処理から始まるパイプライン全体を含むべきであるということを、真剣な貢献者が認識しているのは良いことだ。実稼働中の新しいデータは、訓練と同じ前処理ステップを経なければならない。そうでなければ、ONNXモデルの結果は予測不可能なものになってしまう。

この方向性は急速に発展しており、この問題はすぐに解決されると思います。今のところは実験してみてください。

幸運を祈る。

 
このスレッドに関係のないコメントは「容認できない伝え方」に移動しました。
 
mytarmailS #:

を走らせたら、同じ写真が撮れた ))


自分の間違いに気がついた。

この行は置き換えるべきだ。


読みやすいようにコードを少し書き換える

補助関数


修正したコードを試してみる

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)
}

エラー

> 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 #:

修正したコードを試してみる

エラーが出る

関数は最初に宣言してから使用する必要があります。

荒らしですか?
 
mytarmailS #:
なぜなら、関数は最初に宣言され、それから使用されなければならないからだ...。

荒らしですか?

なんで知ってるんだろう...。

では、これがエラーです

> D <- make_data(close)
Error in h(simpleError(msg, call)) : 
  ошибка при оценке аргумента '.data' при выборе метода для функции 'embed': argument ".data" is missing, with no default
 
RLに関する興味深い記事。https://habr.com/ru/articles/349800/
このスレッドの作成者と他のメンバーとのコメットリウムでの会話も興味深い。
 
mytarmailS #:
RLに関する興味深い記事。https:// habr.com/ru/articles/349800/
このスレッドの作成者と他のメンバーとのコメットリウムでの会話も興味深い。

RLという概念は、タスクの取引には冗長ではないか?エージェントに対する環境の影響はあるが、環境に対するエージェントの影響はあるのだろうか?この2つ目の影響を人為的に導入することは可能でしょうが、それは意味があるのでしょうか?

ー損失関数は関数は関数は関数は関数は関数は関数は関数は関数は関数は関数は関数は関数は関数の関数は関数の関数は関我々の場合、それは利益であるべきであり、モデルのパラメータに滑らかで単調に依存すべきである。

利益の類似物の滑らかさは、おそらく何らかの方法で達成できるだろう(例えば、カーネル平滑化のようなものによって)。しかし、単調性については大いに疑問である。

理由: