跳到正文

Alpha 因子是什么

Alpha 因子是一个能预测未来收益的数值。它是量化策略的原材料。本文介绍如何构建、衡量和判断一个因子。

第 5 篇 · 共 8 篇 约 7 分钟

别把 “alpha” 当成一种感觉。它就是一个数字。你可以按它给股票排序,可以回测它,也可以把它干掉。

如果你走进量化面试,说”我找到了一个 alpha 因子”,面试官听到的其实是:“我有一个把股票特征映射成实数分数的函数,而且这个分数在扣除成本后,历史上能预测未来收益。“Alpha 就是这么回事。剩下的都是执行。

这篇文章是地基:什么是因子、怎么衡量因子,以及为什么现在大多数发表过的因子都在亏钱。

真正经得起推敲的定义

Alpha 因子是一个由股票特征构成、用来预测未来收益的函数。形式化地说:

f(xi(t))≈ri(t,t+h)f(\mathbf{x}_i^{(t)}) \approx r_i^{(t, t+h)}

其中,xi(t)\mathbf{x}_i^{(t)} 是股票 ii 在时间 tt 的特征向量,ri(t,t+h)r_i^{(t, t+h)} 是从 tt 到 t+ht+h 的实际收益。如果一个因子对股票的排序,平均来说和它们未来收益的排序一致,那这个因子就是有用的。

有三点需要注意:

  1. 它是一个标量。 每个因子,不管多复杂,最后都会变成每个日期、每只股票对应的一个数字。如果你的输出是向量或概率分布,那你构建的是模型,不是因子。模型要经过某种聚合,才会变成因子。
  2. 它预测的是排序,不是收益水平。 不要求 f(x)=rf(x) = r 一定成立。你需要的是平均来看 f(xA)>f(xB)⇒rA>rBf(x_A) > f(x_B) \Rightarrow r_A > r_B。真正能赚钱的是排序信息。
  3. “未来收益”意味着预测周期很重要。 预测未来 1 天收益的因子,和预测未来 12 个月收益的因子,完全不是一回事。预测周期是因子定义的一部分——改了周期,实际上就改了这个资产。

因子在实践中长什么样

每个人都应该知道的五个经典因子:

  • PE 比率(未来 12 个月)——盈利收益率。长期来看,便宜的股票会跑赢昂贵的股票(历史上如此)。
  • 动量(12-1)——过去 12 个月的总收益,减去最近一个月的收益。赢家会继续赢 3-12 个月,然后均值回归。
  • 盈利意外(SUE)——实际 EPS 减去一致预期,再除以意外 EPS 的标准差。正向意外会在大约 60 天内产生漂移收益。
  • 内幕买入——高管和董事用现金在公开市场买入自家股票(不是期权)时,股票往往会在未来 6-12 个月跑赢。
  • 卖空兴趣——高卖空兴趣预示负收益(本质上是一个情绪/被迫买入渠道)。

这些都是函数。每个函数都会输出一个数字。每个都被发表、复现、交易,而且从 1990 年代开始就一直有人拥挤在里面。有些现在仍然有效,有些已经不行了。

一个因子要能交易,必须满足的三个性质

你可以把 10,000 个候选因子扔进回测。大多数因子只会在某个特定时期看起来不错。真正能经得起考验的很少,而判断它们要严格测量下面三个性质。

性质 1:IC(信息系数)

ICt=corr(f(xi(t)), ri(t,t+1))\text{IC}_t = \text{corr}\left(f(\mathbf{x}_i^{(t)}),\ r_i^{(t, t+1)}\right)

IC 是时间 tt 的因子值与下一期实际收益之间的相关系数。每天做一次横截面计算,然后观察这条时间序列。

参考标准:

IC 范围含义
< 0.02统计上勉强有意义。大概率不值得交易。
0.02 – 0.05不错。配合合理的换手率可以交易。
0.05 – 0.10强。对不拥挤的因子来说很少见。
> 0.10要么非常优秀,要么存在前视偏差。保持怀疑。

如果 IC 能持续十年高于 0.05,那就是一个很棒的因子。别指望能找到很多这样的因子。

性质 2:IC IR(IC 的信息比率)

IC IR=mean(ICt)std(ICt)\text{IC IR} = \frac{\text{mean}(\text{IC}_t)}{\text{std}(\text{IC}_t)}

IC IR 衡量的是因子预测能力的信噪比。两个因子可能有相同的平均 IC(比如 0.04),但如果它们的预测在时间上的稳定性不同,IC IR 可能差得非常远。

目标值:

  • IC IR > 0.5 → 机构级别。AQR、Two Sigma、DE Shaw 都在这个水平交易。
  • IC IR 0.3 – 0.5 → 不错。大多数发表过的因子都在这里。
  • IC IR < 0.3 → 噪声太大。扣除成本后很可能无法交易。

IC IR 为 1.0 的因子就是金矿。不过,你大概永远不会在已发表的文献里找到这种因子。

性质 3:换手率

换手率表示每次再平衡时,投资组合有多大比例发生了变化。定义为:

Turnovert=12∑i∣wi(t)−wi(t−1)∣\text{Turnover}_t = \frac{1}{2}\sum_i \left| w_i^{(t)} - w_i^{(t-1)} \right|

其中 wi(t)w_i^{(t)} 是资产 ii 在时间 tt 的权重。12\frac{1}{2} 是为了避免重复计算(卖出一个仓位的同时就对应买入一个仓位,反过来也一样)。

低换手率 → 低交易成本 → 能留下来的净 alpha 更多。大多数机构级多空股票策略的年换手率在 50-150%。换手率超过 300% 的策略,必须用更高的毛 alpha 才能过关。

用 Python 计算 12 个月动量的 IC

这是标准例子:计算 12 个月动量相对于未来 1 个月收益的 IC,并画出 IC 随时间变化的序列。

import numpy as np
import pandas as pd
import yfinance as yf
from scipy import stats
import matplotlib.pyplot as plt

# Pull 5 years of prices for the S&P 100 universe
tickers = ["AAPL", "MSFT", "AMZN", "GOOGL", "META", "TSLA", "JPM", "JNJ",
           "V", "PG", "XOM", "BAC", "NVDA", "WMT", "DIS", "HD", "MA", "PFE"]

px = yf.download(tickers, start="2019-01-01", end="2024-12-31",
                 auto_adjust=True)["Close"]
px = px.dropna(axis=1, thresh=int(len(px) * 0.95))  # keep liquid names

# Monthly returns
monthly_ret = px.resample("ME").last().pct_change()

# 12-month momentum, skip the most recent month (the "12-1" recipe, compounded)
mom_12_1 = ((1 + monthly_ret).rolling(11).apply(np.prod) - 1).shift(1)

# Forward 1-month return
fwd_ret = monthly_ret.shift(-1)

# Compute cross-sectional rank IC each month
ic_ts = []
for d in mom_12_1.index[:-1]:
    f = mom_12_1.loc[d].dropna()
    r = fwd_ret.loc[d].dropna() if d in fwd_ret.index else None
    if r is None:
        continue
    common = f.index.intersection(r.index)
    if len(common) < 10:
        continue
    rho, _ = stats.spearmanr(f[common], r[common])
    ic_ts.append({"date": d, "ic": rho})

ic = pd.DataFrame(ic_ts).set_index("date")["ic"]

print(f"Mean IC      : {ic.mean():.4f}")
print(f"Std IC       : {ic.std():.4f}")
print(f"IC IR        : {ic.mean() / ic.std():.2f}")
print(f"% IC > 0     : {(ic > 0).mean():.1%}")

提示词

用 yfinance 拿 18 只大盘股数据,算 12-1 动量因子,用 scipy.stats.spearmanr 算截面 rank IC,打印均值 IC、标准差、IC IR、IC>0 比例。

预期输出:

Mean IC      : 0.0384
Std IC       : 0.1102
IC IR        : 0.35
% IC > 0     : 58.3%

平均 IC 约为 0.04、IC IR 约为 0.35——这是教科书式的 12-1 动量结果。不算惊艳,但可以交易。% IC > 0 比你想象中更重要:在横截面排序层面,60% 的时候判断正确的因子,和 55% 的时候判断正确的因子,复利出来的结果不一样。

要画出 IC 时间序列以及滚动 12 个月均值:

fig, ax = plt.subplots(2, 1, figsize=(11, 7), sharex=True)

ax[0].bar(ic.index, ic.values, width=20, color=["#2a8f2a" if v > 0 else "#c43d3d" for v in ic])
ax[0].axhline(0, color="black", lw=0.7)
ax[0].set_ylabel("Monthly IC")
ax[0].set_title("12-1 Momentum IC — S&P 100 sample, 2019-2024")

ax[1].plot(ic.index, ic.rolling(12).mean(), color="#1f4e8b", lw=2)
ax[1].axhline(0, color="black", lw=0.7)
ax[1].set_ylabel("Rolling 12-month mean IC")
ax[1].set_xlabel("Date")

plt.tight_layout()
plt.show()

提示词

用 matplotlib 画 IC 时间序列:上子图画每月 IC 柱状图(正绿负红),下子图画 12 月滚动均值。

你会看到几个明显的负 IC 时期。2022 年对动量来说非常残酷——多头赢家、空头输家都被打得很惨,因为当时的市场状态由均值回归主导。这就是你要识别的两种失败模式。

每个因子都会掉进的两种失败模式

因子通常以两种方式失败:

失败 1:它什么也预测不了。 IC 在统计上无法与零区分。这个因子只是披着公式外衣的噪声。你可以很快发现这种情况——用 60 个月的数据计算 IC,再做 t 检验。如果 t 统计量低于 2,就别继续了。

失败 2:毛收益赚到了,但被成本吃掉。 因子确实有预测能力,IC 达到 0.05 以上。但年换手率是 400%,每次往返交易要付 5 个基点。净 alpha 变成负数。这是最安静、也最致命的杀手——回测显示 Sharpe 为 1.2,你一上线实盘就开始失血,因为真实成本是回测假设的 3 倍。

IC = 0.10、换手率 1000% 的因子,可能还不如 IC = 0.03、换手率 50% 的因子。算术不会给你面子。

坦白说说因子动物园

截至 2025 年,学术金融文献里大约发表过 200 多个因子——价值、动量、质量、低波动率、流动性、盈利能力、投资、应计项目、分析师修正、情绪、期限结构、carry、偏度、离散度、跳跃风险,等等。

这 200 个因子里,也许只有 50-80 个在剔除数据挖掘痕迹、限制在样本外时期,并针对已知发表偏差做调整后,仍然能产生统计显著的 IC。

这 50-80 个里面,也许只有 20-30 个在考虑借券、冲击成本和价差后,能在机构规模下经受住交易成本。

这 20-30 个里面,你可能有 5-10 个是真正的优势。剩下的,你是在和 AQR(因子产品规模超过 2,000 亿美元)、BlackRock、State Street,以及一百家从论文发表后就开始交易这些因子的中小型量化机构一起交易。

大多数发表过的因子现在都被套利掉了。真正的优势不在于找到一个因子,而在于找到一个还没有被足够多的人交易过的因子。

所以现在的元游戏是因子组合、因子择时,以及寻找大型量化基金还没有加载的非标准特征(另类数据、结构性信号)。本节关于组合的文章会详细讲组合这个角度。

它在整个体系中的位置

Alpha 因子是原材料。IC 分析是衡量因子的方式。因子衰减告诉你它什么时候停止有效。换手率分析是交易前的现实检查。组合文章会讲如何把多个因子合并成一个投资组合。

在 Arithmion SDK 里,因子分析模块可以针对你定义的任意因子和指定的任意股票池,输出 IC、rank IC、IC IR、换手率和衰减曲线。这里你要手算的东西,它能更快地完成,而且可以覆盖更长的历史。

References

  • Grinold & Kahn, Active Portfolio Management: A Quantitative Approach to Generating and Exceeding Returns, Ch. 4-5. McGraw-Hill, 2000. ISBN: 978-0-07-135638-4.
  • Ang, Asset Management: A Systematic Approach to Factor Investing, Ch. 9-11. Oxford University Press, 2014. ISBN: 978-0-19-995932-3.
  • Jegadeesh & Titman, “Returns to Buying Winners and Selling Losers,” Journal of Finance, 1993.
  • Harvey, Liu, Zhu, “…and the Cross-Section of Expected Returns,” Review of Financial Studies, 2016 (the factor zoo paper).
  • Arithmion SDK — arithmion.factor.analyze() module documentation.