2. 市场微观结构:订单簿、买卖价差、市场深度与流动性
好,咱们进入第二章。这一章讲的是市场微观结构,说白了,就是市场到底是怎么「动」起来的。很多做量化的人,一上来就盯着K线、MACD、布林带,但我个人习惯是,先搞清楚订单簿长什么样。你连对手盘在哪都不知道,怎么敢下重注?
我记得刚入行那会儿,有个老交易员跟我说过一句话:「你看到的行情,是别人想让你看到的。」当时我不太理解,后来自己写策略、跑回测,才慢慢品出味道。市场微观结构,就是帮你「看穿」这些表象的工具。
2.1 订单簿:市场的「实时账本」
订单簿,英文叫Order Book。你可以把它理解成一个实时更新的账本,记录了所有未成交的买单和卖单。交易所每时每刻都在做一件事:把买价最高的单子和卖价最低的单子撮合在一起。
举个例子,假设现在某只股票的订单簿长这样:
| 卖单价格 | 卖单数量 | 买单价格 | 买单数量 |
|---|---|---|---|
| 10.05 | 200 | 9.98 | 150 |
| 10.04 | 100 | 9.97 | 300 |
| 10.03 | 500 | 9.96 | 100 |
| 10.02 | 300 | 9.95 | 400 |
| 10.01 | 400 | 9.94 | 250 |
看到没?最高买价是9.98,最低卖价是10.01。中间这3分钱的差距,就是买卖价差。如果有人想立刻买入,他只能按10.01成交;想立刻卖出,只能按9.98成交。这就是市场的「摩擦力」。
核心概念:订单簿的「厚度」决定了你的交易成本。厚度越大,你越不容易「打穿」价格。
2.2 买卖价差:你的隐形交易成本
买卖价差(Bid-Ask Spread)是最直观的流动性指标。价差越小,说明市场越活跃,交易成本越低。价差越大,说明市场越冷清,你进出的代价就越高。
我在项目中遇到过一只小盘股,平时价差只有1分钱,但一到财报发布前,价差能拉到1毛钱以上。为什么?因为做市商怕了,他们不敢报太窄的价,怕被「信息优势者」吃掉。
价差的计算很简单:
spread = ask_price - bid_price
relative_spread = spread / mid_price
其中mid_price是中间价,也就是(ask + bid) / 2。相对价差更能反映真实的交易成本。
我的经验:做高频策略时,我一般只选相对价差小于0.05%的品种。价差太大,策略的利润全被吃掉了。
2.3 市场深度:你能吃下多少「货」
市场深度(Market Depth)衡量的是,在某个价格水平上,有多少买单或卖单在等着。深度越大,你越不容易影响价格。
你想想看,如果你要买入10万股,而卖一档只有1000股,那你的订单会一路「吃」上去,把价格推高。这就是所谓的「价格冲击」。
我习惯用「深度图」来观察市场。深度图其实就是把订单簿的累积数量画出来:
import matplotlib.pyplot as plt
# 假设的订单簿数据
bid_prices = [9.98, 9.97, 9.96, 9.95, 9.94]
bid_volumes = [150, 300, 100, 400, 250]
ask_prices = [10.01, 10.02, 10.03, 10.04, 10.05]
ask_volumes = [400, 300, 500, 100, 200]
# 累积深度
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))]
plt.figure(figsize=(10, 6))
plt.step(bid_prices, cum_bid, where='post', label='买单深度')
plt.step(ask_prices, cum_ask, where='post', label='卖单深度')
plt.xlabel('价格')
plt.ylabel('累积数量')
plt.title('市场深度图')
plt.legend()
plt.grid(True)
plt.show()
这张图能告诉你:如果你想买入5000股,价格会被推到多少?答案就在深度图上。
避坑指南:我曾经在回测时忽略了深度限制,结果实盘一跑,滑点直接吃掉了我3个月的利润。记住:回测时一定要模拟订单簿的消耗过程。
2.4 流动性:市场的「血液」
流动性是个综合概念,它包含了价差、深度、交易量等多个维度。一个流动性好的市场,应该是:价差小、深度大、交易活跃。
我个人喜欢用「流动性比率」来量化:
liquidity_ratio = (bid_volume + ask_volume) / spread
这个比率越高,说明流动性越好。当然,这只是个粗略指标,实际应用中还要考虑时间维度。
我记得有一次做套利策略,两个品种的价差看起来很美,但一算流动性比率,一个只有0.5,另一个有5.0。我果断选了后者。为什么?因为流动性差的品种,你根本进不去,也出不来。
2.5 知识体系总览
下面这张图,是我自己总结的市场微观结构知识框架。你可以把它当作本章的「地图」:
2.6 实战中的注意事项
嗯,这里我要多说几句。很多新手容易犯一个错误:只看Level 1数据(即最优买卖价),不看Level 2数据(即完整订单簿)。这就像只看冰山一角,下面藏着多大的风险你根本不知道。
我曾经在做一个统计套利策略时,发现两个品种的价差序列很漂亮,相关性也很高。但一拉出订单簿,发现其中一个品种的深度只有几百股。这意味着什么?意味着我的策略在回测里赚的钱,在实盘里根本吃不到。因为我的订单一进去,价格就变了。
所以,我的建议是:
- 先看深度:确保你的订单量不会超过深度的10%
- 再算价差:把价差当作固定成本,算进你的策略里
- 最后看流动性:用流动性比率筛选品种,剔除那些「看起来很美」的标的
一个小技巧:我习惯在策略里加一个「流动性过滤器」。如果当前价差超过过去20个交易日均值的2倍,我就暂停交易。这个简单的规则,帮我躲过了好几次「假突破」的坑。
好了,这一章的内容就到这里。市场微观结构是个很深的领域,但只要你掌握了订单簿、价差、深度和流动性这四个核心概念,就已经比大多数交易员强了。下一章,我们会把这些知识用到实际的套利组合构建中。