CloddsBot多跳套利:3-4跳图路径搜索的算法全解
2026/9/18 23:37:36 网站建设 项目流程

CloddsBot多跳套利:3-4跳图路径搜索的算法全解

【免费下载链接】CloddsBotOpen Source AI trading agent that operates autonomously across 1000+ markets - Polymarket, Kalshi, Binance, Hyperliquid, Solana DEXs, 5 EVM chains. Scans for edge, executes instantly, manages risk while you sleep. Agent commerce protocol for machine-to-machine payments. Self-hosted. Built on Claude.项目地址: https://gitcode.com/GitHub_Trending/cl/CloddsBot

CloddsBot 是一个开源 AI 交易代理(AI Trading Agent),可自主运行于 1000+ 市场。这篇文章聚焦它的**多跳套利(Multi-Hop Arbitrage)**模块,完整讲解 3-4 跳图路径搜索算法是如何从一份交易所报价图中找出盈利环的——即使你没有接触过图算法,也能看懂。

什么是多跳套利:从"两地买卖"到"绕一圈回来"

普通跨场所套利是两段式:A 所低价买入、B 所高价卖出。多跳套利把这个思路扩展成 3~4 段甚至更多:从某个资产出发,经过 3 或 4 个市场/交易所,最后回到原资产,如果回到手里的数量比出发时更多,差额就是套利利润。

举个例子(来自项目单元测试的真实用例):

跳序平台交易汇率
1BinanceUSDC → SOL0.0068 SOL/USDC
2HyperliquidSOL → JUP145 JUP/SOL
3BybitJUP → USDC1.03 USDC/JUP

三段净汇率(扣除手续费与滑点后)连乘大于 1,就意味着投入 1 美元能拿回 1 美元多。

💡 也就是说,多跳套利把整个市场抽象成一张有向图

  • 节点= 资产(USDC、SOL、JUP…)
  • 边(hop)= 某个平台市场上的一条报价(fromAsset → toAsset)
  • 环(cycle)= 回到起点的闭合路径;环上所有边的净汇率连乘 > 1,该环即可盈利

算法的 6 个默认参数

规划器内置一组默认值(源码DEFAULT_CONFIG,见 src/trading/multi-hop-arbitrage.ts#L73-L83):

参数默认值作用
maxHops4最大跳数,即只搜 3-4 跳环
minNetEdgeBps20 bps最低净边际阈值(0.2%)
minTargetProfitUsd$1最低预期美元利润
maxNotionalUsd$500单笔最大名义金额
maxQuoteAgeMs1500 ms报价保鲜期,过期直接剔除
maxLatencyMs2000 ms单跳最大可接受延迟

算法如何运转:六步拆解(核心)

findMultiHopArbitragePlans函数(L282-L370)是整个模块的心脏,逐步拆解如下。

第 1 步:报价资格过滤

先筛掉不可用的报价:汇率 ≤ 0、最大输入容量 ≤ 0、报价年龄超过 1.5 秒、单跳延迟超过 2 秒的报价全部淘汰。HFT 场景对时间极度敏感,这一步保证后续搜索只基于"新鲜"数据。

第 2 步:构建邻接表

fromAsset把所有合格报价分组,形成邻接表。这样 DFS 走到任何资产时,都能一次取出它的所有出边,无需全量扫描。

第 3 步:DFS 回溯搜索(3-4 跳搜索的核心)

以每个资产为起点,沿着出边递归展开:

  1. 用当前路径path与"每单位起始资产已产出"currentOutputPerUnit(初始为 1)跟踪状态
  2. 每走一跳,计算净汇率=rate × (1 - (手续费 + 滑点) / 10000)
  3. 容量传播:能穿过这一跳的最大起始投入 =该跳容量 / 当前产出比,再与已有容量取 min。这一步保证了最终算出的下单规模在路径的每一跳都真实可执行,而不是只看汇率
  4. 路径达到maxHops即停止展开、回溯

🎯 两个去重机制防止死循环和重复劳动:

  • visitedAssets:同一资产不可二次进入(起点资产除外——回到起点正是成环信号)
  • visitedHops:同一条边(平台+市场+from+to)在同一路径中不重复经过

第 4 步:成环判定

当某条边的toAsset等于起始资产、路径已有 ≥ 2 跳时,构成一个合法套利环,进入盈利检查;否则继续递归。

"只允许回到起点"这一设计,让算法只搜索简单环,天然避开了绕圈子的无效探索,也大幅压缩了搜索空间。

第 5 步:盈利与阈值检查

buildPlan执行一连串硬门槛:

  • 净乘数(所有跳净汇率连乘)必须 > 1
  • 净边际netEdgeBps = (乘数 - 1) × 10000≥ 20 bps
  • 预期美元利润 ≥ $1
  • 投入规模 = min(各跳容量, $500 名义上限),且必须 > 0

全部通过才生成计划,其中包含逐跳执行指令(顺序、输入/预期输出规模、手续费、滑点、延迟、结算域)。

第 6 步:轮换不变去重 + 结果排序

这是整个算法里最巧妙的细节之一。同一个物理环可以从不同起点被搜到——USDC→SOL→JUP→USDC 与 SOL→JUP→USDC→SOL 其实是同一个环,按路径去重会产生重复。

解决方案canonicalCycleId(L133-L137):把环上各条边拼成 token 序列,生成所有循环轮换形式,取字典序最小的一个作为该环的唯一 ID。同 ID 的环只保留最先发现的那个,而不是去比较两个带浮点噪声的净边际值——那样会让"哪个轮换胜出"变成随机的。

最后,所有计划按净边际降序排序(并列时按预期美元利润降序),最赚钱的机会排在最前。

三种结算策略:找到环之后怎么执行

determineSettlementStrategy会根据每跳的链上结算属性,为环标注执行策略:

策略触发条件含义
solana_atomic_bundle所有跳都在 Solana 且全部满足原子条件整条环打成一个原子 bundle,全部成功或全部失败
evm_exact_in含 EVM 腿且其余为链下每跳用确定性 exact-in 定大小进入
standard其他混合情况普通市价单逐跳执行,并标记混合结算警告

同时会生成一组警告,例如mixed_settlement_domains(混合结算域)、latency_budget_tight(延迟预算紧张)、quotes_nearing_stale_threshold(报价临近过期),供执行层做风险决策。

调用规划器:服务层与 API 入口

规划器本身是纯函数,由 src/opportunity/hft.ts 接入产品面:

  • planMultiHopHft(hops, config):传入有向边报价列表,直接返回计划列表(L505-L513)
  • POST /api/opportunities/hft/multi-hop/plan:网关 API,接收显式的有向图 payload,执行 3-4 跳寻路

你甚至可以在 WebChat 聊天界面直接触发机会扫描。执行模型与 V2 HFT 套利的完整设计背景,可阅读 docs/V2_HFT_ARBITRAGE.md。

算法正确性如何验证:单元测试

项目在 tests/unit/multi-hop-arbitrage.test.ts 中覆盖了三个关键场景:

  1. 3 跳盈利环:Binance→Hyperliquid→Bybit 的 USDC-SOL-JUP-USDC 环,断言hopCount=3、净边际 > 0、预期利润 > 0
  2. Solana 原子 bundle:三跳全部可打包,断言策略为solana_atomic_bundle且每条指令都是atomic_bundle提示
  3. EVM exact-in:三跳全部在 EVM,断言策略为evm_exact_inexactIn标志生效

总结:这套实现值得借鉴的 4 个点

  • 图论建模简洁:报价列表 → 邻接表 → DFS 找环,教科书式的有向图应用,代码却不到 400 行
  • 容量传播严谨:不止看汇率,还逐跳传播可执行容量,保证最终规模端到端可落地
  • 时效双阈值:1.5 秒报价保鲜期 + 2 秒延迟上限,是 HFT 场景务实的工程取舍
  • 轮换不变去重:用最朴素的方式优雅处理了"环的等价性"

套利执行后的整体持仓表现,可以用组合看板随时核对。

相关文件速查

  • 多跳规划器核心:src/trading/multi-hop-arbitrage.ts
  • 机会级 HFT 规划服务:src/opportunity/hft.ts
  • 单元测试:tests/unit/multi-hop-arbitrage.test.ts
  • V2 HFT 套利设计文档:docs/V2_HFT_ARBITRAGE.md
  • 双场所套利规划器(对比阅读):src/trading/venue-arbitrage.ts

【免费下载链接】CloddsBotOpen Source AI trading agent that operates autonomously across 1000+ markets - Polymarket, Kalshi, Binance, Hyperliquid, Solana DEXs, 5 EVM chains. Scans for edge, executes instantly, manages risk while you sleep. Agent commerce protocol for machine-to-machine payments. Self-hosted. Built on Claude.项目地址: https://gitcode.com/GitHub_Trending/cl/CloddsBot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询