技术文章及通讯

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

作者Tamás Varga,瑞士再保险公司


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

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

应用面向对象程序设计提高ICAM的透明性和可维护性

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

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

图1所示。ICAM用户界面。

图1所示。ICAM用户界面。

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

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

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

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

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

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

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

从桌面到集群再到云

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

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

2017年出版的

查看相关行业的文章