市场微观结构:订单簿深度解析
做高频做市,说白了就是跟订单簿打交道。我刚开始接触这个领域时,觉得订单簿不就是一堆买单卖单嘛,有什么好研究的?后来被市场狠狠教育了几次,才明白这里面门道深着呢。
订单簿的骨架:限价单与市价单
先说说最基础的两种订单类型。限价单,就是你指定一个价格,挂在那里等成交。市价单呢,就是不管价格多少,立马成交。嗯,听起来很简单对吧?
但实际交易中,这两者的博弈才是订单簿动态的核心。我个人习惯把限价单看作「流动性提供者」,市价单则是「流动性消耗者」。你想想看,市场上如果没有限价单挂着,市价单一进来直接就打穿了,那还怎么做市?
核心关系:限价单提供深度,市价单消耗深度。做市商的利润来源,就是赚取这两者之间的价差。
我在项目中遇到过一个问题:某个品种的订单簿深度看起来很好,但一有市价单进来,价格就剧烈跳动。后来排查发现,那些限价单大部分是虚假挂单,根本不准备成交。这就是典型的「幽灵流动性」陷阱。
冰山订单:藏在海面下的巨兽
说到虚假挂单,就不得不提冰山订单。这玩意儿很有意思——你只看到一小部分订单露在外面,真正的量都藏在水下。
为什么会有人用冰山订单?说白了,大资金不想暴露自己的真实意图。你想啊,如果我要买10000手,直接挂个限价单,市场立马就反应过来了,价格肯定被推高。但用冰山订单,每次只显示1000手,剩下的慢慢吃,成本能低不少。
# 冰山订单的简单模拟
class IcebergOrder:
def __init__(self, total_qty, peak_qty, price, side):
self.total_qty = total_qty # 总数量
self.peak_qty = peak_qty # 可见数量
self.price = price
self.side = side # 'buy' or 'sell'
self.remaining = total_qty # 剩余未成交
self.visible = min(peak_qty, total_qty) # 当前可见量
def on_trade(self, trade_qty):
"""每次成交后更新可见量"""
self.remaining -= trade_qty
if self.remaining > 0:
# 重新补充可见量
self.visible = min(self.peak_qty, self.remaining)
else:
self.visible = 0
做高频做市时,识别冰山订单是个关键技能。我记得有一次,某个品种的买一价位上一直挂着500手,每次被打掉就立刻又出现500手,连续出现了七八次。这就是典型的冰山订单,背后可能藏着几千手的真实需求。
识别技巧:如果某个价位上的订单被吃掉后,很快又出现相同数量的订单,而且价格不变,十有八九是冰山订单。这时候你要小心了,别傻乎乎地往那个方向冲。
逐笔成交与快照数据:两种视角看市场
做策略开发,数据是命根子。市场上主要有两种数据:逐笔成交和快照数据。
逐笔成交数据,就是每一笔交易都记录下来。谁在什么时间、什么价格、买了多少,清清楚楚。这玩意儿信息量最大,但数据量也最大,处理起来挺费劲的。
快照数据呢,就是每隔一段时间(比如100毫秒)拍一张订单簿的照片。能看到当时的买卖盘口、深度分布,但中间发生了什么就不知道了。
| 数据类型 | 优点 | 缺点 | 典型用途 |
|---|---|---|---|
| 逐笔成交 | 信息完整,能还原交易过程 | 数据量大,处理延迟高 | 策略回测、微观结构分析 |
| 快照数据 | 数据量小,容易处理 | 丢失中间细节,有采样误差 | 实时监控、简单策略 |
我个人习惯是:做策略回测用逐笔数据,做实时交易用快照数据。为什么?因为回测时你需要精确还原当时的市场环境,而实时交易时你更关心当前的状态,历史细节反而没那么重要。
避坑指南:我曾经用快照数据做回测,结果策略在实盘时表现完全不一样。后来才发现,快照之间的价格变动被忽略了,导致回测结果过于乐观。记住:快照数据会丢失信息,回测时尽量用逐笔数据。
订单簿的深度结构
订单簿的深度,不只是看买卖盘口有多少单子。真正重要的是深度分布的形状。
我一般会关注几个关键指标:
- 价差宽度:买卖一档之间的差距,越小说明流动性越好
- 深度斜率:从盘口往外,订单量是怎么变化的。陡峭说明流动性集中在盘口附近,平缓说明深度分布均匀
- 订单不平衡度:买卖两侧的总量对比,能反映短期方向
你想想看,如果买一挂了1000手,卖一只有100手,但价格还在往上走,这说明什么?说明买方很强,但卖方在惜售。这时候做市商就要小心了,别轻易做空。
实战中的微观结构应用
说了这么多理论,到底怎么用?我分享几个实战经验。
第一,看订单簿的「呼吸」。正常的订单簿,买卖盘口会不断变化,有人挂单有人撤单。如果某个价位的订单一动不动,反而要警惕——可能是程序在盯着你。
第二,关注撤单率。高频交易中,撤单率是个重要指标。如果某个价位频繁出现挂单又撤单,大概率是在试探市场反应。我曾经见过一个策略,专门在盘口附近挂小单,被打掉就撤,反复测试市场的承接力度。
第三,利用逐笔数据识别大单。逐笔成交数据里,如果连续出现同方向的大额成交,说明有机构在进场。这时候跟着做,胜率往往不错。
小技巧:做市商的核心竞争力,就是对订单簿的解读能力。同样的订单簿,有人看到的是风险,有人看到的是机会。多练多看,慢慢就有感觉了。
嗯,关于市场微观结构,今天就先聊这么多。订单簿这东西,越研究越觉得有意思。下次有机会,我们再深入聊聊如何基于这些微观结构特征,构建具体的做市策略。