第 12 課:市場状態の認識

目標: システムに「今どの市場にいるか」を認識させ、適切な戦略を選択できるようにする。


典型的なシナリオ(例示)

注: 以下は一般的な現象を説明するための架空の例です。数値は例示的なものであり、特定の機関/商品に対応するものではありません。

2021年初頭、あるクオンツファンドは2つの戦略を同時に運用していました:トレンドフォローイングと平均回帰です。両方の戦略は、それぞれ有利な市場で優れたパフォーマンスを発揮しました。

問題は、固定ウェイト(各50%)を使用していたことです。

結果:

  • トレンド市場では、トレンド戦略が20%上昇、平均回帰が15%損失、純利益2.5%
  • レンジ市場では、平均回帰が15%上昇、トレンド戦略が20%損失、純損失2.5%
  • 年間を通じて、両者が相殺し合い、リターンはほぼゼロに

競合他社は?同じ2つの戦略ですが、Regime Detectionモジュールを追加しました:

  • トレンド市場では、トレンド戦略のウェイト80%、平均回帰20%
  • レンジ市場では、逆転

結果: 年間リターン18%、シャープレシオ1.6。

**違いは何か?**戦略自体ではなく、いつどの戦略を使うべきかを知っていることです。これがRegime Detectionの価値です - マルチエージェントシステムの「ルーター」です。


12.1 Market Regimeとは

3つの基本状態

市場は常に何らかの「状態」にあります。状態間の境界は明確ではありませんが、大まかに分類できます:

状態特徴最適戦略典型的な期間
Trending価格が一方向に持続的に動く、Volatilityが上昇Momentum/Trendフォローイング数週間から数ヶ月
Mean-Reverting価格がレンジ内で振動、平均回帰が機能平均回帰/Grid数週間から数ヶ月
Crisis激しい変動、相関がスパイク、流動性が枯渇リスクコントロール優先/現金が王様数日から数週間

なぜRegime Detectionはこんなに難しいのか?

課題説明
バックミラー問題状態は後から見ると明確だが、リアルタイムでは曖昧
曖昧な境界TrendとRangingの間に明確な境界線がない
入れ子状態日次レンジ、週次トレンド、月次レンジが同時に存在しうる
検出の遅れ状態を確認する頃には、ほぼ終わっている可能性がある
切り替えコスト頻繁な戦略切り替え自体がコスト

紙上演習: 過去の状態を識別する

次のデータを見て、各期間の市場状態を判断してください:

期間20日リターン20日VolatilityADXあなたの判断
A+12%18%35?
B-2%8%15?
C-25%45%28?
D+3%12%22?
クリックして回答を展開
期間判断理由
ATrending (上昇)高リターン + 中程度のVolatility + 高ADX (>25はstrong trendを示す)
BRanging低リターン + 低Volatility + 低ADX (< 20はトレンドなしを示す)
CCrisis大幅下落 + 極めて高いVolatility (>30%の年率は警告レベル)
DWeak trend/TransitionリターンとADXが両方とも中間ゾーン、判断が難しい

重要な発見: 期間Dが最も判断が難しい - これは実世界で最も一般的な状況です - ほとんどの場合、市場は「グレーゾーン」にあります。


12.2 Regime Detectionの4つの方法

方法の比較

方法原理長所短所ユースケース
ルールベース指標の閾値を使用シンプル、解釈可能、遅れがない閾値の選択が難しい、境界が固定的クイックプロトタイプ、ベースライン
統計的統計的検定で構造変化を識別数学的に厳密履歴データが必要、遅れがあるオフライン分析
Machine LearningMLモデルで分類複雑なパターンを捉えられるラベルが必要、過学習リスク十分なラベル付きデータがある場合
Hidden Markov状態がMarkov連鎖に従うと仮定状態確率を推定できる仮定が成立しない可能性状態数が既知の場合

方法1: ルールベース(最も実用的)

テクニカル指標の閾値の組み合わせで状態を判断:

Rules-Based Regime Detection

紙上演習: ルールを設計する

以下の市場データが与えられた場合、上記のルールを使用して状態を判断してください:

シナリオADX20日Volatility20日リターン資産相関状態
13222%+8%0.4?
21812%-1%0.3?
32538%-15%0.85?
42318%+3%0.5?
クリックして回答を展開
シナリオ状態決定パス
1TrendingVol=22% < 30% (Crisisでない) -> ADX=32 > 25 かつ Ret=8% > 5% (Trending)
2RangingVol=12% < 30% (Crisisでない) -> ADX=18 < 20 かつ Vol=12% < 15% (Ranging)
3CrisisVol=38% > 30% かつ Corr=0.85 > 0.8 (Crisisが優先)
4Transition明確な条件を満たさない (ADX=23は20-25の間)

方法2: Hidden Markov Model (HMM)

HMMは、市場がいくつかの隠れた状態を切り替えると仮定します - 私たちは価格のみを観察でき、真の状態は観察できません。

HMM State Transitions

HMMの主要な出力:

  • 状態確率: 現在各状態にある確率(例: Trending 60%, Ranging 30%, Crisis 10%)
  • 遷移確率: ある状態から別の状態に切り替わる確率

紙上演習: 状態確率を理解する

HMMが現在の状態確率を次のように出力: Trending 55%, Ranging 35%, Crisis 10%

戦略ウェイトアプローチTrend戦略平均回帰防御戦略問題
ハードスイッチ100%0%0%35%のRanging確率を無視
確率ウェイト55%35%10%より頑健だが、Crisis対応が遅い
調整ウェイト50%30%20%保険としてCrisisウェイトを増幅

重要な洞察: 状態確率を直接戦略ウェイトとして使うべきではない - リスク選好に基づいて調整が必要です。

コード実装(エンジニア向け)
# Note: This is illustrative code showing basic HMM usage
# Requires hmmlearn: pip install hmmlearn

import numpy as np
from hmmlearn import hmm

class RegimeDetector:
    """HMM-based market regime detector"""

    def __init__(self, n_states: int = 3):
        self.n_states = n_states
        self.model = hmm.GaussianHMM(
            n_components=n_states,
            covariance_type="full",
            n_iter=100
        )

    def fit(self, features: np.ndarray):
        """
        Train HMM model

        features: shape (n_samples, n_features)
                  typically includes: returns, volatility, ADX, etc.
        """
        self.model.fit(features)
        return self

    def predict_proba(self, features: np.ndarray) -> np.ndarray:
        """
        Predict current state probability

        Returns: shape (n_states,) probability distribution
        """
        # Get posterior probabilities
        posteriors = self.model.predict_proba(features)
        return posteriors[-1]  # Latest time point probability

    def get_regime(self, features: np.ndarray, threshold: float = 0.5) -> str:
        """
        Get current state (with confidence threshold)
        """
        probs = self.predict_proba(features)
        max_prob = np.max(probs)
        max_state = np.argmax(probs)

        if max_prob < threshold:
            return "uncertain"

        state_names = ["trending", "mean_reverting", "crisis"]
        return state_names[max_state]

方法3: Volatilityクラスタリング(実用的な変種)

簡略化されているが実用的なアプローチは、Volatility状態のみを見ることです:

Volatility範囲状態戦略推奨
< 15%低Volatility (Ranging)平均回帰、オプション売り
15% - 25%通常Volatility通常運用
25% - 35%高Volatility (Trending)Trendフォロー、ポジション削減
> 35%極端なVolatility (Crisis)リスクコントロール優先、大幅なポジション削減

なぜVolatilityはこんなに重要なのか?

  • Volatilityは市場の「体温」、市場の健全性を素早く反映
  • Volatilityにはクラスタリング効果がある(高Volatilityは高Volatilityに続く傾向)
  • Volatilityはリターンよりも予測可能

12.3 Regime Detectionの評価

Regime Detectionは目的ではありません - 目的は戦略リターンの改善です。したがって、評価基準は「精度」ではなく「戦略により多くのお金を稼がせたか」です。

評価フレームワーク

Regime Detection Evaluation Metrics

紙上演習: Regime Detectionの価値を計算する

シナリオ: あなたのRegime Detectionモジュールの過去1年のパフォーマンス:

指標
状態切り替え回数24回
平均状態持続期間15日
切り替え遅れ3日
誤切り替え率20%(5日以内に切り戻し)

戦略パフォーマンス比較:

アプローチ年間リターン最大ドローダウンシャープレシオ
Regimeなし(固定50/50)8%18%0.6
Regimeあり(動的切り替え)15%12%1.2
切り替えコスト(24回 x 0.5%)-12%--

質問:

  1. Regime Detectionの純付加価値は何か?
  2. 誤切り替え率が10%に低下した場合、期待リターンはどう変化するか?
  3. 切り替えコストが高すぎる場合、どうすべきか?
クリックして回答を展開
  1. 純付加価値の計算:

    • 総リターン改善 = 15% - 8% = 7%
    • 切り替えコスト = 24 x 0.5% = 12%(各切り替えがフルポジション調整を伴うと仮定)
    • 純付加価値 = 7% - 12% = -5%(実際には損失!)

    問題: 切り替えが頻繁すぎて、コストが利益を食い潰した!

  2. 誤切り替え率が10%に低下した場合:

    • 誤切り替えが4.8から2.4に減少
    • 2.4回の無駄な切り替えが減って2.4 x 0.5% = 1.2%節約
    • 純付加価値 = -5% + 1.2% = -3.8%(まだマイナス)
  3. 高い切り替えコストへの対策:

    • 段階的切り替え: 0->100%ではなく、50%->70%->90%
    • 確認遅延: 状態がN日持続してから切り替え
    • ソフト切り替え: ハードスイッチの代わりに確率ウェイトを使用
    • 頻度削減: 状態が非常に確実な場合のみ切り替え

重要な教訓: Regime Detectionの価値 = 検出精度 x 戦略差 - 切り替えコスト

切り替え遅れのコスト

遅れ日数Trending市場での影響Crisis市場での影響
1日動きの約5%を逃す約3%多く損失
3日動きの約15%を逃す約10%多く損失
5日動きの約25%を逃すストップロスのタイミングを逃す可能性
10日Trendが半分終わっている可能性Crisisが終了している可能性

結論: 遅れすぎるよりは、多少の誤検出があった方が良い。特にCrisis検出は速くなければならない


12.4 よくある誤解

誤解1: Regime Detectionの精度が高いほど常に良い

完全には正しくありません。評価基準は「精度」ではなく「戦略により多くのお金を稼がせたか」です。80%の精度でも切り替えコストがリターンを食い潰すなら、切り替え回数が少ない60%の精度より悪いです。

誤解2: Trend/Rangingは二値判断である

実際には、ほとんどの場合、市場は「グレーゾーン」にあります。二値判断を強制すると頻繁な誤切り替えにつながります。正しいアプローチ: 確率ウェイトを使用(Trend 60%/Ranging 40%)または「Transition期間」を認める。

誤解3: 状態変化を検出したら直ちに戦略を切り替える

危険なアプローチです。切り替え自体にコストがあり(取引コスト、スリッページ)、頻繁な切り替えは全ての利益を失う可能性があります。正しいアプローチ: 確認遅延(状態がN日持続)+ 段階的切り替え(50%->70%->90%)。

誤解4: Crisis検出は「確認を待つ」ことができる

Crisis検出は速くなければなりません。確認する頃には、20%を失っている可能性があります。Crisisの誤検出(稼ぎが少ない)の方が、見逃す(大損)よりも良いです。


12.5 Transition期間の処理

実際に最も処理が難しいのは、明確なTrendやRangingではなく、Transition期間です - 状態が変化しているが、まだ確実ではない。

Transition期間の特徴

特徴表れ方
指標の矛盾ADXはTrendingを示すが、VolatilityはRangingを示す
曖昧な確率HMMが40%/35%/25%を出力、明確な支配的状態がない
シグナルの衝突TrendとMean Reversion戦略が反対のシグナルを出す

Transition期間の戦略

Transition Period Strategies

推奨: ほとんどの投資家にとって、**戦略3(リスク優先)**が最も安全な選択です。Transition期間は、しばしば最もリスクが高い期間です。


12.5 マルチエージェントの視点

マルチエージェントアーキテクチャでは、Regime DetectionはMeta Agentのコア能力です。

アーキテクチャ設計

Meta-Agent Regime Routing

Regime Agentの責任

責任具体的内容トリガー条件
状態検出現在の市場状態を判断日次/時間次
シグナルルーティングどのエキスパートAgentにタスクを割り当てるかを決定状態変化時
ウェイト配分状態確率に基づいてエキスパートウェイトを配分継続的
切り替え制御過剰切り替えを防止、Transitionを管理状態が曖昧な時
遡及的帰属事後分析のために状態判断を記録継続的

他のAgentとの協働

協働相手協働方法
Signal AgentRegimeシグナルを受け取り、戦略パラメータを調整
Risk AgentCrisis状態では、Risk Agentがより大きな拒否権を持つ
Execution Agent状態切り替え時、Execution Agentがスムーズなリバランスを処理
Evolution Agentモデル進化のためのRegime検出の歴史的精度を提供

受け入れ基準

このレッスンを完了した後、これらの基準で学習を確認してください:

チェックポイント基準自己テスト方法
3つの状態を理解Trend/Ranging/Crisisの特徴と最適戦略を説明できる自分の言葉で説明
ルールベース方法をマスターADX/Volatility/相関を使用して判断ルールを設計できる紙上演習を完了
HMMの原理を理解状態確率の意味と使用法を説明できるなぜ確率を直接ウェイトとして使わないかを説明
検出価値を評価純付加価値 = リターン改善 - 切り替えコストを計算できる評価演習を完了
Transition期間を処理3つのTransition戦略とそのユースケースを挙げられるあなたの選択と理由を示す

総合演習

あなたのRegime Detectionシステムを設計する:

  1. 検出方法を選択(ルールベース/HMM/その他)し、理由を説明
  2. 入力特徴と閾値を定義
  3. Transition期間の処理戦略を設計
  4. 切り替え確認条件を設定(過剰切り替えを防止)
  5. 評価指標を定義

レッスン成果物

このレッスンを完了すると、次のものが得られます:

  1. Regime Detection設計フレームワーク - 方法選択から評価指標までの完全な思考
  2. 実用的なルールベーステンプレート - 直接使用可能なADX/Volatility/相関判断ルール
  3. Regime Detectionの価値を評価する方法 - 純付加価値 = リターン改善 - 切り替えコスト
  4. Transition期間の処理戦略 - 3つのアプローチとそのユースケース

レッスンまとめ

  • 市場Regimeの概念とそれが戦略選択に与える影響を理解
  • 4つのRegime Detection方法をマスター: ルールベース、統計的、ML、HMM
  • Regime Detection評価は「精度」ではなく「経済的価値」であることを理解
  • Transition期間の処理戦略をマスター

参考資料


次回レッスンのプレビュー

Lesson 13: Regime Misjudgment and Systemic Collapse

Regime Detectionはマルチエージェントシステムのコアですが、間違いを犯します - 誤判断、遅れ、境界振動。次のレッスンでは、Regime Detectionの5つの失敗モードを深く掘り下げ、システム崩壊を防ぐための縮退戦略を設計する方法を学びます。

この章を引用する
Zhang, Wayland (2026). 第 12 課:市場状態の認識. In AIクオンツ取引:ゼロからイチへ. https://waylandz.com/quant-book-ja/Lesson-12-Regime-Detection
@incollection{zhang2026quant_Lesson_12_Regime_Detection,
  author = {Zhang, Wayland},
  title = {第 12 課:市場状態の認識},
  booktitle = {AIクオンツ取引:ゼロからイチへ},
  year = {2026},
  url = {https://waylandz.com/quant-book-ja/Lesson-12-Regime-Detection}
}