Communitygithub.com

uzairansaruzi/robinhood-agent-skill

Robinhood 投資組合顧問 — 透過 MCP 以唯讀方式存取持股、報價、基本面、新聞、財報、分析師評級、股利與選擇權。包含快取優先策略、實體頁面工作流程,以及可選的 Obsidian 筆記庫整合。

robinhood-agent-skill 是什麼?

這個技能讓 AI 代理能與您的 Robinhood 投資組合互動,並以唯讀方式安全地存取即時與歷史市場數據。它利用 `robinhood-mcp` MCP 伺服器來提供廣泛的資料類型,包括持股、報價、基本面、新聞、財報、分析師評級、股利歷史以及選擇權部位。為了最佳化效能與降低 API 請求,它採用快取優先策略:代理會檢查本機快取(約 15 分鐘有效期),僅在使用者請求即時數據或快取過期時,才會透過 MCP 工具獲取最新資訊。此技能透過基於環境變數的驗證,確保您的帳號憑證安全無虞,且絕對無法執行交易。它也支援選用的 Obsidian 筆記庫整合,可將投資組合快照和研究記錄自動寫入結構化的 Markdown 檔案,供後續查詢與 Dataview 使用。此技能適用於 Hermes Agent 及其他支援 MCP 的代理平台,例如 Claude Desktop、Claude Code、Codex、Cline 和 Windsurf。

相容平台✓Claude Code✓Codex CLI~Cursor✓OpenCode✓Windsurf
npx skills add uzairansaruzi/robinhood-agent-skill

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Robinhood 投資組合顧問

透過 robinhood-mcp 伺服器以唯讀方式存取您的 Robinhood 投資組合。提供持股、報價、基本面、新聞、財報、分析師評級、股利與選擇權的即時數據。

先決條件

1. Robinhood 帳戶

您需要一個 Robinhood 帳戶 (robinhood.com 免費申請)。

2. MCP 伺服器安裝

robinhood-mcp 套件提供 MCP 伺服器。請使用以下方式之一安裝:

# 推薦方式 — 透過 uvx 執行(無需全域安裝,自動管理)
# 只需加入代理設定檔即可執行。uvx 會在首次執行時自動安裝。

# 替代方式 — 全域 pip 安裝
pip install robinhood-mcp

備註: uvx 由 uv Python 套件管理器提供。請先安裝它:curl -LsSf https://astral.sh/uv/install.sh | sh

3. 環境變數

請在代理程式的 .env 檔案或 shell 設定檔中設定以下變數:

變數必要說明
ROBINHOOD_USERNAME是您的 Robinhood 電子郵件
ROBINHOOD_PASSWORD是您的 Robinhood 密碼
ROBINHOOD_TOTP_SECRET僅在使用驗證器應用程式時來自驗證器設定的 TOTP 金鑰。如果使用簡訊驗證則不需要。

4. 代理程式設定

請參閱 templates/ 目錄,取得適用於您代理程式的可直接複製貼上的設定片段。快速參考:

Hermes Agent (~/.hermes/config.yaml):

mcp_servers:
  robinhood:
    command: uvx
    args:
      - robinhood-mcp
    env:
      ROBINHOOD_USERNAME: "${ROBINHOOD_USERNAME}"
      ROBINHOOD_PASSWORD: "${ROBINHOOD_PASSWORD}"
      # ROBINHOOD_TOTP_SECRET: "${ROBINHOOD_TOTP_SECRET}"  # 如使用驗證器應用程式,請取消註解
    timeout: 60
    connect_timeout: 30

其他代理程式 — 請參閱 templates/ 目錄,內含 Claude Desktop、Claude Code、Codex、OpenCode、Cline 及 Windsurf 的設定。

加入設定後,請重新啟動您的代理程式。驗證方式:hermes mcp test robinhood(Hermes)或檢查您代理程式的 MCP 狀態。

可用的 MCP 工具

這些工具在 Hermes Agent 中以 mcp_robinhood_* 名稱註冊(前綴因代理程式而異):

工具說明
robinhood_get_portfolio投資組合價值、權益、購買力、當日變動
robinhood_get_positions所有持股的成本基礎、當前價值、損益
robinhood_get_position單一持股,以股票代碼查詢(查詢單一標的更快)
robinhood_get_watchlist您觀察清單中的股票
robinhood_get_quote即時價格、買賣報價、成交量
robinhood_get_fundamentals本益比、市值、股利收益率、52週高低範圍
robinhood_get_historicalsOHLCV 價格歷史(5分鐘、10分鐘、小時、日、週)
robinhood_get_news特定股票代碼的最新新聞文章
robinhood_get_earnings財報日期、每股盈餘預估值、實際值
robinhood_get_ratings分析師買入/持有/賣出評級
robinhood_get_dividends股利支付歷史
robinhood_get_options_positions當前選擇權部位
robinhood_search_symbols根據名稱或股票代碼搜尋股票

本機快取

投資組合數據會快取在本機的 ~/.hermes/data/robinhood/portfolio_cache.json(Hermes)或 ~/.robinhood-mcp/cache.json(其他代理程式)。

快取優先策略

請務必先檢查快取。 僅在以下情況才呼叫 MCP 工具:

  1. 快取超過15分鐘,且使用者需要即時數據
  2. 使用者明確要求重新整理(「重新整理我的投資組合」、「獲取最新價格」)
  3. 使用者詢問快取中沒有的特定股票代碼
  4. 使用者詢問快速變化的數據(新聞、即時報價)

更新快取

# Hermes Agent 使用者
python3 scripts/refresh_cache.py

# 使用自訂路徑
python3 scripts/refresh_cache.py --cache-dir ~/my-data --vault-path ~/my-vault

# 僅輸出 JSON(不使用 Obsidian)
python3 scripts/refresh_cache.py --json-only

# 即使快取仍新鮮,也強制重新整理
python3 scripts/refresh_cache.py --force

代理程式也可以在查詢投資組合時,透過呼叫 MCP 工具並將結果寫入快取檔案,來內聯更新快取。

投資組合查詢工作流程

當使用者詢問他們的投資組合時:

  1. 讀取快取以獲取上下文(投資組合價值、持股、配置)
  2. 如果數據過期(>15分鐘)或使用者想要即時數據,則呼叫 MCP 工具
  3. 在 MCP 取得數據後更新快取
  4. 根據其實際持股提供有上下文的回答 — 而非一般性建議
  5. 適當時參考他們的成本基礎、未實現損益和配置比例
  6. 對於選擇權問題,如果已知使用者的策略則進行交叉參考

當使用者詢問特定股票代碼時:

  1. 檢查 wiki/entities/<ticker>.md 是否存在(如果使用 Obsidian)
  2. 讀取其中現有的投資論點和研究歷史
  3. 透過 MCP 取得即時數據(報價、基本面、新聞、評級)
  4. 整合 wiki 知識和即時數據後進行回應
  5. 將研究筆記追加到實體頁面(如果使用 Obsidian)
  6. 如果該股票代碼不在投資組合中,則將其追蹤到研究佇列中

何時使用 MCP 與快取

情境使用
「我的投資組合值多少錢?」快取(如果夠新)
「我的 NVDA 表現如何?」先快取,若過期或缺少股票代碼則使用 MCP
「給我完整的投資組合更新」MCP(一律取得即時數據)
「TSLA 有任何新聞嗎?」MCP(新聞不斷變化)
「AAPL 的分析師評級是什麼?」MCP(研究數據一律為即時)
「顯示我的選擇權部位」先快取,若過期則使用 MCP
「我收到了哪些股利?」先快取
「重新整理我的數據」MCP,然後更新快取

研究轉實體工作流程(選用 — 需要 Obsidian)

問題: 關於股票的研究查詢會在聊天對話中遺失。 解決方案: 每個持股或研究過的股票代碼都會有一個持續存在的實體頁面。研究結果會被追加,而非遺忘。

實體頁面結構

每個股票代碼在 wiki/entities/<ticker>.md 下會有一個頁面:

---
title: 公司名稱
created: YYYY-MM-DD
updated: YYYY-MM-DD
type: entity
tags: [ticker, sector, ...]
---

# 公司名稱 (TICKER)

簡要概述...

## 重要事實
...

## 投資論點
...

## 持股歷史
> 自動更新。請勿手動編輯。

### 當前部位
| 指標 | 數值 |
|--------|-------|
| 數量 | 50 |
| 平均成本 | $40.69 |
| 當前價格 | $45.20 |
| 總報酬 | +10.8% |

### 持股更新
- **[2026-04-24]** 50股 @ $40.69 平均

## 研究筆記
> 代理程式會在每次研究查詢後附加註記日期的條目。

### [2026-04-24] 我應該在 $30 加倉 HIMS 嗎?
重點摘要: [要點列表]
決定: [如果使用者有說明]

何時更新實體頁面

  1. 每次拉取投資組合時 — 更新每個持股的部位數據
  2. 每次研究查詢後 — 附加一個註記日期的研究筆記條目
  3. 建立新實體時 — 取得基本面、建立頁面、加入 wiki 索引

研究佇列

wiki/concepts/research-queue.md 追蹤正在評估中但尚未買入的股票代碼:

股票代碼來源論點(一行)狀態加入日期備註
ABCYouTube 影片EV 電池題材研究中2026-04-24MKBHD 提及

狀態值: 研究中 → 可買入 → (買入後移除)或 已放棄

Obsidian 筆記庫整合(選用)

每次拉取投資組合可以將兩個檔案寫入您的 Obsidian 筆記庫:

檔案行為
_ephemeral/portfolio/snapshots/YYYY-MM-DD-HHMM.md不可變 — 每次拉取一個,完整數據
_ephemeral/portfolio/latest.md會被覆寫 — 當前狀態 + 與前一次的差異

Dataview 的前置資訊

兩個檔案都包含 YAML 前置資訊:

---
snapshot_time: 2026-04-24T18:58:02Z
date: 2026-04-24
time: 14:58
total_equity: 42700.94
day_change: -834.73
day_change_pct: -1.92
positions_count: 16
options_count: 1
dividends_ytd: 1.68
type: portfolio-snapshot
---

這使得 Dataview 查詢得以運作,例如:

TABLE date, total_equity, day_change_pct
FROM "_ephemeral/portfolio/snapshots"
SORT snapshot_time DESC

差異計算

latest.md 會與最近的快照進行比較,並重點標示:

  • 🆕 新增部位(自上次拉取後買入)
  • ❌ 已關閉部位(自上次拉取後賣出)
  • 📊 重大變動(價格變動 >5% 或配置佔比變動 >1%)
  • 權益變動(相較於上次快照)

若要啟用 Obsidian 整合,請在執行 refresh_cache.py 時設定 --vault-path 參數,或設定 ROBINHOOD_VAULT_PATH 環境變數。

諮詢指南

  1. 始終根據使用者實際持股提供有上下文的回答,而非一般性建議
  2. 適當時參考成本基礎、未實現損益和配置百分比
  3. 對於選擇權問題,了解使用者的策略(例如,0DTE 突破策略)
  4. 推薦行動時,展示計算依據(當前配置、風險/回報)
  5. 除非使用者明確要求建議,否則絕不建議交易
  6. 當單一部位超過投資組合的 20% 時,標記集中度風險
  7. 交叉參考新聞與基本面 — 不要僅根據標題做出反應

安全性與隱私

  • 此技能中不儲存任何憑證 — 驗證透過 MCP 設定中的環境變數進行
  • 唯讀存取 — MCP 伺服器無法執行交易或修改帳戶設定
  • 本機處理 — 憑證於本機用於驗證;工作階段權杖快取在 ~/.tokens/robinhood.pickle
  • 快取僅限本機 — ~/.hermes/data/robinhood/ 絕不對外傳輸
  • Obsidian 筆記庫 — 快照僅寫入使用者本機的筆記庫

疑難排解

問題解決方案
「未登入」確認 ROBINHOOD_USERNAME 和 ROBINHOOD_PASSWORD 環境變數已正確設定
「發現非 base32 數字」ROBINHOOD_TOTP_SECRET 包含無效字元 — 僅限 A-Z 和數字 2-7。如果使用簡訊驗證,請移除此變數
速率限制(429 錯誤)robin_stocks 沒有內建速率限制。請暫停活動數分鐘後重試
MCP 伺服器無法啟動確保已安裝 uvx(使用 pip install uv 或 `curl -LsSf https://astral.sh/uv/install.sh
快取腳本失敗確保已安裝 robin_stocks 和 pyotp:pip install robin_stocks pyotp
報價過時Robinhood 報價是時間點數據,非即時串流。請透過 MCP 重新整理以取得最新數據

相關資源

  • robinhood-mcp — 底層的 MCP 伺服器
  • robin_stocks — 非官方的 Robinhood API 包裝器
  • portfolio-obsidian-bridge — 適用於任何券商的通用 Obsidian 同步工具
  • llm-wiki — 用於持久化研究的 Wiki 架構
  • obsidian — Obsidian 筆記庫操作

相關技能