第六章:做市策略基础
做市策略,说白了就是怎么在市场上「低买高卖」赚差价。但真做起来,你会发现事情没那么简单。我刚开始做做市系统时,以为只要挂个买单和卖单就能赚钱,结果被市场狠狠教育了一顿。
今天咱们聊聊三个核心问题:买卖价差策略、库存管理、报价频率与深度优化。这三块是做市系统的地基,地基不稳,上层策略再花哨也白搭。
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 库存调整策略
具体怎么调?我总结了三板斧:
- 偏移报价:多头过多时,把卖单价压低一点,吸引买家;空头过多时,把买单价抬高一点,吸引卖家
- 对冲交易:在相关品种上做反向操作,比如做多BTC的同时做空ETH来对冲
- 暂停报价:极端情况下,直接撤单暂停做市,等市场冷静再说
避坑指南:我曾经在库存偏离度达到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 知识体系总览
下面这张图把本章的核心逻辑串起来了。你可以看到,价差策略、库存管理、报价频率与深度三者是互相影响的。
你看这张图就明白了:价差策略决定了你的报价位置,库存管理告诉你该不该调整,报价频率和深度则决定了你能不能成交。三者缺一不可。
总结一下本章重点:
- 价差要动态调整,别死板设固定值
- 库存管理要有硬止损,别心存侥幸
- 报价频率和深度要匹配市场状态
- 三个模块要联动,不能各自为政
做市系统这东西,理论说起来简单,真正跑起来全是坑。我建议你先用模拟盘跑一个月,把参数调顺了再上实盘。别问我怎么知道的——都是血泪教训换来的经验。
无相订单流研究社 微信Lucian808555