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

时间:2019-07-10 10:47:28

标签: python network-programming networkx finance

最近,我想重建Prasanna Gai发表的论文Contagion in Financial Networks中的金融传染模型。 现在我陷入了第一个数字:

first figure(实际上是图3)。

我做了什么

我使用了Python和networkx

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

  • 然后,对于每个节点,我发现有多少节点指向该节点并计数,以计算AiIB(权重)。如果节点1指向3个节点,则这些边缘上的权重为AiIB(纸上为0.2)/ 3(邻居数)。

  • 为模拟感染,首先随机选择一个节点以删除其所有资产。那么如果负债超过了资本缓冲(Ki,本文为0.04),它就无法将债务偿还给其邻国。对于那些从多家银行获得负债的银行,即使每个链接的权重都小于Ki,如果这些负债的总和大于Ki,则仍被视为破产。该模型就像流行病传播一样,新的破产银行将影响新一批银行,最终在该系统中不再有银行破产。

  • 由于蔓延定义为该网络中超过5%的破产银行(在这种情况下为50家)。

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

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

    • 程度= [在发生传染的情况下]破产银行所占比例/发生传染的数量之和。

原始代码在GitHub上可用。通过运行er_100.py,您可以得到如下图:

figure 2

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

我还尝试了60个节点的网络,看起来像是:60 nodes

它的形状与图1相似。但这仍然不好,小网络不是我想要的。

我不知道我的代码有什么问题。我认为,我已经考虑了所有方面,并且应该会得到类似的结果。我什至开始质疑论文的权威性……

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

1 个答案:

答案 0 :(得分:0)

这是一个很难回答的问题。

我仍然找不到该代码的任何线索。然后,我用R重写代码并运行它,这是我得到的草稿图:

raw figure

您现在可以看到,该图只是本文中的那个。但是算法和结构与我用Python编写的完全相同

也许这是一个显示 Python不能做的的情况。 如果有人对此问题感到感兴趣,想在Python和R之间的区别之间进行更多划分,这是一个很好的例子。而且我很乐意提供任何帮助。

通过R中的模型代码在GitHub中可用,并且仍在更新中。

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

更新:

我也不敢相信这一点,因为在我看来,代码在进行计数和计算很简单。我在每一步都打印出非常多的东西,并检查了每个节点,从10个节点的小型网络到1000个节点的网络,日志文件已超过50G。一切看起来都很正常,数字(破产的一个)只是没有达到阈值。与R具有完全相同的结构不同,结果与本文仅是same

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