第三章:报价价差管理
做市商的报价价差,说白了就是你的饭碗。
价差太宽,交易所罚你;价差太窄,你自己亏钱。我做了这么多年做市商,见过太多团队在这个环节翻车。今天咱们就把价差管理这件事彻底讲透。
3.1 最大买卖价差限制
交易所不是慈善机构。他们给你做市资格,是要你提供流动性的。所以每个交易所都会规定一个硬性指标——最大买卖价差。
举个例子,我在某头部交易所做BTC永续合约时,他们的规则是这样的:
| 产品类型 | 最大价差(bps) | 报价深度要求 |
|---|---|---|
| BTC/USDT | 5 bps | ≥ 2 BTC |
| ETH/USDT | 8 bps | ≥ 20 ETH |
| 其他主流币 | 15 bps | ≥ 1000 USDT |
嗯,这里要注意:最大价差限制通常是动态的。市场波动大的时候,交易所会适当放宽。但别指望太多,放宽幅度一般也就1.5倍到2倍。
避坑指南:
我曾经有个项目,团队把价差设得刚刚好卡在最大限制上。结果市场一波动,价差瞬间超标,被交易所警告了三次。后来我学乖了——永远留出20%的缓冲空间。
3.2 动态价差调整机制
静态价差?那是新手干的事。真正的做市商,价差是活的。
我个人习惯用三个维度来动态调整价差:
- 波动率因子:市场越波动,价差越宽。这是最基础的逻辑。
- 库存风险因子:你手上囤了多少货?库存越大,价差越需要收窄来加速出货。
- 对手方行为因子:如果发现有人在频繁吃你的单,赶紧把价差拉大。
具体怎么算?我分享一个我常用的公式:
# 动态价差计算示例
def dynamic_spread(base_spread, volatility, inventory_ratio, order_flow):
# 波动率调整
vol_factor = 1 + 0.5 * (volatility / 0.01) # 波动率每增加1%,价差扩大50%
# 库存调整
inv_factor = 1 + 0.3 * (inventory_ratio - 0.5) # 库存偏离50%时调整
# 订单流调整
flow_factor = 1 + 0.2 * (order_flow - 1.0) # 订单流异常时调整
final_spread = base_spread * vol_factor * inv_factor * flow_factor
# 别忘了检查最大最小限制
return max(min_spread, min(max_spread, final_spread))
你想想看,这个公式的好处是什么?它把三个核心风险都考虑进去了。我在实际项目中,还会加入一个时间衰减因子——临近交割日的时候,价差要自动收窄。
核心要点:
动态调整不是越复杂越好。我见过有人搞了十几个因子,结果回测漂亮,实盘一跑就崩。记住:三个核心因子足够,关键是参数要调对。
3.3 不同市场环境下的价差策略
市场环境不同,打法完全不同。我把市场环境分成四种:
3.3.1 正常市场
这是最舒服的状态。波动率低,成交量稳定。这时候我的策略很简单:
- 价差设在最大限制的60%-70%
- 报价深度做到要求的1.5倍
- 更新频率保持正常(500ms-1s)
3.3.2 高波动市场
比如重大新闻发布、黑天鹅事件。这时候:
- 价差直接拉到最大限制的90%
- 报价深度降到最低要求
- 更新频率提高到100ms以内
我记得2020年3月12日那天,比特币从8000跌到3800。我当时的系统自动把价差拉到了最大,虽然少赚了点,但避免了被穿仓。活下来比什么都重要。
3.3.3 低流动性市场
凌晨三点、节假日,流动性枯竭的时候:
- 价差可以适当放宽(但别超最大限制)
- 减少报价深度,别傻傻地挂大单
- 降低更新频率,减少无效报价
我的经验:
低流动性市场最容易出幺蛾子。我建议你设置一个"流动性阈值",低于这个值就自动切换到保守模式。说白了,宁可少赚,别亏。
3.3.4 趋势行情
单边上涨或下跌时,价差策略要反过来:
- 顺着趋势的方向,价差收窄(加速成交)
- 逆着趋势的方向,价差拉宽(减少风险暴露)
- 库存管理要跟上,别让趋势把你洗出去
知识体系总览
下面这张图,是我自己总结的价差管理知识体系。每次带新人,我都会先让他们看这张图:
这张图的核心逻辑很简单:三个模块互相支撑,最终目标就两个——稳定盈利和合规达标。缺一个都不行。
最后说一句:
价差管理不是数学题,是艺术。参数调得再好,也要看市场给不给面子。我做了十年做市商,最大的感悟就是——敬畏市场,控制风险,活下去比什么都重要。