halo 的技术博客

返回

引言#

均值回归(Mean Reversion)是量化交易中最经典的策略之一,其核心假设是:资产价格在长期会围绕某个均衡值波动,当价格显著偏离均衡值时,未来会向均值回归。

与趋势跟踪策略相反,均值回归策略本质上是一种”逆势”策略——在价格下跌时买入,在价格上涨时卖出。这种策略在震荡市中表现优异,但在强趋势市中容易亏损。

本文将深入探讨均值回归的统计学原理、常用指标、策略构建方法以及实战中的注意事项。

统计学基础#

平稳性检验#

均值回归策略的前提是价格序列具有平稳性(Stationarity)。一个平稳的时间序列具有以下特征:

  1. 均值恒定:序列的均值不随时间变化
  2. 方差恒定:序列的方差不随时间变化
  3. 协方差仅依赖于时间差:序列的自协方差只与滞后期有关

Augmented Dickey-Fuller检验#

最常用的平稳性检验是ADF检验(Augmented Dickey-Fuller Test)。其原假设是”序列存在单位根(非平稳)“,备择假设是”序列平稳”。

import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller

def adf_test(price_series):
    result = adfuller(price_series)
    print('ADF Statistic: %f' % result[0])
    print('p-value: %f' % result[1])
    print('Critical Values:')
    for key, value in result[4].items():
        print('\t%s: %.3f' % (key, value))
    
    if result[1] < 0.05:
        print("序列平稳,存在均值回归特性")
    else:
        print("序列非平稳,不存在均值回归特性")
python

半衰期(Half-life)#

半衰期是衡量均值回归速度的重要指标,表示价格偏离均值后回归到一半所需时间。

对于Ornstein-Uhlenbeck过程:

dxt=θ(μxt)dt+σdWtdx_t = \theta(\mu - x_t)dt + \sigma dW_t

其中:

  • θ\theta 是均值回归速度
  • μ\mu 是长期均值
  • σ\sigma 是波动率

半衰期计算公式为:

Half-life=ln(2)θ\text{Half-life} = \frac{\ln(2)}{\theta}

常用均值回归指标#

1. 布林带(Bollinger Bands)#

布林带由三条线组成:

  • 中轨:N日移动平均线
  • 上轨:中轨 + K倍标准差
  • 下轨:中轨 - K倍标准差

交易信号

  • 价格触及或突破下轨 → 买入信号
  • 价格触及或突破上轨 → 卖出信号
  • 价格回归中轨 → 平仓信号

2. RSI相对强弱指标#

RSI衡量价格变动的速度和幅度,取值范围0-100。

交易信号

  • RSI < 30:超卖区域,考虑买入
  • RSI > 70:超买区域,考虑卖出

3. Z-Score标准化分数#

Z-Score衡量当前价格偏离均值的标准差倍数:

zt=Ptμσz_t = \frac{P_t - \mu}{\sigma}

其中:

  • PtP_t 是当前价格
  • μ\mu 是N日移动平均
  • σ\sigma 是N日标准差

交易信号

  • Z-Score < -2:价格显著低于均值,买入
  • Z-Score > 2:价格显著高于均值,卖出
  • Z-Score回归0附近:平仓

配对交易(Pairs Trading)#

配对交易是均值回归策略的经典应用,通过交易两个相关性高的资产来实现市场中性策略。

步骤1:寻找配对资产#

使用距离法或协整检验寻找可配对资产:

步骤2:计算价差并交易#

实战策略构建#

多因子均值回归策略#

结合多个指标提高信号可靠性:

仓位管理#

均值回归策略的仓位管理至关重要:

def position_sizing(z_score, max_position=1.0):
    """基于Z-Score的仓位管理"""
    # Z-Score绝对值越大,仓位越重
    position = np.abs(z_score) / 4  # 归一化
    position = np.clip(position, 0, max_position)
    
    # 方向:负Z-Score做多,正Z-Score做空
    direction = -np.sign(z_score)
    
    return position * direction
python

风险控制#

1. 止损策略#

均值回归策略需要严格的止损:

def mean_reversion_stop_loss(price, entry_price, stop_loss_rate=0.05):
    """均值回归止损策略"""
    loss = (price - entry_price) / entry_price
    
    # 做多止损:价格继续下跌超过5%
    # 做空止损:价格继续上涨超过5%
    stop_signal = (np.abs(loss) > stop_loss_rate).astype(int)
    
    return stop_signal
python

2. 最大持仓时间#

防止策略在强趋势市中持续亏损:

3. 市场环境过滤#

均值回归策略在趋势市中表现较差,需要市场环境过滤:

回测与分析#

回测框架#

绩效指标#

实战注意事项#

1. 交易成本#

均值回归策略通常交易频繁,交易成本影响显著:

  • 佣金:选择低佣金券商
  • 滑点:使用限价单减少滑点
  • 买卖价差:避免交易价差过大的资产

2. 数据频率选择#

  • 日频数据:适合中长期均值回归
  • 分钟级数据:适合日内均值回归
  • Tick数据:适合高频均值回归

3. 参数优化与过拟合#

总结#

均值回归策略是一种基于统计学原理的经典量化策略,其核心假设是价格会围绕均值波动。

关键要点

  1. 统计学基础:使用ADF检验验证平稳性,计算半衰期衡量回归速度
  2. 常用指标:布林带、RSI、Z-Score都是有效的均值回归指标
  3. 配对交易:通过交易相关性高的资产对实现市场中性
  4. 风险控制:严格的止损、最大持仓时间、市场环境过滤
  5. 参数优化:使用滚动窗口优化,避免过拟合

适用场景

  • 震荡市
  • 高波动资产
  • 具有均值回归特性的资产(如波动率指数VIX)

不适用场景

  • 强趋势市
  • 结构性变化的资产
  • 低频数据(均值回归效应较弱)

均值回归策略可以作为量化组合的重要组成部分,但需要注意风险控制和参数优化,避免在市场环境变化时遭受重大损失。

均值回归示意图

均值回归示意图:价格围绕均值波动,偏离后会回归

布林带指标

布林带指标:价格触及上下轨时产生交易信号

均值回归交易策略:从统计学原理到实战
https://blog.halo26812.eu.org/blog/2026-06-13-mean-reversion-strategy
Author halo
Published at 2026年6月13日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨