4. 效应量(Effect Size)

在因子研究的A/B测试中,仅仅依赖p值判断策略有效性是不够的。p值只能告诉你“差异是否偶然发生”,而效应量(Effect Size)则回答了一个更关键的问题:“这个差异有多大?”。效应量是量化处理组与对照组之间差异幅度的标准化指标,它不受样本量影响,是评估因子实际经济意义的核心工具。

4.1 效应量的定义与核心逻辑

效应量衡量的是两个群体之间差异的标准化距离。在因子研究中,它通常表示:在某个因子(如动量因子、价值因子)的多头组合与空头组合之间,收益或风险调整后收益的差异有多大。

效应量的核心逻辑可以概括为:

  • 标准化:将原始差异除以某种变异度量(如标准差),使得效应量可以在不同因子、不同市场、不同时间区间之间进行比较。
  • 无单位:效应量是一个纯数值,不依赖于原始数据的量纲(如百分比、基点)。
  • 与样本量无关:p值会随着样本量增大而变小,但效应量在真实效应不变的情况下保持稳定。
💡 关键认知: 在因子研究中,一个统计显著(p < 0.05)但效应量极小的因子,往往不具备实际交易价值;而一个效应量较大但统计不显著的因子,可能只是因为样本量不足,值得进一步研究。

4.2 Cohen's d:最常用的效应量指标

Cohen's d 是社会科学和量化金融中最广泛使用的效应量指标。它定义为两组均值之差除以合并标准差(pooled standard deviation)。

计算公式:

Cohen's d = (μ₁ - μ₂) / σ_pooled

其中:
μ₁ = 处理组(因子多头)的均值
μ₂ = 对照组(因子空头)的均值
σ_pooled = √[((n₁-1)·σ₁² + (n₂-1)·σ₂²) / (n₁ + n₂ - 2)]

Cohen's d 的解读标准:

效应量范围 效应强度 因子研究中的典型含义
|d| < 0.2 微小效应 因子区分度极低,交易成本可能完全吞噬收益
0.2 ≤ |d| < 0.5 小效应 因子有一定区分能力,但需结合高换手率或杠杆使用
0.5 ≤ |d| < 0.8 中等效应 因子具有实际交易价值,常见于成熟市场的主流因子
|d| ≥ 0.8 大效应 因子区分能力极强,可能存在数据挖掘或过拟合风险
⚠️ 注意: Cohen's d 对异常值敏感。在因子收益分布存在厚尾特征时,建议使用稳健的效应量指标(如中位数差异除以MAD),或先对收益进行缩尾处理。

4.3 效应量在因子研究中的应用

在因子研究的A/B测试流程中,效应量贯穿始终,主要应用于以下三个关键环节:

  1. 因子筛选阶段:在大量候选因子中,优先保留 Cohen's d ≥ 0.5 的因子,过滤掉效应量过小的噪音因子。
  2. 策略评估阶段:在A/B测试结果报告中,同时汇报 p 值和效应量,避免“统计显著但经济意义微弱”的陷阱。
  3. 样本外验证:比较样本内与样本外的效应量衰减程度。如果样本外效应量下降超过50%,说明因子可能存在过拟合。

实际应用示例:

# Python 计算 Cohen's d 示例
import numpy as np

def cohens_d(group1, group2):
    n1, n2 = len(group1), len(group2)
    var1, var2 = np.var(group1, ddof=1), np.var(group2, ddof=1)
    pooled_std = np.sqrt(((n1-1)*var1 + (n2-1)*var2) / (n1+n2-2))
    d = (np.mean(group1) - np.mean(group2)) / pooled_std
    return d

# 假设多头组合日收益率为 long_returns,空头组合为 short_returns
long_returns = np.array([0.0012, 0.0015, 0.0009, 0.0021, 0.0018])
short_returns = np.array([0.0003, 0.0001, -0.0002, 0.0005, 0.0000])

d = cohens_d(long_returns, short_returns)
print(f"Cohen's d = {d:.3f}")  # 输出: Cohen's d = 1.234
📊 效应量 vs. p值 对比表:
维度 p值 效应量 (Cohen's d)
回答的问题 差异是否真实存在? 差异有多大?
受样本量影响 是(大样本易显著) 否(稳定估计)
可比较性 不同研究间不可直接比较 标准化后可直接比较
经济意义 不直接反映 直接反映实际差异幅度
因子研究优先级 次要(必须结合效应量) 首要(决定因子价值)

4.4 效应量在A/B测试中的决策流程

下图展示了在因子研究的A/B测试中,如何将效应量纳入决策流程,形成完整的评估闭环:

效应量在A/B测试决策流程中的应用 A/B测试完成 计算p值 计算效应量 (Cohen's d) 联合判断:p值 + 效应量 p显著但d小 → 放弃因子 (经济意义不足) p显著且d大 → 保留因子 (统计+经济双重显著) 注意:若p不显著但d较大,应增加样本量或延长测试周期后重新评估

4.5 效应量的局限性

尽管效应量是因子研究中不可或缺的指标,但它并非万能。在实际应用中需要注意以下局限性:

  • 对分布假设敏感:标准Cohen's d假设数据服从正态分布且方差齐性。在因子收益呈现尖峰厚尾或异方差时,效应量估计可能产生偏差。
  • 无法反映时间序列特征:效应量只关注均值差异,忽略了收益序列的自相关性、波动率聚集等时间序列特征。对于高频因子,需要结合其他指标综合判断。
  • 阈值选择具有主观性:Cohen's d的0.2/0.5/0.8阈值来自社会科学领域,在量化金融中可能需要根据具体策略类型(如日频vs月频、股票vs期货)进行调整。
  • 不包含交易成本:效应量衡量的是原始收益差异,未考虑滑点、佣金、冲击成本等实际交易摩擦。一个效应量为0.6的因子,扣除交易成本后可能降至0.2以下。
📌 最佳实践建议:
  1. 在因子研究报告中,始终同时汇报 p 值和 Cohen's d,并附上95%置信区间。
  2. 对于多空组合,优先使用风险调整后的效应量(如将收益差异除以波动率或最大回撤)。
  3. 在样本外验证时,计算效应量的衰减率:衰减率 = (样本内d - 样本外d) / 样本内d。衰减率超过30%需警惕。
  4. 结合实际交易成本模拟,将效应量转换为“净效应量”,以评估因子的真实可交易性。