技术文章和通讯

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

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


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

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

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

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

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

图1所示。ICAM用户界面。

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

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

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

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

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

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

从桌面到集群再到云

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

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

2017年出版的

查看相关行业的文章