3、市场微观结构与偏离度:订单簿深度、买卖价差、流动性分层
好,我们直接进入正题。
做市商报价偏离度,说白了就是你的报价跟「合理价格」之间差了多少。但问题来了——什么是合理价格?
很多人以为看个最新成交价就行了。我刚开始做市的时候也这么想,结果被市场狠狠教育了一顿。后来我才明白,合理价格不是某个点,而是一个由订单簿结构决定的区间。
这一节,我们就来拆解这个区间。
3.1 订单簿深度:你的对手盘在哪里
订单簿,就是所有挂单的集合。买一、买二、卖一、卖二……每一档都对应着一定数量的挂单。
我个人习惯把订单簿想象成一个「多层水池」。水面是当前价格,水面以下是买单,水面以上是卖单。每一层的厚度,就是该价位的挂单量。
举个例子。假设卖一挂了100手,卖二挂了50手。你想买入200手。如果你直接吃卖一,只能吃到100手,剩下的100手就得去卖二成交,价格自然就上去了。
这就是深度不够带来的滑点。滑点越大,你的实际成交价偏离「理想价」就越远。
深度与偏离度的关系:
- 深度越厚,你的报价偏离度可以越小——因为市场能吸收你的订单
- 深度越薄,偏离度必须放大——否则你就是在给市场送钱
我在项目中遇到过一种情况:某个小币种,订单簿深度只有几百个ETH。我按正常策略报了个价,结果一单下去直接把价格打穿了3个tick。嗯,从那以后我学乖了——做市之前先看深度。
3.2 买卖价差:做市商的利润来源
买卖价差(Bid-Ask Spread),就是买一价和卖一价之间的差值。这是做市商最直接的收入来源。
你想想看,你同时挂买单和卖单,赚的就是这个差价。但问题来了——价差越大,你的报价偏离度就越大。
价差与偏离度的关系:
- 价差小,说明市场流动性好,你的报价可以更贴近中间价
- 价差大,说明市场流动性差,你的报价必须拉开距离
我建议你记住一个经验值:在主流交易所,BTC/USDT的价差通常在0.01%以内。而一些小币种,价差可能高达0.5%甚至1%。
3.3 流动性分层:市场不是均匀的
市场流动性不是均匀分布的。它是有层次的。
我习惯把流动性分成三层:
- 表层流动性: 订单簿前几档的挂单。这部分流动性最容易被吃掉,也最不稳定。
- 中层流动性: 订单簿中间几档的挂单。这部分相对稳定,但深度有限。
- 深层流动性: 订单簿远端的大单。这部分流动性很难被触发,但一旦触发,价格会剧烈波动。
为什么要分这个?因为你的报价偏离度策略,必须针对不同的流动性层进行调整。
举个例子。如果你只盯着表层流动性报价,一旦市场出现大单,你的报价会被瞬间吃掉,然后价格就跑了。反过来,如果你只看深层流动性,你的报价会离市场太远,根本成交不了。
我曾经在某个山寨币上吃过这个亏。平时流动性很好,我按表层流动性报价,赚得挺开心。结果有一天项目方发了个利好公告,表层流动性瞬间被抽干,我的报价全被吃了,价格直接飞了。嗯,那次之后我加了个流动性分层检测模块。
3.4 三者如何影响偏离度
好,我们把这三个概念串起来。
订单簿深度、买卖价差、流动性分层,这三者共同决定了你的报价偏离度应该设多大。
我总结了一个简单的判断逻辑:
| 市场状态 | 深度 | 价差 | 流动性分层 | 建议偏离度 |
|---|---|---|---|---|
| 高流动性 | 厚 | 小 | 均匀 | 小(0.01%~0.05%) |
| 中等流动性 | 中等 | 中等 | 有分层 | 中等(0.05%~0.2%) |
| 低流动性 | 薄 | 大 | 不均匀 | 大(0.2%~1%) |
说白了,流动性越好,你的报价可以越「激进」;流动性越差,你的报价必须越「保守」。
你想想看,如果你在流动性差的市场报一个很小的偏离度,结果会怎样?你的单子会被瞬间吃掉,然后价格就跑了。反过来,如果你在流动性好的市场报一个很大的偏离度,你的单子根本成交不了,白白浪费机会。
3.5 一个简单的检测方法
我个人习惯用「订单簿斜率」来判断流动性状态。斜率越大,说明深度越薄,流动性越差。
代码实现很简单:
def orderbook_slope(orderbook, levels=5):
"""
计算订单簿斜率
orderbook: 订单簿数据,包含 bids 和 asks
levels: 计算前几档
"""
bids = orderbook['bids'][:levels]
asks = orderbook['asks'][:levels]
# 计算买单斜率
bid_prices = [b[0] for b in bids]
bid_volumes = [b[1] for b in bids]
bid_slope = (bid_volumes[-1] - bid_volumes[0]) / (bid_prices[-1] - bid_prices[0])
# 计算卖单斜率
ask_prices = [a[0] for a in asks]
ask_volumes = [a[1] for a in asks]
ask_slope = (ask_volumes[-1] - ask_volumes[0]) / (ask_prices[-1] - ask_prices[0])
return bid_slope, ask_slope
斜率越大,说明深度越薄,你的偏离度就要放大。斜率越小,说明深度越厚,偏离度可以缩小。
3.6 知识体系总览
为了让你更直观地理解这三者的关系,我画了一张图:
这张图把整个逻辑串起来了。你从左边三个输入开始,经过中间的分析,最后输出不同的报价策略。
嗯,这一节的内容就到这里。记住一句话:市场微观结构不是背景知识,它是你做市策略的底层逻辑。忽略它,你的偏离度控制就是空中楼阁。