做市策略设计基础:对称做市、非对称做市、基于信号的做市、动态调整报价
各位同学,今天我们来聊聊做市策略的底层设计逻辑。说实话,很多新手一上来就盯着高频、低延迟这些词,但真正决定你能不能赚钱的,是策略本身的设计框架。我见过太多团队,硬件花了几百万,代码优化到纳秒级,结果策略逻辑一塌糊涂——说白了,方向错了,跑得再快也没用。
这一章,我会带你从最基础的对称做市开始,一步步深入到动态调整报价。每个模式我都会结合自己踩过的坑来讲,希望能帮你少走弯路。
1. 对称做市:最朴素的定价模型
对称做市,顾名思义,就是买卖两边对称地挂单。比如当前中间价是100,你就在99.5挂买单,在100.5挂卖单,两边价差一样。这是最基础的做市模型,也是我最早接触的。
我记得刚入行时,带我的老大哥说:「对称做市就像摆地摊,进价10块,卖价11块,赚的就是这1块差价。」当时觉得挺有道理,后来才发现,事情没那么简单。
对称做市的核心公式很简单:
bid_price = mid_price - spread / 2
ask_price = mid_price + spread / 2
其中 spread 是你设定的价差。这个价差怎么定?我个人的习惯是参考市场深度。如果市场流动性好,价差可以设小一点;如果流动性差,价差就得拉大,不然容易被吃掉。
但对称做市有个致命问题——它假设市场是随机的,买卖方向没有偏好。你想想看,如果市场正在单边上涨,你还在对称挂单,那你的卖单很快会被吃掉,买单却一直挂在那里吃灰。结果就是库存越做越空,错失上涨收益。
2. 非对称做市:应对单边行情的利器
非对称做市,说白了就是根据你对市场方向的判断,主动调整买卖两边的价差。比如你觉得要涨,就把买单挂得近一点(更容易成交),卖单挂得远一点(减少被吃掉的概率)。
公式长这样:
bid_price = mid_price - spread_bid
ask_price = mid_price + spread_ask
其中 spread_bid ≠ spread_ask
举个例子,当前中间价100,你判断短期看涨。你可以设 spread_bid = 0.3,spread_ask = 0.7。这样买单在99.7,卖单在100.7。买单更容易成交,帮你积累库存;卖单更难被吃掉,保护你的利润。
非对称做市的关键在于:你如何确定这个「非对称度」?我建议用两个指标:
- 订单流不平衡(OIB):如果买单量明显大于卖单量,说明买方更积极,你应该偏向买方。
- 价格动量:过去N笔交易的价格变化方向。如果连续上涨,说明趋势还在。
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 时,买单价差缩小,卖单价差扩大,自然就偏向买方了。
嗯,这里要特别提醒一下:信号模型需要持续回测和监控。市场环境会变,去年有效的信号今年可能就失效了。我每周都会跑一次回测,看看信号的表现是否稳定。
4. 动态调整报价:让策略自适应
最后这个部分,是前面三个策略的「升级版」。动态调整报价,说白了就是让策略根据市场状态自动调整参数,不需要你手动干预。
动态调整的核心维度包括:
| 参数 | 调整依据 | 调整方向 |
|---|---|---|
| 价差 | 市场波动率 | 波动率↑ → 价差↑ |
| 挂单量 | 库存水平 | 库存过高 → 减少买单量 |
| 非对称度 | 信号强度 | 信号强 → 非对称度大 |
| 撤单频率 | 市场变化速度 | 变化快 → 撤单频率高 |
举个例子,当市场波动率突然升高时,你应该:
- 拉大价差,防止被极端行情吃掉
- 减少挂单量,降低风险暴露
- 提高撤单频率,避免挂单被「钓鱼」
我曾在一次「闪崩」事件中吃过亏。当时波动率瞬间飙升,我的策略还挂着原来的价差和单量,结果几秒钟内库存就被打穿了。后来我加了一个波动率监控模块,一旦波动率超过阈值,自动调整所有参数。
下面这张图展示了四种做市策略的关系和演进路径:
最后总结一下我的个人经验:
- 新手先从对称做市开始,跑通整个流程再说
- 遇到单边行情,果断切换到非对称模式
- 信号模型要轻量、低延迟,别为了炫技牺牲性能
- 动态调整是终极方案,但需要大量的回测和实盘验证
这一章的内容就到这里。记住,做市策略没有银弹,只有不断试错和优化。下一章我们会深入代码实现,把今天讲的这些逻辑用Python写出来。