核心原理精讲:一价定律、价差与比价、均值回归特性、统计套利基础

各位同学,欢迎来到跨市场套利的核心地带。

这一章,咱们不聊花架子,直接啃硬骨头。说白了,套利这行当,底层逻辑就那么几条。你把这些原理吃透了,后面的策略代码就是换汤不换药。

一、一价定律:套利的“宪法”

先问个问题:为什么会有套利机会?

答案很简单——因为市场不完美。而套利者,就是市场的“纠错员”。

一价定律是这么说的:同一资产,在同一时间,不同市场上,价格应该相等。如果不相等,就有人能无风险地赚差价。

核心公式:

P市场A = P市场B × 汇率 × (1 + 交易成本)

当等式不成立时,套利窗口打开。

我在2018年做过一个跨境ETF套利项目。当时有个港股ETF,在港交所和纽交所同时交易。按理说价格应该差不多,但实际经常出现0.5%以上的价差。为什么?因为两个市场的交易时间、流动性、投资者情绪都不一样。

嗯,这里要注意:一价定律是理想状态。现实中,交易成本、资金门槛、卖空限制,都会让这个“完美套利”打折扣。

二、价差与比价:套利的“温度计”

光知道一价定律还不够。你得有工具去测量“偏离程度”。

我个人习惯用两个指标:价差比价

1. 价差(Spread)

价差就是两个价格直接相减。简单粗暴,但有效。

# 价差计算示例
price_a = 100.50
price_b = 99.80
spread = price_a - price_b
print(f"当前价差: {spread:.2f}")  # 输出: 0.70

2. 比价(Ratio)

比价是价格相除。这个指标在跨品种套利中特别有用。

# 比价计算示例
ratio = price_a / price_b
print(f"当前比价: {ratio:.4f}")  # 输出: 1.0070

我的经验:

价差适合同品种、同单位的套利(比如两个交易所的黄金期货)。

比价适合不同品种、不同单位的套利(比如大豆和豆粕)。

千万别搞混了,否则你的信号会全是噪音。

三、均值回归特性:套利的“发动机”

你想想看,价差会一直扩大吗?不会。

市场有只“看不见的手”,会把偏离的价格拉回来。这就是均值回归

说白了,价差就像一根被拉长的橡皮筋。拉得越远,回弹的力越大。

均值回归的数学表达:

dXt = θ(μ - Xt)dt + σdWt

其中:

  • Xt:当前价差
  • μ:长期均值
  • θ:回归速度(越大越快)
  • σ:波动率

我曾经踩过一个坑。2019年做螺纹钢和热卷的套利,价差偏离了3个标准差,我满仓杀进去。结果呢?价差继续扩大,差点爆仓。后来复盘才发现,那段时间钢厂在调整产能,基本面变了,均值也跟着变了。

避坑指南:

我曾经以为均值回归是万能的。直到亏了钱才明白:

  • 均值不是固定的,它会漂移
  • 回归速度不是常数,市场恐慌时回归很慢
  • 极端行情下,价差可能永远不回均值(比如2008年雷曼兄弟)

四、统计套利基础:用数据说话

好了,前面都是定性分析。现在咱们来点硬核的——统计套利。

统计套利的核心就一句话:用历史数据找出价差的统计规律,然后赌这个规律会重复。

1. 平稳性检验

做统计套利之前,第一件事就是检查价差是不是平稳的。不平稳的价差,你没法做均值回归。

from statsmodels.tsa.stattools import adfuller

# 假设spread_series是价差时间序列
result = adfuller(spread_series)
p_value = result[1]

if p_value < 0.05:
    print("价差平稳,可以做统计套利")
else:
    print("价差不平稳,需要差分或换品种")

2. 协整关系

两个不平稳的价格序列,它们的线性组合可能是平稳的。这就是协整

我个人习惯用Engle-Granger两步法:

import statsmodels.api as sm

# 第一步:回归
X = sm.add_constant(price_b)
model = sm.OLS(price_a, X).fit()
hedge_ratio = model.params[1]  # 对冲比率

# 第二步:检验残差平稳性
residuals = price_a - hedge_ratio * price_b
result = adfuller(residuals)

if result[1] < 0.05:
    print("存在协整关系,可以构建套利组合")
else:
    print("没有协整关系,放弃这个品种对")

3. 交易信号生成

有了平稳的价差,接下来就是生成交易信号。我常用的方法是Z-score

import numpy as np

def generate_signals(spread, window=20):
    mean = np.mean(spread[-window:])
    std = np.std(spread[-window:])
    z_score = (spread[-1] - mean) / std
    
    if z_score > 2:
        return "做空价差"  # 卖高价,买低价
    elif z_score < -2:
        return "做多价差"  # 买高价,卖低价
    else:
        return "观望"

实战小技巧:

别死盯着2倍标准差。我一般会根据品种波动率动态调整阈值。波动率大的品种,阈值设到2.5甚至3;波动率小的,1.5就够了。

还有,记得加止损。统计套利不是无风险套利,它只是“大概率赚钱”。

五、知识体系总览

说了这么多,咱们用一张图把本章的核心逻辑串起来:

跨市场套利核心原理体系 一价定律 同一资产,同一时间 不同市场,价格相等 套利的理论基础 价差与比价 价差 = P₁ - P₂ 比价 = P₁ / P₂ 测量偏离程度的工具 均值回归 价差围绕均值波动 偏离越大,回归概率越高 套利策略的核心假设 统计套利基础 平稳性检验 ADF检验 协整关系 Engle-Granger Z-score信号生成 核心逻辑:一价定律 → 价差测量 → 均值回归假设 → 统计验证 → 交易执行

这张图把咱们今天讲的内容串起来了。从一价定律出发,用价差和比价去测量偏离,假设它会均值回归,然后用统计方法去验证这个假设。每一步都环环相扣。

本章核心要点:

  • 一价定律是套利的理论基础,但现实中有摩擦成本
  • 价差和比价是测量市场偏离的基本工具
  • 均值回归是套利策略的“信仰”,但要注意均值漂移
  • 统计套利需要先检验平稳性和协整关系
  • Z-score是生成交易信号的常用方法,阈值要动态调整

好了,这一章的内容就到这里。记住,原理是根基。代码可以复制,但理解这些底层逻辑,才是你以后能独立设计策略的关键。