4、配对交易策略:基于协整关系的可转债与正股配对交易模型
配对交易,说白了就是找两个“长得像”的品种,等它们价格跑偏了再出手。可转债和它的正股,天生就是一对好搭档。为什么?因为可转债有转股机制,价格和正股之间存在着一种长期稳定的关系。这种关系,我们叫它“协整”。
我刚开始做可转债交易那会儿,也试过单边做多或者做空。但说实话,波动太大,心脏受不了。后来我发现,与其赌方向,不如赌“价差回归”。这就是配对交易的核心思想。
4.1 什么是协整?
协整听起来高大上,其实很简单。两个时间序列,各自可能都是随机游走的(非平稳),但它们之间的线性组合却是平稳的。这就叫协整。
举个例子。你牵着一条狗散步。狗跑来跑去,路径是随机的。但你走的路线是相对稳定的。狗和你的位置差,总是在某个范围内波动。这个“位置差”就是平稳的。可转债和正股的关系,就像你和你的狗。
为什么会这样?因为套利力量的存在。当可转债价格严重偏离转股价值时,套利者会进场,把价格拉回来。这种力量保证了长期关系的稳定性。
4.2 配对交易的完整流程
整个流程分四步。我一步步说清楚。
- 筛选标的: 找流动性好、转股溢价率适中、剩余期限较长的可转债。正股也要选市值大、波动性适中的。
- 检验协整: 用历史数据做协整检验。确认两者存在长期均衡关系。
- 计算价差与阈值: 用回归模型算出价差序列,然后设定开仓和平仓的阈值。
- 执行交易: 实时监控价差,触发信号就执行。注意仓位管理和止损。
嗯,这里要注意。第三步的阈值设定很关键。设得太宽,交易机会少;设得太窄,频繁交易,手续费吃掉利润。我个人习惯用2倍标准差作为开仓阈值,0.5倍标准差作为平仓阈值。
4.3 代码实现:协整检验与价差计算
下面我给出一个完整的Python示例。数据我用的是模拟数据,但逻辑和真实交易完全一致。
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller
import matplotlib.pyplot as plt
# 模拟数据:可转债价格和正股价格
np.random.seed(42)
n = 500
# 正股价格:随机游走
stock = np.cumsum(np.random.randn(n)) + 100
# 可转债价格:与正股协整,加上一个平稳的误差项
error = np.random.randn(n) * 0.5
bond = 0.8 * stock + 20 + error
# 1. 协整检验
# 先做回归:bond = alpha + beta * stock + epsilon
X = sm.add_constant(stock)
model = sm.OLS(bond, X).fit()
residuals = model.resid
# 对残差做ADF检验
adf_result = adfuller(residuals)
print(f'ADF统计量: {adf_result[0]:.4f}')
print(f'p值: {adf_result[1]:.4f}')
if adf_result[1] < 0.05:
print('结论:残差平稳,存在协整关系')
else:
print('结论:残差不平稳,不存在协整关系')
# 2. 计算价差(标准化)
spread = residuals / np.std(residuals)
# 3. 设定阈值
mean_spread = np.mean(spread)
std_spread = np.std(spread)
upper_threshold = mean_spread + 2 * std_spread
lower_threshold = mean_spread - 2 * std_spread
print(f'价差均值: {mean_spread:.2f}')
print(f'价差标准差: {std_spread:.2f}')
print(f'上阈值: {upper_threshold:.2f}')
print(f'下阈值: {lower_threshold:.2f}')
# 4. 生成交易信号
signals = pd.Series(index=range(n), dtype='object')
for i in range(1, n):
if spread[i] > upper_threshold:
signals[i] = '做空价差' # 卖空可转债,买入正股
elif spread[i] < lower_threshold:
signals[i] = '做多价差' # 买入可转债,卖空正股
else:
signals[i] = '持有'
# 显示最后10个信号
print(signals.tail(10))
4.4 交易执行中的细节
代码写完了,但实盘交易还有很多坑。我挑几个重点说。
| 环节 | 注意事项 | 我的建议 |
|---|---|---|
| 开仓时机 | 价差突破阈值后,不要立即开仓。等确认突破有效 | 等价差在阈值外停留1-2个tick再进场 |
| 仓位计算 | 根据回归系数确定对冲比例 | 用beta系数计算:每1手可转债对应beta手正股 |
| 止损设置 | 价差继续扩大时,必须止损 | 我一般设3倍标准差作为硬止损 |
| 交易成本 | 可转债和正股的交易成本不同 | 把滑点和手续费算进阈值里,别太激进 |
你想想看,如果价差突破了2倍标准差,你进场了。结果它继续扩大到3倍、4倍。这时候怎么办?硬扛?不行。我见过有人因为不止损,一次亏掉半年的利润。所以,止损一定要有。
4.5 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你看一眼就能明白整个流程。
说白了,这套策略的核心就一句话:找到关系,等待偏离,押注回归。你不需要预测市场涨跌,只需要判断价差是否“过分”了。这种思路,在震荡市中特别好用。
好了,这一章的内容就到这里。记住,配对交易不是无风险套利。它只是把方向性风险转换成了价差风险。该止损的时候,别犹豫。