ib-find-short-roll について
ib-find-short-rollは、Interactive Brokersのデータを使い、ショートオプションのロール候補や、株式・オプションのロングポジションに対するショートオプションを分析するスキルです。結果をMarkdownレポートにまとめます。
主な機能
- 01ショートオプションのロール候補を分析
- 02株式・オプションのロング向けショートを検索
- 03Interactive Brokersのリアルタイムデータを利用
- 04Markdownレポートを生成
活用シーン
- 01ショートオプションのロール時に満期と権利行使価格を比較
- 02株式ロング向けのカバードコールやプロテクティブプットを検索
- 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:結果を報告する
推奨ポジション、クレジット/デビット、および保存したレポートのパスを含む、重要な結果をユーザーに提示します。
動作
- ショートオプションのポジションがある場合(
mode: "roll"):異なる満期日/権利行使価格へのロール候補を分析します - ロングオプションのポジションがある場合(
mode: "spread"):バーティカルスプレッドを作成するための最適なショートコール/プットを検索します - ロング株がある場合(
mode: "new_short"):新規に建てる最適なカバードコール(またはプロテクティブプット)を検索します - 上記のいずれにも該当しない場合:エラーを返します(手動で指定する場合は
--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- 次回決算日、または nullexpirations_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-asyncyfinance
タイムゾーン
すべてのタイムスタンプと時間ベースの計算には、America/New_York タイムゾーンを使用する必要があります。すべての JSON 出力には、generated_at(NY 時刻の文字列)と data_delay フィールドを含める必要があります。