做市商策略设计:从想法到落地的完整流程

做市商策略设计,说白了就是回答三个问题:什么时候报价?报什么价?报多少量?这三个问题看似简单,但背后牵扯的东西可不少。我做了这么多年,见过太多人一上来就调参数、跑回测,结果亏得一塌糊涂。为什么?因为策略设计流程没走对。

今天我就把这套流程掰开揉碎了讲给你听。嗯,咱们一步步来。

1. 策略设计流程:五步走,少一步都不行

我个人习惯把做市策略设计分成五个阶段。这五个阶段环环相扣,跳过一个,后面就得返工。

  1. 市场分析阶段:搞清楚你交易的是什么品种。是股票?期货?还是加密货币?不同品种的微观结构差异巨大。我记得有一次,我把BTC的做市参数直接套用到ETH上,结果被市场狠狠教育了一顿。
  2. 策略逻辑设计:确定你的核心逻辑。是做纯价差套利?还是做库存管理驱动的报价?这里要明确你的信号来源。
  3. 参数初始化:给策略设定初始参数。比如报价深度、更新频率、最大持仓限制等。
  4. 回测验证:用历史数据检验策略表现。这一步我会单独讲,因为坑太多了。
  5. 实盘部署与监控:上线后持续跟踪,随时准备调整。

核心要点:做市策略不是写出来就完事了。它是一个动态调整的过程。我见过最成功的团队,每周都会根据市场环境微调参数。

2. 策略参数优化:别掉进过拟合的坑

参数优化这块,我得好好说说。很多新手喜欢用网格搜索,把所有参数组合跑一遍,选收益最高的那组。你想想看,这能靠谱吗?

我曾经犯过这个错误。2019年做ETH-USDT的做市,我用过去三个月的数据优化参数,回测年化收益高达80%。结果实盘第一周就亏了5%。为什么?因为那组参数完美拟合了历史行情,但市场一变化就失效了。

参数优化有几个原则,我列出来给你参考:

  • 少即是多:参数越少,过拟合风险越低。能用3个参数解决的问题,别用5个。
  • 滚动优化:不要用全部历史数据一次性优化。用滚动窗口,比如每30天重新优化一次。
  • 稳健性检验:找到最优参数后,看看它周围的参数表现如何。如果稍微变一点就崩了,那这组参数不可用。

我的小技巧:参数优化时,我会同时看夏普比率和最大回撤。只盯着收益率看,迟早要吃亏。

3. 策略回测框架:别让回测骗了你

回测框架是检验策略的试金石。但说实话,大部分人的回测框架都有问题。我见过最离谱的,有人用收盘价做回测,结果实盘时发现根本成交不了。

一个靠谱的回测框架,至少要考虑以下几点:

要素 说明 常见错误
数据精度 使用tick级数据或至少1秒级快照 用1分钟K线做高频做市回测
成交模拟 考虑订单簿深度和滑点 假设所有订单都能按报价成交
手续费 精确计算maker/taker费用 忽略手续费或估算不准确
延迟模拟 加入网络延迟和撮合延迟 假设零延迟,实盘直接崩

下面是一个简单的回测框架代码示例,我用Python写的:

class MarketMakingBacktest:
    def __init__(self, orderbook_data, fee_rate=0.001):
        self.data = orderbook_data
        self.fee_rate = fee_rate
        self.position = 0
        self.cash = 100000
        
    def run(self, spread=0.002, depth=100):
        for tick in self.data:
            # 计算理论报价
            mid_price = (tick.bid + tick.ask) / 2
            bid_price = mid_price * (1 - spread/2)
            ask_price = mid_price * (1 + spread/2)
            
            # 模拟成交
            if tick.bid >= bid_price:
                self.position += depth
                self.cash -= bid_price * depth * (1 + self.fee_rate)
            if tick.ask <= ask_price:
                self.position -= depth
                self.cash += ask_price * depth * (1 - self.fee_rate)
                
        return self.calculate_pnl()

注意:这个示例极度简化。真实回测中,你还需要处理订单簿快照重建、订单生命周期管理、多资产同时报价等复杂逻辑。千万别直接拿这个代码去跑实盘!

4. 策略绩效评估:别只看收益率

策略做出来了,回测跑完了,怎么判断它好不好?很多人只看年化收益率,这是大忌。

我一般会看这几个指标:

  • 夏普比率:衡量风险调整后收益。做市策略的夏普通常应该在2以上,低于1.5就要警惕了。
  • 最大回撤:做市策略理论上回撤应该很小。如果回撤超过5%,说明你的风控有问题。
  • 成交率:你的报价有多少被吃掉了?成交率太低说明报价太保守,太高说明你给的价差太小。
  • 库存周转率:做市商最怕库存积压。库存周转率太低,说明你的策略在囤货而不是做市。

举个例子,我之前优化一个BTC永续合约的做市策略:

指标 优化前 优化后 说明
年化收益率 35% 28% 收益率下降了,但更稳健
夏普比率 1.8 3.2 风险调整后收益大幅提升
最大回撤 8.5% 2.1% 这才是做市策略该有的样子
成交率 62% 45% 报价更合理,不再盲目挂单

你看,优化后收益率虽然降了,但夏普翻倍,回撤大幅缩小。这才是好的优化方向。

记住:做市策略的核心是稳定盈利,不是暴利。如果你看到一个做市策略年化100%以上,要么是回测有问题,要么是参数过拟合了。

知识体系总览

下面这张图,是我对做市商策略设计整个知识体系的梳理。你可以把它当作一个导航图,随时回来对照:

做市商策略设计知识体系 做市商策略设计 策略设计流程 市场分析→逻辑设计→部署 参数优化 滚动优化·稳健性检验 回测框架 数据精度·成交模拟 微观结构分析 订单簿动态建模 网格搜索·贝叶斯优化 过拟合检测 Tick级数据回测 滑点与延迟模拟 策略绩效评估:夏普·回撤·成交率

这张图把整个知识体系串起来了。你看,从策略设计流程出发,分支出参数优化、回测框架和绩效评估三个核心模块。每个模块下面又有具体的子知识点。做策略的时候,你可以对照这张图,看看自己走到了哪一步,有没有遗漏什么。

好了,这一章的内容就到这里。做市策略设计是个系统工程,每一步都马虎不得。下一章我们会深入讲具体的报价算法,到时候见。

专注资料整理