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

 
ヴィザード_。
ユア、人のために通常版(またはアップグレード版)を作れ)))

1.この種の標準的なファイルを読ませる - ヘッダー(逆カンマあり、なし)、データ、デリミタ、zpt、diff.zpt、タブレーションを読ませる。例

"Date";"V1";"A77";"V23A";"Целевая"
01.01.2000;4.999995E-03;1.499891E-03;-2.000213E-03;-5.000234E-03;1

2.モデルには10個しか入力させないが、たくさん読み込めるようにする。
を別タブで表示させるか、キャップを設定する(あなたが入力を選択する)か、その他。

3.正規化なし!(または無効)、なぜならデータが最初に0に集中している場合、変換後に
x-x.min/......(あるいは何でもいい) - 飛んでけ)))

4.ランダム性を捨て(あるいは切り替え)、データを2分割して順番にカウントし、1の場合は予測成功率を出力する(0の場合はしない)。

5.インプットの大切さを伝えた - Good!

6.出力される数式に加えて、フル出力させる!つまり、今すぐ

double x2 = 2.0 * (v5 + 1.0) / 2.0 - 1.0;
double decision = -0.2632437547312642 -0.2634178652535958 * x2
+ 0.05267978803936412

なきゃならない

名称 目標値 = -0.2632437547312642 -0.2634178652535958 * 挿入工数 x2= (2.0 * (v5 + 1.0) / 2.0 - 1.0)
+ 0.05267978803936412

を得る。

名称 目標値 = -0.2632437547312642 -0.2634178652535958 * (2.0 * (v5 + 1.0) / 2.0 - 1.0)
+ 0.05267978803936412

クイックテストにある程度使えるデバイスが手に入ります。そうすれば、まだ挿入などできる、シンプル(欲張らない)な
アルゴリズムで、選択...そうでなければ、このツールは役に立ちません。ファイルを編集している間、あれこれと...。他のものを使った方が楽なんだけど...。
バージョン7はどこだ?
いや...なかなか頑丈で気に入っています。というわけで、100点、由良さん。
 
СанСаныч Фоменко:

まあまあ - ただ時間と頭脳が足りない。

目標とする変数から始めて、それに対する予測因子を選択し、それを何とか数学でダブルチェックしなければならない。とにかく骨の折れる作業で、正式にはできないんだ。

舌の根も乾かぬうちに。分かってるよ。徹夜で考えたんだ。我々はIDEALのアウトプットのために述語に基づいてモデルを構築している。まれに50~60%の汎化ができる。入力とIDEAL出力を一致させることは、不可能ではないにせよ、容易ではない。しかし、アウトプットが理想的でないとしたらどうだろう。100%の汎化につながる誤差を許容したらどうだろう?こうして、私たちは入力データの能力を知ることができ、この必要なアウトプットが(たとえエラーがあったとしても)稼げれば、それは未来に生きる権利を持つことになる。最初は、モデルそのものと出力変数の二重の最適化が必要だと思った。しかし、あるとき気がついた。もしモデルが60%の汎化率で訓練されているなら、数式を指標に代入し、訓練サンプルとテストサンプルのシグナルを得ることで、システムが100%で機能する結果を得ることができるからだ。つまり、訓練サンプルとテストサンプルのシグナルを得、そのシグナルに従って出力変数を変更すれば、まさに100%の訓練結果を得ることができる。これが結論だ。汎化率が50~60%のモデルをいくつか得たので、トレーニング区間とテスト区間で得られた(機能した)モデルを選択する。これは、一般的に、それが獲得した主な信号(十分な利益をもたらしたもの)と、それがマージされた信号は、(あなたの笑顔を共有し、それはあなたに一度以上返されます)、期間の終わりに我々が稼いだ主なものは、非常に不利ではなかったと言います。つまり、こういうことだ......。
 
ヴィザード_。
4.ランダム性を捨て(あるいは無効にし)、データを2分割して順番にカウントし、1に対して予測成功率を出力させる(0は必要ない)

jPredictionをFXに使おうとすると、これが主な追加項目となるのでしょう。データをランダムに2つに分割し、1つ目の部分で学習させ、2つ目の部分でも良い結果を示すモデルはたくさんあります。しかし、これらのモデルのほとんどは、新しいデータでは効果がないだろう。FXには一定の依存関係がなく、ランダムなテストサンプルで良い結果が出ても、新しいデータでの良い結果を保証するものではありません。モデルがFXに適しているかどうかを確認する唯一の方法は、ロールフォワードテストです。

赤色で表示されたデータに対して、モデルは良好な予測能力を示すはずです。jPredictionでは、このようなテストはテストケースごとにデータを再入力して手動で行わなければならず、本格的な仕事には向いていません。
また、トレーニング+テストの合計よりも、テストデータのみのスコアを表示する方が良いというのは、私も同感です。
今、jPredictionが出す成績はすべてFXには不十分であり、誤解を招くだけです。

ちなみに、Rのcaretパッケージでは、ロールフォワードがどのように行われるかは、以下の通りです。

http://topepo.github.io/caret/splitting.html(時系列のデータ分割の項)

library(caret)
caretObj <- train(x = trainData[,1:(ncol(trainData)-1)],
                  y = trainData[,ncol(trainData)],
                  trControl = trainControl(method = "timeslice", initialWindow=1000, horizon=300, fixedWindow=TRUE),
                  verbose = TRUE)

モデルは最初の1000サンプルで学習され、次に1001-1300サンプルでテストされます。その後、300にシフトし、301-1300をトレーニングし、1301-1600をテストする、といった具合に、トレーニング例がなくなるまで続けます。

 
ヴィザード_。
ユア、プログレの通常版(もしくはアップグレード版)を作ってくれ))))

1.この種の標準的なファイルを読ませる - ヘッダー(反転カンマの有無)、データ、デリミタは、それがzpt、tchk.zpt、集計を早めるようにします。例


2.モデルには10個の入力しか使用しないが、多くの入力を読み込めるようにし、その後
別タブで、マーカー(入力を選択する)を入れたりすることができます。

3.正規化なし!(または無効)、なぜならデータが最初に0に集中している場合、変換後に
x-x.min/......(あるいは何でもいい) - 飛んでけ)))

4.ランダム性を捨て(あるいは切り替え)、データを2分割して順番にカウントし、1の場合は予測成功率を出力する(0の場合はしない)。

5.インプットの大切さを伝えた - Good!

6.出力される数式に加えて、フル!を出力させる、それが今です。


7.バージョン7はどこですか?
  1. ポイントは、Excelのカンマは、数値の整数部分と分数部分を区切るために使われていることです。区切り文字を増やすと、異なるアプリケーションで選択項目を編集する人は、jPredictionでさらに踊らされないと編集できなくなるんです。つまり、現時点では、すべてが多かれ少なかれスプレッドシートと互換性を持つように作られているのです。現時点では、パーサーはCSVファイルに対してのみ実装されており、表計算ソフト用に調整されています。しかし、jPredictionはOOPで作られており、他のフォーマット用にインターフェースを拡張することが可能です。
  2. 2点目は、jPredictionには追加設定がなく、今後もないことです。jPredictionでのユーザーの仕事は、準備のできたサンプルを取ってF8を押し、モデルまたは「Garbage in, Garbage out」メッセージを適度な時間で取得することです。もしあなたが、質の高いデータを調べたり探したりする代わりに、学習アルゴリズムやプログラムのチューニング、ネットワークアーキテクチャの設計について騒ぐのが好きなら、他のMLパッケージを使わせてあげましょう。今はそういうパッケージがたくさんあるので、一生かけても掘り起こすことはできないかもしれません。 機械学習の最大のポイントは、モデルの汎化性は、アルゴリズムやその設定ではなく、サンプルのデータの質のみに依存することである。 ですから、jPredictionで何かをいじろうとするのではなく、サンプルに問題がないかを探すべきです。
  3. 2項参照。2.
  4. パラ参照。2
  5. -
  6. そこでの出力は数式ではなく、このモデルを他のアプリケーションに移植するためのコードです。現時点では、Javaアプリケーションに移植するためのコードを実装しています。その後、モデルコードをMQLに移植する予定です。このコードはできるだけ簡潔であるべきで、長い間のびのびとしたものであってはなりません。そのため、不要なものはすべて取り除き、よく繰り返されるものはすべて別置きにしています。
  7. プロジェクトのウェブサイトはjprediction.com で、最新版をダウンロードするための「ダウンロード」メニューも用意されています。

もし誰かがjPredictionの何かをあまり気に入らなければ、プロジェクトはGNU GPLライセンスの下でオープンソースで開かれており、そこからフォークを作り、何かを変更、修正することは禁止されていないばかりか、ある程度は歓迎されています。

 
Dr.トレーダー

jPredictionをFXに使おうとすると、これが主な追加項目となるのでしょう。データをランダムに2つに分割し、1つ目の部分で学習させ、2つ目の部分でも良い結果を示すモデルはたくさんあります。しかし、これらのモデルのほとんどは、新しいデータでは効果がないだろう。FXには一定の依存関係がなく、ランダムなテストサンプルで良い結果が出ても、新しいデータでの良い結果を保証するものではありません。モデルがFXに適しているかどうかを確認する唯一の方法は、ロールフォワードテストです。

赤色で表示されたデータに対して、モデルは良好な予測能力を示すはずです。jPredictionでは、このようなテストはテストケースごとにデータを再入力して手動で行わなければならず、本格的な仕事には向いていません。
また、トレーニング+テストの合計よりも、テストデータのみのスコアを表示する方が良いというのは、私も同感です。
今、jPredictionが出す成績はすべてFXには不十分であり、誤解を招くだけです。

ちなみに、Rのcaretパッケージでは、ロールフォワードがどのように行われるかは、以下の通りです。

http://topepo.github.io/caret/splitting.html(時系列のデータ分割の項)

モデルは最初の1000サンプルで学習され、次に1001-1300サンプルでテストされます。その後、300にシフトし、301-1300でトレーニング、1301-1600でテスト、といった具合に、トレーニング例がなくなるまで続けます。

スーパー情報ありがとうございました。
 
Dr.トレーダー

今、jPredictionが出している試算は、どれもFXには不十分で、誤解を招くだけです。

根拠のない主張、つまり俗に言うデタラメである。Walk Forwardの有効性を示すために、jPredictionで導き出したモデルとWalk Forwardで導き出したモデルの比較結果を、「お粗末さ」をクロスチェックできるような形で提示してください。その結果、おっしゃるようなことが確認できれば、現在jPredictionに実装されているテストアルゴリズムをWalk Forwardに置き換えることも意味があると思います。

一見「当たり前」のアイデアが、実装し、経験で検証した結果、「空っぽ」であることが判明する、ということに何度も遭遇しています。しかし、その効果はごく一部で、しかも「ファイル」による追加編集が必要な場合も少なくありません。それは、アイデアの詳細が欠落しているからです。そして、その細部にこそ、悪魔が潜んでいるのです。

リーナス・トーバルド(Linuxカーネルの開発者)は、「遅かれ早かれ、理論と実践は出会う」と繰り返し、飽きることがない。そして、実践は常に真理の基準である。いつも!」です。

さらに、ウォークフォワードの問題点は、各ステージで 多くのモデルが登場することです。これらのうち、どのモデルを実用機として残すべきか、どのような基準で選択すべきなのか。

 
ユーリー・レシェトフ

これらは根拠のないアンサブストレイント、すなわち一般にデタラメと呼ばれるものである。Walk Forwardの有効性を示すために、jPredictionモデルとWalk Forward後のモデルの比較研究を行い、「お粗末さ」をクロスチェックできるようにしてください。その結果、おっしゃるようなことが確認できれば、現在jPredictionに実装されているテストアルゴリズムをWalk Forwardに置き換えることも意味があると思います。

一見「当たり前」のことが、いざ実行に移され、経験によって検証されると、「空しい」ことになる、ということに何度も遭遇しています。そして、そのようなアイデアはごく限られたものであり、多くの場合、さらに「ファイル」による修正を経て初めて有効なものとなるのです。それは、アイデアの詳細が欠落しているからです。そして、その細部にこそ、悪魔が潜んでいるのです。

リーナス・トーバルド(Linuxカーネルの生みの親)は、「理論は遅かれ早かれ実践と出会う」と繰り返し言っている。そして、実践は常に真実の基準であることが証明されます。いつも!」です。

さらに、ウォークフォワードの問題点は、各ステージで多くのモデルが登場することです。これらのうち、どれをワーキングモデルとして残し、どのような基準で選択すべきなのでしょうか。

喧嘩をする必要はないのです。私たちは、非常に複雑な研究テーマに取り組んでいます。思い込みが激しいそして、これらの仮定は、過学習とアウトサンプリングにつながる。

2つのシンプルなルール:マーケットを騙せ、自分を騙すな。

Walk Forwardはもちろん良い方法です。しかし、そこでの主なパラメータは、学習の深さとテストの長さである。同時に(!!)、これらのパラメータを調整することで、フォワードポジションの結果が良くなれば、ウォークフォワードをオーバートレーニングすることになります。つまり、1つの大きな塊に対して、Walk Forward最適化を繰り返し行うのです。別の重ならない塊では、「トレーニング」で最適なウォークフォワードパラメータを試し、もう1回フルウルフフォワードを実行します(ただし1回だけ)。結果が良ければ、モデルは依存関係を拾い上げていることになる。もし結果が悪ければ、あまり良くないモデルでウォークフォワードの再トレーニングを行っただけということになります。

遅延したサンプルで一度だけテストするのと同じ問題があるのです。今やっているのは、オーバートレーニングによる成果の公開です。クロスバリデーションの結果は、最終テスト用の延期されたサンプルと相関があるはずです。とはいえ、クロスバリデーションで最適なモデルを選択すれば、おおよそ最良のサンプル外結果を得ることができます。そうでない場合、つまり相関がない、あるいは負の相関がある場合は、FXのモデルが不適切であり、変更する必要があります。

 
ユーリー・レシェトフ

これらは根拠のない主張、つまり俗に言うデタラメである。Walk Forwardの有効性を証明するために、jPredictionモデルとWalk Forward後のモデルの比較検討の結果を、「お粗末さ」をクロスチェックできる形で提示してください。その結果、おっしゃるようなことが確認できれば、現在jPredictionに実装されているテストアルゴリズムをWalk Forwardに置き換えることも意味があると思います。

一見「当たり前」のことが、いざ実行に移され、経験によって検証されると、「空しい」ことになる、ということに何度も遭遇しました。そして、そのようなアイデアはごく限られたものであり、多くの場合、さらに「ファイル」による修正を経て初めて有効なものとなります。それは、アイデアの詳細が欠落しているからです。そして、このような細部にこそ、悪魔が潜んでいるのです。

リーナス・トーバルド(Linuxカーネルの生みの親)は、「理論は遅かれ早かれ実践と出会う」と繰り返し言っている。そして、実践は常に真実の基準であることが証明されます。いつも!」です。

さらに、ウォークフォワードの問題点は、各ステージで多くのモデルが登場することです。これらのうち、どれをワーキングモデルとして残し、どのような基準で選択すべきなのでしょうか。

レシェトフさんには敬意を表しますが、「一般化可能性」といった用語も含めて、天下り先を証明するのは自転車の作者次第です。トレーダー博士の 立場が便利なのは、博士が表現するアイデアの理論と何百万人ものユーザーによる実践的検証の両方について、必要なすべての証明が、しばしば何年も前に博士より先になされているという事実にこそあるのだ。一方、彼は具体的な使用例を挙げるだけです。そして、議論中のポストの正しさは、直感的にも理論的にも明らかです。
 
アレクセイ・ブルナコフ

争うほどのことではありません。

私もそう思います。しかし、そのためには、スレッド内の根拠のない非難を最小限に抑える必要があります。ダブルチェックが可能な比較研究の結果を出すのがベストな選択です。

アレクセイ・ブルナコフ

私たちは非常に複雑な研究に取り組んでいます。

働いている人もいれば、根拠なく指をくわえて見ている人もいる(指をくわえて見るのはやめよう)。

アレクセイ・ブルナコフ

戦う価値はない。

私もそう思います。

アレクセイ・ブルナコフ

ここには多くの前提があります。そして、このような前提が、過剰な教育やサンプル外のプラマイゼロにつながるのです。

パンに仮定を載せてポケットに入れることはできない。ですから、オーバートレーニングやサンプル外プラマイゼロの熊手を踏まないように、根拠のない思い込みではなく、何事も経験的に確認すべきなのです。


アレクセイ・ブルナコフ

Walk Forwardはもちろん良い方法です。しかし、そこでの主なパラメータは、学習の深さとテストの長さである。同時に(!!)、これらのパラメータに対処してフォワードトラックの結果が良くなるようにすれば、ウォーク・フォワードをオーバートレーニングすることになります。つまり、1つの大きな塊に対して、Walk Forward最適化を繰り返し行うのです。別の重ならない塊で、「training」で最適なWalk Forwardのパラメータを試し、もう1回実行します。結果が良ければ、モデルは依存関係をピックアップする。もし結果が悪ければ、ウォークフォワードをあまり良くないモデルで再トレーニングしただけということになります。

遅延したサンプルで一度だけテストするのと同じ問題があるのです。今やっているのは、オーバートレーニングによる成果の公開です。クロスバリデーションの結果は、最終テスト用の延期されたサンプルと相関があるはずです。とはいえ、クロスバリデーションで最適なモデルを選択すれば、おおよそ最良のサンプル外結果を得ることができます。そうでない場合、つまり相関がない、あるいはマイナスになる場合は、FXのモデルが不適切であり、変更する必要があります。

要するに、どの方式にもメリットとデメリットがあるということです。思い込みは、長所を誇張し、短所を無視する。

さらに大きなポイントは、どの手法も最高の品質基準に従ってモデルを選択することはできず、すべての手法は拒絶の原則に従って選択すること、つまり、わかっていながら適さないものだけをフィルタリングしていることです。リジェクトされた後に残ったものの潜在的な適性を計算する方法は、MLにはない。

特に非定常的な環境では。一般化という点では、一見、最適なモデルを選択することができるのですが、明日、中央銀行のトップが会議でおならをしたら、すべてのモデルが水の泡になってしまうのです。

 
ユーリー・レシェトフ


要は、どの方式にもメリットとデメリットがあるということです。思い込みは、メリットを誇張し、デメリットを無視する。

さらに大きなポイントは、どの手法も最適な品質基準でモデルを選定しておらず、すべての手法が、不適当とわかっているものだけをフィルタリングする「拒否の原理」に従って選定していることだ。MLでは、リジェクト後に残ったものの潜在的な価値を計算する方法はない。

非定常的な環境ではなおさらだ。一般化という観点から最適なモデルを選択することは可能なようだが、明日、どこかの中央銀行のボスが屁をこいたら、すべてのモデルが水の泡になってしまう。

そうなんですね。実験的にのみ。このモデルをサンプル外で適用することで、(トレーニング+テストでの)モデル選択が良かったかどうかが理解できる。機種によってできることは異なります。サンプルで良いモデルを選択すると、サンプル外でも良い結果が得られる場合、そのモデルが選択された問題に適していることを意味します。