Install
$ agentstack add skill-patricksudo-fadacai-portfolio-briefing ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo 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.
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 執行完後:
- 把完整 briefing markdown 寫到
briefing-out/YYYY-MM-DD-full.md(Write tool) - 把 Telegram 格式純文字寫到
briefing-out/YYYY-MM-DD-telegram.txt(Write tool) - 呼叫
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-checkerStep 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.0或peg_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-checkerStep 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.pycache / 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_after;price_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_indicators 或 mcp__yfinance-advanced__get_stock_info 取得該標的目前現股價格。 在 Options Status 表格中加入「標的現價」和「距 Strike %」欄位,方便判斷 ITM/OTM 狀態。
4b. Options 總覽表:
| 合約 | 方向 | 到期日 | 剩餘天數 | 標的現價 | 距Strike% | 損益% | 狀態 |
⚠️ 標記剩餘 詳見 feedback/earnings-reaction-window.md 與 feedback/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 數據,不額外抓取):
- 候選池:
getBiggestGainers+getMostActiveStocks - 排除遲到派對: 過去 5 日累計漲幅 > 30% → 凸性已被消耗
- 排除既有持倉同題材: 與 portfolio 重複曝險的標的跳過
- 必要條件(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 只讀不寫(不執行
resolve或add,那是 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/*.md → get_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 才顯示)
- 今日 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.
- Author: PatrickSUDO
- Source: PatrickSUDO/fadacai-portfolio
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.