市场微观结构基础:订单簿、限价单与市价单、买卖价差

做量化交易这些年,我越来越觉得——不懂微观结构,策略就是空中楼阁。你想想看,一个策略在回测里跑得风生水起,一上实盘就亏钱,十有八九是忽略了市场微观结构。

说白了,市场微观结构就是研究「订单是怎么成交的」。它决定了你的交易成本、滑点、甚至策略能不能跑通。今天我们就从最基础的三个概念讲起:订单簿、限价单与市价单、买卖价差。

市场微观结构 订单簿结构 买盘 vs 卖盘 价格优先 · 时间优先 深度与厚度 限价单 vs 市价单 限价单:指定价格,不保证成交 市价单:保证成交,不保证价格 IOC / FOK / GTC 买卖价差 直接成本 逆向选择成本 存货持有成本 三者共同决定:交易成本 · 流动性 · 策略可行性

1. 订单簿结构——市场的「实时快照」

订单簿(Order Book)是什么?我习惯把它理解成「市场的实时供需地图」。每一笔挂单都在上面,清清楚楚。

一个典型的订单簿分两边:

  • 买盘(Bid Side):所有人愿意买入的价格和数量,从高到低排列
  • 卖盘(Ask Side):所有人愿意卖出的价格和数量,从低到高排列

举个例子,假设某股票当前订单簿长这样:

买价买量卖价卖量
10.0120010.02150
10.0050010.03300
9.9980010.04600
9.98100010.05900

这里有个关键点:买一价 10.01 和卖一价 10.02 之间的差距,就是买卖价差。这个我们后面细说。

💡 我的经验: 做高频策略时,我习惯把订单簿前5档的挂单量画成热力图。量突然变薄的地方,往往是价格要突破的信号。有一次我就是靠这个抓到了一波行情,虽然只有几个tick,但胜在稳定。

2. 限价单与市价单——两种「交易哲学」

这两种订单类型,说白了就是「要价格」还是「要成交」的选择题。

限价单(Limit Order)

你指定一个价格,只有市场达到这个价格时才会成交。优点是你能控制成本,缺点是不一定能成交。

我举个例子:

# 挂一个限价买单,价格10.00,数量500股
order = {
    'type': 'limit',
    'side': 'buy',
    'price': 10.00,
    'quantity': 500
}
# 只有卖盘价格降到10.00或更低时才会成交

市价单(Market Order)

你不指定价格,系统按当前最优价立即成交。优点是快,缺点是可能滑点严重。

# 下一个市价买单,数量500股
order = {
    'type': 'market',
    'side': 'buy',
    'quantity': 500
}
# 立即吃掉卖一、卖二、卖三...直到凑够500股
⚠️ 避坑指南: 我曾经在流动性差的品种上下了市价单,结果卖一只有100股,剩下的400股全吃在了卖五、卖六上。那一单多花了将近0.5%的成本。所以记住:流动性差的时候,慎用市价单

另外还有一些变种订单,比如:

  • IOC(Immediate-or-Cancel):立即成交,没成交的部分直接撤单
  • FOK(Fill-or-Kill):要么全部成交,要么全部撤单
  • GTC(Good-Till-Cancelled):一直挂到成交或你手动撤单

3. 买卖价差的构成——你的「隐形交易成本」

买卖价差(Bid-Ask Spread)就是买一价和卖一价之间的差值。很多人以为这只是市场的手续费,其实不然。

价差由三部分构成:

组成部分含义谁承担
订单处理成本交易所、清算、系统维护等固定费用所有交易者
逆向选择成本做市商担心被知情交易者「吃掉」的风险补偿流动性提供者
存货持有成本做市商持有库存期间的价格波动风险做市商

你想想看,做市商凭什么要挂单?他承担了风险,就得有回报。这个回报就是价差。

🔑 核心观点: 价差不是「手续费」,而是做市商对你提供的流动性服务的定价。价差越小,说明市场越有效、流动性越好。

在实际量化策略中,我通常会这样处理价差:

# 计算实际交易成本
def calc_trading_cost(bid_price, ask_price, order_size):
    spread = ask_price - bid_price
    # 假设我们做市,每次双边交易
    cost_per_share = spread / 2  # 一半是买成本,一半是卖成本
    total_cost = cost_per_share * order_size
    return total_cost

# 示例
bid = 10.01
ask = 10.02
size = 1000
cost = calc_trading_cost(bid, ask, size)
print(f"交易成本: {cost:.2f} 元")  # 输出: 5.0 元

嗯,这里要注意:上面的计算是简化版。实际中还要考虑滑点、冲击成本、以及订单簿的深度分布。

小结

订单簿、限价单与市价单、买卖价差——这三者构成了市场微观结构的基石。我个人觉得,理解它们比学任何复杂策略都重要。因为策略可以复制,但对市场「血液流动」的感知,才是量化交易的核心竞争力。

下次你写策略的时候,不妨先问问自己:我的订单会怎么跟订单簿交互?我的成本是多少?想清楚了再动手。


专注资料整理