配对交易和反向交易经常被放在一起讲,因为它们都属于均值回归。但它们赌的东西差得挺远,混着用会在完全不同的行情里翻车。

一句话的区别

配对交易赌的是两只特定股票之间的价差回到历史均值。

反向交易赌的是一篮子标的里,谁相对整体涨多了、谁跌多了,这个相对偏离会修正。

前者盯的是一对资产的绝对关系,后者盯的是横截面上的相对排名。配对交易可以看成 N=2 且要求两个标的有基本面联系的特殊情况,反向交易则是把整个池子拉平了做去均值。

配对交易的构建

信号怎么来

取一对历史高度相关的股票 A 和 B——通常是同行业、商业模式接近、受同一批宏观因素影响的两家公司。

分别算出从 t1t_1t2t_2 的收益(价格要复权):

RA=ln(PA(t2)PA(t1)),RB=ln(PB(t2)PB(t1))R_A = \ln\left(\frac{P_A(t_2)}{P_A(t_1)}\right), \quad R_B = \ln\left(\frac{P_B(t_2)}{P_B(t_1)}\right)

然后做去均值:

R=12(RA+RB),R~A=RAR,R~B=RBRR = \frac{1}{2}(R_A + R_B), \quad \tilde{R}_A = R_A - R, \quad \tilde{R}_B = R_B - R

去均值收益为正的那只算「高估」,为负的算「低估」。做空高估的,买入低估的。

头寸怎么定

两个约束一起解。总投资额 II 定规模,货币中性定方向:

PAQA+PBQB=IP_A|Q_A| + P_B|Q_B| = I PAQA+PBQB=0P_A Q_A + P_B Q_B = 0

第二个式子保证多空金额相等,组合不承担市场方向风险。注意 PA,PBP_A, P_B 用的是建仓时刻的价格,不是算信号那一刻的价格——这两个时点之间有间隔,实盘里这个间隔会直接变成滑点。

挑对子的门槛

理想的配对要有协整关系:两只票的价格序列各自可能不平稳,但它们的某个线性组合是平稳的。价差围着一个均值波动,偏离之后会回来。

只看相关系数不够。两只票可以在一段上涨行情里相关系数 0.9,但价差本身在持续发散。这种对子建完仓就开始亏,而且亏的方向一直不变。所以选对子要跑协整检验,不能只按相关系数排序。

参数

  • 形成期长度:用多长的历史估价差的均值和标准差
  • 开仓阈值:Z 分数到几个标准差开仓,常见 1.5、2、2.5
  • 平仓阈值:Z 回到多少平掉,常见 0 或 0.5
  • 止损阈值:Z 到几个标准差认输,常见 2.5、3
  • 再平衡频率:多久重估一次配对关系

止损阈值这个参数比看起来重要。没有止损的配对交易,收益分布是「大部分时间赚小钱、偶尔亏一大笔」。设了止损,就变成把偶尔那次大亏切成若干次小亏,代价是有些本来会回归的对子被提前砍掉。这个取舍没有标准答案,取决于你的对子里关系破裂的频率有多高。

反向交易的构建

权重直接从去均值来

给定 NN 个标的,先算每个标的过去一周的收益 RiR_i,再算等权「市场指数」收益:

Rm=1Ni=1NRiR_m = \frac{1}{N}\sum_{i=1}^{N} R_i

权重就是去均值收益取负号:

wi=γ(RiRm)w_i = -\gamma(R_i - R_m)

γ>0\gamma > 0 是缩放因子。跑赢市场的(Ri>RmR_i > R_m)拿到负权重,做空;跑输的拿到正权重,做多。

这个构造有个很省事的性质:wi=0\sum w_i = 0 自动成立,美元中性是白送的,不需要额外约束。

再加一个归一化条件确定 γ\gamma

i=1Nwi=1\sum_{i=1}^{N}|w_i| = 1

波动率必须调

原始权重有个明显毛病:它会在高波动标的上超配。因为高波动标的的 RiRmR_i - R_m 天然更大,权重也就更大。结果是组合的风险全押在最躁动的那几个标的上。

改法是拿波动率去压:

wiadj=wiσiwiadj=wiσi2w_i^{adj} = \frac{w_i}{\sigma_i} \quad \text{或} \quad w_i^{adj} = \frac{w_i}{\sigma_i^2}

除一次波动率是风险平价的思路,除平方则压得更狠。选哪个取决于你的标的池波动分化有多大。

活跃度过滤

期货版本里有一个增强,逻辑挺有意思。定义两个因子:

vi=ln(ViVi),ui=ln(UiUi)v_i = \ln\left(\frac{V_i}{V_i'}\right), \quad u_i = \ln\left(\frac{U_i}{U_i'}\right)

VV 是成交量,UU 是持仓量,带撇的是上一周。筛选分两步:

  1. viv_i 排序,取上半部分——成交量放大最多的
  2. 在这部分里按 uiu_i 排序,取下半部分——持仓量增长较少的

背后的推理:成交量大幅放大说明市场反应剧烈,过度反应的概率更高;持仓量没跟着涨,说明市场深度没有同步增加,价格冲击更容易发生。两个条件叠起来,筛出的是最可能出现快速回弹的那批标的。

股票上没有持仓量这个数据,但可以拿融券余额、期权未平仓量之类的替代,思路可以搬。

两者在什么时候各自失效

这是我最关心的部分,因为均值回归策略的亏损方式很有特点:连续、同向、不给你反应时间

配对交易的失效

关系破裂。两家公司之间的均衡关系可以永久性消失——一家被收购、换了商业模式、行业格局变了。价差不但不回归,还会持续扩大。这是配对交易最致命的场景,因为它长得跟「偏离更多了,机会更好了」一模一样,很容易越亏越加。

回归时间不确定。协整只保证价差最终回来,没说什么时候。资金占用几个月、期间要不断补保证金,这在杠杆下会先把人挤出去。

单只票的流动性。对子里只要有一只成交冷清,实际执行价和信号价就对不上,理论上的价差在账户里根本实现不了。

反向交易的失效

动量主导的行情。这是反向交易的天敌。赢家继续赢、输家继续输的时候,策略每一期都在做空最强的、买入最弱的,亏损是连续的。2020 到 2021 年那种强趋势行情里,横截面反转策略吃过大亏。

结构性冲击。某个标的因为政策、供需格局的根本变化而单边移动,它相对市场的偏离不会修正。分散度不够的时候,这一个标的就能拖垮整期收益。

标的池太小NN 太小的时候,RmR_m 本身就被少数标的主导,去均值失去意义。期货版本一般要求 20 到 40 个品种。

共同的敌人:成本

两者都是高换手策略。配对交易每次开平仓都是四笔(两腿各买卖),反向交易每周重算权重、每个标的都要动。

按周频、单边换手 30% 粗算,一年 52 次调仓,假设单边全成本 40 个基点:

0.30×52×0.40%6.2%0.30 \times 52 \times 0.40\% \approx 6.2\%

一年 6 个百分点的摩擦。这个数应该在动手写代码之前就算出来——把你自己的换手率和成本代进去,看毛收益还剩不剩得下。均值回归策略能不能落地,这是第一道门槛,比参数调优重要得多。

而且反向交易还要做空。融券成本、可借券的可得性、被强制召回的风险,这几项在回测里通常完全没有体现。

落地的顺序

真要动手,这个顺序能省掉大量返工。

先做反向交易,后做配对交易。反向交易的构建更机械——去均值、除波动率、归一化,没有主观挑对子的环节,也就少了一层过拟合空间。配对交易的「挑哪些对子」这一步,事后看总能挑出赚钱的组合,很容易骗自己。

第一件事是测毛收益能不能覆盖成本。在调任何参数之前,用你自己账户的真实单边成本跑一遍,看毛收益还剩多少。剩不下就不用往下做了。绝大多数均值回归策略死在这一步,而这一步只要半天。

样本必须覆盖一段趋势行情。只在震荡市里跑出来的反向交易结果不算数,它的最坏情况恰恰在单边行情里。样本区间不含 2020 到 2021 那种强趋势,回测结论没有意义。

做空这条腿要按实际约束建模。融券费率、可借数量、召回风险都进模型。全都当作免费的话,回测出来的市场中性组合在实盘里根本建不起来。

这四条里前两条是筛子,后两条是精度。先过筛子,别一上来就调参数。