Event Vol Scan — 事件前買方機會掃描
SkillDev toolsScans for doomsday buy call and long straddle opportunities ahead of earnings reports and major events (CPI/FOMC). Usage - /event-vol-scan [days] [TICKER ...] (default window 14 days; scans holdings + L1 candidates + SPY/QQQ macro events)
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Event Vol Scan — 事件前買方機會掃描 skill
What this skill tells your AI
The instructions your AI receives, as published by patricksudo/fadacai-portfolio in .agents/skills/event-vol-scan/SKILL.md and read by ahel’s review.
定位:把 portfolio-review I.5 樂透掃描升級為事件驅動買方掃描 — 在財報 / CPI / FOMC 前找兩類機會: ① 末日 buy call(方向凸性:base rate + revision 一面倒,且隱含移動不貴) ② 雙買 straddle(純波動:隱含移動 < 歷史實際移動,不賭方向賭幅度)
與既有規則的關係(必讀)
- 「財報 ±48h 不新開期權倉」(options-leaps-playbook)的例外聲明:那條禁的是「方向性建倉被事件 IV 扭曲定價而不自知」。本 skill 是有意識的事件波動買方(吃 gamma / vol),屬明確 opt-in 例外。賣方策略(BPS/BCS/CC)仍完全遵守 ±48h 禁令,本 skill 絕不輸出事件窗內的賣方單。
- 沿用樂透鐵則(playbook + I.5):總成本 ≤ 2% 帳戶(Quarter-Kelly)、OI > 500、已漲 >30%(5日)排除、不用 OTM LEAPS 當樂透(vega 干擾凸性)。
- 機率語言紀律:不寫「應該會大漲」— 引擎輸出 VRP(隱含/歷史)與 base rate,判讀 conditional 在這兩個數字。
Step 0
執行 AGENTS.md Step 0 統一規範(0a 讀 plan.md + feedback、0b get_account_position、0c/0d journal 檢查)。本 skill 需要:持倉 ticker 清單、帳戶總值(算 2% 預算)、plan.md L1 On-Deck / 觀察清單。
Workflow
1. Universe 組建
- 預設:持倉全部 ticker + plan.md「L1 On-Deck」+「觀察清單」標的
- 用戶 args 指定 ticker → 只掃指定的
- 宏觀事件:
mcp__eodhd-mcp__get_economic_calendar(from, to, country="US", high_impact_only=True)抓窗內 CPI / FOMC / NFP 日期 → 以SPY:<date>:<label>,QQQ:<date>:<label>注入(半導體集中事件可加 SMH)
2. 跑掃描引擎(機械層 — 不手算 chain)
python3 tools/event_vol_scan.py \
--tickers <逗號清單> \
--days <N,預設 14> \
--extra-events "SPY:YYYY-MM-DD:CPI,QQQ:YYYY-MM-DD:FOMC" \
--account-value <live 帳戶總值> \
--json briefing-out/cache/event-vol-scan.json
引擎輸出(每 ticker×事件):事件後首個到期、ATM straddle 隱含移動、過去 8Q 財報實際移動中位(earnings-history cache 日期 × 日線)、VRP = 隱含/歷史、beat rate + 30d revisions、5 日 run-up、OI/spread 流動性、1×IM 末日 call 候選報價,以及機械裁決:
| 裁決 | 條件 | 意義 |
|---|---|---|
BUY_CALL | beat ≥ 7/8 且 rev up ≥ 5×dn 且 avg surprise ≥ +5%(非 unreliable)且 VRP ≤ 1.2 | 方向凸性候選 |
STRADDLE | VRP < 0.85 且歷史中位移動 ≥ 4% | 雙買候選(隱含 < 歷史) |
STRADDLE_RV | 無財報基準(ETF/新股),隱含 < 20d 實現波動×√T | 雙買候選(次級基準) |
SKIP_RICH | VRP > 1.2 | 隱含太貴,IV crush 風險 |
EXCLUDE | 5日漲幅 >30% 或 OI/spread 不及格 | 淘汰 |
WATCH | 無明確 edge | 列示不建議 |
3. 判斷層(Claude — 引擎裁決之上,逐條檢核)
STRADDLE_RV的 rv 灌水檢查:近 5 日若有 >3% 單日(崩盤週),rv20 被灌高 → VRP_rv 失真偏便宜。此時降級為 WATCH,除非隱含移動絕對值也低於長期常態。BUY_CALL的 thesis 一致性:對照 plan.md 桶別 / 候補層 — 與現有持倉同題材 binary 不重複開(已有同板塊事件樂透 → 優先補強既有)。- 末日進場時點(重要 — 掃描日 ≠ 進場日):
- 雙買:事件前 2–5 個交易日進場(IV ramp 前段,theta 尚可控)
- 純末日 call:事件前 1 日或當日(最大 gamma,premium = max loss 心態)
- 今天距事件 >5 日 → 輸出「價格警報 + 預定結構」,不是現在就買(複式單無法 GTC)
- 口數與預算:總樂透預算 ≤2% 帳戶(引擎已算出金額);單筆 1-2 口;每筆必寫「上行 +XXX% / max loss = premium $X」。
- 出場紀律(開倉時就寫死):
- 雙買:事件後首個交易日內了結(IV crush 前),不留倉「等第二波」
- 末日 call:+100% 賣半回本(house-money runner),事件後歸零風險自負
- 入選 0 筆 → 誠實輸出「⏳ 本次無符合凸性條件的事件買方機會」+ 最接近門檻的 1-2 筆與差多少。
4. 輸出格式
## 🎯 事件前買方掃描(YYYY-MM-DD,窗 N 天)
[引擎 markdown 表原樣]
### 入選(≤3 筆)
| # | 標的 | 事件 | 結構 | 成本/口 | max loss | 上行情境 | 進場窗 | 出場紀律 |
每筆附:價格警報價位 + 預定結構(觸發後 2 分鐘執行);或當下可掛的單。
### 判斷層淘汰說明
[哪些引擎候選被判斷層砍掉、為什麼 — 1 行/筆]
5. 落地(executed only)
- 用戶決定執行 →
thesis_ledger.py add(slug 格式<ticker>:event-vol-<label>-<YYYYMM>,trigger = 事件日,證偽 = 移動 < 隱含成本) - 本 skill 預設不存 HTML 報告;用戶要求時走
generate_html.py(type: options-strategy)
常數(調整處 = tools/event_vol_scan.py 頂部)
RUNUP_EXCLUDE 30% / VRP_CHEAP 0.85 / VRP_RICH 1.20 / MIN_OI 500 / MAX_SPREAD 15% / 預算 2% / BUY_CALL 門檻 beat 87.5% + surprise ≥5%(unreliable 不算)+ rev 5:1。
Performance
引擎 ~5-8 秒/ticker(yfinance 鏈 + 2y 歷史)。10 檔 Universe 約 1 分鐘。盤中執行前記得引擎報價是快照 — 下單前用 get_single_quote 補即時價。
Signals
- GitHub stars
- 139
- Forks
- 12
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
event-vol-scan- Source
- github.com/patricksudo/fadacai-portfolio