mcpField
S
scanner-pmcc

scanner-pmcc

github.com/staskhその他39486 回インストール1 日前に更新
リポジトリ

scanner-pmcc について

scanner-pmccは、オプションチェーンの品質などを基にPoor Man's Covered Callの候補を採点するコマンドラインスキルです。比較用のJSONを出力し、bullish scannerの結果も入力として利用できます。

主な機能

  1. 01LEAPSと短期コールの構成を採点
  2. 02デルタ、流動性、スプレッド、IVを評価
  3. 03トレンド、決算、オプション関連の減点を反映
  4. 04スキャン結果をJSONで保存
  5. 05銘柄またはbullish scannerのJSONを入力

活用シーン

  1. 01複数銘柄のPMCC候補を比較
  2. 02オプションチェーンの品質と採点要素を確認
  3. 03bullish scannerの結果をオプションスキャンに利用

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/staskh/trading_skills --skill scanner-pmcc

インストール後、Claude Code で/scanner-pmccを入力して読み込まれたか確認します。

同梱ファイルscripts/scan.pytemplates/markdown-template.md

詳細

PMCC スキャナー

オプションチェーンの品質に基づいてシンボルをスコアリングし、最適なプア・マンズ・カバード・コールのセットアップを見つけます。

PMCC とは?

ディープ ITM の LEAPS コール(デルタ約 0.80)を買い、それに対して短期 OTM コール(デルタ約 0.20)を売ります。カバードコールよりも低コストな代替手段です。

手順

注記: uv がインストールされていない場合、または pyproject.toml が見つからない場合は、以下のすべてのコマンドで uv run python を python に置き換えてください。

uv run python scripts/scan.py SYMBOLS [options]

引数

  • SYMBOLS - カンマ区切りのティッカー、またはブルリッシュスキャナーが出力した JSON ファイルへのパス
  • --min-leaps-days - LEAPS の最短満期日数(デフォルト:270=9 か月)
  • --leaps-delta - LEAPS の目標デルタ(デフォルト:0.80)
  • --short-delta - ショートコールの目標デルタ(デフォルト:0.20)
  • --output - 結果を JSON ファイルに保存します(これを使用してください。Claude は JSON からレポートを生成します)
  • --report - 自動生成された Markdown をファイルに保存します(プログラムによるフォールバックのみ。Claude が生成するレポートを優先してください)

スコアリングシステム(最大スコア:14、範囲:-8~14)

カテゴリ条件ポイント
デルタの精度LEAPS が ±0.05 以内+2
LEAPS が ±0.10 以内+1
ショートが ±0.05 以内+1
ショートが ±0.10 以内+0.5
流動性LEAPS の出来高+OI > 100+1
LEAPS の出来高+OI > 20+0.5
ショートの出来高+OI > 500+1
ショートの出来高+OI > 100+0.5
スプレッドLEAPS のスプレッド < 5%+1
LEAPS のスプレッド < 10%+0.5
ショートのスプレッド < 10%+1
ショートのスプレッド < 20%+0.5
IV 水準25~50%(理想的)+2
20~60%+1
利回り年率 > 50%+2
年率 > 30%+1
年率 > 15%+0.5
トレンド価格 > SMA50+1 / -1
RSI > 50+0.5 / -0.5
MACD > シグナル+0.5 / -0.5
決算次回決算まで 45 日超+1.0
決算まで 45 日以内-1.0
ショートの満期までに決算-2.0
ウィークリーオプション上場されているウィークリーオプションがない-1
ストライク密度現物価格からショートまでのストライクが 3 未満-2
現物価格からショートまでのストライクが 5 未満-1
ショートプレミアムショートのミッド価格 < $0.10-1
ショートのミッド価格 < $0.50-0.5

ウィークリーオプション、ストライク密度、ショートプレミアムは減点のみ(最高でも 0 点)です。そのため、 max_possible_score は14のままで、理論上の最低点は**-8**です(基本スコア 0、 トレンド -2、決算 -2、ウィークリーオプション -1、ストライク -2、ショートプレミアム -1)。

出力

以下を含む JSON を返します。

  • criteria - 使用したスキャンパラメーター
  • results - スコア順に並べられた配列:
    • symbol、price、iv_pct、pmcc_score、max_possible_score(常に 14)
    • industry - GICS 業種(該当しない場合はセクター)、または null
    • description - 企業の説明(1 文)、または null
    • has_weeklies - シンボルにウィークリーオプションが上場されているかどうか(bool)
    • short_window - 実際に使用されたショート満期の期間:「7-21」または「5-30 (fallback)」
    • dividend_yield - BS/IV 計算で使用された連続配当利回り(小数)
    • leaps - 満期、ストライク、デルタ、iv(ビッド/アスクから計算)、last_price、ビッド/アスク、スプレッド%、出来高、OI
    • short - 満期、ストライク、デルタ、iv(ビッド/アスクから計算)、last_price、ビッド/アスク、スプレッド%、出来高、OI
    • earnings_date - 次回決算日(YYYY-MM-DD)、または null
    • metrics - net_debit、short_yield%(ショート期間における期間利回り)、annual_yield%、capital_required
    • score_breakdown - すべてのスコア構成要素を <name>_delta(float)+<name>(説明文字列)のペアとして表示:
      • 基本:leaps_delta、short_delta、leaps_liquidity、short_liquidity、leaps_spread、short_spread、iv、yield
      • トレンド:trend_delta、trend(指標ごとの辞書)
      • 決算:earnings_delta、earnings
      • ウィークリーオプション:weekly_options_delta、weekly_options
      • ストライク密度:strike_density_delta、strike_density
      • ショートプレミアム:short_premium_delta、short_premium
      • すべての _delta 値の合計が pmcc_score になります
  • errors - 失敗したシンボル(オプションがない、データ不足など)

レポートの生成

ユーザーがレポート、文章による分析、または保存するドキュメントを求めた場合:

  1. --output を指定してスキャナーを実行し、JSON データを取得します:

    uv run python scripts/scan.py SYMBOLS --output sandbox/PMCC_Scan_YYYY-MM-DD_HHmm.json
    
  2. JSON 出力を読み取ります。

  3. templates/markdown-template.md で定義されているテンプレートを使って、Markdown レポートを自分で生成します。--report フラグは使用しないでください。このフラグでは機械的な文字列が出力されます。Claude が生成するレポートには、実際の分析、状況に応じた警告、トレーダーに役立つ説明が含まれます。

  4. 生成した Markdown を sandbox/PMCC_Scan_YYYY-MM-DD_HHmm.md に保存します(JSON のタイムスタンプに合わせてください)。

  5. レポート全体をユーザーに表示します。

例

# Scan specific symbols
uv run python scripts/scan.py AAPL,MSFT,GOOGL,NVDA

# Scan and save JSON for report generation
uv run python scripts/scan.py AAPL,MSFT,GOOGL --output sandbox/PMCC_Scan_2026-01-15_1430.json

# Use output from bullish scanner
uv run python scripts/scan.py bullish_results.json

# Custom delta targets
uv run python scripts/scan.py AAPL,MSFT --leaps-delta 0.70 --short-delta 0.15

# Longer LEAPS (1 year minimum)
uv run python scripts/scan.py AAPL,MSFT --min-leaps-days 365

IV の計算

IV は、Yahoo Finance の impliedVolatility 列から取得するのではなく、常に Black-Scholes を使って市場価格データから算出します。

  • 取引時間中:IV はビッド/アスクの仲値から算出します
  • 取引時間外(bid=ask=0):IV は直近価格から算出し、価格計算の基準時点には現在の実時間ではなく、オプションの直近取引タイムスタンプを使用します

これは、スキャナーのベースライン IV に使われる compute_atm_iv と、オプションごとのデルタ計算の両方に適用されます。

配当:Black-Scholes の逆算では、原資産の連続配当利回り(Merton モデル)を使用します。これを無視すると、配当を支払う銘柄のコールでは、算出される IV が低く偏ります。高利回り銘柄では特に顕著です(たとえば、利回り 7% の銘柄では IV が約 24% ではなく約 12% と算出されます)。利回りは、yfinance の一貫性のないフィールド(dividendRate/price、次に trailingAnnualDividendYield、次に dividendYield)から標準化され、各結果では dividend_yield(小数)として報告されます。同じ利回りが、権利行使価格の選択に使うデルタと、最大利益の再評価にも使用されます。

主な制約

  • ショートストライクは、必ず LEAPS ストライクより上でなければなりません
  • ビッドが 0 で直近価格がないオプションはスキップされます
  • IV が中程度(25~50%)の場合に最高スコアとなります

解釈

  • スコア > 12:非常に有望な候補(優れた構造+強気トレンド+十分な決算までの期間)
  • スコア 10~12:有望な候補
  • スコア 6~10:注意点はあるものの許容できる候補
  • スコア < 6:構造が不適切、弱気トレンド、または決算リスクあり
  • max_possible_score は常に 14 です。候補がどれだけ理想的な状態に近いかを判断するには、pmcc_score / max_possible_score を使用してください
  • 取引時間外のスコアは、取引時間中のスコアと比較できません。(取引時間外などで)ビッドとアスクがどちらも 0 より大きくない場合、spread_pct は 100% に固定されるため、スプレッドスコアが両方とも 0 になります(リアルタイムスキャンより −2)。取引時間外にスキャンしただけで、候補のスコアが最大 2 ポイント低く見えることがあります。候補の比較は、同じスキャン内でのみ行ってください。

依存関係

  • numpy
  • pandas
  • scipy
  • yfinance

タイムゾーン

すべてのタイムスタンプと時間ベースの計算では、America/New_York タイムゾーンを使用する必要があります。すべての JSON 出力には、generated_at(NY 時刻の文字列)フィールドと data_delay フィールドを含める必要があります。

コメント