做市商报价策略基础:对称报价与非对称报价
做市商的报价策略,说白了就是决定「怎么挂单」才能赚钱。我刚开始做市的时候,以为只要两边挂单就行了,结果亏得挺惨。后来才明白,报价策略是门精细活,核心就三个维度:对称还是非对称、宽度和深度怎么权衡、时间加权还是成交量加权。
今天咱们就把这三个基础策略掰开揉碎了讲。嗯,都是我在实盘里踩过坑之后总结出来的。
对称报价 vs 非对称报价
先说说最基础的对称报价。你想想看,如果市场很平稳,没有明显的方向性,那买卖两边挂一样的宽度,是不是很合理?
对称报价就是买一和卖一的价格差(spread)相对于中间价是对称的。比如中间价是100,你买一挂99.5,卖一挂100.5,两边各0.5的差价。这种策略的好处是——简单、公平、不容易被套利者盯上。
但我个人习惯,大部分时候不会用完全对称的报价。为什么?因为市场从来就不是对称的。
非对称报价,说白了就是根据你对短期方向的判断,把报价往一边倾斜。比如你觉得接下来买盘会更强,那就把买价挂高一点,卖价也挂高一点。这样你更容易吃到买单,同时卖单不容易被吃掉——相当于你在「囤货」。
- 对称报价:spread对称分布,适合震荡市、低波动环境
- 非对称报价:spread偏向一侧,适合趋势市、信息不对称环境
我在项目中遇到过一件事:某个流动性较差的币种,我一开始用对称报价,结果发现每次大单进来我都亏。后来改成非对称报价,把卖价挂高0.2个tick,买价挂低0.1个tick,反而盈利了。原因很简单——那个市场里,大单基本都是买方,我得给自己留点安全垫。
报价宽度与深度权衡
报价宽度(spread)和深度(depth)是一对天生的矛盾。宽度越窄,你越容易成交,但每笔赚得少;宽度越宽,每笔赚得多,但成交概率低。深度也是——挂单量越大,你承担的风险越大,但能吃到更多订单流。
这里有个经典的权衡公式,我经常用:
# 报价宽度与深度的权衡模型
def optimal_quote(spread, depth, volatility, inventory):
"""
spread: 当前报价宽度(bps)
depth: 每档挂单量(基准单位)
volatility: 近期波动率(bps)
inventory: 当前库存(正数=多头,负数=空头)
"""
# 波动率越高,宽度应该越宽
width_adj = spread * (1 + 0.5 * volatility / 100)
# 库存偏离越大,深度应该越小
depth_adj = depth * (1 - 0.3 * abs(inventory) / max_inventory)
return width_adj, depth_adj
你看,这个模型很简单,但很实用。波动率高了,我就把宽度拉大,防止被瞬间吃掉;库存偏了,我就减少挂单深度,降低风险暴露。
我曾经吃过一次亏:某个山寨币突然波动率飙升,我还在用原来的窄宽度挂单,结果连续被吃了好几笔,库存一下子偏得厉害。嗯,那次教训挺深刻的。后来我加了个动态调整逻辑,波动率每上升10%,宽度自动加宽5%。
| 市场状态 | 建议宽度 | 建议深度 |
|---|---|---|
| 低波动、高流动性 | 窄(1-2 tick) | 深(大单量) |
| 高波动、低流动性 | 宽(3-5 tick) | 浅(小单量) |
| 库存严重偏离 | 不对称加宽 | 减少暴露侧深度 |
时间加权与成交量加权报价
这两个概念,很多人容易搞混。我简单解释一下。
时间加权报价:你的报价在时间维度上平均。比如你每5秒更新一次报价,那这5秒内的报价就是「时间加权」的。这种策略适合流动性好、订单流均匀的市场。
成交量加权报价:你的报价根据成交量来调整。比如某段时间成交量特别大,你就把报价往那个方向倾斜。这种策略适合有信息冲击、大单频繁的市场。
我个人习惯,在大多数情况下用成交量加权报价。为什么?因为成交量才是真正的「信号」。时间只是背景,成交量才是剧情。
举个例子,我写过的一个简单实现:
def weighted_quote(mid_price, volume_profile, time_decay=0.8):
"""
volume_profile: 最近N笔成交的买卖量比例
time_decay: 时间衰减因子(越旧的成交权重越低)
"""
# 计算成交量加权偏移
buy_volume = sum(v * (time_decay ** i) for i, v in enumerate(volume_profile['buy']))
sell_volume = sum(v * (time_decay ** i) for i, v in enumerate(volume_profile['sell']))
# 偏移方向:买量大于卖量,报价上移
imbalance = (buy_volume - sell_volume) / (buy_volume + sell_volume + 1e-8)
# 报价偏移量(最大0.5个tick)
offset = imbalance * 0.5 * tick_size
bid = mid_price - spread/2 + offset
ask = mid_price + spread/2 + offset
return bid, ask
你看,这里用了时间衰减因子,让最近的成交影响更大,旧的成交逐渐被遗忘。这就是时间加权和成交量加权的结合。
知识体系总览
下面这张图,是我自己整理的本章节知识结构。你可以把它当作一个快速索引:
这张图把三个策略的关系理清楚了。你看,它们不是孤立的,而是层层递进、互相影响的。对称/非对称是「方向选择」,宽度/深度是「参数设定」,时间/成交量加权是「动态调整」。三者配合好了,你的做市策略才算入门。
嗯,今天就先讲到这里。这些基础策略看着简单,但真正用好,需要大量的回测和实盘调参。我建议你先把对称报价跑通,再慢慢加入非对称和加权逻辑。别一上来就想搞复杂的,容易翻车。