mcpField
I
ib-find-short-roll

ib-find-short-roll

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

ib-find-short-roll について

ib-find-short-rollは、Interactive Brokersのデータを使い、ショートオプションのロール候補や、株式・オプションのロングポジションに対するショートオプションを分析するスキルです。結果をMarkdownレポートにまとめます。

主な機能

  1. 01ショートオプションのロール候補を分析
  2. 02株式・オプションのロング向けショートを検索
  3. 03Interactive Brokersのリアルタイムデータを利用
  4. 04Markdownレポートを生成

活用シーン

  1. 01ショートオプションのロール時に満期と権利行使価格を比較
  2. 02株式ロング向けのカバードコールやプロテクティブプットを検索
  3. 03バーティカルスプレッドのショートレッグを特定

インストール

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

$npx skills add https://github.com/staskh/trading_skills --skill ib-find-short-roll

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

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

詳細

IB ショートロールの検索

Interactive Brokers のリアルタイムデータを使用して、ショートポジションのロールオプションを分析するか、ロング株に対して新規に売り建てる最適なショートオプションを検索します。

IB 接続

TWS または IB Gateway がローカルで起動しており、API が有効になっている必要があります。

  • ペーパートレード — ポート 7497
  • ライブトレード — ポート 7496
  • IB_PORT 環境変数 — --port を省略した場合のデフォルトポートです(例:Gateway コンテナの場合は IB_PORT=4001)。優先順位は --port フラグ > IB_PORT > 組み込みのデフォルトです。シェルまたは .env ファイルで設定してください。

ポートのフォールバック: 設定したポートへの接続に失敗すると、もう一方のポートに自動的に再接続します。 再試行に成功した場合は、どの口座タイプ(ライブ/ペーパー)が有効だったかをメモリに保存し、このセッションおよび今後のセッションで、ユーザーが明示的に別の口座を指定するまで、すべての IB スキル呼び出しでその設定を再利用します。 両方のポートへの接続に失敗した場合は、TWS または IB Gateway が API アクセスを有効にして起動しているか、ユーザーに確認を求めてください。

手順

ステップ 1:データを収集する

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

uv run python scripts/roll.py SYMBOL [--strike STRIKE] [--expiry YYYYMMDD] [--right C|P] [--port PORT] [--account ACCOUNT] [--iv-multiplier N]

スクリプトは、すべてのポジションと候補データを JSON として標準出力に返します。

ステップ 2:レポートを作成する

書式設定の手順については、templates/markdown-template.md を参照してください。JSON データから Markdown レポートを作成し、sandbox/ に保存します。

ステップ 3:結果を報告する

推奨ポジション、クレジット/デビット、および保存したレポートのパスを含む、重要な結果をユーザーに提示します。

動作

  1. ショートオプションのポジションがある場合(mode: "roll"):異なる満期日/権利行使価格へのロール候補を分析します
  2. ロングオプションのポジションがある場合(mode: "spread"):バーティカルスプレッドを作成するための最適なショートコール/プットを検索します
  3. ロング株がある場合(mode: "new_short"):新規に建てる最適なカバードコール(またはプロテクティブプット)を検索します
  4. 上記のいずれにも該当しない場合:エラーを返します(手動で指定する場合は --strike/--expiry を使用してください)

引数

  • SYMBOL - ティッカーシンボル(例:GOOG、AAPL、TSLA)
  • --strike - 現在のショート権利行使価格(省略可。ポートフォリオから自動検出します)
  • --expiry - 現在のショート満期日(YYYYMMDD 形式、省略可。自動検出します)
  • --right - オプション種別:コールは C、プットは P(デフォルト:C)
  • --port - IB ポート(デフォルト:ペーパートレードの場合は 7497)
  • --account - 特定の口座 ID(省略可)
  • --iv-multiplier - 権利行使価格帯の幅を決める予想変動幅の倍率(デフォルト:2.0)。IV の高い銘柄では値を大きくすると、より幅広いロール候補が見つかります

JSON 出力

スクリプトは、分析タイプを示す mode フィールドを含む JSON を出力します。

共通フィールド
  • success - 真偽値
  • generated - 生成時刻
  • mode - "roll"、"spread"、または "new_short"
  • symbol - ティッカー
  • underlying_price - 現在の株価
  • earnings_date - 次回決算日、または null
  • expirations_analyzed - 確認した満期日のリスト
モード固有のフィールド
  • roll:current_position(IB のグリークから取得した iv と delta を含む)、buy_to_close、roll_candidates(満期日 -> 候補の辞書)、iv_multiplier
  • spread:long_option、right、candidates_by_expiry
  • new_short:long_position、right、candidates_by_expiry、iv_multiplier
権利行使価格帯のロジック(roll および new_short モード)

権利行使価格の検索幅は IV を考慮します。half_band = iv_multiplier × ATM_IV × spot × √(T/365) です。ここで、T は最も近いロール満期日の DTE です。roll モードでは、ATM IV は現在のポジションの気配値について IB のモデルグリークから取得します。利用できない場合は、オプションのミッド価格からブレナー・サブラマニアン近似を使用して推定します。new_short モードでは、保守的なデフォルト IV として 30% を使用します。これにより、手動で上書きしなくても、IV の高い原資産では検索幅が自動的に広がります。

使用例

# Auto-detect GOOG position (short option, long option, or long stock)
uv run python scripts/roll.py GOOG --port 7497

# Specify exact short position to roll
uv run python scripts/roll.py GOOG --strike 350 --expiry 20260206 --right C

# Find short call to sell against long call (vertical spread)
uv run python scripts/roll.py AUR --right C

# Find covered put for long stock
uv run python scripts/roll.py TSLA --right P

依存関係

  • ib-async
  • yfinance

タイムゾーン

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

コメント