0312 分钟
SPREAD · MAKER · TAKER

价差是谁留下的?

把盘口看成一组等待中的库存,比较卖一深度、买卖价差与一笔扫单的真实交易成本。

本章目标学完后,你应该能:
  • 区分价差、深度和最近成交价
  • 解释做市者为什么愿意在两边挂单
  • 用盘口变化判断流动性是否正在变薄
章节位置第 3 / 4 章
  1. 上一章市价单会吃掉什么?
  2. 本章价差是谁留下的?

    把盘口看成一组等待中的库存,比较卖一深度、买卖价差与一笔扫单的真实交易成本。

  3. 下一章改价为什么要重新排队?
阅读前

先想一想这几个问题

展开答案前,可以先在心里做个判断。与预期不同的内容可以加入复习列表。

Q01买卖价差只有 1,为什么大单仍然可能很贵?
简要回答

价差只描述最前面一小档。若卖一只有 1 份,后面价格迅速抬高,大单会跨档成交;交易成本取决于整条深度,不只看门口。

和原先判断相比:

订单簿里的流动性不是一个抽象百分比,而是一组愿意在不同价格等待的资产。买一、卖一、各档数量和最近成交价共同决定:此刻交易需要付出多少,以及一笔更大的订单会把价格推到哪里。

价差是第一笔交易成本

买一是当前最高买价,卖一是当前最低卖价。两者之间的价差不是某个人单独收取的费用,而是立即买入再卖出时必须跨过的空间。做市者通过在两边挂单提供选择,承担库存和被动成交的风险,换取可能的价差收益。

ENGINE RUNNINGLAB / 积分
ORDERBOOK 001 · PRICE / TIME PRIORITY

LAB / 积分

限价订单先进入队列;只有盘口交叉,撮合引擎才会把它们变成成交。

最近成交分 / LAB
买一98最高买价
卖一102最低卖价
价差4
已成交0LAB
DEPTH · IMPACT

同一个“买入”会不会穿过多个价格档位?

先看卖一有多少数量,再调整深度探针。只有跨到 105 分档位时,平均执行价才会高于第一档报价。

卖一数量 5 LAB5 LAB 预估均价 102相对卖一冲击 0 bps
实时订单簿价格 / 剩余 / 来源
卖单(ASK)买单(BID)
1022A
1023B
1055A
983B
965A
卖一:102买一:98
观察提示

先读盘口:卖一是当前最低卖价,买一是当前最高买价。只有买价不低于卖价时,撮合循环才会启动。

引擎事件1 EVENTS
  1. 01

    盘口创建:卖一 102 分(两个价位相同的订单),买一 98 分。价格和时间都需要被保留。

操作记录实验时间轴
1 个状态快照

拖动滑块可以回到此前的步骤。从那里继续操作时,后续记录会替换为新的操作序列。

初始状态
查看实验记录 →

Maker 与 Taker 是两种不同的动作

  • Maker 把限价单留在盘口,等待别人来成交;它增加可见深度,也承担订单被选择的风险。
  • Taker 提交能穿过价差的订单,立即消耗已有流动性;它获得确定性,但可能付出价差和价格冲击。

相同的账户可以在不同动作中扮演两种角色。一个“买入”按钮不能说明它是好是坏,必须看它是把订单放进队列,还是跨过卖一执行。

展开:这一步如何实现
spread = bestAsk - bestBid
average = sum(fill.price * fill.quantity) / sum(fill.quantity)
impact = average / bestAsk - 1

价差、价格冲击和手续费是不同概念:价差来自买卖两边的报价间隔,冲击来自你改变了可用档位,手续费则是协议或平台额外扣除的金额。把它们混在一起,会误判市场到底是“贵”还是“薄”。

理解检查

判断一个订单簿是否有足够流动性时,哪组信息最有用?

继续追问盘口

  1. 做市者为什么可能在波动时撤掉报价?
  2. 为什么一个看起来很窄的价差,遇到大单仍然可能很贵?
  3. 当卖一数量下降时,订单簿的风险是价格先变,还是可成交数量先变?

这些问题把订单簿和 AMM 连接起来:订单簿把深度拆成离散报价,AMM 把深度写进一条连续曲线。两者都在回答“下一单位资产要付出什么代价”。

本章小结完成练习和理解检查后,可以保存本章