本文介绍一种基于聚合器套利的策略优化方案。整体思路是在同时请求多个不同数量的报价后,与 CEX 的最佳买卖报价(BBO)进行比对,选择近似的报价,然后在 DEX 上先发起交易,待 DEX 成交后再在 CEX 上执行对冲交易。当有头寸的时候可以通过调整报价参数来对冲头寸,以减少风险和手续费。
询价思路
同时向聚合器请求相同币种不同价值的报价:
因为报价通常是比较耗时的的一个操作,往往是毫秒级的。通过提前拿到报价再来近似,比普通先通过cex bbo数量再来请求报价要快一点。
这里报价的请求数量可更加偏低点。比如说我策略的最大下单量是500u,那么当我设定一个币同一个方向只有10个不同价位报价的时候,我们应该给更低价值的报价分配更多的金额。因为套利更多是吃盘口流动性,当然bbo出现低价值的maker单的情况会更多点。可以才用等比的方式。
package main import ( "fmt" "math" "github.com/davecgh/go-spew/spew" ) func generateGeometricSequence(minValue, maxValue, numValues int) []float64 { // 使用对数来生成等比数列 start := math.Log(float64(minValue)) end := math.Log(float64(maxValue)) // 在对数空间内生成均匀分布的数值 logValues := make([]float64, numValues) for i := 0; i < numValues; i++ { logValues[i] = start + float64(i)*(end-start)/float64(numValues-1) } // 转换回普通数值 values := make([]float64, numValues) for i := 0; i < numValues; i++ { values[i] = math.Exp(logValues[i]) } // 确保最后一个值不超过最大值 if values[numValues-1] > float64(maxValue) { values[numValues-1] = float64(maxValue) } return values } func main() { // 示例:生成从10到500之间的10个等比数值 minValue := 10 maxValue := 500 numValues := 10 values := generateGeometricSequence(minValue, maxValue, numValues) // 输出结果 for _, v := range values { fmt.Printf("%.2f ", v) } } ///10.00 15.44 23.85 36.84 56.90 87.88 135.72 209.61 323.74 500.00
- 将这些报价与 CEX 的 BBO 进行比较
当发现近似的报价时,选择该报价进行后进行套利
当价差大的时候可以考虑使用价值更大的报价以获得更高利润 。当利润一般的时候就选项更低价值的报价以减少cex滑点。
分步执行交易
- 第一步: 在 DEX 上发送对应报价的tx
- 第二步: 等待 DEX 成交后,再在 CEX 上发送对应的对冲交易
滑点问题及优化
由于 DEX 交易存在滑点风险,会导致实际成交价格与预期存在偏差,从而影响头寸。为此,策略中引入了以下优化思路:
DEX 买入 & CEX 卖出
基本原理
- 在 DEX 买入时,获得的 币的 数量通常是一个预估值,不够精确;当部分聚合器提供准确输出的时候,可能走的dex数量不如选择准确输入的时候dex。换句话说,使用准确输入的聚合器选项可以获得更多的流动性。
- 例如,当现在价格是0.1u的时候,想用 10U 在 DEX 上买入100个币,但实际成交可能会因滑点而偏低;
策略调整
询价的时候dex买入的数量降低一定数量:
- 因为cex下单存在tick的情况,假设cex的amount tick是0.5,当我下单10ubase的时候,实际上因为正滑点的影响我得到了99.7个base,那么我交易所对冲的时候是对冲99.5个base 那么就会有0.2个base头寸。如果我dex询价的数量是9.98u的base 那么实际上可能得到99.55个的base,头寸就小了。
DEX 卖出 & CEX 买入
- DEX 卖出的 Base 数量是固定值,因此在 CEX 上可以完全等量对冲。
- 这种模式下,不会出现头寸不平衡的问题。
询价的时候根据当前头寸情况进行调整:
如果链上钱包出现多头头寸的时候,报价的时候多报价对应头寸价值 。因为交易所一般是只有当平仓的时候可以不受到最低下单额度限制,并且保留tick限制。所以利用链上没有这些限制的机制,来及时的把多余的链上钱包头寸合并到一笔套利tx里面,既减少了头寸风险又减少了手续费。
总结
本文介绍了一种基于聚合器的套利策略优化方案,主要涉及以下几个关键点:
- 多报价请求与比对: 同时请求多个报价,并与 CEX 的 BBO 进行比较,选择最优报价进行操作。
- 头寸管理: 在 DEX 卖出与 CEX 买入时,根据当前头寸调整报价,利用链上灵活的头寸管理机制来减少风险。
此文章内容由云梦量化科技区块链开发工程师ethan创作投稿。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。