做市策略类型:被动做市、主动做市、混合做市策略

做市策略不是千篇一律的。我做了这么多年,发现很多人一上来就问我「哪种策略最赚钱?」——这个问题其实问错了。你得先搞清楚自己的交易环境、资金体量、风险承受能力,再去选策略类型。

今天我把做市策略分成三大类:被动做市、主动做市、混合做市。咱们一个一个拆开讲。

一、被动做市(Passive Market Making)

被动做市,说白了就是「挂单等成交」。你在买一卖一的位置挂上订单,等着对手盘来吃你的单子。这是最基础、也是最常见的做市方式。

核心逻辑:赚取买卖价差(Bid-Ask Spread),不主动预测价格方向。

我在项目中遇到过不少新手,一上来就搞被动做市,结果被行情一波带走。为什么?因为被动做市有个致命弱点——方向性风险。你挂的买单,价格一直跌,你就一直接货;你挂的卖单,价格一直涨,你就一直卖飞。

被动做市的典型特征

  • 低延迟要求高:你的订单得比别人快,否则抢不到好位置
  • 库存管理是关键:不能无限接货,得有止损和再平衡机制
  • 适合低波动市场:波动一大,被动做市就是送人头

我的经验:被动做市最适合在震荡行情里做。我一般会配合布林带或者ATR指标,当价格触及上下轨时,适当调整挂单间距。比如ATR=10个tick,我就把挂单间距设成8-12个tick,这样既能吃到价差,又不会被频繁成交。

被动做市的代码骨架

class PassiveMarketMaker:
    def __init__(self, spread_multiplier=1.0):
        self.spread_mult = spread_multiplier
        self.position = 0
        self.inventory_limit = 100

    def calculate_quotes(self, mid_price, atr):
        # 根据ATR动态调整价差
        spread = atr * self.spread_mult
        bid_price = mid_price - spread / 2
        ask_price = mid_price + spread / 2
        return bid_price, ask_price

    def check_inventory(self):
        # 库存过大时,缩小挂单量
        if abs(self.position) > self.inventory_limit * 0.8:
            return 0.5  # 挂单量减半
        return 1.0

避坑指南:我曾经在ETH上做被动做市,没设库存上限,结果一波暴跌接了500个ETH,仓位直接爆了。后来我学乖了——永远设置最大持仓量,超过阈值就停止挂单

二、主动做市(Active Market Making)

主动做市就不一样了。你不是傻等,而是主动出击。你会根据市场信号,主动调整挂单位置、挂单量,甚至主动吃单来管理库存。

你想想看,如果市场突然有大单砸盘,被动做市的人还在那傻傻挂着买单,结果就是被砸穿。但主动做市的人会怎么做?他会立刻撤单,甚至反手做空。

主动做市的核心手段

  1. 订单簿分析:观察买卖盘口的深度和变化速度
  2. 信号驱动:根据技术指标或订单流信号调整策略
  3. 库存主动管理:用对冲单或反向交易来平衡库存

关键区别:被动做市是「等别人来成交你」,主动做市是「我去找成交机会」。

我个人习惯在主动做市里加入订单簿不平衡指标(Order Book Imbalance)。比如买一量是卖一量的3倍以上,说明买方力量强,我会把卖单挂高一点,买单也挂高一点——说白了就是跟着大资金走。

主动做市的代码示例

class ActiveMarketMaker:
    def __init__(self, imbalance_threshold=2.0):
        self.threshold = imbalance_threshold

    def calculate_imbalance(self, bid_volume, ask_volume):
        if ask_volume == 0:
            return float('inf')
        return bid_volume / ask_volume

    def adjust_quotes(self, mid_price, imbalance):
        if imbalance > self.threshold:
            # 买方强势,上移报价
            offset = mid_price * 0.001
            bid_price = mid_price - offset
            ask_price = mid_price + offset * 1.5
        elif imbalance < 1 / self.threshold:
            # 卖方强势,下移报价
            offset = mid_price * 0.001
            bid_price = mid_price - offset * 1.5
            ask_price = mid_price + offset
        else:
            # 平衡状态,正常报价
            bid_price = mid_price * 0.999
            ask_price = mid_price * 1.001
        return bid_price, ask_price

我的经验:主动做市对计算延迟要求更高。我一般会用C++或者Rust写核心逻辑,Python只做回测和监控。别问我为什么——有一次我用Python做实盘,订单簿更新慢了200毫秒,结果被高频交易者反复收割。

三、混合做市(Hybrid Market Making)

混合做市,就是把被动和主动结合起来。嗯,这里要注意——不是简单的「一半一半」,而是根据市场状态动态切换。

我一般把市场状态分成三种:

市场状态 波动率 推荐策略 说明
低波动 ATR < 0.5% 被动为主 吃价差,减少主动干预
中波动 ATR 0.5%-2% 混合模式 被动挂单+主动库存管理
高波动 ATR > 2% 主动为主 减少挂单,多用对冲

混合做市的精髓:在低波动时赚稳定的价差,在高波动时保命。

混合做市的实现思路

class HybridMarketMaker:
    def __init__(self):
        self.passive = PassiveMarketMaker()
        self.active = ActiveMarketMaker()
        self.state = 'low_vol'

    def update_state(self, atr, mid_price):
        vol_ratio = atr / mid_price
        if vol_ratio < 0.005:
            self.state = 'low_vol'
        elif vol_ratio < 0.02:
            self.state = 'mid_vol'
        else:
            self.state = 'high_vol'

    def generate_quotes(self, mid_price, atr, orderbook):
        self.update_state(atr, mid_price)

        if self.state == 'low_vol':
            # 纯被动
            bid, ask = self.passive.calculate_quotes(mid_price, atr)
        elif self.state == 'mid_vol':
            # 被动为主,主动微调
            bid, ask = self.passive.calculate_quotes(mid_price, atr)
            imbalance = self.active.calculate_imbalance(
                orderbook['bid_vol'], orderbook['ask_vol']
            )
            bid, ask = self.active.adjust_quotes(mid_price, imbalance)
        else:
            # 主动为主,减少挂单
            bid, ask = self.active.adjust_quotes(mid_price, 1.0)
        return bid, ask

避坑指南:我曾经在混合做市里犯过一个低级错误——状态切换太频繁。市场在低波动和高波动之间来回跳,我的策略也跟着来回切换,结果手续费比利润还高。后来我加了状态切换的滞后逻辑,比如连续5个tick都满足条件才切换,这才稳定下来。

三种策略的对比总结

维度 被动做市 主动做市 混合做市
收益来源 价差 价差+方向判断 动态调整
风险水平 中(库存风险) 高(方向风险) 中低
技术门槛 中高
适合场景 震荡市、低波动 趋势市、高波动 全场景
代码复杂度 简单 中等 复杂

我个人建议,刚开始做市的朋友先从被动做市入手。跑通一个简单的价差策略,把库存管理、风险控制这些基本功练扎实了,再考虑加主动逻辑。别一上来就想搞混合做市——我见过太多人,策略还没跑明白,先把自己搞晕了。

最后说一句:做市策略没有银弹。你在BTC上跑得好的策略,放到山寨币上可能亏成狗。一定要根据具体的交易品种、流动性、波动特征来调整。嗯,这就是为什么我每次换品种都要重新回测至少一个月的数据。

做市策略类型体系 做市策略 被动做市 主动做市 混合做市 挂单等成交 赚取价差 订单簿分析 信号驱动 动态切换 全场景适应 选择建议 新手 → 被动做市(练基本功) 进阶 → 主动做市(加信号判断) 高手 → 混合做市(动态适应市场)

专注资料整理