量化概念 02:IC 怎么算
IC 到底是怎么算出来的?
两步:横截面 + 时间平均
算 IC 不用看整个历史的涨涨跌跌,只看两样东西的配对:每个股票的因子值,和它未来的收益。
第一步,横截面。挑一个日子(比如今天),把当天所有股票的因子值和"未来 N 天的收益"放在一起,算一个相关系数。这个数,就是"今天的 IC"。
第二步,时间平均。只算一天不靠谱,把过去很多个交易日都这么算一遍,每天得一个 IC,然后取平均——这就是这段时期这个因子的平均 IC。
打个比方:每次考试押一次名次,算一次"押得准不准",考了很多次再取平均,就是你的整体押题水平。
只比名次,不比分数:Rank IC
算相关性有两种方式:
- Pearson:直接拿"因子分数"和"收益"比。问题是因子分数经常有极端值,一个异常值就能把结果带偏。
- Rank IC:先把两边都换成排名,再比排名。只看顺序、不看具体分数,抗极端值。
实践中基本都用 Rank IC——就像押名次只需要顺序,不需要猜每个人的考分。
一个数值例子
某一天,5 只股票:
- A:因子值 9,未来 10 天涨幅 +6%
- B:因子值 7,未来 10 天涨幅 +5%
- C:因子值 5,未来 10 天涨幅 +4%
- D:因子值 3,未来 10 天涨幅 +2%
- E:因子值 1,未来 10 天涨幅 +3%
按因子值排名:A → B → C → D → E 按真实涨幅排名:A → B → C → E → D
对比两列:前三名完全一致,只有最后两名反了。吻合度很高,这一天的 IC ≈ 0.9——接近满分 1,说明基本全押对。
真实数据里很少这么整齐,单日 IC 往往不高,所以单看一天不够,要攒很多天取平均,才是这个因子整体水平的估计。
多大的数算"好"
量化里 IC 普遍很低,别拿"相关系数 0.8 才算强"的常识来套:
- 0.02 ~ 0.05:常见且可用的水平
- 0.05 以上:已经算很不错的因子
- 0.1 以上:基本不可能是真的,多半是数据出了问题或过拟合
别忘了两个参数
- N 是几:未来 N 天的收益。N=1 是隔天,N=10 是持有 10 天。选 N 就是选"预测多远的未来",N 不同,IC 也不同
- 算多久:样本时间太短,平均 IC 可能只是运气好。样本越长,结论越可信
小结
IC 的算法就两步——先横截面、再时间平均,剩下的只是参数选择。
寒蝉 Hancic

