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 个市场/交易所,最后回到原资产,如果回到手里的数量比出发时更多,差额就是套利利润。
举个例子(来自项目单元测试的真实用例):
| 跳序 | 平台 | 交易 | 汇率 |
|---|---|---|---|
| 1 | Binance | USDC → SOL | 0.0068 SOL/USDC |
| 2 | Hyperliquid | SOL → JUP | 145 JUP/SOL |
| 3 | Bybit | JUP → USDC | 1.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):
| 参数 | 默认值 | 作用 |
|---|---|---|
maxHops | 4 | 最大跳数,即只搜 3-4 跳环 |
minNetEdgeBps | 20 bps | 最低净边际阈值(0.2%) |
minTargetProfitUsd | $1 | 最低预期美元利润 |
maxNotionalUsd | $500 | 单笔最大名义金额 |
maxQuoteAgeMs | 1500 ms | 报价保鲜期,过期直接剔除 |
maxLatencyMs | 2000 ms | 单跳最大可接受延迟 |
算法如何运转:六步拆解(核心)
findMultiHopArbitragePlans函数(L282-L370)是整个模块的心脏,逐步拆解如下。
第 1 步:报价资格过滤
先筛掉不可用的报价:汇率 ≤ 0、最大输入容量 ≤ 0、报价年龄超过 1.5 秒、单跳延迟超过 2 秒的报价全部淘汰。HFT 场景对时间极度敏感,这一步保证后续搜索只基于"新鲜"数据。
第 2 步:构建邻接表
按fromAsset把所有合格报价分组,形成邻接表。这样 DFS 走到任何资产时,都能一次取出它的所有出边,无需全量扫描。
第 3 步:DFS 回溯搜索(3-4 跳搜索的核心)
以每个资产为起点,沿着出边递归展开:
- 用当前路径
path与"每单位起始资产已产出"currentOutputPerUnit(初始为 1)跟踪状态 - 每走一跳,计算净汇率=
rate × (1 - (手续费 + 滑点) / 10000) - 容量传播:能穿过这一跳的最大起始投入 =
该跳容量 / 当前产出比,再与已有容量取 min。这一步保证了最终算出的下单规模在路径的每一跳都真实可执行,而不是只看汇率 - 路径达到
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 中覆盖了三个关键场景:
- 3 跳盈利环:Binance→Hyperliquid→Bybit 的 USDC-SOL-JUP-USDC 环,断言
hopCount=3、净边际 > 0、预期利润 > 0 - Solana 原子 bundle:三跳全部可打包,断言策略为
solana_atomic_bundle且每条指令都是atomic_bundle提示 - EVM exact-in:三跳全部在 EVM,断言策略为
evm_exact_in且exactIn标志生效
总结:这套实现值得借鉴的 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),仅供参考