波动率与做市策略的关系

做市策略的核心,说白了就是「低买高卖」赚差价。但市场不会一直风平浪静,波动率一上来,很多做市商就开始手忙脚乱。我见过不少团队,策略在低波动时跑得挺好,一到行情剧烈波动就亏得找不着北。嗯,这里的关键就在于——你没搞懂波动率是怎么影响你的报价宽度、库存风险和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 块。虽然最后价格又涨回来了,但那几天的回撤让我很难受。

波动率对库存风险的影响,主要体现在两个维度:

  1. 库存持有成本上升:波动率越高,价格朝不利方向运动的概率越大,你持仓的预期损失就越大
  2. 库存调整速度变慢:波动大时,市场深度往往变薄,你想平仓可能得付出更高的滑点成本

我曾经踩过的坑:

以为波动率大了就赶紧把库存清掉,结果在低点割肉,市场反弹后又拍断大腿。后来我学乖了——库存管理不是简单的「波动大就减仓」,而是要结合你的风险预算和波动率一起来算一个动态库存上限。

具体怎么做?我建议用 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 风险管的是「你的货变化有多快」。波动率对两者的影响方向是一致的——波动越大,两者都越危险。

三者之间的联动关系

我把这三者的关系画了一张图,方便你理解:

波动率 最优报价宽度 价差 = f(波动率) 库存风险 上限 = f(波动率) Gamma风险 切换成本 = f(波动率) 三者同步调整,才能实现波动率自适应

你看,波动率就像一根指挥棒,同时指挥着报价宽度、库存上限和 Gamma 暴露三个维度。你只调一个,另外两个就会出问题。我刚开始做的时候,只调了价差,没管库存,结果价差是大了,但库存还是那么多,一波大跌直接亏穿。

我的建议:

把这三个参数放在同一个优化框架里。比如用波动率作为输入,同时输出目标价差、目标库存上限和目标挂单量。这样三个维度联动调整,策略才能在各种市场环境下都站得住脚。

好了,这一章的内容就到这里。波动率与做市策略的关系,说白了就是一句话:波动率是风险的温度计,你的策略参数必须跟着它走。下一章我们会聊具体怎么量化这个「跟着走」的过程,包括参数校准和回测方法。