跳至主要内容

Prophet建模技术(3):Calculation Looping

在第一篇Prophet建模技术的文章中(谈关于使用枚举(enumerations)的技术),我在一些例子中提到了CALC_LOOP这个与Calculation Looping(循环计算)”技术的程式。后来我发现到并不是所有 Prophet 用户都熟悉这个技术——毕竟这不是每个 Prophet 模型都会使用的技术。

今天,我们就来更深入地看看什么是循环计算、它是如何运作的,以及为什么它会如此实用——尤其是在同一次运行中需要处理不同假设组合的时候。


什么是 Prophet 中的循环?

广义来说,循环(Looping)是 Prophet重要的计算技术,而当中常见的循环计算技术为以下三种:

  • Calculation Looping
  • Rebasing
  • Dynamic Run

然而,循环计算是当中最容易理解和使用的技术。简单来说,循环计算是让Prophet重复运算所有的变量(variables)特定的次数(通过NUM_CLCLOOPS定义)。它的运作方式如下:

  • 在每一次循环中,变量 CALC_LOOP(即循环计数器)会自动更新——从 1 开始,并随着每次循环递增。
  • 如果你希望保留某一次循环中的变量结果,避免在下一次循环时被覆盖,可以使用 NO_CALC 函数。(需要与IF...THEN...ELSE...并用)

一般上,我们都会将NUM_CLCLOOPS定义为Global的变量。通常我们都会要所有的保单数据都采用作相同数量的循环计算。


为什么要使用循环计算?

循环计算最大的优势,在于它允许你在同一次运行中,重复利用同一组变量来处理不同用途——例如应用不同组合的假设(assumptions)。举个例子,假设你使用 Gross Premium Valuation(“GPV”)方法计算储备金(reservers)。借助循环计算,你可以重复使用同一组变量——例如保费、费用、理赔、退保等变量——来计算:

  • Best Estimate Reserves
  • Statutory Reserves
  • 计算RBC所需要的Capital Reserves

这意味着,你不需要为了不同情景而复制多套变量,也不需要为了处理不同准备金基础而将所有变量改成array variables。


降低错误风险与文件大小

这种方法也有助于提高一致性。在 GPV 方法下,你的估值情景与预测情景本来就应该使用相同的变量逻辑。通过在同一个地方运行所有情景,你可以降低不同情景之间出现逻辑差异的风险。

此外,还有一个额外好处:使用循环计算的 Prophet 模型,通常会生成较小的结果文件。

这是因为 Prophet 默认只会保存最后一次循环的结果——除非你特别利用 CALC_LOOP 和 NO_CALC 来保留中间循环的结果。


相关文章:

  1. Prophet建模技术(1):Enumerations
  2. Prophet建模技术(2):新保单预测
  3. Prophet建模技术(3):Calculation Looping





评论