コンテンツにスキップ

Filter Tracker

概要

Filter Trackerは、AEGIS v2.5で導入されたロジック段階毎の振り落とし報告機構です。 取引が発生しない理由を可視化し、戦略改善のためのインサイトを提供します。


目的

  1. 透明性: なぜ取引が発生しなかったかを明確化
  2. デバッグ: 問題のあるフィルタ段階を特定
  3. 最適化: 通過率の低い段階のパラメータ調整
  4. LLM分析: 外部AIによる事後分析のためのデータ出力

アーキテクチャ

┌─────────────────────────────────────────────────────────────┐
│                     Filter Tracker                          │
│                   (Singleton Pattern)                       │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐     │
│  │ Entry Stage │    │ Exit Stats  │    │   Debug     │     │
│  │   Tracker   │    │   Tracker   │    │   Records   │     │
│  └─────────────┘    └─────────────┘    └─────────────┘     │
│         │                  │                  │             │
│         ▼                  ▼                  ▼             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              Unified Summary API                     │   │
│  │         (Dashboard / Backtest Report)                │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

フィルタ段階

エントリーフィルタ

段階 定数名 説明
1 UW_SWEEP Unusual Whalesでのスイープ検知
2 GEX_MATCH GEXレジームとの整合性チェック
3 IV_RANK IV Rankが適正範囲内かチェック
4 MOMENTUM モメンタムスコア条件チェック
5 RISK_BUDGET リスク枠(RiskGuardian)チェック
6 OPTION_CHAIN オプションチェーン利用可能チェック
7 SPREAD_BUILD スプレッド構築成功チェック

レジーム判定

段階 定数名 説明
- REGIME_SPEAR Spear戦略条件チェック
- REGIME_BEAT Beat戦略条件チェック

イグジット理由

理由 定数名 説明
利確 PROFIT_TAKE 目標利益(50%)到達
損切り STOP_LOSS ストップロス(-35%)発動
時間切れ TIME_DECAY 最大保有日数超過
満期接近 EXPIRY DTE閾値到達
GEX変化 GEX_CHANGE レジーム変化による撤退
反転 MOMENTUM_REVERSAL モメンタム反転検知
手動 MANUAL 手動決済

使用方法

基本的な使い方

from core.filter_tracker import FilterTracker, FilterStageType, ExitReasonType

# シングルトンインスタンス取得
tracker = FilterTracker.instance()

# フィルタ結果を記録
tracker.record_filter_result(
    trade_id="abc123",
    symbol="NVDA",
    target_date=date.today(),
    stage=FilterStageType.MOMENTUM,
    passed=False,
    reason="score=0.35 < 0.50",
    snapshot=market_snapshot  # Debugモード時のみ保存
)

# イグジット結果を記録
tracker.record_exit(
    trade_id="abc123",
    symbol="NVDA",
    target_date=date.today(),
    reason=ExitReasonType.STOP_LOSS,
    pnl=-450.0,
    pnl_pct=-30.0
)

Debugモード

# Debugモード有効化(詳細記録を保存)
tracker = FilterTracker.instance(debug_mode=True)

# 詳細CSVエクスポート
tracker.export_debug_csv(Path("./debug_output"))

サマリー取得

# ダッシュボード用サマリー
stats = tracker.get_summary()
print(f"Total evaluated: {stats['total_scanned']}")
print(f"Total passed: {stats['total_entered']}")
print(f"Pass rate: {stats['total_entered'] / stats['total_scanned'] * 100:.1f}%")

# 取引IDのフィルタ履歴(LLM分析用)
history = tracker.get_filter_history("abc123")

ダッシュボード統合

表示セクション

  1. エントリーファネル(円グラフ)
  2. 各段階での通過件数を視覚化
  3. 通過率をツールチップで表示

  4. イグジット理由分布(円グラフ)

  5. 利確/損切り等の割合を視覚化
  6. Win Rateを計算して表示

  7. 直近トレード履歴(テーブル)

  8. 最新10件のクローズ済みトレード
  9. PnL、イグジット理由を一覧表示

APIエンドポイント

GET /api/filter_stats

レスポンス例:

{
  "filter_stages": {
    "UW_SWEEP": {"passed": 150, "rejected": 50},
    "GEX_MATCH": {"passed": 120, "rejected": 30},
    "MOMENTUM": {"passed": 80, "rejected": 40}
  },
  "exit_reasons": {
    "PROFIT_TAKE": 25,
    "STOP_LOSS": 15,
    "TIME_DECAY": 5
  },
  "total_evaluated": 200,
  "total_passed": 45,
  "recent_trades": [...]
}


バックテスト統合

バックテスト実行時もFilter Trackerを使用して統計を収集します。

# バックテスト開始時
tracker = FilterTracker.instance(debug_mode=True)

# バックテスト終了時
stats = tracker.get_summary()
print(f"Filter Statistics: {json.dumps(stats, indent=2)}")

# 詳細デバッグ出力
tracker.export_debug_csv(Path("./backtest_debug"))

設計原則

  1. シングルトンパターン: アプリケーション全体で1つのインスタンス
  2. スレッドセーフ: 複数スレッドからの同時アクセスに対応
  3. メモリ効率: Debugモード以外では詳細記録を保存しない
  4. 拡張性: 新しいフィルタ段階やイグジット理由を容易に追加可能

関連ファイル

ファイル 説明
core/filter_tracker.py Filter Trackerコアモジュール
strategies/sunacchan_spear.py Spear戦略でのTracker使用
strategies/beat_shield.py Beat戦略でのTracker使用
strategies/strategy_manager.py レジーム判定でのTracker使用
scripts/dashboard_web_v2.py ダッシュボードUI統合
scripts/run_beat_sunacchan_backtest.py バックテスト統合