一、套利基础:什么是价差套利?跨交易所套利的原理、风险与收益特征
各位同学,咱们今天聊聊套利。说实话,我刚入行那会儿,觉得套利就是「捡钱」。两个交易所同一个币,一个卖100,一个卖101,中间差1块钱,买低卖高不就赚了?
后来真上手做了,才发现事情没那么简单。嗯,咱们今天就把这层窗户纸捅破。
1.1 价差套利的本质
价差套利,说白了就是利用同一资产在不同市场之间的价格差异来获利。你想想看,比特币在币安卖50000美元,在OKX卖50050美元,这50美元的差价就是套利空间。
但这里有个关键点:套利不是投机。投机是赌价格涨跌,套利是吃价差回归。我个人的习惯是,把套利看作「市场搬运工」——哪里价格低,我就把买盘搬到哪里,直到价差消失。
核心公式:
套利利润 = 价差 - 交易成本 - 滑点 - 资金费率(如有)
只有当这个结果 > 0,才值得做。
1.2 跨交易所套利的原理
跨交易所套利,就是利用不同交易所之间的价格不一致来赚钱。为什么会存在这种不一致?
- 流动性差异:大交易所深度好,小交易所深度差,价格容易偏离
- 地域因素:不同国家的用户群体、监管政策不同,导致价格差异
- 信息传递延迟:一个交易所出大单,另一个交易所还没反应过来
- 交易对差异:比如BTC/USDT和BTC/USD,汇率换算后可能产生价差
我在项目中遇到过最夸张的一次,是2020年3月12日「黑色星期四」。比特币在几分钟内暴跌50%,不同交易所之间的价差一度超过10%。那会儿手动套利根本来不及,只有程序化交易才能抓住机会。
1.3 套利的风险特征
很多人以为套利是「无风险」的。我告诉你,这是最大的误解。套利有风险,而且风险还不小。
| 风险类型 | 具体表现 | 我踩过的坑 |
|---|---|---|
| 执行风险 | 下单后价格变动,导致预期利润消失 | 曾经挂单等成交,结果另一边的价格先跑了 |
| 交易所风险 | 交易所宕机、提币延迟、被黑客攻击 | 某小交易所突然暂停提币,资金被锁了3天 |
| 资金费率风险 | 永续合约套利时,资金费率吃掉利润 | 有一次没算资金费率,白忙活一场还亏了手续费 |
| 滑点风险 | 订单簿深度不够,成交价偏离预期 | 在深度差的交易所吃过亏,挂单1000个,只成交了200个 |
避坑指南:
我曾经犯过一个低级错误——在两个交易所之间做套利,结果忘了算提币手续费。一笔提币费用0.001 BTC,当时价值40美元,而我的套利利润才30美元。嗯,亏了10美元。从那以后,我所有的套利策略都会把「所有成本」列出来,一个不漏。
1.4 收益特征分析
套利的收益,说白了就是「薄利多销」。单笔利润可能只有0.1%甚至0.01%,但胜在稳定、高频。
- 夏普比率高:相比趋势交易,套利的收益曲线更平滑
- 回撤小:一般不会超过5%,除非遇到极端行情
- 容量有限:一个套利机会,资金量大了就会把价差抹平
- 衰减快:随着做的人越来越多,利润空间越来越小
我个人习惯把套利收益分成三档:
- 高收益期(年化50%以上):市场刚出现套利机会,竞争者少
- 中等收益期(年化20%-50%):套利者开始涌入,但还有空间
- 低收益期(年化5%-20%):市场成熟,套利空间被压缩到极致
我的建议:
新手做套利,别一上来就想着赚大钱。先跑通一个最简单的策略,哪怕一天只赚10块钱。跑通了,再考虑加杠杆、加资金。我见过太多人,策略还没跑通就上大资金,结果一次黑天鹅事件就爆仓了。
1.5 一个简单的套利示例
咱们用Python写个最简单的价差监控脚本。别笑,这代码虽然简单,但核心逻辑都在里面了。
import requests
import time
def get_price(exchange, symbol):
"""获取交易所价格"""
if exchange == 'binance':
url = f'https://api.binance.com/api/v3/ticker/price?symbol={symbol}'
elif exchange == 'okx':
url = f'https://www.okx.com/api/v5/market/ticker?instId={symbol}'
resp = requests.get(url).json()
return float(resp['price']) if exchange == 'binance' else float(resp['data'][0]['last'])
def monitor_spread(symbol, threshold=0.001):
"""监控价差,threshold为阈值,比如0.1%"""
while True:
try:
price_binance = get_price('binance', symbol)
price_okx = get_price('okx', symbol)
spread = abs(price_binance - price_okx) / min(price_binance, price_okx)
if spread > threshold:
print(f'发现套利机会!价差:{spread*100:.2f}%')
print(f'币安:{price_binance},OKX:{price_okx}')
else:
print(f'当前价差:{spread*100:.4f}%,无机会')
time.sleep(1)
except Exception as e:
print(f'出错了:{e}')
time.sleep(5)
# 运行监控
monitor_spread('BTCUSDT', threshold=0.002) # 0.2%阈值
这段代码很简单,但已经包含了套利监控的核心:获取价格 → 计算价差 → 判断是否超过阈值 → 发出信号。你想想看,把这个逻辑加上自动下单、风控、资金管理,就是一个完整的套利系统了。
1.6 本章小结
套利不是捡钱,是搬砖。搬砖需要体力(计算能力)、技巧(策略设计)、工具(程序化交易)。
记住三句话:
- 价差是机会,但不是免费的午餐
- 风险控制比利润更重要
- 先跑通,再放大
下一章,咱们聊聊如何搭建套利的基础设施——API对接、订单管理、资金划转。这些东西看着琐碎,但做不好,后面全是坑。