【发布时间】: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有点相似。但这仍然不好,小网络不是我想要的。
我不知道我的代码有什么问题。在我看来,我到处都考虑过,应该会得到类似的结果。我什至开始质疑论文的权威性……
如果您有任何想法,请帮助我。
【问题讨论】:
-
@Someprogrammerdude 抱歉,我在这里问了这个愚蠢的问题,但我真的不知道这个任务。我尝试了所有云计算。
标签: python network-programming networkx finance