[关闭]
@fanxy 2020-05-31T11:12:11.000000Z 字数 10226 阅读 2657

第十五讲 系统性金融风险II:金融网络基本概念与应用

金融数据 樊潇彦 复旦大学经济学院



0. 准备工作

下载数据:Ch15_Data.zip

  1. setwd("D:\\...\\Ch15")
  2. rm(list=ls())
  3. install.packages("igraph","ggnetwork","NetworkRiskMeasures")
  4. library(igraph)
  5. library(ggplot2)
  6. library(ggnetwork)
  7. library(Matrix)
  8. library(NetworkRiskMeasures)
  9. ## 其他调用
  10. library(tidyverse)
  11. library(readxl)

1. 金融网络简介

1.1 为什么金融网络很重要?

1.2 金融网络的基本概念

1. 金融网络的定义

2. 金融网络的分类
根据关系种类的不同,我们可以把金融网络分为两类:

(1)敞口网络 (exposure network)

(2)相关网络 (correlation network)

3. 网络度量指标

(1)描述网络整体性质的指标

Cont et al.(2013)分析了巴西银行间市场的真实网络,特征事实如下:

Cont2013.bmp

(2)描述节点重要性的指标

下图来自Haldane(2009),描述了1985年和2005年的国际金融网络(Global Financial Network):

GFN.bmp

2. R语言实现

2.1 盖尔·盖伊等(2017)对美国银行间日拆借网络的分析

1. 读入数据并建立网络

  1. data = read.csv2('networktable.csv') # 美国2007~2010年间50家银行的日拆借数据
  2. str(data)
  3. size = read.csv2('vertices.csv') # 顶点属性
  4. library(igraph)
  5. bignetwork = graph.data.frame(data, vertices = size) # 创建网络
  6. is.connected(bignetwork) # 是否连通
  7. table(is.multiple(bignetwork)) # 边是否是多重
  8. str(is.loop(bignetwork)) # 是否存在环
  9. snetwork = igraph::simplify(bignetwork, edge.attr.comb = "sum") # 合并边,简化网络
  10. plot(snetwork, edge.arrow.size = 0.4) # 作图发现存在明显的“中心-外围”结构

2. 用网络密度变化分析雷曼兄弟破产前后金融体系的变化

  1. # 按月计算贷款总量并作图,发现2008年9月雷曼兄弟破产后贷款大幅下降
  2. mAmount = with(data, aggregate(Amount, by = list(Month = Month, Year = Year),
  3. FUN = sum))
  4. plot(ts(mAmount$x, start = c(2007, 1), frequency = 12), ylab = "Amount")
  5. # 循环计算每个月的网络密度并作图
  6. ds = sapply(2007:2010, function(year) {
  7. sapply(1:12, function(month) {
  8. mdata <- subset(data, (Year == year) & (Month == month))
  9. graph.density(graph.data.frame(mdata))
  10. })
  11. })
  12. plot(ts(as.vector(ds), start = c(2007, 1), frequency=12))
  13. abline(v = 2008 + 259/366, col = 'red')

3. 计算网络节点的中心性指标,寻找系统重要性金融机构 (Systemically Important Financial Institutions, SIFI)

  1. # 计算四种中心性指标
  2. g <- graph.data.frame(data)
  3. degree <- degree(g, normalized = TRUE)
  4. between <- betweenness(g, normalized = TRUE)
  5. closeness <- closeness(g, normalized = TRUE)
  6. eigenv <- evcent(g, directed = TRUE)$vector
  7. norm <- function(x) x / mean(x) # 标准化函数
  8. index <- (norm(degree) + norm(between) + norm(closeness) + norm(eigenv)) / 4 # 取平均值
  9. index
  10. hist(index) # 做直方图
  11. SIFI=data.frame(id=rownames(data.frame(index)),index)%>%
  12. filter(index>2.5)%>%arrange(desc(index))
  13. SIFI # SIFI从高到低排名

2.2 Carlos Cinell提供的NetworkRiskMeasures程序包

1. 网络估计

  1. library(NetworkRiskMeasures)
  2. # Example from Anand, Craig and Von Peter (2015, p.628)
  3. L <- c(a = 4, b = 5, c = 5, d = 0, e = 0, f = 2, g = 4) # Total Liabilities
  4. A <- c(a = 7, b = 5, c = 3, d = 1, e = 3, f = 0, g = 1) # Total Assets
  5. # (1) Upper(2004)的最大熵估计(Maximum Entropy Estimation),假设每个银行都试图尽可能平均地分散其敞口。
  6. ME <- matrix_estimation(rowsums = A, colsums = L, method = "me")
  7. ME <- round(ME, 2)
  8. ME
  9. # (2) Anand et al.(2015)的最小密度估计(Minimum Density Estimation),假设银行间网络稀疏且分散。
  10. set.seed(192) # seed for reproducibility
  11. MD <- matrix_estimation(A, L, method = "md")
  12. MD

2. 基于模拟数据的网络分析

  1. # (1) 基于模拟数据构建网络
  2. data("sim_data") # 125个银行的资产、负债、资本缓冲和权重的模拟数据集
  3. set.seed(15)
  4. md_mat <- matrix_estimation(sim_data$assets, sim_data$liabilities,
  5. method = "md", # minimum density estimation
  6. verbose = F) # prevent printing
  7. rownames(md_mat) <- colnames(md_mat) <- sim_data$bank # rownames and colnames
  8. library(igraph)
  9. gmd <- graph_from_adjacency_matrix(md_mat, weighted = T) # 用相邻矩阵建立网络
  10. edge_density(gmd) # 密度(density)
  11. assortativity_degree(gmd) # 同配性(Assortativity)
  12. V(gmd)$buffer <- sim_data$buffer # 添加节点属性
  13. V(gmd)$weights <- sim_data$weights/sum(sim_data$weights)
  14. V(gmd)$assets <- sim_data$assets
  15. V(gmd)$liabilities <- sim_data$liabilities
  16. # (2) 网络作图
  17. library(ggplot2)
  18. library(ggnetwork)
  19. set.seed(20)
  20. netdf <- ggnetwork(gmd)
  21. ggplot(netdf, aes(x = x, y = y, xend = xend, yend = yend)) +
  22. geom_edges(arrow = arrow(length = unit(6, "pt"), type = "closed"),
  23. color = "grey50", curvature = 0.1, alpha = 0.5) +
  24. geom_nodes(aes(size = weights)) +
  25. ggtitle("Estimated interbank network") +
  26. theme_blank()
  27. # (3) 寻找SIFIs
  28. sim_data$degree <- igraph::degree(gmd) # 度中心性
  29. sim_data$btw <- igraph::betweenness(gmd) # 中介中心性
  30. sim_data$close <- igraph::closeness(gmd) # 亲近中心性,非连通网络会报错
  31. sim_data$eigen <- igraph::eigen_centrality(gmd)$vector # 特征向量中心性
  32. sim_data$alpha <- igraph::alpha_centrality(gmd, alpha = 0.5) # Katz中心中心性
  33. # 冲击敏感性:衡量相对于其直接传染路径可以到达顶点的可行传染路径。当冲击敏感性大于1时,这意味着该顶点容易受到其直接邻居之外的其他顶点的影响(远程影响)。
  34. sim_data$imps <- impact_susceptibility(exposures = gmd, buffer = sim_data$buffer)
  35. # 影响扩散:捕获节点对网络中影响传播的影响。顶点的影响扩散是通过将其传播感染的能力从网络中删除后,通过其对其他顶点的影响敏感性的变化来衡量的。
  36. sim_data$impd <- impact_diffusion(exposures = gmd, buffer = sim_data$buffer,
  37. weights = sim_data$weights)$total

3. 模拟网络传染与系统损失
contagion()函数模拟银行破产冲击在金融系统中的传染过程和最终影响。

  1. # (1) Bardoscia et al.(2015):DebtRank(线性传播)模拟,假定银行遭受损失后会将损失等比例地传递到关联银行
  2. contdr <- contagion(exposures = md_mat,
  3. buffer = sim_data$buffer, weights = sim_data$weights,
  4. shock = "all", method = "debtrank", verbose = F)
  5. summary(contdr)
  6. contdr_summary <- summary(contdr)
  7. sim_data$DebtRank <- contdr_summary$summary_table$additional_stress # DebtRank指标
  8. plot(contdr)
  9. # 以b55为例,其规模是金融系统的11%,如果其初始损失(Original Losses)为584亿美元,在线性冲击传播情况下,其违约将给系统造成28%的额外压力,相当于2358亿美元的额外损失,并导致18个其他机构的违约。
  10. # (2) 违约级联模拟(default cascades simulation),假定除非银行违约,否则不会传染
  11. contthr <- contagion(exposures = md_mat,
  12. buffer = sim_data$buffer, weights = sim_data$weights,
  13. shock = "all", method = "threshold", verbose = F)
  14. summary(contthr)
  15. contthr_summary <- summary(contthr)
  16. sim_data$cascade <- contthr_summary$summary_table$additional_stress
  17. plot(contthr)
  18. # (3) 模拟任意传染: 所有银行同时发生的1%至25%的压力冲击将如何影响系统?为此,只需创建一个包含冲击矢量的列表,然后将其传递给即可contagion()。
  19. s <- seq(0.01, 0.25, by = 0.01)
  20. shocks <- lapply(s, function(x) rep(x, nrow(md_mat)))
  21. names(shocks) <- paste(s*100, "pct shock")
  22. cont <- contagion(exposures = gmd, shock = shocks,
  23. buffer = sim_data$buffer, weights = sim_data$weights,
  24. method = "debtrank", verbose = F)
  25. summary(cont)
  26. plot(cont, size = 2.2)
  27. # 在此示例中,所有组中5%的冲击会在系统中造成20%的额外压力,是初始冲击的4倍。

4. 银行排名与指标比较

  1. head(sim_data)
  2. #我们可能会看到这些不同指标中的一些如何对每个节点进行排名。例如,DebtRank和Default Cascade指标与前五个机构一致。
  3. rankings <- sim_data[1]
  4. var_rk=c("DebtRank","cascade","degree","eigen","impd","assets", "liabilities", "buffer")
  5. rankings <- cbind(rankings,lapply(sim_data[var_rk],
  6. function(x) as.numeric(factor(-1*x))))
  7. rankings <- rankings[order(rankings$DebtRank), ] # 按DebtRank排序
  8. head(rankings, 10) # 前十名银行
  9. cor(rankings[-1]) # 指标之间的相互关系

3. 我国学者相关研究

4. 参考文献

  1. Allen, F., A. Babus, and E. Carletti 2009: Financial crises: theory and evidence, Annual Review of Financial Economics, Vol.1, P97-116
  2. Battiston, S., G. Caldarelli, R.M. May, T. Roukny, and J.E. Stiglitz, 2016, The price of complexity in financial networks, PNAS, Vol.113(36), P10031-10036
  3. Cont, R., A. Moussa, and E.B. Santos, 2013: Network structure and systemic risk in banking systems, In J.-P. Fouque and J.A. Langsam(ed.), Handbook on Systemic Risk, P327–367, Cambridge University Press
  4. Glasserman, P. and P. Young 2016: Contagion in financial networks, Journal of Economic Literature, Vol.54(3), P779-831
  5. Haldane, A.G. 2009: Rethinking the financial network, Speech delivered at the Financial Student Association Conference in Amsterdam
  6. Hüser, A.C. 2015: Too interconnected to fail: A survey of the interbank networks literature, Journal of Network Theory in Finance, Vol.1(3), P1–50
  7. Langfield, S., K. Soramäki 2016: Interbank exposure networks, Computational Economics, Vol.47(1), P3-17
  8. Summer, M. 2013: Financial contagion and network analysis, Annual Review of Financial Economics, Vol.5(1), P277-297
  9. Yellen, J.L. 2013: Interconnectedness and systemic risk: Lessons from the financial crisis and policy implications, Speech at the American Economic Association/American Finance Association Joint Luncheon, San Diego, California
  10. 盖尔·盖伊等,2017:《量化金融R语言初级教程》,高蓉、李茂译,人民邮电出版社
  11. 鲍勤和孙艳霞,2014:网络视角下的金融结构与金融风险传染,《系统工程理论与实践》,2014.9
  12. 陈国进和马长峰,2010:金融危机传染的网络理论研究述评,《经济学动态》,2010.2
  13. 黄聪和贾彦东,2010:金融网络视角下的宏观审慎管理——基于银行间支付结算数据的实证分析,《金融研究》,2010.4
  14. 刘京军和苏楚林,2016:传染的资金:基于网络结构的基金资金流量及业绩影响研究,《管理世界》,2016.1
  15. 童牧和何奕,2012:复杂金融网络中的系统性风险与流动性救助——基于中国大额支付系统的研究,《金融研究》,2012.9
  16. 肖欣荣、刘健和赵海健,2012,《机构投资者行为的传染——基于投资者网络视角》,《管理世界》,2012.12
  17. 肖欣荣和刘健,2015:基于网络理论的金融传染与投资者行为研究进展,《经济学动态》,2015.5
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注