最近的金融危机和市场波动期提高了金融分析师对风险蔓延和系统性风险的意识。因此,金融专业人士的任务往往是构建和分析模型,以洞察风险对投资、投资组合和业务运营的潜在影响。
一些作者描述了使用高级数学和统计技术来量化投资、汇率、工业部门或地理区域之间的依赖关系[1]-[7]。对于分析人员来说,在正式方法和工作代码实现之间架起桥梁是一个关键的挑战。
这篇文章展示了MATLAB®可以使用各种数学工具来分析风险传染的各个方面。主题包括:
- 数据聚合、预处理和风险基准
- 量化金融变量之间的依赖关系
- 可视化由此产生的依赖关系网络以及邻近信息(图1)
- 利用隐马尔可夫模型分析风险传染的周期
下载本文的MATLAB实时脚本以交互方式访问所有图像、方程和代码。活动脚本包含本文中的所有代码、输出、方程和图像。您可以下载该脚本,在MATLAB中打开它,并研究本文中描述的分析步骤。
使用MATLAB Live Editor需要R2016a或以上版本。如果你没有R2016a,你可以下载免费试用版.
了解更多有关MATLAB实时编辑器。
数据聚合和预处理
我们首先收集了2008年1月至2013年12月期间来自不同国家的中等市值证券价格。每种证券都有相关的元数据,如市值、工业部门和国家。在本文中,我们将分析不同部门之间的传染,但研究替代类别(例如,原籍国)很容易。我们用标准化的市值来定义单个证券的权重,然后用加权的总和来聚合每个部门的所有证券。结果是基准价格序列,如图2所示。
相关分析
研究变量间相关性最简单的方法之一是计算数据的相关矩阵。使用MATLABplotmatrix
函数和统计和机器学习工具箱™相关系数
函数,我们可以创建信息可视化,以指示扇区返回序列数据中呈现的成对关系。图3和图4显示了这些图表的示例。
图3中的非对角元素表示成对的联合分布,对角线表示直方图上每个变量的边际分布。图4通过说明工业部门回报之间的成对相关系数,量化了图3中显示的成对线性关系的相对强度。为了研究变量之间更一般的单调关系,我们可以计算Kendall’sτ斯皮尔曼的ρ使用系数相关系数
函数。
使用图论可视化依赖关系
从关联矩阵中直接洞察风险传染是很困难的。应用图论是量化和可视化变量邻近性的有效方法。为了测量接近度,我们使用一个映射将相关系数转换为距离,例如\(f(C) = 1 - C\)或\(f(C) =根号{2(1 - C)}\)
将工业部门分配给网络中的节点,然后通过相关距离给定长度的边将节点连接起来。在[1]和[2]中,作者计算了最小生成树(MST)。MST是一个连接所有节点的子图,其中总边长最小。在这种情况下,我们可以把MST看作是封装扇区之间依赖关系的“骨干”网络。在MATLAB中我们可以使用图
和minspantree
函数直接计算MST:
G = graph(sectorDist, sectors);T = minspantree (G);
在这里,sectorDist
相关距离矩阵是和吗行业
包含扇区名称的单元格数组。
有几个选项可用于可视化生成的MST。最简单的方法是使用图表情节
函数直接在树上执行。提供2D表示[1]的另一种方法是通过Sammon映射对距离矩阵使用非线性多维缩放:
= mdscale(sectorDist, 3, '标准','Sammon');
为了创建一个2D可视化,我们传递得到的欧氏坐标数组坐标
到图
类情节
方法:
情节(T, XData,坐标(:1),YData,坐标(2):,)
当结合一些简单的绘图设置时,这种方法允许我们创建如图1所示的可视化。我们通过创建一个Shepard图来评估图嵌入的质量(图5)。如果分散的点没有从参考线中大量偏离,那么我们就有一个好的嵌入质量。
使用图中心性度量评估部门重要性
用图表表示数据有助于我们量化变量之间的关系。由于数学图本质上提供了节点重要性的度量,我们可以通过计算这些数量来评估扇区的重要性。我们使用中心
方法与图
对象:
incidence =中心性(T, '度');close =中心性(T, 'close ', 'Cost', edgeWeights);between =中心性(T, 'between ', 'Cost', edgeWeights);
的发病率的值计算连接该节点的边数,而的值则计算连接该节点的边数亲密是节点到所有其他节点的距离和的倒数。因此,高接近值意味着该节点是中心的,或重要的。类似地,中间状态度量一个节点出现在图中其他两个节点之间最短路径上的频率。高的中间值意味着节点是重要的。
计算上述MST的这些度量结果如图6所示。我们看到,服务业在各项指标中价值最高。中心服务节点在图1中以红色突出显示。
通过滚动窗口可视化风险传染
上一节描述的分析使用了2008-2013年的完整数据集。在风险模型中,通常采用滚动窗口进行分析,以评估相关变量的动态变化。为了在连续的6个月滚动窗口中实现前面的分析,我们使用a为
循环增加每个窗口的开始日期。
此过程中的图形可以使用VideoWriter
类,显示随着时间的推移高度相关(> 0.80)扇区对的发生率(图7)。
图8显示了中央部门随时间的变化。我们注意到,服务、工业产品和消费品部门在整个时期都非常重要。
用可选距离度量量化依赖关系
虽然相关性很容易解释和计算,但它可能不能完全描述金融变量之间依赖关系的复杂本质。在[5]中,作者使用了基于熵和互信息理论的统计概念的度量。如果\(f_X)是随机变量\(X)的概率密度函数,则\(X)的熵为
\[H_X = - \int f_X(x)\log f_X(x)\mathrm{d}x\]
我们可以把熵看作是变量无序或随机性的量度。高熵表示高度的无序。同样地,如果我们有两个随机变量\(X\)和\(Y\),它们的关节密度\(f_{X,Y}\),那么\(X\)和\(Y\)的互熵为
\ [H_ {X, Y} = - f {X, Y} \ iint日志f (X, Y) \ {X, Y} (X, Y) \ mathrm X \ d {} mathrm {d} Y \]
的互信息内容的\(X\)和\(Y\)定义为
\[i_ {x, y} = h_x + h_y - h_ {x, y}\]
相互信息可以通过公式转换成距离
\[d_{X,Y} = 1 -根号{1 - e^{2I_{X,Y}}}\]
注意,最大距离是1。只有当\(X\)和\(Y\)的互信息内容为零时才会得到这个结果,而只有当\(X\)和\(Y\)是独立的[5]时才会出现这个结果。如果\(X\)和\(Y\)密切相关,则它们的互信息量大,因此距离接近于零。
我们可以在MATLAB中利用统计学和机器学习工具箱函数估计两个随机变量的联合密度ksdensity
.这种技术的优点是避免了对数据的任何分布假设。
假设\(X\)和\(Y\)是两个扇区的返回序列,计算\(H_{X,Y}\)的样本代码如下:
x = linspace(min(x), max(x), 250);y = linspace(min(y), max(y), 250);[Xgrid, Ygrid] = meshgrid(x, y);pts = [Xgrid(:), Ygrid(:)];fXY = ksdensity([X, Y], pts);fXY =重塑(fXY,大小(Xgrid));integrandXY = fXY .* log(fXY);integrandXY (isnan (integrandXY)) = 0;HXY = - trapz(y, trapz(x, integrandXY, 2));
该代码估计了250 × 250晶格上的\(X\)和\(Y\)的关节密度,然后使用trapz
函数执行数值梯形积分。一些南
如果\(f_{X,Y}\)的估计值为零,则在被积函数中出现。在积分之前,我们将这些设为0。
图9显示了前两个部门(基本材料和消费品)的估计联合密度。
我们使用类似的方法估计\(H_X\)和\(H_Y\),然后计算信息距离\(d_{X,Y}\)。估计精细晶格上的关节密度函数是一个耗时的过程,因此我们使用parfor
在并行计算工具箱™中构造,以并行地估计成对距离矩阵,这需要nSector (nSectors-1) / 2
要计算的明显距离。图10显示了使用信息距离度量计算得到的MST。与前面的分析一致,中央部门是服务业,在图10中以红色突出显示。
利用隐马尔可夫模型对风险传染进行建模
当从描述性分析转向建模时,一些作者使用了统计技术,比如隐藏的马尔可夫模型(参见[6])。回到滚动窗口分析,我们将高度相关的行业对数量视为市场风险蔓延水平的基本代表。
为了简单起见,我们假设三个潜在的、无法观察到的风险传染水平,我们称之为“低”、“中”和“高”,构成了一个隐马尔可夫链的状态。我们将马尔可夫链观测到的排放序列取为高度相关的扇区对的数目,其范围从0到28。
图11显示了2008-2013年期间的观测数据。我们看到有几个高传染期,而且高传染似乎以不同的速度消散。下面的图表显示了排放变化的顺序,即从一个窗口到下一个窗口之间高度相关的对的数量差异。
统计和机器学习工具箱提供了一个构建隐马尔可夫模型的框架。为了估计状态和发射转移矩阵,我们使用hmmtrain
函数,提供初始猜测TR
和新兴市场
对于未知矩阵:
[estTR, estEM] =hmmtrain
(排放、TR、EM);
为了检验估计矩阵的鲁棒性,我们可以对排放向量的子集进行交叉验证,以确保算法收敛到相同的矩阵。图12显示了从图11可视化的数据中得到的马尔可夫链。表1显示,保持在相同状态的概率很高,向上或向下一层转换的概率很小,但并非微不足道。在一个步骤中向上或向下过渡两层的可能性可以忽略不计。
状态 | 低 | 媒介 | 高 |
---|---|---|---|
低 | 0.964 | 0.036 | 0.000 |
媒介 | 0.107 | 0.833 | 0.060 |
高 | 0.000 | 0.035 | 0.965 |
表1。马尔可夫链转移概率计算使用hmmtrain
.
的hmmviterbi
函数回顾估计最有可能的状态序列:
states = hmmviterbi(emissions, estTR, estm,…'Statenames', {'Low', 'Medium', 'High'}).';
我们还使用hmmdecode
:
pstates = hmmdecode(emissions, estTR, estEM).'; / /输出
表列的结果提供了对历史时期的市场状况的洞察(图13)。第二列包含来自的输出状态hmmviterbi
,列3-5包含来自的后验状态概率hmmdecode
.类似地,我们通过比较可能的状态和观察到的市场数据来洞察这个模型的有效性(图14)。
总结和下一步
了解系统性风险需要仔细的建模和分析。在本文中,我们实现了量化金融变量之间的接近程度的技术,包括相关性和信息距离。我们已经看到了如何使用图论可视化接近信息。在数据分析的探索阶段,量化和可视化变量之间的关系是很重要的。接下来是建模阶段,我们通过将隐马尔可夫模型拟合到观测数据中,创建了一个简单的风险传染模型。
为了扩展本文中描述的技术,并在我们的分析中包含系统风险的其他方面,我们可以使用其他MATLAB工具箱中提供的高级模型,包括:
- 时间序列和状态空间模型(在计量经济学工具箱™)
- 市场和信用风险模型(在金融工具箱™中)
- 工具定价功能(在金融工具工具箱™中)