【量化投资从入门到精通 #36】历史K线能挖出赚钱因子吗:3 个技术因子的 IC 检验

进入因子层。#33 讲了因子 = 可排序的数、用"分组看均值"检验;这篇升级成专业做法——IC 检验,并用麦蕊历史 K 线直接算 3 个技术因子。

一、这个方法解决什么投资问题

33 的分组检验有个软肋:只比高低两组均值,主观、还容易被单只极端股带偏(京东方A 一只就贡献了 −27%)。

专业机构不看"分组均值",而是算 IC(Information Coefficient,信息系数)——因子的排名和"未来收益排名"有多相关。

  • IC 高 → 因子能把"未来会涨的"排在前面
  • IC 稳定 → 不止某一期灵,长期都灵

本文不靠财报数据(那是 #34/#35 的事),只用麦蕊历史 K 线就能算的 3 个技术因子,老老实实跑一遍 IC,看它们到底有没有用。

二、核心思想:IC 是因子实战的标尺

IC 用 Spearman 秩相关:把"因子值"和"未来收益"各自排成名次,再算名次的相关。好处是只认顺序、不认数值大小,对离群值不敏感。

关键不在"算一次",而在滚很多期、得到一串 IC,再看两个统计量:

  • IC 均值:方向对不对、整体多强。业界经验闸线 |IC均值| > 0.03 才算"有信号"。
  • ICIR = IC均值 / IC标准差:稳不稳。业界经验 |ICIR| > 0.5 才算"稳定可用"。

两者都满足才进实盘,缺一个都只能当"弱信号"甚至"噪声"。

三、实操演示

def spearman(xs, ys):
"""因子值名次 vs 未来收益名次的秩相关"""
def rank(v):
r = [0.0] * len(v)
for pos, i in enumerate(sorted(range(len(v)), key=lambda i: v[i])):
r[i] = pos + 1.0
return r
rx, ry = rank(xs), rank(ys)
n = len(xs); mx, my = sum(rx)/n, sum(ry)/n
cov = sum((rx[i]-mx)*(ry[i]-my) for i in range(n))
return cov / (math.sqrt(sum((rx[i]-mx)2 for i in range(n))) *
math.sqrt(sum((ry[i]-my)
2 for i in range(n))))

def factors(v, t):
"""时点 t(已收盘)只用 t 及之前数据"""
c = [r["close"] for r in v]
rets = [c[i]/c[i-1]-1 for i in range(t-20+1, t+1)]
return {
"动量20日": c[t]/c[t-20]-1, # 过去20日涨幅
"波动20日": -std(rets), # 取负→低波动得高分
"量能扩张": (sum(量,t-19..t)/20) / (sum(量,t-60..t)/61) - 1,
}

滚动 8 个非重叠截面期(每期回看 20 日、观察未来 20 日),对每个因子攒出一串 IC。

真实输出(2026-08-06,20 只标的 × 250 根前复权 K 线,8 个非重叠截面期):

因子 IC 均值 IC 标准差 ICIR IC>0 期数 结论
动量20日 −0.008 0.242 −0.03 4/8 无预测力
波动20日 +0.049 0.268 +0.18 4/8 有信号但不稳定(正向)
量能扩张 +0.077 0.291 +0.26 5/8 有信号但不稳定(正向)

逐期 IC 明细(注意摆动幅度):动量 +0.01 +0.08 −0.09 −0.08 −0.27 +0.24 +0.38 −0.33。

四、结果解读

三个因子没有一个达到"稳定可用"(ICIR>0.5):

  • 动量20日:IC 均值 −0.008,连 0.03 的闸线都没摸到 → 这段样本上毫无预测力。和 #33 测出的"反转占优"、#06 的"滞后一阶自相关全 ≤ 0"完全一致。
  • 波动 / 量能:IC 均值过了 0.03,但 ICIR 只有 0.18 / 0.26,离 0.5 差得远 → 有微弱信号但不稳定,今天灵明天不一定灵。

更致命的是逐期摆动:动量 IC 在 +0.38 和 −0.33 之间反复横跳。如果你只挑"最近表现最好"的那一期当结论,会被运气骗得团团转。

这节课的结论很反直觉但很重要:纯技术因子在成熟 A 股上的预测力普遍偏弱。别神话指标——一个 ICIR 只有 0.2 的因子,实战里大概率被成本吃掉(见 #31/#32)。

五、常见陷阱

  • 只看 IC 均值不看标准差:均值 0.05 看着不错,但标准差 0.29 → 基本是噪声。
  • ICIR 没过线就上实盘:弱信号 + 交易成本 = 必然亏(#43 会算给你看)。
  • 挑"最好的一期"当结论:IC 正负交替是常态,单期好看纯属运气。
  • 因子用了未来数据:factors(v, t) 必须只用 t 及之前的收盘价,否则 IC 虚高(前视,#04)。
  • 样本期太短就下注:8 期 IC 都嫌少,机构通常要上百期。

六、小结 + 下篇预告

IC 检验是因子能不能上战场的标尺:|IC均值|>0.03 有信号,|ICIR|>0.5 才稳定。实测 3 个纯技术因子均偏弱(动量无预测力、波动/量能不稳定),提示"指标万能"是幻觉。

下篇 #38 专门讲因子的陷阱:换一个回看窗口结论就翻转、前半段灵后半段不灵、热门因子挤成一团一起跌——这些坑每一个都能让回测里的"圣杯"在实盘现原形。

免责声明

本文为量化方法教学,标的为示例,不构成投资建议,不承诺收益。投资有风险,入市需谨慎。

posted @ 2026-08-30 07:26  量化分析码农  阅读(41)  评论(0)    收藏  举报