3. 市场微观结构:订单簿、买卖价差、市场深度、流动性
好,咱们进入第三章。这一章聊的是量化交易的「底层硬件」——市场微观结构。
你可能觉得K线图、技术指标才是交易的核心。但我跟你说,真正决定你能否赚钱的,往往是订单簿里那几档价格的微妙变化。我早年做高频策略时,吃过不少亏,后来才明白:不理解微观结构,你的策略就像在沙子上盖楼。
3.1 订单簿:市场的实时心跳
订单簿是什么?说白了,就是所有交易者挂出来的「买单」和「卖单」的集合。交易所把它按价格排序,摆在你面前。
举个例子,假设现在某股票的最新成交价是100元。订单簿可能长这样:
| 卖单(Ask) | 价格 | 买单(Bid) |
|---|---|---|
| 200股 | 100.05 | |
| 500股 | 100.02 | |
| 100.00 | 300股 | |
| 99.98 | 800股 | |
| 99.95 | 1000股 |
左边是卖单,右边是买单。价格从中间向两边扩散。最上面的买单叫「买一」,最下面的卖单叫「卖一」。它们之间的差距,就是咱们接下来要聊的买卖价差。
核心要点:订单簿不是静态的。它每毫秒都在变化。你的策略必须能处理这种「流式数据」。
3.2 买卖价差:你的隐形交易成本
买卖价差(Bid-Ask Spread),就是买一价和卖一价之间的差值。比如上面例子中,买一是100.00,卖一是100.02,价差就是0.02元。
为什么这东西重要?因为它是你交易时「直接付出的成本」。你想想看,如果你市价买入,你按卖一价成交;如果你市价卖出,你按买一价成交。这一来一回,价差就被你「吃」掉了。
我做过一个统计:对于流动性好的股票,价差可能只有0.01元;但对于一些冷门股,价差能到0.10元甚至更高。如果你每天交易100万股,光价差成本就能差出10万元。嗯,这可不是小数目。
我的经验:在回测时,很多人只考虑佣金和滑点,却忽略了价差。我曾经有个策略回测年化30%,实盘一跑只有15%。后来一查,就是价差吃掉了一半利润。从那以后,我回测时都会把价差作为固定成本算进去。
3.3 市场深度:你能吃下多少单?
市场深度,指的是订单簿上各个价位的挂单数量。它告诉你:如果你想买1000股,会不会把价格打飞?
还是用上面的例子。如果你想买1000股,按市价买,你会先吃掉卖一的200股(100.02元),再吃掉卖二的500股(100.05元),最后还需要300股,就得去卖三(假设是100.08元)那里拿。最终你的平均成交价是:
平均成交价 = (200*100.02 + 500*100.05 + 300*100.08) / 1000
= 100.053 元
比当前的卖一价100.02高了0.033元。这就是「冲击成本」。市场深度越浅,冲击成本越大。
避坑指南:我曾经在某个小市值股票上挂了一笔大单,结果直接把价格拉高了2%。等我反应过来,已经亏了好几万。记住:你的订单本身就在改变市场深度。大单一定要拆单,或者用算法交易慢慢吃。
3.4 流动性:市场的血液
流动性是个综合概念。它包含了价差、深度、以及成交速度。一个流动性好的市场,你可以在不显著影响价格的情况下,快速买卖大量股票。
衡量流动性有几个常用指标:
- 价差宽度:价差越小,流动性越好
- 深度:前几档的挂单量越大,流动性越好
- 成交时间:订单从挂出到成交的平均时间越短,流动性越好
- Amihud非流动性指标:用「日收益率绝对值 / 日成交额」来衡量。值越大,流动性越差
我个人习惯用Python实时计算这些指标。下面是一个简单的示例:
import pandas as pd
import numpy as np
def calculate_liquidity(order_book):
"""
计算当前订单簿的流动性指标
order_book: 包含bid_price, bid_size, ask_price, ask_size的DataFrame
"""
# 买卖价差
spread = order_book['ask_price'].iloc[0] - order_book['bid_price'].iloc[0]
# 市场深度(前5档总挂单量)
bid_depth = order_book['bid_size'].head(5).sum()
ask_depth = order_book['ask_size'].head(5).sum()
total_depth = bid_depth + ask_depth
# 流动性评分(价差越小、深度越大,评分越高)
liquidity_score = total_depth / (spread + 0.0001) # 防止除零
return {
'spread': spread,
'bid_depth': bid_depth,
'ask_depth': ask_depth,
'liquidity_score': liquidity_score
}
# 示例数据
data = pd.DataFrame({
'bid_price': [100.00, 99.98, 99.95],
'bid_size': [300, 800, 1000],
'ask_price': [100.02, 100.05, 100.08],
'ask_size': [200, 500, 300]
})
result = calculate_liquidity(data)
print(f"价差: {result['spread']:.4f}")
print(f"流动性评分: {result['liquidity_score']:.2f}")
这个函数虽然简单,但在实盘监控中非常实用。我把它挂在交易系统里,一旦流动性评分低于某个阈值,就自动暂停交易。
3.5 知识体系总览
为了让你更直观地理解这些概念之间的关系,我画了一张图:
这张图把四个概念串起来了。订单簿是基础,价差和深度是它的两个核心属性,流动性则是更高层次的综合评估。你想想看,不理解这些,你怎么敢说自己懂交易?
一句话总结:订单簿是市场的「心电图」,价差是「心跳声」,深度是「血管粗细」,流动性是「血液质量」。四者缺一不可。
好了,这一章就到这里。记住:微观结构不是理论,是你每天实盘都要面对的现实。下次写策略时,先问问自己:我的订单会怎么影响订单簿?我的成本到底是多少?
公众号:蓝海资料掘金营,微信deep3321