第1章:价格发现机制:从零到精通

1.1 订单簿:市场的骨架

做量化这些年,我见过不少新手一上来就盯着K线图猛看。说实话,K线只是结果,订单簿才是过程。你想想看,每一笔成交背后,都是买卖双方的博弈。订单簿,就是这场博弈的实时记分牌。

订单簿由两部分组成:买单队列卖单队列。买单按价格从高到低排列,卖单按价格从低到高排列。每个价位上,都挂着对应的委托数量。

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

卖单(Ask) 价格 数量
卖5 10.06 200
卖4 10.05 500
卖3 10.04 300
卖2 10.03 1000
卖1 10.02 800
—— 当前价差 ——
买1 10.01 600
买2 10.00 1200
买3 9.99 400
买4 9.98 700
买5 9.97 300

这里卖1价10.02,买1价10.01。中间那0.01的差距,就是买卖价差。我刚开始做高频交易时,就靠这0.01的价差吃饭——当然,那是另一个故事了。

1.2 买卖价差:流动性的温度计

买卖价差,说白了就是你想立刻成交需要付出的成本。你想买,就得按卖1价成交;你想卖,就得按买1价成交。这一来一回,价差就是你的交易成本。

价差越小,说明市场流动性越好。比如苹果、微软这种大盘股,价差经常只有1分钱甚至更小。但一些小盘股,价差可能达到几毛钱甚至几块钱。

核心公式:

相对价差 = (卖1价 - 买1价) / 中间价 × 100%

中间价 = (卖1价 + 买1价) / 2

我个人习惯用相对价差来判断交易成本。比如上面那个例子:

中间价 = (10.02 + 10.01) / 2 = 10.015
相对价差 = (10.02 - 10.01) / 10.015 × 100% ≈ 0.1%

0.1%的价差,对于日内交易来说已经算不错了。我记得有一次做某个加密货币的做市,价差一度扩大到0.5%,那段时间简直是在刀尖上跳舞。

1.3 市场深度:你能吃下多少单

价差告诉你成本,市场深度告诉你容量。市场深度,指的是在某个价格水平上,你能成交多少数量而不引起价格明显变动。

回到上面的例子。如果你想买入1000股,按卖1价10.02只能买到800股。剩下的200股,就得吃卖2的10.03价。你的买入行为,直接把价格推高了1分钱。

这就是市场深度的意义——它告诉你市场的承载能力。

实战技巧:

我一般会看「深度5档」的总量。如果前5档买单总量远大于卖单总量,说明买方力量强,价格有支撑。反之亦然。

你想想看,如果卖1到卖5总共只有2000股,而你想买5000股。那你的订单一进去,价格可能直接被打飞。这就是为什么大资金交易时,会拆成小单慢慢吃——避免冲击成本。

1.4 订单簿的动态博弈

订单簿不是静止的。每一秒,都有新的限价单进来,也有旧的订单被撤掉。做市商、套利者、散户,各路人马在这里博弈。

我见过最夸张的一次,某只股票在财报公布前10分钟,订单簿上的挂单量突然暴增10倍。卖单和买单都在加码,但价格纹丝不动。这就是典型的「暴风雨前的宁静」。

避坑指南:

我曾经犯过一个错误——只看价差不看深度。有一次我看到某只股票的价差只有0.01,觉得流动性很好,直接下了个大单。结果发现深度极浅,我的单子直接把价格打穿了3个档位。从那以后,我养成了「先看深度,再看价差」的习惯。

订单簿的另一个重要特征是订单簿斜率。斜率越陡,说明价格稍微一动,就会有大量订单涌出。斜率越平,说明市场对价格变动不敏感。

1.5 知识体系总览

下面这张图,是我自己总结的订单簿知识体系。你可以把它当作本章的思维导图:

订单簿 (Order Book) 订单簿构成 买单队列 (Bid Side) 卖单队列 (Ask Side) 价格优先 · 时间优先 买卖价差 (Spread) 绝对价差 = 卖1 - 买1 相对价差 = 价差 / 中间价 流动性指标 · 交易成本 市场深度 (Depth) 各价位挂单总量 深度5档 · 深度10档 冲击成本 · 订单簿斜率 核心:价差看成本,深度看容量,两者结合看流动性 —— 资深量化交易员的实战心法

1.6 实战中的订单簿分析

光说不练假把式。我分享一个自己常用的分析框架:

  1. 看价差:先看买卖价差是否在合理范围内。对于流动性好的品种,价差超过0.2%就要警惕。
  2. 看深度分布:买单和卖单的分布是否均匀?如果某一侧明显薄弱,说明市场有偏向。
  3. 看订单簿斜率:用前5档的总量除以价格跨度,算出每分钱对应的订单量。斜率越大,市场越「厚实」。
  4. 看挂单变化:大单是挂在那里不动,还是频繁撤单?频繁撤单往往意味着有人在「钓鱼」。

一个简单的深度计算示例:

# 假设前5档卖单数据
ask_prices = [10.02, 10.03, 10.04, 10.05, 10.06]
ask_volumes = [800, 1000, 300, 500, 200]

# 计算总深度
total_depth = sum(ask_volumes)  # 2800股

# 计算加权平均价格
weighted_price = sum(p * v for p, v in zip(ask_prices, ask_volumes)) / total_depth
# 约等于 10.034

# 计算深度斜率(每分钱的订单量)
price_span = ask_prices[-1] - ask_prices[0]  # 0.04
slope = total_depth / price_span  # 70000股/元

这个斜率70000股/元是什么意思?就是说,如果你想买入,每推高1分钱价格,大约能吃掉700股。嗯,这个深度还算可以。

我记得有一次做期权做市,某个合约的深度只有200张/分钱。我稍微一动手,价格就飞了。那种品种,说实话,不适合大资金玩。

1.7 小结

订单簿是市场的微观结构。它不像K线那样直观,但信息量更大。价差告诉你交易成本,深度告诉你市场容量。两者结合,你就能判断这个市场是否适合你的交易策略。

我个人建议,每个做量化的人,都应该花时间盯着订单簿看。不是看几秒钟,而是连续看几个小时。你会发现很多K线上看不到的规律——比如大单的挂撤模式、价差的日内变化规律、深度在关键价位的突变等等。

这些东西,书本上教不了,只有自己盯盘才能体会。