4. 风险传导路径的数学建模基础:图论基础、邻接矩阵、有向图与无向图在风险传导中的应用

在金融风险传导分析中,实体(如金融机构、市场板块、交易对手)之间的风险关联关系天然构成一张复杂的网络。图论(Graph Theory)为描述这种网络结构提供了严谨的数学语言,而邻接矩阵(Adjacency Matrix)则是将图结构转化为计算机可计算的数值形式的关键工具。本节将系统介绍图论基础概念,并重点阐述有向图与无向图在风险传导建模中的不同应用场景。

4.1 图的基本定义与构成要素

一个图 G 由两个集合定义:G = (V, E),其中:

  • V(顶点集):表示风险传导网络中的实体节点,如银行、证券公司、企业、国家或资产类别。
  • E(边集):表示实体之间的风险关联关系,如股权持有、借贷、担保、衍生品交易或信用敞口。
建模要点:在金融风险传导图中,顶点通常代表“风险承载主体”,边代表“风险传导通道”。边的权重可以表示风险暴露金额、违约概率或传导强度。

4.2 有向图与无向图:风险传导的方向性

根据边是否具有方向性,图可分为无向图与有向图,两者在风险建模中具有本质区别。

特性 无向图(Undirected Graph) 有向图(Directed Graph / Digraph)
边表示 无序对 (u, v),表示双向关系 有序对 (u → v),表示单向关系
风险传导方向 风险可双向传导,对称影响 风险沿箭头方向单向传导,非对称影响
典型金融场景 同业拆借网络(双边敞口)、共同资产持有 担保链、供应链上下游、股权控制链、衍生品交易对手风险
邻接矩阵对称性 对称矩阵(Aij = Aji) 非对称矩阵(Aij ≠ Aji)
风险传染特征 双向传染,易形成风险共振 单向传导,可追溯风险源头与路径
应用判断:当风险传导具有明确方向性(如A向B提供担保,B违约导致A承担损失)时,必须使用有向图;当风险关系是对称的(如两家银行互相持有对方发行的债券)时,无向图是合理简化。

4.3 邻接矩阵:图的数值化表示

邻接矩阵是将图结构转化为矩阵形式的数学工具,便于计算机存储和算法运算。对于一个包含 n 个顶点的图,其邻接矩阵 A 是一个 n × n 的方阵。

4.3.1 无权图的邻接矩阵

矩阵元素 Aij 表示顶点 i 与顶点 j 之间是否存在边:

  • 无向图:若顶点 i 与 j 之间有边,则 Aij = Aji = 1;否则为 0。
  • 有向图:若存在从顶点 i 指向顶点 j 的边,则 Aij = 1;否则为 0。

4.3.2 加权图的邻接矩阵

当边具有权重(如风险敞口金额)时,矩阵元素 Aij 直接存储权重值:

  • 无向加权图:Aij = Aji = wij(wij 为边权重)。
  • 有向加权图:Aij = wij(从 i 到 j 的权重),Aji 可能为 0 或不同值。
注意:在风险传导建模中,加权邻接矩阵的权重通常需要归一化处理,以避免数值量级差异过大导致传导路径计算失真。例如,可将敞口金额除以总资产或资本金,得到相对风险暴露度。

4.4 有向图与无向图在风险传导中的对比应用

以下通过一个简化的金融网络示例,直观展示有向图与无向图在风险传导路径建模中的差异。

有向图 vs 无向图:风险传导网络对比 无向图(对称风险) 银行A 银行B 银行C 敞口 50 敞口 30 敞口 40 有向图(非对称风险) 基金A 基金B 企业X 担保 80 投资 60 贷款 100 图例与建模含义 无向图:银行间敞口双向对称,一方违约会直接传染另一方,形成风险共振。 有向图:基金A→企业X→基金B的传导路径清晰,风险沿箭头方向单向传播,可追溯源头。

4.5 邻接矩阵的构建与操作示例

以下以 Python 代码示例展示如何构建有向加权图的邻接矩阵,并进行基本的路径查询操作。

import numpy as np

# 定义顶点列表:0-基金A, 1-基金B, 2-企业X, 3-银行D
vertices = ['基金A', '基金B', '企业X', '银行D']
n = len(vertices)

# 初始化邻接矩阵(有向加权)
adj_matrix = np.zeros((n, n))

# 添加有向边:基金A → 企业X(投资60)
adj_matrix[0][2] = 60
# 添加有向边:企业X → 基金B(贷款100)
adj_matrix[2][1] = 100
# 添加有向边:基金A → 基金B(担保80)
adj_matrix[0][1] = 80
# 添加有向边:银行D → 企业X(存款50)
adj_matrix[3][2] = 50

print("有向加权邻接矩阵:")
print(adj_matrix)

# 查询从基金A出发的所有直接风险传导
print("\n从基金A出发的直接风险传导:")
for j in range(n):
    if adj_matrix[0][j] > 0:
        print(f"  基金A → {vertices[j]},风险敞口:{adj_matrix[0][j]}")

# 计算两步传导路径(矩阵乘法)
adj_square = np.dot(adj_matrix, adj_matrix)
print("\n两步传导路径矩阵(A^2):")
print(adj_square)
print("解释:基金A → 企业X → 基金B 的两步传导强度为 60*100 = 6000")
关键洞察:邻接矩阵的幂运算(Ak)可以揭示长度为 k 的传导路径数量或累积强度。在风险传导分析中,A2 代表间接传导路径,A3 代表三级传导,以此类推。通过计算矩阵幂级数,可以量化风险的多轮传染效应。

4.6 图论在风险传导中的核心应用场景

  1. 风险源头追溯:利用有向图的入度(In-degree)分析,识别被最多风险传导路径指向的节点,即“风险汇聚点”。
  2. 传导路径枚举:基于邻接矩阵的深度优先搜索(DFS)或广度优先搜索(BFS),枚举从风险源到目标节点的所有可能路径。
  3. 系统性风险度量:通过计算图的连通分量(Connected Components)和介数中心性(Betweenness Centrality),评估单个节点在网络中的关键程度。
  4. 压力测试模拟:在加权有向图上模拟节点失效(删除顶点及其出边),观察网络剩余部分的传导路径变化。
  5. 风险隔离策略:利用最小割集(Minimum Cut)算法,找出阻断风险传导所需切断的最少边或最小权重集合。
实践建议:在构建风险传导图时,建议先使用无向图进行初步的连通性分析,再根据实际业务逻辑转换为有向加权图进行精确的路径模拟。两种视角互为补充,能更全面地刻画风险传导特征。