统计套利(StatArb)诞生于20世纪80年代,由摩根士丹利等投行率先实践,历经四十余年演变,如今已成为量化资产配置不可或缺的一环。介于日内高频交易(HFT)与长线价值投资之间的“中频交易”定位,使其能在数小时到数日时间窗口内,捕捉大量证券间的价差机会。
本文将层层递进,带你拆解统计套利的核心机制、主流模型与风险控制要点,并示范如何用 Python 快速跑通一对经典交易对。
套利、统计套利与价差逻辑
1. 套利:无风险套利的三大路径
- 空间套利:同一资产在不同交易所的价差。
- 期现套利:现货与期货的基差波动。
- 事件套利:并购、拆股、分红等引发的价格异常。
任何看似“无风险”的套利都潜藏着执行风险、流动性风险与对手方风险。例如伦敦以10美元报价、纽交所以10.5美元报价的A股仅视为机会;瞬间波动一旦撕裂价差,“无风险”将变得遥不可及。
2. 统计套利:用“概率”替代“确定性”
统计套利的实质是基于历史统计关系构建“长期均值回复”假设,多资产动态对冲后赚取价差收益的期望值。它并不要求同时平仓、瞬间无风险,但能在更大样本、更广时域内实现“赢面大于亏面”。
核心思路:
- 监控协整或高相关资产;
- 记录均值与标准差,计算Z-Score;
- 偏离 >±2σ 时反向建仓,回归时平仓。
统计套利如何运转?
Step 1 数据清洗与相关性筛选
- 下载至少一年以上的分时或日线数据,剔除停牌、除权导致的价格跳空。
- 计算滚动相关性矩阵,保留相关系数 >0.7 且有配对逻辑的标的(同产业、同属性)。
Step 2 协整检验与对冲比例
利用Engle–Granger或Johansen检验,测定是否具备长期均衡关系;回归残差若 ADF 值显著拒绝有单位根,即可确认协整。
对冲比例 β 由回归 ln(价格A) = α + β·ln(价格B) + ε 得出。
Step 3 动态 Z-Score 触发机制
定义:
Z_t = (Spread_t - μ_t) / σ_t- 入场:|Z_t| > 2,Z>0 买入被低估、做空被高估;Z<0 反向。
- 出场:|Z_t| ≤ 0.5 或持仓满预设最大交易日N时强平止损。
经验值:Z-Score 回退至0附近即回归,N 常见取3-5日,过长则回归动能消失。
四大型态,锁定不同“价差标签”
| 子策略 | 适用场景 | 风险特征 |
|---|---|---|
| 市场中性套利 | 行业配对、Beta 对冲 | 多行业多头+空头组合,暴露极低 |
| 跨市场套利 | 同资产不同交易所 | 汇率、时区、法规三重风险 |
| 跨品种套利 | 股指与ETF、期权与现货 | 基差波动、隔夜跳空 |
| ETF-标的套利 | ETF与一篮子现货 | 申赎费率、篮子异动 |
提示:四种模型可组合运用,如“ETF+跨品种+市场中性”的多层过滤,常能提升夏普比率。
算账:成本与风险
- 交易成本:佣金 + 滑点 + 融资利率,需在回测中真实填写。
- 偏移风险:协整关系一旦结构性断裂,价差可能不再回归;此情此景需强行止损。
- 市场风险:政策、宏观事件令全市场同向波动,Beta 无法完全对冲。
核心风控手段:
- 动态关停:协整检验每周期重新跑,一旦 p 值>0.1,立即清仓。
- 波动过滤:ATR > 历史均值 1.5倍时,暂停建仓。
- 资金分层:单笔策略资金不超过总权益10%。
实战:用 Python 跑完一对“BLNK vs NIO”
获取数据
import yfinance as yf
tickers = ['BLNK', 'NIO']
data = yf.download(tickers, start='2023-01-01', interval='1d')['Close']画价差图
ratio = data['BLNK'] / data['NIO']
(data['BLNK']/ratio.iloc[0]).plot(label='BLNK normed')
(data['NIO']).plot(label='NIO raw')观察发现两张线“齐涨跌、偶分离”,满足配对直觉。
协整检验
from statsmodels.tsa.stattools import coint
score, pvalue, _ = coint(data['BLNK'], data['NIO'])
print('p-value =', pvalue) # 若 <0.05 即协整成立生成交易信号
- 计算 Spread = Y - β·X
- 计算滚动 Z-Score
- Z>2 做空 Spread;Z<-2 做多 Spread;|Z|<0.5 平仓
👉 点击阅读如何用 Z-Score 做全过程回测,5 分钟上手
FAQ:读者最关心的 5 个高频疑问
Q1:统计套利与高频套利有何根本区别?
A:高频套利靠毫秒延迟获利,容量极低;统计套利持仓以“小时-日”级别,可容纳对冲基金级别的资金。
Q2:没有编程基础能否做统计套利?
A:可先用 Excel 线性回归 + ADF 插件验证想法,一旦盈利逻辑稳定,再迁往 Python 自动化。
Q3:指数成分股调样后会破坏协整吗?
A:极可能破坏。调样当天须重新跑 ADF,p 值>0.05 立即中止策略。
Q4:应该在盘中还是收盘触发信号?
A:盘中可抢先机,但滑点大;收盘下单稳定可预期,推荐小资金量化团队用后者。
Q5:最多能同时运行多少对?
A:资金使用率和相关性矩阵共同决定。单策略对冲比例<本金10%,跨策略相关性低于50% 即可大规模并行。
统计套利在资产管理中的未来
随着衍生品种类爆发、交易费率一降再降,统计套利的收益厚度逐年被压缩,也因此研究深度与技术细节成为新的 α 来源。牢记一句话:“因子拥挤”不代表“价差消失”,只代表需要更极致的风控与技术。
若你想把本文转化为可运行的实盘系统,下一步应是:
- 完整复现 Python 回测,积累一年中各行情段的滚动表现;
- 接入实时撮合 API,做滑点-延时-费率三维压力测试;
- 做好资金与估值隔离,避免黑天鹅导致策略塌方。
免责声明:本文仅为教育交流,不构成投资建议。所有交易决策均需独立判断并衡量自身风险承受能力。