第三章 市场微观结构:订单簿深度、买卖价差、流动性对套利的影响
做套利交易,很多人一上来就盯着价差曲线、回归模型。但我得说句实话——如果你看不懂订单簿,你的策略就是空中楼阁。
我见过太多人,模型跑得漂亮,回测曲线完美,一上实盘就亏钱。为什么?因为他们忽略了市场微观结构。说白了,就是你看到的价差,和你实际能拿到的价差,是两码事。
这一章,我们就来拆解订单簿深度、买卖价差和流动性。这些东西,才是套利交易员真正的战场。
3.1 订单簿深度:你的对手盘在哪里?
订单簿,就是交易所里所有挂单的集合。它告诉你:在什么价位,有多少人愿意买,有多少人愿意卖。
我个人习惯,每天开盘前先扫一眼主流品种的订单簿。不是为了交易,而是为了感受市场的“呼吸”。
举个例子。假设BTC在交易所A的订单簿是这样的:
| 价格(USDT) | 买一(Bid) | 卖一(Ask) |
|---|---|---|
| 50000 | 10 BTC | — |
| 50001 | 5 BTC | — |
| 50002 | — | 8 BTC |
| 50003 | — | 12 BTC |
你看,买一有10个BTC,卖一有8个BTC。如果你想买入5个BTC,可以直接吃掉卖一的8个BTC吗?可以,但你会把价格从50002推到50003。这就是滑点。
套利交易里,滑点是最大的隐形杀手。我曾在一次跨所套利中,因为忽略了订单簿深度,导致实际成交价和预期差了0.3%。那笔单子,利润全被滑点吃掉了。
3.1.1 深度曲线的形状
不同品种的订单簿形状差异很大。我一般把它们分成三类:
- 陡峭型:深度集中在买一卖一附近。流动性好,但一旦突破,滑点会急剧放大。比如主流币种。
- 平缓型:深度分布均匀。滑点相对可控,但成交速度慢。比如一些冷门山寨币。
- 断层型:某个价位突然出现大单,形成“墙”。这种最危险,一旦墙被击穿,价格会瞬间跳空。
嗯,这里要注意:断层型订单簿是套利者的噩梦。我曾经在ETH上遇到过,一个5000ETH的卖单墙突然被撤单,价格瞬间跳了2%。我的套利单子直接被打止损。
3.2 买卖价差:你的交易成本底线
买卖价差(Bid-Ask Spread),就是买一价和卖一价之间的差值。它直接决定了你每笔交易的最低成本。
你想想看,如果你做的是高频套利,每次赚0.01%,但买卖价差是0.02%,那你就是在给交易所打工。
价差比率 = (卖一价 - 买一价) / 中间价 × 100%如果这个比率超过你预期利润的50%,我建议直接放弃这笔交易。
为什么?因为除了价差,你还要考虑手续费、滑点、延迟。这些加起来,很容易就把利润吃光。
3.2.1 影响价差的因素
价差不是固定的。它受几个因素影响:
- 流动性:流动性越好,价差越小。BTC/ETH的价差通常只有0.01%-0.05%。而一些垃圾币,价差可能高达1%以上。
- 波动性:市场剧烈波动时,做市商会扩大价差来保护自己。比如312暴跌时,BTC的价差一度扩大到0.5%。
- 时间:亚洲盘和欧美盘,价差差异很大。我习惯在流动性最好的时段(比如下午4点到晚上8点)执行大单。
- 交易所:不同交易所的价差不同。币安、OKX这类头部所,价差通常很小。而一些二线所,价差可能大几倍。
我记得有一次,我在一个二线所做套利,价差看起来很小,但实际成交时发现,订单簿深度极差。一吃单,价格就跑了。后来我学乖了,做套利前,先看订单簿,再看价差。
3.3 流动性:套利策略的生命线
流动性,说白了就是你能否在不影响价格的情况下,快速成交。对于套利交易来说,流动性就是生命线。
没有流动性,你的策略就是纸上谈兵。你想想看,如果你发现两个交易所之间有价差,但你想买的那个交易所,买一只有0.1个BTC,你根本吃不到量。那这个价差就是假的。
3.3.1 流动性的三个维度
我一般从三个维度评估流动性:
- 宽度:价差大小。价差越小,流动性越好。
- 深度:订单簿上的挂单数量。深度越厚,流动性越好。
- 弹性:价格被冲击后,恢复到原价的速度。弹性越好,流动性越好。
这三个维度,缺一不可。我见过一些品种,价差很小,但深度极差。一吃单,价格就飞了。也见过深度很厚,但弹性很差,价格被打下去后,半天回不来。
3.3.2 流动性对套利策略的影响
不同套利策略,对流动性的要求不同:
| 策略类型 | 流动性要求 | 说明 |
|---|---|---|
| 跨所套利 | 高 | 需要同时在两个交易所快速成交,流动性不足会导致滑点吃掉利润 |
| 期现套利 | 中 | 期货和现货的流动性通常较好,但要注意交割日附近的流动性变化 |
| 统计套利 | 低-中 | 持仓时间较长,对瞬时流动性要求不高,但要注意大单冲击 |
| 高频做市 | 极高 | 每笔交易都在赚价差,流动性是核心 |
我个人习惯,在做跨所套利时,会先计算两个交易所的“可执行深度”。比如,我想交易10个BTC,我会看两个交易所的买一到买五总量是否都超过30个BTC。如果不够,我就拆单,或者放弃。
3.4 实战:如何用订单簿数据优化套利策略
理论说完了,我们来看点实际的。下面是一个简单的Python代码,用来计算订单簿的“有效价差”。
def effective_spread(orderbook, trade_size):
"""
计算给定交易量下的有效价差
orderbook: 订单簿数据,包含bids和asks
trade_size: 计划交易量
"""
bids = orderbook['bids'] # 买盘,格式 [[price, volume], ...]
asks = orderbook['asks'] # 卖盘,格式 [[price, volume], ...]
# 计算买入成本
buy_cost = 0
remaining = trade_size
for price, volume in asks:
if remaining <= 0:
break
trade_vol = min(volume, remaining)
buy_cost += trade_vol * price
remaining -= trade_vol
# 计算卖出收入
sell_revenue = 0
remaining = trade_size
for price, volume in bids:
if remaining <= 0:
break
trade_vol = min(volume, remaining)
sell_revenue += trade_vol * price
remaining -= trade_vol
# 有效价差
avg_buy_price = buy_cost / trade_size
avg_sell_price = sell_revenue / trade_size
spread = avg_buy_price - avg_sell_price
return spread / avg_buy_price # 返回百分比
这段代码很简单,但很实用。它计算的是你实际能拿到的价差,而不是表面价差。我每次做套利前,都会跑一下这个函数,看看有效价差是否覆盖了成本。
3.5 知识体系总览
为了让你更直观地理解这一章的内容,我画了一张图。它把订单簿深度、买卖价差和流动性之间的关系,以及它们对套利策略的影响,都串起来了。
这张图你看懂了吗?从上往下看,订单簿深度、买卖价差、流动性这三个微观结构要素,共同决定了套利策略的可行性。而不同的策略,对流动性的要求也不同。
做套利,不能只看价差。你得钻进订单簿里,看看里面到底有什么。记住一句话:你看到的价差是表象,你能拿到的价差才是真相。