第19章 做市商竞争分析:对手方行为建模、报价博弈、市场份额优化

做市这行,说白了就是跟人抢饭吃。

你报个价,对面可能是散户,也可能是另一家做市商。我做了这么多年,最大的体会就是——你不分析对手,你就等着被收割。今天咱们聊聊怎么建模对手方行为、怎么博弈报价、怎么优化你的市场份额。

19.1 对手方行为建模:先搞清楚对面是谁

我习惯把对手分成三类:

  • 散户/零售流:单子小,情绪化,追涨杀跌。他们不看波动率曲面,只看价格涨跌。
  • 机构/算法流:单子大,有策略,会拆单。他们盯着你的报价深度和滑点。
  • 其他做市商:最头疼的一类。他们跟你一样,也在猜你的底牌。

怎么建模?我一般用订单流特征来反推对手类型。

核心指标:

  • 订单到达率(λ):高频还是低频?
  • 订单大小分布:是1手的小单,还是100手的巨单?
  • 报价偏离度:对手报的是NBBO中间价,还是贴边报?
  • 撤单率:挂单后多久撤?散户可能挂10秒,机构可能挂1秒。

举个例子。我曾经遇到一个对手,每次在ATM期权上挂单,都是刚好比我的报价低0.01。撤单率极高,几乎不成交。我一开始以为是散户,后来发现他每次撤单后,都会在更优的位置重新挂。嗯,这明显是另一家做市商在试探我的底价。

建模方法其实不复杂。我常用隐马尔可夫模型(HMM)来分类对手状态。假设对手有“激进”、“中性”、“保守”三种状态,观测值是订单特征。训练好之后,你就能实时判断对面是什么路数。

# 伪代码示例:HMM对手分类
from hmmlearn import hmm

# 观测特征:订单大小、报价偏离、撤单间隔
observations = [[1, 0.01, 10], [100, 0.005, 1], ...]
model = hmm.GaussianHMM(n_components=3, covariance_type="diag")
model.fit(observations)

# 实时预测对手状态
state = model.predict([[order_size, spread_dev, cancel_interval]])

19.2 报价博弈:你报的每一分钱都是信号

报价不是随便填的。你报高了,对手吃你的单;你报低了,你吃对手的单。但问题是——你报低的时候,对手可能也在报低

我个人的经验是,报价博弈的核心在于信息不对称。你知道自己的库存和风险偏好,但不知道对手的。所以你要通过报价来“试探”对手。

一个小技巧:

我习惯在报价中加入“噪声”。比如,我的理论价格是10.00,我可能会报10.01或9.99,而不是精确的10.00。这样对手很难从我的报价中反推出我的真实模型参数。

更高级的博弈,是用贝叶斯纳什均衡来建模。假设你和对手都是理性的,各自有私有信息(比如库存、风险厌恶系数)。你报一个价,对手根据这个价更新他对你的判断,然后他再报一个价。循环往复。

我曾经在项目中用过一个简化模型:

# 报价博弈简化模型
def optimal_quote(my_inventory, my_risk_aversion, opponent_quote):
    # 假设对手的库存服从正态分布
    opponent_inventory_mean = 100
    opponent_inventory_std = 50
    
    # 根据对手报价更新对手库存的信念
    # 报价越低,说明对手库存越大(急于出货)
    updated_mean = opponent_inventory_mean - 0.5 * (opponent_quote - 10.0)
    
    # 计算最优报价
    my_quote = 10.0 - my_risk_aversion * my_inventory + 0.2 * updated_mean
    return my_quote

当然,实际中比这复杂得多。但核心思想是一样的:你的报价不只是价格,还是信号

19.3 市场份额优化:不是越大越好

很多人以为做市商的目标是抢最多的单。错了。我见过太多做市商,市场份额冲到30%,结果亏得一塌糊涂。为什么?因为你抢到的单子,可能都是别人不要的烂单

市场份额优化的本质,是在盈利和市占率之间找平衡。我一般用夏普比率来评估每个品种的做市质量。如果一个品种的夏普比率低于1,我宁愿少做,甚至不做。

品种 市场份额 日均盈亏 夏普比率 建议
沪深300 ETF期权 25% +50,000 2.1 维持
中证500 ETF期权 35% +10,000 0.8 缩减
科创50 ETF期权 15% +30,000 1.5 扩大

你看,中证500的市占率最高,但夏普比率最低。说白了,你是在用高风险换低收益。我建议把资源往科创50倾斜,虽然市占率低,但每一块钱的风险调整后收益更高。

避坑指南:

我曾经在某个品种上死磕市占率,结果被另一家做市商反向收割。他故意在远月合约上报低价,引诱我跟着降价,然后他在近月合约上吃我的单。等我反应过来,已经亏了200万。所以记住:市场份额是结果,不是目标

19.4 实战中的动态调整

市场是活的,你的策略也得是活的。我一般每天开盘前做三件事:

  1. 更新对手模型:用昨天的订单流数据重新训练HMM,看看对手的状态有没有变化。
  2. 调整报价策略:如果发现某个对手变得激进,我就把报价间距拉大,减少被吃单的风险。
  3. 优化市场份额分配:根据夏普比率和当前库存,决定今天重点做哪个品种。

你想想看,如果你每天都是机械地报同样的价,那跟送钱有什么区别?

最后说一句,做市商竞争分析,本质上是一场信息战。谁对对手的了解更深,谁就能在报价博弈中占优。我建议你从今天开始,记录每一个对手的订单特征,哪怕只是简单的Excel表格。三个月后,你会发现自己的报价胜率明显提升。

本章核心要点:

  • 对手方行为建模:用HMM分类对手状态,实时调整策略
  • 报价博弈:报价是信号,用贝叶斯纳什均衡优化
  • 市场份额优化:用夏普比率衡量做市质量,别盲目追市占率
  • 动态调整:每天更新模型,适应市场变化
做市商竞争分析框架 订单流数据 到达率、大小、报价偏离 市场微观结构 买卖价差、深度、波动率 自身状态 库存、风险偏好、资金 对手方行为建模(HMM) 报价博弈 贝叶斯纳什均衡 信号传递与试探 市场份额优化 夏普比率评估 资源动态分配 动态调整 每日模型更新 策略自适应 最优报价策略 + 市场份额分配

这张图把整个分析框架串起来了。从输入到输出,每一步都环环相扣。你照着这个框架去搭建自己的系统,至少能少走三年弯路。

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