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

瑞士再保险公司Tamás Varga


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

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

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

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

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

图1所示。ICAM用户界面。

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

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

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

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

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

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

从桌面到集群再到云

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

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

2017年出版的

查看相关行业文章