跳到正文

Alpha 因子:是什么让一个量化信号真正有效

Alpha 因子是将原始市场数据映射为预测未来收益的标量信号的转换函数。不是所有因子都是 alpha——以下是区分真假的方法。

第 8 篇 · 共 10 篇 约 4 分钟

每个量化策略都从同一个问题开始:我应该用什么数据来预测收益?答案是 alpha 因子——从市场数据派生出的标量信号,预测哪些资产会上涨。

但问题在于:大多数在回测中看起来有预测力的因子实际上什么都没预测。它们捕获的是噪声、数据挖掘偏差或市场微观结构伪影,在样本外不会持续。

这篇文章是关于区分真实 alpha 因子和统计幻象的。

Alpha 因子,技术上是什么?

Alpha 因子是一个函数 f: (data) → ℝ,对每个资产在每个时间点产生一个实值信号。信号用于对资产排名——买入排名最高的,卖出排名最低的——期望这个排名能预测未来收益。

理想形式:

ft(Xt(i))=αi(t)f_t(X_t^{(i)}) = \alpha_i^{(t)}

其中 X_t^(i) 是资产 i 在时间 t 的特征数据,α_i^(t) 是预测收益或排名分数。

实践中,因子有多种形式:

  • 简单:P/E、book-to-market、动量
  • 复杂:ML 模型输出、NLP 情感分数、订单流指标

关键区别在于 因子(数据转换)和 alpha(真正预测收益并有真实优势的因子)。大多数因子不是 alpha。

真实 Alpha 的三个属性

属性 1:预测力随时间稳定。

真实 alpha 在不同市场结构下具有一致的预测力。如果你的因子在 2015-2019 年表现出色但在 2020-2024 年完全失效,它不是 alpha——它是结构性依赖的模式,可能已经被套利或停止工作。

检查:绘制滚动窗口的 IC(信息系数)。如果随时间衰减,要怀疑。

属性 2:经济机制可识别。

你能解释为什么因子有效。例如:

  • 价值(book-to-market):便宜股票会均值回归,因为盈利改善或市场对暂时坏消息反应过度。
  • 动量:过去赢家继续跑赢,因为信息缓慢扩散、机构惰性和投资者行为偏差。
  • 盈利能力:高 ROE 的高质量公司获得持久租金,市场不会立即完全定价。

「算法模型发现的」不是经济机制。

属性 3:能存活交易成本。

日换手率 0.05% 且每天 10 bps 优势的因子有效。日换手率 2% 且每天 10 bps 优势的因子可能无效——交易成本吃掉了优势。

因子流水线

构建真实 alpha 因子是一个流水线:

原始数据 → 特征工程 → 因子构建 → 因子测试 → 组合构建

第 1 步:特征工程。 将原始数据(价格、基本面、另类数据)转换为候选特征。

第 2 步:因子构建。 将特征组合为单个标量信号。可以像对一个特征做 z-score 一样简单,也可以像复杂 ML 集成一样复杂。

第 3 步:因子测试。 使用 IC、rank IC 或其他指标测量预测力。测试统计显著性、时间稳定性及不同回望期的稳健性。

第 4 步:组合构建。 将因子信号转换为组合权重,考虑交易成本、风险约束和因子敞口。

因子质量的关键指标

IC(信息系数): IC=corr(factor_valuet,returnt+1)IC = \text{corr}(factor\_value_t, return_{t+1})

时间 t 的因子值与 t+1 的实现收益之间的相关性。持续 IC > 0.02 是中等水平。IC > 0.05 是强。IC ≈ 0 意味着无预测力。

Rank IC(Spearman vs Pearson): Spearman rank IC 测量单调关系,对异常值更稳健。使用 rank IC 作为主要指标。

IC t-stat: 不要只报告 IC——报告 IC 的 t 统计量。IC = 0.03 但 t-stat = 1.2 不显著。IC = 0.03 但 t-stat = 3.5 显著。

因子换手率: 排名从一期到下一期变化多少?高换手率 = 高交易成本。

多空价差: 买入顶五分位、卖出底五分位,定期再平衡的收益。这是你实际交易的。

因子形式:简单到复杂

简单因子(单变量):

def value_factor(book_to_market):
    """账面市值比因子——越高越便宜"""
    return book_to_market

def momentum_factor(prices, lookback=252):
    """动量因子——过去 N 天收益"""
    return prices / prices.shift(lookback) - 1

def volatility_factor(returns, window=20):
    """低波动因子——波动率越低越好"""
    return -returns.rolling(window).std()  # 负号因为我们要做空高波动

复杂因子(多变量组合):

def quality_value_momentum(fundamentals, prices, lookback=252):
    """
    质量-价值-动量组合因子
    """
    # 价值:book-to-market
    value = fundamentals['book_value'] / fundamentals['market_cap']

    # 质量:ROE
    quality = fundamentals['net_income'] / fundamentals['book_value']

    # 动量:12 个月回报
    momentum = prices.pct_change(lookback)

    # 标准化后等权组合
    def zscore(x):
        return (x - x.mean()) / x.std()

    combined = zscore(value) + zscore(quality) + zscore(momentum)
    return combined

在 Arithmion 上实践

在我们的平台上,每个策略都从因子分析开始。在因子进入组合之前,我们为每个因子计算 IC、rank IC、换手率和多空价差。因子研究模块提供实时反馈,帮助你在构建策略时识别有前景的 alpha 信号。

常见错误

没有经济直觉的数据挖掘。 你用 500 个特征跑 ML 模型,发现「10-K 中’收入’这个词出现的次数除以股价」以 IC = 0.04 在样本内预测收益。这可能是噪声——没有经济机制。

前视偏差。 如果你的因子使用了在预测时不可用的数据(如在收盘后才公布的财报但被纳入当天因子),你有前视偏差。因子看起来比实际更好。

存活者偏差。 如果你只在现有公司上测试而忽略退市公司,你在上偏。退市公司通常在退市前下跌——忽略它们使你的因子看起来更好。

对近期数据过拟合。 一个因子在 2018-2022 年表现出色但在 2010-2018 年表现糟糕,是结构性依赖的。它可能仍然有效,但你需要理解原因。

在知识体系中的位置

Alpha 因子是量化策略的基础。IC 分析测试因子是否有预测力。因子 decay 测量因子信号衰减速度。Regime detection 识别因子何时有效何时无效。因子组合覆盖如何将多个因子组合为一个组合。

参考文献

  • López de Prado, Advances in Financial Machine Learning, 第 3 章. Wiley, 2018. ISBN: 978-1-119-48208-6.
  • Aronson, Evidence-Based Technical Analysis, 第 8 章. Wiley, 2006. ISBN: 978-0-471-75671-9.
  • Ang, Asset Management. Oxford University Press, 2014. ISBN: 978-0-19-995932-3.
  • Green, Hand, Zhang, “The Characteristics That Provide Independent Information,” Review of Financial Studies, 2013.