Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 确定汇率的算法_Python_Currency_Finance - Fatal编程技术网

Python 确定汇率的算法

Python 确定汇率的算法,python,currency,finance,Python,Currency,Finance,给定不同货币对的数据集,如何有效地计算数据集中未提供的货币对的隐含汇率 例如,假设我的数据库/表如下所示(此数据是伪造的): 请注意(英镑,美元)!=1/(美元,英镑) 我预期会有以下结果: print rate('GBP','USD') > 1.5 print rate('USD','GBP') > 0.64 print rate('GBP','EUR') > 1.19 #now in the absence of an explicit pair, we imply

给定不同货币对的数据集,如何有效地计算数据集中未提供的货币对的隐含汇率

例如,假设我的数据库/表如下所示(此数据是伪造的):

请注意(英镑,美元)!=1/(美元,英镑)

我预期会有以下结果:

print rate('GBP','USD')
> 1.5

print rate('USD','GBP')
> 0.64

print rate('GBP','EUR')
> 1.19

#now in the absence of an explicit pair, we imply one using the inverse
print rate('EUR','GBP')
> 0.84
这些是简单的案例,它变得更有趣:

#this is the implied rate from (GBP,EUR) and (GBP,USD)
print rate('EUR','USD')
> 1.26
或者更复杂的例子是使用3对或更多对来寻找最有效的翻译:

print rate('EUR','AUD')
> 1.38
我认为这详细说明了这个问题的编程相关方面。我想这里可以实现一个高效或聪明的递归。唯一的要求是使用最少数量的对来获得请求的对(这是为了减少错误)。如果没有给出显式的逆,那么反转一对将不会产生任何成本

动机
在理想的金融世界中,货币市场是有效的。事实上,这是99%正确的。通常情况下,奇数货币对不被引用或很少被引用。如果存在明确的报价,我们必须在任意计算中使用它。如果不是,我们必须暗示最准确的一对,尽可能多的小数位数。此外,它们并不总是乘以1(实际上,它们从不乘以1);这反映了市场中的买卖价差。因此,我们在两个方向上尽可能多地保留对,但希望能够为所有货币编写通用代码


我想我已经实施了一个像样的暴力解决方案。这是可行的,但我认为这个问题很有趣,我想知道是否有其他人认为它有趣/具有挑战性。我个人使用的是Python,但这与其说是一个实现,不如说是一个练习,因此psuedo代码“足够好了”。

您正在有向图中寻找最短路径,其中货币是顶点,给定汇率是边。
如果只为一个方向指定汇率,则可以为成本较高的相反方向添加汇率。

在序言中,这是一项非常简单的任务:)。在程序算法中需要更多的考虑。我的猜测是,您必须形成一个转换树,顶部节点是源货币,而leafs是最后一种可能的货币,条件是对于每个从上到下的电路,每个货币只出现一次。然后,该算法将选取获得的最小合成汇率。递归方法。哦,我完全忘记了图形。答对 了你已经给了他答案:)
print rate('EUR','AUD')
> 1.38