统计套利:均值回归的数学化交易方法详解
统计套利利用价格偏离历史均值后的回归倾向获利。本文详解Z-Score计算、入场出场参数、半衰期判断、平稳性检验与均值回归风险管理。
统计套利的核心原理
统计套利(Statistical Arbitrage)是量化交易中最经典的方法之一。它的底层逻辑是均值回归(Mean Reversion):当一个资产的价格偏离其历史均值足够远时,它大概率会回归均值。
这和传统的”低买高卖”理念一致,但统计套利将其数学化:
- 不依赖主观判断”够低了”还是”够高了”
- 用统计指标(Z-Score)量化偏离程度
- 用历史数据确定入场和出场阈值
- 用概率而非直觉指导交易决策
均值回归的统计学基础
假设BTC的30日均价为60,000 USDT,标准差为3,000 USDT。当前价格跌至54,000 USDT。
计算Z-Score:
Z = (当前价格 - 均值) / 标准差
Z = (54,000 - 60,000) / 3,000 = -2.0
Z-Score为-2意味着当前价格低于均值2个标准差。根据正态分布,价格低于均值2个标准差的概率约2.3%,即价格处于极端偏低位置。
统计套利的假设:极端偏低后大概率回归均值,因此是买入时机。
关键参数详解
1. 均值计算窗口
| 窗口类型 | 窗口长度 | 适用场景 | 特点 |
|---|---|---|---|
| 短期均值 | 5-20日 | 日内/短线交易 | 对近期变化敏感 |
| 中期均值 | 20-60日 | 波段交易 | 平衡灵敏度和稳定性 |
| 长期均值 | 60-200日 | 中长线交易 | 稳定但反应慢 |
建议使用20日或30日窗口作为主要均值,60日窗口作为辅助参考。
2. Z-Score入场阈值
| 阈值 | 含义 | 偏离概率 | 适用风格 |
|---|---|---|---|
| ±1.0 | 1个标准差 | 31.7% | 保守,频繁交易 |
| ±1.5 | 1.5个标准差 | 13.4% | 中等 |
| ±2.0 | 2个标准差 | 4.6% | 激进,少交易高利润 |
| ±2.5 | 2.5个标准差 | 1.2% | 极端情况 |
推荐阈值组合:
- 入场:Z-Score达到±2.0时开仓
- 出场:Z-Score回归到±0.5时平仓止盈
- 止损:Z-Score继续偏离到±3.0时止损出场
3. 标准差计算
使用滚动标准差(Rolling Standard Deviation)而非固定值:
import numpy as np
def rolling_stats(prices, window=30):
mean = np.mean(prices[-window:])
std = np.std(prices[-window:])
z_score = (prices[-1] - mean) / std if std > 0 else 0
return mean, std, z_score
注意:标准差随时间变化,在低波动期标准差小,Z-Score更容易触发;在高波动期标准差大,需要更大的偏离才能触发。这正是我们想要的——低波动期交易更频繁(小利润),高波动期交易更少(大利润)。
4. 半衰期参数
均值回归的速度用半衰期衡量——价格偏离均值后回归一半所需的时间:
import numpy as np
from statsmodels.regression.linear_model import OLS
def calc_half_life(series):
lag = series.shift(1).dropna()
diff = (series - series.shift(1)).dropna()
model = OLS(diff, lag).fit()
hl = -np.log(2) / model.params[0]
return hl
半衰期决定了持仓时间:
- 半衰期5天 → 预期5天内价格回归一半
- 半衰期20天 → 需要20天,交易周期更长
- 半衰期>30天 → 回归太慢,不适合交易
建议:选择半衰期在5-15天的资产,交易效率最高。
5. ADF检验——平稳性判断
不是所有价格序列都适合均值回归。用ADF检验判断:
from statsmodels.tsa.stattools import adfuller
def check_stationarity(series):
result = adfuller(series)
p_value = result[1]
# p < 0.05 → 拒绝非平稳假设 → 序列有均值回归特性
return p_value < 0.05
如果p值>0.05,说明价格序列非平稳,均值回归策略不适用。
实战操作步骤
步骤1:选择适合均值回归的币种
判断标准:
- 平稳性检验:ADF p值<0.05
- 半衰期适中:5-20天之间
- 流动性充足:日交易量>1000万USDT
- 历史数据充足:至少180天的日线数据
适合的币种特征:
- BTC在震荡期均值回归明显
- ETH/USDT回归特性较好
- 稳定币相关交易对波动有限但回归快
不适合的币种特征:
- 强趋势山寨币(可能偏离后不再回归)
- 极低流动性币种(无法有效执行)
- 新上线币种(历史数据不足)
步骤2:计算实时Z-Score
def calculate_zscore(current_price, prices_history, window=30):
if len(prices_history) < window:
return None
recent = prices_history[-window:]
mean = np.mean(recent)
std = np.std(recent)
if std == 0:
return 0
return (current_price - mean) / std
步骤3:入场规则
IF Z-Score < -2.0 → 买入信号(价格极端偏低)
IF Z-Score > +2.0 → 卖出/做空信号(价格极端偏高)
仓位大小根据Z-Score绝对值动态调整:
def position_size(z_score, max_position_pct=0.05):
# Z=2时开50%仓位,Z=3时开100%仓位
if abs(z_score) < 2.0:
return 0
elif abs(z_score) < 3.0:
return max_position_pct * (abs(z_score) - 2.0) / 1.0
else:
return max_position_pct
单笔仓位不超过总资金的5%,分散到3-5个币种时总仓位不超过15-25%。
步骤4:出场规则
IF Z-Score回归到[-0.5, +0.5]区间 → 平仓止盈
IF Z-Score继续偏离到±3.0 → 止损出场
IF 持仓超过2×半衰期 → 强制平仓(均值回归已失效)
步骤5:持续监控与参数更新
- 每日更新均值和标准差,滚动调整参数
- 每月回测一次策略表现
- 根据实际效果调整Z-Score阈值
- 当胜率低于55%时暂停策略,重新调参
风险管理框架
1. 趋势破坏风险(最大风险)
均值回归策略最大的风险:价格偏离后不再回归,而是进入新趋势。
例子:BTC从60,000跌至54,000(Z=-2),你以为会回归均值,结果BTC继续跌至40,000。
应对:
- 设置Z=±3.0止损线,绝不等待无限回归
- 使用ADF检验定期检查平稳性
- 在强趋势市场暂停均值回归策略
- 限制最大持仓时间为2×半衰期
2. 参数失效风险
均值和标准差是基于历史的,市场结构变化后参数失效。
应对:
- 滚动更新均值/标准差(不要用固定值)
- 每月回测,检查策略胜率和盈亏比
- 当胜率低于55%或盈亏比低于1.5时暂停策略
- 保留2-3个月的”参数冷却期”后重新优化
3. 黑天鹅风险
极端事件可能导致价格永久偏离。
应对:
- 单笔仓位不超过总资金5%
- 分散到3-5个币种
- 设置硬止损,不抱”总会回归”的信念
- 保留至少30%的现金仓位应对极端情况
4. 交易成本风险
频繁交易的手续费可能吞噬利润。
应对:
- 限制入场频率(只在Z≥2时才入场)
- 使用GT代币抵扣手续费(Gate.io)
- 计算净利润(扣除手续费后)来评估策略
- 目标:扣除手续费后年化收益>15%
适用场景对比
| 场景 | 统计套利适用性 | 说明 |
|---|---|---|
| 震荡市 | ⭐⭐⭐⭐⭐ | 最理想的环境 |
| 温和趋势 | ⭐⭐⭐ | 需要更严格的止损 |
| 强趋势 | ⭐ | 不适用,价格不回归 |
| 高波动 | ⭐⭐⭐⭐ | 偏离幅度大,利润空间大 |
| 低波动 | ⭐⭐ | 偏离小,手续费侵蚀利润 |
| 主流币 | ⭐⭐⭐⭐ | 均值回归特性较好 |
| 山寨币 | ⭐⭐ | 趋势性强,回归不可靠 |
与其他策略的组合
统计套利可以和其他策略互补:
- 统计套利 + 趋势跟踪:震荡期用均值回归,趋势期切换为跟踪策略
- 统计套利 + 配对交易:用Z-Score同时判断价格偏离和价差偏离
- 统计套利 + 网格交易:均值回归方向提供网格中心价参考
- 统计套利 + DCA定投:Z-Score低时加大定投金额,Z-Score高时减少定投
参数优化清单
| 参数 | 默认值 | 优化方向 | 注意事项 |
|---|---|---|---|
| 均值窗口 | 30日 | 20-60日 | 过短易噪音,过长反应慢 |
| 入场Z-Score | ±2.0 | ±1.5到±2.5 | 低阈值频繁交易,高阈值利润大但机会少 |
| 出场Z-Score | ±0.5 | ±0.3到±0.8 | 过早出场利润小,过晚出场可能反转 |
| 止损Z-Score | ±3.0 | ±2.5到±3.5 | 止损太紧容易误触,太松亏损大 |
| 最大持仓时间 | 2×半衰期 | 1-3×半衰期 | 超过半衰期说明回归假设失效 |
总结
统计套利是将”低买高卖”升级为数学化决策的方法。Z-Score提供了客观的偏离度量,但均值回归的前提——“价格终将回归”——在强趋势市场中会失效。成功的关键在于严格止损、参数滚动更新、以及只在适合均值回归的市场环境中使用此策略。对于量化交易入门者,统计套利是最好的起点——逻辑清晰、参数可量化、回测简单。
更多实战方法见帝门交易