2. 高频交易市场微观结构:订单簿结构、订单类型与指令、撮合机制、市场深度与流动性、信息流与延迟
各位同学,咱们今天聊点硬核的。
高频交易,说白了就是跟市场抢时间。你比别人快一毫秒,可能就多赚一笔。但想快,你得先懂市场到底是怎么运作的。我常说,不懂微观结构,做高频就是盲人摸象。
这一章,咱们就把市场的「五脏六腑」拆开看看。
2.1 订单簿结构:市场的「心电图」
每个交易所,本质上就是一个巨大的订单簿。我习惯把它想象成一个「价格-数量」的二维表格。
订单簿分两边:买盘(Bid)和卖盘(Ask)。买盘是大家想买的价格和数量,卖盘是大家想卖的价格和数量。价格从高到低排列,中间那个价差,就是买卖双方的「鸿沟」。
核心要点:订单簿的每一档,都代表着一个「价格共识」。深度越厚,共识越强。
举个例子,一个简单的订单簿长这样:
| 买盘 (Bid) | 价格 | 卖盘 (Ask) |
|---|---|---|
| 100手 @ 10.01 | 10.02 | 150手 @ 10.02 |
| 200手 @ 10.00 | 10.01 | 300手 @ 10.03 |
| 500手 @ 9.99 | 10.00 | 200手 @ 10.04 |
你看,买一价10.01,卖一价10.02。价差只有1分钱。但如果你要买1000手,就得把卖一到卖三全吃掉,成交均价会变高。这就是市场深度的意义。
我的经验:我在做策略回测时,经常发现订单簿的「前五档」变化最剧烈。很多高频策略就是盯着这五档做文章。千万别只看最优价,那会漏掉很多信息。
2.2 订单类型与指令:你的「武器库」
交易所给你提供了很多种订单类型。别小看这个,选错类型,可能直接导致交易失败。
- 市价单(Market Order): 不挑价格,立即成交。适合抢单,但容易滑点。我见过有人用市价单在流动性差的时候,直接买到了涨停价……
- 限价单(Limit Order): 指定价格,排队等成交。能控制成本,但可能排不上队。
- 冰山订单(Iceberg Order): 只显示一部分数量,隐藏真实意图。大资金常用,防止被盯上。
- 止损单(Stop Order): 价格触发后变成市价单。用来止损或追涨。
嗯,这里要注意。高频交易里,最常用的是限价单和市价单。但冰山订单,我建议你了解一下。为什么?因为很多「大单」都是冰山,你看不到全貌。
避坑指南:我曾经在实盘中,因为没识别出冰山订单,以为买盘很弱,结果一卖就砸穿。后来我专门写了个算法去「挖冰山」——通过分析订单簿的撤销和挂单模式,来推测隐藏的流动性。
2.3 撮合机制:谁先谁后?
撮合机制,就是交易所的「裁判」。它决定了你的订单什么时候能成交。
主流交易所都用「价格优先、时间优先」原则。说白了,出价高的先成交,出价一样的,先到的先成交。
但这里有个细节:连续竞价和集合竞价。
- 连续竞价: 交易时间内,订单实时撮合。高频交易主要发生在这里。
- 集合竞价: 开盘、收盘、熔断时用。所有订单集中到一点,按最大成交量原则撮合。
我建议你重点关注集合竞价。因为那段时间,信息不对称最严重。很多「聪明钱」会在集合竞价阶段布局。
核心逻辑:撮合机制决定了你的「成交概率」。你挂的限价单,如果排在队列后面,可能永远成交不了。所以,高频策略里,订单的「排队位置」是一个关键变量。
2.4 市场深度与流动性:你的「弹药库」
市场深度,就是订单簿上各个价位的挂单总量。流动性,就是你能以多快的速度、多小的成本完成交易。
这两个概念,说白了就是「市场能不能接住你的单子」。
我习惯用「订单簿斜率」来衡量深度。斜率越陡,说明深度越浅,价格稍微一动,订单簿就空了。
# 一个简单的深度斜率计算示例
def depth_slope(order_book, level=5):
# 取前5档的累计深度
bid_depth = sum([order_book['bids'][i]['size'] for i in range(level)])
ask_depth = sum([order_book['asks'][i]['size'] for i in range(level)])
# 斜率 = 深度 / 价差
spread = order_book['asks'][0]['price'] - order_book['bids'][0]['price']
if spread == 0:
return float('inf')
return (bid_depth + ask_depth) / spread
你看,这个斜率越大,说明市场越「厚」,流动性越好。我在做策略时,会设定一个阈值,低于这个阈值就暂停交易——因为滑点成本太高了。
我的习惯:我一般会同时监控「即时流动性」和「潜在流动性」。即时流动性就是当前订单簿上的,潜在流动性则是通过历史数据预测的。两者结合,能更准确地判断市场状态。
2.5 信息流与延迟:你的「生死线」
高频交易,本质上是一场信息竞赛。谁先拿到信息,谁就能赚钱。
信息流包括:行情数据(Tick级)、成交数据、订单簿变化、新闻、宏观数据等。延迟,就是从信息产生到你做出反应的时间。
延迟分几种:
- 网络延迟: 数据在网线上跑的时间。光纤、微波、甚至激光,都是为了缩短这个。
- 处理延迟: 你的系统解析数据、计算信号的时间。
- 交易所延迟: 交易所内部处理订单的时间。
我见过最极端的案例:有人为了减少1微秒的延迟,把服务器直接搬到了交易所机房里,用FPGA硬解码行情数据。
避坑指南:我曾经犯过一个错误——只优化了网络延迟,没优化处理延迟。结果数据到了,我的算法还在算,白白浪费了优势。记住,延迟是一个「木桶效应」,最短的那块板决定了你的速度。
信息流还有一个关键点:数据频率。高频交易用的是Tick级数据,也就是每一笔成交、每一次订单簿变化都要记录。你想想看,一秒钟可能发生几百次变化,数据量巨大。
我个人习惯,会把行情数据分成三层:
- 快照层: 每100毫秒拍一张订单簿照片。
- 增量层: 记录每一次订单簿的变化(增、删、改)。
- 成交层: 每一笔成交的详细记录。
这三层数据,缺一不可。快照层用来做宏观判断,增量层用来捕捉微观机会,成交层用来验证策略。
核心要点:信息流是高频交易的「血液」,延迟是「心跳」。没有血液,系统会死;心跳太慢,系统会输。
2.6 知识体系总览
为了让你更直观地理解这一章的内容,我画了一张图。它把订单簿、订单类型、撮合机制、流动性、信息流这几个核心概念串在了一起。
这张图,我建议你保存下来。每次做策略前,对着它过一遍,看看自己忽略了哪个环节。
公众号:蓝海资料掘金营,微信deep3321