テクニカル指標

隠れマルコフモデル(HMM)による相場レジーム検出|EAの動的スイッチングへの応用

「今はトレンド相場か、レンジ相場か」——多くのEA開発者が、この判定にADXやボリンジャーバンドの幅といった単純な指標を使っています。しかし、こうした閾値ベースの判定には限界があります。結論から言えば、隠れマルコフモデル(Hidden Markov Model/HMM)は、相場の背後にある「観測できない状態(レジーム)」を、観測可能な価格変化の系列から統計的に推定する手法であり、単純な閾値判定よりも滑らかで頑健なレジーム検出を可能にします。この記事では、その理論的な骨格と、EA開発への現実的な応用を整理します。

なぜ閾値ベースの判定には限界があるのか

レンジ相場とトレンド相場 を判定する伝統的な方法には、共通の弱点があります。

  • ADXが「25を超えたらトレンド」といった固定的な閾値は、通貨ペアや時間帯によって最適値が変わり、カーブフィッティング の温床になりやすい
  • 閾値をまたぐ瞬間に判定が急に切り替わるため、レジームの変わり目で「ダマシ」が多発しやすい
  • 過去のある一時点のデータだけを見て判定するため、「これまでの推移全体を踏まえた確率的な状態」という情報が使われていない

HMMは、この最後の点、つまり「時系列全体を踏まえた確率的な推定」というアプローチで、これらの弱点に対応しようとする手法です。

隠れマルコフモデルの基本構造

HMMを理解する鍵は、「隠れた状態」と「観測値」を分けて考えることです。

  • 隠れた状態(レジーム):直接観測できない、市場の背後にある状態(例:「低ボラティリティのトレンド」「高ボラティリティのレンジ」など、あらかじめ2〜4個程度の状態数を仮定する)
  • 観測値:実際に観測できるデータ(例:日次リターン、ATRなど)
  • マルコフ性の仮定:次の瞬間の状態は、現在の状態にのみ依存し、それ以前の履歴には(直接は)依存しないという単純化された仮定
  • 遷移確率:ある状態から別の状態へ移る確率(例:「トレンド状態からレンジ状態へ移る確率は1日あたり5%」など)
  • 出力確率:各状態にいるときに、観測値がどのような分布(多くの場合、正規分布などが仮定される)に従って生成されるか

これらのパラメータを、実際の観測データからEMアルゴリズム(期待値最大化法、具体的にはバウム・ウェルチ法)を用いて推定し、その後ビタビ・アルゴリズムなどを使って「各時点で最も可能性の高い隠れ状態」を復元します。

なぜ「確率的」であることが有利なのか

HMMの最大の特徴は、状態を0か1かで断定するのではなく、確率として扱う点にあります。

  • ある時点において、「70%の確率でトレンド状態、30%の確率でレンジ状態」といった中間的な出力が可能
  • この確率をそのままポジションサイズや取引頻度の調整に使うことができ、閾値をまたいだ瞬間に戦略を急に切り替えるような不連続な挙動を避けられる
  • レジームが変わりつつある「移行期」を、単純な閾値判定よりも自然に表現できる

EAへの実装における現実的な設計

HMMをそのまま完全に実装するのは複雑ですが、EA開発者が現実的に応用できる範囲があります。

  • 観測変数の選び方:日次リターン単体よりも、ATR(ボラティリティ)とリターンの符号(方向性)を組み合わせた2次元の観測ベクトルにすると、「トレンドの有無」と「ボラティリティの高低」を同時に捉えやすくなる
  • 状態数の設定:状態数を増やしすぎると過学習(カーブフィッティング)のリスクが高まるため、2〜3状態程度から始めるのが現実的
  • 再学習の頻度:パラメータを固定せず、一定期間ごとに直近データで再学習する(ローリング推定)ことで、相場の構造変化にある程度追従できる。ただし頻繁すぎる再学習はウォークフォワード分析 の考え方に反する不安定さを生むため、バランスが必要
  • 既存EAとの統合:HMMの出力(状態確率)を、既存のロジックの「フィルター」として使う(例:トレンド状態の確率が一定以上のときだけトレンドフォロー系のエントリーを許可する)のが、ゼロから作り直すより現実的な統合方法

見落とされがちな注意点

HMMは強力な枠組みですが、いくつかの落とし穴があります。

  • マルコフ性の仮定自体が近似:実際の相場が、本当に「直前の状態だけに依存する」わけではない。あくまで扱いやすくするための単純化だと理解しておく必要がある
  • 正規分布の仮定の限界:金融リターンにはテールリスク が示すような太い裾(ファットテール)があり、正規分布を前提にした出力確率は、極端な相場変動をうまく捉えられないことがある
  • 後知恵バイアス:過去データ全体を使ってHMMを学習させ、それを使って過去のレジームを「言い当てた」ように見せることと、未来のレジームを事前に検出できることは全く別問題。フォワードテストでの検証が不可欠

よくある誤解

Q. HMMを使えば、トレンド転換を事前に予測できる? A. HMMは「現在(または直近)の状態」を確率的に推定する手法であり、未来の転換点を確実に予知するものではありません。過信は禁物です。

Q. 状態数は多いほど精度が上がる? A. 状態数を増やすと表現力は上がりますが、推定に必要なデータ量も増え、過学習のリスクが高まります。少ない状態数から検証を始めるのが現実的です。

Q. MT4だけで実装できる? A. HMMの学習部分(パラメータ推定)は、MQL4よりもPythonなど統計処理に適した言語で行い、推定済みのパラメータや状態確率をEA側に読み込ませる設計が一般的です。

まとめ

  • HMMは、観測できない相場の「レジーム」を、観測可能なデータから確率的に推定する統計モデルである。
  • 閾値ベースの判定と異なり、状態を連続的な確率として扱えるため、レジームの移行期をより自然に表現できる。
  • EA開発では、既存ロジックへの「フィルター」として組み込むのが現実的な応用方法。
  • マルコフ性・正規分布といった前提はあくまで近似であり、過学習・後知恵バイアスへの警戒は他の統計手法と同様に必要。

単純な閾値判定に限界を感じているEA開発者にとって、HMMは「状態を確率で捉える」という新しい視点を提供してくれる枠組みです。


※ FXおよび自動売買には損失が生じる可能性があります。本記事は統計モデルの一般的な解説であり、特定の実装・投資判断を推奨するものではありません。

「退場しない設計」について、まずは無料で受け取る。

ほかの記事を読む

次に読む