javascript - 列出 DFS 中所有可能的循环
问题描述
我正在尝试实施货币套利系统。我有一组这样的费率(摘录):
{
WETH: { USDC: 1251.412454, USDT: 1247.922038, DAI: 1248.889170853253, GRT: 2564.449143585127 },
USDC: { USDT: 0.997184, GRT: 2.047075466264398 },
UNI: { WETH: 0.011422976592904394 },
UST: { USDT: 1.006223 },
DAI: { USDC: 0.996408 },
LINK: { WETH: 0.016572361615010835 },
AAVE: { WETH: 0.22086511962970312 },
YFI: { WETH: 22.127349619001087 },
WNXM: { WETH: 3.198146952589934 },
COMP: { WETH: 0.178430488180767 },
SNX: { WETH: 0.012523661095285127 },
CVP: { WETH: 0.002145308148869976 },
MKR: { WETH: 1.06714037595511 },
ANT: { WETH: 0.002866589268616632 },
BAND: { WETH: 0.006611859609454254 },
GNO: { WETH: 0.08678180778916264 },
REN: { WETH: 0.000417608062873623 },
UMA: { WETH: 0.00805809579069431 },
}
我想列出所有可能的循环(以相同的标记开始和结束),例如:
1 WETH -> 1251.412454 USDC -> 2.047075466264398*1251.412454=2561.73573 GRT -> 2561.73573/2564.449143585127 = 0.998941912 WETH
我想找到总计高于 1 的周期,因为它们是有利可图的(理论上)。
我想我应该使用 Bellman-Ford 但我无法获得一些我尝试使用这些数据的实现,因为并非每一对都有对应的匹配项(例如,没有 AAVE-USDC 对,你必须做 AAVE- >WETH->USDC)。
我正在使用 javascript 但伪代码或其他任何东西都可以。
解决方案
推荐阅读
- javascript - Javascript - 我需要相当于 jQuery 触发器点击 ID
- javascript - 我不想为使用 electron-packager 打包的 Electron 应用程序构建一个特定目录
- r - 使用逻辑或在 R 中的数据框中组合几个布尔变量
- task - Verilog:为局部变量连续分配输出的任务
- c++ - c++程序未正确打印二维矢量网格但已关闭
- excel - 如何运行具有特定变化和布局的 IW29 并将其结果复制到 excel?
- gradle - 如何将 javascript 依赖项打包到 Kotlin JS 项目 JAR 中?
- java - 如何检索 parseObject 子类的指针 [PARSE SERVER]
- python - 使用正则化时手动计算的验证损失与报告的 val_loss 不同
- java - 创建不兼容的数字子类型