コンテンツにスキップ

決算トレード戦略(Earnings Play)

概要

決算トレード戦略 は、Geminiとの議論で「LLMを使わない機械的な統計分析」で実現可能と判明した戦略群です。

AEGIS v3.0マイルストーン

決算トレード機能の実装をもってAEGIS v3.0とする。

現在のステータス

将来実装予定 - 仕様設計完了、実装は未着手


背景:なぜLLMを使わないのか

Gemini: nof1.ai の事例が示すように、2025年時点でもLLMによるファンダメンタルズの即時解釈は、ハルシネーションやレイテンシ(遅延)の問題があり、アルゴリズム取引のトリガーにするにはリスクが高すぎます。

代替アプローチ: 「市場参加者の期待値(IV)と現実(株価変動)のギャップ」を数学的に突く


3つの戦略

graph TD
    A[決算トレード] --> B[戦略1: IV Run-up]
    A --> C[戦略2: Expected Move Edge]
    A --> D[戦略3: PEAD]

    B --> E[決算前のIV上昇をVegaで取る]
    C --> F[市場予測vs実績の歪みを突く]
    D --> G[決算後モメンタムに乗る]

戦略1: IV Run-up(決算前ボラティリティ取り)

概要

最も安全な戦略: 決算の勝敗を当てるのではなく、「決算に向けてIVが上昇する現象」そのものを利益に変える。

ロジック

def iv_runup_strategy(symbol: str, earnings_date: date) -> TradeSignal:
    """
    IV Run-up戦略

    1. 過去8回の決算前2週間のIV推移を分析
    2. 「過去8回中7回、IVが上昇している」銘柄をスクリーニング
    3. 決算14日前にStraddle/Strangleをロング
    4. 決算発表直前に全決済
    """

    # 過去の決算前IV推移を取得(ThetaData)
    iv_history = get_earnings_iv_history(symbol, lookback=8)

    # IV上昇率を計算
    iv_increase_count = sum(1 for h in iv_history if h.iv_change > 0)

    if iv_increase_count >= 7:  # 8回中7回以上
        return TradeSignal(
            action="LONG_STRADDLE",
            entry_dte=14,  # 決算14日前
            exit_timing="BEFORE_EARNINGS",  # 決算直前
            target="VEGA_PROFIT"
        )

    return None

リスク/リターン

項目 評価
リスク
リターン
勝率
すなっちゃん適合度

メリット

  • 決算結果(ギャップ)のリスクを負わない
  • Vega(ボラティリティ上昇)によるオプション価格上昇のみをかすめ取る

戦略2: Expected Move Edge(期待値の歪み取り)

概要

市場が織り込んでいる変動幅(Market Maker Move)と、過去の実際の変動幅を比較し、「市場がビビりすぎている」か「油断しすぎている」かを判定。

ロジック

def expected_move_edge(symbol: str) -> TradeSignal:
    """
    Expected Move Edge戦略

    1. 直近8回の決算日における「ATM Straddle価格」を取得
    2. 過去8回の「決算翌日の実際の株価変動率」を計算
    3. 比較判定
    """

    # 過去のデータ取得
    history = get_earnings_history(symbol, lookback=8)

    avg_implied = history['implied_move'].mean()  # 市場予測
    avg_actual = history['actual_move'].mean()    # 実際の変動

    # エッジの判定
    if avg_implied > avg_actual * 1.3:
        # 市場は過剰反応しがち → ボラティリティ売り
        return TradeSignal(
            action="IRON_CONDOR",
            rationale="市場予測 > 実績 × 1.3",
            target="IV_CRUSH_PROFIT"
        )

    elif avg_actual > avg_implied * 1.2:
        # 市場は過少評価しがち → ボラティリティ買い
        return TradeSignal(
            action="LONG_STRADDLE",
            rationale="実績 > 市場予測 × 1.2",
            target="LARGE_MOVE_PROFIT"
        )

    return TradeSignal(action="NO_TRADE")

ケース分類

ケース 条件 アクション
A(売り有利) 市場予測 > 実績 × 1.3 Iron Condor(ボラ売り)
B(買い有利) 実績 > 市場予測 × 1.2 Long Straddle(ボラ買い)
中立 それ以外 トレードなし

リスク/リターン

項目 評価
リスク
リターン 中〜高
勝率
すなっちゃん適合度

戦略3: PEAD(決算後モメンタム)

概要

すなっちゃんSpearと最も相性が良い: 決算発表「直後」の動きを見てからエントリーする後出しジャンケン戦略。

PEAD理論

Post-Earnings Announcement Drift: 好決算で大きくギャップアップした銘柄は、その後数日間〜数週間、上昇トレンドが続きやすいというアノマリー。

ロジック

def pead_strategy(symbol: str) -> TradeSignal:
    """
    PEAD戦略(後出しジャンケン)

    決算発表翌日の寄付きを監視し、条件を満たしたら順張り
    """

    # 決算発表翌日の寄付きデータ取得(Polygon)
    open_data = get_post_earnings_open(symbol)

    # 条件チェック
    conditions = [
        open_data.gap_pct >= 5.0,           # ギャップアップ +5%以上
        open_data.orb_breakout == True,     # 30分間の高値ブレイク
        open_data.volume_ratio >= 2.0       # 出来高が平均の200%以上
    ]

    if all(conditions):
        return TradeSignal(
            action="LONG_CALL",
            rationale="PEAD条件成立",
            entry_timing="ORB_BREAKOUT",  # Opening Range Breakout
            target="MOMENTUM_CONTINUATION"
        )

    return None

エントリー条件

条件 閾値 説明
ギャップアップ +5%以上 決算翌日の寄付き
ORBブレイク Yes 寄付きから30分間の高値をブレイク
出来高 200%以上 機関投資家の買い確認

リスク/リターン

項目 評価
リスク
リターン
勝率 中〜高
すなっちゃん適合度

メリット

  • 「決算が悪くて暴落」という即死リスクを完全に排除
  • すなっちゃんSpearのモメンタム戦略と自然に統合可能

データソース

データ ソース 用途
過去の決算時IV ThetaData IV Run-up分析、Expected Move計算
決算スケジュール Barchart 決算日、時刻(BMO/AMC)
株価変動 Polygon ギャップ測定、ORB判定
Straddle価格 ThetaData 市場予測変動幅の計算

実装ロードマップ

Phase 1: Earnings Data Module

# 決算スケジュール取得(Barchart)
# 過去データ収集(ThetaData/Polygon)
# DBに保存するバッチ処理

class EarningsDataModule:
    def fetch_earnings_calendar(self, start: date, end: date) -> List[EarningsEvent]
    def fetch_historical_iv(self, symbol: str, earnings_date: date) -> IVHistory
    def fetch_actual_move(self, symbol: str, earnings_date: date) -> ActualMove

Phase 2: Analyzer

# 各銘柄ごとに「決算で市場予測より動きやすいか」のスコアを算出

class EarningsAnalyzer:
    def calculate_iv_runup_score(self, symbol: str) -> float
    def calculate_expected_move_edge(self, symbol: str) -> EdgeType
    def calculate_pead_probability(self, symbol: str) -> float

Phase 3: アラート機能

# 「明日決算のNVDAは、過去統計的に市場予測よりも大きく動く傾向があります」

class EarningsAlerts:
    def generate_daily_alerts(self) -> List[EarningsAlert]
    def send_to_slack(self, alert: EarningsAlert)

Phase 4: 自動エントリー

# PEAD戦略の自動エントリー

class EarningsTrader:
    async def monitor_post_earnings(self, symbol: str)
    async def execute_pead_entry(self, symbol: str, signal: TradeSignal)

すなっちゃん「決算ガチャ」との関係

すなっちゃん氏のDiscordで頻出する「決算ガチャ」は、上記戦略のうち主に以下に該当:

すなっちゃん用語 対応戦略 特徴
「決算ガチャ」 IV Run-up 少額でOTMオプション購入
「決算後の動き見てから」 PEAD 後出しジャンケン
「ストラドル」 Expected Move Edge 両建てヘッジ

仕様書

詳細仕様は以下のファイルに記載:

AEGIS/docs/EARNINGS_PLAY_SPEC.md

更新履歴

日付 変更内容
2025-11-29 Gemini分析に基づき仕様設計完了
2025-11-29 AEGIS v3.0マイルストーンとして位置づけ