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

 
アレクセイ・ヴャジミキン

私は3つのクラスを持っています。つまり、ツリーには買い、売り、待ちのシグナルがあります。現在、キャットバストを試していて、ターゲットを簡素化して1つのクラスに圧縮しています。

私はctreeや cnodeクラスについても、OOP全般についても何も知りません。プログラミングが苦手なので、プログラマーでなければクラスコードはほとんど理解できないでしょう...。

それよりも、どう作るか、なぜ作るのかが問題です。オプティマイザーでも遺伝子を介して分岐させることはできますが、自分のもののようにはいきません。むしろ、最適化されたアルゴリズムのツリーに似ていて、それが何層にも重なって勝手に複雑になっていく...最適な状態になったら、オプティマイザで不要なアルゴリズムをふるいにかけていく、という感じでしょうか。あくまで方法であって、うまくいくかどうかはわからない。

 
マキシム・ドミトリエフスキー

そうですね、むしろどう作るか、なぜ作るのかが問題ですね。オプティマイザーで遺伝子を介して分岐させることは可能ですが、あなたのようなことはできないでしょう。むしろ、アルゴリズムのツリーのようなもので、最適化され、層ごとに勝手に複雑になっていくような...最適になったらオプティマイザーで不要なものを排除していくような。あくまでオプションですが、うまくいくかどうかはわかりません。

コードの本質を理解していないと、議論するのは難しいですね...。

予測変数のローテーションの実験をしたことがあるのですが、まさに私が言っていた通り、サンプルを分割して根源に行くには良いが、全体を台無しにしてしまう予測変数もあるのです。

全部で9つのグループができました。これらを、単なるロジックよりもさらに一般化した予測ロジックで分解してみました。グループの組み合わせは512通りで、グループの組み合わせによる結果のばらつきを下図に示します。選択には「精度」という指標を用い、先日設定したものですが、変化はなく、ターゲットはcolumns_100、ツリーは4段階、1000回だけ反復しました。

表は、すべての予測因子とのセットの結果である1710個と、最大3511個、最小607個の結果を示しています。


次に、ペナルティーの計算をしました。つまり、ブロックフラグのグループと組み合わせの財務結果を掛け合わせ、値が0(グループが使用された)なら、グループの結果をプラスに修正し、値が0でないなら、グループはブロックされます - 結果を-1倍し、各グループの値を合計します。ブロックされたときのペナルティーが多いグループが、集計上では最悪のグループであり、そこではもちろん、さらなる研究のためのランク付けを行うことができるというものである。

指標の蓄積は、グラフにするとこんな感じです。

もちろん、曲線の形状は組み合わせのアルゴリズムに依存するが、0と1の数はすべて同じなので、最終的な結果はやはり公平である。そして、それは以下の通りである--。



この表から、グループ1、8、9を無効にすることは、決算の改善に良い影響を与えることがわかります。

最高の決算の組み合わせを見てみよう



そして、最悪の結果の組み合わせに



全体として、この推定方法は有効で、最良の結果ではグループ3,4,5,7がブロックされず、最悪のケースではほぼ鏡のような状況になります。

結論 - このアプローチには生存権があり、ネガティブな影響を受ける予測因子群を積極的に特定することができる。

ネガティブなグループを分割して悪い結果の原因を探るか、ポジティブなグループを分割して良い結果をもたらす魔法の予測変数がどこにあるのかを探るか、2つの方法があります。一方で、2つの道を歩むことも...。

トップ10とワースト1の組み合わせ。

そして、もうひとつのターゲットがどうなるのか...。

そして、これがもう一つのチャートです。 良い判断(Proc_All - 全ての判断(0と1の合計)に対する良い判断と悪い判断のデルタ)が多いほど、特に全てのエントリーに対する正しいトレードへのエントリー(Proc_1_V02)であれば、利益は大きくなります。


 
アレクセイ・ヴャジミキン

では、これらのプレディクターをプロダクションでどのように処理すれば、シグナルが得られるのでしょうか。

 
マキシム・ドミトリエフスキー

では、これらの予測因子を生産工程でどのように加工してシグナルを得るのか。

まだ製作(リアルトレーディング)にはあまり時間がありませんが、次の段階として、モデルをペアリングして、そこから足場を作ることを計画していますが、このプロセスを自動化する方法がまだわかっていません......。

Expert Advisorでは最終的な形の予測値が得られるので、それを選択して使用するのも簡単です。
 
マキシム・ドミトリエフスキー

mtとkatbustをセットアップしたら、記事を書いてください :)

ちょうど今日、頭を使う 仕事をしていたんです。アルゴの修正、高くなる山、険しくなる山......低レベルの言語を使っている甲斐があったというものです。

直近3ヶ月のtrien、残りは2018年初頭まで右肩上がりに働いていた15分

モニタリングでもして、のんびりしようかなあ......まだやることはたくさんあるんですけどね。そして、子供じみたミスをしたり、配列の1つが元々逆になっていたり(シリーズとして)、勉強不足を心配しながら、逆さのフィッシュでずっとトレーニングをしていました。

もちろん、CatBoostモデルの EAへの実装はまだ未定で、一方では全く理解できないC++のコードをアンロードすることが可能で、他方では正しいモデルにシートデータを取得したい、この目的のためには自分で書けないインタプリタが必要で......。

モデルは比較的短い距離で機能しますが、歴史上の実際の条件を試してみてはいかがでしょうか。例えば、3ヶ月間過去について訓練し、将来について1回取引し、その結果をつなぎ合わせると、応用に適した興味深い結果が得られるかもしれません。

トレーニングサンプルでトレーニングしないターゲットを「使用しない」とマークするのを忘れて、結果を評価しながら数分間喜んでいた、というおかしなミスをしてしまいました :)

 
アレクセイ・ヴャジミキン

コードが分からないと議論にならないので...。

予測変数のグループの回転に関する実験をしました。ちょうど私が言ったように、いくつかの予測変数はサンプルを分割して根源に行くには良いのですが、全体像を台無しにしてしまいます。

全部で9つのグループができました。これらを、単なるロジックよりもさらに一般化した予測ロジックで分解してみました。512のグループの組み合わせを取得し、下のグラフは、グループの組み合わせに応じて、財務結果の分散を示します - 選択に使用するメトリック "精度 "は、先日設定 - 変更なし、ターゲットcolumns_100、ツリー4レベル、繰り返しのみ1000行われました。

表は、すべての予測因子とのセットの結果である1710個と、最大3511個、最小607個の結果を示しています。


次に、ペナルティーの計算をしました。つまり、ブロックフラグのグループと組み合わせの財務結果を掛け合わせ、値が0(グループが使用された)なら、グループの結果をプラスに修正し、値が0でないなら、グループはブロックされます - 結果を-1倍し、各グループの値を合計します。ブロックされたときのペナルティーが多いグループが、集計上では最悪のグループであり、そこではもちろん、さらなる研究のためのランク付けを行うことができるというものである。

指標の蓄積は、グラフにするとこんな感じです。

もちろん、曲線の形状は組み合わせのアルゴリズムに依存するが、0と1の数はすべて同じなので、最終的な結果はやはり公平である。そして、それは以下の通りである--。



この表から、グループ1、8、9を無効にすることは、決算の改善に良い影響を与えることがわかります。

最高の決算の組み合わせを見てみよう



そして、最悪の結果の組み合わせに



全体として、この推定方法は有効で、最良の結果ではグループ3,4,5,7がブロックされず、最悪のケースではほぼ鏡のような状況になります。

結論 - このアプローチには生存権があり、ネガティブな影響を受ける予測因子群を積極的に特定することができる。

ネガティブなグループを分割して悪い結果の原因を探るか、ポジティブなグループを分割して良い結果をもたらす魔法の予測変数がどこにあるのかを探るか、2つの方法があります。一方で、2つの道を歩むことも...。

トップ10とワースト1の組み合わせ。

そして、もうひとつのターゲットがどうなるのか...。

正しい判断(Proc_All - 全判断(0と1の合計)に対する判断の正誤差)が多ければ多いほど、特にそれが全エントリーに対する正しいトレード・エントリー(Proc_1_V02)であれば、利益は大きくなることが明確に示されているのです。


地獄で、読みやすいけど、意味が理解できない。言葉遊びというか、言葉の綾というか、私の理解を超えている......。Maksimの提案する記事と同じです。)

PythonコンソールとEAの連携については、MQLからリアルタイムでPythonコードのブロックを送信して実行できる自作エンジンをすでに提供しており、テスターでも動作しています。

 
イワン・ネグレシュニー

ただ、ちぐはぐで、読みやすいのですが、意味がつかめません。言葉遊びというか、言葉の綾というか、私には理解不能です......。記事についてMaksimの提案を追加します:)

EAとPythonコンソールの結合については、すでに自作のエンジンを提案しており、テスターでもMQLからリアルタイムでPythonコードのブロックを送信して実行できるようになっています。

そして、記事と言うのは......単純な思いを表現できないのなら、どんな記事なんだろう......。

ポイントは,木を構築するときに,最初は2つの大きなグループに分けられた予測変数の論理的な接続を妨げる貪欲原理が使われることです(決定木がどのように構築されるかは理解されていますね),この理由と同じ時間間隔での予測変数の組み合わせを多くチェックするために,モデルは少ない予測変数でより良くなるかもしれませんが,これはより小さい程度です.

私の言葉遣いで目の前の言葉の意味がわからなければ、具体的に質問してください。

 
アレクセイ・ヴャジミキン

そして、記事とおっしゃいますが、単純な考えを表現できなければ、どんな記事なのか......。

ポイントは,木の構築に貪欲な原理が使われていることで,最初は2つの大きなグループに分けられた予測変数の論理的なリンクの出現を防いでいます(決定木の構築方法は理解していますよね)。この理由と同じ時間間隔でより多くの予測変数の組み合わせをチェックするために,少ない予測変数でモデルがうまくいくかもしれませんが,この程度は小さくても大丈夫です。

私の言葉遣いで目の前の言葉の意味がわからなければ、具体的に質問してください。

掲示板でざっくばらんに考えを述べることと、論文を発表 することはジャンルが違う。

このスレッドでは、すでにどれだけのことが議論されているかというと、使い道もなく、実用的な成果もないのです。

また、そのような問題、特に木構造のような基本的な問題を議論しても意味がない。

MIモデルの有効性の比較、使用するライブラリ、Expert Advisorsのテストと監視のために、記事やコードを書く方がよいでしょう...

 
イワン・ネグレシュニー

掲示板で簡単な考えを述べることと、論文を発表 することは別のジャンルです。

この枝を見てください、すでにどれだけ議論されてきたか、しかし何の効果もなく、実用的な結果も出ていないのです。

また、そのような問題、特に木構造のような基本的な問題を議論しても意味がない。

MIモデルの有効性、使用するライブラリの比較、Expert Advisorのテストと監視のために、記事やコードを書く方がよいでしょう...

MOEの記事には科学的な根拠が書かれていますが、ここでは初心者でも気軽に質問できたり、試してみたくなるようなアイデアを話し合ったりできます。一般的に、記事は、あなたがすでに彼らの行動の結果に自信を持っているときに書かれるべきです、私はこれとは程遠いです。

 

昨日は、予測変数のグループを使い分けたときの財務指標の 違いについて、「すべてを一つの山に入れることが合理的でない場合もある」と書きました。その投稿では、グループの有意性を選択するために、利益などの指標を使いました。今日、Maximの質問を意識して、テストサンプルでモデルの結果を見てみようと思い(以前はテストサンプルしか見ていなかった)、同じ操作をしてみたところ、がっかりしました。2つのサンプルの結果を比較したところ、純粋な利益という基準は適さないことが明らかになったので、問題を解決するために他の方法を探さなければなりませんでした。

そこで私は考えました。欲張らずに、512のモデルの平均的な利益よりも、全体として高い利益が得られるモデルを良い結果と考えたらどうでしょうか。してくれる最高のインジケータを探すことにした。方法論は簡単で、テストサンプルを使って指数の平均値を決め、各モデルの変数をチェックし、平均値より大きければ1、小さければ0とし(エクセルでやったので中間計算が理解に役立つ)、テストサンプルで同じことをして両サンプルの結果を比較し、それによって指数があるグループに属しているか(平均以上か以下か)統計量を得るというもの。その後、テストサンプルを平均値より高いか低いかで分け、平均的な利益を確保しながら、各インジケーターがテストサンプルでどれだけの利益を上げているのかも調べました。

興味深い結果が得られました。



この表から、利益による選択(FinRez)は、2つのサンプル間で最も悪いマッチング率を与え、さらに、「平均以下」のフィルタリング(数字「0」の列)の場合、このグループは、平均以上のテストで結果を示したグループよりも、テストサンプルに利益をもたらすモデルを多く含んでいることがわかります。考えてみれば、回帰ではなく分類による学習なので、ストラテジーにテイクプロフィットを設定していると、ストップロスが浮いてしまい、正しく分類されたシグナルの数が同じでも結果が歪んでしまうのは理にかなっていると思うのです。他の指標を見ると、その予測能力はずっと高く、つまり、テストサンプルでも試験サンプルでも、そのモデルの傾向は平均的に同じであることを意味しています。これまでのところ、私は指標Proc_1_V01で停止することを決めた - それはサンプル内のすべてのユニットのターゲットの正しく分類単位の割合であり、この指標は、例えば、二次元空間(上/下平均)におけるその関係の保存の非常に高い割合を示しています - 私の意見では非常に良いですが、プラス彼の方法によるサンプルの分割がほぼ同じ平均利益を与え、さらにわずかに平均以上 - 1488を参照してください。そうすると、この指標でモデルを選択した方が、財務的に良い結果が得られる可能性が高いことがわかるのですが、何か見落としているのでしょうか?

これまで,FinRez(利益)ではなく,Proc_1_V01を考慮してグループを見直してきましたが,方法は変わらず,結果は非常に魅力的です。


グループの有意性は、テストサンプル上と同様、グループ7を除いて、以下の表に示す指標によるグループの定義の状況とは対照的に、その一貫性を保ったままであった。



ここで私が出した結論は、最も重要な利益の絶対値の安定性は、ランダムである可能性の方が高いということです。

私はまた、あなたが(テストと試験それぞれに対して100%に低減)サンプルによって利益を分配する方法を見ることができるグラフを追加します - 左側にはフィルタリングされた指標であり、右側には、あなたが1.25の係数でProc_1_V01の平均値を増やす場合、これは撮影されています。

そして、これは比較のためですが、収益による選択を行うと、密度は高くなりますが、20%から-15%までのファットテールができてしまい、これはよくありません。

結局のところ、私たちはトレンドを最もよく定義する指標を考える必要があるのです。

しかし、2つの指標を組み合わせ、Proc_1_V01に利益率によるフィルタリングを加えることで、->20%-は少ない時に損失が多すぎるため、<80%-は極端な値はしばしば偶然であるため、より満足できる画像を取得することができるようになります。


理由: