ふぅ。さて、コーヒーでも飲みながら、最近僕が気になっている「面白い考え方」について少し話をしようか。☕
FXや株の自動売買(EA)を触り始めた人が、まずぶつかる壁がある。それは「インジケーターの組み合わせ」という迷宮だ。「RSIがこうなって、移動平均線がこう交差したら上がる」……。もちろん、そういう手法も悪くない。けれど、それらはあくまで「相関関係」を見ているに過ぎない。
でも、もし私たちが「相関」ではなく、「因果関係」を突き止められたとしたらどうだろう?
今日は、そんな知的な好奇心を刺激する戦略、「ダブルマシンラーニング(DML)を用いた因果推論トレード」というアプローチを紹介したい。名前こそ仰々しいが、考え方は至ってシンプルで、かつ非常にエレガントなんだ。
「アイスクリームと水難事故」の罠
本題に入る前に、ちょっとした思考実験を。 「アイスクリームの売上が上がると、水難事故が増える」というデータがあったとする。このデータだけを見て、「水難事故を減らすためにアイスクリームの販売を禁止しよう」と結論づけるのは、あまりに滑稽だよね。
実際には「気温の上昇(夏であること)」という共通の要因が、アイスの売上も水難事故も同時に押し上げているだけだ。この「気温」のような、結果に影響を与える第三の変数を、専門用語で「交絡因子(こうらくいんし)」と呼ぶ。
トレードの世界も全く同じだ。 「あるテクニカルなサインが出た後に価格が上がった」としても、それはそのサインが原因だったのか。あるいは、単に「市場全体のボラティリティが高まったから」か「他銘柄が連動して動いたから」なのか。ここを切り分けなければ、私たちはいつまでも「たまたま当たっただけの幻想」を追いかけることになる。
ダブルマシンラーニングで「純粋な効果」を抽出する
そこで登場するのが、ダブルマシンラーニング(DML)という手法だ。📊
この戦略の面白いところは、二段階の機械学習を使って、いわば「ノイズの掃除」を徹底的に行う点にある。
- まず、ノイズを予測する: 「市場のボラティリティ」や「他銘柄の動き」といった外部要因(交絡因子)から、価格がどう動くか、そしてそのサインがどう出やすいかを、個別に機械学習モデルに予測させる。
- 残った「純粋な差」を取り出す: 実際の値動きから、先ほどの「ノイズによる予測分」を差し引く。すると、そこには「そのサインだけがもたらした純粋な価格押し上げ効果」だけが残る。
これを統計学的に算出したものが「ATE(平均処置効果)」だ。
具体的にどうやってトレードに落とし込むのか
僕が想定している実装イメージはこんな感じだ。
まず、トリガーとなるイベント(例えば「前日の上昇率が他銘柄を圧倒的に上回った状態」など)を定義する。そして、Pythonのeconmlやdoublemlといったライブラリを使い、過去のデータからそのイベントのATEを算出する。
エントリーの条件は厳格に決める。
- ATE > 0.002: 純粋な押し上げ効果が+0.2%以上あること。
- P値 < 0.05: その結果が「たまたま」である確率が5%未満であること(統計的に有意であること)。
この2つが揃ったときだけ、買いボタンを押す。なんと贅沢なエントリーだろう。
決済もシンプルだ。予測した0.2%の上昇で利確し、5本ほどローソク足が経っても反応がなければ「あぁ、今回は違ったか」とタイムアウト決済。損切りは-0.3%とタイトに設定して、リスクを最小限に抑える。
実装の裏側:PythonとMQL5の共演
これをMT5(MQL5)だけで完結させるのは正直しんどい。だから、役割分担をさせるのが大人のやり方だ。
- 脳(Python): 常にバックグラウンドでDMLモデルを回し、因果効果を計算し続ける。
- 手足(MQL5): Pythonから「今、有意な因果効果が出たぞ!」というフラグをソケット通信で受け取り、注文を出すだけ。
最先端の統計学を搭載した「脳」と、高速な執行力を持つ「手足」を組み合わせる。この構成こそが、現代のシステムトレーダーの醍醐味だと思う。
おわりに
さて、ここまで読んでも「やっぱり難しそうだな」と感じたかもしれない。でも、安心しほしい。最初からすべてを理解して実装する必要なんてないんだ。
大切なのは、「相関と因果は違う」という視点を持つこと。そして、それを解決するためのツールが世の中に存在することを知ること。その知的好奇心こそが、平凡なEA開発を「知的探求」へと変えてくれる。
プログラミングや統計学は、慣れてしまえば最高のパズルになる。少しずつ、自分なりの正解を探していく過程こそが、大人の遊びとして最高に面白い。
次は、どんなアプローチを試してみようか。☕💡\n