halo 的技术博客

返回

你是一个主动基金经理。老板问你:「明年能跑赢基准几个点?」你心里没底。

更残酷的问题是:即使你预测准了,你的收益上限到底在哪?

这不是拍脑袋能答的。但 Grinold(1989)和 Grinold-Kahn(2000)给了量化圈一句最值钱的话——基本面定律(Fundamental Law of Active Management):

IR=ICBR\text{IR} = \text{IC} \cdot \sqrt{\text{BR}}

  • IR(Information Ratio,信息比率) = 年化主动收益 ÷ 年化主动风险。它衡量你「每冒一单位主动风险,换回多少超额收益」,是主动管理能力的标尺。
  • IC(Information Coefficient,信息系数) = 你的预测值与实际结果的相关系数。它衡量你的预测技巧——你能看多远。
  • BR(Breadth,广度) = 你每年独立下注的次数。它衡量你出手多频繁

一句话:你的超额收益上限,只由「你有多准」和「你出手多勤」决定,且广度在根号下

本文用蒙特卡洛从零复现这条定律,并拆穿五个真实陷阱——包括一个反直觉的等价关系:把 IC 翻倍,等价于把 BR 翻四倍

一、为什么是「根号 BR」,而不是「BR」#

直觉上,下注次数越多,总收益该线性叠加(BR 倍)。但风险也叠加,且是根号叠加(独立下注的方差相加,标准差取 √BR)。

主动收益(均值)随 BR 线性增长,主动风险(标准差)随 √BR 增长,所以 IR = 收益/风险 ∝ BR/√BR = √BR。

这就是根号的来源。广度是被「风险折扣」过的——你多做的每一次独立下注,只按 √ 的速度提升你的信息比率。

注意一个小细节:simulate_manager 里我用了比例建仓(bets = s * z),而不是 sign(s)。这是关键——IR=IC·√BR 的推导基于「下注量与信号幅度成正比」的最优比例。如果你只用方向(sign),模拟 IR 会系统性偏低(因为丢掉了信号强弱信息)。

二、定律长什么样:IR 随 √BR 增长#

把 IR = IC·√BR 画出来,横轴用对数(广度常跨好几个数量级):

import numpy as np
import matplotlib.pyplot as plt

brs = np.linspace(1, 1000, 400)
ics = [0.02, 0.05, 0.10, 0.15]
for ic in ics:
    ir = ic * np.sqrt(brs)
    plt.plot(brs, ir, label=f"IC = {ic}")
plt.xscale("log"); plt.xlabel("广度 BR (每年独立下注次数)")
plt.ylabel("信息比率 IR = IC × √BR"); plt.legend()
python

主动管理基本面定律: IR 随 √BR 增长 (对数横轴下为直线)

图 1:对数横轴下,IR 关于 BR 是一条直线——这正是 √ 关系在对数轴上的特征。四条线对应四种预测技巧,IC 越高线越陡。

对数轴上直线,意味着:广度每扩大一个数量级,IR 只涨 √10 ≈ 3.16 倍,而非 10 倍。广度是「奢侈品」,靠堆次数很难无限拉高 IR。

三、IR 响应曲面:IC × BR 怎么配合#

单一曲线不够直观,我们用热力图看 IC 和 BR 的二维配合,并叠一条等高线:

ic_grid = np.linspace(0.01, 0.20, 40)
br_grid = np.linspace(5, 500, 40)
IC, BR = np.meshgrid(ic_grid, br_grid)
IR = IC * np.sqrt(BR)
# 标注两个真实经理点
#   IC=0.05, BR=100  -> IR≈0.5  (普通选股经理)
#   IC=0.10, BR=250  -> IR≈1.58 (高技巧广覆盖)
python

IR = IC × √BR 响应曲面

图 2:曲面越亮 IR 越高。白线是 IR=0.5/1.0/1.5/2.0 的等高线。红点(IC=0.05,BR=100)落在 IR≈0.5 附近——这是大多数主动股票经理的真实位置;黄点(IC=0.10,BR=250)冲到 IR≈1.58,已经是顶级水准。

四、蒙特卡洛实跑:四种经理画像#

理论很美,但模拟能不能复现?我们用 4000 年蒙特卡洛(每次独立重抽)对照四类经理,并加上约束效应:

scenarios = [
    ("高技巧少机会", 0.15, 25),
    ("中等技巧中机会", 0.05, 250),
    ("低技巧广撒网", 0.02, 1000),
    ("高技巧广撒网", 0.10, 400),
]
for name, ic, br in scenarios:
    ann = simulate_manager(ic, br, years=4000)
    ir_sim = ann.mean() / ann.std(ddof=1)     # 实测 IR
    ir_theory = ic * np.sqrt(br)               # 理论 IR
    ir_tc = ir_theory * 0.6                     # 约束 TC=0.6 砍掉 40%
python

实跑结果:

经理画像ICBR理论 IR模拟 IRTC=0.6 后
高技巧少机会0.15250.7500.7300.450
中等技巧中机会0.052500.7910.7900.474
低技巧广撒网0.0210000.6320.6430.379
高技巧广撒网0.104002.0001.9631.200

四种经理画像: 理论 vs 模拟, 以及约束(TC)如何砍掉 IR

图 3:蓝=理论,绿=模拟(几乎重合,验证定律),红=施加约束 TC=0.6 后。看「高技巧广撒网」:理论 IR 2.0,但一旦预测无法完全转化为持仓(TC=0.6),直接砍到 1.2。

三个能记住的数字:

  • IC 0.15、BR 25 的「神准但出手少」经理,IR 只有 0.73——预测再准,不常出手也白搭。
  • IC 0.05、BR 250 的「平庸但高频」经理,IR 反而有 0.79——靠广度弥补技巧。
  • IC 0.10、BR 400 的「又准又勤」经理,IR 冲到 2.0——这是定律给的封顶区。

五、反直觉的等价关系:翻倍 IC = 翻四倍 BR#

把定律变形:IR = IC·√BR。要让 IR 翻倍,可以:

  • IC → 2·IC,则 IR → 2·IR(直接翻倍);
  • 或 √BR → 2·√BR,即 BR → 4·BR(翻四倍)。

把预测技巧翻倍,等价于把下注广度翻四倍。 验证一下:

ic, br = 0.05, 100
print(ic * np.sqrt(br))          # 0.500
ic, br = 0.05, 400
print(ic * np.sqrt(br))          # 1.000  (BR×4 -> IR×2, 等价于 IC 翻倍)
python

这解释了行业里一个长期困惑:为什么「提升选股命中率」这么难,大家却都去「多做策略/多覆盖标的」? 因为 IC 从 0.05 提到 0.10 极难(预测技巧的天花板),而 BR 从 100 扩到 400(多覆盖 3 倍标的、或加高频信号源)相对容易。广度是性价比更高的杠杆——虽然它在根号下,但好歹是「可规模化」的那一侧。

六、扩展形式:约束系数 TC#

现实里你的预测无法 100% 转化为持仓。Grinold-Kahn 扩展形式:

IR=ICBRTC\text{IR} = \text{IC} \cdot \sqrt{\text{BR}} \cdot \text{TC}

  • TC(Transfer Coefficient,转移系数) ∈ [0,1]:预测转化为实际主动敞口的程度。完全无约束(TC=1)→ 纯粹定律;强约束(TC→0,如严格的行业中性、个股权重上限、现金拖累)→ IR 被按比例砍。

上面图 3 的红色柱就是 TC=0.6:每个经理的 IR 都被砍掉 40%。这恰恰是很多「模型很准、实盘很烂」的根源——约束是必须的(风控、流动性、合规),但它直接吃掉 IR。你以为自己 IR 2.0,扣掉约束可能只剩 1.2。

七、五类真实陷阱#

  1. IC 不可观测,你用的是「样本内 IC」:真实 IC 是预测与未来的远期相关,但回测里你只能算历史 IC。幸存者偏差、前视填充会让样本内 IC 虚高,代入定律后给出虚假的 IR 上限。务必用样本外/purged k-fold 估计 IC。
  2. BR 不是「交易次数」,是「独立下注次数」:你一年交易 5000 次,但如果都是同一只股票的日内反复,独立下注可能只有几十次。BR 要求统计独立——相关信号要折算(如把动量家族 40 个变体算作 1 个独立维度)。滥用 BR 会让定律高估 IR。
  3. 定律假设下注独立且同分布:真实市场里信号会拥挤、会相关结构突变。当 BR 个下注彼此相关,总方差不再是简单相加,√BR 缩放失效——此时真实 IR 低于 IC·√BR。
  4. TC 不是常数:市场极端时,流动性约束、涨停板、停牌会把 TC 从 0.6 砸到 0.2,IR 同步塌方。用平静期的 TC 去推算危机期的 IR 上限,会严重高估。
  5. IR 是比率,不是绝对值:定律给的是「每单位主动风险的超额回报」。如果你的策略主动风险被杠杆放大,K 倍杠杆把 IR 保持不变(分子分母同乘 K),但绝对亏损也 K 倍——定律不保证「绝对安全」,只保证「风险调整后效率」。

八、结论#

基本面定律不是一句鸡汤,而是主动管理最锋利的体检表:

  • IR = IC·√BR 把「你能跑赢多少」拆成两个可改进旋钮——预测技巧(IC)与出手频率(BR)。
  • 广度在根号下:靠堆 BR 提升 IR 是慢路,但它是唯一可规模化的杠杆;翻倍 IC 等价于翻四倍 BR。
  • 约束 TC 是隐藏税:模型再准,从预测到持仓的每一步损耗都在吃 IR,TC=0.6 直接砍 40%。
  • 模拟实跑(高技巧少机会 IR 0.73、中等技巧中机会 0.79、高技巧广撒网 2.0)与理论几乎重合,定律经得起蒙特卡洛检验。

下次老板问「明年能跑赢几个点」,你不该拍脑袋,而该反问他:「我的 IC 现在多少?BR 多少?约束 TC 多少?」——把这三个数填上,收益上限自己就出来了。


本文数据均为自洽合成(AR 信号与真实收益相关 IC,比例建仓),仅用于演示方法。真实落地时:用样本外/purged k-fold 估计 IC、把相关信号聚合成独立 BR 维度、分 regime 估计 TC、并对 IR 上限做压力情景(危机期 TC 坍塌)。代码已全部跑通,数字即输出。

基本面定律 Grinold-Kahn:用信息比率拆解主动管理的收益上限
https://blog.halo26812.eu.org/blog/fundamental-law-active-management
Author halo
Published at 2026年7月18日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨