做市商策略设计原理

做市商策略,说白了就是「低买高卖」的升级版。你想想看,传统交易是赌方向,做市商不赌方向,赚的是买卖价差。我刚开始接触这个领域时,总觉得这活儿简单——不就是挂买单和卖单嘛。结果第一次实盘测试,半小时亏了三千美金。嗯,这里面的门道,比想象中深得多。

今天咱们聊聊做市商策略设计的四个核心模块。我个人习惯把它们看作一个闭环系统:双边报价是引擎,库存管理是方向盘,价差与报价量是油门刹车,风险敞口控制是安全带。缺一个,车就开不稳。

核心观点:做市商不是预测价格,而是管理流动性。你的利润来自为市场提供流动性所获得的「服务费」——也就是买卖价差。

双边报价策略

双边报价,就是同时挂买单和卖单。比如BTC当前价格30000,我挂29980的买单和30020的卖单。有人卖给我,我赚了20块的价差空间;有人买我的,我也赚了20块。听起来很完美?

但现实很骨感。我在项目中遇到过一个问题:如果价格快速下跌,我的买单被吃掉,卖单却挂在高位没人理。结果就是手里全是货,眼睁睁看着价格往下掉。这就是双边报价的第一个坑——不对称成交风险

怎么解决?我建议采用动态偏移报价

# 伪代码示例:动态偏移报价
def calculate_quote_price(mid_price, inventory_ratio, spread):
    # inventory_ratio: 当前库存占比,正数表示多头,负数表示空头
    # spread: 目标价差
    
    # 根据库存调整报价偏移
    offset = -inventory_ratio * spread * 0.3  # 偏移系数0.3
    
    bid_price = mid_price - spread/2 + offset
    ask_price = mid_price + spread/2 + offset
    
    return bid_price, ask_price

这个逻辑很简单:如果你手里货多了,就把卖单价调低一点,买单价也调低一点,鼓励别人来买你的货。反之亦然。说白了,就是用报价来「赶」库存回归中性。

实战技巧:偏移系数不要设太大。我曾经设了0.5,结果报价偏离市场太远,完全吃不到单。0.2-0.3是个不错的起点。

库存管理基础

库存管理是做市商的核心命门。你想想看,做市商本质上是个「仓库管理员」——货太多怕跌,货太少怕涨。理想状态是库存为零,但现实中不可能。

我常用的库存管理框架分三层:

层级 目标 触发条件 操作
第一层 被动调整 库存偏离<10% 调整报价偏移
第二层 主动对冲 库存偏离10%-30% 使用对冲订单
第三层 紧急平仓 库存偏离>30% 市价单减仓

这里有个关键点:库存偏离的计算基准是什么?我见过很多人用「当前持仓数量」除以「最大允许持仓」,这其实不对。应该用价值偏离——也就是持仓市值相对于目标市值的比例。

举个例子:你本金10万美金,目标库存价值为0。现在持有2个BTC,价格5万美金,总价值10万美金。那库存偏离就是100%。这时候你该慌了——整个仓位都在裸奔。

避坑指南:我曾经犯过一个错误——只监控库存数量,不监控库存价值。结果BTC从3万涨到6万,我的库存数量没变,但风险敞口翻了一倍。从那以后,我改用价值维度做库存管理。

价差与报价量设定

价差设多大?报价量设多少?这两个参数直接决定了你的盈利能力和风险暴露。

先聊价差。我总结了一个经验公式:

价差 = 基础价差 + 波动率调整 + 库存调整

基础价差 = 手续费 * 2 + 滑点容忍度
波动率调整 = 近期波动率 * 系数
库存调整 = abs(库存偏离) * 系数

举个例子:如果手续费是0.1%,滑点容忍度0.05%,那基础价差就是0.25%。如果近期波动率是2%,系数取0.1,波动率调整就是0.2%。库存偏离20%,系数取0.5,库存调整就是0.1%。最终价差 = 0.25% + 0.2% + 0.1% = 0.55%。

报价量呢?我建议遵循凯利公式的简化版

报价量 = 可用资金 * 风险系数 / (价差 * 价格)

# 风险系数一般取0.01-0.05
# 价差用百分比形式

比如可用资金10万美金,风险系数0.02,价差0.55%,BTC价格5万:

报价量 = 100000 * 0.02 / (0.0055 * 50000) ≈ 0.727 BTC

嗯,这里要注意:报价量不能超过交易所的最小交易单位限制,也不能超过你的库存容量。

个人经验:刚开始做的时候,我习惯把报价量设小一点,宁可少赚也别亏。等跑顺了再慢慢加量。这就像开车,新手先慢点开,熟悉了再提速。

风险敞口控制

风险敞口控制,说白了就是「别一把梭哈」。做市商最大的风险不是方向判断错误,而是流动性危机——市场剧烈波动时,你的对手方消失了,只剩你一个人扛着单子。

我常用的风险控制手段:

  1. 最大持仓限制:总持仓价值不超过净资产的2-3倍
  2. 单边敞口限制:多头或空头敞口不超过净资产的1倍
  3. 止损线:当日亏损达到净资产的2%时,暂停交易
  4. 熔断机制:市场波动率超过阈值时,自动撤单

这里我画了一张流程图,展示整个风险控制体系的运作逻辑:

做市商风险控制体系流程图 市场数据输入 波动率是否超过阈值? 触发熔断 库存偏离是否超标? 执行库存调整 当日亏损是否超过2%? 暂停交易 执行双边报价 图例: 决策节点 风险触发 正常状态 调整状态 正常流程 调整后流程

这个流程图的逻辑很清晰:先检查市场环境,再检查自身状态,最后才决定是否报价。我见过很多人跳过前两步,直接报价,结果就是被市场收割。

重要提醒:风险控制不是事后补救,而是事前预防。我建议在策略启动前就把所有风控参数写死,运行时不允许人工修改。人性经不起考验,尤其在亏损的时候。

最后说一句:做市商策略不是印钞机。它是个精细活,需要不断调参、优化、复盘。我见过太多人上来就想赚大钱,结果亏得连本金都保不住。稳扎稳打,才是长久之道。


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