第4章 价差与深度分析:买卖价差计算、市场深度曲线、深度对价格波动的影响

做量化交易,尤其是做市策略,有两个东西你绕不开:价差深度

说白了,价差决定了你的交易成本,深度决定了你能吃下多大的单子而不把价格打飞。这两者合在一起,就是市场流动性的核心。

我个人习惯把价差和深度比作「市场的呼吸」——价差是呼吸的节奏,深度是肺活量。节奏快但肺活量小,市场容易抽风;节奏慢但肺活量大,市场死气沉沉。真正健康的市场,两者得平衡。

4.1 买卖价差计算

买卖价差(Bid-Ask Spread),就是买一价和卖一价之间的差值。公式很简单:

Spread = Ask_Price - Bid_Price

但实际计算时,我建议用相对价差,也就是价差除以中间价:

Relative Spread = (Ask - Bid) / ((Ask + Bid) / 2) * 100%

为什么用相对价差?因为绝对价差没法跨品种比较。比如BTC的价差可能是0.5 USDT,但ETH的价差可能是0.05 USDT,绝对值差10倍,但相对值可能都是0.02%。

核心观点:相对价差才是衡量交易成本的真正标尺。绝对价差只适合同一个品种在不同时间点对比。

我在项目中遇到过一个问题:某个小币种,买一价1.000,卖一价1.005,绝对价差0.005,看起来很小。但中间价才1.0025,相对价差高达0.5%!这意味着你每做一次双边交易,成本就是0.5%。高频做市的话,这点利润全被价差吃掉了。

嗯,这里要注意:价差不是固定不变的。它会随着市场情绪、时间、波动率变化。我一般会实时监控价差的滚动均值,如果价差突然放大到均值的2倍以上,说明市场流动性出问题了,这时候我会暂停做市。

4.2 市场深度曲线

市场深度曲线,说白了就是「在不同价格水平上,有多少单子等着成交」。

你想想看,买一价只有1个BTC,买二价有10个BTC,买三价有100个BTC。那你想买50个BTC,就不能只吃买一,你得把买一到买三全吃掉,价格自然就上去了。

深度曲线就是用来量化这个过程的。我习惯把深度曲线画成阶梯图:

价格水平 | 累计挂单量
1.000    | 1 BTC
0.999    | 11 BTC  (1+10)
0.998    | 111 BTC (1+10+100)
...

画成图更直观。下面是我用SVG画的一个简化版市场深度曲线:

市场深度曲线(简化示意) 累计挂单量 0 50 100 150 1.010 1.005 1.000 0.995 中间价 1.000 卖单深度 买单深度 深度越陡 → 流动性越好

这张图里,横轴是累计挂单量,纵轴是价格。红色是卖单深度,绿色是买单深度。曲线越陡,说明在同样的价格变动下能吃掉更多的单子——也就是流动性越好。

实战技巧:我一般会计算「深度斜率」——也就是价格变动1%需要吃掉多少量。斜率越大,市场越抗揍。如果斜率突然变缓,说明大户在撤单,可能要搞事情。

4.3 深度对价格波动的影响

深度和价格波动的关系,其实就一句话:深度越浅,波动越大

为什么会这样?你想想看,一个深度只有10个BTC的市场,一个1000 BTC的大单砸进来,价格直接被打穿好几个档位。而在深度10000 BTC的市场里,同样1000 BTC的单子可能只让价格波动0.1%。

我整理了一个表格,方便你理解不同深度下的价格冲击:

市场深度(买一~买五总量) 100 BTC 市价卖单 500 BTC 市价卖单 1000 BTC 市价卖单
浅(100 BTC) 价格下跌 2-3% 价格下跌 8-12% 价格下跌 15-20%+
中(500 BTC) 价格下跌 0.5-1% 价格下跌 3-5% 价格下跌 8-10%
深(2000 BTC) 价格下跌 0.1-0.3% 价格下跌 0.5-1% 价格下跌 2-3%

这个表格是我根据实盘数据总结的。注意,这只是个参考,实际冲击还跟订单簿的分布形态有关。

警告:千万不要在深度浅的市场里下大单!我曾经在某个小交易所吃过亏,一个500 BTC的单子直接把价格砸穿了3个点,滑点损失比我做一周的利润还多。从那以后,我每次下单前都会先看深度。

另外,深度还会影响价格反弹。深度浅的市场,价格被打下去后,因为买单被吃光了,反弹会很慢。深度深的市场,买单层层叠叠,价格被打下去后很快就能弹回来。

我个人习惯用「深度恢复时间」这个指标——就是价格被打穿后,恢复到原价需要多少时间。深度好的市场,恢复时间通常在几秒到几十秒;深度差的市场,可能几分钟都回不来。

4.4 实战:如何用深度数据做决策

说了这么多理论,来点实际的。我一般会做三件事:

  1. 计算价差阈值:如果相对价差超过0.1%(BTC),我就不做市了,等价差收窄再进场。
  2. 监控深度变化率:如果深度在1分钟内减少了30%以上,说明有大户在撤单,我会跟着减仓。
  3. 模拟价格冲击:下单前,我会用当前深度数据模拟一下,如果我的单子进去,价格会变动多少。如果滑点超过预期利润的20%,我就拆单或者等更好的时机。

嗯,这里有个小技巧:不要只看买一卖一的深度。很多做市商喜欢在买一卖一挂小单钓鱼,真正的深度在买二买三。我一般会看买一到买五的累计深度,那才是真实的市场承载力。

最后说一句:价差和深度是动态的,别指望看一次就能一劳永逸。我每天开盘前都会跑一遍深度扫描脚本,把主要交易对的深度数据存下来,方便做对比分析。


公众号:蓝海资料掘金营,微信deep3321