跳转至内容

cross-exchange-mining

📁 策略信息

📝 摘要

跨交易所挖矿策略在做市商交易所上创建买卖限价单,其价差宽于吃单交易所的价差。当做市商交易所的订单被成交时,会触发在吃单交易所以有利价差进行投资组合平衡(两个价差之间的差值等于min_profitability),从而创造利润。

该策略跟踪在吃单和做市商交易所中order_amount的基础资产数量,并持续寻求重新平衡和维持资产,从而降低用户在下跌或上涨市场中拥有过多报价货币或基础资产的任何暴露风险。

🏦 支持的交易所

  • SPOT CLOB CEX

🛠️ 策略配置

参数 类型 默认 提示新配置? 提示
maker_market string True 输入您的做市商现货连接器(交易所)
taker_market string True 输入您的吃单连接器(交易所/AMM)
maker_market_trading_pair string True 输入您希望在[maker_market]上交易的代币交易对
taker_market_trading_pair string True 输入您希望在[taker_market]上交易的代币交易对
min_profitability decimal True 您进行交易的最低盈利百分比是多少?(输入 1 表示 1%)
order_amount decimal True 每个订单的 base_asset 数量是多少?
slippage_buffer decimal 5 True 您想在价格上增加多少缓冲来应对吃单订单的滑点?
balance_adjustment_duration decimal 5 True 连续投资组合再平衡之间的时间间隔?
min_prof_tol_low decimal 0.05 True 您希望在最低盈利百分比以下多少百分比时取消设定订单?
min_prof_tol_high decimal 0.05 True 您希望在最低盈利百分比以上多少百分比时取消设定订单?
volatility_buffer_size decimal 120 True 计算波动率的期间(以秒为单位)?
min_prof_adj_timer decimal 3600 True 使用过去 24 小时内前次交易结果调整最低盈利百分比的时间间隔?
min_order_amount decimal 0 True 限价买入或卖出订单所需的最小订单金额是多少?
rate_curve decimal 1 True 基于过去 24 小时内前次交易调整最低盈利百分比的利率曲线乘数?
trade_fee decimal 0.25 True 覆盖吃单和做市商交易的完整交易费用?

📓 描述

交易逻辑

该策略通过在吃单和做市商交易所之间维持'order amount'基础余额来运作。该策略在做市商交易所上设置买卖限价单,当吃单交易所有足够的报价货币或基础余额以在做市商交易所的限价单成交时完成或平衡吃单交易所的交易时,这些订单会被设置。

当检测到基础资产的不平衡时,该策略可以立即平衡交易,尽管吃单交易在检测到不平衡后会立即执行,但后续的平衡至少会间隔balance_adjustment_duration变量的时间,以确保余额在错误重试之前已更新和记录。通过这种方式,该策略将精确地在交易所之间维持以基础货币计价的'order amount',当存在盈余时卖出基础货币,或当短缺时买入基础货币。

该策略寻求以类似于跨交易所做市的方式盈利,通过在 maker 交易所设置宽价差,当交易执行后,用户可在 taker 交易所以更低的价格买回基础货币(如果 maker 交易所的卖出订单被成交)或在 taker 交易所以更高的价格卖出基础货币(如果 maker 交易所的买入订单被成交)。这两种交易的价格差应为min_profitability变量。将此变量设置为更高的值将导致交易成交次数减少(由于 maker 交易所的价差更大),但每笔交易的盈利更高,反之亦然。

当订单设置的价差满足当时的min_profitability变量时,系统会在每次价格变动时对其进行监控。随着 taker 订单簿上订单的变化,交易的理论盈利能力将随时间变化,这意味着平衡已成交交易的成本会不断变化。当盈利能力低于min_profitability减去 min_prof_tol_low 点或高于min_profitability加上min_prof_tol_high点时,订单将被取消并重新设置为min_profitability金额。

除了这一基本逻辑外,在策略运行期间还会对min profitability数值进行前瞻性调整和滞后性调整。

短期,前瞻性调整:

该策略通过观察 maker 市场当前的波动性来调整上述min profitability数值。该函数会查看在等于volatility_buffer_size的时间窗口内货币对价格的标准差。然后将标准差数值转换为从中点价格减去三倍西格玛百分比并添加到min profitability中。通过这种方式,较高的波动性或标准差数值将增加最小盈利能力,从而形成更大的价差并在波动期间降低风险。调整设置的时间段等于volatility_buffer_size,除非计算出更高的波动性调整值,在这种情况下将按更高的调整率设置并重置计时器。

长期,滞后性调整:

该策略会查看已完成的前期交易和平衡交易,以了解该策略产生利润的成功程度。该策略将再次调整'min_profitability'数值,如果用户正在亏损,则扩大价差;如果交易盈利过高,则收紧价差。这是由于该策略旨在实质上提供一个盈亏平衡的投资组合以最大化挖矿收益,因此得名cross_exchange_mining

策略以min_prof_adj_timer相等的时间间隔读取用户hummingbot/data文件中的前期交易。调用此函数时,它会查看文件中过去 24 小时内记录的交易,并根据时间戳寻找构成完整平衡交易的已成交 maker 和 taker 订单。

该策略在此计算中使用trade_fee变量,以考虑这些交易期间支付给两个交易所的金额,该计算返回前 24 小时内完成的交易和平衡配对的平均盈利能力。然后将此数值转换为调整值。0%的盈利能力(基于订单金额)将导致 0 调整。

正或负的百分比收益通过以下关系转换为调整值:(Percentage * rate_curve)**3 + min_profitability。立方值会以指数方式惩罚获得的较大利润或亏损百分比,从而大幅降低最小盈利性(在大幅盈利的情况下)或大幅提高最小盈利性数值(在大幅亏损的情况下)。rate_curve 变量充当该调整的乘数,建议将其保持在 0.5 至 1.5 范围内,设置得越高,之前的交易对最小盈利性调整的影响就越大。

从个人角度来看,我已经使用了 XEMM 策略 多年,我对此策略的动机并非来自于提高该策略赚钱的效率,而是增加该策略在剧烈市场波动期间维持基础资产对冲头寸的可靠性。该代码完全从 XEMM 策略重写,旨在实现更符合逻辑的演进,并移除在我看来增加复杂性、降低可靠性但并未给用户带来好处的元素。

该策略旨在用于做市商和吃单方中心化交易所的相同交易对。该策略利用市价单在吃单方成交。