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

 
ミハイル・マルキュカイツ
ユーリ、聖なるものを使って聖杯を作ろうと思ったんだけど、予測値が10以上にはならないという碑文が出たんだ。これは意図的な制限なのか、アルゴリズムの限界なのか......。10以上は極めて関連性が高いので......。

10以降はint型の オーバーフローが発生する可能性があり、32ビットしかないため、オーバーフロー前は2^32=2147483648を超えない数値を保持することが可能です。20億を少し超える程度です。もちろん、より大きな桁数のカウンターを実装することは可能ですが、計算速度は数倍遅くなります。

そのため、Dr.TraderはRで書き直したlibVMRをフルに動かすことができなかったのです。

 
ユーリー・レシェトフ

10を超えるとint型 はオーバーフローする可能性があり、32ビットしかないため、2^32=2147483648を超えない範囲でオーバーフローしない数値に収まることになります。20億を少し超える程度です。もちろん、より大きなビット深度のカウンターを書き込むことも可能ですが、計算速度は数倍遅くなります。

ふむふむ...。スピードを落とさないほうがいいのでは...。以前のバージョンでは本当に面倒でした。OK、10だから10、今は入力の質を上げた方がいいし、作業も可能だと思うのですが...。
 
ユーリー・レシェトフ

10以降はint型の オーバーフローが発生する可能性があり、32ビットしかない、つまりオーバーフロー前は2^32=2147483648を超えない数値が格納されています。20億を少し超える程度です。もちろん、より大きな桁数のカウンターを書くこともできますが、計算速度は数倍に落ちます。

そのため、Dr. TraderはR上で書き直したlibVMRをフルに動かすことができませんでした。計算量が多すぎて、メモリを消費してしまうのです。

ひとつお話をさせていただくと、確かパラレル方式での計算についてお伺いしたことがありましたね。そうすれば、演算コプロセッサの入力をより多く数えることができるようになるのです。ただ一人、LibVMRxをC++に書き換えて並列化したアホが現れました。 彼は非常に高性能なコンピュータを持っていましたが、彼が言うように8カラムを処理するのに40分ほどかかりました。プログラムも何も送ってこず、ただ言い訳とデタラメで私を苦しめるだけでした。データをすべて提供し、システムやモデル構築のための考察を共有する準備はできていたのですが。しかし、彼は私を助けることを拒否した。そんな人がいるんですね。吹き込んだり、出したり・・・。
 
ミハイル・マルキュカイツ
そういえば、平行移動の計算についてお聞きしたことがありましたね。そうすれば、演算コプロセッサの入力をより多く数えることができるようになるのです。ただ一人、LibVMRxをC++に書き換えて並列化したアホが現れました。 彼は非常に高性能なコンピュータを持っていましたが、彼が言うように8列を処理するのに40分ほどかかりました。プログラムも何も送ってこず、ただ言い訳とデタラメで私を苦しめるだけでした。データをすべて提供し、システムやモデル構築のための考察を共有する準備はできていたのですが。しかし、彼は私を助けることを拒否した。そんな人がいるんですね。吹き込んだり、出したり・・・。

最新のバージョン6.01で全てパラレルにしました。他には何もしない。できることなら、もう少し平行移動させたかった。自分のためにやっていた、つまり、全部を早く計算してほしいということです。


そこで、弱い予測因子を計算し、それを除去するアルゴリズムを考え出しました。計算には時間がかかりますが、その甲斐あって、弱い予測変数の代わりに、強い予測変数に置き換えることができますから。あるいは弱い予測因子を取り除くことで、計算速度と一般化能力の両方を向上させることができます。なぜなら、トレーディングの場合、相場がズルズル行き始めたら、すぐにモデルの再計算を常に実行する必要があるからです。そして、マーケットとはそういうもので、他のトレーダーが合流するとすぐに戦略を変え、またそれに合わせなければならないのです。

 
ユーリー・レシェトフ

最新のバージョン6.01で全てパラレルにしました。他には何もしない。できることなら、もう少し平行移動させたかった。自分のためにやっていた、つまり、自分で全部速く計算する必要がある。

今、私は弱い予測因子を計算し、それを除去するアルゴリズムを考え出しました。計算には時間がかかりますが、その甲斐あって、弱い予測因子の代わりに強い予測因子を代用することができるようになります。あるいは弱い予測因子を取り除くことで、計算速度と一般化能力の両方を向上させることができます。なぜなら、トレーディングの場合、相場がズルズル行き始めたら、すぐにモデルの再計算を常に実行する必要があるからです。これが市場というもので、他のトレーダーが合流するとすぐに戦略を変え、またそれに合わせなければならないのです。

その通りだと思います。変化が楽しみです。私も同じ考えですが、マーケットは常に変化しており、何かが起こったり、ニュースが出たりするたびに、それに適応していかなければならないと考えています。そして、ここにいる一部の人たちのように、5年後の聖杯を 探さないことです。これがユートピアなのですが、もう説明するのも疲れてしまって......。
 
ふむふむ...。見てください、私は今モデルを訓練しました。どちらのモデルも同じ汎化レベルの値を 持ち、つまりどちらのモデルも同じように市場セグメントを鋸で挽いたのです。これが、適切な機種を選ぶポイントだと思います。私はトレーニングを続け、インプットを探すなどしています。
 
ちなみに、最適化の過程でコアを1つ解放しているのですが、そうしないとパソコンで作業できなくなるので......。
 
Mihail Marchukajtes:
以上です。変化が楽しみです。

手作業でひとつひとつプレディクターを調べていくことも可能ですが、それも正しい方向ではあるものの、時間がかかり苦痛です。長い時間が必要ですが、自動的で合理的な時間で、それほど堪えられないものではないはずです。

ミハイル・マルキュカイツ


私たちは同じ立場の人間です。私も、マーケットは常に変化しており、何かが起こったりニュースが発表されたりするたびに調整する必要があると考えています。一部の人がするように、5年後の聖杯を探すのはやめましょう。これがユートピアなのですが、もう説明するのも疲れてしまって......。

弱いロングプレイのグレイルを 見つけることは可能です。何本か持っていました。でも、私の利益は反則寸前で、預金がしっかりあっても利益はペナペナなんです。

理論的には強いロングプレイのグレイルが見つかる可能性がありますが、確率はおそらくゼロポイントゼロでしょうか。

一番確実な方法。

  1. 最も強い予測因子を正しく選択する
  2. 市場の変化に応じてシステマチックに調整されるショートレンジモデル。しかし、こうしたことはすべて全自動で行うか、せめて手動での介入は最小限にとどめた方がよいでしょう。
 
ミハイル・マルキュカイツ
HM...見てください、モデルを学習させたところ、どちらのモデルも汎化レベルが同じ値になって います。これが、適切な機種を選ぶポイントだと思います。私はトレーニングを続け、インプットを探すなどしています。

javaファイルを見てください。Variable got under reduction "の行がある場合は、弱い予測因子であることを示している。このような予測変数は,モデルコードから除外されます.つまり,バイナリ分類器のコードのどこでも計算されないのです.

確かに、すべての予測変数がほぼ同じであれば、このような線は現れません。

以下はその例である(太字で強調)。6番目の予測因子v5(0から数える) - CSVの7列目は、何か他の強力なものと置き換えることができます。

double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5) {
   double x0 = 2.0 * (v0 + 1.0) / 2.0 - 1.0;
   double x1 = 2.0 * (v1 + 1.0) / 2.0 - 1.0;
   double x2 = 2.0 * (v2 + 1.0) / 2.0 - 1.0;
   double x3 = 2.0 * (v3 + 1.0) / 2.0 - 1.0;
   double x4 = 2.0 * (v4 + 1.0) / 2.0 - 1.0;
//Variable v5 got under reduction
   double decision = -0.23641879194630872 -0.10890380313199105 * x2
 -0.14546040268456376 * x0 * x2
 + 0.07270693512304251 * x1 * x2
 -0.07182997762863534 * x3
 -0.07383982102908278 * x0 * x1 * x2 * x3
 -0.4362541387024608 * x4
   ;
   return decision;

}
 
ユーリー・レシェトフ

javaファイルを見てください。Variable got under reduction "の行がある場合は、弱い予測因子であることを示している。このような予測変数は,モデル・コードから除外されます.つまり,バイナリ分類器のコードのどこでも計算されません.

確かに、すべての予測変数がほぼ同じであれば、このような線は現れません。

以下はその例である(太字で強調)。6番目の予測因子v5(0から数える) - CSVの7列目は、何か他の強力なものと置き換えることができます。

double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5) {。
double x0 = 2.0 * (v0 + 1.0) / 2.0 - 1.0;
double x1 = 2.0 * (v1 + 1.0) / 2.0 - 1.0;
double x2 = 2.0 * (v2 + 1.0) / 2.0 - 1.0;
double x3 = 2.0 * (v3 + 1.0) / 2.0 - 1.0;
double x4 = 2.0 * (v4 + 1.0) / 2.0 - 1.0;
//変数v5が削減された
double decision = -0.23641879194630872 -0.10890380313199105 * x2
-0.14546040268456376 * x0 * x2
+ 0.07270693512304251 * x1 * x2
-0.07182997762863534 * x3
-0.07383982102908278 * x0 * x1 * x2 * x3
-0.4362541387024608 * x4
;
リターン決定。

}

そうなんですよね、もう1年前から御社のライブラリーを利用しているんです。そんなことがよくわかる......。そんな文字列はない、述語が全部絡んでいる......。
理由: