FXの機械学習をやっていると、
- 上昇はよく当たるのに
- 下降はほとんど当たらない
という状態になりやすいです。
この原因は、ただの「データ不足」ではなく、
実は 2つの別の不均衡問題 が同時に起きていることが多いです。
この記事では、
- クラス不均衡とは何か
- レジーム不均衡とは何か
- それぞれの対策は何が違うのか
を、できるだけ難しい言葉を使わずに説明します。
1. クラス不均衡とは?
クラス不均衡とは、
正解ラベルの数に大きな偏りがある状態
のことです。
たとえば、次のような場合です。
- 上昇:70%
- 下降:30%
この状態で学習すると、
AIは
とりあえず「上昇」と言っておけば当たる
という学習をしてしまい、
下降をうまく当てられなくなります。
クラス不均衡への対策
この問題への対策はよく知られています。
- データ数をそろえる(アンダーサンプリング)
- 少ないクラスを重く評価する(クラスウェイト)
こうした方法で、
上昇と下降を同じくらい重要だと教える
ことができます。
これは「同じ相場の中で、ラベルの数だけが偏っている」場合には
とても有効です。
2. でもFXではそれだけでは足りない
FXの相場には、だいたい次の3つの状態があります。
- 上昇トレンド
- 下降トレンド
- レンジ(横ばい)
ここで重要なのは、
それぞれの相場では値動きの性質がまったく違う
という点です。
しかも、多くの通貨ペアでは
- 上昇トレンドが長く続く
- 下降は短くて急
というように、
相場の状態そのものの出現回数にも偏りがある
ことがほとんどです。
これが次に説明する「レジーム不均衡」です。
3. レジーム不均衡とは?
レジームとは、簡単に言うと
相場の状態(上昇・下降・レンジなど)
のことです。
レジーム不均衡とは、
ある相場状態ばかりが多く、他は少ない状態
を指します。
たとえば、
- 学習データのほとんどが上昇相場
- 下降相場はごく一部
という場合、AIは
上昇相場の特徴ばかりを覚える
ことになります。
このとき、たとえラベルを
- 上昇
- 下降
の2つに分けていても、実際には
「上昇かどうか」だけを見ているモデル
になりがちです。
つまり、
下降を学習しているように見えて、実は学習できていない
という状態が起きます。

わかりやすい上昇を学習して、それ以外は下降だよねっていう学習になっちゃってる(‘Д’)
4. なぜクラス不均衡対策だけでは足りないのか
クラスウェイトやアンダーサンプリングは、
同じ相場の中で、ラベルの数だけが違う
という問題を解く方法です。
しかしFXでは、
- 上昇相場の動き
- 下降相場の動き
- レンジ相場の動き
がそもそも別物です。
そのため、
データ数を調整しても、相場の性質の違いまでは補正できない
という問題が残ります。
これが、
クラス不均衡を直しても下降が当たらない
大きな理由です。
5. レジーム不均衡への考え方
レジーム不均衡に対しては、
1つのモデルで全部の相場を当てようとしない
という考え方が大切になります。
実務では、次のような作り方がよく使われます。
方法① 上昇モデルと下降モデルを分ける
まず考え方を変えます。
- 上昇か下降かを当てる
ではなく、
- 今は上昇しやすいか?
- 今は下降しやすいか?
を別々に学習させます。
つまり、
- 上昇 vs それ以外
- 下降 vs それ以外
という2つのモデルを作ります。
運用では、
- 上昇モデルが強ければBuy
- 下降モデルが強ければSell
- どちらも弱ければ何もしない
という形になります。
こうすると、
- レンジは自然に除外されやすい
- 上昇と下降をそれぞれ独立して学習できる
というメリットがあります。
方法② 先に相場状態を分けてから予測する
もう一つの方法は、
- 今はトレンド相場か、レンジ相場かを判定
- それぞれ専用のモデルを使う
というやり方です。
たとえば、
- トレンド用モデル
- レンジ用モデル
を切り替えて使います。
こちらは効果は高いですが、
作る手間が少し増えます。
6. 実務では両方の問題が同時に起きている
FXの機械学習では多くの場合、
- クラス不均衡(上昇と下降の数の差)
- レジーム不均衡(相場状態の偏り)
が同時に存在します。
そのため、
- クラスウェイトなどでラベルの偏りを補正しつつ
- モデル構成で相場状態の違いにも対応する
という2段構えが必要になります。
どちらか一方だけでは、
安定した成績にはなりにくいです。
7. まとめ
- クラス不均衡は「ラベルの数の偏り」の問題
- レジーム不均衡は「相場状態の偏りと性質の違い」の問題
対策も別物です。
- クラス不均衡 → サンプリングやクラスウェイト
- レジーム不均衡 → モデル分離や相場状態ごとの判断
もし
上昇だけ当たって、下降が全然当たらない
という場合は、
単なるクラス不均衡ではなく、
相場状態の違いを1つのモデルに押し込めている
ことが原因かもしれません。
モデルの精度を上げるだけでなく、
どういう相場でトレードしたいのか
という戦略設計と合わせて、
学習方法を考えることが大切です。
※この記事はFXの機械学習を始めた方向けに、考え方をわかりやすく説明したものです。実際の運用では、バックテスト・フォワードテスト・リスク管理を必ず行ってください。
オンラインコミュニティ
こちらのコミュニティで、AIや機械学習をトレードに活かすために日々探求しています。
興味のある方は覗いてみてください。