波动率与做市策略的关系
做市策略的核心,说白了就是「低买高卖」赚差价。但市场不会一直风平浪静,波动率一上来,很多做市商就开始手忙脚乱。我见过不少团队,策略在低波动时跑得挺好,一到行情剧烈波动就亏得找不着北。嗯,这里的关键就在于——你没搞懂波动率是怎么影响你的报价宽度、库存风险和Gamma风险的。
波动率如何影响最优报价宽度
先问一个问题:波动率大了,你的买卖价差应该拉大还是收窄?
很多人直觉上觉得波动大风险大,应该把价差拉大来保护自己。这个想法没错,但不够精细。我个人习惯把报价宽度拆成两部分来看:
- 基础宽度:覆盖交易成本、手续费、滑点这些固定开销
- 风险溢价宽度:用来补偿你承担的不确定性风险
波动率直接影响的就是这个「风险溢价宽度」。波动率越高,价格跳变的概率越大,你挂的单子被「吃掉」后市场朝不利方向跑的风险就越高。所以,价差必须跟着波动率走。
一个简单的经验公式:
最优报价半宽度 = α × 波动率 × √(持仓时间) + 固定成本
其中 α 是风险厌恶系数,一般取 0.5~2.0 之间。
我在项目中遇到过一种情况:某个币种平时波动率只有 20%,我按这个参数设了价差。结果某天突然出利空消息,波动率飙到 80%,我的价差没来得及调整,连续被吃了好几笔,库存直接变成负数。从那以后,我强制在策略里加了一个波动率实时监控模块,每 5 秒重新计算一次报价宽度。
我的一个小技巧:
用指数加权移动平均(EWMA)来估计实时波动率,比简单移动平均反应更快。代码大概长这样:
def ewma_volatility(prices, lambda_=0.94):
returns = np.diff(np.log(prices))
vol = np.zeros_like(returns)
vol[0] = returns[0]**2
for i in range(1, len(returns)):
vol[i] = lambda_ * vol[i-1] + (1-lambda_) * returns[i]**2
return np.sqrt(vol * 252) # 年化
库存风险:波动率越大,库存越烫手
库存风险,就是你手里拿着货,价格一跌就亏钱。波动率大的时候,价格可能一天上下 10%,你手里要是囤了一堆货,心脏受不了。
我记得有一次做市一个山寨币,波动率常年 100%+。我按常规策略设了库存上限 1000 个币,结果一天之内价格从 10 块跌到 6 块,账面浮亏 4000 块。虽然最后价格又涨回来了,但那几天的回撤让我很难受。
波动率对库存风险的影响,主要体现在两个维度:
- 库存持有成本上升:波动率越高,价格朝不利方向运动的概率越大,你持仓的预期损失就越大
- 库存调整速度变慢:波动大时,市场深度往往变薄,你想平仓可能得付出更高的滑点成本
我曾经踩过的坑:
以为波动率大了就赶紧把库存清掉,结果在低点割肉,市场反弹后又拍断大腿。后来我学乖了——库存管理不是简单的「波动大就减仓」,而是要结合你的风险预算和波动率一起来算一个动态库存上限。
具体怎么做?我建议用 VaR(在险价值)来约束库存规模:
库存上限 = 风险预算 / (波动率 × 价格 × z_score)
# 举个例子
risk_budget = 10000 # 最多亏1万块
vol = 0.8 # 年化波动率80%
price = 50 # 当前价格50块
z = 2.33 # 99%置信度
max_inventory = 10000 / (0.8 * 50 * 2.33) ≈ 107 个币
你看,波动率从 40% 涨到 80%,库存上限直接砍半。这就是波动率自适应调整的核心逻辑。
Gamma风险:做市商的隐形杀手
Gamma 风险这个词,做期权的人很熟,但做现货做市的人往往忽略。其实,只要你做市,你就天然暴露在 Gamma 风险里。
Gamma 是什么?简单说,就是你的 Delta(方向性敞口)对价格变化的敏感度。你挂买单和卖单,价格一涨,你的买单成交了,你变成多头;价格一跌,你的卖单成交了,你变成空头。这个「变」的速度,就是 Gamma。
波动率越大,Gamma 风险越可怕。为什么?
- 波动率大 → 价格来回扫 → 你的单子频繁被吃 → 库存方向频繁切换
- 每次切换都有成本(买卖价差 + 滑点)
- 波动率越大,切换频率越高,成本累积越快
一个真实案例:
我有个朋友做市 ETH,波动率低的时候一天赚 0.5% 稳稳的。结果某天波动率突然放大,他的策略还在用原来的参数,一天之内被来回打了 30 多次,手续费和滑点加起来亏了 2%。他后来跟我说:「那天我就像个乒乓球,被市场左拍右拍。」
Gamma 风险的管理,我个人习惯用两个指标:
| 指标 | 含义 | 波动率大时的应对 |
|---|---|---|
| Gamma 暴露 | 价格每变动 1%,库存变化多少 | 降低挂单量,减少被扫的频率 |
| Gamma 成本 | 每次库存切换的平均成本 | 拉大价差,让每次切换的利润覆盖成本 |
嗯,这里要注意一点:Gamma 风险和库存风险其实是同一枚硬币的两面。库存风险管的是「你手里有多少货」,Gamma 风险管的是「你的货变化有多快」。波动率对两者的影响方向是一致的——波动越大,两者都越危险。
三者之间的联动关系
我把这三者的关系画了一张图,方便你理解:
你看,波动率就像一根指挥棒,同时指挥着报价宽度、库存上限和 Gamma 暴露三个维度。你只调一个,另外两个就会出问题。我刚开始做的时候,只调了价差,没管库存,结果价差是大了,但库存还是那么多,一波大跌直接亏穿。
我的建议:
把这三个参数放在同一个优化框架里。比如用波动率作为输入,同时输出目标价差、目标库存上限和目标挂单量。这样三个维度联动调整,策略才能在各种市场环境下都站得住脚。
好了,这一章的内容就到这里。波动率与做市策略的关系,说白了就是一句话:波动率是风险的温度计,你的策略参数必须跟着它走。下一章我们会聊具体怎么量化这个「跟着走」的过程,包括参数校准和回测方法。