Python 金融传染(流行病传播)模型遇到问题

Python 金融传染(流行病传播)模型遇到问题,python,network-programming,networkx,finance,Python,Network Programming,Networkx,Finance,最近,我想在《Prasanna Gai》一文中重建金融传染模型。 现在我陷入了第一个数字: (实际上是图3) 我所做的 我使用了Python和networkx 首先,构建包含1000个节点的ER网络,概率取决于我想要模拟的平均程度。例如,如果我想模拟平均度数为3,则生成ER网络的概率为3/(1000-1),其中1000是网络大小 然后,对于每个节点,我找出有多少节点指向它,然后计数,以计算亚投行(权重)。如果节点1有3个节点指向它,则这些边上的权重为AiIB(纸上为0.2)/3(邻居数) 为了

最近,我想在《Prasanna Gai》一文中重建金融传染模型。 现在我陷入了第一个数字:

(实际上是图3)

我所做的 我使用了Python和
networkx

  • 首先,构建包含1000个节点的ER网络,概率取决于我想要模拟的平均程度。例如,如果我想模拟平均度数为3,则生成ER网络的概率为3/(1000-1),其中1000是网络大小

  • 然后,对于每个节点,我找出有多少节点指向它,然后计数,以计算亚投行(权重)。如果节点1有3个节点指向它,则这些边上的权重为AiIB(纸上为0.2)/3(邻居数)

  • 为了模拟传染,首先随机选择一个节点来移除其所有资产。如果负债超过资本缓冲(Ki,论文中的0.04),那么它就无法向其邻国偿还负债。对于那些从多家银行收到负债的银行,即使每个环节的权重小于Ki,如果这些负债的总和大于Ki,则仍被视为破产。该模型就像流行病蔓延,新的破产银行将影响新的一批银行,在这个系统中不再有银行破产

  • 正如传染病的定义一样,该网络中超过5%的银行破产(本例中为50家)

  • 要绘制该图,每个平均度数需要测试100次:

    • 概率=此处发生的传染次数/模拟次数100

    • 范围=[发生传染的情况下]破产银行比例/发生传染的数量之和

原始代码在上提供。通过运行er_100.py,您可以得到我的图形,如下所示:

如果你对代码有任何问题,请告诉我。(代码需要至少1小时才能在带有8个vCPU的GCP上运行…)

我还尝试了60个节点的网络,如下所示:

它的形状与图1有点相似。但是这个还是不好,小网络也不是我想要的

我不知道我的代码有什么问题。在我看来,我已经考虑了所有地方,应该会得到类似的结果。我甚至开始质疑报纸的权威性

如果您有任何想法,请帮助我。

这是一个很难回答的问题

我仍然没有找到任何代码的线索。然后我在R中重写代码并运行它,下面是我得到的草图:

正如你现在所看到的,这个数字就是报纸上的数字。但是算法和结构与我用Python编写的完全相同

也许这是一个说明Python做不到的例子。 如果有人对这个问题感兴趣,想进一步区分Python和R之间的差异,这是一个很好的例子。我很乐意提供任何帮助

顺便说一下,R中的模型代码在中可用,并且仍在更新中

对于那些花时间阅读我的描述的人,谢谢你的时间

更新:

我也不敢相信这一点,因为在我看来,代码正在进行计数和计算,这很简单。我在每一步都打印出非常重要的内容,并检查每个节点,从10个节点的小型网络到1000个节点的网络,日志文件达到50G以上。所有这些看起来都很正常,而这个数字(破产的一个)只是没有达到临界值。与R不同,在结构完全相同的情况下,结果与论文相同

我真的不知道为什么,也不知道

这是一个很难回答的问题

我仍然没有找到任何代码的线索。然后我在R中重写代码并运行它,下面是我得到的草图:

正如你现在所看到的,这个数字就是报纸上的数字。但是算法和结构与我用Python编写的完全相同

也许这是一个说明Python做不到的例子。 如果有人对这个问题感兴趣,想进一步区分Python和R之间的差异,这是一个很好的例子。我很乐意提供任何帮助

顺便说一下,R中的模型代码在中可用,并且仍在更新中

对于那些花时间阅读我的描述的人,谢谢你的时间

更新:

我也不敢相信这一点,因为在我看来,代码正在进行计数和计算,这很简单。我在每一步都打印出非常重要的内容,并检查每个节点,从10个节点的小型网络到1000个节点的网络,日志文件达到50G以上。所有这些看起来都很正常,而这个数字(破产的一个)只是没有达到临界值。与R不同,在结构完全相同的情况下,结果与论文相同


我真的不知道为什么,也不知道

请阅读,特别是和。还有。最后,请不要忘记如何创建一个任务。@Someprogrammerdude对不起,我问了这个愚蠢的问题,但我真的不知道这个任务。我尝试了我想做的一切。请阅读,尤其是阅读。还有。最后,请不要忘记如何创建一个任务。@Someprogrammerdude对不起,我问了这个愚蠢的问题,但我真的不知道这个任务。我尝试了我云计算的所有东西。很可能你的Python代码中有一个输入错误,而不是Python不能做的事情。@Joel Hi,我理解,但是代码已经在三个人的帮助下检查并调试了2周,我们甚至检查了
random
函数是否不是那么随机的。。。。我只花了2个小时在R中重写代码以获得结果。如果你不介意,并且觉得它很有趣,值得进一步投资,那么所有的源代码都可以在GitHub上获得,很乐意提供帮助