Skip to content
Go back

レンジ相場を収益化する:ADX+NATR+BBWによるレジーム判定とBBバウンス逆張り

Edit page

「トレンドフォロー戦略は相場の70%を占めるレンジ相場で利益が出ない」——この問題に対して、レンジ相場を「検出」して「別の戦略で取引する」アプローチを実装した。

ADX(トレンド強度)、NATR(正規化ATR)、BBW(ボリンジャーバンド幅)の3指標を組み合わせた複合レジーム判定(RNG-A1〜A4)で相場環境を分類し、レンジ相場と判定された局面ではボリンジャーバンドバウンス逆張り(RNG-B1〜B2)で取引する。全4施策が本番稼働中だ。


トレンドフォローの弱点

相場の70%はレンジ

一般的にFX相場は「70%がレンジ、30%がトレンド」と言われる。トレンドフォロー戦略は30%の期間で大きな利益を出すが、70%のレンジ期間では小さな損失を積み重ねる。

トレンド期間(30%): シグナル多数 → 利益
レンジ期間(70%):   シグナル多数 → 損失(ダマシが多い)

問題は「レンジ期間にもシグナルが出てしまう」ことだ。テクニカル指標はレンジ相場でもシグナルを生成するが、価格がすぐに反転するため損切りになりやすい。

2つの解決策

  1. レンジ相場を検出してトレードしない: 市場レジームフィルター(FX-ADD-A2)のアプローチ
  2. レンジ相場を検出してレンジ用の戦略で取引する: 本施策のアプローチ

1は「損失を減らす」防御的な戦略、2は「レンジ期間も利益を出す」攻めの戦略だ。


レジーム判定の3指標

RNG-A1: ADX(Average Directional Index)

トレンドの強さを測る最も基本的な指標。

ADXだけでは「レンジの中でもボラティリティが高いレンジ」と「静かなレンジ」を区別できない。

RNG-A2: NATR(Normalized Average True Range)

NATR(正規化ATR)は、ATR(Average True Range、平均値動き幅)を現在価格で割って正規化した指標だ。異なる価格帯の通貨ペア間でボラティリティを比較できる。

NATR = (ATR / Close) × 100

NATRが低い(静かな)レンジ相場は、バンドの反発が綺麗に機能しやすい。

RNG-A3: BBW(Bollinger Band Width)

ボリンジャーバンドの上下バンドの幅を数値化した指標。

BBW = (Upper Band - Lower Band) / Middle Band × 100

BBWが小さい = バンドが収縮している = ボラティリティが低い = レンジ相場の可能性が高い

RNG-A4: 複合判定

3指標を組み合わせた複合フラグを生成する。

def detect_regime(adx: float, natr: float, bbw: float) -> str:
    is_range_adx = adx < 20
    is_low_vol_natr = natr < 0.5
    is_narrow_bb = bbw < 4.0  # 通貨ペアにより調整

    # 2指標以上がレンジ判定なら「レンジ」
    range_score = sum([is_range_adx, is_low_vol_natr, is_narrow_bb])

    if range_score >= 2:
        return "RANGE"
    elif adx > 30:
        return "TREND"
    else:
        return "TRANSITIONING"

なぜ3指標の多数決か: 1指標だけだとダマシが多い。ADXが一時的に20を下回っただけでレンジと判定してしまう。3指標中2指標以上がレンジを示すときだけ「レンジ」と判定することで、精度を高めた。


BBバウンス逆張り(RNG-B1〜B2)

レンジ相場と判定された局面で適用する戦略。

ボリンジャーバンドバウンス(BB Bounce)とは

ボリンジャーバンド(Bollinger Bands)は、移動平均線の上下に標準偏差(σ)のバンドを引いたものだ。統計的に、価格は約95%の確率でバンド内に収まる(±2σの場合)。

レンジ相場では、価格がバンドの下端に到達すると反発し、上端に到達すると反落する傾向がある。この反発を「バウンス」と呼ぶ。

BBバウンス買いシグナル:
  1. レジーム = RANGE(RNG-A4で判定済み)
  2. 価格が下バンド(-2σ)以下に到達
  3. RSI < 30(売られすぎ確認)
  → 買いエントリー

BBバウンス売りシグナル:
  1. レジーム = RANGE
  2. 価格が上バンド(+2σ)以上に到達
  3. RSI > 70(買われすぎ確認)
  → 売りエントリー(※ 現行はLong-only制約で未実装)

SL/TPの設定

レンジ逆張りのSL/TPはトレンドフォローとは異なる考え方で設定する。

# レンジ逆張り用のSL/TP
SL = 下バンド - ATR × 0.5  # バンド外にSLを置く
TP = ミドルバンド            # 中心回帰を狙う

TPをミドルバンド(移動平均線)に設定するのがポイントだ。レンジ相場では「バンド端から中心に戻る」動きが支配的なので、ミドルバンド到達で利確するのが合理的だ。

上バンドまで利益を引っ張ろうとすると、レンジの中で反転して損切りになるリスクが高まる。


トレンド戦略との切り替え

レジーム判定の結果に応じて、トレンドフォロー戦略とレンジ逆張り戦略を自動的に切り替える。

相場状態 → 使用する戦略
  TREND        → トレンドフォロー(Swing/Day)
  TRANSITIONING → トレンドフォロー(閾値引き上げ)
  RANGE        → BBバウンス逆張り(RNG-B1/B2)

2つの戦略が同時にシグナルを出すことはない。レジーム判定が排他的に「今どちらの戦略を使うか」を決定する。


学んだこと

1. 「レンジを避ける」と「レンジで稼ぐ」は別の問題

レンジ相場でトレードしないのは簡単だが、相場の70%を捨てていることになる。レンジ用の戦略を持つことで、「相場環境に関係なく毎月収益を出す」可能性が開ける。

2. レジーム判定は複数指標の多数決が安定

ADX単体だと誤判定が多い。NATR(ボラティリティ)とBBW(バンド幅)を加えた3指標の多数決(2/3以上一致)にすることで、レジーム切り替えのチャタリング(高頻度の行き来)を大幅に抑制できた。

3. レンジ逆張りのTPはミドルバンドが正解

レンジ相場で欲張って上バンドまで利益を引っ張ると、反転で損切りになる。「バンド端 → 中心」の動きだけを確実に取る方が、勝率もシャープ比も安定する。


まとめ

レンジ相場収益化の設計で重要なのは以下の3点だ。

  1. 3指標複合レジーム判定: ADX + NATR + BBWの多数決で、安定したレンジ/トレンド分類
  2. BBバウンス逆張り: バンド端での反発をRSI確認付きでエントリー。TPはミドルバンド
  3. 戦略の自動切り替え: レジーム判定結果に応じて、トレンドフォローとレンジ逆張りを排他的に使い分け

相場の70%を占めるレンジ相場を「ノイズ」として捨てるのか、「収益機会」として活用するのか。この判断が、月次リターンの安定性を大きく左右する。


Edit page
Share this post on:

Previous Post
Phase Alpha v2.1.0:リスクリワード比を1.5→4.6に改善した5段階の最適化プロセス
Next Post
戦略の有効性を統計的に評価する:Go/No-Go判断のための定量基準