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

 
アレクセイ・ブルナコフ

このチュートリアル: https://drive.google.com/file/d/0B_Au3ANgcG7CN2tTUHBkdEdpVEU/view?usp=sharing

ありがとうございます、列を見ました、原則的に私はすでにそれもやっています - デルタ、最小、最大、時間、など。

自分のためのFX取引モデルの作り方は複雑化するばかりで、単純な方法では安定した結果は得られません。今、私が思うに、次のようなことです。

1)MT5からデータをアンロードする:ohlc、時間、指標。この段階では、デルタを追加することはありません。

2)Rにデータを読み込み、初期データの足し算、引き算、最小、最大などをして、膨大な数の新しい列を追加する。mt5よりRの方がやりやすい。

3) 入力データの部分集合を(列単位で)何らかの方法で選択する。Alexeyの例に倣ってGenSAを使うか、GAパッケージを使った遺伝的最適化だけでいいんです。私は入力ごとに2値の結果(オン/オフ)が必要なだけなので、GAには2値の動作モードがあるというアドバンテージがあると思っています。でも、両方のパッケージを比べてみる必要がありますね。

4)入力の部分集合の分析。これは、アレクセイの例にもある。しかし、私はすぐに入力のサブセットでモデルを訓練し、その結果として検証データのエラーを使用するリスクを負うことになります。モデルの学習時間が数秒以下であればいい。

5) 手順2に戻り、新たにカウントした入力を追加し、他の手順を実行する。このサイクルを、結果が改善されなくなるまで繰り返す。

また、Method of main componentsの記事で少し実験してみました。記事の例では、入力データから結果を正確に計算できるというニュアンスがあります。私の場合、入力データが明らかに不足している場合、この方法はノイズを使って学習するようになりました。この方法で、いくつかの成分だけで0.95の結果(r二乗)を得ることができれば、モデルに使われている予測変数は正しい可能性が高いということがわかります。すべての成分を使ってもr二乗が0.95を下回る場合は、モデルの計算にノイズが含まれていることになる。しかし、注目すべきは、ノイズ予測器を追加していくと、-r二乗が少しずつ減少していくことである。この方法で、予測変数のサブセット同士を比較することができると思います。r2乗が大きければ、そのサブセットの方が優れているということです。

 
Dr.Trader(ドクタートレーダー


また、主成分法の記事でもう少し実験してみました。記事の例では、入力データから結果を正確に計算できるというニュアンスがあります。私の場合、入力データが明らかに不足している場合、この方法はノイズを使った学習を開始します。この方法で、いくつかの成分だけで0.95の結果(r二乗)を得ることができれば、モデルに使われている予測変数は正しい可能性が高いということがわかります。すべての成分を使ってもr二乗が0.95を下回る場合は、モデルの計算にノイズが含まれていることになる。しかし、注目すべきは、ノイズ予測器を追加していくと、-r二乗が少しずつ減少していくことである。これは、予測変数のサブセット同士を比較する方法だと思います。r二乗が大きければ、そのサブセットの方が優れているということです。

これまでのところ、ターゲット変数に「関連する」予測変数の事前選択 という点では、Alexeyはいくつかのテクニックを持っており、私も持っています。もう一台あっても悪くないと思います。PCAは広く知られていて、文献も豊富なので、とても魅力的なのですが......。ただし、予測変数の「重要度」を計算するアルゴリズムは数多く存在しますが、私はそれらを使いこなせていないことに注意してください。しかし、私のアルゴリズムと組み合わせると、これらの標準的なアルゴリズムのほとんどで、誤差が5〜7%減少し、良い結果を得ることができるのです。

そして、初期予測変数の数は、数千の観測値で数十個にするべきだと思うのです。統計学では、何かが足りなければ統計学は成り立たない。

 
Dr.トレーダー

ありがとうございます、列を見ました、原則的に私はすでにそれもやっています - デルタ、最小、最大、時間、など。



どういたしまして。私のキットでも練習できますよ。実験の品質設計がある。データはいいんですよ。そして、バリデーションでポジティブな結果を得ることは、まったく簡単なことではありません。

1) MT5からデータをアンロードする:ohlc、時間、指標。この段階でデルタを追加することはありません。

2) Rにデータをロードし、それに元の列を加算、減算、最小、最大などして、膨大な数の新しい列を追加する。mt5よりRの方がやりやすい。

3) 入力データの部分集合を(列単位で)何らかの方法で選択する。Alexeyの例に倣ってGenSAを使うか、GAパッケージを使った遺伝的最適化だけでいいんです。私は入力ごとに2値の結果(オン/オフ)が必要なだけなので、GAには2値の動作モードがあるというアドバンテージがあると思っています。しかし、両方のパッケージを比較してみる必要があります。

まず、入力はその平均値に対して静止している必要があります。2つ目 - 列の列挙のメカニズムについて。そうです、GAにはバイナリモードがあります。GenSAではありませんが、二者択一のシミュレーションをしています。

4)入力の部分集合の分析。これは、アレクセイの例にもある。でも、すぐに入力のサブサンプルでモデルをトレーニングして、結果的に検証データの誤差を利用するリスクはありますね。モデルの学習時間が数秒以内であれば。

グッドアイディア!ただし、通常、数千回の繰り返しが必要なため、全プロセスに長い時間がかかることを覚えておいてください。このフィットネス関数は、モデル全体を計算するため、最も複雑な関数である。一方、私は、いわゆるフィルタリングのフィットネス関数を適用しています。そこでは、学習そのものはありませんが、入力が広い意味での出力にどれだけ影響するかを判断するヒューリスティックが存在するのです。2秒より速く計算することができます。しかし、桁違いではありません。

私にとってのFX取引モデルの作り方は複雑化するばかりで、単純な方法では安定した結果が得られません。今のところ、私はこのように考えています。

新しい予測因子を追加したり、実験設計にいろいろと小さな改良を加えることは、今のところあきらめているんだ。

まだ実装していないアイデアがあるんです。問題は、我々やあなた、そして他の誰もが、通常、取引終了の一定の条件、例えば3時間先や価格がテイクまたはストップレベルに達したときを予測することです。

そして、お粗末な結果を得ることになるのです。また、MT4で 複数の同時条件を入力し、OR演算子で動作させて取引を終了すると、サンプル外でもなんとかプラスのOMを得ることができます。

そこで、Rで複数の条件から一度にトレードの結果を予測するシミュレーションをするにはどうしたらいいかと考えていました。例えば、価格が3時間以内にTPに到達したら、クローズします。しかし、3時間というパラメータは最適なものを選ぶべきであり、厳格に設定するべきではありません。また、「3時間以内に陽線になったが、TPに達していない場合、STOPをBreakevenに引く」という条件も追加すれば、「3時間以内に陽線になったが、TPに達していない場合、STOPをBreakevenに引く」ということになります。

この場合、入力する位置も機械が予測することになります。

それが念頭に置いた課題です。

 
アレクセイ・ブルナコフ

そこで、Rで複数の条件から一度にトレードの結果を予測するシミュレーションをするにはどうしたらいいかと考えていました。例えば、価格が3時間以内にTPに到達したら、クローズします。しかし、3時間というパラメータは最適なものを選ぶべきであり、厳格に設定するべきではありません。また、3時間以内に勝っているが、TPに達していない場合、BreakevenにSTOPを引く必要があるという条件を追加した場合。

EAを取引した経験から、私はTPとSLが好きではありません。取引システムが正しく構築されていれば、取引からの出口は、TPやSLに基づく出口よりも効果的です。

SLとTPの最適値は時間とともに変化し、安定した一定値は存在しない。ある期間において取引システムの効率が向上するような値を見つけることができるが、この場合、その期間を超えるとストラテジーの効率は低下する。SLは動かさず、「何か問題が起こった」という距離感で保ち、価格がSLに到達したら取引を完全に停止する方が、エラー分析や取引戦略の最適化につながります。

しかし、TPを使用する賢い自己最適化EAもあるのです。すでにトレーニングセットで一定のTPを導入すべきと理解しています。例えば私の場合、TPトレーニングの結果は0/1-次のバーで価格が上昇/下降しています。しかし、価格が上昇し、TPレベルに達した後、バーの終わりに最初のレベルよりも下落している場合 - トレーニングセットでは、結果は "0" ではなく "1" です(取引がTPで利益を得て終了し、バーの終わりまでそれ以上の取引はないため)。TPは通常50ポイント以下(4桁で 5pips)と小さめです。SLは「すべてがうまくいかなかった」場合に備えて、何十倍もの大きさになっています。fronttestやtradeのTPは最適化できず、トレーニングサンプル作成時に使用されたもののみとなります。これだけ成功した戦略を見ていると、この方向性は掘り下げる価値があると思いますね。

 
Dr.トレーダー

専門家としての取引経験から、私はTPとSLが好きではありません。取引システムが正しく構築されていれば、取引からの出口は、TPやSLに基づく出口よりも効果的です。


また、自社の出口はどのように策定されているのでしょうか?時間だけ?

1時間後に決済すると言っても、1時間以内にTPが突破されれば、それは結果1であり、複雑な決済条件が既に使われていることになります。

TPを5pt、SLをその数十倍というのも選択肢の一つですが、そのようなTPは利益を食ってしまうでしょう。

 

今週と先週は時間帯を隔てて 一緒なので、ライブダイアルゴが出ません。仕事でカリフォルニアにいるので...

とにかく、私は(たぶんあなたも)、すでに実験をうまく計画し、訓練し、結果を検証することができると思います。プレディクターも重複して採用することができます。

1時間後に決済するなど、決まったターゲットでトレードを予測するのは最適とは言えず、結果も弱いというのがキャッチコピーだと思います。

MTテスターでは、バランスとリカバリーファクターに基づいて最適化を行っています。Rでは、方向性を推測したり、価格差を予測する精度を最適化しています。これらは、どう考えても別物です。

例えば、利益を最大化するような学習方法について、Rで独自の損失関数を書いてみるとか。この関数は、いくつかの学習方法で代用することができる。

 
アレクセイ・ブルナコフ

今週と先週は時間帯を隔てて一緒なので、ライブダイアルゴが出ません。仕事でカリフォルニアにいるので...

とにかく、私は(たぶんあなたも)、すでに実験をうまく計画し、訓練し、結果を検証することができると思います。プレディクターも重複して採用することができます。

1時間後に決済するなど、決まったターゲットでトレードを予測するのは最適とは言えず、結果も弱いというのがキャッチのポイントだと思います。

MTテスターでは、バランスとリカバリーファクターに基づいて最適化を行っています。Rでは、方向性を推測したり、価格差を予測する精度を最適化しています。これらは、どう考えても別物です。

例えば、利益を最大化するような学習方法について、Rで独自の損失関数を書いてみるとか。この機能は、いくつかの学習方法に代用することができる。

最近、私は次のような計画を実行しています。

昔使っていたトレンドインジケーターベースのEAを実装してみました。実際の口座で取引されている確かなExpert Advisorです。

次のページ

その欠点を探し、Rを使って改善するようにしています。

例えば、こんな感じです。

高い鉄棒から大まかな方向性を掴みます。しかし、時間をよく見てみると、特に下のバーについてはものすごいタイムラグがあります。つまり、D1であれば、M5でトレードすると、ほぼ一昨日のデータで方向を取るということになるのです。30%の誤差でD1の一歩先を予測しただけでも、EAの収益性は根本的に改善されましたし、何より売り切れないという確信が生まれました。

このように、出来合いの悪いEAの要素をRで予測し、アップグレードするのはどうでしょうか。

そんなアイデアをどうやって見つけるのですか?

 

最近、smart-labに記事を書きました。弱いコミュニティだが、役に立つものを得た。

http://smart-lab.ru/search/topics/?q=%D0%B4%D0%BB%D1%8F+%D0%BB%D1%8E%D0%B1%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9+fx

 
SanSanych Fomenko:

私は最近、次のような計画を実行しています。

指標に昔のトレンドアドバイザーを持っていった。実際の口座で取引する本格的なExpert Advisorです。

今はその欠点を探して、Rを使って減らそうとしているところです。

その欠点を探し、Rを使って改善するようにしています。

例えば、こんな感じです。

高い鉄棒から大まかな方向性を掴みます。しかし、時間をよく見てみると、特に下のバーについてはものすごいタイムラグがあります。つまり、D1であれば、M5でトレードすると、ほぼ一昨日のデータで方向を取るということになるのです。30%の誤差でD1の一歩先を予測しただけでも、EAの収益性は根本的に改善されましたし、何より売り切れないという確信が生まれました。

このように、出来合いの悪いEAの要素をRで予測し、アップグレードするのはどうでしょうか。

そんなアイデアをどうやって見つけるのですか?

アイデアは面白いですね。 私もいくつかのEAを動かしています。バージョンアップの方法を考えてみようかな。しかし、具体的に何を改善すればいいのかがわからない。機械は何を学ぶ必要があるのか?

Expert Advisorは、ポジションの開始と終了に 厳格なロジックを採用しています。機械学習では、少し違った方法で判断される。

だから、具体的に何をするのかがはっきりしないんですね。

 
Alexey Burnakov:

それは面白いアイデアですね。 私もEAを動かしています。バージョンアップの方法を考えてみようかな。しかし、具体的に何を改善すればいいのか、私にはよくわかりません。機械に何を教える必要があるのですか?

Expert Advisorは、ポジションの開始と終了に 厳格なロジックを採用しています。機械学習では、少し違った方法で判断される。

ですから、具体的に何をするのかがよくわからないのです。

何をするかは明確です。しかし、なぜそれが必要なのか、その理由は明らかではありません。まず、相手システムの正しさを解析したり、パラメータを制御するシステムがあれば、制御されるシステムは不要となる。なぜなら、両者を併用すると、両者の総合効率が一気に低下し、別々に使用するよりも低くなるからだ。例えば、70%の正しい判断をするシステムと、99%の精度で1つ以上のパラメータを制御できるシステムがあった場合、最終的な効率は等しくなります。

0,7*0,99=0,693

となり、システム単体よりも低くなっています。

アーメン。 コントローラーを使わず、オリジナルのシステムを改良していく方が良いのではないでしょうか。

理由: