05

检验一个信号:分组与 IC

核心问题因子的 IC 只有零点零几,按它的分数去买股票,收益到底能差多少?

视频 约 9 分钟图解 11 张

第二单元 · 第 2 / 3 节040506

视频

待发布

预计 2026-10-12 17:30(北京时间)发布,以实际公开时间为准。
视频发布后会嵌入在这里,并加入 Bilibili 合集“量化与机器学习入门”。 预计时长约 9 分钟。

学习目标

  1. 读懂月度五分组回测:分组收益是否单调,分组净值怎么走。
  2. 分组和 IC 一起看:一个看收益拉不拉得开,一个看排名准不准。
  3. 读懂多空组合,知道它不一定和大盘无关。
  4. 理解信号衰减和调仓频率、交易成本的关系。

图解讲义

分组怎么做
01每个月月底按分数给三百只股票排队,切成五组,每组六十只;看每组下个月的平均收益,下个月再重新分组。
五组的年化收益
02低波动五组的年化收益一级一级往上:第一组 −3.6%,第五组 +8.0%。IC 只有 0.069,两头每年差了将近 12 个百分点。
三条净值曲线
03第五组十六年变成 3.4 倍,第一组只剩 0.56。但差距不是每年都在扩大,只看几年容易得出相反的结论。
按年拆开看
04按年拆开,最高组减最低组十六年里十二年为正;2019、2020、2025 年都落后了二十个百分点以上。
最高一组减最低一组
05买第五组、卖空第一组,年化 5.9%。它和大盘反着走:大盘涨的月份平均亏 1.7%,跌的月份平均赚 3.3%。
排名和收益,对一对
06累计 IC 走平的年份,和多空组合往下走的年份大体对得上。IC 看排名准不准,分组看收益拉不拉得开,两个都要看。
一个分数,能管多久
07低波动的 IC 从第 1 个月的 0.069 慢慢降到第 6 个月的 0.057,是慢信号;短期反转到第 3 个月就变成负的。
十个因子,一起比一比
08十个因子的分组差距:动量最大(每年 13.4%),ROE 是负的。分组的排名和 IC 的排名不完全一样。
检验一个因子,看这几样
09检验一个因子至少看:分组是否一级一级往上、两头差多少、平均 IC 和正的月份占比、累计 IC、衰减、有没有连续几年不灵。
练习:检验一个信号
10让 AI 用模拟数据带你做:按低波动分五组、画净值和累计 IC,再改成十组、切成前后两半,看结论变不变。
这一节,记住三件事
11分组收益要一级一级往上;分组和 IC 一起看,多空要看是不是跟着大盘走;还要看衰减和难熬的年份。

交互演示合成数据

制作中

五分组:调整分组数和持有期,看分组净值和 IC

让 AI 带你做模拟数据

把下面的提示词整段复制给任意一个 AI 助手。它会先生成一份模拟的股票月度数据(设定对每一节都一样),再带你把这一节的分析做一遍。数据是模拟的,具体数字会和视频不同,但应该看到同样的规律。

任务(第 05 节):完整地检验一个信号。
1. 每个月按 lowvol 把 300 只股票分成五组(第 5 组最稳),每组每只一样多,算五组的年化收益,画五条净值曲线。
2. 算每个月 lowvol 的 IC,画出累计 IC(一个月一个月加起来)。
3. 把五组改成十组,看最高组和最低组的年化差距。
4. 把 192 个月切成前 96 个月和后 96 个月,分别算平均 IC。
提示词开头的模拟数据设定
请用 Python(numpy、pandas,需要时用 scikit-learn)带我做一个量化入门练习。先生成一份模拟的股票月度数据,随机种子用 42:

1. 300 只股票,192 个月(月份编号 0–191,相当于 16 年)。
2. 每只股票有一个固定的波动 sigma,从 0.05 到 0.13 均匀抽取;它的 beta = 0.5 + 5 × sigma。
3. 每个月有五个特征:mom(动量)、val(估值,越大越便宜)、size(规模)、lowvol(低波动)、prof(盈利)。
   - mom、val、size、prof:第 0 个月取标准正态;之后每个月,新值 = 0.9 × 上月值 + 0.44 × 标准正态。
   - lowvol = −sigma + 0.02 × 标准正态。
   - 每个月把五个特征各自在 300 只股票之间标准化(减平均、除以标准差)。
4. 每个月抽一个下个月的大盘收益 mkt_next ~ 正态(0.005, 0.05);再给五个特征各抽一个当月系数 = 基础系数 + 0.01 × 标准正态,基础系数依次是 0.004、0.003、0、0.005、0.002。
5. 下个月收益 ret_next = beta × mkt_next + Σ(当月系数 × 特征) + sigma × 标准正态。
6. 整理成一张长表:每行是一只股票的一个月,列为 month、stock、sigma、五个特征、mkt_next、ret_next。打印前几行和总行数。

后面统一的口径:
- IC:每个月,某一列和 ret_next 在 300 只股票之间的 Spearman 秩相关。
- 年化收益:把每月收益连乘,再按 12 / 月数 开方后减 1。
- 等权基准:每个月 300 只股票 ret_next 的平均。
- 第 m 个月这一行的特征在第 m 个月月底已知,标签 ret_next 是第 m+1 个月的收益。训练模型时,在第 s 个月月底打分,训练只用月份 ≤ s−2 的行(中间隔开一个月)。

接下来按我的要求一步一步做。每一步先用一两句话说明在做什么,再给代码和结果。

应该看到

  • 五组的年化收益从第 1 组到第 5 组一级一级往上,第 5 组比第 1 组高大约 10–20 个百分点。
  • 累计 IC 稳稳往上走。
  • 分成十组时,最高组和最低组的差距比五组更大。
  • 前后两半的平均 IC 都是正的(大约 0.02–0.06),但大小可能差不少。

对不上的时候,把你的结果和这几条一起发给 AI,让它解释是哪一步出了问题。

自测

  1. 五组收益“一级一级往上”,说明了什么?

    • A. 第 5 组一定每个月都赚钱
    • B. 信号在整个排序上都有作用,不只是靠少数几只极端的股票
    • C. 应该只买第 5 组里的一只
    • D. 说明数据有问题
    看答案

    答案 B。单调的分组说明分数越高,平均越好,这比只看最好一组更有说服力。

  2. 一个信号的 IC 明显为正,能不能直接说用它交易能赚钱?

    • A. 能,IC 为正就够了
    • B. 不能,因为 IC 一定是假的
    • C. 能,只要再买多一点
    • D. 不能,还要看换手、成本和能不能买到
    看答案

    答案 D。IC 说的是排序准不准,赚不赚钱还要扣掉交易的成本。

  3. 一个信号衰减得很慢,三个月后的 IC 和一个月后差不多。这说明什么?

    • A. 可以少调仓,省下成本
    • B. 必须每天调仓
    • C. 这个信号没用
    • D. 应该换成别的信号
    看答案

    答案 A。衰减慢,旧分数也不太旧,换得慢一点,成本就少一点。

  4. 低波动的多空组合(买第 5 组、卖空第 1 组)在 2019、2020 年都亏了不少,最可能的原因是什么?

    • A. 低波动因子从此彻底失效了
    • B. 卖空的手续费太高
    • C. 那两年大盘大涨,波动大的股票涨得最猛;这个组合本来就和大盘反着走
    • D. 数据算错了
    看答案

    答案 C。买一组、卖一组,并不等于躲开了大盘。低波动的多空组合押的是大盘别涨得太猛,大涨的年份就会吃亏。

常见坑

  • 只看多空收益,不看各组是否单调
  • 以为多空组合和大盘无关
  • 把 IC 显著当成扣成本后能赚钱
  • 持有期重叠让显著性虚高

下一节

通过检验了,就能相信吗?试的因子多了,总能碰上几个看起来很好的。

06过拟合与多重检验为什么回测越漂亮,越要怀疑?