市场微观结构基础:订单簿、买卖价差、市场深度、流动性度量
大家好,我是你们的量化交易工程师讲师。今天我们来聊聊市场微观结构——说白了,就是市场到底是怎么「动」起来的。
很多人做量化交易,上来就研究各种策略、回测、因子。但我个人习惯是,先搞清楚市场本身的运作机制。你想想看,如果你连订单簿都看不懂,怎么知道你的大单进去会不会把价格打飞?
这一章,我们就从最基础的四个概念入手:订单簿、买卖价差、市场深度、流动性度量。这些都是我每天盯盘时必看的东西。
1. 订单簿:市场的「实时账本」
订单簿,英文叫 Order Book。它记录了当前市场上所有未成交的买单和卖单。
你可以把它想象成一个「排队系统」:
- 买单(Bid):大家愿意出多少钱买,价格从高到低排列
- 卖单(Ask):大家愿意多少钱卖,价格从低到高排列
举个例子,假设某只股票当前的订单簿长这样:
| 价格 | 买单数量 | 卖单数量 |
|---|---|---|
| 10.05 | 0 | 500 |
| 10.04 | 0 | 300 |
| 10.03 | 100 | 0 |
| 10.02 | 200 | 0 |
| 10.01 | 400 | 0 |
这里,最优买价(Best Bid)是 10.03,最优卖价(Best Ask)是 10.04。中间的差价就是买卖价差。
2. 买卖价差:交易成本的「隐形杀手」
买卖价差(Bid-Ask Spread)就是最优卖价减去最优买价。它代表了你在市场上「立即成交」需要付出的成本。
公式很简单:
Spread = Ask_Price - Bid_Price
比如上面例子中,价差 = 10.04 - 10.03 = 0.01 元。
价差越小,说明市场越活跃,流动性越好。反之,价差越大,说明市场冷清,交易成本高。
3. 市场深度:你能「吃」多少而不被察觉
市场深度(Market Depth)衡量的是在某个价格水平上,有多少订单等着成交。
深度越大,说明你能在不显著影响价格的情况下,交易更大的数量。
我们通常用深度图来可视化:
从图中可以看到,买单深度在低价位更厚,卖单深度在高价位更厚。中间那个「缺口」就是价差。
4. 流动性度量:到底好不好「进出」
流动性是个综合概念。光看价差或深度都不够,我们需要一些量化指标。
常用的流动性度量指标有:
- 买卖价差:越小越好
- 市场深度:越大越好
- Amihud 非流动性指标:衡量价格对成交量的敏感度
- 成交额/换手率:越高说明越活跃
其中,Amihud 指标的计算公式是:
Amihud = 平均(|日收益率| / 日成交额)
这个值越大,说明「花同样的钱,价格波动越大」,流动性越差。
5. 实战:如何用 Python 获取订单簿数据
嗯,这里我给大家一个简单的代码示例,用 ccxt 库从交易所拉取订单簿数据:
import ccxt
exchange = ccxt.binance()
symbol = 'BTC/USDT'
# 获取订单簿
orderbook = exchange.fetch_order_book(symbol)
# 提取买卖价差
bid = orderbook['bids'][0][0] # 最优买价
ask = orderbook['asks'][0][0] # 最优卖价
spread = ask - bid
print(f"最优买价: {bid}")
print(f"最优卖价: {ask}")
print(f"买卖价差: {spread}")
# 计算前5档深度
bid_depth = sum([b[1] for b in orderbook['bids'][:5]])
ask_depth = sum([a[1] for a in orderbook['asks'][:5]])
print(f"前5档买单深度: {bid_depth}")
print(f"前5档卖单深度: {ask_depth}")
这段代码很简单,但很实用。我经常用它来监控多个交易对的流动性状况。
6. 总结:微观结构是执行算法的「地基」
好了,这一章的内容就到这里。我们讲了订单簿的结构、买卖价差的含义、市场深度的可视化,以及几个流动性度量指标。
我个人觉得,理解这些概念是做好执行算法的第一步。你想想看,如果你连市场是怎么「撮合」的都不清楚,那你的算法再漂亮也是空中楼阁。
下一章我们会深入讨论市场冲击模型,到时候这些微观结构知识都会用上。