一、统计套利概述

什么是统计套利

统计套利,说白了就是利用数学模型找市场定价的「小漏洞」。

我刚开始接触这个领域时,觉得它特别像在赌场里找概率优势。你想想看,如果两只股票历史上走势高度同步,突然有一天它们分道扬镳了——这往往意味着机会来了。

具体来说,统计套利是一种基于统计模型的中性策略。它不关心市场涨跌,只关心资产之间的相对价格关系。我个人习惯把它比作「配对交易」的升级版——从两只股票扩展到几十只、几百只。

核心思想:当资产价格偏离历史统计规律时,做多被低估的、做空被高估的,等待价格回归均值。

统计套利 vs 无风险套利

这里有个关键区别,很多新手容易搞混。

对比维度 统计套利 无风险套利
风险程度 存在统计风险 理论上零风险
收益确定性 概率性盈利 确定性盈利
执行难度 中等,需模型支持 极高,拼速度
市场效率 半强有效市场 弱有效市场

无风险套利,比如同一只股票在不同交易所的价格差。你这边买、那边卖,锁死利润。但现实中这种机会转瞬即逝,而且需要极低延迟的交易系统。

统计套利不一样。它承认风险的存在,但通过概率优势来赚钱。我在项目中遇到过这样的情况:模型显示价差偏离了2个标准差,但实际等了3天才回归。这期间浮亏是正常的,关键看你的持仓耐心和资金管理。

避坑指南:我曾经以为统计套利就是「无风险」的,结果在2015年股灾时吃了大亏。记住——统计规律在极端行情下可能失效,这叫「模型风险」。

统计套利的数学基础

平稳性

平稳性,简单说就是时间序列的统计性质不随时间变化。均值、方差、自协方差都保持稳定。

为什么这么重要?因为统计套利依赖历史规律。如果序列不平稳,历史数据就失去了参考价值。

# 一个简单的平稳性检验示例
from statsmodels.tsa.stattools import adfuller

def check_stationarity(series):
    result = adfuller(series)
    print(f'ADF统计量: {result[0]:.4f}')
    print(f'p值: {result[1]:.4f}')
    if result[1] < 0.05:
        print('序列平稳,可以继续分析')
    else:
        print('序列不平稳,需要差分处理')

嗯,这里要注意:很多金融时间序列本身不平稳,比如股价。但它们的对数收益率往往是平稳的。我习惯先做对数差分,再检验平稳性。

协整性

协整性比平稳性更进一层。它描述的是:两个或多个非平稳序列,它们的线性组合却是平稳的。

举个例子:A股和H股的同股同权标的。虽然各自价格不平稳,但价差往往围绕某个均值波动。这就是协整关系。

个人经验:我建议用Johansen检验来判断多只股票之间的协整关系。Engle-Granger两步法虽然简单,但只适用于两两配对,而且对变量顺序敏感。

# 协整检验示例
from statsmodels.tsa.vector_ar.vecm import coint_johansen

def johansen_test(data, p=1):
    result = coint_johansen(data, 0, p)
    print(f'迹统计量: {result.lr1}')
    print(f'5%临界值: {result.cvt[:, 1]}')
    # 如果迹统计量大于临界值,存在协整关系

统计套利的市场假设

任何策略都有前提假设。统计套利也不例外。

  1. 市场存在定价偏差——价格不会永远有效,总会有暂时的错误定价
  2. 均值回归特性——偏离最终会回归,而不是越走越远
  3. 历史规律可重复——过去的关系在未来依然成立
  4. 交易成本可控——摩擦成本不能吃掉利润

你想想看,如果市场完全有效,统计套利就没饭吃了。但现实是,机构投资者的行为偏差、流动性冲击、信息传递延迟,都会造成短期定价错误。

关键提醒:假设3是最脆弱的。市场结构会变,比如2018年A股纳入MSCI后,很多股票的协整关系就发生了结构性变化。我建议每3-6个月重新检验一次模型假设是否仍然成立。

最后说一句:统计套利不是印钞机。它需要扎实的数学功底、严谨的回测流程、以及——嗯,一颗能承受浮亏的强大心脏。我在早期做回测时,经常发现策略在样本内表现完美,一到样本外就崩盘。后来才明白,过拟合是最大的敌人。

下一章,我会详细讲如何构建第一个统计套利模型。从数据获取到信号生成,一步步来。