AgentStack
SKILL verified MIT Self-run

Briefing

skill-patricksudo-fadacai-portfolio-briefing · by PatrickSUDO

Daily portfolio briefing with 3 tiers: /briefing (quick ~1min), /briefing full (~3min), /briefing deep (~5min). Replaces daily-briefing.

No reviews yet
0 installs
18 views
0.0% view→install

Install

$ agentstack add skill-patricksudo-fadacai-portfolio-briefing

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Briefing? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Portfolio Briefing

三層結構的每日投資組合簡報,取代原 /daily-briefing

Arguments

  • /briefing → Quick(~1 分鐘)
  • /briefing full → Quick + Full(~3 分鐘)
  • /briefing deep → Quick + Full + Deep(~5 分鐘)
  • /briefing telegram → Telegram Push Tier(~2-3 分鐘)— 盤中推送專用,不跑 Phase 1-3

--send 旗標

任何 tier 加上 --send 會在 tier 執行完後:

  1. 把完整 briefing markdown 寫到 briefing-out/YYYY-MM-DD-full.md(Write tool)
  2. 把 Telegram 格式純文字寫到 briefing-out/YYYY-MM-DD-telegram.txt(Write tool)
  3. 呼叫 python3 tools/send_briefing.py YYYY-MM-DD(Bash tool)推送至 Telegram + Email
  • send_briefing.py 內部自動呼叫 generate_html.py,push HTML 到 reports repo,並在 Telegram 訊息末加上網頁連結

briefing telegram 沒有 --send 時:只寫 briefing-out/ 兩個檔案,不發送。 若需手動生成 HTML(不發送):python3 tools/generate_html.py briefing YYYY-MM-DD [--push]

執行模型建議

  • /briefing(quick)→ Sonnet 4.6(純彙整;session 已長則先 /compact
  • /briefing telegram → Sonnet 4.6(每日 launchd 自動推送,成本敏感,固定 Sonnet;週五 --codex 另走 gpt-5.5)
  • /briefing full → Opus 4.8(中等綜合 + Verdict;Phase 2 subagent 已外包 Haiku)
  • /briefing deep → Opus 4.8(深度合成 + Codex 整合 + 機率/EV)

切換方式:/model sonnet/model opus/model fable 後執行 skill。


Step 0: 配置同步 & 倉位偵測

執行 CLAUDE.md 的 Step 0 統一規範(0a → 0b → 0c → 0d → 0e)。

  • plan.md + feedback/*.md(必做)
  • 呼叫 get_account_position 取即時持倉
  • 今日 journal 不存在 → 執行 gap-fill + 變動偵測 + 自動建立 journal
  • 若偵測到的變動對應 plan.md 待辦項 → 在 Phase 1 Step 1 標記
  • 0e 第一性原理紀律:在 Quick Take 之前必須完成「市場主題 thesis / 證偽條件 / 機率分布」三題(見 CLAUDE.md 0e)

Step 0.5: Macro Snapshot Load(所有 Phase / Tier 共用)

讀 cache(不打 API,所有數據由 tools/fetch_macro.py 預載到 briefing-out/cache/macro-snapshot.json):

Read briefing-out/cache/macro-snapshot.json

判定:

  • status == "ok""partial" 且 cache mtime 36h → 顯示 ⚠️ Macro snapshot stale ({mtime_hours}h old) 仍使用但標記

將 5 個 series + regime_tag 內容餵給 Step 0e 與後續呼叫的 probability-honesty-checker agent(其 Step 1i 必須收到此資料)。

Step 0.6: Earnings History Load(所有 Phase / Tier 共用)

讀 cache(由 tools/earnings_history.py 預載):

Read briefing-out/cache/earnings-history.json
Read briefing-out/cache/earnings-dates.json

判定:

  • status == "ok" → 使用,後續 Section 4.5 與 Telegram tier earnings 區直接引用
  • status == "skipped" / mtime stale → 標記 ⚠️ Earnings cache stale 但仍使用最後一份

這兩份資料用於:

  • Section 4.5 Earnings Calendar 表格的 Trailing 8Q beat / avg surprise 欄位
  • Telegram tier 📅 Earnings This Week 加 beat rate 標註
  • probability-honesty-checker Step 1d「Base rate」備選來源(EODHD fundamentals-snapshot 為首選)

Step 0.65: Fundamentals Snapshot Load(所有 Tier 共用,cache-only)

讀 cache(由 tools/fetch_fundamentals.py 預載,TTL 24h):

Read briefing-out/cache/fundamentals-snapshot.json

判定:

  • status == "ok" 且 mtime 30h / 缺失 → 標記 ⚠️ Fundamentals cache stale/missing;Deep tier 強制派 subagent 刷新,Quick/Telegram 標旗但繼續

EODHD 資料缺口處理(必守):

  • highlights.pe_ratio == 0.0peg_ratio == 0.0 → 丟棄該三錨點錨,標 (anchor unavailable),不進 Fair PE 計算
  • avg_surprise_pct 對低基期股(EPS estimate ≤$0.10)可能失真 → beat 次數可信,avg% 在機率計算中標 (unreliable-low-base) 並拉寬區間

Cache-miss fallback / Deep 強制刷新:

Agent(subagent_type="data-collector",
  prompt: "對以下全部持倉(TICKER.US 格式)呼叫 mcp__eodhd-mcp__get_fundamentals_snapshot 與
           mcp__eodhd-mcp__get_earnings_history,回傳 dict {ticker: {snapshot:{...}, base_rate:{...}}},
           不分析不合成。")

Deep tier 每次必跑(強制刷新);Quick/Full 僅在 cache miss 時派。

這份 cache 用於:

  • Section 8.5(Full/Deep) 三錨點估值表(A1 pe_ratio / A2 PEG / A3 分析師隱含 PE)
  • Quick Take 下方「💰 估值快訊」(一行,最便宜/最貴持倉 vs 公允價)
  • probability-honesty-checker Step 1d(beat base-rate 首選來源)與 Step 1h(quarterly growth → fundamental intact X/Y)
  • D2 thesis-impact 推理fair_value_before/after 重算從同一 cache 取三錨點輸入

Step 0.67: News Articles Load(所有 Tier 共用,cache-only)

讀 cache(由 tools/fetch_news.py 預載,TTL 6h):

Read briefing-out/cache/news-articles.json

判定:

  • status == "ok" 且 mtime 8h / 缺失 → 標記 ⚠️ News cache stale/missing,Quick/Full/Telegram 略過 P3 信號擷取,Deep tier 繼續(P3 降級為僅 SEC/逐字稿)
  • Quick / Full / Telegram tier:不讀 body,不做信號擷取;news cache 僅供 Deep tier §9.5 使用

Step 0.7: Thesis Ledger 驗收 & 逾期掃描(所有 Tier 共用)

帳本 = research/thesis-ledger.json,工具 = tools/thesis_ledger.py(去重/碰撞/到期/過期/統計全在程式層,Claude 不手改 JSON)。

1. 取得今日到期清單(同時自動 expire sweep):

python3 tools/thesis_ledger.py due

回傳 {due:[...], expired:[...]}expired 是工具自動把「逾期 >30 天未驗收」轉掉的,當作無結果。

2. 對每筆 due thesis 驗收:

  • 讀該筆 trigger.metric → 知道要抓什麼(財報營收/ASP/毛利率、板塊 ETF、價格…)
  • 用既有 MCP(yfinance / earnings_history.py cache / technical 等)抓實際數字
  • 對照 thesis + falsification 判定 passed / failed / partial
  • 抓不到新數(event 觸發但財報還沒出)→ 用 reschedule 把觸發日往後推、維持 pending,絕不猜 verdict

`` python3 tools/thesis_ledger.py reschedule --id --to YYYY-MM-DD --reason "財報未出" ``

  • 有結論 → 先做 D2 三桶股價影響分解,再呼叫 resolve 帶結構化旗標:
  • passed:用財報後新數字重算 D1 三錨點(pe_ratio × fwd_eps 各情境) → fair_value_afterprice_impact_pct = (after−before)/before
  • failed:同上但用惡化輸入(成長減速/砍 guide) → fair_value_after 下修
  • partial:拆分 thesis 成分 vs 倍數/價格成分 → impact_decomp = "thesis +X%(基本面)/multiple −Z%(re-rate)=net −W%"

`` python3 tools/thesis_ledger.py resolve --id --verdict passed|failed|partial \ --actual "實際數字" --note "判讀" --next-action "由此推出的操作" \ --fair-value-before --fair-value-after \ --price-impact-pct --impact-decomp "thesis +X%/multiple −Z%=net −W%" ` fairvaluebefore/after` 取自 Step 0.65 fundamentals cache 的三錨點計算;全部選填,有數就帶。

3. 讀 research/naked-call-watchlist.md(若存在):

Read research/naked-call-watchlist.md

macro-snapshot.json(10Y UST、VIX)+ get_batch_indicators 2 日技術確認,評估其 3 閘門狀態:

  • G1 10Y UST ≤4.35%:從 macro snapshot fed_funds 推估或 technical;G2 VIX ≤18:macro VIX;G3 目標 2 日收盤確認:batch indicator 技術
  • 更新 watchlist 閘門欄位 → 狀態進 Key Alerts(未達全過則 🔒 LOCKED: G1/G2/G3 [狀態]
  • 3 閘門全過 → 輸出 🎯 樂透閘門達標:{ticker} 可評估進場,加入 Key Alerts actionable 與 Telegram T5/T6
  • 日誌最後一行(auto-append)--send / launchd 路徑用 Write 追加今日欄位到 watchlist;互動 quick/full/deep 僅輸出提議行,不 Write

4. 輸出「📋 thesis 驗收」區塊(接在 Key Alerts 後 / Quick Take 前):

## 📋 thesis 驗收
| thesis | 命題 | 實際 | verdict | 公允價 before→after | 價格影響 | → actionable |
|--------|------|------|---------|---------------------|---------|-------------|
| MU:memory-cycle | DRAM 漲價毛利率>40% | ASP +8%、毛利率42% | ✅ passed | $320→$370 | +15.6% | HOLD,加碼門檻 $XXX |
(無到期項則略過此區塊;「公允價 before→after」和「價格影響」欄只在 resolve 時填,reschedule 留空)
⏳ 逾期未驗收已歸檔:[expired 清單,若有]

驗收結果直接餵 actionable:passed → 強化/HOLD/加碼(含新公允價上修幅度);failed → 汰弱/減碼(含公允價下修多少);partial → 分解 thesis vs multiple 成分後決定操作。resolve --next-action 寫的就是下一步行動,併入 Key Alerts / 行動項。


Phase 1: Quick(永遠執行)

1. Trade Journal Auto

若 Step 0b 偵測到倉位變化,輸出差異表:

## ⚡ 倉位變動(vs 上次快照 YYYY-MM-DD)
| 類型 | 操作 | 標的 | 變化 | 計畫對應 |

無變動則顯示「倉位無變化」。

2. Daily Snapshot

日期: YYYY-MM-DD
組合市值: $XXX,XXX (日變動: +/- $X,XXX / +/- X.XX%)
總損益: +/- $X,XXX (+/- X.XX%)
持倉: XX 檔股票 + XX 個選擇權合約

3. Today's Movers

全持倉依日漲跌%排序:

| 標的 | 股數 | 現價 | 日漲跌% | 市值 | 總損益% |

> +2% 或 -2% 標記。

4. Options Status

4a. 無現股標的價格確認: 比對選擇權持倉的 underlying ticker vs 現股持倉。若 underlying 沒有對應現股(如 CRWD、DDOG、GOOGL、LRCX、TSLA、TEAM), 使用 mcp__technical-mcp__get_batch_indicatorsmcp__yfinance-advanced__get_stock_info 取得該標的目前現股價格。 在 Options Status 表格中加入「標的現價」和「距 Strike %」欄位,方便判斷 ITM/OTM 狀態。

4b. Options 總覽表:

| 合約 | 方向 | 到期日 | 剩餘天數 | 標的現價 | 距Strike% | 損益% | 狀態 |

⚠️ 標記剩餘 詳見 feedback/earnings-reaction-window.mdfeedback/weak-signal-root-cause.md

5. Technical Snapshot

使用 mcp__technical-mcp__get_batch_indicators 取得全持倉技術指標。

欄位順序(依決策權重排列):

| 標的 | 現價 | 趨勢 | MACD | 量能比 | 動能分 | RSI |

  • 趨勢:stronguptrend / milduptrend / consolidation / pullback / weakdowntrend / strongdowntrend
  • MACD:顯示 crossover 狀態(goldencross 🚀 / deathcross ⚠️ / none)
  • 量能比:volumeratio(>1.5 爆量 / 75 + volumeratio 1.2 |

| 🟡 留意 | RSI > 70 但無以上複合條件 → 只標數字,不加警示標籤 | | ⚠️ earnings window | 過去/未來 48h 有財報 → 以上規則一律不套用,標記 wait N+1d |

根因分類規則(看到弱勢/強勢訊號必做):

對任一 weakdown / strongdown / momentum 5%

  • 總虧 > 15%
  • 單一持倉 > 8% 組合(過度集中)
  • 財報
- 同論點 → 沿用既有 slug(變 update);新論點 → 取區隔 slug

python3 tools/thesis_ledger.py add --ticker --slug \ --thesis "" --falsification "" "" \ --trigger-type event|date --trigger-date YYYY-MM-DD \ [--event earnings] [--metric "到期要比的指標"] --source briefing --ev ""

- **exit code 2 = 碰撞**(同 slug 但 thesis 差很多):改取區隔 slug,或確定舊論點被推翻 → 改用 `supersede`
- market-level thesis 用 `--ticker MARKET`

---

## Phase 2: Full(`/briefing full` 或 `/briefing deep` 時執行)

### 8.5 個股估值(三錨點公允價)

**資料來源:** Step 0.65 fundamentals-snapshot.json(cache-first;Deep tier 強制已刷新)

**執行範圍:**
- Full tier:≥3% 持倉全部(純股票持倉;選擇權部位只列 underlying 若持有現股)
- Deep tier:全持倉(含 0)= guidance 偏正領先訊號,可在備註或 P3 訊號推導引用(非估值輸入)

**Full tier 輸出表(每持倉一行):**

| 標的 | 現價 | A1 PE | A2 PEG錨 | A3 PT錨 | Fair PE(基/牛/熊) | FwdEPS | 公允價(基/牛/熊) | A4自建目標 | A4vsA3分歧% | 現價/公允基% | 備註 | |------|------|-------|---------|---------|-----------------|--------|----------------|----------|------------|------------|------| | MU | $XXX | 40.8 | 35.2 | 44.1 | 40.8/55.1/28.6 | $9.2 | $375/507/263 | $987 ⚠️低信心 | +33% | −8% | beat 8/8 | | CRWD | $XXX | N/A | 62.1 | 71.3 | 66.7/89.1/46.7 | $3.8 | $253/339/177 | (self-val N/A) | — | +5% | A1 anchor N/A |


欄位說明:
- **現價/公允基%** = (現價 − 基準公允價) / 基準公允價;負 = 被低估;正 = 被高估
- 若 abs > 30% → 在備註標 `⚠️ 大幅偏離`;若 abs > 50% → 標 `⚠️⚠️ 異常大偏離,錨點可能失效`
- **A4自建目標**:從 `self_valuation.own_target_price`(cache 已算,**不重算**);`confidence=="unavailable"` → 標 `(self-val N/A)`;`confidence=="low"` → 標 `⚠️低信心`
- **A4vsA3分歧%** = `(A4目標 − A3 wall_street_target) / A3 wall_street_target`;A4 不進 median(A1,A2,A3),不進 EV(與 DCF 同為 sanity/divergence flag)
- A4vsA3 > +20% → 我較 Street 樂觀:檢查是否有 Street 未定價的成長 driver;A4vsA3 30% → 錨點存疑]`
- 402 / empty / 免費版限制 → 標 `DCF 不可用 (FMP free tier)` 靜默略過
- DCF 結果**僅為 sanity flag,不進 EV 計算**

**資料缺口標準處理(不得猜測):**
- pe_ratio = 0.0 → `A1: N/A` (CRWD 已知缺口)
- peg_ratio = 0.0 → `A2: N/A`(CRDO 已知缺口)
- wall_street_target 缺 → `A3: N/A`
- fwdEPS 三來源(consensus curr_fy / next_fy / approx)皆缺 → 整欄標 `(fwdEPS unavailable)`,不輸出公允價

### 9. Sentiment Analysis
使用 Agent 子代理(subagent_type: "data-collector")取 top 5 持倉的情緒數據:

- **Agent: EODHD Sentiment**(subagent_type: "data-collector")→ `get_sentiment_trend`(ticker format: "TICKER.US")

| 標的 | 7日情緒 | 30日情緒 | 趨勢 | 備註 |

情緒 "    ← 無此欄 = 不成立

訊號 → thesis 轉換(Step 0e 紀律): signal 需轉成 1 句可驗證命題 + 2-3 量化證偽點 + 觸發點才算完整 thesis:

SIGNAL: MU 投片量 +8% QoQ (source: EODHD/Reuters, conf medium)
→ THESIS: "MU 投片量 +8% QoQ 預示 FY27 bit 出貨 YoY >25% 且 DRAM ASP 不跌破 −5% QoQ"
→ FALSIFY: ["下季 bit shipment YoY 10%"]
→ TRIGGER: event, , metric="bit shipment YoY + DRAM ASP QoQ"

Thesis 登錄規則:confidence ∈ {high, medium} 且有明確前瞻 trigger → 登錄 ledger(--source signal-inference--ev 存 signal provenance);confidence=low 只在 briefing 文字呈現,不入 ledger;exit-code-2 碰撞 → 改 slug 或 supersede。

python3 tools/thesis_ledger.py list --ticker          # check existing first
python3 tools/thesis_ledger.py add --ticker  --slug  \
  --thesis "..." --falsification "..." "..." \
  --trigger-type event|date --trigger-date YYYY-MM-DD \
  --event earnings --metric "..." \
  --source signal-inference \
  --ev "signal:  , , conf="

誠實退化(必守): 若此 tier 的 ≥3% 持倉全部回傳「只有 narrative,無量化數字」→ 整段輸出:

§9.5 訊號擷取:本期無可量化信號(只有 narrative news,無 SEC 8-K / 逐字稿量化句)

不輸出任何推測數字,不改寫 qualitative 為 quantitative。

10. Market Dynamics

  • mcp__fmp-mcp__getBiggestGainers + getBiggestLosers
  • 檢查持倉是否出現在極端波動名單
  • 市場主題掃描(板塊輪動、避險情緒等)

11. Prediction Markets

  • mcp__polymarket-mcp__search_markets 搜尋與持倉板塊相關事件
  • 搜尋關鍵字:AI regulation, tariffs, Fed rate, semiconductor
  • 顯示相關事件及概率

11.5 樂透機會掃描(Lottery Opportunity Scan)

目的: 從市場掃出至多 3 個適合短 DTE OTM Call 樂透的候選(per memory feedback:樂透用近期 OTM Call 不用 LEAPS,避免 vega 干擾凸性)。

篩選步驟(重用 Section 10 movers + active list 數據,不額外抓取):

  1. 候選池:getBiggestGainers + getMostActiveStocks
  2. 排除遲到派對: 過去 5 日累計漲幅 > 30% → 凸性已被消耗
  3. 排除既有持倉同題材: 與 portfolio 重複曝險的標的跳過
  4. 必要條件(3 項全符合才入選):
  • 30 天內有 binary catalyst(財報 / FDA / 政策 / 公告)
  • 有具體論述(不是純技術突破或迷因)
  • 短 DTE OTM Call 流動性合理(OI > 500 估算)

輸出格式(限 1-3 筆,無符合則輸出「⏳ 本次無符合凸性條件的樂透機會」):

| Ticker | 題材 / Binary 催化 | 建議結構 | 預估成本 | 凸性備註 | |--------|----------------|---------|---------|---------|

規則:

  • 預設 1-2 口,總成本 ≤ 2% 帳戶價值(Quarter-Kelly 樂透上限)
  • 不推 LEAPS OTM 當樂透(vega 干擾,違反 feedbackoptionsvega_playbook.md)
  • 「上行 +XXX% / 下行 max loss = premium」必寫
  • 若候選 IV Rank > 80:警告「IV 過高,後續 IV crush 風險」

12. 計畫 Full Alignment

完整進度表:

| # | 計畫操作 | 狀態 | 觸發條件 | 當前數據 | 備註 | |---|---------|------|---------|---------|------| | 1 | 加碼 NVDA | ⏳ 待觸發 | RSI5%、虧>15%),執行 stock-analysis 級別的分析:

  • 技術面詳細指標(BB、ATR、SMA)
  • 基本面快照(PE、Revenue Growth、Margins)
  • 內部人交易摘要
  • 投資論點重新評估

14.5 Thesis 目標達成度 Scorecard

目的: 顯示「公司目標/thesis 有無達成」,讓用戶一眼看出哪些論點正在驗證、哪些可能破裂,不 resolve(只讀取、對照、標狀態)。

資料來源:

  • thesis_ledger.py list --status pending(取得所有待驗收 thesis)
  • Step 0.65 fundamentals-snapshot cache(quarterlyrevenuegrowthyoy / quarterlyearningsgrowthyoy / pe_ratio 等)
  • Step 0.6 earnings cache(beat rate, next_earnings date)

Scorecard 邏輯(每筆 pending thesis 做一行):

對每筆 pending thesis,取其 trigger.metric 欄位(或從 thesis 命題推斷),與 fundamentals cache 的實際指標對照,判定當前狀態:

| 狀態 | 標記 | 條件 | |------|------|------| | 進行中 / 符合目標 | ✅ on-track | 核心指標與 thesis 方向一致(例:quarterlyrevenuegrowthyoy > 0 且加速) | | 待財報驗收 | ⏳ 待 event | triggertype=event 且 triggerdate 尚未到(不能從 cache 判斷,等財報) | | 有風險 / 指標轉弱 | ⚠️ at-risk | quarterly growth decel 連 2Q 或 guide 下修方向;技術面 deathcross | | 已接近證偽條件 | 🔴 warning | falsification 條件中有 1+ 個已出現(精確比對 thesis 列的證偽點) | | 無法判定 | ❓ unknown | cache 缺相關指標,無法自動比對 |

輸出格式:

### 14.5 📋 Thesis 目標達成度
| ticker | thesis slug | 核心命題(摘要)| 到期/觸發 | cache 指標現況 | 狀態 |
|--------|------------|----------------|---------|--------------|------|
| MU | memory-cycle-asm | DRAM ASP持續上漲 + 毛利>40% | 2026-06-15 財報 | revenue growth +21% YoY;PE 40.8 | ⏳ 待 event |
| NVDA | datacenter-demand | DC revenue連4Q加速 | 2026-05-28 財報 | revenue growth +78% YoY | ✅ on-track |
| CIEN | margin-recovery | 毛利率50%以上連2Q | 2026-06-10 財報 | beat 1/8(⚠️最弱)| 🔴 warning |

附加:thesis 到期日程(未來 30 天)

📅 近期 thesis 到期:
  6/10 MU:memory-cycle(財報前) → 屆時需抓實際 ASP + 毛利率驗收
  6/15 AVGO:ai-revenue-accl(財報後) → AI revenue YoY + guide 驗收

規則:

  • 本 section 只讀不寫(不執行 resolveadd,那是 Step 0.7 的工作)
  • 若 pending thesis 為空 → 輸出「📋 無待驗收 thesis(帳本為空或全已 resolve)」
  • 每筆最多 1 行,不展開全文;詳細論點讓用戶自行查帳本

15. 完整計畫對照

portfolio-review 式的計畫執行進度表:

  • 板塊佔比 vs 計畫目標的偏差分析
  • 所有待辦項目的執行狀態
  • 風險監控項目的當前狀態
  • 下一步建議(基於計畫優先級 + 當前市場條件)


Telegram Tier(/briefing telegram

目的: 每日盤中推送至 Telegram + Email 的精簡決策摘要。不跑 Phase 1-3 的完整分析,只抓推送所需的 7 個資料點,直接產出 emoji 純文字格式。

執行模型

Sonnet 4.6(資料抓取為主,無深度合成需要)

Step 0

同標準規範(0a-0e):讀 plan.md + feedback/*.mdget_account_position → journal 確認。

資料步驟(依序,可部分並行)

T1. Earnings Window(next 7 days) 改從 cache 讀: Step 0.6 已預載 briefing-out/cache/earnings-dates.json + earnings-history.json,直接 Read 兩份 JSON。 列出所有持倉 ticker 的:

  • 財報日 + 盤前/盤後(next_date, timing
  • 過去 ±48h 已發財報的 ticker 也標出
  • Trailing 8Q beat rate + avg surprise %(從 earnings-history.json
  • focus 重點:可從 yfinance news / sentiment 摘要推斷

若 cache status"ok" → fallback mcp__fmp-mcp__getEarningsCalendar,並加註 ⚠️ earnings cache unavailable

T2. Sentiment Pulse + Fundamentals Cache 預讀(平行 Agent) 派出 data-collector subagent,取所有持倉的 EODHD 7d sentiment_trend(格式:TICKER.US):

Agent(subagent_type="data-collector"):
  呼叫 mcp__eodhd-mcp__get_sentiment_trend 對每個 ticker
  回傳 dict: {ticker: {score: float, trend: str}}

分類:score 7日變動 > +0.1 → 改善; +0.3 → 1.10 才顯示)

  1. 今日 thesis 影響 = Step 0.7 resolve 結果(若有)

省略整段的條件(全部滿足則 T8a/T8b 不輸出此段):

  • fundamentals cache status ≠ "ok",OR
  • 無任何持倉的 |現價/公允基 − 1| > 10%,AND
  • 今日 Step 0.7 無 resolve(無新 verdict)

→ signal-only:無訊號不推送(比照現有「無 alert 則略過整個 section」慣例)

T3. News & Catalysts(past 24h) mcp__yfinance-advanced__get_yahoo_finance_news 取 top 5 持

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.