我正在寻找一种在多种交易所,多种货币之间套利算法的方法。和多个交易金额。我已经看到了使用BellmanFord和FloydWarshall的示例,但是我尝试过的所有示例似乎都假设该图形数据集由一个交易所的多种货币的价格组成。我已经尝试过修补并使其支持多个交易所的价格,但没有发现任何成功。
我读过的一篇文章说,我使用BellmanFord并仅在图中显示了最佳交易所的价格(而不是所有交易所的价格)。虽然听起来应该可行,但我认为那样可能会失去价值。这是正确的方法吗?
关于多个金额,我应该为每个交易金额绘制一张图表吗?因此,如果我想以100美元和1000美元的价格运行该算法,那么我是否对每个数据集一次填充两次图形? 100美元的价格与1000美元的价格会有所不同,因此,一个价格最高的100美元的交易所可能与1000美元的价格有所不同。
示例:
图形如下:
rates = [
[1, 0.23, 0.26, 17.41],
[4.31, 1, 1.14, 75.01],
[3.79, 0.88, 1, 65.93],
[0.057, 0.013, 0.015, 1],
]
currencies = ('PLN', 'EUR', 'USD', 'RUB')
参考:
答案 0 :(得分:0)
尝试提高速度的准确性,有一种方法可以表示linear program内部每个交易所的整个订单簿。对于每个出价,我们都有一个实值变量,该变量表示我们希望以该价格卖出多少,范围在0到出价的范围内。对于每个询问,我们都有一个实值变量,该变量表示我们希望以该价格购买多少,范围在零到要价之间。 (我假设有可能得到部分填充,但如果没有,您可以切换到整数编程。)约束条件表明,对于除美元(或您想要的更多货币)之外的每种货币,购买的总金额等于总销售量。您可以通过要求每个(货币,交易所)对都具有详细的余额来加强这一点,但是您可能会在桌面上留下一些机会。当心交易对手的风险和滑点。
对于不同数量的启动资金,您可以将美元分为“美元内”和“美元外”,并限制“美元内”的供应,最大程度地增加“美元外”,并采用一对一的方式。一次转换,没有从美元到美元的限制。然后,您可以求解一个美元内约束,调整约束,并使用对偶单纯形比从头开始更快地重新求解LP。