AntiGravity Low-Vol Range Mode¶
モード概要
低ボラティリティ・レンジ相場専用のショートボラティリティ戦略
Beat Shield / Sunacchan Spear がトレンド・方向性に集中する間、
市場が静かなときに θ回収で安定的なリターン を積み上げる第3のモード。
1. 目的と役割¶
1.1 コンセプト¶
┌─────────────────────────────────────────────────────────────────┐
│ AEGIS 4モード体制 │
├─────────────────────────────────────────────────────────────────┤
│ Beat Shield │ 守備的・反転型 │ 高ボラ・逆張り │
│ Sunacchan Spear │ 攻撃的・モメンタム型 │ トレンドフォロー │
│ Crisis Alpha │ 暴落対策型 │ テールリスクヘッジ │
│ AntiGravity-LV │ 低ボラ・レンジ型 │ ショートボラ・θ回収 │ ← NEW
└─────────────────────────────────────────────────────────────────┘
1.2 期待される効果¶
| 指標 | 目標 |
|---|---|
| 最大DD | 5〜7% |
| Per-position リスク | 口座残高の 0.3〜0.5% |
| レンジ相場での収益 | 月利 1〜3%(θ回収) |
1.3 他モードとの連携¶
graph LR
A[市場レジーム] --> B{ボラティリティ}
B -->|高ボラ| C[Crisis Alpha]
B -->|中ボラ| D[Beat Shield / Spear]
B -->|低ボラ + レンジ| E[AntiGravity-LV]
E -->|異常フロー検知| F[即時撤退]
F --> C
2. レジーム判定ロジック¶
2.1 判定条件¶
SPY / QQQ の両方が以下を全て満たす場合に「Low-Vol Range」判定:
| 条件 | 閾値 | 説明 |
|---|---|---|
| 20日実現ボラ (RV20) | < 12% | 年率換算、低ボラ環境 |
| IV30 パーセンタイル | ≤ 40% | 過去1年の下位40% |
| SMA100 からの乖離 | ±5%以内 | 価格がレンジ内 |
| 20日レンジ幅 | ≤ 10% | 高値-安値が狭い |
2.2 ヒステリシス¶
# レジームON条件
if consecutive_days_on >= 5:
mode = ON
# レジームOFF時
if regime_off:
winddown_days = 5 # 5日かけてポジション縮小
2.3 判定クラス¶
class LowVolRangeRegimeDetector:
def compute_daily_flag(self, date) -> bool:
"""SPY/QQQの4条件をチェック"""
spy_flag = self._check_symbol_conditions("SPY", date)
qqq_flag = self._check_symbol_conditions("QQQ", date)
return spy_flag and qqq_flag
def is_regime_on(self) -> bool:
"""連続5日以上でTrue"""
return self._consecutive_days_on >= 5
3. ポジション構造¶
3.1 グループ分類¶
| グループ | 銘柄 | 構造 | 最大リスク/ポジション |
|---|---|---|---|
| A: インデックス | SPY, QQQ, IWM | アイアンコンドル | 0.3〜0.5% |
| B: メガキャップ | AAPL, MSFT, GOOGL 等 | ストラングル/IC | 0.2〜0.3% |
| C: ハイベータ | TSLA, NVDA, AMD 等 | 定義済みスプレッド | 0.1〜0.2% |
| D: メメ株 | GME, AMC 等 | ショートボラ禁止 | - |
3.2 グループA: インデックス・アイアンコンドル¶
Long Call (+5pt)
↑
Short Call (15-20Δ)
↑
━━━━━━━━━━━━━━━━━━━━ ← 現在価格
↓
Short Put (15-20Δ)
↓
Long Put (-5pt)
| パラメータ | 値 |
|---|---|
| DTE | 21〜45日 |
| ショートデルタ | 15〜20Δ |
| ウイング幅 | 5ポイント |
| 最大損失 | 口座残高の 0.5%以下 |
3.3 グループB: メガキャップ銘柄¶
対象銘柄(18銘柄):
フィルタ条件:
- 決算10営業日以内 → NG
- 60日実現ボラ順位 > 50% → NG
- Unusual Whales フロースコア > 2.0 → NG
3.4 グループC: ハイベータ銘柄¶
対象銘柄(13銘柄):
重要ルール
裸ストラングル / 裸ショートは完全禁止
使用可能な構造:
- クレジットスプレッド(Vertical Spread)
- デビットスプレッド
- バタフライ / コンドル(両サイドウイング付き)
4. Unusual Whales 連携¶
4.1 シグナルインターフェース¶
# 銘柄レベル
uw.get_flow_score(symbol, date, window_days=5) -> float
uw.get_darkpool_bias(symbol, date, window_days=5) -> float
# インデックスレベル
uw.get_index_breakout_score(index_symbol, date) -> float
4.2 閾値とアクション¶
| シグナル | 閾値 | アクション |
|---|---|---|
flow_score > 2.0 |
銘柄レベル | 新規ショートボラ禁止 |
index_breakout_score > 2.5 |
SPY/QQQ | 新規エントリー停止 |
index_breakout_score > 3.0 |
SPY/QQQ | 既存50〜100%クローズ |
flowchart TD
A[Unusual Whales シグナル] --> B{breakout_score?}
B -->|≤ 2.5| C[通常運転]
B -->|> 2.5| D[新規停止]
B -->|> 3.0| E[即時縮小]
E --> F[Crisis Alphaへバトンタッチ]
5. リスク管理¶
5.1 ポジション単位¶
@dataclass
class LowVolRangeModeConfig:
max_risk_per_position: float = 0.005 # 0.5%
max_risk_per_position_highbeta: float = 0.002 # 0.2%
5.2 ポートフォリオ単位¶
| 制約 | 値 |
|---|---|
| 最大ポジション数 | 40 |
| インデックス枠 | 10 |
| メガキャップ枠 | 20 |
| ハイベータ枠 | 10 |
5.3 ドローダウン管理¶
class ModeDrawdownManager:
def get_mode_drawdown(mode_id, date) -> float:
"""モード単体のDDを計算"""
def is_max_dd_exceeded(mode_id, date) -> bool:
"""7%超過でTrue"""
| DD閾値 | アクション |
|---|---|
| 5% | 新規エントリー半減 |
| 7% | 新規停止 + 既存縮小 |
6. エグジット条件¶
6.1 利確¶
6.2 損切り¶
6.3 時間経過¶
6.4 緊急時¶
7. 実装クラス構成¶
strategies/
└── low_vol_range_mode.py
├── LowVolRangeModeConfig # 設定クラス
├── LowVolRangeRegimeDetector # レジーム判定
└── AntiGravityLowVolRangeMode # メイン戦略
├── on_daily_close()
├── on_new_entries()
├── on_existing_positions()
├── _open_index_iron_condor()
├── _open_megacap_position()
├── _open_highbeta_position()
├── _manage_single_position()
├── _reduce_all_positions()
└── _winddown_positions()
7.1 StrategyManager統合¶
class StrategyMode(str, Enum):
BEAT_SHIELD = "beat_shield"
SUNACCHAN_SPEAR = "spear"
CRISIS_ALPHA = "crisis_alpha"
ANTI_GRAVITY_LV = "anti_gravity_lv" # ← 追加
NEUTRAL = "neutral"
8. バックテスト計画¶
8.1 重点評価期間¶
| 期間 | 特徴 |
|---|---|
| 2019-10〜2019-12 | 低ボラ・レンジ |
| 2021-03〜2021-11 | 長期低ボラ |
| 2023-03〜2023-06 | レンジ相場 |
| 2025-07〜2025-09 | アウト・オブ・サンプル |
8.2 評価指標¶
- 最大DDが 5〜7% 以内
- 1イベント時の一日DD
- グループA/B/C別のPnL寄与
- Sharpe Ratio
9. 設定パラメータ一覧¶
@dataclass
class LowVolRangeModeConfig:
# DD制約
max_dd_mode: float = 0.07 # 7%
# ポジション単位リスク
max_risk_per_position: float = 0.005
max_risk_per_position_highbeta: float = 0.002
# ポジション数制限
max_positions_total: int = 40
max_positions_index: int = 10
max_positions_megacap: int = 20
max_positions_highbeta: int = 10
# レジーム判定
min_regime_days_on: int = 5
days_to_winddown: int = 5
rv20_threshold: float = 0.12
iv_percentile_threshold: float = 0.4
ma_band_pct: float = 0.05
range_width_pct: float = 0.10
# DTE設定
index_dte_min: int = 21
index_dte_max: int = 45
# デルタ設定
index_short_delta_min: float = 0.15
index_short_delta_max: float = 0.20
# 利確/損切り
profit_take_pct: float = 0.50
10. 今後の改善ポイント¶
実装済み
- レジーム判定ロジック
- インデックスIC構築
- プットクレジットスプレッド
- モード別DD管理
- Unusual Whalesモック連携
未実装・要改善
- Unusual Whales実API連携
- 決算カレンダー連携
- コールクレジットスプレッド
- ストラングル構築
- デルタ接近時のロールオーバー
- 上位アロケーション層との統合