跳到正文

动量与均值回归:同一枚硬币的两面

动量和均值回归常被呈现为对立的策略。它们实际上是同一市场结构的两个视角——两者可以共存。

第 2 篇 · 共 10 篇 约 3 分钟

每个量化交易者都遇到过这个争论:应该交易动量(过去赢家继续上涨)还是均值回归(过去赢家会反转)?

数十年研究的答案:两者都存在于市场中,在不同时间范围、不同市场结构下、由不同原因驱动。将它们视为互斥是错误所在。

什么是动量?

动量是过去赢家倾向于在未来跑赢过去输家的倾向。也叫「趋势跟踪」或「时间序列动量」。

机制:信息缓慢扩散穿过市场。当好消息到达时,不是所有投资者都立即反应。价格随更多投资者买入而逐步上涨。这种漂移持续直到价格完全反映信息。

动量的证据:

  • 过去 6-12 个月上涨的股票倾向于在未来 1-3 个月继续上涨。
  • 这种效应存在于各资产类别(股票、债券、大宗商品、外汇)。
  • 效应早在 1800 年代就有记录(Jegadeesh and Titman, 2001; Daniel and Moskowitz, 2016)。

什么是均值回归?

均值回归是过去赢家倾向于表现不佳而过去输家倾向于跑赢的倾向——与动量相反。也叫「逆向」或「反转」。

机制:价格有时由于噪声交易、流动性冲击或行为偏差而过度偏离公允价值。价格最终回归公允价值。这种回归是可预测的。

均值回归的证据:

  • 日内反转:今天上涨的股票倾向于明天下跌(非常短期)。
  • 后 Earnings 公告漂移(PEAD):盈利惊喜为正的股票经历正向漂移,不是反转(这是中期动量,不是反转)。
  • 长期反转:3-5 年视野,过去赢家表现不如过去输家(这是长期均值回归)。

时间尺度分解

关键洞察:动量和均值回归在不同时间尺度上运行,它们并不冲突。

视野效应
分钟到小时均值回归(日内反转)
天到周动量(短期动量)
1-12 个月动量(中期动量)
1-3 年均值回归(长期反转)
3-5+ 年动量(超长期动量)

在日视野:均值回归占主导。在周到月视野:动量占主导。在多年视野:均值回归再次占主导。

为什么两者都存在

短期均值回归 存在因为:

  • 流动性冲击导致价格暂时偏离并迅速纠正
  • 高频交易者从推动价格回归公允价值中获利
  • 信息在交易日内被纳入

中期动量 存在因为:

  • 信息缓慢扩散(机构惰性、渐进的信念修订)
  • 投资者行为偏差(处置效应、锚定)导致反应不足
  • 缓慢移动的资本(共同基金、养老基金)无法立即交易

长期均值回归 存在因为:

  • 极端估值最终纠正
  • 商业周期均值回归
  • 过去赢家包括业绩不可持续的公司

在 Python 中实现双信号策略

import numpy as np
import pandas as pd

def compute_momentum_signal(prices, lookback=252):
    """12 个月动量信号。"""
    return prices / prices.shift(lookback) - 1


def compute_mean_reversion_signal(prices, lookback=20):
    """20 天均值回归信号(过去 20 天收益)。"""
    return prices.pct_change(lookback)


def dual_signal_strategy(prices, mom_lookback=252, mr_lookback=20,
                        mom_weight=0.6, mr_weight=0.4):
    """
    组合动量和均值回归信号。

    当两者一致时持有强动量。
    当它们不同意时减少动量敞口。
    """
    mom = compute_momentum_signal(prices, mom_lookback)
    mr = compute_mean_reversion_signal(prices, mr_lookback)

    # 标准化信号
    mom_z = (mom - mom.mean()) / mom.std()
    mr_z = (mr - mr.mean()) / mr.std()

    # 组合信号
    combined = mom_weight * mom_z + mr_weight * mr_z

    return combined


def regime_adjusted_weights(mom_ic, mr_ic, mom_turnover, mr_turnover):
    """
    基于 regime 调整因子权重。
    """
    # 如果动量 IC 高且换手率低,增加动量权重
    # 如果均值回归 IC 高且换手率低,增加 MR 权重
    mom_score = mom_ic / (mom_turnover + 1e-6)
    mr_score = mr_ic / (mr_turnover + 1e-6)

    total = mom_score + mr_score
    return {
        'momentum_weight': mom_score / total,
        'mean_reversion_weight': mr_score / total
    }


def momentum_reversion_balance(factor_returns, mom_half_life=30, mr_half_life=3):
    """
    基于半衰期在动量和均值回归之间平衡。

    短半衰期因子应该获得较低权重,
    因为它们需要更频繁的再平衡。
    """
    # 权重与半衰期成正比
    mom_weight = mom_half_life / (mom_half_life + mr_half_life)
    mr_weight = 1 - mom_weight

    combined_returns = (
        mom_weight * factor_returns['momentum'] +
        mr_weight * factor_returns['mean_reversion']
    )

    return combined_returns

常见陷阱

假设一个永远正确。 动量和均值回归交易者都赚过和亏过大钱。问题不是「哪个正确」——而是「考虑到当前市场结构和状态,现在哪个正确」。

忽略时间尺度。 在日数据上有效的均值回归策略在月数据上不会有效。在月数据上有效的动量策略可能在日内反转。不要混淆学术文献中的不同发现。

混淆学术文献中的发现。 学术论文经常发现「动量」或「均值回归」在相同市场中,因为它们测量的是不同时间尺度。不要得出它们互相矛盾的结论。

在趋势市场中交易均值回归。 在强劲趋势中,价格可能长时间不回归。如果你在强趋势中交易均值回归,你会被止损很多次。

在知识体系中的位置

动量和均值回归是两种基本的时间序列模式。Regime detection 识别哪个占主导。Factor decay 测量每个信号衰减多快。因子组合将两者合成为统一策略。

参考文献

  • Ang, Asset Management, 第 8 章. Oxford University Press, 2014. ISBN: 978-0-19-995932-3.
  • Jegadeesh, Titman, “Momentum,” Annual Review of Financial Economics, 2001.
  • Daniel, Moskowitz, “Momentum Crashes,” Journal of Financial Economics, 2016.
  • Lo, Adaptive Markets, 第 5 章. Princeton University Press, 2017. ISBN: 978-0-691-16988-0.