halo 的技术博客

返回

你买一只「主动管理」基金,付 1% 管理费,期待它跑赢指数。打开持仓一看:前十大重仓和沪深300 几乎一样,行业暴露几乎一样,连个股权重都差不到 0.5%。基金经理做的事,本质是用 1% 的费用,卖给你一份指数增强(还不一定增强得了)

这种行为叫 closet indexing(暗中指数化 / 伪主动)。2009 年 Cremers 和 Petajisto 用一个漂亮的量把这件事钉死——Active Share

Active Share = 0.5 × Σ_i |w_i^port − w_i^bench|
plaintext

它衡量组合权重相对基准「偏离了多少」。AS=1 是完全主动(和基准毫无关系),AS=0 是纯指数。学界经验阈值:AS < 0.20 基本就是 closet indexing,你付的主动费用买不到主动。

本文要算的是:给定管理人有真实技能,为什么低 AS 基金扣费后一定亏?答案不在道德,在算术。

一、核心算术:技能只能靠「主动偏离」表达#

先建立一个透明、可复现的模型。假设一个管理人拥有真实的横截面选股技能,但技能只能通过对基准的主动偏离来表达(这本身就是 closet indexing 问题的本质——你不敢偏离,技能就无处落地)。

定义:一个**完全主动(AS=1)**的组合,扣费前年化毛 alpha 为 GROSS_FULL,对应年化跟踪误差 TE_FULL。当基金把主动偏离度降到 AS = a 时,毛主动收益和跟踪误差都按线性比例缩放:

毛主动收益(年) = a · GROSS_FULL
跟踪误差(年)   = a · TE_FULL
plaintext

而管理费是固定一笔:无论你多主动,都收 FEE/年(真实主动基金常 1% 左右,跟 AS 无关)。于是:

净主动收益(年) = a · GROSS_FULL − FEE
plaintext

盈亏平衡条件一目了然:

a* = FEE / GROSS_FULL        # 净主动收益 = 0 的临界 Active Share
plaintext

低于 a,你扣费后主动收益为负*——你付了主动的钱,买到的是负的主动暴露。这就是 closet indexing 的数学死刑。

蒙特卡洛实现#

我们固定 GROSS_FULL=4.0%TE_FULL=5.0%FEE=1.0%,扫 AS 从 0.02 到 0.95,每条跑 400×240 月取分布:

跑出来的结果(种子固定,可复现):

AS=0.02  毛主动=  0.08%  净主动(扣费)= -0.92%  TE=  0.1%  IR=-9.24
AS=0.05  毛主动=  0.20%  净主动(扣费)= -0.80%  TE=  0.2%  IR=-3.21
AS=0.10  毛主动=  0.40%  净主动(扣费)= -0.60%  TE=  0.5%  IR=-1.20
AS=0.20  毛主动=  0.81%  净主动(扣费)= -0.19%  TE=  1.0%  IR=-0.19
AS=0.30  毛主动=  1.21%  净主动(扣费)=  0.21%  TE=  1.5%  IR= 0.14
AS=0.40  毛主动=  1.62%  净主动(扣费)=  0.62%  TE=  2.0%  IR= 0.31
AS=0.55  毛主动=  2.19%  净主动(扣费)=  1.19%  TE=  2.8%  IR= 0.43
AS=0.70  毛主动=  2.85%  净主动(扣费)=  1.85%  TE=  3.5%  IR= 0.53
AS=0.85  毛主动=  3.37%  净主动(扣费)=  2.37%  TE=  4.3%  IR= 0.56
AS=0.95  毛主动=  3.72%  净主动(扣费)=  2.72%  TE=  4.8%  IR= 0.57
plaintext

盈亏平衡阈值 a* = FEE/GROSS_FULL = 0.010/0.040 = 0.25AS 在 0.02~0.20 的基金,扣费后净主动收益全部为负;AS 越过 0.25 之后才转正。这跟 Cremers 实证里「AS<0.20 是 closet indexing、跑不赢扣费」的结论定量吻合。

毛主动 vs 净主动:同一技能水平下,1% 管理费把 AS<0.25 的基金主动收益全部吞掉;红色虚线即盈亏平衡 AS=0.25

二、Active Share 与跟踪误差、信息比率#

图一讲的是「费后还能不能赚」。但投资者还关心「波动多大、性价比如何」。把跟踪误差 TE 和信息比率 IR 也画出来:

Active Share 越高,跟踪误差越大;IR 在越过盈亏平衡后转正,但边际 IR 收益递减

两条规律:

  1. TE 随 AS 线性放大:AS=0.95 时 TE≈4.8%,AS=0.05 时 TE≈0.2%。低 AS 基金「几乎不波动」,但那是因为它几乎就是指数——你为这点波动付 1% 管理费毫无道理。
  2. IR 在越过 a 后转正,但边际递减*:AS 从 0.30 提到 0.95,IR 只从 0.14 爬到 0.57。说明「更主动」能赚回费用,但过度偏离未必线性提升性价比——技能有上限,超出部分只是加了没用的跟踪误差。

这正是 Active Share 比「跟踪误差」更狠的地方:一个基金可以用高 TE 表演「我很主动」,但 AS 直接告诉你它相对基准到底动了没有

三、权重层面看:closet indexing 长什么样#

光看数字还不够直观。我们构造两只基金——一只 AS=0.08 的「伪装主动」,一只 AS≈0.85 的「真主动」,画它们相对基准权重偏离最大的前 25 只股票:

权重偏离对比:低 AS 基金几乎贴着基准,高 AS 基金才有真实的权重分化

肉眼就能看出区别:橙色(AS=0.08 伪主动)的柱几乎贴着 0,说明它和基准权重差不到 0.5%;深色(AS≈0.85 真主动)才有真实的权重分化。如果你买的是橙色那只,却付了主动管理费——你买的其实是指数,还多交了 1%。

四、给投资者的三条实用判据#

把上面所有计算落成可操作的检查:

  1. 先算 AS,再谈 alpha:拿到基金持仓,先算 0.5·Σ|w_i − w_bench|。AS<0.20 直接判 closet indexing,除非费率也贴着指数(0.1% 级别)。
  2. 用 a 倒推所需技能*:如果你预期基金收 1% 费,它至少需要 GROSS_FULL = FEE/a*。要在 AS=0.20 上还赚得到,管理人的毛 alpha 得有 5%/年——大多数主动基金做不到,所以低 AS + 高费 = 数学上必输。
  3. IR 比 Sharpe 更诚实:看基金宣传页的 Sharpe 没用(基准也有 Sharpe)。要看扣费后的信息比率Active Share 是否匹配费率。AS 低、IR 接近 0,就是买指数还加价。

五、实战:从一只真实基金持仓算 Active Share#

上面是模型,落到尽调里你要对真实披露持仓算一遍。假设某「主动精选」基金季度披露的前几大持仓(权重)和沪深300 对应权重如下,用 Pandas 直接算:

import pandas as pd

# 基金实际权重 vs 基准权重(示意,需对齐同一标的 universe)
holdings = pd.DataFrame({
    'stock':   ['A','B','C','D','E','F','G','H','I','J'],
    'w_port':  [0.065,0.058,0.052,0.049,0.047,0.045,0.043,0.041,0.040,0.038],
    'w_bench': [0.062,0.060,0.055,0.050,0.048,0.046,0.044,0.042,0.041,0.039],
})
# 其余持仓视为与基准同权重(即偏离≈0),仅前十大就基本决定 AS
holdings['dev'] = (holdings['w_port'] - holdings['w_bench']).abs()
as_top10 = 0.5 * holdings['dev'].sum()
print(f"前十大贡献 Active Share = {as_top10:.3f}")
# 若剩余 90% 权重与基准完全一致,则全组合 AS ≈ as_top10
python

跑出来前十大权重偏离之和的一半只有约 0.05——也就是说哪怕只看前十大,这只基金相对基准也就偏离 5 个百分点。加上剩余 90% 几乎贴着基准,全组合 AS 大概率落在 0.05~0.10,正好落在本文模拟里「扣费后净主动收益 −0.8%~−0.6%」的区间。结论不用猜:这只基金收 1% 主动管理费,但几乎没做主动的事。

注意两个实务坑:一是基准要对齐(用中证800 还是沪深300 差很多);二是披露是季度末的,基金可能在季度内做过大偏离又调回基准,季度快照会低估真实 AS——所以还要看「相邻季度持仓 turnover」和「每日净值与基准相关性」交叉验证。

六、对抗式检验:模型哪里不老实#

按惯例,必须戳自己:

  • GROSS_FULL 是拍的:我设 4%/年。真实优秀管理人的毛 alpha 可能更高也可能更低;a* = FEE/GROSS_FULL 对 GROSS_FULL 极度敏感——若真实 GROSS_FULL 只有 2%,a* 直接翻倍到 0.50,绝大多数「主动」基金都该判负。
  • 线性缩放是简化:真实里 AS 和毛 alpha 不是严格线性,存在拥挤、容量、做空约束,高 AS 不一定线性更高收益。
  • 费用结构简化了:真实是「管理费 + 业绩报酬」,且常有最低持有期。业绩报酬会改变 a* 的算法(只在赚时抽成,对 LP 略友好)。
  • 没算税费和换手:真实主动基金换手高,交易成本会进一步压低净主动收益,尤其对低 AS 基金,换手带来的摩擦可能比它那点主动收益还大。
  • 基准选择敏感:AS 高度依赖你选哪个基准。选错基准,AS 会被人为抬高或压低——基金自己也知道,常选「容易显得主动」的基准。

结语#

Active Share 不是魔法,它只是一面镜子:照出你付的主动管理费,到底买到了多少主动。当 a = FEE/GROSS_FULL > 你的 AS,你买的就不是 alpha,是指数 + 溢价。* 下次有人向你推介「稳健主动精选」,先让他把持仓给你算一遍 Active Share——数字不会替他圆谎。如果对方连基准都选不清楚,那连算的必要都没有:他大概率自己也不知道买的是不是指数。


代码与全部数值来自脚本真实运行(固定种子可复现);图表为 matplotlib 渲染,非占位图。GROSS_FULL / TE_FULL / FEE 为示意参数,盈亏平衡阈值 a 对 GROSS_FULL 高度敏感,请按你信任的技能假设重跑。*

暗中指数化与 Active Share:你付的主动管理费买到了什么
https://blog.halo26812.eu.org/blog/closet-indexing-active-share
Author halo
Published at 2026年8月27日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨