mcpField
P
portfolio-manager

portfolio-manager

github.com/mphinance其他3293 次安装3 天前更新
代码仓库

关于 portfolio-manager

Portfolio Manager 是一项投资组合分析技能,通过 Alpaca MCP Server 获取持仓和账户数据。它引导用户检查资产配置、分散度、风险、个股和表现,提出再平衡建议并生成 Markdown 报告。

主要功能

  1. 01获取账户和持仓数据
  2. 02检查配置与分散度
  3. 03评估组合及个股风险
  4. 04分析回报和个别持仓
  5. 05提出再平衡操作建议
  6. 06生成 Markdown 报告

适用场景

  1. 01审查当前投资组合持仓
  2. 02识别集中度和配置风险
  3. 03评估个股表现与风险
  4. 04规划投资组合再平衡

MCP 相关

它通过 Alpaca MCP Server 工具获取账户详情、当前持仓、组合历史和市场数据以供分析。技能也说明可使用具备只读访问能力的经纪商连接。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mphinance/alpha-skills --skill portfolio-manager

安装后在 Claude Code 中输入/portfolio-manager确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
references/
alpaca-mcp-setup.md
asset-allocation.md
diversification-principles.md
portfolio-risk-metrics.md
position-evaluation.md
rebalancing-strategies.md
risk-profile-questionnaire.md
target-allocations.md
scripts/
check_alpaca_connection.py
scripts/tests/
conftest.py

详细介绍

投资组合管理器

概述

通过集成 Alpaca MCP Server 获取实时持仓数据,分析和管理投资组合,并进行全面分析,涵盖资产配置、分散化、风险指标、个别持仓评估和再平衡建议。生成包含可执行见解的详细投资组合报告。

此技能通过 MCP(Model Context Protocol)调用 Alpaca 的经纪 API 来访问实时投资组合数据,确保分析基于实际的当前持仓,而非手动输入的数据。

使用时机

在用户提出以下请求时调用此技能:

  • “分析我的投资组合”
  • “查看我当前的持仓”
  • “我的资产配置是什么?”
  • “检查我的投资组合风险”
  • “我应该对投资组合进行再平衡吗?”
  • “评估我的持仓”
  • “查看投资组合表现”
  • “我应该买入或卖出哪些股票?”
  • 任何涉及投资组合层面分析或管理的请求

前提条件

Alpaca MCP Server 设置

此技能需要配置并连接 Alpaca MCP Server。MCP Server 提供以下访问能力:

  • 当前投资组合持仓
  • 账户净值和购买力
  • 历史持仓和交易
  • 持仓证券的市场数据

使用的 MCP Server 工具:

  • get_account_info - 获取账户净值、购买力和现金余额
  • get_positions - 获取所有当前持仓及其数量、成本基础和市值
  • get_portfolio_history - 历史投资组合表现数据
  • 用于获取报价和基本面的市场数据工具

如果未连接 Alpaca MCP Server,请告知用户,并提供 references/alpaca_mcp_setup.md 中的设置说明。

未使用 Alpaca? 此技能只需要持仓的读取权限,因此任何支持读取的经纪商或聚合器都可以使用。请参阅 awesome-broker-mcp 中的 Alpaca 了解此连接器,或使用 broker-mcp-selector 技能来 选择只读方式(例如 SnapTrade 或 Truthifi), 以访问 Alpaca 未覆盖的账户。进行分析时,优先使用只读连接 — 此技能从不需要交易权限。

工作流

步骤 1:通过 Alpaca MCP 获取投资组合数据

使用 Alpaca MCP Server 工具收集当前投资组合信息:

1.1 获取账户信息:

Use mcp__alpaca__get_account_info to fetch:
- Account equity (total portfolio value)
- Cash balance
- Buying power
- Account status

1.2 获取当前持仓:

Use mcp__alpaca__get_positions to fetch all holdings:
- Symbol ticker
- Quantity held
- Average entry price (cost basis)
- Current market price
- Current market value
- Unrealized P&L ($ and %)
- Position size as % of portfolio

1.3 获取投资组合历史(可选):

Use mcp__alpaca__get_portfolio_history for performance analysis:
- Historical equity values
- Time-weighted return calculation
- Drawdown analysis

数据验证:

  • 验证所有持仓都具有有效的股票代码
  • 确认市值总和与账户净值大致相符
  • 检查是否存在过时或不活跃的持仓
  • 处理特殊情况(碎股、期权、加密货币,若受支持)
步骤 2:补充持仓数据

针对投资组合中的每项持仓,收集更多市场数据和基本面信息:

2.1 当前市场数据:

  • 实时或延迟报价
  • 日交易量和流动性指标
  • 52 周价格区间
  • 市值

2.2 基本面数据: 使用 WebSearch 或可用的市场数据 API 获取:

  • 行业和细分行业分类
  • 关键估值指标(市盈率、市净率、股息率)
  • 近期财报和财务健康指标
  • 分析师评级和目标价
  • 近期新闻和重大进展

2.3 技术分析:

  • 价格趋势(20 日、50 日、200 日移动平均线)
  • 相对强度
  • 支撑位和阻力位
  • 动量指标(如可用,包括 RSI、MACD)
步骤 3:投资组合层面分析

使用参考文件中的框架对投资组合进行全面分析:

3.1 资产配置分析

阅读 references/asset-allocation.md,了解资产配置框架

从多个维度分析当前配置:

按资产类别:

  • 股票 vs 固定收益 vs 现金 vs 另类资产
  • 与用户风险承受能力对应的目标配置进行比较
  • 评估配置是否符合投资目标

按行业:

  • 科技、医疗保健、金融、消费等
  • 识别行业集中风险
  • 与基准行业权重进行比较(例如,S&P 500)

按市值:

  • 大盘股 vs 中盘股 vs 小盘股的分布
  • 超大型股的集中度
  • 市值多元化评分

按地理区域:

  • 美国 vs 国际市场 vs 新兴市场
  • 评估国内市场集中风险

输出格式:

## Asset Allocation

### Current Allocation vs Target
| Asset Class | Current | Target | Variance |
|-------------|---------|--------|----------|
| US Equities | XX.X% | YY.Y% | +/- Z.Z% |
| ... |

### Sector Breakdown
[Pie chart description or table with sector percentages]

### Top 10 Holdings
| Rank | Symbol | % of Portfolio | Sector |
|------|--------|----------------|--------|
| 1 | AAPL | X.X% | Technology |
| ... |
3.2 多元化分析

阅读 references/diversification-principles.md,了解多元化理论

评估投资组合的多元化质量:

持仓集中度:

  • 识别主要持仓及其合计权重
  • 如果任何单一持仓占投资组合的比例超过 10-15%,则予以标记
  • 计算赫芬达尔-赫希曼指数(HHI)以衡量集中度

行业集中度:

  • 识别占主导地位的行业
  • 如果任何行业占投资组合的比例超过 30-40%,则予以标记
  • 与基准行业多元化程度进行比较

相关性分析:

  • 估算主要持仓之间的相关性
  • 识别高度相关的持仓(可能存在冗余)
  • 评估实际的多元化收益

持仓数量:

  • 最佳范围:个人投资组合中持有 15-30 只股票
  • 如果多元化不足(少于 10 只股票)或多元化过度(超过 50 只股票),则予以标记

输出:

## Diversification Assessment

**Concentration Risk:** [Low / Medium / High]
- Top 5 holdings represent XX% of portfolio
- Largest single position: [SYMBOL] at XX%

**Sector Diversification:** [Excellent / Good / Fair / Poor]
- Dominant sector: [Sector Name] at XX%
- [Assessment of balance across sectors]

**Position Count:** [Optimal / Under-diversified / Over-diversified]
- Total positions: XX stocks
- [Recommendation]

**Correlation Concerns:**
- [List any highly correlated position pairs]
- [Diversification improvement suggestions]
3.3 风险分析

阅读 references/portfolio-risk-metrics.md,了解风险度量框架

计算并解读关键风险指标:

波动率指标:

  • 估算投资组合贝塔值(持仓贝塔值的加权平均)
  • 单个持仓的波动率
  • 投资组合标准差(如有历史数据)

下行风险:

  • 最大回撤(根据投资组合历史数据)
  • 当前相对于峰值的回撤
  • 存在较大未实现亏损的持仓

风险集中度:

  • 高波动率股票(贝塔值 > 1.5)的占比
  • 投机性/未盈利公司的占比
  • 杠杆使用情况(如适用)

尾部风险:

  • 面临潜在黑天鹅事件的风险敞口
  • 单只股票集中风险
  • 特定行业事件风险

输出:

## Risk Assessment

**Overall Risk Profile:** [Conservative / Moderate / Aggressive]

**Portfolio Beta:** X.XX (vs market at 1.00)
- Interpretation: Portfolio is [more/less] volatile than market

**Maximum Drawdown:** -XX.X% (from $XXX,XXX to $XXX,XXX)
- Current drawdown from peak: -XX.X%

**High-Risk Positions:**
| Symbol | % of Portfolio | Beta | Risk Factor |
|--------|----------------|------|-------------|
| [TICKER] | XX% | X.XX | [High volatility / Recent loss / etc] |

**Risk Concentrations:**
- XX% in single sector ([Sector])
- XX% in stocks with beta > 1.5
- [Other concentration risks]

**Risk Score:** XX/100 ([Low/Medium/High] risk)
3.4 绩效分析

使用可用数据评估投资组合绩效:

绝对收益:

  • 投资组合整体未实现盈亏(美元金额和百分比)
  • 表现最佳的持仓(按涨幅百分比排名前 5)
  • 表现最差的持仓(按跌幅百分比排名后 5)

时间加权收益(如有历史数据):

  • 年初至今收益
  • 1 年、3 年、5 年年化收益
  • 与基准(S&P 500、相关指数)进行比较

持仓层面绩效:

  • 盈利持仓与亏损持仓的比例
  • 盈利持仓的平均涨幅
  • 亏损持仓的平均跌幅
  • 接近 52 周高点/低点的持仓

输出:

## Performance Review

**Total Portfolio Value:** $XXX,XXX
**Total Unrealized P&L:** $XX,XXX (+XX.X%)
**Cash Balance:** $XX,XXX (XX% of portfolio)

**Best Performers:**
| Symbol | Gain | Position Value |
|--------|------|----------------|
| [TICKER] | +XX.X% | $XX,XXX |
| ... |

**Worst Performers:**
| Symbol | Loss | Position Value |
|--------|------|----------------|
| [TICKER] | -XX.X% | $XX,XXX |
| ... |

**Performance vs Benchmark (if available):**
- Portfolio return: +X.X%
- S&P 500 return: +Y.Y%
- Alpha: +/- Z.Z%
步骤 4:个股分析

针对关键持仓(按投资组合权重排名前 10–15),进行详细分析:

阅读 references/position-evaluation.md,了解持仓分析框架

针对每项重要持仓:

4.1 验证当前投资逻辑:

  • 为什么建立该持仓?(如用户上下文中有相关信息)
  • 投资逻辑是否已经兑现或失效?
  • 公司近期发展和新闻

4.2 估值评估:

  • 当前估值指标(P/E、P/B 等)
  • 与历史估值区间比较
  • 与同行业公司比较
  • 评估为高估 / 合理 / 低估

4.3 技术面状况:

  • 价格趋势(上升、下降、横盘)
  • 股价相对于移动平均线的位置
  • 支撑位和阻力位
  • 动能状况

4.4 持仓规模:

  • 当前占投资组合的权重
  • 根据投资确信度和风险,持仓规模是否合适?
  • 相对于最优配置是超配还是低配

4.5 操作建议:

  • 持有(HOLD) - 持仓规模合适,且投资逻辑依然成立
  • 加仓(ADD) - 鉴于投资机会目前配置不足,且投资逻辑正在增强
  • 减仓(TRIM) - 配置过高或估值偏高
  • 卖出(SELL) - 投资逻辑失效,其他机会更好

每项持仓的输出:

### [SYMBOL] - [Company Name] (XX.X% of portfolio)

**Position Details:**
- Shares: XXX
- Avg Cost: $XX.XX
- Current Price: $XX.XX
- Market Value: $XX,XXX
- Unrealized P/L: $X,XXX (+XX.X%)

**Fundamental Snapshot:**
- Sector: [Sector]
- Market Cap: $XX.XB
- P/E: XX.X | Dividend Yield: X.X%
- Recent developments: [Key news or earnings]

**Technical Status:**
- Trend: [Uptrend / Downtrend / Sideways]
- Price vs 50-day MA: [Above/Below by XX%]
- Support: $XX.XX | Resistance: $XX.XX

**Position Assessment:**
- **Thesis Status:** [Intact / Weakening / Broken / Strengthening]
- **Valuation:** [Undervalued / Fair / Overvalued]
- **Position Sizing:** [Optimal / Overweight / Underweight]

**Recommendation:** [HOLD / ADD / TRIM / SELL]
**Rationale:** [1-2 sentence explanation]
步骤 5:再平衡建议

阅读 references/rebalancing-strategies.md,了解再平衡方法

生成具体的再平衡建议:

5.1 确定再平衡触发条件:

  • 持仓权重相对于目标权重显著偏离
  • 需要调整的行业 / 资产类别配置
  • 应减仓的超配持仓(超过阈值)
  • 应加仓的低配领域(低于阈值)
  • 税务因素(资本利得影响)

5.2 制定再平衡计划:

应减仓的持仓:

  • 超配持仓(偏离目标的幅度超过阈值)
  • 大幅上涨的股票(估值方面的担忧)
  • 占投资组合 15–20% 以上的集中持仓
  • 投资逻辑失效的持仓

应加仓的持仓:

  • 配置不足的行业或资产类别
  • 当前配置不足但投资确信度高的持仓
  • 有助于改善多元化的新机会

现金配置:

  • 如果存在过多现金(占投资组合超过 10%),建议部署资金
  • 根据投资机会和配置缺口确定优先顺序

5.3 排定优先级: 按优先级排列再平衡操作:

  1. 立即 - 降低风险(减持集中持仓)
  2. 高优先级 - 配置大幅偏离(较目标偏离超过 10%)
  3. 中优先级 - 配置中度偏离(较目标偏离 5–10%)
  4. 低优先级 - 微调和机会性调整

输出:

## Rebalancing Recommendations

### Summary
- **Rebalancing Needed:** [Yes / No / Optional]
- **Primary Reason:** [Concentration risk / Sector drift / Cash deployment / etc]
- **Estimated Trades:** X sell orders, Y buy orders

### Recommended Actions

#### HIGH PRIORITY: Risk Reduction
**TRIM [SYMBOL]** from XX% to YY% of portfolio
- **Shares to Sell:** XX shares (~$XX,XXX)
- **Rationale:** [Overweight / Valuation extended / etc]
- **Tax Impact:** $X,XXX capital gain (est)

#### MEDIUM PRIORITY: Asset Allocation
**ADD [Sector/Asset Class]** exposure
- **Target:** Increase from XX% to YY%
- **Suggested Stocks:** [SYMBOL1, SYMBOL2, SYMBOL3]
- **Amount to Invest:** ~$XX,XXX

#### CASH DEPLOYMENT
**Current Cash:** $XX,XXX (XX% of portfolio)
- **Recommendation:** [Deploy / Keep for opportunities / Reduce to X%]
- **Suggested Allocation:** [Distribution across sectors/stocks]

### Implementation Plan
1. [First action - highest priority]
2. [Second action]
3. [Third action]
...

**Timing Considerations:**
- [Tax year-end planning / Earnings season / Market conditions]
- [Suggested phasing if applicable]
步骤 6:生成投资组合报告

创建完整的 Markdown 报告,并保存到仓库根目录:

文件名: portfolio_analysis_YYYY-MM-DD.md

报告结构:

# Portfolio Analysis Report

**Account:** [Account type if available]
**Report Date:** YYYY-MM-DD
**Portfolio Value:** $XXX,XXX
**Total P&L:** $XX,XXX (+XX.X%)

---

## Executive Summary

[3-5 bullet points summarizing key findings]
- Overall portfolio health assessment
- Major strengths
- Key risks or concerns
- Primary recommendations

---

## Holdings Overview

[Summary table of all positions]

---

## Asset Allocation
[Section from Step 3.1]

---

## Diversification Analysis
[Section from Step 3.2]

---

## Risk Assessment
[Section from Step 3.3]

---

## Performance Review
[Section from Step 3.4]

---

## Position Analysis
[Detailed analysis of top 10-15 positions from Step 4]

---

## Rebalancing Recommendations
[Section from Step 5]

---

## Action Items

**Immediate Actions:**
- [ ] [Action 1]
- [ ] [Action 2]

**Medium-Term Actions:**
- [ ] [Action 3]
- [ ] [Action 4]

**Monitoring Priorities:**
- [ ] [Watch list item 1]
- [ ] [Watch list item 2]

---

## Appendix: Full Holdings

[Complete table with all positions and metrics]
步骤 7:交互式后续答疑

准备好回答后续问题:

常见问题:

“为什么我应该卖出 [SYMBOL]?”

  • 解释具体问题(估值、投资逻辑失效、持仓集中度)
  • 提供支持数据
  • 如适用,提供替代持仓

“我应该改买什么?”

  • 推荐有助于改善配置的具体股票
  • 说明这些股票如何弥补投资组合缺口
  • 简要说明投资逻辑

“我最大的风险是什么?”

  • 指出主要风险因素(持仓集中度、行业敞口、波动性)
  • 量化风险
  • 建议缓解策略

“我的投资组合与 [benchmark] 相比如何?”

  • 比较配置、行业权重和风险指标
  • 突出关键差异
  • 评估这些差异是否合理

“我应该现在再平衡,还是等等?”

  • 考虑市场状况、税务影响和交易成本
  • 提供时机建议及其理由

“你能更详细地分析 [specific position] 吗?”

  • 如有需要,使用 us-stock-analysis 技能进行深入分析
  • 将分析结果纳入投资组合整体背景

分析框架

目标配置模板

此技能包含适用于不同投资者画像的参考配置模型:

阅读 references/target-allocations.md,了解详细模型:

  • 保守型(保本,注重收入)
  • 稳健型(平衡增长与收入)
  • 成长型(长期资本增值)
  • 激进型(追求最大增长,风险承受能力高)

每种模型都包含:

  • 资产类别目标(股票/债券/现金/另类资产)
  • 行业指导原则
  • 市值分布
  • 地域配置
  • 持仓规模规则

当用户未指定配置策略时,可将这些模型用作比较基准。

风险画像评估

如果用户的目标配置未知,请根据以下信息评估合适的风险画像:

  • 年龄(如有提及)
  • 投资期限(如有提及)
  • 当前配置(反映偏好)
  • 持仓类型(保守型股票还是投机型股票)

阅读 references/risk-profile-questionnaire.md,了解评估框架

输出指南

语气和风格:

  • 客观且有分析性
  • 提供有明确理由、可付诸行动的建议
  • 承认市场预测存在不确定性
  • 在保持乐观的同时充分考虑风险
  • 尽可能量化

数据呈现:

  • 使用表格进行比较并展示指标
  • 使用百分比表示配置和回报
  • 使用金额表示绝对值
  • 在报告中保持格式一致

建议的清晰度:

  • 使用明确的行动动词(减持、增持、持有、卖出)
  • 指定具体数量(卖出 XX 股、增持 $X,XXX)
  • 标注优先级(立即、高、中、低)
  • 为每项建议提供支持理由

可视化描述:

  • 描述配置明细,如同绘制饼图
  • 使用相当于条形图的形式展示行业权重
  • 使用方向指示符展示业绩趋势(↑ ↓ →)

参考文件

根据分析需要加载以下参考资料:

references/alpaca-mcp-setup.md

  • 适用场景:用户需要帮助设置 Alpaca MCP 服务
  • 内容:安装说明、API 密钥配置、MCP 服务连接步骤、故障排除

references/asset-allocation.md

  • 适用场景:分析投资组合配置或制定再平衡计划
  • 内容:资产配置理论、按风险画像划分的最佳配置、行业配置指导原则、再平衡触发条件

references/diversification-principles.md

  • 适用场景:评估投资组合的分散化质量
  • 内容:现代投资组合理论基础、相关性概念、最佳持仓数量、集中度风险阈值、分散化指标

references/portfolio-risk-metrics.md

  • 适用场景:计算风险评分或解读波动率
  • 内容:贝塔计算、标准差、夏普比率、最大回撤、风险价值(VaR)、风险调整后回报指标

references/position-evaluation.md

  • 适用场景:分析单项持仓,决定买入/持有/卖出
  • 内容:持仓分析框架、投资逻辑验证清单、持仓规模指导原则、卖出纪律标准

references/rebalancing-strategies.md

  • 适用场景:制定再平衡建议
  • 内容:再平衡方法(日历型、阈值型、战术型)、税务优化策略、交易成本考量、执行时机

references/target-allocations.md

  • 适用场景:需要基准配置进行比较
  • 内容:适用于保守型/稳健型/成长型/激进型投资者的模型投资组合、行业目标区间、市值分布

references/risk-profile-questionnaire.md

  • 适用场景:用户未指定风险承受能力或目标配置
  • 内容:风险评估问题、评分方法、风险画像分类

错误处理

如果未连接 Alpaca MCP Server:

  1. 告知用户需要集成 Alpaca
  2. 提供 references/alpaca-mcp-setup.md 中的设置说明
  3. 提供替代方案:手动输入数据(不太理想,需用户提供持仓 CSV)

如果 API 返回的数据不完整:

  • 使用现有数据继续分析
  • 在报告中注明限制
  • 建议手动核实缺失的持仓

如果持仓数据似乎过时:

  • 标记此问题
  • 建议刷新连接或查看 Alpaca 状态
  • 继续分析,但注明结果可能存在偏差

如果用户没有持仓:

  • 确认其投资组合为空
  • 改为提供投资组合构建指导,而非分析
  • 建议使用 value-dividend-screener 或 us-stock-analysis 寻找股票投资思路

高级功能

税损收割机会

识别适合进行税损收割的未实现亏损持仓:

  • 亏损超过 5% 的持仓
  • 考虑持有期(避免触发洗售规则)
  • 建议替代证券(相似但并非实质上相同)
股息收入分析

针对持有派息股票的投资组合:

  • 估算年度股息收入
  • 股息增长率走势
  • 股息覆盖率和可持续性
  • 长期持仓的成本收益率
相关性矩阵

针对持有 5-20 个仓位的投资组合:

  • 估算主要持仓之间的相关性
  • 识别冗余持仓(相关性 >0.8)
  • 建议改进分散投资
情景分析

模拟投资组合在不同情景下的表现:

  • 牛市(股票升值 20%)
  • 熊市(股票下跌 20%)
  • 行业轮动(科技股走弱,价值股走强)
  • 利率上升(对成长股和债券的影响)

示例查询

基本投资组合评估:

  • “分析我的投资组合”
  • “评估我的持仓”
  • “我的投资组合表现如何?”

资产配置分析:

  • “我的资产配置是什么?”
  • “我的科技股仓位是否过于集中?”
  • “显示我的行业分布”

风险评估:

  • “我的投资组合风险是否过高?”
  • “我的投资组合 Beta 是多少?”
  • “我的主要风险是什么?”

再平衡:

  • “我应该再平衡吗?”
  • “我应该买入或卖出什么?”
  • “我该如何改善分散投资?”

表现:

  • “我表现最好和最差的持仓是什么?”
  • “与市场相比,我的表现如何?”
  • “哪些股票表现好,哪些表现差?”

特定持仓:

  • “我应该卖出 [SYMBOL] 吗?”
  • “[SYMBOL] 在我的投资组合中是否占比过高?”
  • “我应该如何处理 [SYMBOL]?”

限制与免责声明

在所有报告中加入:

本分析仅供参考,不构成财务建议。投资决策应根据个人情况、风险承受能力和财务目标做出。过往表现不代表未来结果。做出投资决策前,请咨询合格的财务顾问。

数据准确性取决于 Alpaca API 和第三方市场数据来源。请独立核实关键信息。税务影响仅为估算;如需具体指导,请咨询税务专业人士。

评论

支持 Markdown