NetworkX 和 Python PlatoBlockchain 数据智能的加密套利。 垂直搜索。 哎。

使用 NetworkX 和 Python 进行加密套利

分析来自 Coingecko API 的加密数据以在 Python 中构建加密套利扫描器

麦克莱恩·马歇尔

与他人合着 艾萨克·雷亚

照片由 阿丽娜(Alina Grubnyak) on Unsplash

世界各地的货币市场每天 24 小时交易,交易量明显高于债券、股票或期货 行业。外汇市场的参与者正在对冲风险或投机货币价值的未来变化。

利润的另一个来源来自于利用货币估值的短期失衡。使用闪电般快速的算法,高频交易者可以识别套利机会并快速执行一系列交易,从而获得微薄的利润。看到这个 刊文 来自公司金融研究所的更深入的解释和示例。

企业金融研究所

由于货币市场的激烈竞争和交易量,这些机会是短暂的,利润微乎其微。尽管通过货币套利获得的收益可以随着时间的推移通过大量交易而积累,但加密货币市场中也存在类似的机会,其利润可能更高。

由于有许多加密货币可供交易,因此有许多可能的组合来检查套利机会。图(网络)数据结构非常适合跟踪硬币之间的不同汇率并快速识别我们可以利用的不平衡实例。有关图形/网络以及使用它们的 Python 包的更多信息,请查看此 ,在 务实的程序员 系列。

为了构建加密货币图,我们将利用 NetworkX 包。这是一个强大的工具,可以轻松分析我们感兴趣的币种并寻找交易机会。首先,我们将从 CoinGecko API 获取加密货币汇率。然后,我们将初始化图表并定义我们感兴趣的每种代币之间的关系(汇率)。最后,我们将循环遍历从一种代币到另一种代币并返回的所有路径,以识别套利机会。

如果您有使用 JSON API 的经验 CoinGecko API使用起来比较简单。通过这段代码,我提取了五种不同货币(比特币、比特币现金、以太坊、莱特币和 EOS)的当前汇率。

API 调用的 URL 看起来像这样,具体取决于您想要提取数据的代币:

https://api.coingecko.com/api/v3/simple/price?ids=bitcoin-cash,ethereum,bitcoin,litecoin,eos&vs_currencies=bch,eth,btc,ltc,eos

通过使用 Python 的 Request 和 JSON 包,我们可以将此数据作为字典加载,其中包含列表中包含的每个加密货币的密钥。与每个键关联的值是另一个字典,其中包含该货币对的汇率条目。例如,对于比特币现金,我们得到以下结果:

这表明0.25个比特币现金可以购买0.16个以太坊或1个比特币。有了每个加密货币的这些结果,我们就可以定义图表了。

每个硬币代表图中的一个“顶点”,两个硬币之间的汇率是一个“边”。初始化一个空的 Graph 对象后,我们为每对硬币及其双向汇率定义一个元组列表。

边缘列表将如下所示:

将边添加到图中后,我们就可以扫描套利机会了。使用 itertools 包中的组合函数,我们定义了所有可能的硬币对。然后,我们使用 NetworkX 中的 all_simple_paths 函数来定义从第一个硬币到第二个硬币的所有可能路径。

例如,如果我们正在研究莱特币和比特币现金,那么考虑到我们正在考虑的硬币,有许多可能的路径。我们可以简单地用莱特币购买比特币现金,也​​可以用莱特币购买比特币,然后用比特币购买比特币现金。

我们循环遍历每条路径并在每一步执行以下计算。首先,我们假设我们从一个初始硬币开始。我们将其乘以一种硬币到另一种硬币的汇率,直到到达路径的尽头。

例如,如果我们从 0.24 个比特币现金开始,我们可以购买 1 个以太坊,因此我们乘以 0.24197529 x 0.24197529 = 0.06。以太坊到比特币的汇率是 0.24197529,所以我们乘以 0.06484324 x 0.0156904618035396 = XNUMX。这个值非常接近比特币现金和比特币之间的汇率,但并不完全相同。

此时,我们检查路径的反向,即从比特币到以太坊再到比特币现金,乘以 1 x 15.414849 x 4.132739 = 63.705547641411。我们将这两个结果相乘,得到路径的最终评估 (0.0156904618035396 x 63.705547641411 = 0.9995694619411315)。据我所知,这个值没有一个定义的术语。我们可以称之为套利因子。

如果汇率同步,套利因子将恰好为 1.005。小于 0.005 的值表明我们经历了一系列的交换,并且最终得到的结果比开始时要少。因此,我们希望该值大于 3,因为进行交换会带来利润。如果我们在前面的示例中发现套利因子为 XNUMX,则这表明通过遵循从一种加密货币到另一种加密货币并返回的交易路径,我们可以获得 XNUMX 比特币现金(价值约 XNUMX 美元)。

不同的加密货币的套利机会在一天中不断出现,并且可以检查多种货币的所有组合,而不会发现套利因子明显高于 1.01。然而,我看到套利因子高于1,这表明通过简单的加密货币交易所可以在短时间内获得XNUMX%的回报。

结合上面解释的三个功能,我们能够创建一个加密套利扫描器。

货币套利是一种行之有效且低风险的交易方式,但传统货币的市场非常高效且竞争激烈。加密货币存在更大的机会,一些简单的 Python 工具可以帮助促进该策略。 NetworkX可用于构建Graph并快速搜索套利机会。

然而,仍有一些挑战需要克服。首先,交易加密货币的费用可能非常高。这意味着加密货币之间的任何不平衡都必须很大才能盈利。同时,如果该策略自动化并设置为定期或全天候运行,那么该策略将是最有效的。请关注有关使用 AWS EC2 实例或 Lambda 函数实施加密货币交易策略的未来文章。

更多内容在 普通英语.io

来源:https://python.plainenglish.io/crypto-profit-with-networkx-and-python-638166e5a947?source=rss——-8————–cryptocurrency

时间戳记:

更多来自