第三章 做市策略核心原理:双边报价、价差收入、库存管理、风险敞口、盈亏平衡分析

做市策略,说白了就是「两边吃价差」的生意。我刚开始接触这个领域时,觉得不就是低价买、高价卖嘛,有什么难的?后来真金白银砸进去才发现,这里面的门道深着呢。

今天咱们就把做市策略的五个核心模块拆开揉碎了讲。你想想看,一个做市商每天面对的是什么?是不断跳动的盘口,是随时可能出现的巨量订单,还有那个永远在变化的库存风险。

3.1 双边报价:做市商的立身之本

双边报价,就是同时在买一和卖一挂单。我习惯把买价叫Bid,卖价叫Ask。这两个价格之间的差距,就是我们的利润来源。

举个例子,假设螺纹钢期货当前市价是4000元/吨。我可能会这样挂单:

Bid: 3998元  挂单量: 10手
Ask: 4002元  挂单量: 10手

这里价差是4个点。如果市场波动不大,两边都成交了,我就赚了4个点乘以每点乘数。听起来很美好对吧?

核心要点:双边报价不是简单挂两个单子就完事了。你需要考虑三个维度:

  • 价差宽度:太宽了成交不了,太窄了利润薄
  • 挂单深度:每边挂多少手?挂多了风险大,挂少了赚不到钱
  • 更新频率:多久调整一次报价?高频做市可能每秒更新几十次

我在项目中遇到过最头疼的事,就是双边报价被「吃掉」一边。比如市场突然拉升,我的Ask单被扫光,但Bid单还挂着。这时候我就变成了单向持仓,风险敞口瞬间暴露。

3.2 价差收入:算清楚这笔账

价差收入,就是做市商的核心收入来源。但怎么算?很多人以为就是Ask减Bid那么简单。

实际上,真实收入要扣除手续费、滑点、还有未成交部分的成本。我给大家一个公式:

净价差收入 = (成交均价_卖 - 成交均价_买) × 成交量 - 手续费 - 滑点成本

举个例子,假设我一天做了1000手双边交易:

项目 数值
平均买入价 3998.5
平均卖出价 4001.5
每手价差 3个点
总成交量 1000手
手续费 5000元
滑点成本 2000元
净收入 3000 × 10 - 5000 - 2000 = 23000元

个人经验:我建议新手做市商把目标价差设在最小变动价位的2-3倍。比如螺纹钢最小变动是1元,那价差至少设2-3元。太窄了,一次滑点就能吃掉你一周的利润。

3.3 库存管理:做市商的生死线

库存管理,说白了就是控制你手里有多少货。做市商不是投机者,我们不想赌方向。理想状态是:收盘时库存为零。

但现实哪有那么完美?市场波动时,你的库存会不断变化。我常用的库存管理策略有三种:

  1. 对称报价调整:库存为正(手里有多单)时,把Bid价格压低,Ask价格也压低,鼓励卖出
  2. 库存上限控制:设定一个最大持仓量,到了就停止做市
  3. 对冲策略:用相关品种的期货或期权对冲库存风险
# 一个简单的库存调整逻辑
def adjust_quote(inventory, base_bid, base_ask):
    # inventory: 当前库存,正数表示多单,负数表示空单
    # 库存每增加10手,价差中心偏移1个tick
    
    inventory_impact = inventory / 10 * tick_size
    
    adjusted_bid = base_bid - inventory_impact
    adjusted_ask = base_ask - inventory_impact
    
    return adjusted_bid, adjusted_ask

避坑指南:我曾经吃过一次大亏。当时螺纹钢库存到了200手多单,我觉得行情还会涨就没及时调整。结果下午跳水,一天亏了30万。从那以后,我给自己定了个铁律:库存超过50手,必须强制减仓。

3.4 风险敞口:看不见的敌人

风险敞口,就是你的持仓暴露在市场波动中的那部分。做市商最怕的不是亏钱,而是不知道自己在亏钱。

我习惯把风险敞口分成三类:

  • 方向性风险:单边持仓带来的涨跌风险
  • 基差风险:不同合约之间的价差变化风险
  • 流动性风险:想平仓时没人接盘的风险

怎么量化风险敞口?我常用VaR(在险价值)来衡量。比如95%置信度下,一天最大可能亏损是多少。

# 计算风险敞口
def calculate_var(positions, market_data, confidence=0.95):
    # positions: 持仓列表 [(合约, 手数, 方向)]
    # 假设波动率是20%
    daily_volatility = 0.20 / sqrt(252)
    
    total_exposure = sum(pos[1] * pos[2] for pos in positions)
    var = total_exposure * daily_volatility * norm.ppf(confidence)
    
    return var

我的做法:每天开盘前,我会检查三个数字:当前库存、净风险敞口、VaR值。任何一个超过阈值,当天就只做减仓不做加仓。

3.5 盈亏平衡分析:你到底赚不赚钱

盈亏平衡分析,就是算清楚你的策略在什么情况下能赚钱。很多人只看价差收入,忽略了成本。

做市商的成本包括:

  • 手续费(交易所+期货公司)
  • 滑点成本(尤其是大单)
  • 资金成本(保证金占用)
  • 系统成本(服务器、数据、开发)
  • 库存风险成本(波动带来的潜在亏损)

我给大家一个简单的盈亏平衡公式:

盈亏平衡价差 = (总成本 + 预期库存亏损) / 预期成交量

举个例子:

成本项 每日金额
手续费 5000元
滑点成本 2000元
资金成本 1000元
系统成本 500元
库存风险预留 1500元
总成本 10000元

如果预期每天成交1000手,那每手至少要赚10元才能保本。换算成螺纹钢,就是10个点。

实战建议:我建议每周末做一次盈亏平衡分析。把实际成交价差和盈亏平衡价差对比。如果实际价差长期低于平衡点,说明你的策略需要调整了。要么降低成本,要么提高报价效率。

3.6 核心逻辑框架图

下面这张图,把做市策略的五个核心模块串起来了。我画这张图时,特意把库存管理放在中间——因为它确实是整个策略的枢纽。

做市策略核心原理框架图 库存管理 核心枢纽 双边报价 Bid/Ask挂单 价差收入 利润来源 风险敞口 VaR量化 盈亏平衡 成本分析 报价调整 利润反馈 风险暴露 成本核算 五个模块相互影响,库存管理是连接所有模块的核心

嗯,这张图其实已经说得很清楚了。双边报价产生价差收入,价差收入反过来影响报价策略。库存管理居中调度,既要控制风险敞口,又要做盈亏平衡分析。任何一个环节出问题,整个策略都会崩。

我记得刚开始做做市策略时,只盯着价差收入看,觉得只要价差够大就能赚钱。结果库存越积越多,风险敞口越来越大,最后被一波行情打回原形。所以我现在做策略,第一件事就是设计好库存管理逻辑,然后才是优化报价。


专注资料整理