精华帖子

因子研究(3)——动量效应在 A 股的实证检验与改进

由bqu1vdra创建,最终由bqu1vdra 被浏览 3 用户

1. 摘要

本文基于 BigQuant 平台对 A 股市场 2015—2025 年 5,487 只股票(含 324 只已退市个股)的全量数据,系统检验价格动量因子(Price Momentum)与残差动量因子(Residual Momentum)的有效性,并从三个维度深化研究:

维度 核心发现
因子有效性 A 股存在显著反转效应而非动量效应:最优参数(3 月回看,skip=0)IC 均值 = -0.032,ICIR = -0.244,T 统计量 = -2.66(显著)
残差动量改进 剥离市场 / 行业 Beta 后,残差动量 ICIR 反转为正(+0.15),与原始动量方向相反,揭示 A 股的系统性收益驱动了表观的"反转"信号
市场状态依赖 因子有效性呈现显著状态依赖:震荡市 ICIR = +0.45(正向);牛市 ICIR = -0.36(反向);熊市 ICIR = -0.24(反向)

核心结论:A 股 2015—2025 年整体表现为短期显著反转,中期效应衰减,价格动量因子呈现负向 IC;通过剥离系统性风险后的残差动量方向转正;因子有效性受市场状态显著调节,实盘应用需结合市场环境做动态切换。

2. 研究背景与动机

2.1 动量效应的经典文献背景

动量效应(Momentum Effect)最早由 Jegadeesh & Titman(1993)在美国市场系统记录:买入过去 3~12 个月表现好的股票、卖出表现差的股票,持有 3~12 个月可获得超额收益。此后,该效应在欧洲、亚太新兴市场均有记录,成为资产定价领域与因子投资领域的重要异象。

然而,A 股市场的动量效应长期存在争议:

  • 散户为主的市场结构可能导致过度反应,形成短期反转而非延续;
  • 涨跌停板制度(±10% / ST ±5%)限制了价格连续性;
  • 机构化程度提升(2018 年后外资持续流入)可能改变市场定价机制;
  • 行业板块轮动快,个股层面动量可能被行业效应所掩盖。

2.2 本文研究问题

  1. A 股 2015—2025 年是否存在显著的价格动量效应?方向如何?
  2. 不同回看窗口(lookback)与跳过期(skip)参数如何影响因子有效性?
  3. 剥离系统性风险后的残差动量是否比原始动量更有效?
  4. 因子有效性是否随市场状态(牛 / 熊 / 震荡)发生变化?
  5. 动量信号与基本面因子(ROE、PE)的相关性如何?

3. 数据获取与质量控制

3.1 数据来源

字段 来源 说明
收盘价 / 日收益率 cn_stock_prefactors.close / daily_return 前复权价格
市值 total_market_cap / float_market_cap 用于规模因子与中性化
行业分类 sw2021_level1 / sw_level1_name 申万 2021 一级行业
PE / PB pe_ttm / pb 估值因子
ROE roe_avg_ttm 盈利质量因子

查询时间范围延伸:为保证动量计算所需的历史窗口(最长 12 个月),数据实际从 2013-08-15 开始查询,向前扩展约 500 天。

3.2 幸存者偏差处理

这是本研究最重要的数据质量控制措施。

问题:若仅保留"当前仍在市"的股票进行回测,会系统性高估策略收益(因为已退市的亏损股票被隐性排除)。

处理方式:cn_stock_prefactors 保存所有曾上市股票的完整历史记录 → 查询时不附加"当前仍在市"过滤条件 → 历史任意截面自然包含当时存在的全部股票

量化效果

样本 股票数
全量(含退市) 5,487
纯存续样本 5,163
差值(退市股) 324(占比 5.9%)

3.3 数据过滤规则

WHERE
    st_status  = 0    -- 排除 ST(当期状态过滤)
    AND suspended = 0  -- 排除停牌
    AND list_days > 60 -- 排除次新股(上市不足 60 日)

注:ST 过滤仅针对当期状态,历史上曾为 ST 但已摘帽的股票在其摘帽后的历史数据中仍被保留,避免前视偏差。

3.4 月度截面构建

  • 取每月最后一个交易日为调仓基准日;
  • 计算当月月度收益率:monthly_ret = close.pct_change(1)(月末对月末);
  • 计算下期收益fwd_ret):用于 IC 计算和分层回测的因变量。

4. 价格动量因子构建

4.1 因子定义

$$ \text{MOM}{i,t}(T, s) = \prod{k=s+1}^{T} \left(1 + r_{i,t-k}\right) - 1 $$

其中:

$$ r_{i,t-k}——股票i在第t-k期的月度收益率 $$


T:回看窗口(总月数),s:跳过的最近月数(skip,用于规避短期反转噪声)

直觉解释:在计算 t 时刻的动量时,用 t-s-1t-T 期间的累积收益,而非包含最近 s 个月,以避免短期反转对信号的污染。

4.2 参数网格

参数 取值
lookback(T) 3、6、9、12 个月
skip(s) 0、1 个月

共生成 8 个动量因子mom_3m_s0mom_3m_s1、…、mom_12m_s1)。

4.3 实现代码逻辑

def calc_price_momentum(df_m, lookback, skip):
    log_ret = np.log1p(df_m['monthly_ret'].fillna(0))
    grp = df_m.groupby('instrument')['_log_ret']
    # 总窗口累积减去近期跳过窗口
    roll_total = grp.transform(lambda x: x.shift(skip).rolling(lookback - skip).sum())
    df_m[col] = np.expm1(roll_total)  # 转换回简单收益
    return df_m

4.4 因子截面分布

计算后对所有因子进行:

  1. 极端值处理:上下 1% Winsorize;
  2. 截面标准化:均值 0、标准差 1 的 Z-score 化;
  3. 单调性预判:计算各参数组合在全样本期内的截面分布。

5. 残差动量因子构建

5.1 设计动机

价格动量因子中包含系统性风险暴露(市场 Beta、行业 Beta)带来的超额收益,这部分收益未必来自"个股动量效应"本身,而是行业轮动或市场趋势的折射。残差动量通过回归剥离这一污染:

5.2 模型设定

$$ r_{i,t} = \alpha_i + \beta_i^{\text{mkt}} \cdot r_{\text{mkt},t} + \beta_i^{\text{ind}} \cdot r_{\text{ind},t} + \varepsilon_{i,t} $$

$$ r_{\text{mkt},t} :全市场等权月度收益(市场代理指数) $$

$$ r_{\text{ind},t}:个股所属行业的等权月度收益 $$

$$ 残差动量因子 = 过去 T 个月残差\varepsilon_{i,t} 的累积值(同样跳过最近 skip 个月) $$

5.3 参数设置

参数 说明
RESID_WINDOW 12 个月 滚动 OLS 窗口
RESID_LB 6 个月 残差累积回看月数
RESID_SK 1 个月 跳过最近 1 个月

5.4 实现要点

  • 使用滚动 12 月 OLS(逐股时序回归)提取当期残差
  • 最少需要 6 个有效月度观测才进行回归(否则残差为 NaN)
  • 逐股回归共处理约 5,000+ 只股票

6. 参数敏感性测试

6.1 分析框架

对全部 8 个参数组合分别计算 Rank IC 均值ICIR(IC 信息比率),以热力图形式展示

6.2 实证结果

IC 均值热力图(8 个参数组合):

lookback↓ / skip→ skip=0 skip=1
3 月 -0.0318 -0.0218
6 月 -0.0135 -0.0046
9 月 -0.0055 +0.0001
12 月 -0.0030 +0.0007

ICIR 热力图(绝对值越大越好):

lookback↓ / skip→ skip=0 skip=1
3 月 -0.2442 -0.1543
6 月 -0.0823 -0.0286
9 月 -0.0317 +0.0005
12 月 -0.0162 +0.0040

6.3 关键发现

A 股整体表现为短期反转效应:

  1. 所有 3/6 月回看组合 IC 均值均为负,说明过去 3~6 个月上涨的股票在下月倾向于下跌(反转)

  2. 短期(3 月,skip=0)反转效应最强:IC 均值 -0.032,ICIR -0.244,T 统计量 -2.66(显著)

  3. 随 lookback 延长,效应逐渐减弱:12 月回看时 IC 均值趋近于 0,动量/反转效应均不显著

  4. skip=1(跳过最近 1 个月)后效应明显减弱,印证最近 1 个月的反转噪声是主要驱动力

    最优参数lookback = 3 月,skip = 0(ICIR 绝对值最大)

7. IC 时序分析与统计显著性检验

7.1 最优因子 IC 统计摘要

基于最优参数组合(mom_3m_s0)的全样本 IC 统计:

指标 数值
IC 均值 -0.0318
IC 标准差 0.1303
ICIR -0.2442
T 统计量 -2.66
IC > 0 占比 40.3%(IC < 0 占 59.7%)
有效期数 119 期(月)

统计显著性:T 统计量 = -2.66,超过 5% 显著性水平临界值(|T| > 1.96),反转效应统计显著。

7.2 IC 时序图

IC 时序分析

图示解读

  • 月度 IC 围绕负值波动,滚动 12 月均值(蓝色实线)持续为负;
  • 2015 年牛市阶段与 2019—2020 年结构性行情期间,IC 方向出现阶段性反转;
  • 2021 年以来 IC 波动加大,与市场风格快速切换吻合。

7.3 分年度 IC 统计

年份 IC 均值 IC > 0 占比 有效期数
2015 较负 < 40% 12
2016—2018 持续负 ~35~45% 12
2019—2020 接近 0 ~50% 12
2021—2024 再度转负 ~40% 12

2019—2020 年 IC 均值接近 0,对应外资持续流入、机构集中抱团行情,市场定价机制变化导致短期反转效应短暂消失。

8. 分层回测与净值曲线

8.1 回测框架

参数 取值
分层数 5(五分位,G1 = 最低动量,G5 = 最高动量)
调仓频率 月度(每月末调仓)
权重方案 组内等权
持仓期 1 个月

8.2 交易成本模拟

本研究进行了完整的交易成本估算:

成本项 费率 方向
佣金 0.03% 双边
印花税 0.10% 卖出单边
冲击成本 0.20% 双边估算
滑点 0.10% 双边
完整换仓总成本 0.46%/次

月度调仓下,年化成本拖累约为换手率 × 0.46%,中等换手率(约 65%)对应 年化约 3~4% 的成本拖累

8.3 分层净值结果 分层净值曲线

净年化收益与风险统计(扣除全成本)

分组 年化收益(净) 年化波动 夏普比率 最大回撤 胜率 月均换手率 年化成本拖累
G1(最低动量) 9.43% 30.64% 0.308 -55.24% 48.74% 51.8% 2.86%
G2 9.59% 28.50% 0.336 -53.70% 48.74% 68.7% 3.79%
G3 9.46% 27.97% 0.338 -54.95% 51.26% 71.3% 3.93%
G4 6.75% 28.69% 0.235 -61.23% 49.58% 68.8% 3.80%
G5(最高动量) 2.04% 29.91% 0.068 -68.34% 48.74% 46.3% 2.56%
多空组合(G1-G5) -6.80% 13.60% -0.500 -56.50% 46.22%

8.4 关键观察

  1. 收益单调性反转:G1(最低动量)→ G5(最高动量)对应收益从高到低(9.43% → 2.04%),与反转效应一致
  2. 多空年化 -6.80%(做多低动量、做空高动量),扣成本后多空年化亏损 6.80%,显示反转效应在扣成本前后均可维持方向一致
  3. G5 最大回撤最深(-68.34%):高动量股票往往是前期涨幅大的热门股,下行风险更大
  4. 成本拖累显著:毛收益最高的 G2(13.78%)扣成本后降至 9.59%,成本拖累高达 4.20%,月度换手率 68.7% 是主要原因

成本前后年化收益对比

分组 毛年化收益 净年化收益 成本拖累
G1 12.58% 9.43% 3.15%
G2 13.78% 9.59% 4.20%
G3 13.81% 9.46% 4.35%
G4 10.86% 6.75% 4.11%
G5 4.68% 2.04% 2.64%
LS -7.08% -6.80% -0.28%

9. 原始动量 vs 残差动量对比

9.1 IC 统计对比

原始动量 vs 残差动量

因子 IC 均值 ICIR T 统计量 方向
价格动量(lb=3, sk=0) -0.0318 -0.2442 -2.66 反转(负向)
残差动量(lb=12, sk=1) +0.0086 +0.1512 +1.47 动量(正向)

9.2 深度解读

这一结论具有重要的经济含义

  • 原始动量 IC 为负:A 股整体上过去 3 个月上涨的股票下个月倾向于下跌(短期反转);
  • 残差动量 IC 为正:剔除市场和行业的系统性收益后,股票特异性的动量信号反而是正向的,即特异性强势股倾向于继续强势;
  • 矛盾的根源:A 股的板块轮动快、行业平均动量存在均值回归,导致包含行业暴露的价格动量整体呈负。当剥离行业效应后,个股层面的特质动量才显现正向信号;
  • 实践意义:在构造动量多空组合时,应优先使用残差动量(行业+市值中性化后),而非原始价格动量。

9.3 行业 + 市值中性化效果

处理方式 ICIR IC 均值
原始因子 -0.2442 -0.0318
中性化后 -0.2146 -0.0180
ICIR 变化 +0.0296 正向改善

10. 与基本面因子相关性分析

10.1 分析目的

若动量因子与基本面因子(ROE、PE)高度相关,则动量因子的"超额收益"可能仅是对基本面的变相暴露,不具备独立的因子溢价。

10.2 截面相关性结果

与基本面因子相关性

因子对 月均相关系数 标准差
价格动量 vs PE +0.047 0.111
价格动量 vs ROE +0.055 0.141
残差动量 vs PE +0.024 0.056
残差动量 vs ROE +0.003 0.096

10.3 解读

  1. 动量与基本面因子相关性极低(均值 < 0.06),说明动量信号具有相当程度的独立性
  2. 价格动量与 PE 的弱正相关(+0.047):过去上涨的股票估值略偏高,但幅度很小
  3. 残差动量与 ROE 的相关性趋近于 0(+0.003):剥离市场行业 Beta 后,残差动量几乎与盈利质量无关,进一步确认其因子独立性
  4. 实践含义:动量因子与价值、质量因子的重叠度低,可作为独立因子加入多因子模型,具备分散化价值

11. 市场状态分组检验

11.1 市场状态划分规则

基于全市场等权月度收益的滚动 12 月趋势划分:

状态 判定规则 样本月数
牛市 滚动 12 月收益 > +20% 57 期
熊市 滚动 12 月收益 < -10% 47 期
震荡 其余 15 期

注:由于使用的是全市场等权月度收益而非沪深300,在 2015—2025 年 10 年内,等权指数呈现较多牛市特征(小盘股权重更高)。

11.2 分状态 IC 统计

市场状态识别 分市场状态 IC 分布 分市场状态分层收益

市场状态 IC 均值 ICIR T 统计量 有效期数 结论
牛市 -0.0469 -0.3602 -2.72 57 显著负向(反转更强)
熊市 -0.0334 -0.2365 -1.62 47 弱负向(不显著)
震荡 +0.0306 +0.4530 +1.75 15 正向(动量效应出现!)

11.3 重要发现

A 股动量效应具有显著的市场状态依赖性

  • 震荡市(ICIR = +0.45):动量效应最为显著,追涨杀跌的交易策略在震荡市中能获取正超额收益;
  • 牛市(ICIR = -0.36):反转效应最强,过度追高往往遭到回调,牛市中"低位补涨"策略更优;
  • 熊市(ICIR = -0.24):反转效应存在但不显著(T = -1.62),市场普跌背景下因子整体失效。

这一发现表明,静态使用动量因子在 A 股会导致多数时间做反方向(牛市占比最大),需要构建市场状态感知的动态因子切换机制

12. 综合结论与策略建议

12.1 五大核心结论

结论 实证支撑
C1 A 股 2015—2025 年整体呈中短期反转效应,无传统意义的价格动量 IC 均值 = -0.032,T = -2.66(显著)
C2 短期(3 月)反转效应最强,随回看期延长效应衰减至不显著 IC 均值从 -0.032 衰减至约 0(12 月)
C3 残差动量方向与价格动量相反,剥离市场行业 Beta 后个股特质动量为正 残差 ICIR = +0.15 vs 价格 ICIR = -0.24
C4 因子有效性受市场状态显著调节:震荡市动量为正,牛市反转最强 震荡市 ICIR = +0.45;牛市 ICIR = -0.36
C5 动量因子与基本面因子低相关(< 0.06),具备多因子组合的独立性 与 ROE/PE 相关系数均值 < 0.06

12.2 策略建议:

一:短期反转策略

逻辑:利用已实证的 A 股短期反转效应,做多近期弱势股、减仓近期强势股。

因子:mom_3m_s0(3 月价格动量,无跳过)
方向:负向使用(做多低动量,做空高动量)
调仓:月度
选股:每月末按动量因子升序排列,取前 20% 做多
风控:行业+市值中性化,避免暴露单一行业风险

风险提示

  • 高换手率(月均 65%+)导致年化成本拖累 3~4%,压缩净超额收益;
  • 牛市行情中反转效应最强,但同时是最难执行做空的时期;
  • 建议优先执行多头部分(低动量买入),控制空头风险暴露。

二:残差动量因子替代

逻辑:使用行业+市值中性化后的残差动量,方向正向,与基本面因子独立性更强。

# 残差动量构建步骤:
# 1. 计算全市场等权月收益(市场代理)
# 2. 计算各行业等权月收益(行业代理)
# 3. 滚动 12 月 OLS 回归:r_i = α + β_mkt * r_mkt + β_ind * r_ind + ε
# 4. 提取残差 ε,计算过去 6 月(skip=1)残差累积值

改进效果:ICIR 从 -0.24(反向)转变为 +0.15(正向),因子方向与传统动量理论一致。

三:市场状态感知动态切换

逻辑:根据实时市场状态,动态调整因子方向和权重。

判断市场状态(滚动 12 月等权指数收益):
  > +20%  → 牛市:使用反转因子(负向动量,ICIR = -0.36)
  < -10%  → 熊市:降低仓位(因子失效,ICIR = -0.24 但不显著)
  其他    → 震荡:使用动量因子(正向动量,ICIR = +0.45)

预期效果:将震荡市(ICIR = +0.45)和牛市(反转 ICIR = -0.36)的有效信号均加以利用,理论上可显著提升因子稳定性。

四:多因子组合降噪

逻辑:动量(或反转)因子与 ROE、PE 低相关,叠加后可降低组合噪声。

多因子合成权重建议(参考,需样本外验证):
  残差动量(反转方向使用) : 30%
  ROE_TTM(质量因子)     : 35%
  PE_TTM(估值因子)      : 35%

上述权重仅为示例,应通过样本外数据(如 2022—2025 年)进行验证,防止过拟合!

\

{link}