Avellaneda & Stoikov 策略指南¶

欢迎回到 Hummingbot 学院!
最新发布的 Hummingbot(0.38 版本)引入了一种基于经典学术做市模型的全新策略。本文将深入探讨 2008 年 Avellaneda & Stoikov 的论文及其在 Hummingbot 中的实现。
对于喜欢深入研读科研论文的读者,原始文献可在线轻松获取,或直接点击此处查看。
今天我们将探讨:
- Avellaneda & Stoikov 做市模型
- 库存风险管理
- 最优买卖价差的确定
- 在 Hummingbot 中的实现
理解 Avellaneda & Stoikov 模型¶
该模型解决了做市商面临的两个核心问题:* 库存风险管理 * 最优买卖价差的确定
Avellaneda & Stoikov 提出了帮助做市商应对这些挑战的数学公式。
持仓参考价:

最优买卖价差:

其中,
- s = 当前市场中间价
- q = 基础资产的持仓数量(正数表示多头,负数表示空头)
- σ = 市场波动率
- T = 归一化平仓时间(1)
- t = 当前时间占 T 的比例
- δa, δb = 对称的买卖价差
- γ = 持仓风险厌恶参数
- κ = 订单簿流动性参数
本文简化了这些公式的含义和表达。敬请关注后续发布的更详细技术文章。
预约价格详解¶
传统的做市策略是在市场价格中间价两侧对称地挂出买入和卖出订单。然而,这种做法可能导致库存失衡,如果资产价格朝不利方向变动,交易员可能面临风险。
例如,在 BTC-USDT 下跌趋势中使用对称策略时,做市商会不断积累 BTC,导致总持仓价值下降。

Avellaneda & Stoikov 的方法计算了一个新的下单参考价格,考虑了以下因素:

持仓头寸偏离度 (q)¶
公式中的 q 表示与目标持仓量的偏离程度。例如:* 当 q = 0 时,预约价格等于市场中间价;* 当 q < 0 时,交易员处于空头状态,提高预约价格以鼓励买入订单;* 当 q > 0 时,交易员处于多头状态,降低预约价格以鼓励卖出订单。
Hummingbot 根据您设定的目标持仓百分比来计算 q。
持仓风险容忍度 (γ)¶
该参数由交易员设置,表示其承担库存风险的意愿。当 γ 接近零时,预约价格接近市场中间价,类似于对称策略。随着 γ 增大,预约价格会更激进地调整以匹配目标库存。
在 Hummingbot 中,γ 可手动设置或自动计算。
剩余交易时段 (T-t)¶
考虑到传统金融市场有明确的交易时段,该模型会随着交易结束时间的临近,将预约价格逐渐调整回中间价,以最小化库存风险。
Hummingbot 允许设置交易时段长度,使该模型适用于 7x24 小时运行的加密货币市场。
注意:Avellaneda & Stoikov 还提出了一个无限期模型,更适合持续交易的市场,我们计划在未来版本中加入此模型。
市场波动率 (σ) 也会影响预约价格,但它不是由交易员设定的因素。波动率越高,预约价格与中间价之间的差距越大。
确定最优价差¶
模型的第二部分关注如何在订单簿中进行最优挂单以实现盈利。

此处再次用到预约价格的相关因素(γ 和 (T-t)),并新增:
订单簿流动性 (κ)¶
尽管论文深入探讨了数学细节,但关键结论是:较高的 κ 值表示订单簿更密集,因此需要更小的价差;相反,较低的 κ 值表明流动性较差,允许设置更宽的价差。
结合预约价格与最优价差¶
模型的执行逻辑非常简单:
- 根据目标库存计算保留价格。
- 确定最优的买卖价差。
- 在保留价格附近下达市价单:- 买入价 = 保留价格 - 一半的最优价差
- 卖出价 = 保留价格 + 一半的最优价差
 
这一动态过程如下图所示:

计算出的保留价格(绿线)通常会偏离市场中间价(蓝线)。保留价格会根据库存情况进行调整,从而影响相对于中间价的下单位置。
参数计算¶
Avellaneda-Stoikov 模型中的关键因素包括:
- 库存头寸 (q)
- 剩余交易时段 (T-t)
- 风险因子 (γ)
- 订单簿深度 (κ)
对于每一项,对应的 Hummingbot 参数为:
- 库存距离 (q): 反映当前库存与目标库存之间的差异。在 Hummingbot 中设置资产库存目标百分比后,机器人将自动计算 q。
- 交易时段 (T-t): 为适应加密货币市场持续不断的特性而调整模型。可在 Hummingbot 中定义期望的交易会话持续时间。
- 风险因子 (γ) 和订单簿深度 (κ): 尽管原始论文未明确给出这些参数的具体计算方法,但 Hummingbot 的“简易模式”会根据设定的理想价差范围自动确定它们。或者,可将 config parameters_based_on_spread设置为False,然后使用config order_book_depth_factor和config risk_factor手动输入数值。
配置 Hummingbot¶
在 Hummingbot 中创建该策略需使用 create 命令,并指定 avellaneda_market_making 作为策略名称。

选择交易所和交易对后,决定是否让 Hummingbot 自动计算风险因子和订单簿深度。

设置期望的最大和最小价差,用于限定计算出的最优价差的范围。

风险厌恶参数决定了你对库存风险的偏好程度。接近 1 的值表示较为保守的策略。

最后,设定你的库存目标百分比,以确定总库存中应有多少比例分配给基础资产。

Hummingbot 中其他附加配置还包括 closing_time(会话持续时间)和 volatility_buffer_size(波动率计算所用的数据时间范围)。

总结思考¶
最优做市策略数十年来一直是学术研究的重点。随着高频交易(HFT)在当今市场中扮演着重要角色,我们的团队还有大量领域有待探索。如果你有感兴趣的模型推荐,欢迎加入我们的 Discord 社区!
加入我们的社区¶
加入我们的 Discord 频道,与其他做市商和套利者交流互动。关注我们的 Twitter 和 Reddit 获取最新动态和新闻。不要错过我们在 YouTube 频道 上发布的做市相关内容,包括对专业交易员的访谈。
 
                