1. 市场微观结构基础:订单簿原理、买卖盘口、限价单与市价单、市场深度定义与度量
大家好,欢迎来到我们量化交易课程的第一章。今天咱们聊聊市场微观结构——说白了,就是市场到底是怎么运作的。很多人做量化只盯着K线图,却忽略了最底层的订单簿。我个人觉得,不理解订单簿,就像开车不看仪表盘,迟早要翻车。
核心观点:市场微观结构是量化交易的底层逻辑。订单簿就是市场的“心跳”,读懂它,你才能知道价格是怎么来的。
1.1 订单簿原理:市场的“记账本”
订单簿是什么?你可以把它想象成一个巨大的记账本。所有交易者的买卖意愿,都记录在这里。每一笔挂单,都代表了一个人对价格的看法。
我记得刚入行时,有个老交易员跟我说:“小伙子,别整天盯着K线,去看看订单簿里的挂单变化,那才是真金白银的博弈。” 我当时半信半疑,后来自己做回测才发现,很多大资金进场前,订单簿上会有明显的“挂单堆积”现象。嗯,这就是信号。
订单簿的核心结构其实很简单:
- 买盘(Bid): 大家愿意出的最高买入价,以及对应的数量。
- 卖盘(Ask): 大家愿意卖出的最低卖出价,以及对应的数量。
- 价差(Spread): 卖一价减去买一价,就是市场的“过路费”。
你想想看,如果买一和卖一之间的价差特别大,说明市场流动性差,交易成本高。反之,价差小,说明市场活跃,进出容易。
1.2 买卖盘口:谁在“挂单”等你?
盘口数据,就是订单簿的“快照”。我们常说的“买一、买二、买三”和“卖一、卖二、卖三”,就是盘口的核心。
举个例子,假设某股票当前盘口如下:
| 档位 | 买价 | 买量 | 卖价 | 卖量 |
|---|---|---|---|---|
| 1 | 10.00 | 1000 | 10.01 | 800 |
| 2 | 9.99 | 2000 | 10.02 | 1500 |
| 3 | 9.98 | 3000 | 10.03 | 2500 |
这里有个小技巧:如果买一的数量突然暴增,而价格没怎么动,说明有大资金在“托底”。我在项目中遇到过好几次,这种挂单往往是机构在吸筹,后续大概率会拉升。当然,也可能是陷阱,但至少值得你多看一眼。
个人经验: 我习惯把盘口数据做成“逐笔成交”的时序图。单纯看静态盘口容易误判,但结合成交量的变化,能更早发现主力意图。
1.3 限价单与市价单:两种“下单”哲学
下单方式就两种:限价单和市价单。但背后的逻辑,天差地别。
- 限价单(Limit Order): 你指定一个价格,只有市场达到这个价格才成交。说白了,就是“我只接受这个价,爱卖不卖”。
- 市价单(Market Order): 你不管价格,直接按当前最优价成交。说白了,就是“我要立刻成交,价格无所谓”。
为什么会这样?因为限价单提供流动性,市价单消耗流动性。做市商赚的就是这个差价。
我曾经犯过一个低级错误:在流动性极差的小币种上,用市价单下了个大单。结果呢?直接把价格打穿了两个档位,多亏了好几个点。从那以后,我给自己定了个规矩:流动性不足时,坚决不用市价单。
避坑指南: 我曾经在回测中忽略了一个细节——限价单的“未成交部分”。很多新手以为挂单就一定能成交,其实不然。如果价格没到,你的单子就一直挂在那里,占用资金。所以,做策略时一定要考虑“撤单重挂”的逻辑。
1.4 市场深度定义与度量:到底能“吃”多少?
市场深度,简单说就是“在某个价格附近,你能成交多少而不影响价格”。深度越深,市场越“厚”,大资金进出越容易。
度量市场深度,常用的指标有:
- 订单簿斜率: 计算买盘或卖盘在不同价格上的累计挂单量。斜率越陡,说明深度越差。
- 价差宽度: 买一和卖一之间的价格差。价差越小,深度越好。
- 深度百分比: 比如“吃掉10%的订单簿需要多少资金”。这个指标很直观。
我一般用Python这样计算简单的市场深度:
import pandas as pd
def market_depth(bids, asks, levels=5):
"""
bids: 买盘数据,格式 [[price, volume], ...]
asks: 卖盘数据,格式 [[price, volume], ...]
"""
bid_depth = sum([b[1] for b in bids[:levels]])
ask_depth = sum([a[1] for a in asks[:levels]])
spread = asks[0][0] - bids[0][0]
return {
'bid_depth': bid_depth,
'ask_depth': ask_depth,
'spread': spread,
'depth_ratio': bid_depth / ask_depth if ask_depth > 0 else None
}
# 示例数据
bids = [[10.00, 1000], [9.99, 2000], [9.98, 3000]]
asks = [[10.01, 800], [10.02, 1500], [10.03, 2500]]
print(market_depth(bids, asks))
这段代码很简单,但实际应用中,我会把深度数据做成滚动窗口,观察它的变化趋势。如果深度突然变浅,往往意味着有大行情要来了。
核心度量: 我个人最看重的是“深度斜率”和“价差宽度”的组合。斜率陡+价差宽 = 流动性差,别碰。斜率缓+价差窄 = 流动性好,可以放心交易。
1.5 知识体系总览
为了让你更直观地理解本章内容,我画了一张结构图。它展示了订单簿、盘口、订单类型和市场深度之间的关系。
这张图把本章的核心知识点串起来了。你从“市场微观结构”出发,往下分支出订单簿、盘口、订单类型,最后汇聚到市场深度。说白了,所有东西都是为了回答一个问题:这个市场到底有多“深”?
我的习惯: 每次分析一个新品种,我都会先跑一遍市场深度指标。如果深度不够,我宁愿不做,也不去赌。记住,流动性是量化交易的命根子。
公众号:蓝海资料掘金营,微信deep3321