什么是库存风险?¶

大家好,欢迎再次来到 Hummingbot 社区!
今天我们将开始讨论我认为所有类型交易操作中最重要的一个因素:风险与风险管理。
正如我们这个时代的一位最大投资者曾经说过的:
“风险来自于你不知道自己在做什么。” ~ 沃伦·巴菲特

各种金融操作都存在不同程度的风险,做市也不例外。
虽然想象未来的收益、幻想成为下一个沃伦·巴菲特似乎更令人兴奋,但投资的真实情况——也是更不 glamorous 的部分,甚至可以说是最重要的一部分——是弄清楚可能出错的地方,并设法减轻潜在的损失。
关于风险和风险管理的内容有很多,但今天我们重点讨论与做市相关的一个主要风险:库存风险。
本文将涵盖以下内容:
- 
什么是库存价值? 
- 
什么是库存风险? 
- 
如何使用 Hummingbot 缓解库存风险 
一如既往,欢迎加入我们的 Discord 上的 #trader-chat 频道,与社区成员一起讨论如何改进你的做市策略。
什么是库存风险?¶
作为市场做市商,你的主要角色是为其他市场参与者提供流动性。
你是在为其他交易者提供服务,向所有人提供买卖资产的报价,并通过买卖价差(即低价买入、高价卖出的订单)获得报酬。
为了能够提供这项服务,做市商必须持有一定数量的资产作为库存,以创建订单并完成交易,而这些库存具有相应的价值。
库存价值
任何市场参与者都知道,资产价格不断变化,所有交易者都必须有一种方式来追踪自己是否盈利。
一种简单的跟踪方式是对比交易者所持资产的总价值。
例如,假设你目前持有 0.46820424 BTC 和 14.6426 ETH:
第 1 天库存
在第一天,你所持资产的当前价值为 10,000 美元。尽管你实际上并不持有任何美元,只持有 BTC 和 ETH,但你可以按当前市场价格将你的 BTC 和 ETH 兑换为 10,000 美元。
由于市场价格变化,库存价值可能会波动,因为资产相对于基准资产的价值可能发生改变
如果你没有进行交易(HODL!),在第 2 天你仍然持有初始投资组合中相同数量的 BTC 和 ETH。
第 2 天的库存
然而,由于这些资产的美元价格发生了变化,库存价值已下降至 9,761.38 美元。其中 BTC 的价值上涨,而 ETH 的价值下跌。
库存价值是指投资组合中所持所有资产的当前价值,以某种选定的基准或参考资产(例如 USD)进行量化。
选择用于确定价值的基准参考资产因投资者而异。例如,美国的投资者可能使用美元,而欧洲的投资者可能选择欧元。这是因为至少目前他们的大部分开支(如食物、房租)仍以美元(或欧元)计价,法币仍是其资产和购买力的基准。
交易中的库存风险¶
做市商的主要目标是随着时间推移增加其总库存价值。相比之下,更常见且普遍的投资方式是尝试购买未来会升值的资产。这种属于“方向性”投资,即买入“便宜”的资产,并押注其价格最终会上涨。
相反,做市商试图通过不断捕捉买卖价差并长期积累这些微小利润来提升投资组合价值。做市商会持续同时报出买入和卖出价格,并将买入价略低于卖出价。如果做市商成功完成一次买入和卖出操作,就能赚取两者之间的差额,即“买卖价差”。做市商完成此类买卖循环的次数越多,累积的利润也就越多。
正如我在第一篇学院文章中提到的,对做市商最理想的情况是价格波动但无明显趋势:

当价格在一定区间内震荡时,做市商的买入和卖出订单更有可能被同等频率地成交,从而更稳定地积累微小利润。
问题出现在价格开始朝一个方向持续趋势运行时。
例如,如果价格开始持续下跌,他的买入订单会不断被成交,但卖出订单却无法成交:

来源:我们的社区成员 @Christian Feldmann
这种情况的后果是,做市商将不断增持正在贬值的资产,导致总的库存价值随时间推移而下降。
最终,价格可能回升至盈利水平,使做市商能够以有利的价格卖出库存。但问题是,如果这种情况持续下去且价格继续下跌,做市商的所有库存将被锁定在一侧。
在某个时刻,做市商将不得不决定是停止运营并等待更好的价格,还是开始亏损出售库存以维持业务运转。
这类似于一位零售店经理不断增加库存,从供应商那里以更优惠的价格采购更多商品,但顾客对其商品并不感兴趣。
尽管做市商同时设置了买入和卖出订单,但并不能保证两边都会被成交。在上述例子中,买入单不断被成交,而卖出单始终无法成交。这也使做市商面临所持库存数量波动的风险。例如,做市商可能不断积累正在贬值的资产;反之,也可能过早卖出正在升值的资产。
库存风险是指做市商无法为其持有的库存找到买家的概率,导致在错误的时间点持有了过多资产,例如在价格下跌时积累了资产,或在价格上涨时过早卖出。
使用 Hummingbot 管理库存风险¶
库存风险是做市交易中的主要风险。因此,Hummingbot 提供了大量策略自定义功能,旨在降低库存风险,我们的团队也持续在此方面开发更多新功能。
这种灵活性使做市商能够以多种方式降低其操作风险,并根据其核心策略进行相应调整。
以下是几种控制库存风险的方法示例:
history 命令
history 命令会显示历史成交记录,以及机器人启动以来各项资产总额的变化摘要。
这是可视化每边库存变化量并与总价值进行比较的好方法。
库存偏斜(Inventory skew)
通过启用 config inventory_skew_enabled,机器人会在每次创建新订单时调整 order_amount,以重新平衡整体库存规模。
可以通过命令 config inventory_target_base_pct 设置库存中每种资产的目标比例,并通过 config inventory_range_multiplier 设置库存允许偏离该比例的程度。

如上所示,当前库存中 BTC 的数量多于 USDT,因此机器人卖出的频率高于买入。
此参数可用作库存保护机制。例如,当做市商察觉到某一方向的趋势正在形成时:如果 BTC 价格呈上升趋势,做市商可开始积累更多 BTC,并将 config inventory_target_base_pct 设为 70。
此外,当你交易非美元计价的交易对(例如 ETH-BTC)时,这一功能尤其有用。此时交易者可以评估各资产相对于美元的价值,并根据自己对未来某项资产价值更高的判断,调整库存的偏斜程度。

库存偏斜就像一个持续进行的钟摆平衡过程;一旦交易者积累了更多某种资产,Hummingbot 就会调整订单大小(减少买入量、增加卖出量),以尝试回到目标持仓比例,反之亦然。
库存偏斜的目标是尽量减少库存数量大幅波动的风险。维持如 50%这样的目标比例有助于确保做市商能继续同时报出买价和卖价,从而持续获取买卖价差收益。
已成交订单延迟
通过 filled_order_delay 参数,做市商可以设置在前一个订单成交后,机器人延迟多久才创建下一个新订单。
例如,当 filled_order_delay 设置为 300 时,若机器人挂出的订单被成交,则下一组订单将在 300 秒后才被创建。
这有助于在价格趋势明显时进行管理。例如,在下图中,当价格呈下跌趋势时,买盘订单在每次刷新后都会被持续成交。

如果这种情况反复持续,做市商可能在仅数次订单刷新周期内迅速累积大量资产。在上述示例中,交易者已买入了五次资产。
通过在已成交订单与新订单之间引入延迟,可以分散订单的挂出时间,减缓资产的潜在累积,为价格趋势的稳定留出时间。

如上图所示,由于第一阶段的买盘订单被成交,机器人在第二、三、四阶段均未挂单。因此,在此下跌趋势中,机器人仅在第一和第五阶段买入两次;而若未启用已成交订单延迟,则机器人会在全部五个阶段都买入。
挂单
挂单(Hanging orders)功能指示 Hummingbot 将同一时间创建的买入订单与对应的卖出订单视为一组配对。当其中一侧订单成交后,机器人会保留另一侧订单继续挂出,从而创造该订单最终成交的机会:

在上述示例中,第 1 周期的买入订单已成交。但由于启用了挂单模式,在刷新周期(第 2 周期)中,第 1 周期原有的卖出订单不会被取消,而是继续保持挂单状态。与此同时,机器人继续正常创建新的订单(见第 2 至第 5 周期)。在示例中,价格随后发生转向,最终在某个时间点(约第 5 周期)该挂单的卖出订单得以成交。
该策略的优势在于,它创造了“完成”并平衡配对交易的可能性。在上述例子中,挂单机制使得交易者最终能够匹配买入和卖出操作,同时锁定买卖价差收益。
乒乓机制
乒乓策略是另一种试图保持买入和卖出平衡的策略。它通过仅在已成交订单的相反方向挂单来实现这一点。例如:

由于第 1 周期的买单已成交,机器人将停止下买单,只下卖单(第 2-4 周期)。只有当某个卖单最终成交后(第 4 周期),机器人才会恢复同时创建买卖单(第 5 周期)。
调整一侧价差以跟随价格趋势
通常情况下,做市商使用相同的bid_spread和ask_spread。这在横盘市场中表现良好,因为价格会在一定范围内波动,库存自然趋于 50/50 的平衡状态,做市商则从价差中获利。
但正如我们前面所说,在趋势市场中这会带来问题,因为库存可能会开始积压在价值较低资产的一侧。
一种缓解此问题的方法是收窄某一侧的价差,以提高该侧订单优先成交的概率。
示例:
Mark 这位做市商最初在 BTC-USDT 交易对上设置 bid_spread = 0.5,ask_spread = 0.5。但随后价格开始上涨,于是他将参数调整为 bid_spread = 0.1,ask_spread = 0.9。
这样一来,他的总价差仍保持不变(1%),但现在他的买入挂单比卖出挂单更有可能先被成交。
脚本
Hummingbot 内置了脚本功能,你可以创建自己的自定义策略,机器人将根据你设定的任何策略自动调整参数。
你只需要掌握 Python 编程,创建一个与 Hummingbot 代码库集成的.py 文件,并通过 config script_enabled 命令启用该脚本即可(你可以点击此处了解有关脚本的更多信息)。
你甚至可以创建一个复制自动化做市逻辑的脚本,就像这位 reddit 用户所提问的那样。
我们的开发团队正在对脚本模块进行大量改进,因为这是 Hummingbot 用户实现自定义策略的主要方式。
总结¶
如今成为一名交易员非常容易。
但要成为一名优秀的交易员,那就是另一回事了。
经过这些年来对金融市场的研究,我意识到区分优秀交易员与差劲交易员的关键,在于他们对风险的认知以及风险管理能力。
一个好的交易策略不仅关乎如何最有效地赚钱,还包括当市场走势违背你的计划时该如何应对。
理解每种交易操作相关的风险,是找到可持续且盈利策略的关键。
做市面临的主要风险是库存风险。理解和学习如何缓解这种风险,应是所有希望在任何市场上进行做市操作的人的首要任务。
本文解释了这一主题,并介绍了一些使用 hummingbot 管理此类风险的实用方法。但由于这是一个极其重要的课题,已有大量相关研究论文,例如《应对库存风险:解决做市难题的方案》和《基于非对称信息与库存风险的做市》,我们未来不久也将进一步深入探讨这一话题。
此外,随着自动化做市协议(如 Uniswap 等流动性池)、流动性挖矿以及所有去中心化金融(DeFi)相关领域的兴起,如果你打算成为被动型做市商,理解这些风险就显得尤为重要。
因此,请持续关注我们的博客,因为我们很快将发布一篇文章,比较这些协议与传统订单簿做市之间的关键差异。
下周见。
加入我们的社区¶
如果您想了解更多,请务必关注我们的博客,每周获取新文章更新。
在等待下一篇文章的同时,请记得加入我们的 Discord 服务器,在这里,我们的社区成员会讨论做市和套利,以及如何利用 Hummingbot 优化您的交易策略。
此外,如果您希望 Hummingbot 学院覆盖某个特定主题,请通过 Discord 联系我们的团队,或发送邮件至 academy@hummingbot.io。
期待很快再见,祝您交易顺利、收益丰厚!
下周见!
 
                