第三章 报价策略核心:固定价差策略、动态价差策略、基于波动率的报价调整、库存风险与报价偏移

做市商的核心工作,说白了就是两件事:怎么报价,以及怎么管理风险

报价策略,就是决定你挂在买单和卖单上的价格。这玩意儿要是搞不好,要么赚不到钱,要么亏得裤衩都不剩。我做了这么多年,见过太多人在这上面栽跟头。

今天咱们就把报价策略的四个核心模块拆开揉碎了讲。嗯,这章内容有点干,但都是实打实的干货。

报价策略核心 固定价差策略 简单粗暴,适合新手 动态价差策略 随市场状态调整 波动率调整 波动大→价差大 库存风险偏移 库存多→价格偏移 四大策略层层递进,从简单到复杂

3.1 固定价差策略:入门级选手的保命符

固定价差策略,就是不管市场怎么变,你的买卖价差始终不变。

比如你给ETH报价,买价1000,卖价1001,价差固定1个tick。市场涨也好跌也好,这个价差雷打不动。

优点很明显:

  • 实现简单,几行代码搞定
  • 逻辑清晰,不容易出bug
  • 适合流动性好的品种

缺点也很致命:

  • 波动大的时候,你就是在给市场送钱
  • 波动小的时候,你赚不到钱
  • 完全无视库存风险

核心公式:

bid_price = mid_price - spread / 2
ask_price = mid_price + spread / 2

其中spread是固定值,比如0.01或0.1个tick。

我个人习惯,在刚上线一个新市场时,先用固定价差跑几天。为什么?因为这时候你对市场特性还不了解,固定价差至少不会让你死得太难看。

小技巧:固定价差策略最适合用在高频、低波动的品种上。比如BTC/USDT在深夜横盘的时候,用固定价差吃手续费,稳得很。

3.2 动态价差策略:跟着市场节奏跳舞

动态价差,说白了就是让价差自己动

市场活跃了,价差收窄一点,多接点单。市场冷清了,价差拉大一点,别被垃圾单砸到。

我常用的动态调整因子有三个:

因子 说明 调整方向
订单簿深度 买卖盘口的挂单量 深度大→价差收窄
成交频率 单位时间内的成交笔数 频率高→价差收窄
对手方行为 吃单方的激进程度 激进→价差拉大

举个例子。我记得有一次做MATIC的做市,晚上8点突然成交量暴增。固定价差的同行们被疯狂吃单,亏得妈都不认识。我这边动态价差策略自动把价差从0.01拉到了0.03,虽然少接了不少单,但每一单都是赚钱的。

动态价差伪代码:

def dynamic_spread(market_state):
    base_spread = 0.01
    depth_factor = 1 - min(order_book_depth / 100, 0.5)
    volume_factor = 1 + min(trade_volume / 1000, 0.3)
    spread = base_spread * depth_factor * volume_factor
    return max(spread, min_spread)

注意:动态价差不是越复杂越好。我见过有人搞了十几个因子,结果策略跑起来比乌龟还慢,等它算完价差,行情都变了。你想想看,做市商拼的是什么?是速度啊!

3.3 基于波动率的报价调整:波动越大,价差越宽

这个策略的核心逻辑很简单:波动率越高,不确定性越大,价差就应该越宽

为什么?因为波动大的时候,价格可能瞬间跳几个tick。你挂的单子,很可能被一个剧烈波动吃掉,然后价格一去不回头。这时候价差不够宽,你就是在给市场打工。

我常用的波动率指标是历史波动率(HV)已实现波动率(RV)

指标 计算方式 适用场景
HV(历史波动率) 过去N根K线的收益率标准差 判断整体波动水平
RV(已实现波动率) 高频采样下的瞬时波动 实时调整报价

波动率调整公式:

vol_adjusted_spread = base_spread * (1 + k * volatility)
# k是敏感系数,一般取1~5
# volatility是归一化后的波动率值

我曾经踩过一个坑。有一回做SOL的做市,波动率突然飙升,我的策略虽然拉大了价差,但拉得不够快。结果一个插针,我的买单被吃掉,价格直接砸穿。那一单亏了将近2000U。

后来我加了一个波动率突变检测:如果波动率在1秒内翻倍,直接暂停报价5秒钟。这个逻辑救了我好几次。

避坑指南:波动率指标不要用太长的窗口。我建议用10~20根1分钟K线算HV,用最近100笔成交算RV。太长的话,等你反应过来,行情都走完了。

3.4 库存风险与报价偏移:别让库存压死你

库存风险,是做市商最大的敌人。

你想想看,你手里攒了一堆ETH,结果ETH暴跌,你亏不亏?反过来,你把ETH全卖光了,结果ETH暴涨,你踏不踏空?

所以,报价必须根据库存做偏移

核心逻辑:

  • 库存多了 → 降低卖价,提高买价(鼓励卖出,抑制买入)
  • 库存少了 → 提高卖价,降低买价(鼓励买入,抑制卖出)

库存偏移公式:

inventory_skew = (current_inventory - target_inventory) / max_inventory
adjusted_bid = mid_price - spread/2 - inventory_skew * skew_factor
adjusted_ask = mid_price + spread/2 - inventory_skew * skew_factor

skew_factor控制偏移力度,一般取0.1~0.5个tick。

我个人的经验是,库存偏移一定要和波动率联动。波动大的时候,偏移力度要加大,因为这时候库存风险更高。波动小的时候,偏移可以小一点,让策略多赚点手续费。

警告:库存偏移不是万能的。如果你发现偏移量已经拉到了极限,库存还在往危险方向跑,那就别硬扛了。该止损止损,该对冲对冲。我曾经因为舍不得止损,硬扛了3个小时,最后亏了5万U。嗯,那是我做市生涯最惨的一天。

3.5 四种策略如何组合?

实际生产中,没人只用一种策略。都是组合拳。

我常用的组合方式:

  1. 固定价差作为基础,保证最低利润
  2. 动态调整根据订单簿和成交情况微调
  3. 波动率因子在波动剧烈时大幅拉宽价差
  4. 库存偏移在最后环节修正报价

这四层叠加下来,报价逻辑大概是这样的:

final_bid = mid - (base_spread * dynamic_factor * vol_factor) / 2 - inventory_skew
final_ask = mid + (base_spread * dynamic_factor * vol_factor) / 2 - inventory_skew

你看,每个因子各司其职。固定价差保底,动态因子适应市场,波动率因子防黑天鹅,库存偏移管风险。缺一个都不行。

最后说一句:策略写好了,一定要回测。我习惯用过去30天的数据做回测,然后跑模拟盘跑一周。没问题了再上实盘。别一上来就真金白银干,那是找死。


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