内容
# 交易工作台
Claude Code 的机构级股票分析插件,提供 Alpaca 虚拟交易功能。连接 4 个 MCP 服务器(FMP、Alpaca、TradingView 分析,可选 TradingView 桌面版)到 16 阶段的分析流程中,生成 8 维综合评分,并带有买入/卖出/持有建议和仓位调整建议。
```
/trading-desk:analyze AMD → 73 分,买入,$250 仓位,6.4 风险回报比
/trading-desk:portfolio → Alpaca 实时交易面板,带有风险警示
/trading-desk:scan watchlist → 评分 23 支股票,每日排名
```
---
## 安装(30 秒)
在 **任意** Claude Code 会话中,**任意** 目录下:
```
/plugin marketplace add srivardhanjalan/trading-desk
/plugin install trading-desk@srivardhanjalan
/trading-desk:setup
```
`/trading-desk:setup` 功能将引导您完成:
1. 询问(在聊天中)您的 **FMP** 密钥、**Alpaca** 密钥和密钥,以及是否安装 TradingView 桌面版集成(仅限 macOS,需选择加入)
2. 将它们写入 `~/workspace/secrets/trading-desk/.env`(保存在插件安装目录之外,插件更新后仍然有效)
3. 检测并备份 `~/.claude/.mcp.json` 或当前工作目录的 `.mcp.json` 中任何冲突的 MCP 配置,以便插件工具能够干净地注册
4. 安装 FMP MCP 服务器并在 `:8080` 上启动它
5. 如果您选择加入:`brew install --cask tradingview`,克隆 MCP 服务器,启动应用程序并启用 SessionStart 钩子,以便在未来的每次 Claude 会话中自动启动
6. 验证 Alpaca/FMP 端点的两个密钥
完成后,请重启 claude 一次:
```
/quit
claude
```
这是一次必要的重启,**您无需在 shell 中加载任何环境文件**。插件自带一个包装脚本(`bin/launch-alpaca.sh`),在 Claude 启动 Alpaca MCP 服务器时加载您的 `.env` 文件。
如果您选择加入 TradingView 桌面版,SessionStart 钩子(`bin/ensure-tv-desktop.sh`)将在每次会话启动时自动启动应用程序,启用 `--remote-debugging-port=9222`,无需手动启动。钩子受 `.env` 中的 `TD_TV_ENABLED` 控制,因此选择退出(或稍后更改主意)只需一行编辑即可。
### 获取 API 密钥(两者均为免费)
| 服务 | 用途 | 注册 |
|---|---|---|
| **Financial Modeling Prep** | 基本面,DCF,收益,内部人员,宏观经济 | [financialmodelingprep.com/developer](https://financialmodelingprep.com/developer) |
| **Alpaca 虚拟交易** | 投资组合,期权链,虚拟交易 | [app.alpaca.markets/signup](https://app.alpaca.markets/signup) |
免费层足够日常使用。Alpaca 虚拟交易提供 $100k-$200k 虚拟资金,无需冒真金白银的风险。
### 先决条件
| 工具 | 版本 | 备注 |
|---|---|---|
| Node.js | 18+ | [nodejs.org](https://nodejs.org) |
| Python | 3.10+ | [python.org](https://python.org) |
| Claude Code | 最新版 | `npm install -g @anthropic-ai/claude-code` |
| `uvx` | 任意 | 如果缺少,由设置技能自动安装 |
| Homebrew | 可选 | 仅限 macOS - 仅当您想让设置技能自动安装 TradingView 桌面版时需要。前往 [brew.sh](https://brew.sh) 获取。 |
| TradingView 桌面版 | 可选 | 仅限 macOS - 添加图表截图 + 订单簿数据 + Pine 脚本。设置技能如果您选择加入,则通过 Homebrew 自动安装。分析功能无需 TradingView 桌面版即可正常工作。 |
---
## 命令
| 命令 | 功能 | 调用工具次数 |
|---|---|---|
| `/trading-desk:morning-brief` | VIX,板块轮动,关注列表变化,涨幅最大股票 | 32 |
| `/trading-desk:portfolio` | Alpaca 交易面板,风险警示 + 盈利警告 | 12+ |
| `/trading-desk:analyze SYMBOL` | **完整的 16 阶段深度分析 + 推荐(包括 M&A 检查,基金级机构流量,护城河评估)** | 58–76 |
| `/trading-desk:analyze-technical SYMBOL` | 技术阶段(价格,指标,成交量,图表) | 9–21 |
| `/trading-desk:analyze-fundamental SYMBOL` | 基本面(宏观经济,财务,DCF) | 23 |
| `/trading-desk:analyze-sentiment SYMBOL` | 期权,内部人员,社会情绪,历史回测 | 24–30 |
| `/trading-desk:synthesize SYMBOL` | 从保存的阶段报告中重新评分(无需新的 MCP 调用) | 3–8 |
| `/trading-desk:scan watchlist` | 评估 `watchlist.csv` 中的每支股票 | 约 131 |
| `/trading-desk:scan discover` | FMP 筛选器 → 评分前 10 名候选股票 | 约 64 |
| `/trading-desk:scan AAPL,MSFT,NVDA` | 评估特定股票代码 | 变化 |
| `/trading-desk:compare AMD NVDA` | 8 个维度并排评分 | 18 |
| `/trading-desk:trade buy AMD 1000` | 虚拟交易,具有交易前安全检查 | 6 |
| `/trading-desk:setup` | 首次启动配置(可随时重新运行以重置配置) | 0(交互式) |
---
## 分析工作原理
### 16 个阶段
`/trading-desk:analyze SYMBOL` 依次运行 16 个阶段,写入中间结果到 `reports/`,以便上下文在压缩过程中存活。
| # | 阶段 | 来源 |
|---|---|---|
| 0 | 资产分类 + 市场时钟 | Alpaca |
| 1 | 价格,身份,买卖价差 | FMP 配置文件 + Alpaca 快照 |
| 2 | 宏观经济:板块 ETF,VIX,国债利率 | FMP + TV-分析 |
| 3 | 多时间框架技术分析(5 个时间框架) | TV-分析 + FMP 指标 |
| 4 | 成交量 + 智能资金信号 | FMP 流通股 + TV-分析 |
| 5 | 蜡烛模式识别 | TV-分析 |
| 6 | TradingView 桌面版图表 + 截图 | TradingView 桌面版 *(可选)* |
| 7 | 基本面: Piotroski,Z-Score,FCF | FMP(10 个并行) |
| 8 | 同行比较 | FMP 同行 + 批量报价 |
| 9 | 估值:3 个 DCF + PEG + 分析师目标 | FMP DCF / 带杠杆的 DCF / 自定义 DCF |
| 10 | 期权流量:10 个派生指标 | Alpaca 期权链 + 柱状图 |
| 11 | 情绪 + 新闻 NLP + M&A 检查 | TV-分析 + FMP 搜索 + Web 搜索 + Web 获取 |
| 12 | 机构所有权(13F)- 聚合 + 基金级流量 | FMP 仓位 + 由持有人提取的文件 |
| 13 | 收益转录 NLP *(可用时)* | FMP 转录稿 |
| 14 | 策略回测 + 交叉验证 | TV-分析 + TradingView 桌面版 |
| 15 | 风险量化 + 仓位调整 | Alpaca 账户 |
| 16 | 综合评估:竞争护城河 + 8 维综合评分 + 推荐 | 评分标准 + 定性推理 |
### 评分 → 行动
8 个维度,每个维度评分为 1-10,加权综合评分为 0-100。
| 维度 | 权重 | 影响因素 |
|---|---:|---|
| 技术面 | 22% | 多时间框架对齐,RSI,MACD,ADX,蜡烛 |
| 基本面 | 15% | 收入增长,利润率,Z-Score,Piotroski |
| 估值 | 15% | 3 个 DCF 模型,PEG(成长股),分析师目标 |
| 智能资金 | 13% | 内部人员,国会交易,机构,期权流量 |
| 风险 | 12% | Beta,IV/HV,盈利临近,买卖价差 |
| 历史回测 | 10% | 策略胜率,夏普比率,滚动验证 |
| 情绪 | 7% | Reddit,Twitter,StockTwits,新闻 NLP |
| 宏观经济 | 6% | 板块轮动,VIX,国债利率 |
| 综合评分 | 信号 | 行动 |
|---:|---|---|
| ≥ 75 | **强烈买入** | 激进仓位调整 |
| 60–74 | **买入** | 标准仓位调整 |
| 40–59 | **持有** | 无新仓位 |
| 25–39 | **卖出** | 减少 / 离开 |
| < 25 | **强烈卖出** | 立即离开 |
**安全覆盖** 在顶部添加:分级超买惩罚(RSI 78 = 警告,RSI 88 = 阻止),Beta 条件下的 VIX 恐慌,跨维度冲突检测,风险回报比门控,以及数据完整性底线(< 60% 完整性强制 HOLD)。
### 两条估值轨道
流程根据增长 + 倍数自动将股票分为估值轨道:
- **轨道 A(价值)** - 收入增长率 ≤ 20% 且市盈率 ≤ 40 → 3 个 DCF 模型(`getDCFValuation`,`getLeveredDCFValuation`,`calculateCustomDCF`,带有牛市/基准/熊市情景)
- **轨道 B(成长)** - 收入增长率 > 20% 或市盈率 > 40 → PEG 比率 + 分析师目标(DCF 标记为 N/A,并有理由)
### 资产覆盖
| 类型 | 检测 | 行为 |
|---|---|---|
| 股票 | 默认 | 完整的 16 个阶段 |
| 加密货币 | 符号以 `USDT`/`USD` 结尾 | 减少到 5 个评分维度 |
| ETF | `isEtf=true` | 基金持仓 + 板块权重代替财务数据 |
| ADR | `isAdr=true` | 添加外汇风险评估 |
| OTC | 粉单交易所 | 警告数据有限,阻止交易 |
### 无跳过政策
每个分析步骤都以三种状态之一结束 - 静默跳过是流程违规:
- **已完成** - 成功运行且有数据
- **失败** - 尝试但出错(记录原因)
- **不适用** - 不适用于此资产类型(记录理由)
在最终输出之前运行完成审计,例如:
```
Pipeline: PASS | Phases: 4/4 complete | Overrides: 8/8 evaluated | Data: 95%
```
---
## 关注列表
默认关注列表位于 `examples/watchlist.csv`。要自定义:
- **插件用户:** 在启动 claude 的目录中创建 `watchlist.csv`。命令首先查找此处。
- **想编辑默认值:** 从 `~/.claude/plugins/marketplaces/srivardhanjalan/trading-desk/examples/watchlist.csv` 复制到您的工作目录。
默认关注列表(23 支股票):
```
ALMU, AMD, AMPX, ASX, BBAI, BE, CDNS, CRDO, FIX, FLTCF, GEV,
INFQ, KGS, KLTR, LAW, NOK, NOW, NVT, OTLK, PLTR, RBLX, SATS, VXRT
```
`examples/rules.json` 包含风险/策略参数(最大仓位大小,止损阈值)。相同的覆盖模式:在工作目录中放置一个 `rules.json` 即可覆盖默认值。
---
## 每日自动化(可选)
`scripts/daily-analysis.sh` 通过 `claude -p`(无头模式)对 `watchlist.csv` 中的每支股票运行 `/trading-desk:analyze`,并带有:
- TradingView 桌面版使用 CDP 自动启动以获取图表截图
- 检查并在需要时重启 FMP 服务器
- 每股票预算上限( `--max-budget-usd 8` )
- 从每次运行中提取综合评分 + 信号
- Sonnet 在结尾生成每日总结报告
**前提条件:** 插件必须 **全局安装** (`/plugin install trading-desk@srivardhanjalan`)。脚本验证这一点,如果未安装,则会报错 - 使用 `--plugin-dir` 进行无头模式会增加 MCP 前缀转换开销,这是无人值守自动化中不需要的。
**通过 macOS launchd 调度(每天凌晨 12:15 AM,补齐错过的运行):**
```bash
cp scripts/com.tradingdesk.daily-analysis.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.tradingdesk.daily-analysis.plist
```
**日志:** `reports/logs/analysis_YYYY-MM-DD.log`
**卸载:**
```bash
launchctl unload ~/Library/LaunchAgents/com.tradingdesk.daily-analysis.plist
rm ~/Library/LaunchAgents/com.tradingdesk.daily-analysis.plist
```
---
## MCP 服务器
| 服务器 | 类型 | 生命周期 | 功能 |
|---|---|---|---|
| [TradingView 桌面版](https://github.com/tradesdontlie/tradingview-mcp) | stdio(Node,通过包装器) | 由 Claude 每个会话启动 | 图表控制,Pine 脚本,截图,订单簿。 如果 `TD_TV_ENABLED=true`,SessionStart 钩子启动应用。 |
| [TradingView 分析](https://pypi.org/project/tradingview-mcp-server/) | stdio(uvx) | 由 Claude 每个会话启动 | 筛选器,多时间框架分析,蜡烛模式,回测 |
| [Financial Modeling Prep](https://github.com/imbenrabi/Financial-Modeling-Prep-MCP-Server) | HTTP `:8080` | 长时间运行(由设置技能启动) | 基本面,DCF,收益,内部人员,宏观经济 |
| [Alpaca](https://pypi.org/project/alpaca-mcp-server/) | stdio(uvx 通过包装器) | 由 Claude 每个会话启动 | 虚拟交易,期权,投资组合,市场数据 |
**Alpaca 包装器:** 插件的 `.mcp.json` 调用 `${CLAUDE_PLUGIN_ROOT}/bin/launch-alpaca.sh` 而不是直接调用 `uvx alpaca-mcp-server`。包装器在 MCP 启动时加载 `~/workspace/secrets/trading-desk/.env`,因此您的密钥被加载而无需在 shell 中 `source .env`。
**TradingView 包装器:** `${CLAUDE_PLUGIN_ROOT}/bin/launch-tradingview.sh` 执行实际的 TV MCP 服务器(如果您安装了它),否则对 MCP 协议的响应为空工具列表 - 因此未跳过 TV 桌面版的用户永远不会看到启动错误。 TV 桌面版阶段在 `/trading-desk:analyze` 中会将其标记为 N/A,如果没有可用的工具。
**TradingView SessionStart 钩子:** `${CLAUDE_PLUGIN_ROOT}/bin/ensure-tv-desktop.sh` 在每次 claude 会话启动时运行。如果您的 `.env` 中 `TD_TV_ENABLED=true` 且为 macOS,它会启动 TradingView 桌面版应用程序并启用 `--remote-debugging-port=9222` - 无需手动 `open -a TradingView` 步骤。启用后,异步,静默不操作,如果禁用。
### 已知问题:FMP 会话竞争
某些 FMP 工具(`getFinancialStatementFullAsReported`,`calculateCustomDCF)偶尔会遇到“找不到会话”的问题。管道通过在并行批处理完成后顺序调用这些工具来处理此问题,并对会话错误进行一次重试。
---
## 故障排除
### `Plugin errors: financial-modeling-prep skipped — 相同命令/URL`
您有一个与插件冲突的重复 MCP 配置。可能来源:
### 插件错误:财务模型准备被跳过 - 相同的命令/URL
您有一个重复的MCP配置,与插件冲突。可能来源:
- `~/.claude/.mcp.json`(用户级)- 来自以前的手动设置
- `<repo>/.mcp.json`(项目级)- 交易桌面存储库自己的遗留文件 `setup.sh`
**修复:** 重新运行 `/trading-desk:setup` - 步骤 0 自动检测并备份冲突文件。或手动:
```bash
mv ~/.claude/.mcp.json ~/.claude/.mcp.json.preplugin.bak
# 如果在 trading-desk 仓库中 cd'd:
mv .mcp.json .mcp.json.preplugin.bak
```
然后退出并重启 claude。
### 命令不出现在自动补全中
- 确认 `/plugin` 显示 `trading-desk@srivardhanjalan` 已启用
- 重启 claude - 插件命令在会话启动时加载
### MCP 服务器报告 `401`/`403`(身份验证失败)
包装器脚本需要 `~/workspace/secrets/trading-desk/.env` 存在有效的密钥。检查:
```bash
ls -l ~/workspace/secrets/trading-desk/.env
head ~/workspace/secrets/trading-desk/.env # 应该显示 `export ...` 行
```
如果文件丢失或错误,请重新运行 `/trading-desk:setup`。
### `Hook load failed: expected record, received undefined`(FSI 插件)
与交易桌面无关 - 这是 Anthropic 的 `financial-services-plugins` 中的一个错误(它们的 `hooks.json` 被发送为 `[]` 而不是 `{}`)。设置技能在第一次运行期间自动修补此问题。要手动修补:
```bash
python3 -c "
import json, os, glob
for root in [os.path.expanduser(p) for p in [
'~/.claude/plugins/marketplaces/financial-services-plugins',
'~/.claude/plugins/cache/financial-services-plugins']]:
for path in glob.glob(f'{root}/**/hooks.json', recursive=True):
try:
d = json.load(open(path))
if isinstance(d, list) or (isinstance(d, dict) and 'hooks' not in d):
json.dump({'hooks': {}}, open(path, 'w'))
print('patched', path)
except: pass
"
```
补丁在 FSI 的 `/plugin update` 上恢复 - 在 https://github.com/anthropics/financial-services-plugins 提交问题以获取永久修复。
### FMP 调用中的 `"Session not found or expired"`
FMP MCP 竞争条件已知。管道自动重试;瞬时错误是正常的,不会破坏分析。
### 调用某些 FMP 调用时出现 `"402 Payment Required"`
一些小盘股/OTC 股票超出了 FMP 的免费层。管道优雅地处理这一点 - 可用的维度得分,其余的以标准化权重标记为 N/A。
### TradingView 桌面工具失败
首先打开 TradingView 桌面应用程序,并启用 CDP(每日脚本处理此操作;对于交互式使用,请使用 `--remote-debugging-port=9222` 启动)。它是可选的 - 分析功能无需 TradingView 桌面版即可正常工作。
### 速率限制错误
FMP 免费层每天大约有 250 次调用。完整的 `/analyze` 使用约 35-36 次调用。或者,升级 FMP,跨天分布请求,或坚持使用 `/portfolio`/`/morning-brief`(触摸较轻)。参考预算:
| 操作 | FMP 调用 |
|---|---:|
| 1 个完整的 `/trading-desk:analyze` | 35–36 |
| 第二支股票(缓存会话) | 29–30 |
| `/scan watchlist`(23 支股票) | 约 164 |
| `/morning-brief` | 25 |
### 每日自动化未运行
检查 load 列表是否已加载:`launchctl list | grep tradingdesk`。查看 `reports/logs/analysis_YYYY-MM-DD.log` 中的错误。最常见的原因是插件未全局安装 - 脚本会说明这一点并退出。
---
## 替代安装:克隆并运行(开发人员)
如果您想在不通过 `/plugin install` 的情况下本地测试命令:
```bash
git clone https://github.com/srivardhanjalan/trading-desk.git
cd trading-desk
./setup.sh # 安装所有内容到 mcp-servers/,提示输入密钥
./start.sh # 在 :8080 上启动 FMP 服务器
claude # 从此目录打开
```
这会生成一个项目本地的 `.mcp.json` 并将 MCP 服务器克隆到 `mcp-servers/`。斜杠命令相同 - `/trading-desk:analyze AMD` 等 - 但命令从 `<repo>/trading-desk/commands/`(插件源)解析,因此任何编辑都会立即生效,无需 `/plugin update`。
注意:如果您也全局安装了插件,项目级 `.mcp.json` 将冲突 - 选择一个路径或删除另一个配置。
---
## 项目结构
```
trading-desk/ # 仓库 = 市场
├── .claude-plugin/marketplace.json # 市场名称:srivardhanjalan
│
├── trading-desk/ # 插件 — 名称:trading-desk
│ ├── .claude-plugin/plugin.json
│ ├── .mcp.json # 4 MCPs,${ENV_VAR} + ${CLAUDE_PLUGIN_ROOT} 替换
│ ├── bin/
│ │ ├── launch-alpaca.sh # 来源 .env,执行 uvx alpaca-mcp-server
│ │ ├── launch-tradingview.sh # 执行 TV MCP(如果安装),否则无操作 MCP 服务器
│ │ └── ensure-tv-desktop.sh # 会话启动钩子:自动启动 TV 应用(如果 TD_TV_ENABLED=true)
│ ├── hooks/hooks.json # 会话启动钩子连接(ensure-tv-desktop.sh)
│ ├── commands/ # 11 /trading-desk:* 斜杠命令
│ ├── lib/ # 参考文档(通过 ${CLAUDE_PLUGIN_ROOT}/lib 加载)
│ │ ├── scoring-rubrics.md
│ │ ├── asset-classifier.md
│ │ ├── error-handling.md
│ │ ├── output-formats.md
│ │ ├── no-skip-policy.md
│ │ └── analysis-checklist.md
│ └── skills/setup/SKILL.md # /trading-desk:setup — 首次运行引导(包括 TV 的 brew 安装)
│
├── scripts/ # 每日自动化(使用全局安装的插件)
│ ├── daily-analysis.sh
│ └── com.tradingdesk.daily-analysis.plist # macOS launchd 调度
├── examples/ # 用户可覆盖的模板
│ ├── watchlist.csv
│ └── rules.json
├── reports/ # 分析输出(gitignored,cwd-relative)
├── setup.sh, start.sh # 传统克隆和运行路径
├── .env.example # API 密钥模板(使用 `export` 前缀)
└── .gitignore
```
仓库结构为 **市场**,目前只有一个插件。未来插件(例如 `trading-desk-hooks`,其他技能包)将作为 `trading-desk/` 的兄弟目录,并添加到 `marketplace.json` 中。
---
## 架构(一屏)
- **单对话编排** — `/trading-desk:analyze` 在一个 Claude Code 对话中运行所有 16 个阶段,阶段结果保存到 `reports/`,以便合成步骤在上下文压缩时存活。
- **插件前缀 MCP 工具** — Claude 看到 `mcp__plugin_trading-desk_alpaca__*` 等,因此命令通过其完全限定的名称引用工具,并且永远不会与其他插件冲突。
- **`.env` 在安装目录之外** — 密钥位于 `~/workspace/secrets/trading-desk/.env`,不受 `/plugin update` 影响。
- **包装脚本凭证** — Alpaca MCP 通过 `bin/launch-alpaca.sh` 启动,该脚本会获取 `.env`。不会出现“您是否记得获取 X?”的故障模式。
- **双轨估值** — 价值股票使用 DCF + 场景分析,成长股票使用 PEG(通过收入增长 + 市盈率门控自动检测)。
- **渐进覆盖** — 覆盖不是二进制上限;严重性等级(RSI 78 → 警告,RSI 88 → 阻止)。
- **无跳过强制执行** — 每个步骤都必须完成,失败并带有原因,或标记为 N/A 并有理由。无声跳过会触发管道违规。
- **完成审计** — 预输出验证检查所有阶段、所有 8 个安全覆盖和数据覆盖,然后再向您提供任何建议。
---
## 许可证
MIT — 请参阅提交历史以了解贡献者。
有关 Claude Code 插件文档:[code.claude.com/docs/zh/plugins.md](https://code.claude.com/docs/zh/plugins.md)
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器