基准构建与风格分析:基准选择原则、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的步骤大致如下:

  1. 获取组合所有持仓的股票代码和权重
  2. 给每只股票打上风格标签(市值、估值、动量等)
  3. 按权重加权平均,得到组合的风格暴露
  4. 与基准的风格暴露对比,计算主动偏离

代码实现也很简单:

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