記事「CatBoost機械学習モデルをトレンド追従戦略のフィルターとして活用する」についてのディスカッション

 

新しい記事「CatBoost機械学習モデルをトレンド追従戦略のフィルターとして活用する」はパブリッシュされました:

CatBoostは、定常的な特徴量に基づいて意思決定をおこなうことに特化した、強力なツリーベースの機械学習モデルです。XGBoostやRandom Forestといった他のツリーベースモデルも、堅牢性、複雑なパターンへの対応力、そして高い解釈性といった点で共通した特長を備えています。これらのモデルは、特徴量分析からリスク管理に至るまで、幅広い分野で活用されています。本記事では、学習済みのCatBoostモデルを、従来型の移動平均クロスを用いたトレンドフォロー戦略のフィルターとして活用する手順を解説します。戦略構築の過程で直面しうる課題を取り上げながら、具体的な開発プロセスへの理解を深めることを目的としています。MetaTrader 5からのデータ取得、Pythonによる機械学習モデルの学習、そしてそれをMetaTrader 5のエキスパートアドバイザー(EA)へ統合するまでのワークフローをご紹介します。記事の終盤では、統計的検証を通じて戦略の有効性を確認し、現在のアプローチをもとにした今後の展望についても考察していきます。

CTA(商品取引アドバイザー)戦略の開発においては、すべての戦略アイデアの背後に明確で直感的な説明があることが重要だというのが、業界で広く受け入れられている経験則です。これは、人が戦略アイデアを思いつく自然なプロセスでもあり、過学習を避ける手段としても有効です。この考え方は、機械学習モデルを用いる場合にも同様に重要です。ここでは、このアイデアの背後にある直感的な理由を説明します。

これが機能する理由

CatBoostモデルは、特徴量を入力として受け取り、それに基づいて各結果の確率を出力する決定木を構築します。このケースでは、勝ち(1)と負け(0)の二値分類問題としてモデルを訓練しています。モデルは、学習データにおける損失関数を最小化するように、決定木内の分岐ルールを調整していきます。モデルがサンプル外のデータでも一定の予測精度を示す場合、勝つ可能性が低い取引をフィルタリングするための手段として活用でき、その結果として全体的な収益性の向上につながる可能性があります。

私たちのような個人トレーダーにとって現実的な期待値は、訓練されたモデルが万能な存在となるわけではなく、あくまでランダムウォークをわずかに上回る程度の精度が得られれば十分ということです。もちろん、モデルの精度を高めるための方法は多く存在し、それについては後で触れますが、たとえ小さな改善であっても、取り組む価値のある重要な一歩となります。

CatBoost ML model


作者: Zhuo Kai Chen

 

私自身の経験から付け加えると、3ヶ月以上前のデータでモデルをトレーニングしても、方程式には何の意味もない。モデルは現在のパターンを捉え、それに集中できるものでなければならない。市場の近くにいる必要がある。

 
Krzysztof Tadeusz Kanacki #:

私自身の経験から付け加えると、3ヶ月以上前のデータでモデルをトレーニングしても、方程式には何の意味もない。モデルは現在のパターンをとらえ、それに集中できるものでなければならない。市場の近くにいる必要がある。

あなたの指摘はまったく正しい。私の経験でも、最近のデータを使った方が、より良い結果を出すモデルを訓練しやすいと感じます。しかし、主な問題は、このアプローチでは、非常に短い時間枠を使わない限り、トレーニングセットのサイズが制限されるということです。学術論文によると、トレンド・フォロー戦略は短い時間枠よりも長い時間枠の方がより良いパフォーマンスを発揮する。そのため、予測可能性が高いモデルを訓練するかもしれないが、訓練サンプルが少ないため、オーバーフィッティングになりやすく、元の戦略はそもそもエッジが少ない。これらの要因の間にはトレードオフがあり、スプレッドも一役買っていることは言うまでもない。

これに対する私の解決策は、古いデータを残しつつ、トレーニングセット内の最近のデータにより大きな重みを割り当てることである。こうすることで、レジーム・シフト後の新しいパターンに適応しつつ、長年一貫している古いパターンからも利益を得ることができる。 しかし、先に述べたように、こうした決定には常にトレードオフが伴う。

 
Zhuo Kai Chen #:

あなたの指摘はまったく正しい。私の経験でも、最近のデータを使った方が、より良い結果を出すモデルを訓練しやすいと感じます。しかし、主な問題は、非常に短い時間枠を使用しない限り、このアプローチではトレーニングセットのサイズが制限されるということです。学術論文によれば、トレンド・フォロー戦略は短い時間枠よりも長い時間枠の方がより良いパフォーマンスを発揮する。そのため、予測可能性が高いモデルを訓練するかもしれないが、訓練サンプルが少ないため、オーバーフィッティングになりやすく、元の戦略はそもそもエッジが少ない。これらの要因の間にはトレードオフがあり、スプレッドも一役買っていることは言うまでもない。

これに対する私の解決策は、古いデータを残しつつ、トレーニングセット内の最近のデータにより大きな重みを割り当てることである。こうすることで、レジーム・シフト後の新しいパターンに適応しつつ、長年一貫している古いパターンからも利益を得ることができる。 ただし、先に述べたように、こうした決定には常にトレードオフが伴う。

最新3ヶ月のデータを使って3ヶ月ごとにモデルを再トレーニングすれば、おそらくうまくいくだろう。このローリングモデル最適化のアイデアは、後ほど実装してみようと思います。ご提案ありがとうございました。

 

あなたの指示に従おうとしているのですが、詳細が不明なため、ファイルの参照やダウンロードリンクがなく、最終的な出力まで続けることができません。

これは良いプロセスのように見えるので、私はあなたが見落としているものを教えるために時間を取るでしょう。



1. FileCSV.mqhへの直接リンクがない。

2.すべての機能ハンドルの宣言

3.ファイルを作成またはダウンロードするプロセスの適切な説明。

CatOnnx.mqh

"¦CatBoost_Momentum_test.onnx"

4.catbootをpipなどを使ってインストールする方法と、pythonに必要な依存関係がインストールされていることを確認する方法への直接リンクと関連する説明。(私のためではありませんが、他の人は知っておく必要があるでしょう)

5.CB2.ipynbの説明とワークフローを読むように指示する。


全体として、これは学生があなたの記事を途中まで読んで、チュートリアルを完了し、あなたの結果を再現するための正しいプロセスを何時間も探し続けることにつながります。

全体として、私はこの記事に10 満点中4点をつけました。

私たち全員が学び、フォローできるように、より教訓的でステップ・バイ・ステップになるように記事を編集してください。


追記

この記事を他の戦略にどのように応用できるか、ご助言いただければ幸いです!

 
Benny Addams 追加点を 与えます。

私たちが学び、従うことができるように、より指導的でステップ・バイ・ステップになるように記事を編集してください。


追記

これを他の戦略にどのように応用できるか、ご助言いただければ幸いです!

フィードバックをありがとう。残念ながら、スペースを取りすぎると思ったので、関連記事を簡単に説明しただけに終わった。また、著作権の問題からダウンロードリンクも含めなかった。徹底的な詳細は、やはり原典から入手するのがベストだろう。とはいえ、私のpythonコードとpythonの説明書への直接リンクについては、各行にコメントを加えたものの、いくつかの丁寧な説明を見落としていたと思う。もしあなた自身の実装プロセスで具体的な障害があれば、ここで議論するか、私をチャットに追加してください。

 
ML-Momentum.mq5ファイルの中で呼ばれているCatOnnx.mqhは、この記事で 引用したCatBoost.mqhと同じものである。 ファイル名で混乱を招いて申し訳ない。
Data Science and ML (Part 31): Using CatBoost AI Models for Trading
Data Science and ML (Part 31): Using CatBoost AI Models for Trading
  • www.mql5.com
CatBoost AI models have gained massive popularity recently among machine learning communities due to their predictive accuracy, efficiency, and robustness to scattered and difficult datasets. In this article, we are going to discuss in detail how to implement these types of models in an attempt to beat the forex market.
 
Zhuo Kai Chen #:
ML-Momentum.mq5ファイルの中で呼ばれているCatOnnx.mqhは、この記事で 引用したCatBoost.mqhと同じものです。 ファイル名で混乱を招いて申し訳ありません。

この記事のガイドを完成させるためにもう一度戻ってやってみるときには、後でフォーラムの肥やしにするためにメモをとっておこうと思う。

もし他に猫の養殖に興味がある人がいたら...。

 

こんにちは。CatBoostで 遊んでいるのですが、2024年の(すべての)データで学習させたストラテジーが、(MetaTraderで)2024年のバックテストでは300%以上のリターンを出すのですが、他の年ではうまくいきません。このような経験をお持ちの方はいらっしゃいますか?直感的にはオーバーフィッティングのように感じますが、もっと低い反復回数(1kなど)でトレーニングしても同じ結果になります。

分のデータで~40~50の特徴でトレーニングしているので、1年あたり25万行くらいです。.cbmファイルサイズは反復回数の1000倍(例:1000反復=1MB、10000反復=10MBなど)になる傾向があります。メタトレーダーでのバックテストでは、バックテスターが停止するまでに10万MBが限界です。C++を使えば、任意の大きさまでバックテストできるが、メタトレーダーとC++ではリターンが大きく異なる。

 
johnboy85 CatBoostで 遊んでいるのですが、2024年の(すべての)データで学習させたストラテジーが、(MetaTraderで)2024年のバックテストでは300%以上のリターンを出すのですが、他の年ではうまくいきません。このような経験をお持ちの方はいらっしゃいますか?直感的にはオーバーフィッティングのように感じますが、もっと低い反復回数(1kなど)でトレーニングしても同じ結果になります。

分のデータで~40~50の特徴でトレーニングしているので、1年あたり25万行くらいです。.cbmファイルサイズは反復回数の1000倍(例:1000反復=1MB、10000反復=10MBなど)になる傾向があります。メタトレーダーでのバックテストでは、バックテスターが停止するまでに10万MBが限界です。C++を使えば、任意の大きさまでバックテストできるが、メタトレーダーとC++ではリターンが大きく異なる。

こんにちは。まず第一に、メタトレーダーのバックテスターはスプレッドと手数料を考慮しています。次に、私の考えでは、機械学習は本質的にオーバーフィッティングのプロセスです。アンサンブル、ドロップアウト、特徴エンジニアリングなど、オーバーフィッティングを減らす方法はたくさんある。しかし、結局のところ、サンプル内はサンプル外よりも常にずっと優れている。金融時系列の予測における機械学習の使用は、古くからある問題である。もしあなたがリターンを予測しようとしているなら(250k行ということなのでそう仮定している)、あなたと他のプレーヤーが同じ予測目的を持っているため、ノイズは予想される。この記事で紹介したのはメタラベルの手法で、予測目的が自分の戦略に絞られているためノイズは少ないが、学習するサンプル数が少なくなるため、複雑さの制約がさらに厳しくなる。私は、ML法の期待値を下げ、オーバーフィッティングを減らす方法を探ることを言いたい。

 

半年以上前のスレッドにこんなに早く返信してくれてありがとう。ここで考えることはたくさんある。膨大なパラメータ空間に慣れてきて、オーバーフィッティングを減らす方法を見つけようとしています。

本当にありがとう!