2. 市场微观结构:订单簿、盘口深度、Tick级数据、逐笔成交与撮合机制
做跨期套利高频策略,说白了就是在跟市场微观结构打交道。你想想看,我们赚的是谁的钱?赚的是市场暂时「没反应过来」的钱。那怎么抓住这种机会?就得把订单簿、盘口深度这些东西吃透。
我个人习惯,每次上线新策略前,都会花一周时间专门盯着逐笔成交数据发呆。嗯,你没听错,就是发呆。看多了,你就能感受到市场的「呼吸节奏」。
2.1 订单簿:市场的实时快照
订单簿就是交易所维护的一个大账本。它记录了所有未成交的买单和卖单。我经常跟团队说,订单簿就是市场的「心电图」。
一个典型的订单簿长这样:
| 买价(Bid) | 买量 | 卖价(Ask) | 卖量 |
|---|---|---|---|
| 100.01 | 200 | 100.02 | 150 |
| 100.00 | 500 | 100.03 | 300 |
| 99.99 | 800 | 100.04 | 600 |
这里有个关键点:买一和卖一之间的价差,就是我们常说的spread。跨期套利赚的就是这个spread的波动。
核心概念:订单簿的深度,决定了你的策略能吃下多大的单子而不滑点。深度越厚,你的策略越安全。
2.2 盘口深度:别只看表面那层
很多新手只看买一卖一,这是大忌。我在项目中遇到过好几次,看着买一卖一价差很小,觉得机会来了,结果一进去就被埋了。为什么?因为盘口深度不够。
盘口深度通常用「五档」或「十档」行情来表示。我个人习惯看十档,因为跨期套利需要更精细的流动性感知。
举个例子:
# 盘口深度分析示例
def analyze_depth(order_book, levels=10):
"""
分析盘口深度
"""
bid_depth = sum([level['volume'] for level in order_book['bids'][:levels]])
ask_depth = sum([level['volume'] for level in order_book['asks'][:levels]])
depth_imbalance = (bid_depth - ask_depth) / (bid_depth + ask_depth)
return {
'bid_depth': bid_depth,
'ask_depth': ask_depth,
'imbalance': depth_imbalance
}
我的经验:当盘口深度失衡超过0.3时,价格大概率会向浅的那一侧移动。这个指标我用了三年,准确率在70%以上。
2.3 Tick级数据:高频策略的血液
Tick级数据,就是每一笔行情变动的记录。它包含:
- 时间戳:精确到微秒甚至纳秒
- 最新价:当前成交价
- 成交量:这一笔成交了多少
- 买卖方向:主动买还是主动卖
我曾经犯过一个错误:用毫秒级的时间戳做策略,结果发现同一毫秒内有多笔成交,顺序完全乱了。后来我改用纳秒级时间戳,问题才解决。
Tick数据的处理,我建议用环形缓冲区:
class TickBuffer:
def __init__(self, size=10000):
self.buffer = [None] * size
self.head = 0
self.tail = 0
self.size = size
def add_tick(self, tick):
self.buffer[self.tail] = tick
self.tail = (self.tail + 1) % self.size
if self.tail == self.head:
self.head = (self.head + 1) % self.size
def get_recent(self, n):
# 获取最近n个tick
result = []
idx = (self.tail - 1) % self.size
for _ in range(min(n, self.size)):
if self.buffer[idx] is not None:
result.append(self.buffer[idx])
idx = (idx - 1) % self.size
return result[::-1]
2.4 逐笔成交:看清每一笔交易的真相
逐笔成交和Tick数据不一样。Tick是行情快照,逐笔成交是每一笔真实成交的明细。它告诉你:谁在买,谁在卖,成交了多少。
我习惯用逐笔成交数据来识别「大单」和「小单」。为什么?因为大单往往意味着机构在动,小单可能是散户。跨期套利中,跟着大单走,胜率会高很多。
避坑指南:我曾经以为逐笔成交数据是实时推送的,结果发现交易所会有延迟。尤其是大单,交易所为了保护市场,会故意延迟推送。所以,别完全依赖逐笔成交做高频决策。
2.5 撮合机制:价格是怎么形成的
交易所的撮合机制,说白了就是「价格优先、时间优先」。买单出价高的先成交,卖单出价低的先成交。如果价格一样,先到先得。
但这里有个细节:市价单和限价单的交互。市价单会直接吃掉对手盘的最优价格,限价单则挂在订单簿上等。
我举个例子:
- 你下一个市价买单,系统会从卖一开始吃,直到你的单子全部成交
- 你下一个限价买单,系统会挂在买一的位置,等有人愿意卖给你
跨期套利策略中,我建议多用限价单。为什么?因为市价单的滑点太大,会把你的利润吃掉。
2.6 知识体系总览
下面这张图,是我自己总结的市场微观结构知识体系。你看一眼,就能明白各个模块之间的关系:
这张图把市场微观结构分成了六个模块。订单簿和盘口深度是基础,Tick数据和逐笔成交是数据源,撮合机制是规则,最终都服务于跨期套利策略。
我的建议:刚开始做跨期套利时,别急着写策略。先花两周时间,把上面这张图里的每个模块都跑一遍数据。等你对数据有了感觉,策略自然就出来了。
嗯,市场微观结构这块,内容确实不少。但只要你把订单簿、盘口深度、Tick数据、逐笔成交和撮合机制这五个点吃透了,跨期套利策略的底层逻辑就通了。剩下的,就是怎么把这些数据转化成交易信号的问题了。
公众号:蓝海资料掘金营,微信deep3321