アンサンブルの標準偏差(Std)は「市場の異常」を検知できるか
/ 6 min read
Table of Contents
ドル円の短期期待値(Expected pips)予測では、現在21個のニューラルネットワークをアンサンブルして運用しています。
各モデルは、異なる学習期間(+Epoch、Seed)によって作られており、それぞれ少しずつ異なる視点を持っています。
現行版では、各モデルの予測値の平均(Mean)を利用してエントリー判定を行っていますが、今回、新たに 21モデルの予測値の標準偏差(Std) を特徴量として追加し、その有効性を検証しました。
21モデルの予測値が一致している状態
例えば通常の相場では、各モデルの予測値はほぼ一致します。
0.180.200.190.210.18...このような場合、標準偏差は小さくなります。
Std ≒ 0.02つまり、
21モデルがほぼ同じ市場判断をしている状態
と言えます。
一部のモデルだけ異常な予測値になることがある
一方で、次のようなケースがあります。
0.620.480.310.120.03-0.05...平均値だけを見るとエントリー候補になりますが、モデル同士の予測は大きく割れています。
これは、
- 強く買いと判断するモデル
- 様子見と判断するモデル
- ほぼ買わないと判断するモデル
が混在している状態です。
標準偏差は大きくなります。
Std ≒ 0.07学習時に見たことのない市場状態かもしれない
このような現象は、
- 指標発表直後
- 急激なトレンド転換
- 為替介入
- ボラティリティ急増
など、学習時にはほとんど存在しなかった市場状態で起こる可能性があります。
つまり、
一部のモデルだけが過剰に反応し、異常に高いExpected Pipsを出力している
状態です。
実際、急変したときに、pred値が異常に高くなる場合が、観察されています。
これはアンサンブル学習でいう 不確実性(Uncertainty) や、機械学習で知られる Out-of-Distribution(OOD:学習分布外データ) に近い現象と考えられます。
学習データで十分に経験していない入力が現れると、各モデルの判断が一致しなくなり、標準偏差が大きくなります。
GAによる最適化結果
GA(遺伝的アルゴリズム)でStdの閾値も同時に最適化したところ、
Std < 0.053という条件が選択されました。
興味深いことに、21モデルのStdの分布は
| Percentile | Std |
|---|---|
| 90% | 0.035 |
| 95% | 0.043 |
| 97% | 0.047 |
| GA | 0.053 |
| 99% | 0.058 |
となっていました。
つまり、
約98%のケースはそのまま通し、約2%だけを除外
するルールだったのです。
これは予想以上に保守的なフィルタでした。
「良いエントリーを探す」のではなく「危険な相場を避ける」
当初は、
「Stdが小さい、本当にモデルが一致したケースだけを狙う」
というルールになると予想していました。
しかし実際には違いました。
GAが学習したのは、
モデルの意見が極端に割れている、ごく一部の危険なケースだけ避ければ十分
というルールでした。
つまり、Stdはエントリーを増やす特徴量ではなく、
異常な市場状態を検知する安全装置
として機能していることになります。
実際の改善
Stdフィルタを追加した結果、
- Fitness:約5%向上
- 総獲得Pips:約8%向上
- 平均獲得Pipsも改善
という結果になりました。
しかも、GAを複数回実行しても、最適なStd閾値は毎回 約0.05 に収束しており、偶然ではなく再現性のある結果となっています。
まとめ
アンサンブルでは平均値(Mean)だけに注目しがちですが、
モデル同士がどれだけ一致しているか
という情報にも価値があります。
今回の結果からは、
- 21モデルの予測値に一部だけ異常な値が現れる
- それは学習時に見たことのない市場状態である可能性が高い
- 標準偏差(Std)がその異常を検知できる
- 約2%の異常なケースだけを回避することで、成績が改善した
ということが分かりました。
今後も、単純なExpected Pipsだけではなく、アンサンブルの不確実性(Uncertainty)そのものを特徴量として利用することで、より堅牢なトレードシステムを構築できる可能性があります。