技术文章和通讯

在生产企业应用程序中集成风险分析和建模

作者Tamás瓦尔加,瑞士再保险公司


作为全球第二大再保险公司,瑞士再保险必须考虑全球范围内的一系列风险因素。在过去的10年里,我们使用内部资本充足率模型(ICAM)计算风险度量,如风险价值(VaR)和预期缺口,这是一个用MATLAB建立的核心风险模型®.然而,随着我们多年来继续扩展ICAM的功能,管理复杂性变得越来越困难。众多的相互依赖性使我们很难完全理解模型是如何工作的。

今年,为了使ICAM更容易理解、更新和维护,我们完成了一次重大的检修。我们将改进后的ICAM核心作为生产IT系统——集成风险分析和建模平台(IRAMP)——提供,并通过在计算机集群上执行它们来加速风险建模计算。MATLAB、MATLAB生产服务器™和MATLAB并行服务器™使我们能够实现这两个目标,而不必开发定制的IT基础设施。

应用面向对象编程提高ICAM透明度和可维护性

ICAM的设计目的是使风险报告人员能够了解大约300,000个风险因素对公司总体经济资产负债表的综合影响。类别包括利率、股票价格、房地产价格、信贷息差和索赔膨胀,以及操作风险、自然灾害和死亡率趋势。

在重写ICAM时,我们希望让风险报告人员更容易地看到这些因素如何影响风险度量。我们最有效的改变之一是在编写MATLAB代码时应用更多面向对象的编程原则。今天的ICAM版本有超过75000行MATLAB代码——都在版本控制之下——包括400个数据类和250个风险因素和损失函数类。代码中的图形和对象类使我们能够增加ICAM中用户界面的数量,并以可维护的方式控制它们(图1)。

图1所示。ICAM用户界面。

图1所示。ICAM用户界面。

构建用于风险分析的企业应用程序

从30万个风险因素中计算VaR、预期不足和其他一年期限的风险度量是一个计算密集型过程,涉及到蒙特卡罗模拟,其中每个风险因素产生1,000,000个实现。我们正在使用统计和机器学习工具箱™进行回归、广义线性模型、数据压缩和准备,以及使用从各种分布中抽取的随机样本进行蒙特卡洛模拟。

我们采用了三部分策略来构建企业IT应用程序,以管理此过程所需的漫长计算时间。首先,我们建立了一个计算集群来支持并行计算的并行计算工具箱™和MATLAB并行服务器。其次,我们将过程分解为多个不同的工作流,包括验证、预处理、计算和评估。第三,我们使用MATLAB Production Server建立了一个生产IT框架,风险报告人员可以使用该框架在计算集群上执行多个工作流。

我们维护两个开发和维护ICAM的环境,一个用于生产,另一个用于开发和培训。我们的生产环境中的计算集群包括165个工作人员。我们的开发和培训环境有一个类似的计算集群,有111个工作人员(图2)。在开发和培训环境中验证了我们的ICAM应用程序后,我们使用MATLAB Compiler SDK™将其编译为独立组件,为在生产环境中部署做好准备。

图2。用于开发和生产环境的IRAMP系统体系结构。

图2。用于开发和生产环境的IRAMP系统体系结构。

集群中的工作人员根据需要进行分配,以完成由风险报告人员发起的工作流。每个工作流都是从IRAMP web界面开始的,并由MATLAB生产服务器进行编排。例如,要开始该流程,风险报告程序将启动验证工作流,它验证输入数据在内部是一致的。接下来,他们开始预处理工作流,它将原始输入数据转换为可供风险模型使用的格式。在计算工作流程,所有的蒙特卡罗模拟进行。这个工作流需要最多的工人和最多的时间来完成。结果以快照的形式存储在共享文件系统上一个200gb的文件中。在评估工作流中,风险报告人员使用我们创建的MATLAB应用程序从图像中查询结果并执行假设分析。

从桌面到集群再到云

ICAM的改革和IRAMP的发展受到了风险记者的好评,因为该系统从端到端更加透明。虽然MATLAB提供了一个强大和高效的开发环境,通过使用MATLAB生产服务器和MATLAB并行服务器进行开发和生产环境,我们确保了一致的结果和增加的稳定性在生产中。

我们现在正在与MathWorks工程师合作,将IRAMP系统迁移到一个外部的基于云的系统上,例如Microsoft®Azure®.这将提供一个更大的规模和更灵活的系统,使我们可以通过在需求低的时期缩小规模来降低成本,并通过在需求高的时期扩大规模来减少等待时间。

2017年出版的

查看相关行业文章

Baidu
map