9.9 案例二:投资组合月度报告
面向经管学生、研究者与从业者的 AI 智能体设计教材
场景:基金经理每月需要生成一份投资组合报告,涵盖持仓变动、收益归因和风险指标。数据分散在多个文件中——持仓明细、交易流水、基准指数。手动整合耗时且容易遗漏,适合用 Skill 编排成固定流程。
项目目录结构:
portfolio-report/
├── data/
│ ├── holdings.csv # 当期持仓明细
│ ├── transactions.csv # 本月交易流水
│ └── benchmark.csv # 基准指数数据
├── templates/
│ └── monthly-report.md # 报告模板
├── outputs/ # 生成的报告
├── .claude/
│ └── skills/
│ └── portfolio-monthly-report/
│ └── SKILL.md # 月报生成 Skill
└── CLAUDE.md核心 Skill 采用四步顺序编排,每一步的输出作为下一步的输入:
▶ Skill
---
name: portfolio-monthly-report
description: 当用户需要生成投资组合月度报告时使用。适用于持仓、交易和基准数据已就绪的场景。
allowed-tools: "Read Glob Write Bash(python3)"
---
## 执行步骤
### 第一步:数据完整性检查
读取 data/ 目录,确认以下文件存在且非空:
- holdings.csv(必须包含 ticker, shares, price 列)
- transactions.csv(必须包含 date, ticker, action, amount 列)
- benchmark.csv(必须包含 date, return 列)
任何文件缺失或格式不符,列出问题清单并停止。
### 第二步:收益归因计算
用 Python 计算以下指标:
- 组合总收益率与基准收益率
- 各持仓的收益贡献(权重 × 个股收益)
- 超额收益及前五大贡献个股
将计算结果写入 outputs/attribution.json。
### 第三步:风险指标汇总
用 Python 计算:
- 组合波动率(月度)
- 最大回撤
- Sharpe 比率(无风险利率取 2.5%)
- 持仓集中度(前十大持仓占比)
将结果追加到 outputs/attribution.json。
### 第四步:报告生成
读取 templates/monthly-report.md 模板,将第二步和第三步的数据填入对应位置,生成 outputs/monthly-report-{YYYY-MM}.md。
## 边界
- 不修改 data/ 目录下的原始数据文件。
- 不联网获取行情,只基于本地数据计算。
- 计算脚本不做投资建议,只输出客观指标。
用户在 Claude Code 中输入:
▶ Claude Code
data 目录里的三个 CSV 已经更新到 2025 年 2 月的数据了,帮我生成本月的投资组合报告。
Skill 会按四步依次执行:先校验数据完整性,再计算收益归因,然后汇总风险指标,最后填充模板生成完整报告。每一步都有明确的输入和输出,任何一步失败都不会跳过。
编排要点
这个 Skill 的关键设计在于第一步的数据校验。金融数据缺失或格式错误会导致后续计算全部失效,所以必须在入口处设置硬性检查点。这与案例一中资料缺失即停止的逻辑一致——先确认现场,再受控执行。