【问题标题】:Financial Contagion (Epidemic spread) Model Meets Problem金融传染(流行病传播)模型遇到问题
【发布时间】:2019-07-10 10:47:28
【问题描述】:

最近我想重建论文中的金融传染模型:Contagion in Financial Networks by Prasanna Gai。 现在我卡在第一个图中:

(实际上是图 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

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

原始代码可在GitHub 上获得。通过运行 er_100.py 你可以得到我的图:

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

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

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

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

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

【问题讨论】:

标签: python network-programming networkx finance


【解决方案1】:

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

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

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

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

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

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

更新:

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

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

【讨论】:

  • 您的 Python 代码中的某个地方存在拼写错误的可能性比 Python 无法做到的要大得多。
  • @Joel 嗨,我明白了,但是代码已经在三个人下检查并调试了 2 周,我们甚至检查了 random 函数是否没有那么随机......我只花了 2 个小时重写 R 中的代码以获得该结果。如果您不介意并且觉得有趣值得进一步投资,所有源代码都可以在 GitHub 上找到,很乐意提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多