一、套利基础:什么是跨市场套利?核心逻辑与盈利原理
1.1 先聊聊我对套利的理解
很多人一听到「套利」,就觉得是高大上的量化黑科技。其实说白了,套利就是「在一个地方便宜买,在另一个地方贵了卖」。嗯,就这么简单。
我刚开始做交易那会儿,也以为套利需要多复杂的数学模型。后来发现,核心逻辑就一句话:同一资产,在不同市场出现价格差异,我们赚的就是这个差价。
举个例子。你想想看,同样一瓶水,在超市卖2块,在景区卖5块。你从超市买了拿到景区卖,赚3块差价。这就是套利。只不过在金融市场里,我们交易的不是水,是股票、期货、ETF这些金融产品。
跨市场套利的本质:利用同一资产在不同交易所、不同市场之间的暂时性价格失衡,通过低买高卖获取无风险或低风险收益。
1.2 核心逻辑:价差才是王道
做套利交易,你盯的不是价格本身,而是价差。
什么叫价差?就是两个市场之间的价格差。比如:
- 上证50ETF在上海证券交易所的价格 vs 在深圳证券交易所的价格
- 沪深300股指期货在主力合约的价格 vs 在次月合约的价格
- 黄金在上海黄金交易所的价格 vs 在纽约COMEX的价格
我个人的习惯是,把价差当作一个独立的交易品种来看。它有自己的波动规律、均值回归特性。你不需要判断大盘涨跌,只需要判断价差会不会回归。
为什么会这样?因为市场不是完美的。信息传递需要时间,资金流动有摩擦,交易者情绪会过度反应。这些因素都会导致同一资产在不同市场出现短暂的价差偏离。
1.3 盈利原理:从偏离到回归
套利的盈利原理,其实就四个字:均值回归。
价差不会永远偏离。当价差扩大到一定程度,套利者就会进场。买便宜的,卖贵的。这个行为本身就会把价差推回正常水平。你想想看,如果所有人都去超市买水拿到景区卖,景区的价格就会降下来,超市的价格会涨上去,差价就消失了。
我在项目中遇到过好几次这样的情况:某只港股和它的A股ETF,价差突然拉大到5%以上。很多人慌了,觉得是不是出了什么大事。但我一看,历史数据里这种极端偏离通常3天内就会回归。果断进场,两天后价差收窄到1%以内,稳稳吃到了利润。
我的经验:价差偏离的幅度和时间,通常服从某种统计分布。你可以用历史数据算出均值、标准差,然后设定入场阈值。比如价差超过2倍标准差时进场,回归到1倍标准差时离场。
1.4 跨市场套利的三种常见模式
根据我这些年的实战经验,跨市场套利大致可以分为三类:
| 类型 | 描述 | 典型例子 |
|---|---|---|
| 同品种跨市场 | 同一金融产品在不同交易所交易 | 沪深300ETF在沪深两市的价差 |
| 跨品种套利 | 相关性高的不同品种之间的价差 | 豆粕期货 vs 菜粕期货 |
| 期现套利 | 期货价格与现货价格之间的价差 | 股指期货 vs 对应ETF组合 |
每种模式都有它的特点和坑。比如同品种跨市场,流动性差异是个大问题。我做过一次沪港通套利,港股那边流动性不足,下单半天成交不了,价差早就变了。嗯,这里要注意:流动性风险往往比价差风险更致命。
1.5 套利交易的核心步骤
不管哪种套利,执行流程都差不多。我总结了一个五步法:
- 发现机会:监控价差,识别偏离
- 评估风险:检查流动性、交易成本、隔夜风险
- 执行交易:同时买入低价、卖出高价
- 持仓监控:跟踪价差变化,设置止损
- 平仓了结:价差回归后,反向操作
这里我特别想强调第二步。很多人看到价差大就冲进去,结果发现手续费吃掉了一半利润,或者市场突然停牌了。我曾经吃过这个亏——有一次做商品期货套利,没算清楚交割费用,最后利润全搭进去了。
避坑指南:交易成本包括佣金、印花税、滑点、隔夜利息、交割费用。一定要把所有成本算进去,再决定是否进场。我一般要求预期收益至少是成本的3倍以上才动手。
1.6 一张图看懂跨市场套利
下面我用一张流程图,把整个逻辑串起来。这张图是我自己画的结构,你可以把它当作套利交易的「作战地图」。
1.7 一个简单的代码示例
光说不练假把式。下面是我写的一个简易价差监控脚本。它不复杂,但足够帮你理解套利的执行逻辑。
# 跨市场套利价差监控示例(Python伪代码)
import numpy as np
def calculate_spread(price_a, price_b):
"""计算价差"""
return price_a - price_b
def check_arbitrage_opportunity(spread, mean, std, threshold=2):
"""
判断是否有套利机会
当价差偏离均值超过2倍标准差时,触发信号
"""
z_score = (spread - mean) / std
if z_score > threshold:
return "做空价差(卖A买B)"
elif z_score < -threshold:
return "做多价差(买A卖B)"
else:
return "无信号"
# 模拟数据
prices_a = [100.5, 100.8, 101.2, 100.9, 101.5]
prices_b = [100.2, 100.3, 100.6, 100.1, 100.4]
spreads = [calculate_spread(a, b) for a, b in zip(prices_a, prices_b)]
mean_spread = np.mean(spreads)
std_spread = np.std(spreads)
print(f"价差均值: {mean_spread:.2f}, 标准差: {std_spread:.2f}")
for i, (a, b) in enumerate(zip(prices_a, prices_b)):
spread = calculate_spread(a, b)
signal = check_arbitrage_opportunity(spread, mean_spread, std_spread)
print(f"时刻{i}: 价差={spread:.2f}, 信号={signal}")
实战建议:上面的代码只是演示逻辑。真实环境中,你需要考虑滑点、交易延迟、订单簿深度。我一般会在代码里加一个「最小利润过滤」——如果预期利润扣掉所有成本后不到0.1%,直接跳过。
1.8 套利不是无风险的
很多人以为套利就是「捡钱」。其实不是。套利也有风险,只是比单边交易小一些。
我遇到过最坑的一次:做跨市场ETF套利,价差确实很大,但买入的ETF突然暂停申购了。结果我手里拿着折价的ETF,卖不出去,硬生生扛了两周。嗯,这就是执行风险。
常见的套利风险包括:
- 流动性风险:市场深度不够,无法同时成交
- 执行风险:一边成交了,另一边没成交
- 模型风险:历史统计规律失效
- 政策风险:交易所规则突然变化
所以我的原则是:永远不要把套利当成无风险交易。它只是风险相对可控,但该设的止损、该做的风控,一样都不能少。
1.9 小结
跨市场套利的核心,说白了就是抓价差。你不需要预测市场方向,只需要判断价差会不会回归。这个逻辑听起来简单,但真正做好,需要你对市场结构、交易规则、资金管理都有深刻理解。
我个人觉得,套利是量化交易里最适合新手入门的方向。因为它逻辑清晰、风险可控、回撤小。但前提是——你得把基本功打扎实。这一章讲的是基础,后面我们会一步步深入到具体的策略实现。
公众号:蓝海资料掘金营,微信deep3321