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

 
アントン・ズベレフ
このフォーラムに限らず、複雑な取引理論を構築しようとするようなトピックをいつも読んでいます。
遺伝的アルゴリズム、ニューラルネットワーク、作者だけが理解できる複雑な数式など。

そして、そのようなシステムは市場では通用しないことを、私はいつも目の当たりにしています。モニタリングはゼロかマイナスのどちらかになる。
でも次のスレでは2chのスレでExpert Advisor使って稼いでる人がいるんだよね。そして、しっかり稼いでいる。

問題は、それがすべて意味をなしているかということです。
なぜなら、私の経験上、システムが単純明快であればあるほど、利益が上がるからです。

ひょっとして、昔ながらの証券会社の事務員さんですか?

ましかく(ランダム)取引をして、負けたら倍返しというのが「秘伝」でしょうか(笑)。

私は手数料で生活しなければならないのです、皆さん...。

 
Dr.トレーダー

委員会を作り、テストする。

元のクラスが因子型であり、行列の結果が対応する因子の序数に変換されるという問題がある。そのため、最後に比較はas.numberic()を経由することになります。

しかし、その後、私のrbind関数は警告を発し、私は何かを変更する必要があります、私はそこに何が間違っているか理解していませんでした。

コードについて少し考えてみました。

1.どうしても必要な場合以外は、for()構文を使用する必要はありません。foreach()の代わりに、実行速度が速いだけでなく、アクセス可能なコア間で計算を並列化できる素晴らしいものがあります。

2) モデルアンサンブルは意味があり、モデル間で有意差がある場合にのみ結果を出す。2つのバリエーション:1つのデータセット-異なるモデル(RF、DT、SVM)、1つのモデル-異なるデータセット。後者の場合の例を以下に示します。

#----------------------------------------------------------------------
require(ranger)
require(foreach)
require(magrittr)
data("iris")
totalModels = 50
res <- list()
Acc <- c()
res <- foreach(i = seq_len(totalModels),
               .packages = c("ranger", "magrittr")) %do% {
          id <- rminer::holdout(y = iris$Species, ratio = 2/3)
          x.test <- iris[id$ts, -ncol(iris)]
          y.test <- iris[id$ts, ncol(iris)]
          model <- ranger(Species~., data = iris[id$tr, ], 
                          write.forest = TRUE)
          pred <- predict(model, x.test)$predictions
          acc <- sum(pred == y.test) / length(y.test)
          list(Acc = acc, mod = model) 
        }
for (i in 1:totalModels) {Acc[i] <- res[[i]]$Acc}
Acc
 [1] 0.9803922 0.9607843 0.9803922 0.9607843
 [5] 0.9607843 0.9215686 1.0000000 0.9411765
 [9] 0.9019608 0.9607843 0.9803922 0.9607843
[13] 0.9803922 0.9215686 0.9607843 0.9215686
[17] 0.9803922 0.8823529 0.9411765 0.9803922
[21] 0.9607843 0.9215686 0.9607843 0.9411765
[25] 0.9411765 0.9607843 0.9411765 0.9607843
[29] 0.8823529 0.9019608 1.0000000 0.9411765
[33] 0.9215686 0.9803922 1.0000000 0.9607843
[37] 0.9411765 0.9803922 0.9607843 0.9215686
[41] 0.9411765 0.9607843 0.9411765 1.0000000
[45] 0.9607843 0.9411765 0.9215686 0.9411765
[49] 0.9803922 0.9607843

性能の良い機種を選び、そこから作業を行う。

グッドラック

 
ウラジミール・ペレヴェンコ

コードについて少し考えてみました。

1.for()は、どうしても必要な場合以外は使う必要はありません。foreach()の代わりに、実行速度が速いだけでなく、利用可能なコア間で計算を並列化できる素晴らしいものがあります。

2) モデルアンサンブルは意味があり、モデル間で有意差がある場合にのみ結果を出す。2つのバリエーション:1つのデータセット-異なるモデル(RF、DT、SVM)、1つのモデル-異なるデータセット。後者のオプションの例は以下の通りです。

より性能の良い機種を選んで作業してください。

グッドラック

もっと頻繁にお会いしたいです。消えないように。
 
ウラジミール・ペレヴェンコ


そして、最も優れた指標を持つモデルを選び、作業を行っています。


ここが悩ましいところです。

どのデータをもとに、どのようなパフォーマンスを発揮するのか。

なぜかというと、Vkontasはトレーニングデータとテストデータを使って、(多くのモデルの中から)どのようにモデルを選択するかを考えているからです。しかし、ここではとてもわかりやすく、最適な指標を選び、それを使って仕事をします。

 
アレクセイ・ブルナコフ

ここが悩ましいところです。

どのデータをもとに、どのようなパフォーマンスを発揮するのか。

なぜかというと、Vkontasはトレーニングデータとテストデータを使って、(多くのモデルの中から)どのようにモデルを選択するかを考えているからです。しかし、ここではとてもわかりやすく、最適な指標を選び、それを使って仕事をします。

初期セットは、訓練用と試験用の層状に分けられる。トレインではトレーニング、テストではそれぞれテストを行います。コードからはわからないのでしょうか?

グッドラック

 
サンサニッチ・フォメンコ
もっと頻繁にお会いしたいです。消えないように。
残念ながら、私は時々しかサイトを閲覧する時間がないのです。やることがたくさんあるんです。
 
ウラジミール・ペレヴェンコ

初期セットは、訓練用と試験用の層状に分けられる。トレーニングはトレーニング、テストはテスト。本当にコードからではわからないのでしょうか?

頑張ってください。

rminer::holdoutを試してみます、例題ありがとうございました。私の経験では、テストサンプルで最良の結果を得るためにモデルとそのパラメータを選択すれば、そのモデルは最終的にテストサンプルで本当に良い結果を得ることができるのです。しかし、新しいデータでは大抵の場合、その結果は非常に低くなります。私は特にFXのデータについて話しているのですが、他の分野ではこの方法はごく普通のことです。FXのrminer::holdoutで劇的に何かが変わるとは思っていません。
 
Dr.トレーダー
rminer::holdoutを試してみます、例題ありがとうございました。一般に、経験上、テストサンプルで最良の結果が得られるようにモデルとそのパラメータを選択すれば、最終的にそのモデルはテストサンプルで本当に良い結果を得ることができます。しかし、新しいデータでは大抵の場合、その結果は非常に低くなります。私は特にFXのデータについて話しているのですが、他の分野ではこの方法はごく普通のことです。FXのrminer::holdoutで劇的に何かが変わるとは思っていません。
そういうことなんです。そして、彼はそれを理解しなかった。

FXでは、テストが良くてもサンプル以外の性能が良いとは限りません。だから、みんな苦労しているんです。そしてここでは、まさにそのように、最高の結果(とマスターフィッティング)を取るのです。良い意味で )
 
Dr.トレーダー
となると、このモデルはテストサンプルで本当に良い結果を示すことになります。しかし、新しいデータでは大抵の場合、その結果は非常に低くなります。具体的には、FXのデータについて話しています。
アレクセイ・ブルナコフ
FXでは、テストが良くてもサンプル以外の性能が良いとは限りません。だから、みんな苦労しているんです。

マーケットは自らの統計に逆らって歩いて いる、これは私が実践で確認した理論です。新しいデータでモデルが機能しない理由から、そもそもなぜ誰もがマーケットで損をするのか、そのすべてに答えてくれる、私の知る限り唯一の理論です......。

なぜ、そんなに受け入れがたいのですか?

は、古い知識や習慣が、新しい情報に対して、それほど減衰しているのでしょうか?

モデル間の性能差は0.5%~5%なのに、なぜそんなにモデルにこだわるのか?

データあってのものなので、モデルは役に立ちません

1

この写真は何度もアップしていますが、それにしても......。

よく見てください!これは2つのネットワークからの累積売買予測の違いです cum(buy.signal) - cum(sell.signal) 理想的には我々のモデルが優れていれば、青いチャートは価格と相関するはずです、それはネットワークがデータをよく理解し、それに適切に反応することを意味します、実際に我々が見るものは...............................................................。

相関は逆だけど構造は同じ、でも予測に反して、ネットが過去に訓練した統計に反して相場が動く...、モデルがデータを理解していないとは言えませんよね。

また、どのようなクロスバリデーションが有効なのでしょうか?モデルトレーニングの後、アウトオブサンプル(新しいデータ)を使用することは、アウトオブサンプルでうまく機能するモデルのフィッティングに過ぎず、それ以上には ならないでしょう。そして、自分でモデルをトレーニングするときに、真新しいデータでは常にモデルが失敗することをよく見かけますが、わかりますか なぜそうなるのか、その答えを教えます

 

これは、トレーニングそのものが行われたデータでのグラフなのか、それとも新しいデータでのテストなのでしょうか?トレーニング用とテスト用の両方の時間帯のグラフを一度に描くと、最初の(トレーニング)部分では、青と灰色のグラフが完全に重なり、新しいデータが始まると - 逆相関に急激に移行するのではありませんか?

そんな簡単なことなら、どんなモデルでも学習させて、その予測値を反転させるだけで十分です。それは残念ながらうまくいきません。
新しいデータで0%の精度を出すモデルを教えることは、100%の精度を出すことと同じくらい難しいことなのです。例えば、コインの裏表は50%の精度がデフォルトで、どちらか一方に数十%でも逃げ切ることは同様に難しい。問題は、モデルが逆の結果を出すことではなく、あるバーは正しい結果を出し、あるバーは間違った結果を出すことであり、これらはすべてランダムで正しい結果だけをフィルタリングする方法はない。

また、なぜB予報からS予報を引くのですか?S-Bさんは逆にした方がいいのでは?そうすると、相関関係も急に正しくなるんです。

理由: