做市策略设计基础:对称做市、非对称做市、基于信号的做市、动态调整报价

各位同学,今天我们来聊聊做市策略的底层设计逻辑。说实话,很多新手一上来就盯着高频、低延迟这些词,但真正决定你能不能赚钱的,是策略本身的设计框架。我见过太多团队,硬件花了几百万,代码优化到纳秒级,结果策略逻辑一塌糊涂——说白了,方向错了,跑得再快也没用。

这一章,我会带你从最基础的对称做市开始,一步步深入到动态调整报价。每个模式我都会结合自己踩过的坑来讲,希望能帮你少走弯路。

1. 对称做市:最朴素的定价模型

对称做市,顾名思义,就是买卖两边对称地挂单。比如当前中间价是100,你就在99.5挂买单,在100.5挂卖单,两边价差一样。这是最基础的做市模型,也是我最早接触的。

我记得刚入行时,带我的老大哥说:「对称做市就像摆地摊,进价10块,卖价11块,赚的就是这1块差价。」当时觉得挺有道理,后来才发现,事情没那么简单。

对称做市的核心公式很简单:

bid_price = mid_price - spread / 2
ask_price = mid_price + spread / 2

其中 spread 是你设定的价差。这个价差怎么定?我个人的习惯是参考市场深度。如果市场流动性好,价差可以设小一点;如果流动性差,价差就得拉大,不然容易被吃掉。

关键点:对称做市适合波动率低、流动性好的市场。比如主流币种的现货交易对,或者大盘蓝筹股。

但对称做市有个致命问题——它假设市场是随机的,买卖方向没有偏好。你想想看,如果市场正在单边上涨,你还在对称挂单,那你的卖单很快会被吃掉,买单却一直挂在那里吃灰。结果就是库存越做越空,错失上涨收益。

避坑指南:我曾经在ETH/USDT上吃过这个亏。当时市场单边上涨,我还在用对称做市,结果卖单全被吃掉,买单一个没成交。库存从100个ETH变成了20个,少赚了至少30%的收益。后来我学乖了,单边行情必须用非对称策略。

2. 非对称做市:应对单边行情的利器

非对称做市,说白了就是根据你对市场方向的判断,主动调整买卖两边的价差。比如你觉得要涨,就把买单挂得近一点(更容易成交),卖单挂得远一点(减少被吃掉的概率)。

公式长这样:

bid_price = mid_price - spread_bid
ask_price = mid_price + spread_ask
其中 spread_bid ≠ spread_ask

举个例子,当前中间价100,你判断短期看涨。你可以设 spread_bid = 0.3spread_ask = 0.7。这样买单在99.7,卖单在100.7。买单更容易成交,帮你积累库存;卖单更难被吃掉,保护你的利润。

非对称做市的关键在于:你如何确定这个「非对称度」?我建议用两个指标:

  • 订单流不平衡(OIB):如果买单量明显大于卖单量,说明买方更积极,你应该偏向买方。
  • 价格动量:过去N笔交易的价格变化方向。如果连续上涨,说明趋势还在。
我的经验:非对称度不要设得太极端。我曾经试过把买单价差设为0.1,卖单价差设为1.0,结果市场一个回调,我的库存瞬间被套。建议非对称度控制在2:1以内,留点安全边际。

3. 基于信号的做市:让数据说话

前面两种策略,说白了都是「拍脑袋」——你凭感觉判断市场方向。但量化交易的核心是什么?是用数据说话。基于信号的做市,就是引入一个信号模型,让模型告诉你什么时候该偏向哪一边。

常见的信号来源包括:

  • 技术指标:RSI、MACD、布林带等。比如RSI低于30时,说明超卖,可以偏向买方。
  • 订单簿特征:买卖深度比、价差宽度、挂单量变化等。
  • 机器学习模型:用历史数据训练一个分类器,预测未来1秒的价格方向。

我个人的做法是,把信号输出成一个「偏向系数」,范围在-1到1之间。正数偏向买方,负数偏向卖方。然后把这个系数代入到非对称做市的公式里:

spread_bid = base_spread * (1 - alpha * signal)
spread_ask = base_spread * (1 + alpha * signal)

其中 alpha 是调节强度,signal 是偏向系数。当 signal = 0.5 时,买单价差缩小,卖单价差扩大,自然就偏向买方了。

注意:信号模型不是越复杂越好。我见过有人用LSTM做信号,结果延迟太高,信号出来时行情已经变了。对于高频做市,信号延迟必须控制在毫秒级。我个人更推荐用轻量级的逻辑回归或简单的规则引擎。

嗯,这里要特别提醒一下:信号模型需要持续回测和监控。市场环境会变,去年有效的信号今年可能就失效了。我每周都会跑一次回测,看看信号的表现是否稳定。

4. 动态调整报价:让策略自适应

最后这个部分,是前面三个策略的「升级版」。动态调整报价,说白了就是让策略根据市场状态自动调整参数,不需要你手动干预。

动态调整的核心维度包括:

参数 调整依据 调整方向
价差 市场波动率 波动率↑ → 价差↑
挂单量 库存水平 库存过高 → 减少买单量
非对称度 信号强度 信号强 → 非对称度大
撤单频率 市场变化速度 变化快 → 撤单频率高

举个例子,当市场波动率突然升高时,你应该:

  1. 拉大价差,防止被极端行情吃掉
  2. 减少挂单量,降低风险暴露
  3. 提高撤单频率,避免挂单被「钓鱼」

我曾在一次「闪崩」事件中吃过亏。当时波动率瞬间飙升,我的策略还挂着原来的价差和单量,结果几秒钟内库存就被打穿了。后来我加了一个波动率监控模块,一旦波动率超过阈值,自动调整所有参数。

实现技巧:动态调整不要用「突变式」,比如从价差0.5直接跳到1.0。这样容易引起市场注意,也容易造成滑点。建议用「渐变式」,比如每100毫秒调整0.05,平滑过渡。

下面这张图展示了四种做市策略的关系和演进路径:

做市策略演进路径 对称做市 买卖价差相等 加入方向判断 非对称做市 买卖价差不等 引入信号模型 基于信号的做市 信号驱动非对称度 加入自适应机制 动态调整报价 价差、单量、非对称度、撤单频率 全部根据市场状态自动调整 反馈优化 四种策略不是互斥的,而是层层递进的关系 实际生产中,动态调整报价通常包含前三种策略的思想 基础版 进阶版 高级版 旗舰版

最后总结一下我的个人经验:

  • 新手先从对称做市开始,跑通整个流程再说
  • 遇到单边行情,果断切换到非对称模式
  • 信号模型要轻量、低延迟,别为了炫技牺牲性能
  • 动态调整是终极方案,但需要大量的回测和实盘验证

这一章的内容就到这里。记住,做市策略没有银弹,只有不断试错和优化。下一章我们会深入代码实现,把今天讲的这些逻辑用Python写出来。


专注资料整理