2. 市场微观结构:订单簿与限价订单簿、买卖价差与市场深度、成交量分布与VWAP、信息不对称与流动性
各位同学,欢迎来到第二章。这一章我们聊点硬核的——市场微观结构。
很多人做高频交易,上来就撸机器学习模型,结果发现预测不准。为什么?因为你根本不了解市场这台机器是怎么运转的。说白了,订单簿就是市场的「心电图」,看不懂心电图,你怎么治病?
2.1 订单簿与限价订单簿(LOB)
先问一个问题:你看到的行情数据,到底长什么样?
大多数人打开交易软件,看到的是K线、成交量。但高频交易员看的,是订单簿(Order Book)。更准确地说,是限价订单簿(Limit Order Book, LOB)。
订单簿本质上就是一个「挂单列表」。买方挂单叫Bid,卖方挂单叫Ask。每一档价格上,挂了多少钱,一目了然。
我刚开始做高频策略时,犯过一个低级错误:只看最新成交价,忽略了订单簿的深度。结果策略在流动性枯竭时直接穿仓。嗯,那次教训挺深刻的。
- Bid(买价):当前市场上最高的买入报价
- Ask(卖价):当前市场上最低的卖出报价
- Spread(价差):Ask - Bid,衡量交易成本
- Depth(深度):每个价格档位上的挂单数量
举个例子,假设某股票当前订单簿长这样:
| 价格 | 买量(Bid) | 卖量(Ask) |
|---|---|---|
| 100.05 | 2,000 | |
| 100.04 | 1,500 | |
| 100.03 | 800 | |
| 100.02 | 1,200 | |
| 100.01 | 2,500 | |
| 100.00 | 3,000 |
这里,最佳买价是100.02,最佳卖价是100.03。价差只有1分钱。但你看深度:买一挂了1200股,卖一只有800股。这意味着如果你想快速买入,可能得吃掉卖一到卖三的全部挂单。
我个人习惯用Python实时解析Level 2行情数据。下面是一个简单的订单簿数据结构:
class OrderBook:
def __init__(self):
self.bids = {} # 价格 -> 数量
self.asks = {} # 价格 -> 数量
def update(self, price, size, side):
if side == 'buy':
self.bids[price] = size
else:
self.asks[price] = size
def best_bid(self):
return max(self.bids.keys()) if self.bids else None
def best_ask(self):
return min(self.asks.keys()) if self.asks else None
def spread(self):
return self.best_ask() - self.best_bid()
你想想看,这个结构虽然简单,但每秒可能要更新上千次。性能优化就变得至关重要。我曾经用Python的dict做订单簿,结果延迟太高,后来改用sortedcontainers库才解决问题。
2.2 买卖价差与市场深度
买卖价差(Bid-Ask Spread)是高频交易中最直接的交易成本。你每做一次市价单,就等于「送」了一个价差给做市商。
价差的大小,反映了什么?
- 流动性好:价差小,比如0.01元
- 流动性差:价差大,比如0.10元甚至更大
- 信息不对称:价差突然扩大,说明有人知道你不知道的消息
我记得有一次做美股盘前策略,发现某只股票的价差从0.02突然跳到0.15。我当时觉得不对劲,赶紧暂停了策略。结果开盘后,公司发布了重大利空消息。嗯,价差就是市场的「预警信号」。
市场深度(Market Depth)则告诉你:在某个价格上,你能成交多少量。深度越厚,大单对价格的冲击越小。
2.3 成交量分布与VWAP
成交量分布(Volume Profile)是我个人非常喜欢的一个工具。它不像K线那样只看价格,而是把成交量按价格区间分布展示。
举个例子,某只股票今天在100元成交了10万股,在101元成交了5万股,在102元成交了2万股。那么成交量分布就是:
| 价格区间 | 成交量 | 占比 |
|---|---|---|
| 100.00 - 100.50 | 100,000 | 58.8% |
| 100.50 - 101.00 | 50,000 | 29.4% |
| 101.00 - 101.50 | 20,000 | 11.8% |
你看,大部分成交量集中在100元附近。这个区域就是「价值区域(Value Area)」。价格如果偏离这个区域,大概率会回归。
接下来说说VWAP(成交量加权平均价)。公式很简单:
VWAP = Σ(价格 × 成交量) / Σ(成交量)
但它的意义不简单。VWAP是机构交易者的「基准线」。如果你买入的价格低于VWAP,说明你买得比市场平均价便宜。反之,你就买贵了。
我做过一个VWAP跟踪策略,核心逻辑就是:当价格低于VWAP一定比例时买入,高于VWAP时卖出。听起来简单,但实盘时要注意——VWAP是动态变化的,你得实时计算。
2.4 信息不对称与流动性
信息不对称,说白了就是「你知道的比别人多,或者别人知道的比你多」。在高频交易中,信息不对称直接体现在订单簿上。
举个例子:假设某只股票突然出现大量买单,把价格从100元推到101元。如果你是普通散户,可能会觉得「要涨了,赶紧追」。但如果你懂微观结构,你会想:这些买单是真实的还是虚假的?
有一种常见的操纵手法叫「Spoofing(虚假挂单)」:大资金在买单侧挂大量订单,制造需求旺盛的假象,等价格推高后迅速撤单,然后卖出。我见过不少新手被这种手法坑过。
流动性(Liquidity)则是市场的「血液」。流动性好的市场,你随时可以买卖,而且价格影响很小。流动性差的市场,你可能挂单半天没人理,或者一成交就把价格打飞。
衡量流动性的指标有很多,我个人常用的是:
- Amihud非流动性指标:日收益率绝对值 / 日成交额
- 买卖价差:越小流动性越好
- 订单簿斜率:价格变化 / 成交量变化
我记得有一次做加密货币的高频策略,发现某个小币种的流动性极差。订单簿上买一和卖一差了0.5%,而且深度只有几百个币。我试着用市价单买了1000个币,结果价格直接跳了2%。嗯,这种市场根本不适合做高频。
- 订单簿是市场的「实时心电图」,看懂它才能做高频
- 价差和深度决定了你的交易成本和风险
- 成交量分布和VWAP帮你找到「价值区域」
- 信息不对称和流动性是市场的「暗流」,要时刻警惕
下面这张图是我自己画的,展示了市场微观结构的核心逻辑关系:
好了,这一章的内容就到这里。市场微观结构是高频交易的基石,理解得越深,你的策略就越扎实。下一章我们会聊到「订单流分析与事件驱动策略」,到时候再深入展开。
公众号:蓝海数据掘金营,微信deep3321