基准构建与风格分析:基准选择原则、Sharpe风格分析、基于收益的风格分析(RBSA)、基于持仓的风格分析(HBSA)
各位同学,今天我们来聊聊基准构建与风格分析。这个话题,说白了就是回答一个问题:你的组合到底像谁?
我做了这么多年量化,见过太多人上来就吹自己的策略多牛。但一问基准是什么,支支吾吾。没有基准,你怎么知道收益是来自能力还是运气?嗯,这是个灵魂拷问。
基准选择原则:别选个“假靶子”
基准不是随便找个指数就完事了。我见过最离谱的,有人拿沪深300去衡量一个纯债基金。这就像拿姚明的身高去衡量郭敬明——毫无意义。
我个人习惯,选基准要遵循几个硬性原则:
- 可投资性:基准里的成分股,你得真能买到。别搞一堆停牌股或流动性极差的标的。
- 代表性:基准要能反映你的投资范围。做小盘股的,别拿上证50当基准。
- 可复制性:别人拿你的基准,也能大致复制出差不多的收益曲线。
- 稳定性:别三天两头换基准,那你的业绩归因就没法看了。
核心观点:基准是你的“对照组”。没有对照组,你的实验就是无效的。
我在项目中遇到过一件事。有个客户拿中证500做基准,但实际持仓全是银行股。结果跑赢基准5个点,他高兴坏了。我一算,那段时间银行板块涨了8个点,中证500只涨了2个点。他跑赢的不是市场,而是选错了参照物。避坑指南:基准必须与持仓风格匹配。
Sharpe风格分析:经典但别迷信
Sharpe风格分析,说白了就是拿组合的收益率去回归各种风格因子。比如大盘、小盘、价值、成长。回归出来的系数,就是你的风格暴露。
公式很简单:
R_p = α + β_1 * F_1 + β_2 * F_2 + ... + ε
其中R_p是组合收益,F_i是风格因子收益,β_i就是风格暴露。
我曾经用这个方法分析过一个号称“灵活配置”的基金。结果回归出来,它的风格暴露几乎全是小盘成长。基金经理嘴上说灵活,身体却很诚实。嗯,这就是Sharpe风格分析的价值——看穿你的伪装。
小技巧:做Sharpe风格分析时,记得用滚动窗口。比如36个月滚动一次。因为风格暴露会随时间变化。固定窗口容易错过拐点。
但要注意,Sharpe风格分析有个大坑:多重共线性。大盘和价值因子经常高度相关。你回归出来的系数可能不稳定。我建议用Lasso回归或者主成分分析来降维。
基于收益的风格分析(RBSA):用数据说话
RBSA,全称Return-Based Style Analysis。它和Sharpe风格分析一脉相承,但更强调约束条件。
核心思想是:让风格暴露的权重之和为1,且每个权重在0到1之间。这样回归出来的结果更像一个“模拟组合”。
数学上,这是个带约束的优化问题:
min Σ(R_p - Σβ_i * F_i)²
s.t. Σβ_i = 1, β_i ≥ 0
我个人习惯用这个方法来做基金分类。比如,把全市场的基金按风格暴露聚类。你会发现,很多号称“均衡型”的基金,其实风格非常极端。
举个例子。我做过一个实验,拿100只主动权益基金做RBSA。结果发现:
| 基金宣称风格 | 实际RBSA结果 | 占比 |
|---|---|---|
| 大盘价值 | 大盘价值 | 62% |
| 大盘价值 | 大盘成长 | 23% |
| 大盘价值 | 小盘价值 | 15% |
你看,将近40%的基金,实际风格和宣称的不一致。这就是RBSA的价值——用数据戳穿谎言。
注意:RBSA对因子选择非常敏感。你选什么因子,就得到什么结果。我建议至少用5-7个风格因子,覆盖大盘/小盘、价值/成长、动量/反转等维度。
基于持仓的风格分析(HBSA):更精细,但更麻烦
HBSA,全称Holdings-Based Style Analysis。它不依赖收益数据,而是直接看持仓。每只股票都有风格标签,比如市值、市盈率、市净率等。然后加权平均,得到组合的整体风格。
这个方法的好处是:实时、准确。没有回归误差,没有统计噪音。你看到的就是真实的。
但坏处也很明显:数据可得性差。公募基金每季度才披露一次持仓,私募更少。你拿到的数据永远是滞后的。
我曾经用HBSA分析过一个量化基金。它的持仓非常分散,每只股票占比不到0.5%。但加权一看,风格暴露全在中证500和中证1000之间。嗯,这就是典型的“指数增强”策略。
HBSA的步骤大致如下:
- 获取组合所有持仓的股票代码和权重
- 给每只股票打上风格标签(市值、估值、动量等)
- 按权重加权平均,得到组合的风格暴露
- 与基准的风格暴露对比,计算主动偏离
代码实现也很简单:
import pandas as pd
# 假设持仓数据
holdings = pd.DataFrame({
'stock': ['A', 'B', 'C'],
'weight': [0.5, 0.3, 0.2],
'market_cap': [100, 50, 200], # 市值(亿)
'pe': [15, 20, 10] # 市盈率
})
# 加权平均风格
weighted_market_cap = (holdings['weight'] * holdings['market_cap']).sum()
weighted_pe = (holdings['weight'] * holdings['pe']).sum()
print(f"组合加权市值: {weighted_market_cap:.2f}亿")
print(f"组合加权市盈率: {weighted_pe:.2f}")
你想想看,如果组合的加权市值是200亿,基准是500亿。那说明你的组合偏小盘。如果加权市盈率是25倍,基准是15倍。那说明你偏成长。
避坑指南:我曾经用HBSA分析一个基金,发现它的风格暴露突然大变。后来一查,原来是基金经理换人了。所以,HBSA也可以用来监测基金经理是否言行一致。
RBSA vs HBSA:怎么选?
这个问题我经常被问到。我的建议是:
- 数据频率高、时效性要求高:用RBSA。比如每天做风险监控。
- 数据可得性好、需要精确分析:用HBSA。比如季度末做深度归因。
- 两者结合:用RBSA做高频监控,用HBSA做低频验证。互相印证。
我个人习惯,平时用RBSA看趋势,季度末用HBSA看细节。两者结合,基本不会出大错。
好了,基准构建与风格分析就讲到这里。记住一句话:没有基准,就没有评价;没有风格分析,就没有理解。
公众号:蓝海资料掘金营,微信deep3321