機械学習をFX取引の予測に活用しようとすると、「どのモデルを選べばよいか」「入力データは何を使えばよいか」「そもそも本番環境で機能するのか」という疑問が次々と浮かびます。本記事では、データ収集から特徴量設計、モデル選定、ウォークフォワード検証まで、機械学習でFX相場を予測する具体的なやり方を研究所の視点から体系的に解説します。
機械学習によるFX予測の定義と仕組み
機械学習によるFX予測とは、過去の価格データや経済指標をモデルに学習させ、将来の価格変動の方向性や確率を統計的に推定する手法です。従来のルールベースEAが「◯◯MAを上回ったら買い」といった固定条件で動くのに対し、機械学習モデルはデータ内のパターンを自動的に抽出します。予測精度は相場環境の変化によって変動するため、モデルは継続的な再学習と評価が前提となります。
一般的なパイプラインは次の4段階で構成されます。
- データ収集:OHLCV(始値・高値・安値・終値・出来高)に加え、RSI・ATR・ボリンジャーバンド幅などのテクニカル指標を収集します。場合によってはドルインデックス(DXY)やVIXなども外部変数として活用します。
- 特徴量エンジニアリング:生の価格系列は非定常時系列であるため、対数リターン(log(P_t / P_{t−1}))や移動平均乖離率((P_t − MA_n) / MA_n)に変換して定常化します。
- モデル学習:よく使われるのはランダムフォレスト・勾配ブースティング(XGBoost / LightGBM)・LSTM(Long Short-Term Memory)の3系統です。それぞれ得意な問題の性質が異なるため、複数を比較することが推奨されます。
- 評価とデプロイ:ウォークフォワード検証でアウトオブサンプル精度を測定し、シャープレシオやドローダウンをあわせて確認します。バックテストで有望な結果が出た後も、本番環境では定期的な再評価が不可欠です。
具体的な特徴量と精度の目安
実際のフロー例として、EURUSD 1時間足での上昇/下落の二値分類を取り上げます。
| 変数名 | 計算式 | 用途・備考 |
|---|---|---|
| log_return_1h | log(Close_t / Close_{t-1}) | 1期間対数リターン(定常化済) |
| rsi_14 | RSI(14) | 過買い・過売りの強度 |
| bb_width_20 | (Upper − Lower) / Mid | ボラティリティ幅の指標 |
| atr_14 | ATR(14) | 絶対ボラティリティ(pips換算可) |
| macd_diff | MACD − Signal | モメンタム(符号方向が重要) |
| hour_sin / hour_cos | sin/cos(2π × hour / 24) | 時間帯を周期的にエンコード |
ランダムフォレストで上記の特徴量を用いた場合、アウトオブサンプルでの正解率(Accuracy)は56〜59%程度が現実的な目安です。スプレッドとスリッページ(EURUSD換算で合計0.5〜0.8pips想定)を差し引いたバックテストでプラスの期待値が確認できるかどうかが、開発の出発点となります。正解率が70%を超える結果が出た場合は、データリークまたは過学習を強く疑ってください。
Pythonでの実装例(scikit-learn)を示します。時系列データには通常のKFoldではなく、時系列の順序を保つTimeSeriesSplitを使うことが不可欠です。
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import TimeSeriesSplit
clf = RandomForestClassifier(n_estimators=300, max_depth=6, random_state=42)
tscv = TimeSeriesSplit(n_splits=5)
通常のKFoldを使うと未来データが学習に混入する「データリーク」が発生します。時系列データでは必ずTimeSeriesSplitまたはウォークフォワード分割を使用してください。
初心者が陥りやすい落とし穴
- データリーク(最重要):将来の情報が特徴量に混入した状態でモデルを学習すると、バックテストでは異常に高い精度が出るものの、本番環境では機能しません。インジケーターの計算タイミング(ローソク足のClose確定後かどうか)と、ターゲット変数の定義(予測対象がt+1の終値か始値か)を明確にすることが最初のステップです。
- 過学習(オーバーフィッティング):学習データに過剰適合したモデルは未知データへの精度が大幅に低下します。学習データとテストデータの正解率の差が5%以上ある場合、過学習の疑いが高まります。
max_depth制限(6〜8程度)・min_samples_leaf増加・L2正則化などで抑制してください。 - 非定常データをそのまま使う:終値の絶対値をそのまま特徴量に使うと、時代によって意味が変わります(2020年と2024年では絶対価格の水準が大きく異なる)。対数リターンや乖離率など差分・相対値に変換して定常化することが基本です。
- 取引コストの未計上:スプレッドとスリッページを無視したバックテストは利益を過大に見せます。プロフィットファクターなど評価指標の目安についても別途確認し、コスト込みのシャープレシオで評価してください。
- 単一期間のバックテストのみ:2020〜2021年のトレンド相場に最適化されたモデルが2022〜2023年の高ボラ・レンジ相場で機能しない例は多くあります。複数の相場環境をカバーするウォークフォワード検証を実施してください。
FX AI研究所の見解
当研究所では、機械学習を活用したFX予測の研究を継続しています。現在はデモ環境での検証段階にあり、バックテストで有望な結果が出た設定が実際の相場でも同様に機能するかどうかを検証中です。AIが自律的に売買判断を行う仕組みの精度向上と、その過程の透明な公開を目指しています。HFMデモ口座を活用したコピートレードの仕組みも整備を進めており、参加を検討される方はHFM口座開設ページをご覧ください。研究の進捗や詳細についてはお問い合わせからご連絡いただけます。
関連リンク
本記事は情報提供を目的としており、特定の投資商品・取引手法の売買を推奨するものではありません。FX取引にはレバレッジを伴う元本損失のリスクがあります。投資判断はご自身の責任において行ってください。詳細はリスクディスクロージャーをご確認ください。