一、市场微观结构:订单簿、买卖价差、市场深度、流动性
做量化交易这些年,我越来越觉得一个道理:不懂微观结构,就别谈高频交易。说白了,你连市场是怎么撮合订单的都不清楚,怎么敢把真金白银砸进去?
这一章,我们就来拆解市场的底层逻辑。我会结合自己踩过的坑,把订单簿、买卖价差、市场深度和流动性这四个核心概念讲透。
1.1 订单簿:市场的实时快照
订单簿是什么?你可以把它想象成一个实时更新的买卖挂单清单。交易所把所有交易者的限价单(Limit Order)按价格从高到低排列,买一、买二、买三……卖一、卖二、卖三……
我刚开始做策略回测时,总以为价格就是K线图上那个收盘价。后来才发现,真正的战场在订单簿里。你看到的成交价,只是订单簿上某一时刻的“碰撞结果”。
核心概念:
- 买一(Bid 1):当前最高买入价
- 卖一(Ask 1):当前最低卖出价
- 价差(Spread):卖一 - 买一
- 深度(Depth):每个价位上的挂单数量
举个例子,假设某股票当前订单簿如下:
| 层级 | 买价 | 买量(手) | 卖价 | 卖量(手) |
|---|---|---|---|---|
| 1 | 10.00 | 500 | 10.02 | 300 |
| 2 | 9.99 | 800 | 10.03 | 600 |
| 3 | 9.98 | 1200 | 10.04 | 900 |
看到没?买一10.00,卖一10.02,价差0.02元。如果你想立刻买入,就得按10.02成交;想立刻卖出,就得按10.00成交。这0.02元,就是你的流动性成本。
我的经验: 做市商策略的核心,就是盯着订单簿的价差和深度变化。我曾经在某个流动性极差的品种上吃过亏——订单簿上买一和卖一之间差了5个tick,一进去就被套了。后来我养成了习惯:下单前先看五档盘口。
1.2 买卖价差:流动性的直接标尺
买卖价差(Bid-Ask Spread)是衡量市场流动性最直观的指标。价差越小,说明市场越活跃,流动性越好。价差越大,说明市场越冷清,交易成本越高。
我记得有一次做跨市场套利,发现同一只股票在A股和港股上的价差完全不同。A股这边价差只有0.01元,港股那边却要0.05港元。为什么?因为A股散户多,交易活跃;港股机构多,流动性相对集中。
影响价差的因素主要有三个:
- 交易量:成交量越大,价差通常越小
- 波动率:波动越剧烈,做市商越不敢挂单,价差会扩大
- 信息不对称:重大消息公布前后,价差会急剧扩大
避坑指南: 我曾经在财报发布前5分钟执行了一个市价单,结果成交价比预期高了0.3%。为什么?因为价差从平时的0.01元瞬间扩大到0.15元。所以,不要在信息事件前后用市价单,除非你不在乎成本。
1.3 市场深度:你能吃下多少单?
市场深度(Market Depth)描述的是在不同价格水平上的订单数量。深度越大,说明市场能承受的大额订单越多,价格冲击越小。
你想想看,如果你要买入10万股某只股票,而卖一档只有1000股,会发生什么?你的订单会一路吃掉卖一、卖二、卖三……直到买够10万股。这个过程中,成交均价会越来越高——这就是价格冲击。
我习惯用深度图来直观判断市场深度。下面是我用Python画的一个简化版深度图逻辑:
# 模拟订单簿深度数据
bid_prices = [10.00, 9.99, 9.98, 9.97, 9.96]
bid_volumes = [500, 800, 1200, 1500, 2000]
ask_prices = [10.02, 10.03, 10.04, 10.05, 10.06]
ask_volumes = [300, 600, 900, 1200, 1600]
# 计算累计深度
cum_bid = [sum(bid_volumes[:i+1]) for i in range(len(bid_volumes))]
cum_ask = [sum(ask_volumes[:i+1]) for i in range(len(ask_volumes))]
print("买入累计深度:", cum_bid)
print("卖出累计深度:", cum_ask)
输出结果:
买入累计深度: [500, 1300, 2500, 4000, 6000]
卖出累计深度: [300, 900, 1800, 3000, 4600]
看到没?如果你想买入3000股,只需要吃掉卖一到卖四档,成交均价大概在10.035元左右。但如果你想买入5000股,就得吃到卖五档,成交均价会更高。
我的习惯: 在实盘交易前,我会先算一下订单簿的“斜率”——也就是价格每变动一个tick,深度变化多少。斜率越陡,说明深度越差,大单进去容易造成价格滑点。
1.4 流动性:市场的生命线
流动性(Liquidity)是一个综合概念。它不仅仅是价差小、深度大,还包括交易速度、交易成本、市场弹性等多个维度。
我个人把流动性拆解成四个指标:
- 宽度(Width):买卖价差的大小
- 深度(Depth):订单簿上的挂单数量
- 即时性(Immediacy):订单成交的速度
- 弹性(Resiliency):大单冲击后,价格恢复的速度
这四个指标缺一不可。举个例子,某个品种价差很小(宽度好),但深度只有几百手(深度差),你一个大单进去,价格直接被打飞。或者深度很好,但成交速度极慢(即时性差),你的订单挂在那里半天没人理。
下面这张图是我自己总结的市场微观结构知识体系,你可以对照着理解:
嗯,这里要注意:流动性是会变化的。早盘开盘、午盘收盘、重大事件前后,流动性都会出现剧烈波动。我见过最夸张的一次,某只小盘股在午盘休市前10分钟,价差从0.01元扩大到0.08元,深度从几千手缩到几十手——简直就是流动性枯竭。
实战要点总结:
- 做市商策略:盯着订单簿的价差和深度变化,赚取流动性差价
- 大单交易:先看深度图,估算价格冲击成本,再决定是否拆单
- 风险控制:避开流动性枯竭时段,不要在价差过大时用市价单
说白了,市场微观结构就是交易的底层语言。不懂它,你就是在盲人摸象。下一章我们会深入讨论价格冲击成本的具体计算方法,到时候你会更深刻地理解为什么订单簿和流动性这么重要。