技术文章和通讯

巴塞尔协议II合规与风险管理分析:计算经济资本

马可·福尔默斯(Marco Folpmers),凯捷集团(Capgemini)


经济资本(EC)是一个组织必须留出以抵消潜在损失的资本量,是许多欧洲银行和金融机构的关键指标。这也是新巴塞尔协议监管框架第二支柱的核心要求。尽管凯捷及其许多客户将EC视为投资组合固有风险的最佳衡量标准,但计算EC并不是一项简单的分析工作。例如,在某一特定行业中权重较大的投资组合会带来大量的风险集中风险,使EC分析复杂化。

利用MATLAB®在美国,凯捷开发了一种计算EC的方法,将投资组合的集中度考虑在内。这个过程包括四个主要步骤:

  • 收集投入,包括投资组合中的个人贷款信息
  • 预处理的数据
  • 运行蒙特卡罗模拟来估计投资组合损失
  • 展示结果

我们选择MATLAB是因为它的基于矩阵的基础设施是组织我们处理的各种数据和应用于这些数据的操作的理想的基础设施,包括计算EC所需的线性代数操作。在对EC和其他类型的风险建模时,在MATLAB中执行蒙特卡罗模拟的能力给了我们另一个关键优势。

收集投入

在计算贷款组合的EC之前,我们必须为组合中的每一笔贷款确定一些标准风险参数。这些参数,包括默认概率(PD)和给定默认损失(LGD),通常在我们的客户已经使用的数据库中提供巴塞尔二世合规。为了能够计算集中风险,每笔贷款还必须分配给一个部门——例如,公用事业、能源或汽车部门。

我们的客户将这些信息存储在数据仓库和来自不同供应商的数据库中。我们使用数据库工具箱™ 从任何符合ODBC/JDBC的数据库和数据仓库(如Teradata)将信息导入MATLABxlsread ()在将数据导入MATLAB后,我们通过计算缺失值和识别异常值来清理数据。

计算相关矩阵和默认阈值

由于相关性风险会计是新巴塞尔协议的一项关键要求,我们必须计算反映欧洲宏观经济部门联系方式的相关性矩阵。基于来自多个数据源(包括彭博社和道琼斯斯托克)的所有这些行业的股票回报信息,我们计算了行业之间的相关性,并将其存储在矩阵中(图1)。该矩阵用于蒙特卡罗模拟,将行业信息纳入每笔贷款的违约可能性。

图1.18个欧洲超级镜头的相关矩阵。点击图片查看放大图。

我们的信用风险模型基于默顿模型,其中债务人(贷款客户)在模拟产生的资产回报低于Z-违约阈值时违约。Z-违约被定义为PD的正常反向,这确保从长远来看,债务人违约次数与PD预测的次数相同。

运行蒙特卡罗模拟

我们对多达一百万个不同场景的投资组合进行蒙特卡罗模拟。对于每个场景(或迭代),我们执行以下操作:

  • 确定哪些贷款违约
  • 估计每笔违约贷款的损失
  • 合计个人贷款违约数,得出投资组合损失

为了识别投资组合中的违约贷款,为每一笔贷款确定一个标准的正态分布随机数。这个数字取决于对应于其部门的一个随机数,该部门的所有贷款都使用这个随机数,以及为每笔贷款分别抽取的一个特殊随机数。这样,债务人所属部门的健康状况将影响该债务人是否违约。

我们使用统计和机器学习工具箱™为每个扇区生成随机数mvnrnd()函数。这些数字是从考虑行业间相关性(如相关矩阵中所述)的多元正态分布中提取的。正态分布的使用不是一种约束。有时,如果客户想要提高模型中尾部依赖(资产回报的极端结果之间的依赖)的水平,就会使用一个多元t分布(t copula)。

我们通过基于LGD的beta分布抽样来估计违约贷款的损失。例如,如果一笔贷款的LGD是15%,我们设置了分布的α和β参数,这样单个违约损失可能在0%到100%之间,但从长期来看结果将是15%。

每个迭代的最后一步是将投资组合中所有贷款的损失相加,并将结果存储在损失向量中。当所有迭代完成时,损失向量保存投资组合的损失分布。为了计算预期损失(EL)和EC,我们使用两个简单的MATLAB函数:

EL=平均值(损失);EC=prctile(损失,99.95)–EL;

上述示例使用99.95计算ECth百分位,保护银行免受99.95%可能发生的损失所需的资本量。百分位可以根据银行的目标信用评级而变化。由于预期损失也可以通过分析计算得出,因此它是验证计算的理想统计数据。蒙特卡罗预期的一致性d损失和分析预期损失是我们例程中的标准检查点。

展示结果

我们使用信用损失向量的MATLAB直方图对结果进行验证并向客户展示(图2)。

图2。样本投资组合的统计损失分布。点击图像查看放大视图。

直方图描述了违约相关性的水平,使我们能够快速识别违规行为。如果相关性较高,直方图往往集中在分布的左端(低损失)和右端(高损失)。如果相关性很低,直方图往往是沉重的中间分布。

根据客户的需要,我们使用MATLAB生成分析报告、将结果写入电子表格或将其保存在数据库中。在大多数情况下,我们提供了MATLAB源代码,以便客户可以看到模型的工作原理,并对其进行修改,以便将来进行计算。

我们的许多客户都是MATLAB用户。对于那些不是,我们使用MATLAB编译器™ 构建一个具有图形用户界面的独立应用程序,使他们能够在不安装MATLAB的情况下运行复杂的分析和仿真。

优化性能

当运行需要几十万次迭代的蒙特卡罗模拟时,任何加速单个迭代的步骤都会显著减少模拟时间。只要可能,我们就使用内置的MATLAB函数,这些函数通常比我们自己开发的要快得多。我们还利用MATLAB向量和矩阵运算,寻找将计算移到模拟迭代之外并消除嵌套循环的机会。例如,我们的许多客户发现将EC分配给每个债务人很有用。对每个债务人使用新的模拟是低效的,因此我们将其作为主EC回路的可选计算。然后,我们可以只在需要时分配EC,并在不需要时加快总体EC的计算。

代码优化的另一个例子是借助于语句,而不是使用在模拟循环执行期间增长的向量。

建议将EC分配到贷款级别,以便明确每笔贷款产生的风险。为了风险管理的目的,可以图形化地显示结果。例如,在图3中,我们将每笔贷款绘制为两个轴上的圆圈(“o”):贷款规模(或违约风险敞口)和风险规模(或EC贡献除以贷款规模)。

图3.贷款层面的风险分析。点击图片查看放大视图。

传统的风险管理关注的是监控大额贷款。这是x轴表示的透视。在捐款的帮助下,可以在y轴上增加第二个视角:每笔贷款所承担的风险。

用于风险建模的通用环境

我们使用MATLAB对许多其他风险类型进行建模。例如,我们在银行账簿中对利率风险进行建模(另一项新巴塞尔协议支柱2要求),以确定银行对利率不利变动的风险敞口。在这里,我们使用t copula代替多元正态分布,并使用mvtrnd ().

我们看到,评级机构和银行对结构性信贷产品(如债务抵押债券和抵押贷款支持证券)模型的需求正在增加。下载188bet金宝搏MATLAB帮助我们构建和模拟特别细粒度的模型,这些模型考虑了参考组合中的每一个工具。

出版于2010年- 91809v00

查看相关功能的文章

查看相关行业的文章