4. 超额收益定义与计算
在板块轮动与相对强弱分析中,绝对涨跌幅只能说明“涨了多少”,而超额收益回答的是“比基准多涨或少跌了多少”。本节聚焦超额收益的两种常见定义——算术差与几何差,并给出板块相对基准的日度、区间超额收益实现方式,以及结果合理性的验证思路。
一、两种定义的本质区别
设板块在某一区间的收益率为 R_p,基准(如沪深300、中证全指或行业等权指数)同期收益率为 R_b。两种定义分别为:
- 算术差(Arithmetic Excess):
E_arith = R_p − R_b。直接相减,单位是百分点,含义直观,适合单期、短周期(如日度)比较,也是多数行情软件“相对收益”列的默认口径。 - 几何差(Geometric Excess):
E_geo = (1 + R_p) / (1 + R_b) − 1。先还原为净值比再减 1,衡量的是“相对净值增长倍数”,具有可连乘性,适合多期累计与长期区间比较。
两者在单期数值接近,但区间越长、波动越大,差异越明显。举例:板块两期分别 +50%、−30%,基准两期分别 +10%、+10%。算术差逐期相加为 (40%) + (−40%) = 0;而几何口径下板块累计净值为 1.5×0.7 = 1.05(+5%),基准为 1.1×1.1 = 1.21(+21%),几何超额为 1.05/1.21 − 1 ≈ −13.22%。可见算术差在跨期累加时会失真,几何差才与真实持有体验一致。
二、日度超额收益的实现
日度计算的关键是“对齐”。板块指数与基准指数的交易日、复权方式、停牌处理必须一致,否则超额收益会混入口径噪声。实操中建议按以下顺序处理:
- 取板块与基准的后复权收盘价序列,按交易日取交集对齐,缺失值不填充、直接剔除该日。
- 计算日收益率:
r_t = P_t / P_{t-1} − 1,首日无收益。 - 按定义计算日超额:算术差
e_t = r_p,t − r_b,t;几何差e_t = (1+r_p,t)/(1+r_b,t) − 1。 - 对日超额做描述统计:均值、标准差、胜率(
e_t > 0的占比)、信息比率近似值mean(e)/std(e)×√252。
下面是一段可直接运行的 Python 示例(示例数据为构造值,仅用于演示计算流程):
import numpy as np
import pandas as pd
# 示例:构造 5 个交易日的板块与基准后复权收盘价
dates = pd.date_range("2024-01-02", periods=5, freq="B")
p_board = pd.Series([1000, 1012, 1005, 1020, 1035], index=dates)
p_bench = pd.Series([3800, 3819, 3805, 3830, 3845], index=dates)
r_p = p_board.pct_change().dropna()
r_b = p_bench.pct_change().dropna()
e_arith = r_p - r_b
e_geo = (1 + r_p) / (1 + r_b) - 1
summary = pd.DataFrame({
"板块收益": r_p, "基准收益": r_b,
"算术超额": e_arith, "几何超额": e_geo
})
print(summary.round(6))
print("日超额均值(算术):", round(e_arith.mean(), 6))
print("日超额胜率:", round((e_arith > 0).mean(), 4))
运行后可观察到:单日算术差与几何差数值非常接近(差异在万分之几量级),这正是短周期下两者近似的原因;但胜率、均值等统计量会随口径略有不同,报告中应注明所用定义。
三、区间超额收益的实现
区间超额不能简单把日超额相加。正确做法是先算区间累计收益,再套用定义:
- 区间累计:
R = ∏(1 + r_t) − 1,等价于P_end / P_start − 1。 - 区间算术超额:
R_p − R_b。 - 区间几何超额:
(1+R_p)/(1+R_b) − 1,也可写成(P_p,end/P_p,start) / (P_b,end/P_b,start) − 1,即相对净值比。
若需要“逐日累计超额净值曲线”,应使用几何口径的连乘:NAV_t = ∏(1 + e_geo,s),该曲线终点即等于区间几何超额 +1。用算术差累加得到的曲线会随波动放大而偏离真实相对净值,只适合做粗略的强弱观察。
四、结果合理性验证
计算完成后,建议做四项交叉校验,避免“算得出但算错了”:
| 校验项 | 方法 | 合理预期 |
|---|---|---|
| 端点一致性 | 用首尾收盘价直接算区间收益,与逐日连乘结果比对 | 差异应小于 1e-8(浮点误差级) |
| 口径一致性 | 同一区间分别用算术、几何计算 | 两者同号;数值差异随区间波动增大而扩大 |
| 基准自比 | 令板块 = 基准 | 超额恒为 0(两种定义都应严格为 0) |
| 极端值排查 | 检查单日超额绝对值是否异常大 | 若超过 ±15%,优先怀疑复权、停牌或数据错位 |
E(A,B) = −E(B,A)/(1+E(B,A)),而算术超额满足简单反号。用这一关系可快速判断实现是否写反了分子分母。把上述流程固化为函数后,日度与区间超额即可在同一套代码中复用:输入两张对齐的价格序列,输出日度明细表、区间汇总与累计超额净值曲线,再配合四项校验,就能保证超额收益的计算既符合定义,也经得起复核。