业绩度量与归因
1. 前言
量化投资是一个“分析-实施-进一步分析”的持续过程。定期且深入地回顾业绩,是不断优化和完善投资策略不可或缺的一环。
本章我们会讨论两个重要的概念:业绩度量 (Performance Measurement) 和业绩归因 (Performance Attribution)。
业绩度量解决了解“赚了多少”的问题。虽然从表面上来看,收益率的获取是件非常直接的事情,但我们后续会看到,要精准的计算出真实的收益率,有时并不是件轻松的事情。此外,我们还需要度量为了获取这部分收益,我们承担了多少的风险。
在进行完业绩度量之后,业绩归因为我们解决“为什么赚/亏”的问题。通过剖析组合的收益率,来分析其价值的确切来源,例如是因为选股能力强?或者是单纯承担了更高的风险?
2. 收益率的度量
计算投资组合的收益率一般都是比较简单的,但有时也会变得复杂起来,这里我们从最理想的无现金流入流出的情况出发,介绍不同情况下收益率的度量。
2.1 无现金流的情形
2.1.1 单个资产的收益率计算
计算组合收益率的第一步是确定组合中每个成分股的收益率。在只考虑价格涨跌的情况下,我们可以很容易计算出股票的价格收益率 (Price Return):
其中:
- 代表价格;
- 代表第 只股票;
- 代表期初;
- 代表期末。
当我们考虑了计算期间内发放的股息()之后,即可计算出股票的总收益率 (Total Return):
需要注意的是,我们这里为了简化,并没有考虑税务管理中介绍的税收相关内容,而在实际中需要根据适用的税务规则对收益率进行调整。
2.1.2 投资组合的收益率计算
在获取个股收益率后,就可以计算整个组合收益率了。**组合收益率(Portfolio Return)**等于各个股收益率的加权总和:
其中, 为期初交易日收盘后,股票 在组合 中的权重。
需要注意的是,这里的权重指的是是期初权重。
在之后,随着股票价格的变化,即使不进行任何交易组合中的成分股权重也会自然发生“漂移”。所以在计算下一期的业绩前,需要更新权重:
2.1.3 使用账户总市值计算收益率
对于实盘中的组合,我们也开业直接通过账户总市值(Market Value, )的变动来计算收益率:
2.2 存在现金流的情形
对于真实的投资组合而言,频繁的申购赎回十分常见,此时如果我们再沿用上面使用账户总市值计算收益率的方法,就会大幅扭曲真实收益率。
例如,假设组合期初有 100,000 元,我们中途追加了 30,000 元。即使组合的真实投资收益率只有 5%,期末总市值也可能会变成 136,269.23 元(具体金额取决于追加投资的时间)。如果简单套用无现金流的公式 ,算出来的收益率会高达 36.27%!这显然夸大了组合的收益率。
2.2.1 时间加权收益率
为了解决以上问题,我们采用了时间加权收益率 (Time-Weighted Return, TWR) 。这一方法的核心思想是将被现金流打断的投资区间切分成多个子区间,计算每个没有现金流干扰的子区间收益率,然后再将它们相连。
2.2.1.1 示例
我们通过以下示例来进行说明时间加权收益率的使用方法:
假设组合 2025 年 1 月 1 日初始市值为 100,000 元,2 月 1 日组合市值跌到了 90,000 元,同日我们追加投资 50,000 元。此时,组合的总市值变为 90,000 + 50,000 = 140,000 元。 2025 年 3 月 1 日,期末组合市值涨到了 154,000 元。
此时,若直接采用总市值计算收益率,则会得到 154,000 / 100,000 - 1 = 54% 的收益率结果,这显然十分荒谬,因为大部分“增长”是我们自己存入而非组合赚取的钱。
我们通过以下步骤来计算时间加权收益率:
第一步:计算子区间 1 的收益率( 2025 年 1 月 1 日 至 2025 年 2 月 1 日 )
在这一个月内的收益率:
第二步:计算子区间 2 的收益率(2025 年 2 月 1 日 至 2025 年 3 月 1 日)
这里的起点市值是包含新流入资金后的市值(即 140,000 元):
第三步:几何连接(计算最终 TWR)
我们将这两个子区间的收益率进行几何连接,计算得到最终的收益率:
最后,我们还可以计算一下组合这段时间的年化收益率,计算公式的一般公式为:
代入数据,得到:
因此这段时间的年化收益率约为 -6.03%。
2.2.2 时间加权收益率的近似
对于很多基金而言,由于现金的流入流出过于频繁,我们无法进行精确的盘中估值,因此会使用 ICAA 方法或 Dietz 方法来做近似计算。这两种方法的核心假设是:假设所有的现金流都发生在计算期间的中点。
ICAA 方法:
Dietz 方法:
其中:
- 为市值;
- 为净现金流;
- 为组合收入。
两种方法唯一的区别在于期间收入 是否已包含在期末市值中。分母中的 就代表了“现金流发生在期中”的假设。
2.3 更为复杂的收益率度量
当组合加入我们前面介绍过的杠杆或是市场中性之后,收益率的计算方法会更加复杂,对于这几种情形,我们暂时不做介绍。
3. 风险的度量
收益只是硬币的一面,在评估投资组合时,我们不能只看赚了多少,还要看为了赚这些钱承担了多大的波动。
度量风险的方法有很多种,包括收益率的方差、跟踪误差、VAR等,我们下面会来依次介绍。但需要注意的是。这些风险并不能度量所有类型的投资风险,而只是度量包含在市场价格波动中的风险。
3.1 标准差——总体波动率
3.1.1 核心思想
标准差(Standard Deviation)是金融学中最古老、最常用的风险度量指标,它衡量的是投资组合收益率围绕其平均收益率上下波动的幅度。不论是暴涨(向上偏离)还是暴跌(向下偏离),在标准差眼里都是“不稳定”的表现,所以统称为风险。
3.1.2 计算公式
使用历史数据预测标准差的计算公式为:
其中, 为第 期的收益率, 为平均收益率, 为样本量。
3.1.3 缺陷
标准差的一个潜在假设是收益率服从正态分布,即涨跌对称。但现实中,收益率往往具有“尖峰胖尾”或偏度。
同时,对称的分布违背了投资者的真实心理:投资者讨厌的是跌破均值的亏钱,但却非常欢迎涨破均值的意外之财,而标准差把“意外之财”也当成风险给惩罚了。
为了解决以上问题,我们提出了下一节要介绍的“半标准差”。
3.2 半标准差——只看“坏运气”
3.2.1 核心思想
为了弥补标准差的缺陷,半标准差(Semi-Standard Deviation)应运而生。 半标准差认为,只有低于某个目标值的收益率才是真正的风险,高于目标值的波动属于奖励。因此,它只计算“向下偏离”的程度。
3.2.2 计算公式
使用历史数据预测半标准差的计算公式为:
其中, 是我们设定的目标阈值。
如果我们把 设为平均收益率 (),那就是严格意义上的半标准差。此外,我们也可以把 设为 0(只衡量绝对亏损的风险),或者设为无风险利率(衡量跑输无风险收益的风险)。
公式 意味着,如果当期收益率 大于目标 ,括号里算出来是个正数,和 0 取最小值就是 0 —— 即不计入风险;只有当收益率小于 时,才会留下负数参与平方求和。
3.2.3 缺陷
虽然下方风险更加契合了投资者的心理,但由于它涉及非线性的截断操作(min),在数学上进行求导和二次优化会比标准差更加困难。
3.3 跟踪误差——偏离基准的程度
3.3.1 核心思想
在组合权重的设定与优化中(组合权重),跟踪误差 (Tracking Error, TE) 是我们最常打交道的约束条件之一。它衡量的是投资组合收益率与比较基准收益率之间差异的波动程度(即超额收益率的标准差)。
跟踪误差的逻辑在于:如果我们的组合完全复制指数,那么跟踪误差就是 0。但在实际中,由于交易摩擦(手续费、滑点等)、无法完美复制指数的成分股,或者量化经理故意主动偏离基准以获取超额收益(Alpha),跟踪误差必然大于 0。
3.3.2 计算公式
跟踪误差的计算公式为:
其中:
- 是单期超额收益率,即组合收益率 减去基准收益率;
- 是平均超额收益率。
3.3.3 事前/事后跟踪误差
一个需要关注的问题是:跟踪误差分为 事前跟踪误差 (Ex-ante TE) 与 事后跟踪误差(Ex-post TE)。
事前跟踪误差为构建因子模型时,模型预测出的误差。我们一般将其用于对组合进行硬性约束,比如“最大化多因子Alpha,但限制事前跟踪误差不超过 5%”。
事后跟踪误差为业绩归因时实际算出来的误差。我们一般通过监控事前和事后跟踪误差的差异来检验量化模型的有效性。
3.3.4 年化跟踪误差
和收益率一样,如果用日数据计算的跟踪误差,需要乘以年交易日天数(如 )来进行年化;如果是月数据,则乘以 来进行年化。
3.4 CAPM 贝塔——和大盘起伏的敏感性
3.4.1 核心思想
在因子模型中, 代表了组合波动率与市场大盘波动率的敏感程度,具体来说:
- = 1:组合与市场同频共振。
- > 1:放大了市场的波动(进攻型,如券商、科技股)。
- < 1:缩小了市场的波动(防守型,如公用事业、消费股)。
- = 0:与市场大盘毫无关联(如市场中性策略)。
3.4.2 计算公式
因子模型的 有两种计算公式,分别是自下而上法(加权) 和 自上而下法(回归)。
3.4.2.1 自下而上法
自下而上法是指根据持仓进行加权,即把组合里每一只股票的 乘以其权重,然后求和:
3.4.2.2 自上而下法
自上而下法是指对历史超额收益和市场历史超额收益进行线性回归,即把组合的历史超额收益作为因变量,市场历史超额收益作为自变量,通过最小二乘法回归(OLS),计算出的斜率就是组合的 :
3.4.3 调整后贝塔
在现实中,一个有趣的现象是 值有向 1 靠拢的长期趋势(Marshall Blume,1971),这一现象被称为 值的均值回归,可能的解释包括企业生命周期的演变、企业并购活动与统计噪音的消散。
在此基础上,如果我们明知道极端的高 和低 在未来大概率会向 1 靠拢,那么直接使用纯粹的历史 ,就会高估高风险股票的未来风险,低估低风险股票的未来风险。
为了修正这个偏差,数据供应商引入了一种在统计学上叫作收缩估计(Shrinkage Estimator)的机制,通过公式人为地把历史 向 1 小幅拉回。以最为著名的是彭博为例:
公式中的 表示给予历史真实数据 67% 的权重,而 表示给予均值回归规律 33% 的权重。
3.5 在险值——潜在损失的概率
3.5.1 核心思想
有时候,我们想知道的不是组合能赚多少钱,而是在最糟糕的情况下,我们会亏损多少钱,而在险值 (Value at Risk, VaR)就是为了用一个清晰的数字来回答这个问题。
VaR 衡量的是在给定的置信水平(如 95% 或 99%)和特定的时间跨度(一般为短期,如 1天、1个月)内,投资组合可能遭受的最大预期损失。
例如,如果一个组合的“1天期,95%置信水平的 VaR”是100万元。这意味着在正常的市场环境下,明天这个组合损失超过100万元的概率只有 5%。
VAR 的主要计算方法有以下三种:
3.5.2.1 参数法
参数法 (Parametric Method)*是基于统计学模型,假设资产收益率服从正态分布。通过计算均值和标准差,利用正态分布表的 Z 值直接算出 VaR。
参数法的优点在于计算速度极快,适合包含大量资产的庞大组合,缺点是现实中的金融市场数据往往有“肥尾”特征,极少是完美的正态分布,这会导致参数法严重低估极端尾部风险。
3.5.2.2 历史模拟法
历史模拟法 (Historical Simulation)是直接把投资组合放到过去的真实历史数据中去跑,看看历史上最差的 5% 或 1% 的日子里亏了多少。
历史模拟法的优点在于不需要假设收益率服从正态分布,但缺点在于其强依赖于“历史会重演”的假设,而历史数据是有失效的风险的。
3.5.2.3 蒙特卡洛模拟法
蒙特卡洛模拟法 (Monte Carlo Simulation)是通过计算机生成成千上万种未来的随机市场情景,然后计算组合在这些情景下的表现,以此得出 VaR。
蒙特卡洛模拟法是最灵活、最强大的方法,特别适合包含期权等复杂非线性衍生品的组合,只是计算成本相对较高。
3.6 协方差与相关系数——不把鸡蛋放在同一个篮子里
3.6.1 核心思想
协方差(Covariance)与相关系数 (Correlation)是马科维茨现代投资组合理论的核心,其核心思想在于通过不同涨跌特征的资产组合,最终实现降低整体风险的目的。
我们其实已经在前面多次提到了协方差,这里再对使用收益率计算协方差和相关系数的内容做一个简单梳理。
3.6.2 计算公式
3.6.2.1 协方差的计算公式
通过投资组合与任何其他指数的收益率数据,我们就能计算出两者间的协方差:
若协方差为负值,则说明两者间存在风险对冲效应。
需要注意的是,协方差的绝对数值受资产收益率本身量纲(大小)的影响,我们无法只凭借一个协方差数值来判断两者的相关性强弱。
3.6.2.2 相关系数的计算公式
为了解决协方差难以跨资产比较的问题,统计学引入了相关系数( ),它将协方差进行了标准化处理,将两者的相关性锁定在 [-1, 1] 的区间内。
相关系数的计算方法为协方差除以两个资产标准差的乘积:
相关系数的解释:
- :完全正相关(完全同向,毫无分散风险的价值)。
- :完全负相关(可以构建出零风险的无风险组合)。
- :完全不相关(依然能提供极好的分散化收益)。
3.6.3 计算公式
在处理多资产组合时,所有的方差和协方差会被组合成一个 的对称矩阵(),该矩阵的对角线是单一资产自身的方差(自身的风险),而非对角线上则是不同资产之间的协方差(联动的风险)。
我们在组合权重提高的无约束 MVO ,正是通过寻找这个矩阵中最优的权重向量(),来最小化整个投资组合的方差()。
4. 风险调整后的业绩度量
在这一节,我们将前面介绍的收益与风险结合起来,讨论风险调整后的业绩度量。
之所以要对此进行讨论,是因为我们需要关注收益的“性价比”,即每承担一单位的风险,能换取多少超额收益?对此,一种经典的说法是:如果我们的相对高收益只是承担极大的风险去博取的,那么高收益就如同“在压路机前捡硬币”。
因此,我们需要一些指标来帮我们度量风险调整后的业绩,我们在这里主要介绍三种常用的指标,分别是夏普比率、特雷诺比率和信息比率。
4.1 夏普比率
4.1.1 核心思想
夏普比率 (Sharpe Ratio) 是业界最知名、应用最广泛的指标。它衡量的是投资组合相对于无风险利率的超额收益,与总风险(标准差)的比值。
4.1.2 计算公式
夏普比率的计算公式中,分子是组合平均收益率减去无风险利率,分母是组合收益率的标准差:
4.1.3 缺陷
就像我们之前讨论标准差时提到的,夏普比率会“惩罚”上行波动。如果我们赚了意料之外的大钱(向上的巨大波动),标准差会相应变大,夏普比率反而会变差。为了解决这一问题,我们可以将公式中的标准差替换为半标准差,这一修正后的夏普比率被称为索提诺比率(Sortino Ratio)。
此外,有时我们还会用组合的年化收益率除以回撤来计算风险调整后的业绩,这样的计算公式被称为斯特林比率(Sterling Ratio)或卡玛比率(Calmar ratio)。
4.2 特雷诺比率
4.2.1 核心思想
特雷诺比率对夏普比率做了一个重要的改进:它认为,既然非系统性风险(个股暴雷等)可以通过分散投资消除掉,那就不应该被算作评价基金经理的风险指标。因此,我们应当只关注系统性风险()。
4.2.2 计算公式
相较于夏普比率,特雷诺比率的唯一区别在于将分母换成了组合的贝塔系数。
4.3 信息比率
4.3.1 核心思想
对于任何有明确比较基准(如沪深300指数)的投资组合来说,信息比率(Information Ratio, IR)是我们最为关注的内容,因为它不再和无风险利率相比,而是直接和比较基准对比。
信息比率之所以重要,是因为它衡量的是投资组合主动偏离基准所带来的性价比:只要组合做了主动选股或行业偏离,就会产生跟踪误差。而信息比率就是看偏离的这部分,到底最后是否转化为了超额收益。
4.3.2 计算公式
信息比率的分子是超额收益(主动收益),即组合收益减去基准收益。分母是跟踪误差(主动风险):
5. 业绩归因
要分析组合赚钱/亏钱的原因,最常见的方法是 Brinson 模型,此外,我们在这里还会针对之前重点讲解的多因子量化股票组合,介绍其相应的业绩归因方法。
5.1 经典 Brinson 模型归因
实际上,整个业绩归因所要完成的就是对超额收益率 的拆解:
其中 为组合收益率, 为基准收益率。
在 Brinson 模型中,我们将超额收益率拆解为资产配置效应 (Allocation Effect) 、个股选择效应 (Selection Effect)以及交叉效应 (Interaction Effect)。
为了计算这三种效应,我们需要将整个投资组合和比较基准(如沪深300)都按照某个维度(通常是行业板块,比如金融、科技、消费)进行横向切块定义以下变量:
- :组合在该行业的权重
- :基准在该行业的权重
- :组合在该行业的收益率
- :基准在该行业的收益率
我们下面依次来看这三种效应。
5.1.1 资产配置效应
资产配置效应衡量的是我们超配(或低配)某个行业所带来的贡献。计算公式为:
直观理解资产配置效应:
- 如果科技股表现比大盘好( ),且我们超配了科技股( ),两者相乘为正,说明我们配置正确,获得超额收益。
- 如果科技股表现比大盘差( ),而我们低配了科技股( ),说明我们躲开了行业下跌,同样能获得超额收益。
5.1.2 个股选择效应
个股选择效应对应挑出好公司的能力——假设我们行业的权重和基准完全一致(排除行业配置的干扰),纯粹看在同一个行业里面,挑出的股票是不是比大盘挑的好。
个股选择效应的计算公式为:
5.1.3 交叉效应
交叉效应衡量的是配置权重和选股能力的相互作用,即我们同时选对行业和股票的额外收益(或同时选错的额外亏损)。
交叉效应的计算公式为:
最后,将组合中所有行业板块的这三个效应加总起来,就等于组合这个月的总超额收益率:
5.1.4 Brinson 模型的评价
经典 Brinson 模型的优势在于其拆分维度很直观(行业/选股),所以比较便于理解。
但是,对于量化投资而言,由于我们的多因子模型并非按行业进行超配或低配的,而是按照不同因子进行的,所以 Brinson 模型并不适用,而这就引出了更高阶的多因子业绩归因。
5.2 多因子归因
5.2.1 收益率分解
之前介绍过的股票收益率模型:
超额收益率同样为:
我们定义权重差:
将权重差代入超额收益率公式:
展开后得到:
在该公式中, 、 ... 表示各个因子贡献的超额收益率, 表示控制所有已知系统性风险因子之后,由个股特异性收益带来的超额收益。
5.2.2 风险分解
5.2.2.1 各因子风险贡献
其中 是因子 收益的方差。
5.2.2.2 残差风险
假设 相互独立,且与因子独立,则残差风险为:
5.2.2.3 交互作用项
若因子间存在相关性,则我们还需要下式来修正因子间相关性对组合风险的影响: