12、做市商最优报价策略:基于库存的报价调整、基于信息的报价策略、动态报价算法
做市商的报价,说白了就是一场「既要又要」的博弈。
你既要赚到买卖价差,又不能让库存风险把你压垮。我刚开始做结构化产品做市那会儿,总觉得报价就是算个理论价,然后加点差就完事了。结果呢?库存一堆积,市场一波动,账面浮亏能让你睡不着觉。
后来我才明白,报价策略的核心就三个字:动态调。
12.1 基于库存的报价调整
库存管理是做市商的命门。你想想看,你手里攒了一堆期权,市场突然暴跌,你的Delta对冲根本来不及,那亏损就是实打实的。
所以,报价必须跟着库存走。
12.1.1 库存偏移量模型
我个人习惯用一个简单的线性模型来调整报价。假设你的目标库存是 \( I^* \),当前库存是 \( I \),那么报价偏移量可以写成:
偏移量 = -γ × (I - I*)
这里的 γ 是一个调节系数,我一般取 0.1 到 0.5 之间。γ 越大,报价对库存变化越敏感。
举个例子:
- 你目标库存是 100 手,现在手里有 150 手(超了 50 手)
- γ = 0.2,那么买价要下调 10 个基点,卖价要上调 10 个基点
- 这样做的目的:压低买入价,抬高卖出价,鼓励别人从你手里买走库存
核心逻辑:库存多了就降价卖,库存少了就提价买。听起来简单,但执行起来需要精细调参。
12.1.2 库存风险厌恶系数
我曾经在项目中遇到过一个问题:市场波动率突然飙升,库存风险急剧放大。这时候线性模型就不够用了。
我改用了一个带风险厌恶系数的模型:
偏移量 = -γ × (I - I*) × (1 + λ × σ)
其中 λ 是风险厌恶系数,σ 是当前波动率。波动率越高,偏移量越大,报价调整越激进。
避坑指南:我曾经把 λ 设得太大,结果市场一波动,报价直接跳到离谱的位置,完全没人交易。后来我改成 λ = 0.5,效果就好多了。
12.2 基于信息的报价策略
做市商不是瞎子。你得从订单流里「嗅」出信息。
说白了,就是判断对手方是不是知情交易者。如果对方是知情者,你跟他做对手盘,大概率要亏。
12.2.1 订单流不平衡指标
我常用的一个指标叫「订单流不平衡度」:
OFI = (买单数量 - 卖单数量) / (买单数量 + 卖单数量)
OFI 接近 +1,说明买盘汹涌,可能有内幕消息在推动。这时候我会:
- 提高卖价,降低买价
- 缩小报价宽度,减少风险暴露
OFI 接近 -1,说明卖盘压境,我会反向操作。
12.2.2 信息冲击的量化
我记得有一次,某个结构化产品的标的突然传出并购消息。订单流瞬间失衡,OFI 直接飙到 0.8。
我当时用了一个简单的贝叶斯更新模型:
P(信息事件 | OFI) = P(OFI | 信息事件) × P(信息事件) / P(OFI)
虽然公式看着复杂,但实际用起来就是:
- 如果 OFI 超过 0.6,我直接暂停做市 30 秒
- 等市场消化信息后,再重新报价
注意:信息驱动的报价调整,一定要快。慢了就是给别人送钱。我见过有人反应慢了 2 秒,结果被高频交易者反复收割。
12.3 动态报价算法
前面讲的都是静态调整。但真正的做市商,报价是实时变化的。
动态报价算法,就是把库存、信息、市场状态全部揉在一起,算出一个最优报价。
12.3.1 多因子报价模型
我常用的一个动态报价公式长这样:
最优买价 = 理论价 - 价差/2 - α × 库存偏移 - β × 信息冲击
最优卖价 = 理论价 + 价差/2 + α × 库存偏移 + β × 信息冲击
其中:
- α 是库存调整系数(0.1 ~ 0.3)
- β 是信息调整系数(0.2 ~ 0.5)
- 价差 = 基础价差 × (1 + γ × 波动率)
12.3.2 实时参数校准
参数不能死板。我习惯每 5 分钟重新校准一次 α 和 β:
# 伪代码示例
def calibrate_params(order_book, inventory):
# 计算最近5分钟的成交数据
recent_trades = get_recent_trades(5 * 60)
# 如果成交频繁,说明报价太激进,降低α
if len(recent_trades) > 100:
alpha *= 0.95
# 如果库存偏离目标太多,提高β
if abs(inventory - target_inventory) > 50:
beta *= 1.1
return alpha, beta
关键点:动态报价不是一劳永逸的。你得让算法自己「学习」市场的变化。我见过最好的做市系统,参数每 30 秒就更新一次。
12.3.3 整体流程
下面这张图,是我自己总结的动态报价决策流程:
12.4 实战中的坑与经验
嗯,这里要注意几个容易翻车的地方:
- 参数过拟合:我见过有人用历史数据调出完美参数,结果实盘一跑就崩。动态报价的参数,一定要留出「安全边际」。
- 延迟问题:报价计算不能超过 10 毫秒。超过这个时间,你的报价就已经过时了。
- 极端行情:我曾经在 2020 年 3 月遇到过波动率飙升到 80% 的情况。那时候所有模型都失效了,我直接切换到「手动模式」,暂停做市。
我的建议:刚开始做动态报价,别搞太复杂。先跑通库存调整,再加信息因子,最后才上动态校准。一步到位,容易翻车。
好了,关于做市商最优报价策略,核心就是这三块:库存、信息、动态。你把这三点吃透了,做市商的利润模型基本就稳了。
无相订单流研究社 微信Lucian808555