引導式投資組合監控技能
此技能建立的內容
對於使用者提供的任何投資組合,此技能會產生:
- MonitoringConfig — 一個結構化的 JSON 物件,寫入 ALFS,作為股票清單、時間範圍、引導模式與偏好說明的單一事實來源。
- 兩個自動化資訊流 —
gpw-fundamentals(財務歷史記錄)與gpw-monitor(每日事件分析與推送警報),兩者皆在執行時讀取設定。 - 一個操作手冊 —
guided-portfolio-watch,位於https://alva.ai/u/{username}/playbooks/guided-portfolio-watch。 - 每日警報 — 當發生重大事件時,以解釋為優先的通知。
此技能可重複使用:更改 config.json 並重新執行資訊流,即可為任何新的投資組合產生完整的操作手冊與警報管道,無需修改任何程式碼。
步驟 1 — 解析使用者意圖
呼叫 src/intent-to-config.js(或應用其邏輯)以從使用者的訊息中提取 MonitoringConfig。在提出任何問題之前執行此操作。
股票代碼提取
掃描 1–5 個大寫字母序列或像 BRK.B 這樣的模式。僅接受美國上市股票。拒絕 ETF、加密貨幣(例如 BTC、ETH、SOL)、選擇權以及非美國股票代碼 — 告知使用者並繼續處理接受的符號。
常見單字封鎖清單(即使是大寫也拒絕):I, A, AN, OR, FOR, AND, AT, IN, ON, MY, ME, THE。
引導模式(偏好推斷 — 非專業知識宣稱)
套用以下優先順序。在第一個符合條件時停止。
1. 明確偏好(始終優先):
"用白話文解釋" / "向我說明" / "我是投資新手"
"我不懂" / "幫我理解" → 引導模式
"我要技術細節" / "假設我懂金融"
"跳過基礎" / "技術分析"(作為偏好) → 標準模式
2. 上下文訊號(僅在沒有明確偏好時適用):
正確使用:EBITDA、FCF、NIM、P/E、基點、淨利率、
營運槓桿、CAGR → 標準模式
"我該擔心嗎?" / "這對我來說意味著什麼?" / "這很糟嗎?" → 引導模式
3. 預設值(混合、衝突或無訊號):
→ 中立模式
切勿詢問「你是初學者嗎?」或「你的經驗程度如何?」。 中立模式預設使用引導版型;使用者可透過 AGENTS.md 更改。
時間範圍
- 關鍵詞:「長期」、「3–5 年」、「永久持有」、「退休」 →
long-term - 關鍵詞:「中期」、「1–3 年」、「未來幾年」 →
medium-term - 關鍵詞:「當沖」、「波段交易」、「短期」、「< 1 年」 → 不支援。告知使用者;在繼續之前詢問長期監控是否可以接受。
- 預設值(無訊號):
long-term。
持有分類
- 「我持有」、「我買了」、「我的倉位」、「我有」 →
holding - 「關注中」、「追蹤中」、「注意」 →
watchlist - 模糊 →
holding(較安全的預設值;避免告訴持有者他們並不擁有該股票)
持有分類僅影響警報用語。管道對所有股票代碼一視同仁。
權重(可選)
解析明確的百分比模式:「50% NVDA、30% TSLA、20% AAPL」。如果提供了,則將其儲存為 weights 物件(值 0–1,總和必須為 1.0 ± 0.02;若因四捨五入有誤差則進行歸一化)。如果未提供,則從設定中省略 weights。
步驟 2 — 必要時澄清(最多一個問題)
僅在答案會實質改變建構內容時提問:
| 情況 | 提問 |
|---|---|
| 未提供股票代碼 | 「您想要監控哪些公司?」 |
| 時間範圍衝突(當日沖銷) | 告知 + 確認接受長期監控 |
請勿詢問:持股數量、成本基礎、財務目標、經驗程度。 請勿詢問第二個問題。
步驟 3 — 組裝 MonitoringConfig
建立完整的 MonitoringConfig 物件(參閱 config/monitoring-config.schema.json)。
sectorFocusAreas — 透過 arrays-data-api-equity-fundamentals 為每個股票代碼擷取公司詳細資料。使用 sector + industry 欄位以及 src/intent-to-config.js 中的查詢表,為每個股票代碼生成一句重點說明。如果 API 呼叫失敗或產業未知,則使用通用備用文字:"關注:營收、獲利與業務特定發展。"。切勿虛構關注領域。
preferencesNote — 使用以下範本從設定欄位組裝:
使用者[持有/追蹤] [股票代碼清單]。投資時間範圍:[時間範圍]。
[如果是引導模式:]使用白話、無行話的英文。首次出現金融詞彙時加以定義。
所有內容圍繞使用者應關注什麼以及為什麼而構建。
[如果是標準模式:]假設具備中級金融素養。使用標準金融術語。
[如果是中立模式:]使用清晰易懂的語言。避免未經解釋的行話。
警報政策:僅關注重大的長期業務發展。
排除:純粹價格波動、技術分析、未經證實的謠言。
包括:財報/財測變更、監管/法律事件、策略公告、
以及對業務有多年影響的供應鏈或產品變更。
[如果提供了權重:]說明性配置:[股票代碼] [百分比]%,...(使用者提供的假設情境;非經過驗證的當前權重。)
[每個股票代碼的關注領域:]
[股票代碼]:[sectorFocusArea]
...
[如果有任何未知輸入:]數量、成本基礎與總投資組合價值未知。請勿計算或暗示投資組合層級的績效數據。
步驟 4 — 將設定寫入 ALFS
# 將設定序列化到本地暫存檔案,然後寫入 ALFS
alva fs write --path '~/feeds/gpw-monitor/v1/config.json' --file /tmp/gpw-config.json --mkdir-parents
確認寫入成功:
alva fs read --path '~/feeds/gpw-monitor/v1/config.json'
同時將設定寫入 ~/feeds/gpw-fundamentals/v1/config.json(相同內容 — 兩個資訊流從各自的路徑讀取以保持解耦)。
步驟 5 — 部署資訊流(需要使用者批准)
在部署前閱讀 references/setup-workflow.md。在使用者確認 MonitoringConfig 正確之前,請勿部署。
資訊流 1:gpw-fundamentals(使用範本 templates/gpw-fundamentals.stub.js)
- Cron:
15 6 * * * - 輸出:
fundamentals/snapshot(JSON blob) - 無警報輸出
資訊流 2:gpw-monitor(使用範本 templates/gpw-monitor.stub.js)
- Cron:
30 6 * * * - 輸出:
analysis/decision+alerts/daily(V2 alertOutput) - 使用
--push-notify部署
步驟 6 — 建立並發布操作手冊(需要使用者批准)
使用範本 templates/gpw-playbook.stub.html。填入所有 [GPW-*] 標記。
遵循完整生命週期:alva lint playbook → alva release playbook-draft → alva release playbook → alva screenshot。
步驟 7 — 啟用警報傳遞(需要使用者批准)
發布會自動建立擁有者的 FEED 警報綁定。確認傳遞:
alva alert history --automation gpw-monitor
# 預期:至少有一行狀態為 "sent"
驗收標準
當以下情況發生時,技能即視為完成:
alva lint playbook通過且無錯誤alva screenshot顯示可見資料(非空白畫面)alva alert history在排程執行後的 24 小時內顯示一行狀態為sent的記錄- 更改
config.json中的股票代碼並重新執行 gpw-fundamentals,會產生新的公司區段,且無舊股票代碼的引用
此技能不建立的內容
- 價格圖表或盤中價格監控
- 買入 / 賣出 / 持有建議
- 財報行事曆
- 相對於基準的績效
- 交易或訂單執行