python - 金融传染(疫情蔓延)模型遇到问题

标签 python network-programming networkx finance

最近想重建论文中的金融传染模型:Contagion in Financial Networks作者:普拉萨纳·盖。 现在我陷入了第一张图:

first figure (实际上是图3)。

我做了什么

我使用了 Python 和 networkx

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

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

  • 为了模拟传染,首先随机选择一个节点来删除其所有 Assets 。那么如果负债超过资本缓冲(Ki,论文中的0.04),它就无法向其邻国偿还负债。对于那些接受了多家银行负债的银行,即使每个环节的权重小于Ki,如果这些负债之和超过Ki,仍被视为破产。这个模型就像疫情蔓延一样,新破产的银行会影响新一批银行,最终系统中不再有银行破产。

  • 传染的定义是该网络中超过 5% 的银行破产(本例中为 50 家)。

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

    • 概率=发生传染的次数/模拟乘以100

    • 程度=【发生传染的情况下】破产银行比例之和/发生传染的数量。

原始代码可在GitHub上获取。通过运行 er_100.py 你可以得到我的数据,如下所示:

figure 2

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

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

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

我不知道我的代码有什么问题。在我看来,我到处都考虑过,应该会得到类似的结果。我什至开始质疑这篇论文的权威性……

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

最佳答案

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

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

raw figure

正如您现在所看到的,该图只是论文中的图。但算法和结构与我用Python编写的完全一样

也许这个案例表明Python 无法做到。 如果有人对这个问题感兴趣,想进一步了解Python和R之间的区别,这是一个很好的例子。我很乐意提供任何帮助。

顺便说一句,R 中的模型代码可在 GitHub 中找到。并且仍在更新中。

感谢那些花时间阅读我的描述的人。

更新:

我也不敢相信这一点,因为在我看来,代码正在执行计数和计算,这很简单。我每一步都打印出来并检查每个节点,从10个节点的小型网络到1000个节点的网络,日志文件达到了50G以上。一切看起来都很正常,而且数量(破产的)只是没有达到阈值。与 R 不同,结构完全相同,结果与论文相同

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

关于python - 金融传染(疫情蔓延)模型遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56969062/

相关文章:

django - 使用 nginx 在多台机器和硬盘驱动器上提供静态文件

networking - TCP 从已用于监听的端口打开套接字

python - 添加重力到networkx.spring_layout

python - 无向图的 Networkx has_edge 只计算一次

networkx - 了解 Networkx find_cliques() 函数

python - Windows下如何运行 'pythondialog'代码?

Python:如何从头到尾计时脚本?

linux - 为什么 C99 提示存储大小?

Python 3 删除文件字符串的一部分

python - python - 如何在python中断言一个字典包含另一个没有assertDictContainsSubset的字典?