3. 评级分歧的量化度量:标准差法、排名差异法、Kendall Tau相关系数
好,咱们直接切入正题。评级分歧这东西,你不能光靠感觉说“哎呀,这两家评级差好多”。量化交易讲究的是数字说话。你得把分歧变成一个可计算、可回测的数值,才能塞进你的策略模型里。
我个人习惯把评级分歧的度量方法分成三类。说白了,就是看问题的角度不同。咱们一个一个来拆。
3.1 标准差法:最直观的“离散度”
这个方法最简单,也最符合直觉。你想想看,如果多家机构对同一家公司给出了ESG评分,这些分数的波动越大,是不是说明分歧越大?
标准差就是干这个的。它衡量一组数据的离散程度。数值越大,大家意见越不统一。
计算公式:
σ = sqrt( Σ (xi - μ)² / N )
其中,xi 是每家机构的评分,μ 是所有评分的均值,N 是机构数量。
实战中的坑:
避坑指南:
- 必须标准化:在计算标准差前,先把所有评级机构的分数做归一化处理。我一般用Z-score或者min-max缩放。
- 样本量问题:如果只有两家机构评级,标准差法的区分度其实很有限。至少3家以上,效果才明显。
3.2 排名差异法:摆脱“分数绝对值”的束缚
标准差法有个硬伤——它太依赖分数的绝对值了。但现实中,评级机构给分的手松手紧不一样。有的机构普遍给高分,有的普遍给低分。
这时候,排名差异法就派上用场了。我们不关心具体分数,只关心“谁排前面,谁排后面”。
具体做法:
- 对同一家公司,分别按不同评级机构的分数进行排名。
- 计算两个排名之间的差值绝对值。
- 差值越大,说明分歧越大。
举个例子:
| 公司 | 机构A评分 | 机构A排名 | 机构B评分 | 机构B排名 | 排名差异 |
|---|---|---|---|---|---|
| 公司X | 85 | 1 | 70 | 3 | 2 |
| 公司Y | 80 | 2 | 75 | 2 | 0 |
| 公司Z | 75 | 3 | 80 | 1 | 2 |
你看,公司X和公司Z的排名差异都是2,说明这两家机构对它们的相对好坏判断完全相反。这就是分歧。
3.3 Kendall Tau相关系数:衡量“排序一致性”的终极武器
排名差异法只能处理两家机构之间的比较。但现实中,我们经常要同时看3家、4家甚至更多机构的评级。这时候,Kendall Tau就来了。
Kendall Tau衡量的是两个序列之间的排序一致性。它的值在-1到1之间:
- 1:完全一致(两家机构的排名一模一样)
- -1:完全相反(一家排第一,另一家排倒数第一)
- 0:没有相关性(随机关系)
计算逻辑:
说白了,就是看所有公司对(pair)在两个评级机构的排名中,是“一致对”多,还是“不一致对”多。
τ = (一致对数 - 不一致对数) / (总对数)
代码实现(Python):
from scipy.stats import kendalltau
# 假设我们有5家公司的两个评级排名
rank_a = [1, 2, 3, 4, 5]
rank_b = [2, 1, 4, 3, 5]
tau, p_value = kendalltau(rank_a, rank_b)
print(f"Kendall Tau: {tau:.3f}")
# 输出: Kendall Tau: 0.600
我的经验:
我在做多机构分歧策略时,通常会用Kendall Tau做一个“共识矩阵”。比如有5家机构,就计算5x5的Kendall Tau矩阵。然后取每家公司与其他所有机构的平均Tau值。平均Tau越低,说明这家公司的评级分歧越大。
3.4 三种方法的对比与选择
好了,三种方法都讲完了。你可能会问:到底该用哪个?
我的建议是:
- 标准差法:适合快速筛选,数据量大的时候用。但记得先标准化。
- 排名差异法:适合两家机构对比,或者你想消除打分风格差异的时候。
- Kendall Tau:适合多机构、系统性分析。这是我最常用的方法,因为它能给出一个统计上严谨的“分歧度”。
嗯,这里要注意一点:这三种方法不是互斥的。我经常把它们组合起来用。比如先用标准差法粗筛一遍,再用Kendall Tau做精细分析。