关于 performance-reporting
面向投资组合经理和绩效报告编制者的报告指南及计算脚本,涵盖收益、基准、风险、归因和目标进度。内容强调将指标放入适当背景,并以清晰语言向客户说明。
主要功能
- 01计算时间加权与资金加权收益
- 02生成标准期间收益及 GIPS 组合收益
- 03比较基准并分析主动收益
- 04汇总风险指标与投资归因
- 05追踪目标进度并规划图表
适用场景
- 01编制月度、季度或年度绩效报告
- 02评估经理表现及投资者实际收益
- 03解释投资组合相对基准的表现
- 04展示风险敞口和财务目标进度
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ joellewis/ finance_skills --skill performance-reporting安装后在 Claude Code 中输入/performance-reporting确认已加载。
附带文件scripts/performance_reporting.py
详细介绍
业绩报告 — 报告与沟通
核心概念
收益报告
准确、一致的收益计算是所有业绩报告的基础。
期间收益: 报告标准时间段——MTD(年初至今的当月)、QTD(年初至今的当季)、YTD(年初至今)、1Y、3Y、5Y、10Y 以及成立以来。务必注明确切的成立日期。
累计收益与年化收益: 仅对超过 1 年的期间计算年化收益。将 3 个月收益年化会造成误导,因为这暗示该收益率可以持续整整 1 年。对于不足 1 年的期间,仅报告累计(总)收益。
- 年化收益公式:
(1 + cumulative_return)^(1/years) - 1 - 对于多年期,务必同时列出累计收益和年化收益,以便读者了解总财富增长和复利增长率。
费前与费后收益: 务必说明收益是扣除管理费、咨询费和交易成本之前还是之后的。费后收益才是投资者实际获得的收益,应作为主要呈现内容。如果展示费前收益,也要列出费用造成的拖累。
GIPS(全球投资业绩标准): 对于机构报告,应遵循 GIPS 要求——组合构建、完整披露、经验证的计算以及标准化呈现。即使报告不符合 GIPS,公平呈现和完整披露的原则仍然适用。
时间加权收益与资金加权收益:
- 时间加权收益(TWR)剔除现金流的影响——用于评估投资经理的技能。
- 资金加权收益(MWR / IRR)反映投资者的实际体验,包括投入和提取资金的时机——用于评估投资者的结果。
计算引擎
scripts/performance_reporting.py 实现了这些报告所需的收益计算:
- 修正 Dietz 法(
ModifiedDietz): 通过根据每笔外部现金流在期间内投入的时间比例加权,近似计算 TWR:R = (V_end - V_start - sum(CF)) / (V_start + sum(w_i * CF_i)),其中 w_i = (D - d_i)/D。在无法进行每日估值时,这是 GIPS 可接受的近似方法。 - 真正的 TWR(
TimeWeightedReturn): 链接各个子期间的收益,prod(1 + r_t) - 1,并提供年化辅助函数,该函数会拒绝处理不足 1 年的期间。 - IRR / MWR(
MoneyWeightedReturn): 使用 Brent 求根法(scipy.optimize.brentq)在给定的区间内数值求解 NPV(rate) = 0,返回年化资金加权收益。 - GIPS 综合组合(
CompositeReturn): 使用期初资产价值作为权重计算资产加权综合收益,并提供等权收益,以及对于包含 6+ 个投资组合的综合组合,计算 GIPS 要求的资产加权内部离散度。 - 标准期间(
PeriodReturns): 根据每日收益序列计算 MTD / QTD / YTD 等滚动期间收益(1M 至 10Y)和成立以来收益,仅对 1 年或以上的期间进行年化。
基准比较
单独看一个收益率毫无意义。评估需要基准作为参照。
选择合适的基准: 基准必须与投资组合的投资风格、地域、资本规模和资产类别构成相匹配。美国大盘股投资组合应与 S&P 500 或 Russell 1000 比较,而不是与 MSCI Emerging Markets Index 比较。
- 对于多资产投资组合,应使用混合基准(例如,60% S&P 500 / 40% Bloomberg Aggregate)。
- 基准应具有可投资性——投资者本可以将资金投入该基准,作为被动投资的替代方案。
- 记录选择基准的理由,并随着时间推移保持一致,避免挑选对自己有利的基准。
主动收益(阿尔法): 投资组合收益减去基准收益。正阿尔法表示跑赢基准;负阿尔法表示跑输基准。
跟踪误差和信息比率: 有关定义和计算,请参阅 performance-metrics。在报告中,应将这些指标与主动收益一并呈现,以便读者判断超额表现是否稳定。
风险仪表板
除了收益报告,还应补充风险指标,以全面呈现情况。有关这些指标(波动率、VaR、回撤等)的定义和计算,请参阅 historical-risk。
当前快照指标:
- 年化波动率
- 最大回撤和当前回撤
- 置信水平为 95% 和 99% 的风险价值(VaR)
- 相对于基准的贝塔
滚动指标: 展示风险随时间的变化,而不只是某一时点的估算值。
- 12 个月滚动夏普比率
- 12 个月滚动波动率
- 36 个月滚动贝塔
- 滚动回撤图表
风险敞口细分:
- 行业集中度及相对于基准的权重
- 因子敞口(价值、成长、动量、质量、规模)
- 地域配置
- 久期和信用质量(针对固定收益)
归因摘要
解释投资组合跑赢或跑输的原因。
Brinson 归因(配置、选股、交互)和因子分解: 有关方法和公式,请参阅 performance-attribution。在报告中,用一句通俗易懂的话概括各项影响(例如,“行业配置贡献了 0.2%,选股贡献了 0.4%”)。
贡献最大的持仓/贡献最小的持仓:
- 列出对投资组合收益贡献最大和最小的 5 到 10 项持仓。
- 同时列出持仓收益,以及其对投资组合总收益的贡献(权重 × 收益)。
- 简要说明每项贡献最大或最小的持仓表现如此的原因。
目标进度跟踪
对于基于目标进行投资的投资者,应从实现特定目标的进度角度来解读业绩。
进度评估: 投资组合相对于财务计划是按计划推进、落后还是领先?
成功概率: 使用蒙特卡洛模拟,根据当前资产、储蓄率、时间跨度以及预期收益/风险假设,估算实现目标的概率。用百分比表示(例如,“65 岁退休时有 82% 的概率能够筹足所需资金”)。
预期收益与所需收益: 将实现目标所需的收益率与当前投资组合的预期收益率进行比较。如果所需收益率超出合理范围,应标示为规划缺口。
里程碑跟踪: 以目标资金到位百分比表示进度。例如:“退休目标:$2,000,000。当前投资组合:$850,000。已筹足 42.5%,剩余 15 年。”
可视化最佳实践
图表比表格更快地传达信息。请选择与所要表达的信息相匹配的图表。
10,000 美元增长图: 展示投资组合相对于基准随时间累积的财富增长。适合所有受众,直观易懂。对于较长时间段,请使用对数刻度,以避免复利造成视觉失真。
滚动收益率图: 展示随时间变化的过去 12 个月或 36 个月收益率。可揭示表现的一致性和市场状态变化。比单一的年化数字更有参考价值。
回撤图: 展示随时间变化的峰值到谷值的跌幅。它能以波动率数字无法做到的方式,直观地传达风险。
资产配置饼图/条形图: 展示当前配置与目标/基准配置。可使用分组条形图并排展示两者。
风险-收益散点图: 在年化收益率与年化波动率平面上绘制投资组合和基准(也可以包括同类组合)。左上角(高收益、低风险)的位置更理想。
报告频率与结构
- 月度简报: 1 页摘要——核心收益、基准比较、主要归因因素及任何值得注意的事件。
- 季度详细报告: 3-5 页——完整收益表、归因分析、风险仪表板、目标进度、市场评论和展望。
- 年度综合报告: 8-15 页——包含季度报告的所有内容,以及年度回顾、税务报告摘要、规划更新和 IPS 审查。
通俗易懂的沟通
报告中最重要的技能,是将数字转化为含义。
- 不要只写“投资组合年初至今的收益率为 8.1%”。还要补充背景:“投资组合年初至今的收益率为 8.1%,比基准高出 0.6 个百分点,主要得益于科技板块的股票选择表现强劲。”
- 说明相对于预期和计划而言,业绩表现是好是坏。
- 使用受众能够理解的类比和比较。
- 首次使用技术术语时进行定义,或附上术语表。
- 先给出结论,再为希望深入了解的人提供支持性细节。
示例
示例 1:季度业绩报告摘要
已知: 一个平衡型投资组合(60% 股票/40% 固定收益)在第三季度的收益率为 3.2%(基准:2.8%)。年初至今,投资组合收益率为 8.1%,基准为 7.5%。投资组合过去 12 个月的夏普比率为 0.85。科技板块的选股(+0.3%)和低配能源(-0.1%)是主要的业绩归因因素。
分析:
核心结论: 投资组合第三季度的表现比基准高出 0.4 个百分点,年初至今高出 0.6 个百分点,主要得益于科技板块的股票选择表现强劲。
收益摘要表:
| 期间 | 投资组合 | 基准 | 主动收益 |
|---|---|---|---|
| 第三季度 | +3.2% | +2.8% | +0.4% |
| 年初至今 | +8.1% | +7.5% | +0.6% |
归因要点:
- 科技股选股贡献了 +0.3%——这是超额表现中最大的单一驱动因素。
- 由于本季度能源价格上涨,低配能源拖累了 -0.1%。
- +0.4% 的净主动收益体现了严谨的自下而上证券选择。
风险背景:
- 过去 12 个月的夏普比率为 0.85,表明投资组合创造了可观的风险调整后超额收益。
- 投资组合波动率仍与基准持平,因此超额表现并非来自承担额外风险。
面向客户的通俗摘要:“您的投资组合本季度上涨了 3.2%,比基准高出约半个百分点。年初至今,您也以相近幅度领先于基准。主要驱动因素是我们挑选的科技股表现优于科技板块整体。相对于您的长期财务计划,我们仍按计划稳步推进。”
示例 2:目标进度 — 退休资金
已知: 客户的退休目标是按今天的币值计算的 2,000,000 美元。当前投资组合价值为 850,000 美元。时间跨度为 15 年。当前年度缴款为 30,000 美元(每年增加 3%)。投资组合的预期名义回报率为 7%,预期波动率为 12%。通胀假设为 2.5%。
分析:
当前状况:
- 目标:2,000,000 美元(按今天的币值计算)
- 当前资产:850,000 美元
- 目标资金到位率:42.5%
- 剩余时间:15 年
预测(确定性):
- 当前资产在 15 年内按 4.5% 的实际回报率计算的未来价值:850,000 美元 x (1.045)^15 = 约 1,636,000 美元
- 缴款(每年 30,000 美元,每年递增 3%)按 4.5% 实际回报率计算的未来价值:约 620,000 美元
- 预测总额(实际价值):约 2,256,000 美元
- 确定性评估:进展顺利 — 预测金额将超过目标约 256,000 美元
预测(蒙特卡洛模拟,10,000 次模拟):
- 结果中位数:2,180,000 美元
- 第 25 百分位数:1,650,000 美元
- 第 10 百分位数:1,320,000 美元
- 达到 2,000,000 美元目标的概率:68%
解读: 确定性预测显示客户进展顺利,但蒙特卡洛分析显示成功概率为 68%——情况尚可,但把握不算很大。确定性视角与概率视角之间的差距,源于回报顺序风险和波动拖累。
提高成功概率的建议:
- 将年度缴款增加 5,000 美元(可将成功概率提高到约 78%)。
- 考虑适度降低支出目标,或灵活调整退休日期。
- 保持当前资产配置——现阶段降低风险会拉低预期回报,降低成功概率。
面向客户的总结:“您已为 2,000,000 美元的退休目标储蓄了 850,000 美元,已完成 42.5%,距离目标还有 15 年。根据我们的预测,按照您当前的储蓄计划,您实现目标的概率约为 68%。目前情况尚可,但我们可以通过增加年度缴款,或让退休日期更灵活,来提高成功机会。”
常见误区
- 挑选有利的时间段,以最有利的方式展示业绩。务必展示标准期间和成立以来的回报。
- 未同时展示风险和回报。15% 的回报率搭配 30% 的波动率,与搭配 10% 的波动率,完全是两回事。
- 使用不恰当的基准来美化业绩。在有利于成长型投资的市场中,将成长型股票基金与价值指数比较并不诚实。
- 对非技术受众使用过多行话。对于大多数客户而言,如果没有解释,夏普比率和跟踪误差毫无意义。
- 未提供数字的背景。8% 是好还是不好?这取决于基准、承担的风险、市场环境和目标。
- 将短期回报年化后展示。一个月回报 5% 并不等于“年化 60%”——这种说法具有误导性,绝不应这样呈现。
- 当客户现金流的时点显著影响其实际投资体验时,只展示时间加权回报。若存在大额或时点不佳的现金流,应同时展示资金加权回报和 TWR。
- 综合业绩报告中的幸存者偏差:从历史业绩记录中排除已终止的账户或表现不佳的策略。
- 忽略税费:对于应税投资者,税后回报才是真正重要的指标。
交叉引用
- statistics-fundamentals(核心插件):返回分布、预测的置信区间
- time-value-of-money(核心插件):未来价值预测、年化计算
- performance-metrics(财富管理插件):Sharpe、Sortino、Information Ratio 的计算细节
- historical-risk(财富管理插件):风险仪表板的波动率、回撤和 VaR 计算
- asset-allocation(财富管理插件):多资产投资组合的基准构建
- quantitative-valuation(财富管理插件):目标预测的前瞻性回报假设
- finance-psychology(财富管理插件):向客户展示业绩时的框架效应
- client-review-prep(顾问实务插件):将业绩数据整理到客户回顾会议资料包中
运行脚本
运行 uv run scripts/performance_reporting.py(PEP 723 标头会自动解析 numpy/scipy),或者先运行 pip install numpy scipy,再运行 python3 scripts/performance_reporting.py。直接运行会打印五个示例:Modified Dietz 回报、链式 TWR、通过 Brent 方法求解的 IRR、GIPS 综合摘要,以及标准周期回报表。使用 --verify 可断言示例输出与预期值一致(通过时退出代码为 0),使用 --help 可查看类的概览。此文件主要供作为模块导入使用(例如,from performance_reporting import ModifiedDietz, MoneyWeightedReturn)。