应对不同市场行情的技巧¶

作者:Owen Hobbs
在很多方面,金融市场都类似于海洋的波浪。两者都有波峰、波谷,最终都会回归到一个中点或“海平面”。而应对这些波动的方式,在很大程度上取决于影响它们的天气或市场状况。在本文中,我们将讨论使用 Hummingbot 的用户如何应对各种市场行情,例如盘整行情、上涨趋势和下跌趋势。
区间震荡市场¶
区间震荡市场(也常被称为“横盘”市场)是指价格在某一较高价位和较低价位之间来回波动的市场状态。这种在高低位之间的持续波动,为做市商创造了绝佳的机会,使其能够捕捉买卖价差。在区间震荡市场中,做市商的买入(bid)和卖出(ask)订单更有可能被反复成交。做市商完成“低价买入、高价卖出”这一循环的次数越多,所能捕获的价差和利润也就越多。

计算价差¶
举例来说,在区间震荡市场中,用户可以通过简单测量价格区间的底部到顶部的差距来设定其买卖价差。默认情况下,Hummingbot 会在中间价(mid_price)两侧以一定偏移量挂单,因此我们需要将这个总差距除以二,得到平均的 bid_spread 和 ask_spread。
例如,假设我们判断市场价格在 0.995 到 1.005 之间波动,形成了一个我们希望捕捉的 1% 的价差空间。将这个价差百分比除以二后,我们得到 0.5%,这可以作为 bid 和 ask 价差的一般取值。由于默认情况下价差是相对于中间价设置的偏移量,下图中的第二个示意图展示了这些订单在订单簿上的可能形态。

订单层级¶
通过引入更高级的功能,如 order_levels 和 order_level_spread,用户可以在更宽的价差上放置额外订单,以尝试捕捉超出第一层订单范围的更剧烈波动。参数 order_level_amount 可以增加或减少首层之后的后续订单规模,具体可根据个人风险偏好进行调整。例如,某人可能愿意在较窄价差处买入 100 个资产,但在更宽价差处愿意再买入 150 个资产,因为后者风险更低。
另一方面,通过缩小初始价差并设置两个额外的 order_levels,用户可以同时捕捉价差、波动性,并可能提高交易量。然而,这些更窄的价差也伴随着更高的风险承受要求。请参见示例配置

趋势市场¶
与区间震荡市场类似,趋势市场通常也会在高点和低点之间波动。其不同之处在于,价格走势会随着时间推移形成更高的高点(higher highs)或更低的低点(lower lows),从而划分为上涨趋势或下跌趋势市场。
对代价差设置¶
由于趋势市场不再反复测试相同的高低点,设置 Hummingbot 的价差策略就变得更加复杂。例如,如果我们在趋势市场中仍采用均匀分布的价差策略,那么一侧的订单很可能会比另一侧更频繁地成交。这种情况可能导致价差捕捉效率降低、库存风险难以对冲,甚至总体上造成亏损。
进一步说明,处于上升趋势的市场通常在卖盘侧(ask side)的压力大于买盘侧(bid side)。如果卖盘侧压力更大,做市商更倾向于持续卖出资产,而非补充库存。与此同时,处于下降趋势的市场往往在买盘侧面临更大压力,可能导致供应增加,而卖单被成交的数量有限。
因此,如果交易者试图在趋势市场中捕捉价差,可以根据买卖压力的大小动态调整挂单的价差。例如,当市场处于上升趋势时,可以将卖单的挂单价差设置得比买单更大。由于在上涨市场中卖单更有可能被成交,提高卖出价格有助于抵消并缓解库存失衡。相反的情况则适用于下跌趋势。

订单延迟¶
默认情况下,Hummingbot 在订单成交后会立即在订单簿上重新挂出新的订单。这在某些情况下是有用的,但在市场波动剧烈时,可能导致库存迅速偏向一侧。
增加 filled_order_delay 参数可以设置在订单成交后到下一笔订单挂出之间的时间延迟。通过增大 filled_order_delay 参数,可降低在某一侧连续成交过多订单的风险。
例如,当前市场处于下跌趋势;假设我们正通过更窄的价差施加更大的卖出压力。如果市场突然开始反弹上涨,我们的卖单将被快速成交。
如果启用了 filled_order_delay,系统会在每笔订单之间加入时间间隔,从而限制成交订单的数量以及新增库存的规模。请参见下方展示该场景的配置示例和图表:

遗憾的是,并不存在一种适用于所有市场的万能做市策略可以直接套用。市场方向、波动性、订单深度等要素在不断变化。因此,当前及未来的做市商都需要根据实际市场状况持续调整自身配置。然而,随着经验积累,最终将能够掌握快速适应不断变化市场的技能。
 
                