最近的金融危机和市场波动期提高了金融分析师对风险传染和系统性风险的认识。因此,金融专业人士通常被要求构建和分析模型,以洞察风险对投资、投资组合和业务运营的潜在影响。
几位作者描述了如何使用先进的数学和统计技术来量化投资、汇率、工业部门或地理区域之间的依赖关系[1]-[7]。弥合正式方法和工作代码实现之间的差距是分析师面临的一个关键挑战。
这篇文章展示了如何使用MATLAB®可用于使用各种数学工具分析风险传染的各个方面。涵盖的主题包括:
- 数据聚合、预处理和风险基准测试
- 量化金融变量之间的依赖关系
- 可视化生成的依赖关系网络以及邻近信息(图1)
- 用隐马尔可夫模型分析风险传染期
下载本文的MatlabLive脚本以交互方式访问所有图像、方程和代码。活动脚本包含本文中的所有代码、输出、方程和图像。您可以下载该脚本,在MATLAB中打开它,并研究本文中描述的分析步骤。
使用MATLAB Live Editor需要R2016a或更高版本。如果没有R2016a,可以下载免费试用版.
了解更多有关MatlabLive编辑器。
数据聚合和预处理
我们首先收集了2008年1月至2013年12月期间来自不同国家的中等市值证券价格。每种证券都有相关的元数据,如市值、工业部门和国家。在本文中,我们将分析不同部门之间的传染,但研究替代类别(例如,原籍国)很容易。我们用标准化的市值来定义单个证券的权重,然后用加权的总和来聚合每个部门的所有证券。结果是基准价格序列,如图2所示。
相关分析
研究变量间相关性最简单的方法之一是计算数据的相关矩阵。使用MATLABplotmatrix
函数和统计和机器学习工具箱™科尔
函数,我们可以创建信息可视化,以指示部门收益序列数据中存在的成对关系。这些图表的示例如图3和图4所示。
图3中的非对角元素表示成对的联合分布,对角线表示直方图上每个变量的边际分布。图4通过说明工业部门回报之间的成对相关系数,量化了图3中显示的成对线性关系的相对强度。为了研究变量之间更一般的单调关系,我们可以计算Kendall’s头还是斯皮尔曼的ρ使用科尔
作用
用图论可视化依赖关系
直接从相关矩阵很难洞察风险传染。应用图论是量化和可视化变量接近度的有效技术。为了测量接近度,我们使用诸如\(f(C)=1-C\)或\(f(C)=sqrt{2(1-C)}之类的映射将相关系数转换为距离
将工业部门分配给网络的节点,然后我们通过相关距离给定长度的边将节点连接起来最小生成树(MST)。MST是一个连接所有节点的子图,其中总边长最小。在这种情况下,我们可以把MST看作是封装扇区之间依赖关系的“骨干”网络。在MATLAB中我们可以使用图表
和明斯潘特里酒店
用于直接计算MST的函数:
G=图形(扇区列表、扇区);T=明斯潘特里(G);
在这里,sectorDist
是相关距离矩阵和部门
包含扇区名称的单元格数组。
可视化生成的MST有几个选项。最简单的方法是使用图形情节
函数直接在树上执行。提供2D表示[1]的另一种方法是通过Sammon映射对距离矩阵使用非线性多维缩放:
coords=mdscale(sectorDist,3,‘标准’、‘Sammon’);
为了创建二维可视化,我们传递生成的欧几里德坐标数组坐标
到图表
班情节
方法:
情节(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年的完整数据集。在风险模型中,通常在滚动窗口中进行分析,以评估感兴趣变量的动态变化。为了在连续六个月的滚动窗口中实施之前的分析,我们使用对于
循环增加每个窗口的开始日期。
此过程中的图形可以使用录像机
类,显示随着时间的推移高度相关(> 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中利用统计学和机器学习工具箱函数估计两个随机变量的联合密度Ks密度
.这种技术的优点是避免了对数据的任何分布假设。
假设\(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=restrape(fXY,size(Xgrid));integrandXY=fXY.*log(fXY);integrandXY(isnan(integrandXY))=0;HXY=-trapz(y,trapz(x,integrandXY,2));
此代码估计250x250晶格上\(X\)和\(Y\)的联合密度,然后使用梯形公式
函数执行数值梯形积分。一些楠
如果\(f{X,Y}\)的估计值为零,则值出现在被积函数中。我们将在积分之前将这些值设置为零。
图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 |
中等的 | 0.107 | 0.833 | 0.060 |
高的 | 0 | 0.035 | 0.965 |
表1。马尔可夫链转移概率计算使用hmmtrain
.
的hmmviterbi
功能回顾性地估计最可能的状态序列:
states = hmmviterbi(emissions, estTR, estm,…'Statenames', {'Low', 'Medium', 'High'}).';
我们还使用HMM编码
:
pstates=hmmdecode(排放量、estTR、estEM)。”;
列表结果提供了对历史时期市场状况的深入了解(图13)hmmviterbi
,第3-5列包含HMM编码
. 同样,我们通过将可能的状态与观察到的市场数据进行比较,从而深入了解该模型的有效性(图14)。
总结和下一步
了解系统性风险需要仔细的建模和分析。在本文中,我们实现了量化金融变量之间的接近程度的技术,包括相关性和信息距离。我们已经看到了如何使用图论可视化接近信息。在数据分析的探索阶段,量化和可视化变量之间的关系是很重要的。接下来是建模阶段,我们通过将隐马尔可夫模型拟合到观测数据中,创建了一个简单的风险传染模型。
为了扩展本文中描述的技术并在我们的分析中包括系统性风险的其他方面,我们可以利用其他MATLAB工具箱中提供的高级模型,包括:
- 时间序列和状态空间模型(在计量经济学工具箱中)™)
- 市场和信用风险模型(金融工具箱中)™)
- 工具定价功能(在金融工具工具箱™中)