# Portfolio Attribution Assistant

> 当用户需要对基金、组合、账户或策略进行收益归因分析时使用本技能，尤其适用于需要拆解总收益来源、 识别行业配置贡献、个券选择贡献、风格因子贡献、仓位变化影响、相对基准超额来源、阶段性胜负手的场景。 当用户提到“组合归因”“收益归因”“超额收益拆解”“行业贡献”“选股贡献”“配置贡献”“Brinson归因” “行业数据支持”“基金组合分析”“相对基准表现解释”等需求时，应优先调用本技能。 本技能特别适用于公募基金、专户组合、研究组合、策略回测结果的归因分析，且在存在较完整行业分类、行业收益、 基准权重、组合持仓权重和价格/收益数据时效果最佳。

- Skill: `aifinlab/portfolio-attribution-assistant` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add aifinlab/portfolio-attribution-assistant`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aifinlab/portfolio-attribution-assistant/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: aifinlab (https://skillmd.com/u/aifinlab)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/aifinlab/portfolio-attribution-assistant

---


# 技能概述

本技能用于支持基金与投资组合的收益归因分析，帮助使用者回答“收益从哪里来、超额从哪里来、哪些行业和个券贡献最大、
业绩是否来自可持续能力还是阶段性暴露”这类问题。

本技能特别强调**行业数据支撑**。在基金投研分析场景中，行业维度常常是最重要的中观归因层。若缺少统一行业分类、
行业收益序列、行业基准权重或组合穿透持仓，则归因解释力度会明显下降。输出时必须明确说明：哪些结论是强证据，
哪些只是弱推断，哪些仍需补充数据验证。

# 适用范围

- 基金产品收益归因
- 组合相对基准超额收益归因
- 行业配置贡献与选股贡献分析
- 风格与因子暴露解释
- 阶段性收益来源拆解
- 组合经理复盘、路演材料、投委会分析、业绩解释

# 不适用范围

- 缺少最基本收益序列和持仓信息，无法形成有效归因框架
- 用户要求给出确定性的投资建议或未来收益承诺
- 仅凭单一时点持仓就要求做高可信动态归因，且没有区间交易/估算规则
- 数据口径严重冲突且无法校准时，不应给出看似精确的结论

# 输入要求

优先级从高到低如下：

1. 组合区间收益、基准区间收益
2. 组合区间持仓权重或多个观察点持仓
3. 基准成分及权重
4. 统一行业分类映射表
5. 行业区间收益数据
6. 个券区间收益数据
7. 风格因子暴露或风格标签
8. 换手、仓位、现金比例等辅助数据

若缺少行业数据，必须在结果中显式标注：

- 行业配置贡献只能粗略估计
- 行业内选股贡献可信度下降
- 归因结果更适合作为解释性草案，而非正式投研结论

# 核心任务

1. 建立归因口径
   - 明确分析对象、比较基准、分析区间、收益口径、行业分类口径
2. 拆分总收益来源
   - 组合总收益、基准收益、超额收益
3. 拆解行业归因
   - 行业配置贡献、行业内选股贡献、交互项或残差项
4. 识别关键贡献项
   - 贡献最大的行业、拖累最大的行业、贡献最大的个券、拖累最大的个券
5. 识别风格与结构特征
   - 大小盘、成长价值、周期消费、科技红利、防御风格等
6. 输出业务可读结论
   - 用管理层、基金经理、研究员都能快速理解的方式总结

# 推荐工作流

## 第一步：确认归因框架

优先采用以下层级：

- 总收益归因
- 资产层归因（若有股票/债券/现金/衍生品）
- 行业层归因
- 个券层归因
- 风格层归因

若数据较全，可使用经典的配置/选股拆解思路；若数据不全，可采用简化解释框架，但必须说明简化假设。

## 第二步：统一数据口径

必须检查以下问题：

- 组合和基准是否使用同一分析区间
- 行业分类是否统一
- 收益率是否采用同一复权口径
- 持仓权重是期初、期末、均值还是估算均值
- 个券是否存在停牌、退市、复权异常
- 港股、美股、ETF、可转债等是否单独归类

## 第三步：进行行业归因

在行业数据较完整时，至少输出：

- 各行业组合权重与基准权重差异
- 各行业区间收益
- 行业配置贡献
- 行业内选股贡献
- 行业总贡献排序

## 第四步：进行个券与风格补充解释

对贡献靠前和拖累靠前的个券进行解释，结合风格暴露补充回答：

- 组合赚钱主要靠哪些个股/主题/风格
- 超额是否集中于少数行业或少数个券
- 业绩是否存在较强偶然性或集中度风险

## 第五步：形成结论与建议

输出时至少回答：

- 组合收益和超额收益主要来自哪里
- 最重要的行业贡献项是什么
- 最重要的个券贡献项是什么
- 当前业绩解释中最有说服力的数据证据是什么
- 当前分析最明显的数据缺口是什么
- 下一步还应补充哪些行业数据或估值数据

# 输出要求

最终输出应尽量包含以下模块：

1. 执行摘要
2. 归因口径说明
3. 收益总览
4. 行业归因结果
5. 个券贡献结果
6. 风格暴露与结构特征
7. 主要正向贡献与负向拖累
8. 风险提示与数据缺口
9. 后续跟踪建议

# 风险与合规边界

- 不得将归因结果表述为未来收益保证
- 不得在证据不足时把相关性解释成稳定能力
- 不得在行业分类口径冲突时硬性输出精细行业结论
- 对估算口径必须显式披露
- 当行业数据不足时，必须降低结论强度

# 文件使用说明

- 详细业务规则：见 `references/attribution_methodology.md`
- 行业数据要求：见 `references/industry_data_requirements.md`
- 常见问题与红旗：见 `references/common_risks_and_pitfalls.md`
- 输出结构：见 `references/output_schema.md`
- 报告模板：见 `assets/templates/portfolio_attribution_report_template.md`
- 数据缺口提示模板：见 `assets/templates/data_gap_notice_template.md`

# 脚本说明

- `scripts/industry_weight_mapper.py`：将持仓映射到行业并汇总行业权重
- `scripts/brinson_attribution.py`：执行简化版行业配置/选股归因
- `scripts/render_attribution_report.py`：将归因结果渲染为中文 Markdown 报告

# 成功标准

本技能的高质量输出应满足以下要求：

- 能清楚解释收益和超额收益的来源
- 行业层结论可核验、可复述、可追踪
- 能明确指出结论依赖了哪些关键行业数据
- 在数据不足时不会假装精确
- 能直接服务于基金复盘、投研会议和对内汇报

