一、做市套利导论:什么是做市商?什么是套利?
大家好,我是你们这门课的主讲人。
先聊点实在的。做市套利这个词,听起来挺高大上,对吧?其实拆开看,就两件事:做市和套利。我做了这么多年量化交易,见过太多人把这两件事混为一谈。今天咱们先把概念理清楚。
1.1 什么是做市商?
做市商,说白了就是市场的「流动性供应商」。你想想看,一个交易所里,如果没有做市商,你想买比特币,对面没人卖,这单子就挂在那干瞪眼。做市商干的事就是:同时挂买单和卖单,赚取中间的价差。
举个例子。假设BTC/USDT当前市场价是60000。做市商会挂一个59980的买单,再挂一个60020的卖单。如果有人卖给他,他赚了20块的价差。如果有人从他这买,他也赚了20块。这就是最基础的做市逻辑。
核心要点:做市商不是赌方向,而是赚「过路费」。你不需要预测价格涨跌,只需要保证买卖单子能成交。
我在项目中遇到过不少新手,一上来就想着「我要做市,我要赚价差」。结果呢?方向判断错了,库存被套牢,亏得比散户还惨。嗯,这里要注意:做市的核心是风险管理,不是预测市场。
1.2 什么是套利?
套利就更好理解了。同一件商品,在不同地方卖不同价格,你低价买进,高价卖出,中间的差价就是利润。
在加密货币市场,套利主要分几种:
- 跨交易所套利:比如币安上BTC卖60000,OKX上卖60050。你在币安买,去OKX卖,赚50块差价。
- 三角套利:利用三个交易对之间的价格不一致。比如BTC/USDT、ETH/BTC、ETH/USDT,三个价格算下来有套利空间。
- 期现套利:期货价格和现货价格之间的价差。比如期货比现货贵,你就买现货卖期货,等交割时价差收敛。
个人经验:跨交易所套利看起来简单,但坑很多。我曾经在2019年做过一次跨所套利,算好了价差,结果提币到对方交易所花了40分钟,等币到了,价差早没了。所以,速度是套利的生命线。
1.3 多交易所做市套利的盈利逻辑
把做市和套利结合起来,就是多交易所做市套利。说白了,你在多个交易所同时做市,利用不同交易所之间的价差来赚钱。
盈利逻辑其实很简单:
- 价差收益:你在A交易所挂买单,在B交易所挂卖单。如果A的价格比B低,你就赚了。
- 做市返佣:很多交易所会给做市商返佣,你挂单成交了,交易所返你一部分手续费。这部分收益有时候比价差还大。
- 库存对冲:你在A交易所买了,在B交易所卖了,库存是平的。不需要承担价格波动的风险。
我习惯把这种策略叫做「织网捕鱼」。你在各个交易所之间织一张网,价差就是鱼。网织得越密,捕到的鱼越多。
核心公式:利润 = 价差收益 + 返佣收益 - 手续费 - 滑点损失 - 资金成本
很多人只盯着价差,忽略了手续费和滑点。我见过一个团队,价差算得贼准,结果手续费一扣,利润全没了。
1.4 风险概览
做市套利不是印钞机。风险无处不在,我列几个最常见的:
| 风险类型 | 具体表现 | 我的避坑建议 |
|---|---|---|
| 价差风险 | 你挂单后,市场突然波动,价差扩大,你的单子被吃掉,库存暴露 | 设置止损,不要硬扛 |
| 延迟风险 | 交易所API延迟,你看到的价差是假的,实际成交时已经没了 | 用低延迟服务器,别用家庭宽带 |
| 交易所风险 | 交易所宕机、维护、甚至跑路 | 分散资金,别把鸡蛋放一个篮子 |
| 资金费率风险 | 永续合约的资金费率可能吃掉你的利润 | 做之前算清楚资金费率成本 |
| 滑点风险 | 你的订单太大,市场深度不够,成交价格比预期差 | 用小单量测试,逐步加仓 |
警告:我曾经在2021年5月19日那天,市场暴跌,所有交易所的API都卡死了。我的做市策略还在跑,结果买单全成交了,卖单一个没挂上。库存瞬间暴露,亏了六位数。所以,一定要有熔断机制。市场异常时,宁可少赚,也要先停下来。
1.5 知识体系总览
下面这张图,是我自己梳理的做市套利知识体系。你看一眼,就知道这门课要讲什么了。
这张图把整个知识体系分成了三大块:做市模块、套利模块、基础设施。最底下是风险控制,这是所有策略的底线。你想想看,没有风控,赚再多也是白搭。
1.6 一个小例子
说了这么多理论,咱们来点实际的。假设你在币安和OKX两个交易所做市:
# 伪代码示例:跨交易所做市套利
# 注意:这只是逻辑演示,不是完整代码
def check_arbitrage():
binance_price = get_price('binance', 'BTC/USDT')
okx_price = get_price('okx', 'BTC/USDT')
spread = okx_price - binance_price
if spread > 5: # 价差大于5美元
# 在币安买入,OKX卖出
buy('binance', binance_price, 0.1)
sell('okx', okx_price, 0.1)
print(f"套利成功,利润:{spread * 0.1} USDT")
elif spread < -5:
# 反向操作
buy('okx', okx_price, 0.1)
sell('binance', binance_price, 0.1)
else:
print("价差太小,不操作")
这个例子很简单,但实际中要考虑的东西多得多。比如:你的资金在两个交易所之间怎么调拨?手续费扣了多少?滑点会不会吃掉利润?这些我们后面都会详细讲。
我的建议:刚开始做的时候,别贪多。先在一个交易所练手,把做市逻辑跑通。然后再加第二个交易所。我见过太多人一上来就搞五六个交易所,结果哪个都没管好,亏得一塌糊涂。
好了,第一章就到这里。做市套利这条路,说难不难,说简单也不简单。关键是把基础打牢,把风险管好。后面的章节,咱们会一步步深入,从策略设计到代码实现,从回测到实盘,把每个环节都讲透。
公众号:蓝海资料掘金营,微信deep3321