第一章:配对交易基础:统计套利与市场中性策略概述

各位同学,欢迎来到《高频配对交易信号捕捉技术》的第一课。

今天咱们聊点实在的——配对交易到底是个什么东西?

说白了,它就是一种「买一个、卖一个」的对冲玩法。你同时持有两只股票,一多一空,大盘涨跌跟你关系不大,你赚的是它们俩之间价差波动的钱。嗯,这就是市场中性策略的核心思想。

1.1 统计套利:从「价差」里找机会

统计套利,英文叫 Statistical Arbitrage,简称 Stat Arb。它不是无风险套利,而是基于概率和统计的套利。

我刚开始做量化那会儿,总觉得套利就是「低买高卖」这么简单。后来发现,真正的难点在于——你怎么定义「低」和「高」?

举个例子:

贵州茅台和五粮液,都是白酒龙头。它们的历史价格走势高度相关。如果某天茅台突然涨了5%,五粮液只涨了1%,你会怎么想?

我个人习惯是:先看它们的历史价差分布。如果价差偏离了均值两个标准差以上,那大概率会回归。这时候我就做多五粮液、做空茅台,赌价差收窄。

核心逻辑: 两只相关性高的资产,价差会围绕一个均值波动。偏离大了,就会回归。

1.2 市场中性策略:把大盘「屏蔽」掉

市场中性策略,说白了就是让组合的 Beta 接近零。大盘涨跌跟你没关系,你只赚 Alpha 的钱。

你想想看,2020年疫情暴跌那会儿,如果你只做多股票,那真是欲哭无泪。但如果你同时做空了指数或者另一只相关股票,情况就完全不一样了。

配对交易天然就是市场中性的。因为你是多空一对,方向相反,大盘的系统性风险被对冲掉了。

避坑指南: 我曾经犯过一个错误——选了两只看似相关、实则行业逻辑不同的股票做配对。结果价差越走越远,亏了不少。后来我学乖了:配对之前,一定要做协整检验。

1.3 配对交易的完整流程

我一般把配对交易分成四个步骤:

  1. 选对子——找相关性高、同行业、同风格的股票
  2. 建模型——用协整检验、回归分析确定价差关系
  3. 定阈值——设定开仓、平仓、止损的价差水平
  4. 执行交易——实时监控价差,触发信号就下单

嗯,这里要注意:选对子是最关键的一步。选错了,后面全白搭。

1.4 协整检验:别被「伪相关」骗了

很多新手会犯一个错误:看到两只股票走势图长得像,就以为它们能配对。

其实,那可能是伪相关。比如,茅台和腾讯,走势都涨了十年,但它们的价差根本没有稳定关系。你拿它们做配对,迟早出事。

协整检验就是用来解决这个问题的。它检验的是:两只股票的价格差,是不是一个平稳序列。

我常用的方法是 Engle-Granger 两步法。代码很简单:

import statsmodels.api as sm
import numpy as np

# 假设 price_a 和 price_b 是两只股票的价格序列
def cointegration_test(price_a, price_b):
    # 第一步:回归
    model = sm.OLS(price_a, sm.add_constant(price_b))
    result = model.fit()
    residuals = result.resid
    
    # 第二步:对残差做单位根检验
    adf_stat, p_value, _, _, critical_values, _ = sm.tsa.stattools.adfuller(residuals)
    
    return p_value < 0.05  # p值小于0.05,说明残差平稳,存在协整关系

如果 p 值小于 0.05,说明残差是平稳的,两只股票存在长期均衡关系。这时候做配对交易,心里就有底了。

1.5 知识体系总览

下面这张图,是我自己画的配对交易知识体系框架。你可以把它当作整个课程的地图:

配对交易知识体系 配对交易 ① 选对子 ② 建模型 ③ 定阈值 ④ 执行交易 同行业 高相关性 流动性好 协整检验 回归分析 残差检验 开仓阈值 平仓阈值 止损阈值 实时监控 信号触发 订单执行 核心目标:赚取价差回归的收益,屏蔽大盘风险 市场中性 · 统计套利 · 高频执行

1.6 配对交易的数学基础

配对交易的数学模型其实不复杂。假设两只股票的价格分别为 P₁ 和 P₂,它们的关系可以写成:

P₁ = α + β · P₂ + ε

其中,ε 是残差,也就是我们说的价差。如果 ε 是平稳的,那就可以做配对交易。

实际操作中,我一般用滚动窗口来估计 β 和 α。因为股票的关系会随时间变化,不能一劳永逸。

重要提醒: 配对交易不是无风险套利。它假设价差会回归均值,但这个假设有时候会失效。比如,两家公司基本面发生重大变化,价差可能永远不回归。所以,一定要设止损。

1.7 一个简单的配对交易策略示例

下面是一个最简单的配对交易策略框架。它只做两件事:计算价差,然后根据阈值开平仓。

import numpy as np
import pandas as pd

class PairTradingStrategy:
    def __init__(self, entry_z=2.0, exit_z=0.5, stop_z=3.0):
        self.entry_z = entry_z    # 开仓阈值(标准差倍数)
        self.exit_z = exit_z      # 平仓阈值
        self.stop_z = stop_z      # 止损阈值
        self.position = 0         # 持仓状态:1=多头价差,-1=空头价差,0=空仓
    
    def calculate_spread(self, price_a, price_b, hedge_ratio):
        """计算价差"""
        return price_a - hedge_ratio * price_b
    
    def generate_signal(self, spread, spread_mean, spread_std):
        """生成交易信号"""
        z_score = (spread - spread_mean) / spread_std
        
        if self.position == 0:
            if z_score > self.entry_z:
                return -1  # 做空价差
            elif z_score < -self.entry_z:
                return 1   # 做多价差
        elif self.position == 1:
            if z_score < self.exit_z:
                return 0   # 平仓
            elif z_score < -self.stop_z:
                return 0   # 止损
        elif self.position == -1:
            if z_score > -self.exit_z:
                return 0   # 平仓
            elif z_score > self.stop_z:
                return 0   # 止损
        
        return None  # 保持不动

这个代码虽然简单,但已经包含了配对交易的核心逻辑。后面几章,我们会逐步把它升级成高频版本。

1.8 本章小结

好了,第一课就讲到这里。总结一下:

  • 配对交易是统计套利的一种,核心是「买一个、卖一个」
  • 市场中性策略帮你屏蔽大盘风险,只赚价差的钱
  • 协整检验是配对交易的前提,别被伪相关骗了
  • 完整的流程包括:选对子、建模型、定阈值、执行交易

我个人觉得,配对交易是量化入门最好的策略之一。它逻辑清晰,风险可控,而且非常适合高频化改造。后面的课程,我们会一步步深入进去。

嗯,今天就到这儿。记住:别急着写代码,先把基础打牢。