3. 订单簿深度模型:深度图的构建、累计深度与市场深度、深度对价格波动的影响
做市商这行干久了,你会发现一个有意思的现象:很多人盯着盘口那几档价格看半天,却忽略了订单簿真正的核心——深度。说白了,深度就是市场的厚度,是你能在多大程度上「吃」掉对手盘而不引起价格剧烈波动。
我个人习惯把订单簿想象成一个蓄水池。价格是水位线,深度就是池子的容量。池子浅,扔块石头就水花四溅;池子深,扔个炸弹也就冒个泡。今天我们就来聊聊这个池子怎么建、怎么量、怎么用。
3.1 深度图的构建:从原始数据到可视化
先说说深度图怎么来的。很多人以为交易所直接给你一张图,其实不是。原始数据是逐笔的挂单,你得自己把它们「堆」起来。
我记得第一次做这个的时候,直接拿所有订单累加,结果图出来乱七八糟。后来才明白,得按价格聚合。
核心逻辑其实就三步:
- 按价格分组:把同一价格的所有买单或卖单合并
- 按价格排序:买单从高到低,卖单从低到高
- 计算累计量:从最优价开始,一层层往上累加
嗯,这里要注意,累计量不是简单的加总。你想想看,如果你要买100个BTC,你不可能只吃最优价那一档,你得把后面几档也吃掉。所以累计深度表示的是「从当前价格到某个价格区间内,所有可成交的总量」。
下面这个图是我自己项目里常用的深度图结构,你可以直观感受一下:
构建深度图的代码其实不复杂,我贴一段核心逻辑:
def build_depth_curve(order_book, side='bid'):
"""
构建单边深度曲线
:param order_book: 原始订单簿数据
:param side: 'bid' 或 'ask'
:return: (prices, cumulative_volumes)
"""
# 按价格聚合
price_levels = {}
for order in order_book[side]:
price = order['price']
volume = order['volume']
price_levels[price] = price_levels.get(price, 0) + volume
# 排序:买单降序,卖单升序
sorted_prices = sorted(price_levels.keys(), reverse=(side == 'bid'))
# 计算累计深度
cum_volumes = []
cum = 0
for p in sorted_prices:
cum += price_levels[p]
cum_volumes.append(cum)
return sorted_prices, cum_volumes
3.2 累计深度与市场深度:两个容易混淆的概念
很多人把「累计深度」和「市场深度」混为一谈,其实它们有本质区别。
累计深度是一个函数,描述的是「在某个价格水平上,总共能成交多少量」。它是一个曲线,横轴是价格,纵轴是累计量。
市场深度是一个数值,通常指「在当前最优买卖价附近,市场能承受的订单量」。它衡量的是市场的流动性水平。
我举个例子你就明白了。假设BTC当前价格30000,买一档有10个BTC,买二档有20个BTC。那么:
- 在29990这个价格上,累计深度 = 10(只吃买一档)
- 在29980这个价格上,累计深度 = 10 + 20 = 30(吃买一+买二档)
- 而市场深度,通常取买一到买五的总和,或者某个固定价格区间(比如±0.1%)内的总量
我曾经在做一个高频策略时,只看了市场深度没看累计深度曲线,结果一个大单进来,价格直接滑了3个档位,亏了不少。后来我学乖了,每次下单前先看累计深度曲线,确认「吃」到目标价格需要多少量。
| 指标 | 定义 | 用途 |
|---|---|---|
| 累计深度 | 从最优价到指定价格区间内的总挂单量 | 评估大单对价格的冲击成本 |
| 市场深度 | 当前最优报价附近的流动性总量 | 衡量市场整体流动性水平 |
| 深度斜率 | 累计深度曲线的导数(变化率) | 判断价格支撑/阻力强度 |
核心观点: 市场深度告诉你「现在有多少水」,累计深度告诉你「要喝到某个水位需要多少水」。做市商更关心后者,因为我们的每一笔订单都在改变水位线。
3.3 深度对价格波动的影响:为什么薄市场容易暴涨暴跌
这个问题其实很直观。你想想看,一个深度只有10个BTC的市场,和一个深度有1000个BTC的市场,同样一个100BTC的买单进来,效果能一样吗?
薄市场里,100BTC的买单可能直接吃掉5档甚至10档价格,价格瞬间拉升2%。而厚市场里,可能连最优价都没吃完,价格纹丝不动。
我总结了几条规律:
- 深度越薄,波动越大:这是最直接的结论。薄市场里,小资金就能撬动大行情。
- 深度分布不均匀时,容易发生「踩踏」:如果某个价格区间深度特别薄,一旦价格突破这个区间,会加速向下一档移动。
- 深度恢复速度也很关键:有些市场虽然深度不错,但被吃掉后恢复很慢。这种市场其实比薄市场更危险,因为你会误以为流动性很好。
我记得有一次做ETH的做市,发现某个交易所的深度图看起来挺厚,但一吃就「塌」了。后来查日志才发现,很多订单是「虚挂」的——挂上去就撤,根本不成交。这种虚假深度会误导策略,一定要过滤掉。
最后说一个实战技巧。我习惯用「深度斜率」来判断价格支撑位。具体做法是:
- 计算累计深度曲线的一阶导数(斜率)
- 斜率突然变陡的地方,就是强支撑/阻力位
- 斜率突然变平的地方,就是容易突破的位置
说白了,深度就是市场的「肌肉」。肌肉越发达,抗打击能力越强。做市商要做的,就是摸清这块肌肉的每一寸纹理,知道哪里硬、哪里软、哪里一碰就倒。
嗯,关于深度模型的核心内容就这些。记住一句话:深度不是静态的,它是市场参与者行为的实时映射。你看到的每一笔挂单,背后都是一个人的判断和策略。理解深度,就是理解市场本身。