Communitygithub.com

uzairansaruzi/robinhood-agent-skill

Robinhood 投资组合顾问——通过 MCP 提供持仓、报价、基本面、新闻、财报、分析师评级、股息和期权的只读访问。包含缓存优先策略、实体页面工作流,并可选集成 Obsidian 笔记库。

robinhood-agent-skill 是什么?

该技能通过 `robinhood-mcp` 服务器为 AI 智能体(如 Hermes Agent、Claude Code、Cursor 等)提供对 Robinhood 投资组合的只读访问能力。它支持查询持仓、实时报价、基本面数据、新闻、财报事件、分析师评级、股息历史和期权仓位等 13 个 MCP 工具。技能文档详细描述了缓存优先策略、投资组合查询工作流以及可选的 Obsidian 笔记库集成方案。用户可通过简单的环境变量配置(用户名、密码、TOTP 密钥)即可连接账户,无需将凭证存储在技能本身中。该技能特别适合需要持续监控个人投资组合、进行股票研究并维护长期研究笔记(通过 Obsidian 实体页)的开发者和投资者。

兼容平台✓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/<股票代码>.md 是否存在(如果使用 Obsidian)
  2. 读取其中已有的投资论点及研究历史
  3. 通过 MCP 获取实时数据(报价、基本面、新闻、评级)
  4. 综合 wiki 知识与实时数据进行回答
  5. 在研究笔记中附加一条研究记录到实体页面(如果使用 Obsidian)
  6. 如果该股票代码不在投资组合中,则将其添加到研究队列中

何时使用 MCP 与缓存

场景使用方式
“我的投资组合值多少钱?”缓存(如果足够新)
“我的 NVDA 表现如何?”优先缓存,缓存过时或股票代码缺失时使用 MCP
“给我一份完整的投资组合更新”MCP(始终获取实时数据)
“TSLA 有什么新闻吗?”MCP(新闻不断变化)
“AAPL 的分析师评级如何?”MCP(研究数据始终是实时的)
“显示我的期权持仓”优先缓存,缓存过时使用 MCP
“我收到了多少股息?”优先缓存
“刷新我的数据”MCP 然后更新缓存

研究到实体工作流(可选——需要 Obsidian)

问题: 关于股票的研究查询在聊天会话中容易丢失。 解决方案: 每个持仓或正在研究的股票代码都会获得一个持久化的实体页面。研究记录会被追加,而不是被遗忘。

实体页面结构

每个股票代码对应一个 wiki/entities/<股票代码>.md 页面:

---
title: 公司名称
created: YYYY-MM-DD
updated: YYYY-MM-DD
type: entity
tags: [股票代码, 行业, ...]
---

# 公司名称 (股票代码)

简要概述...

## 关键事实
...

## 投资论点
...

## 持仓历史
> 自动更新。请勿手动编辑。

### 当前持仓
| 指标 | 数值 |
|--------|-------|
| 数量 | 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 视频电动汽车电池业务研究中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 库操作

相关技能