レジームフィルタとは?200日移動平均で暴落を避ける方法【Python】


どんなに良い戦略でも、2008年や2020年のような暴落局面をまともに食らえば、回復に何年もかかります。実は、こうした「危険な局面」の多くは、ある単純な目印である程度避けられます。それが レジームフィルタ です。

この記事では、200日移動平均を使った最もシンプルなレジームフィルタの考え方と、Pythonでの実装を解説します。

⚠️ 本記事は教育目的の情報共有です。投資は自己責任で行ってください。

目次

  1. レジーム(相場環境)とは
  2. 200日移動平均フィルタの考え方
  3. Pythonでの実装
  4. なぜこれが効くのか
  5. 注意点(万能ではない)
  6. まとめ

1. レジーム(相場環境)とは

レジーム(regime)とは「相場の状態・局面」のことです。大きく分けると:

  • 強気相場(リスクオン):上昇トレンド。多くの戦略が機能しやすい
  • 弱気相場(リスクオフ):下降トレンド。暴落・急変動が起きやすい

同じ戦略でも、強気相場では勝ち、弱気相場では大きく負ける——ということがよくあります。だったら「弱気相場では投資をお休みする」だけで、最悪のドローダウンを避けられるのでは? という発想がレジームフィルタです。

2. 200日移動平均フィルタの考え方

最も有名でシンプルなのが 200日移動平均(200日線) を使う方法です。

指数(S&P500など)の終値 > 200日移動平均  →  リスクオン(投資する)
指数の終値 ≤ 200日移動平均              →  リスクオフ(現金に退避)

市場全体が200日線の上にあるときだけ投資し、下回ったら現金に逃げる」というルールです。たったこれだけで、長期の下落トレンドの大部分を回避できます。

3. Pythonでの実装

S&P500(SPY)を市場全体の体温計として使い、フィルタを作ります。

import yfinance as yf

# 市場全体の指標として SPY の日足を取得
spy = yf.download("SPY", period="25y", interval="1d", progress=False)["Close"].dropna()

# 200日移動平均
spy_ma200 = spy.rolling(200).mean()

# レジーム: 終値が200日線の上なら1(リスクオン)、下なら0(リスクオフ)
regime = (spy > spy_ma200).astype(int)

# ★先読み回避: 前日のレジームで当日のポジションを決める
regime = regime.shift(1).fillna(0)

# 自分の戦略リターン strategy_return に、このフィルタを掛ける
# リスクオフの日は強制的に現金(リターン0)にする
filtered_return = strategy_return * regime

# 比較
import numpy as np
raw = (1 + strategy_return).cumprod().iloc[-1] - 1
flt = (1 + filtered_return).cumprod().iloc[-1] - 1
print(f"フィルタなし: {raw*100:+.1f}%")
print(f"フィルタあり: {flt*100:+.1f}%")

ポイントは、フィルタを掛ける指標(SPY)と、実際に売買する戦略を分けて考えることです。「市場全体の温度」で投資のオン/オフを切り替え、オンのときだけ自分の戦略を動かします。

4. なぜこれが効くのか

大きな暴落は、ある日突然来るのではなく、じわじわと下降トレンドに入ってから深くなることが多いです。

  • 2008年の金融危機:S&P500は早い段階で200日線を割り、その後さらに大きく下落
  • 2020年のコロナショック:急落だが、200日線割れで退避すれば底値圏の一部を回避できた

200日線は「長期トレンドの大きな分かれ目」を捉えるので、最悪の局面に居続けるのを防ぐ効果があります。最大ドローダウンを抑えるうえで、非常にコスパの良い仕組みです。

実際、私がウォークフォワード検証で長期(数十年)を検証したときも、レジーム退避を入れた戦略は、暴落局面でのドローダウンが明確に浅くなりました。

5. 注意点(万能ではない)

レジームフィルタは強力ですが、銀の弾丸ではありません。

  • ダマシがある:200日線の上下を行き来する「もみ合い相場」では、退避→再投資を繰り返してコストがかさむ
  • 戻りを取り逃す:底打ち直後の急反発は、200日線を回復するまで投資しないので一部取り逃す
  • V字回復に弱い:急落→即反発のような相場では、退避が裏目に出ることもある

それでも「致命的な大ドローダウンを避ける」という一点で、多くの戦略にとって採用する価値があります。リターンを少し犠牲にしても、退場リスクを下げる——守りの仕組みです。

6. まとめ

  • レジーム = 相場の局面(強気/弱気)。局面で戦略の成績は大きく変わる
  • 200日移動平均フィルタ:市場が200日線の上のときだけ投資、下回ったら現金退避
  • 長期の下落トレンドを避け、最大ドローダウンを抑える効果がある
  • ダマシ・戻り取り逃しはあるが、致命傷を避ける守りとして優秀
  • 先読み回避のため、フィルタは必ず shift(1) で前日の状態を使う

攻めの戦略(モメンタムなど)に、守りのレジームフィルタを組み合わせる——これが長く生き残る運用の基本形です。

実運用に移す前の検証はこちら → ペーパートレード(仮想売買)とは?


質問や感想は X (@QuantNobu) までどうぞ。

⚠️ 免責:本記事は教育目的の情報共有であり、投資助言ではありません。実際の投資判断はご自身の責任で行ってください。