第六章:做市策略基础

做市策略,说白了就是怎么在市场上「低买高卖」赚差价。但真做起来,你会发现事情没那么简单。我刚开始做做市系统时,以为只要挂个买单和卖单就能赚钱,结果被市场狠狠教育了一顿。

今天咱们聊聊三个核心问题:买卖价差策略、库存管理、报价频率与深度优化。这三块是做市系统的地基,地基不稳,上层策略再花哨也白搭。

6.1 买卖价差策略(Spread Trading)

价差策略是最基础的做市逻辑。你想想看,做市商赚的是什么?就是买一价和卖一价之间的差额。比如比特币当前买一价是50000,卖一价是50010,这10块钱的差价就是你的利润空间。

但问题来了:价差设多大合适?

  • 价差太小:容易被套利者吃掉,利润薄如纸
  • 价差太大:单子挂在那没人理,流动性差

我在项目中遇到过一种比较实用的方法——动态价差调整。核心思路是根据市场波动率实时调整价差宽度。

动态价差公式(简化版):

spread = base_spread + k * volatility
其中:
  base_spread = 最小价差(比如0.01%)
  k = 调整系数(经验值0.5~2.0)
  volatility = 近期波动率(比如过去100笔交易的收益率标准差)

嗯,这里要注意:波动率计算窗口不能太短,否则会被噪音干扰。我习惯用5分钟窗口,配合指数加权移动平均(EWMA)来平滑。

个人经验:别把价差设成固定值。市场安静时价差可以收窄,剧烈波动时一定要放宽。我曾经吃过亏,在波动率飙升时还维持窄价差,结果被连续成交,瞬间亏了不少。

6.2 库存管理(Inventory Management)

做市商最怕什么?不是亏钱,是库存失控。你想想看,如果手里囤了一堆卖不出去的货,或者空仓被逼空,那才是真要命。

库存管理的核心目标就一个:把库存控制在安全范围内

6.2.1 库存偏离度指标

我常用一个指标叫「库存偏离度」,公式很简单:

inventory_skew = (current_inventory - target_inventory) / max_inventory

这个值在-1到1之间。正值表示多头过多,负值表示空头过多。当偏离度超过阈值(比如0.3),就要主动调整报价来消化库存。

6.2.2 库存调整策略

具体怎么调?我总结了三板斧:

  1. 偏移报价:多头过多时,把卖单价压低一点,吸引买家;空头过多时,把买单价抬高一点,吸引卖家
  2. 对冲交易:在相关品种上做反向操作,比如做多BTC的同时做空ETH来对冲
  3. 暂停报价:极端情况下,直接撤单暂停做市,等市场冷静再说

避坑指南:我曾经在库存偏离度达到0.5时还硬扛,结果遇到一波单边行情,库存直接爆了。后来我加了硬止损:偏离度超过0.6就强制平掉一半库存,不管亏多少。这个纪律救了我好几次。

6.3 报价频率与深度优化

报价频率和深度,这两个参数直接影响你的成交概率和滑点成本。说白了就是:你挂单挂得勤不勤?挂得深不深?

6.3.1 报价频率

报价频率太高,容易被交易所当「垃圾流量」限流;太低,又抢不到好位置。我一般遵循这个原则:

  • 正常行情:每100~200ms更新一次报价
  • 剧烈波动:缩短到50ms,但要注意交易所的限流规则
  • 盘整行情:可以放宽到500ms,省点带宽

代码示例:报价频率控制

class QuoteFrequencyManager:
    def __init__(self, min_interval=0.1, max_interval=0.5):
        self.min_interval = min_interval  # 最小间隔(秒)
        self.max_interval = max_interval  # 最大间隔(秒)
        self.last_quote_time = 0
    
    def should_quote(self, volatility):
        # 波动率越高,报价越频繁
        if volatility > 0.02:  # 高波动
            interval = self.min_interval
        elif volatility > 0.01:  # 中波动
            interval = (self.min_interval + self.max_interval) / 2
        else:  # 低波动
            interval = self.max_interval
        
        current_time = time.time()
        if current_time - self.last_quote_time >= interval:
            self.last_quote_time = current_time
            return True
        return False

6.3.2 报价深度

报价深度指的是你在每个价位上挂多少量。深度太浅,大单一来就把你吃穿;深度太深,风险敞口太大。

我习惯用「分层报价」的方式:

层级 价差偏移 挂单量 说明
第1层 ±0.01% 基础量的30% 抢流动性,薄利快跑
第2层 ±0.05% 基础量的50% 主力仓位,赚主要利润
第3层 ±0.15% 基础量的20% 防御仓位,防穿价

小技巧:基础量怎么定?我一般用过去1小时的平均成交量除以100。比如BTC过去1小时成交了1000个,那基础量就是10个。这个值每周重新算一次,避免过时。

6.4 知识体系总览

下面这张图把本章的核心逻辑串起来了。你可以看到,价差策略、库存管理、报价频率与深度三者是互相影响的。

做市策略核心逻辑 做市策略引擎 买卖价差策略 库存管理 报价频率与深度 核心参数 • 基础价差 base_spread • 波动率调整系数 k • 波动率计算窗口 • 动态调整频率 核心指标 • 库存偏离度 skew • 目标库存 target • 最大库存上限 max • 强制平仓阈值 优化参数 • 最小报价间隔 • 分层挂单量 • 基础量计算方式 • 限流保护机制 三者联动:价差影响库存,库存决定报价深度

你看这张图就明白了:价差策略决定了你的报价位置,库存管理告诉你该不该调整,报价频率和深度则决定了你能不能成交。三者缺一不可。

总结一下本章重点:

  • 价差要动态调整,别死板设固定值
  • 库存管理要有硬止损,别心存侥幸
  • 报价频率和深度要匹配市场状态
  • 三个模块要联动,不能各自为政

做市系统这东西,理论说起来简单,真正跑起来全是坑。我建议你先用模拟盘跑一个月,把参数调顺了再上实盘。别问我怎么知道的——都是血泪教训换来的经验。


无相订单流研究社 微信Lucian808555