📊 动量因子

动量因子是量化投资中经久不衰的核心因子之一。它捕捉"强者恒强"的市场规律,帮助投资者识别趋势延续的强势股票。本文将从原理、计算到实战,为你全面解析动量因子。

📅 2026.01.15 ⏱ 阅读约 12 分钟 📁 分类:量化选股

什么是动量因子?

动量因子(Momentum Factor)是指股票价格或收益率的趋势延续性。简单来说,过去表现好的股票,未来一段时间内往往继续表现好;过去表现差的股票,未来也可能继续走弱。这就是金融学中著名的"动量效应"(Momentum Effect)。

动量因子最早由 Jegadeesh 和 Titman 在 1993 年系统性地提出。他们发现,买入过去 3-12 个月涨幅最大的股票,同时卖出同期跌幅最大的股票,可以获得显著的超额收益。此后,动量因子成为量化投资领域最经典的因子之一,与价值因子、规模因子、低波动因子并称为"四大天王"。

💡 核心思想

动量因子背后的行为金融学解释是:投资者存在反应不足羊群效应。当利好消息出现时,股价往往不会一步到位地反映所有信息,而是逐步消化,形成趋势。同时,追涨杀跌的行为会进一步强化趋势,使得动量效应得以持续。

动量因子的计算方法

动量因子的计算方式有很多种,最常用的是累积收益率法价格动量法。以下是几种经典的计算方法:

1. 简单收益率动量

计算股票在过去 N 个月(通常为 6 个月或 12 个月)的累计收益率,作为动量因子值。

Momentum = (Pt - Pt-N) / Pt-N

其中 Pt 是当前价格,Pt-N 是 N 个月前的价格。注意:通常要剔除最近一个月的数据(即使用 t-2 到 t-12 的收益率),以规避短期反转效应的影响。

2. 累积超额收益率动量

计算股票相对于市场指数的累积超额收益率,更能剔除市场整体走势的影响。

Momentum = Σ (Ri - Rm)

其中 Ri 是股票日收益率,Rm 是市场指数同期日收益率,求和区间为过去 6-12 个月。

3. 标准化动量

将累积收益率除以期间波动率进行标准化,以控制风险差异。

Momentum = (Rcum) / σ(R)

这种调整后的动量因子在风险平价策略中非常常用。

动量因子在选股中的应用

在实际量化选股中,动量因子通常与其他因子组合使用,形成多因子模型。以下是几种经典的动量选股策略:

📌 策略一:纯动量选股

在每个月底,计算全市场股票的 12 个月动量(剔除最后1个月),排名前 10% 的股票作为买入组合,排名后 10% 的股票作为卖出组合。该策略在 A 股市场年化超额收益约 8%-15%,但回撤较大,适合风险承受能力强的投资者。

📌 策略二:动量 + 价值组合

将动量因子与低市盈率(PE)、低市净率(PB)等价值因子结合。先用量化模型筛选出动量排名前 30% 的股票,再从中选择估值最低的 20 只。这种组合既能捕捉趋势,又避免追高泡沫股,夏普比率更高。

📌 策略三:行业中性动量

在每个行业内分别计算动量因子,然后选择各行业内动量最强的股票。这种策略消除了行业配置偏差,更纯粹地捕捉个股层面的动量效应。适合机构投资者进行行业轮动组合的增强。

动量因子的实战代码(Python 示例)

以下是一个简单的动量因子计算与选股示例,使用 Python 和 pandas 库:

# 计算 12 个月动量因子(剔除最近1个月) import pandas as pd import numpy as np def calc_momentum(price_df, lookback=252, skip=21): """ 计算动量因子 price_df: DataFrame, 列为股票代码,行为日期,值为复权价格 lookback: 回望期(默认252个交易日 = 12个月) skip: 跳过最近交易日数(默认21 = 1个月) """ # 计算过去 lookback 天的累计收益率 momentum = price_df.shift(skip) / price_df.shift(skip + lookback) - 1 return momentum # 选股:每月末选取动量排名前10%的股票 def select_top_momentum(momentum_df, top_pct=0.1): # 按行排名,百分比排名 ranks = momentum_df.rank(axis=1, pct=True) # 选出排名前 top_pct 的股票 selected = ranks.apply(lambda x: x.index[x <= top_pct].tolist(), axis=1) return selected # 示例用法 # price_data = pd.read_csv('stock_prices.csv', index_col=0, parse_dates=True) # mom = calc_momentum(price_data) # top_stocks = select_top_momentum(mom, top_pct=0.1)

动量因子的优缺点

✅ 优点

  • 逻辑直观,容易理解
  • 历史回测表现优异
  • 与多种因子低相关,分散化效果好
  • 适用于不同市场和资产类别
  • 可以结合趋势跟踪策略使用

⚠️ 缺点

  • 存在动量崩溃风险(急跌时损失大)
  • 交易成本较高(换手率大)
  • 短期反转效应干扰
  • 在震荡市中表现不佳
  • 需要定期再平衡

动量崩溃与风险控制

动量因子最著名的风险就是动量崩溃(Momentum Crash)。在市场发生剧烈反转时(如 2008 年金融危机、2020 年疫情初期),前期涨幅最大的股票往往暴跌最狠,导致动量策略遭受巨大回撤。

控制动量崩溃风险的方法包括:

动量因子与其他因子的关系

动量因子与以下因子具有有趣的交互关系:

在 A 股市场的实战经验

A 股市场的动量效应与美股有显著差异:

🔑 股老师建议

对于个人投资者,不建议单独使用动量因子进行择时或选股。更好的方式是将动量因子作为辅助工具:在确定基本面优秀的前提下,用动量因子选择最佳入场时机。例如,先用 基本面选股 筛选出 50 只优质股票,然后用动量因子从中挑选趋势最强的 10 只进行投资。

动量因子 量化选股 趋势跟踪 多因子模型 股票策略 因子投资