股票分析
此技能每次產出相同的報告格式:
- 總覽表
- 每個標的面板,包含:
- 基本事實
- 與52週高點比較的每週K線圖
- 回報率
- 下跌驅動因素
- 多頭與空頭論點
- 持倉、數據缺口及計算日誌
所有腳本負責算術運算與HTML生成。你的工作是研究與檢查。請勿重新設計頁面或手寫HTML。
SKILL_DIR 是包含此檔案的資料夾。透過對本 SKILL.md 路徑執行 dirname 一次取得該路徑。
檔案
| 路徑 | 用途 |
|---|---|
scripts/compute_drawdown.py | 每日CSV → 52週高點與低點、跌幅%、回報率、每週收盤價 |
scripts/verify.py | 從CSV重新推導每個標題數字,檢查欄位與來源,寫入 verified.json,有任何問題則退出碼為1 |
scripts/build_report.py | worker JSON + verified.json → 單頁自含HTML(使用 assets/report.css) |
scripts/build_email.py | 相同驗證數字 → 可直接寄送的 drawdown_report.eml(適合郵件的HTML + 純文字,報告附在附件中);驗證地址有效性 |
scripts/send_email.py | 供使用者在自己的電腦上執行:透過SMTP傳送 .eml,含確認提示與本機輸入的應用程式密碼 |
defaults.json | 使用者未指定股票代號時使用的預設觀察清單(使用者可編輯) |
references/worker_brief.md | 每個worker遵循的簡報(填入 {…} 佔位符) |
references/schema.md | <TICKER>.json 的合約規範 |
examples/run-2026-10-16/ | 完整的參考執行(FTEC, QQQ, SMH, ARTY):四個worker JSON 與完成的 report.html。將其作為深度、語調與引用風格的標竿。 |
工作流程
1. 設定
- 從使用者的請求中讀取代號清單。
- 未指定代號(「執行我的股票分析」、「市場相對於高點如何?」):讀取
$SKILL_DIR/defaults.json並依序使用其default_watchlist。在第一行說明你正在使用預設觀察清單並列出內容。 - 指定代號: 僅使用這些代號;除非使用者要求(例如「平常的加上NVDA」),否則不加入預設值。
- 指數(S&P 500、道瓊、納斯達克綜合指數…):研究指數本身的數值,使用
defaults.json中的id(SPX、DJI)或簡短標籤如COMP作為檔名中的代號。告知worker該標的是指數(參見簡報中的指數備註)。
- 未指定代號(「執行我的股票分析」、「市場相對於高點如何?」):讀取
- 建立工作資料夾:
WORK_DIR=$PWD/drawdown-<YYYY-MM-DD>。 - 建立任務清單,包含:
- 每個代號一個任務
- 「驗證數字」
- 「建立並發布報告」
2. 分發
為每個代號平行且背景啟動一個子代理。每個代理的提示為:
references/worker_brief.md的完整文字,- 並將
{TICKER}、{WORK_DIR}、{SKILL_DIR}和{TODAY}填入, - 再加上值得檢查的特定代號相關角度。對於晶片基金,例如:出口管制、超大型資料中心資本支出、記憶體週期。
當使用者僅指定一或兩個代號且未要求子代理時,你可以按照同一份簡報自行進行研究。
3. 等待
當一個worker完成時,將其任務標記為完成,並發布一行:代號、其跌幅%以及其高點日期。請勿讀取worker的轉錄內容。
4. 驗證
執行:
python3 $SKILL_DIR/scripts/verify.py --dir $WORK_DIR --tickers <T...>
如果報告 MISMATCH、MISSING 或 NO SOURCE/TS,請在建立報告前修正問題:
- 算術或手動複製錯誤: 重新執行
compute_drawdown.py並從<T>_metrics.json更正JSON。 - 遺漏的研究: 使用 SendMessage 將worker送回。
UNCITED 和 NO CROSS-CHECK 屬於警告。若它們在最終報告中仍然存在,請在回覆中提到。
5. 建立
執行:
python3 $SKILL_DIR/scripts/build_report.py --dir $WORK_DIR --tickers <T...> \
--out $WORK_DIR/drawdown_report.html --title "<2-4個字的標題>" --eyebrow "<例如:ETF 回檔分析>"
選擇標題: 選取簡短且具體的名稱,例如「科技ETF回檔」或「晶片股回調」。對同一組合的重複執行使用相同標題。
6. 發布
使用 Artifact 工具發布HTML,設定 icon: "chart" 以及一句描述,指出代號與截止日期。
- 同一組合的重複執行: 如果使用者希望保留舊連結,則重新發布到該 artifact 的URL。
- 請勿編輯產生的HTML。 報告層級的變更應屬於
build_report.py或assets/report.css。
7. 電子郵件(僅在使用者提供地址時)
除非使用者自己的訊息中包含電子郵件地址(例如「…並將它寄到 [email protected]」),否則跳過此步驟。如果使用者說「寄給我」但未提供地址,請要求提供;切勿猜測或重複使用其他地方的地址。
不要使用連接器。 請勿使用 Gmail、Outlook 或任何其他電子郵件連接器或瀏覽器自動化,也不要要求或處理電子郵件密碼。寄送動作在使用者端完成:你準備一封可直接寄送的訊息,由使用者自行寄出。
- 建立郵件。
退出碼2表示地址無效:請要求使用者更正。腳本會寫入python3 $SKILL_DIR/scripts/build_email.py --dir $WORK_DIR --tickers <T...> --to <address...> \ --report $WORK_DIR/drawdown_report.html --artifact-url <published link> --title "<same title>"drawdown_report.eml(HTML + 純文字,報告附件,收件人與主旨已填寫),以及email_body.html、email_body.txt和email.json。 - 交付郵件。 使用 SendUserFile(顯示
attach)傳送drawdown_report.eml。 - 告知使用者如何寄送,以兩三行說明:
- 在 Outlook 中開啟
.eml(會以草稿開啟)或在 Apple Mail 中(郵件 → 再次傳送),檢查後按下傳送。 - 或者,使用使用者自己的電腦上的終端機:
python3 send_email.py drawdown_report.eml --from <他們的地址>。腳本會顯示收件人、要求確認,並自行提示輸入應用程式密碼。如果使用者要求,也一併傳送scripts/send_email.py。
- 在 Outlook 中開啟
- 連結的隱私。 artifact 對使用者為私人。如果收件人是其他人,請說明除非使用者分享頁面,否則收件人將依賴附件報告。
8. 回覆
保持回覆簡短:
- 一句話說明頁面內容。
- 按跌幅排序的 markdown 表格,欄位包含:代號、最後收盤價、52週高點(日期)、跌幅。
- 兩到三點關於跨代號主要發現的項目符號。
- 一則簡短的「數據缺口」說明,涵蓋影響本次執行的工具失敗情況。
- 如果要求了郵件:一行說明
.eml已準備好可寄送以及方式。
請勿重述步驟。
不可協商條款
- 每個數字均來自工具呼叫,附帶其來源與時間戳。
- 「無數據」勝過猜測。
- 所有數學運算均在腳本中完成。
- 僅使用唯讀工具。 不得觸碰訂單、警報或觀察清單工具。不要親自發送郵件;步驟7僅準備訊息供使用者寄送。
- 不提供買入或賣出建議。 公平地呈現兩種論點。