第二章:市场微观结构——订单簿深度解析
做市商这行,说白了就是跟订单簿打交道。你每天盯着屏幕上跳动的数字,其实就是在解读市场微观结构。我刚开始做量化的时候,觉得这东西很简单——不就是买和卖嘛。后来吃了不少亏才明白,订单簿里的门道,比想象中深得多。
2.1 订单簿的基本构成
订单簿是什么?它就是一个实时更新的买卖挂单列表。交易所把所有交易者的限价单汇总起来,按价格排序展示。买盘叫Bid,卖盘叫Ask。
我习惯把订单簿想象成一个「价格-数量」的二维矩阵。每一档价格上,都堆着一定数量的挂单。比如这样:
卖五:100.50 200股
卖四:100.40 150股
卖三:100.30 300股
卖二:100.20 100股
卖一:100.10 250股
-------------------
买一:100.00 180股
买二:99.90 220股
买三:99.80 400股
买四:99.70 150股
买五:99.60 300股
这里卖一和买一之间的差距,就是买卖价差。价差越小,说明市场越活跃。我在做比特币做市的时候,价差经常只有0.01美元,但到了流动性差的币种,价差能拉到0.5美元以上。
2.2 买卖盘口与价差
盘口深度,指的是每一档价格上的挂单数量。你想想看,如果买一只有10股,卖一有1000股,那说明什么?说明卖方压力大,价格可能往下走。
价差的计算公式很简单:
Spread = Ask_Price - Bid_Price
但实际交易中,我们更关注的是「相对价差」:
Relative Spread = (Ask - Bid) / Mid_Price × 100%
举个例子,如果买一100.00,卖一100.10,中间价100.05,那么相对价差就是0.1%。这个数字在主流股票市场通常小于0.1%,但在一些冷门品种上,1%甚至5%都很常见。
核心要点:价差是做市商的主要收入来源。你赚的就是买卖之间的差价。但价差太大,交易者不愿意来;价差太小,你又赚不到钱。这是个平衡的艺术。
2.3 市场深度与流动性
市场深度,衡量的是订单簿在某个价格区间内能承载多少交易量。深度越大,说明流动性越好,大单不容易造成价格滑点。
我常用「深度图」来直观判断流动性。横轴是价格,纵轴是累计挂单量。深度图越陡峭,说明流动性越差;越平缓,说明流动性越好。
实战技巧:我曾经在某个小交易所做市,表面上看价差只有0.2%,但深度图显示,超过50手的单子就会把价格打穿两档。这种「假深度」很坑人。后来我养成了习惯——下单前先看深度图,而不是只看价差。
衡量流动性的几个关键指标:
- 买卖价差:越小越好
- 订单簿深度:前五档的总挂单量
- 滑点成本:吃单一定数量造成的价格偏移
- 成交速度:限价单被吃掉的平均时间
这里我画了一张图,帮你理解订单簿的微观结构:
2.4 订单类型详解
做市商最常用的订单类型有三种:限价单、市价单和冰山订单。每种都有它的用武之地。
2.4.1 限价单 (Limit Order)
限价单就是指定一个价格,只有达到这个价格或更优时才会成交。做市商的核心策略就是挂限价单——在买一挂单,在卖一挂单,赚取价差。
限价单的好处是你可以控制成交价格,坏处是不一定能成交。我记得有一次,我在某个波动剧烈的币种上挂了限价单,结果价格直接跳空穿过去,我的单子根本没成交,白白错过了行情。
注意:限价单不保证成交。在快速波动的市场中,你的单子可能永远排不上队。这时候就需要考虑是否要调整报价策略。
2.4.2 市价单 (Market Order)
市价单就是「不管价格,立即成交」。你输入数量,系统自动按当前最优价格帮你吃掉对手盘。
市价单的优点是成交速度快,缺点是滑点成本高。尤其是流动性差的时候,一个市价单可能把价格打穿好几档。
我一般只在两种情况下用市价单:一是需要紧急平仓,二是判断行情即将大幅波动,想抢在别人前面进场。
2.4.3 冰山订单 (Iceberg Order)
冰山订单,顾名思义,只露出冰山一角。你挂一个大单,但系统只显示一小部分,剩下的藏在下面。每成交一部分,就自动补上一部分。
为什么要用冰山订单?说白了,就是不想让别人知道你的真实意图。如果你在买一挂了10万手,别人一看就知道有大户在吸筹,可能会抢跑或者故意砸盘。
我曾经在某个交易所做市,发现对手盘总是能精准地在我挂单的上方或下方挂单。后来我改用冰山订单,把大单拆成小单分批显示,情况就好多了。
// 冰山订单的伪代码示例
class IcebergOrder:
def __init__(self, total_qty, display_qty, price, side):
self.total_qty = total_qty // 总数量
self.display_qty = display_qty // 显示数量
self.price = price
self.side = side // 'buy' or 'sell'
self.remaining = total_qty
self.current_display = min(display_qty, total_qty)
def on_trade(self, traded_qty):
self.remaining -= traded_qty
self.current_display -= traded_qty
// 如果当前显示部分被吃光,补上新的
if self.current_display == 0 and self.remaining > 0:
self.current_display = min(self.display_qty, self.remaining)
// 重新挂单
2.5 实战中的微观结构观察
做市商每天要面对的就是这些微观结构的变化。我总结了几条经验:
- 价差突然扩大:通常意味着有重大消息或者大户在操作。这时候要小心,不要盲目挂单。
- 深度突然变薄:可能是流动性提供者撤单了。我曾经遇到过某交易所的做市商集体撤单,价差瞬间从0.1%扩大到2%。
- 冰山订单的痕迹:如果你发现某个价格档位反复出现相同数量的挂单,那很可能是冰山订单。这时候可以顺势而为。
- 盘口失衡:买盘远大于卖盘,或者反过来。这种失衡往往预示着价格即将变动。
我的习惯:每天开盘前,我会先看一遍主要交易对的订单簿结构。不是看价格,而是看深度分布。如果发现某个价格区间堆积了大量挂单,那这个位置很可能就是今天的支撑位或阻力位。
嗯,订单簿这东西,你盯得越久,感觉就越敏锐。刚开始可能觉得就是一堆数字,但慢慢你会发现,每个数字背后都藏着交易者的心理和策略。做市商的工作,本质上就是在解读这些数字背后的博弈。
公众号:蓝海资料掘金营,微信deep3321