寿险精算实验一——编制生命表换算表

一、生命表介绍

       1997年4月1日我国颁布了第一张中国寿险业生命表,即中国人寿保险业经验生命表(1990一1993),差不多10年后,2006年1月1日,《中国人寿保险业经验生命表(2000一2003)》开始施行,简称: C L ( 2000 一 2003 ) CL(2000一2003) CL20002003,再次经过10年,中国保监会开始颁布第三版中国人身保险业经验生命表,命名为《中国人身保险业经验生命表(2010-2013)》,英文名称为“China Life Insurance Mortality Table(2010-2013)”,简称: C L ( 2010 一 2013 ) CL(2010一2013) CL20102013,其中:非养老类业务一表两张,非养老类业务二表两张,养老类业务表两张,分别是:
       1.CL1(2010-2013):非养老类业务一表(男);
       2.CL2(2010-2013):非养老类业务一表(女);
       3.CL3(2010-2013):非养老类业务二表(男);
       4.CL4(2010-2013):非养老类业务二表(女);
       5.CL5(2010-2013):养老类业务表(男);
       6.CL6(2010-2013):养老类业务表(女)。
       根据《中国保监会关于使用《中国人身保险业经验生命表(2010-2013)》有关事项的通知》,保险公司选择适用的生命表时,应按照审慎性原则整体考虑同一产品或产品组合的全部保单:(一)定期寿险、终身寿险、健康保险应采用非养老类业务一表。(二)保险期间内(不含满期)没有生存金给付责任的两全保险或含有生存金给付责任但生存责任较低的两全保险、长寿风险较低的年金保险应采用非养老类业务二表。(三)保险期间内(不含满期)含有生存金给付责任且生存责任较高的两全保险、长寿风险较高的年金保险应采用养老类业务表。
       (四)保险公司应根据产品特征综合分析,按照精算原理和审慎性原则判断生存责任和长寿风险的高低。新生命表政策将于2017年1月1日起实施。

二、编制换算表

2.1基本概念

       换算表将一些计算寿险的保险费、现金价值和准备金时有规律的数值预先编制换算表,从而简化计算,提高效率。换算表有连续换算表和离散换算表,通常包含下述七项:
       ① x x x表示年龄;
       ② D x D_x Dx表示 x x x岁的生存人数与 x x x年贴现因子数值的乘积;
       ③ N x N_x Nx表示从 D x D_x Dx开始,并将以后各年直到 D w ( 终 极 数 ) D_w(终极数) Dw()的数值加总,其中 w w w为极限年龄;
       ④ C x C_x Cx表示 x x x岁的死亡人数与 x + 1 x+1 x+1年贴现因子数值的乘积;
       ⑤ M x M_x Mx表示从 C x C_x Cx开始直到 C w ( 终 极 数 ) C_w(终极数) Cw()的数值加总之和;
       ⑥ R x R_x Rx表示从 M x M_x Mx开始直到 M w ( 终 极 数 ) M_w(终极数) Mw()的数值加总之和;
       ⑦ S x S_x Sx表示从 N x N_x Nx开始直到 N w ( 终 极 数 ) N_w(终极数) Nw()的数值加总之和;
       其中, C x , M x , R x , D x , N x , S x C_x,M_x,R_x,D_x,N_x,S_x CxMxRxDxNxSx称为换算符号或换算函数。
       由 C x , M x , R x C_x,M_x,R_x CxMxRx和年龄 x x x D x , N x , S x D_x,N_x,S_x DxNxSx和年龄 x x x组成的列阵称为换算函数表,简称换算表。
       如果假设死亡在一年中是均匀分布的,连续模型可以用离散模型近似,即定义 C x = v x + 1 2 d x C_x=v^{x+\frac{1}{2}}d_x Cx=vx+21dx

2.2基本公式

        D x = v x l x , C x = v x + 1 2 d x D_x=v^{x}l_x,C_x=v^{x+\frac{1}{2}}d_x Dx=vxlx,Cx=vx+21dx
        M x = ∑ k = 0 w − x C x + k , N x = ∑ k = 0 w − x D x + k M_x=\sum_{k=0}^{w-x} C_{x+k},N_x=\sum_{k=0}^{w-x} D_{x+k} Mx=k=0wxCx+k,Nx=k=0wxDx+k
        R x = ∑ k = 0 w − x M x + k , S x = ∑ k = 0 w − x N x + k R_x=\sum_{k=0}^{w-x} M_{x+k},S_x=\sum_{k=0}^{w-x} N_{x+k} Rx=k=0wxMx+k,Sx=k=0wxNx+k

2.3编制换算函数表

       如果生命表和换算公式已知,且给定利率,那么就可以计算换算表了。
       下面将以非养老类业务一表为例结合Python来进行实战——编制生命表换算表。
       (1)Python环境准备

import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

       (2)数据导入

data = pd.read_excel('LifeTable.xlsx',sheet_name=0)  # 第0个表是非养老类业务一表,第1个表是非养老类业务二表,第2个表是养老类业务表
data

       其中 Q x M QxM QxM表示男性死亡率, Q x F QxF QxF表示女性死亡率
       部分数据如下所示:
在这里插入图片描述
       (3)计算中间变量
       接下来计算中间变量:生存概率 p x p_x px、生存人数 l x l_x lx、死亡人数 d x d_x dx和平均余命 e ˚ x \mathring e_x e˚x
       假设初始人口为10万 l 0 = 100000 l_0=100000 l0=100000,那么有:
        p x = 1 − q x , l x = l x − 1 ⋅ p x − 1 , d x = l x − l x + 1 , e ˚ x = ∑ i = x + 1 w l i l x + 0.5 p_x=1-q_x,l_x=l_{x-1} \cdot p_{x-1},d_x=l_{x}-l_{x+1},\mathring e_x=\frac{\sum_{i=x+1}^{w} l_i}{l_x} +0.5 px=1qxlx=lx1px1dx=lxlx+1e˚x=lxi=x+1wli+0.5

i = 0.025 # 定价利率
v = 1 / (1+i)
w = data['QxM'].count() -1 # 极限年龄
data['PxM'] = 1- data['QxM']   # 计算生存概率
data['PxF'] = 1- data['QxF'] 

############# 计算中间变量
data['lxM'] = None
data['lxF'] = None
data['dxM'] = None
data['dxF'] = None
data['exM'] = None
data['exF'] = None
## 计算生存人数
for k in range(w+1):
    if k == 0:
        data['lxM'][0] = 100000
        data['lxF'][0] = 100000
    else:
        data['lxM'][k] = data['lxM'][k-1] * data['PxM'][k-1]
        data['lxF'][k] = data['lxF'][k-1] * data['PxF'][k-1]
## 计算死亡人数
for k in range(w+1):
    if k < w:
        data['dxM'][k] = data['lxM'][k] - data['lxM'][k+1] 
        data['dxF'][k] = data['lxF'][k] - data['lxF'][k+1] 
    else:
        data['dxM'][k] = data['lxM'][k]
        data['dxF'][k] = data['lxF'][k]
# 计算平均余命
for k in range(w+1):
    if k < w:
        exM =0
        exF =0
        for t in range(k+1,w+1):
            exM = exM + data['lxM'][t]
            exF = exF + data['lxF'][t]
        data['exM'][k] = exM / data['lxM'][k]  + 0.5
        data['exF'][k] = exF / data['lxF'][k]  + 0.5
    else:
        data['exM'][k] = 0.5
        data['exF'][k] = 0.5

       部分数据如下所示:
在这里插入图片描述
       (4)计算换算表其余变量
       假设利率 i = 2.5 i=2.5% i=2.5,那么:
        D x = v x l x = ( 1 + i ) − x l x , C x = v x + 1 2 d x = ( 1 + i ) − ( x + 1 2 ) d x D_x=v^{x}l_x=(1+i)^{-x}l_x,C_x=v^{x+\frac{1}{2}}d_x=(1+i)^{-(x+\frac{1}{2})}d_x Dx=vxlx=(1+i)xlx,Cx=vx+21dx=(1+i)(x+21)dx
       另外, M x , N x , R x , S x M_x,N_x,R_x,S_x Mx,Nx,Rx,Sx都可以根据公式加总得到。

data['DxM'] =  (v ** data['x']) * data['lxM'] # 计算Dx 
data['DxF'] =  (v ** data['x']) * data['lxF']
data['CxM'] =  (v ** (data['x']+0.5)) * data['dxM'] # 计算Cx 
data['CxF'] =  (v ** (data['x']+0.5)) * data['dxF']
# 计算Mx 
data['MxM'] = None
data['MxF'] = None
for k in range(w+1):
    mxM=0
    mxF=0
    for t in range(k,w+1):
        mxM = mxM + data['CxM'][t]
        mxF = mxF + data['CxF'][t]
    data['MxM'][k] = mxM
    data['MxF'][k] = mxF
# 计算Nx 
data['NxM'] = None
data['NxF'] = None
for k in range(w+1):
    nxM=0
    nxF=0
    for t in range(k,w+1):
        nxM = nxM + data['DxM'][t]
        nxF = nxF + data['DxF'][t]
    data['NxM'][k] = nxM
    data['NxF'][k] = nxF
# 计算Rx 
data['RxM'] = None
data['RxF'] = None
for k in range(w+1):
    rxM=0
    rxF=0
    for t in range(k,w+1):
        rxM = rxM + data['MxM'][t]
        rxF = rxF + data['MxF'][t]
    data['RxM'][k] = rxM
    data['RxF'][k] = rxF
# 计算Sx 
data['SxM'] = None
data['SxF'] = None
for k in range(w+1):
    sxM=0
    sxF=0
    for t in range(k,w+1):
        sxM = sxM + data['NxM'][t]
        sxF = sxF + data['NxF'][t]
    data['SxM'][k] = sxM
    data['SxF'][k] = sxF
       
data

       部分数据如下所示:
在这里插入图片描述

三、可视化

       下面将对新生命表死亡率进行可视化展示:
       (1)Python环境与数据准备

import matplotlib.pyplot as plt
dt = pd.read_excel('LifeTable.xlsx',sheet_name=3)  
dt
# 1.CL1(2010-2013):非养老类业务一表(男);
# 2.CL2(2010-2013):非养老类业务一表(女);
# 3.CL3(2010-2013):非养老类业务二表(男);
# 4.CL4(2010-2013):非养老类业务二表(女);
# 5.CL5(2010-2013):养老类业务表(男);
# 6.CL6(2010-2013):养老类业务表(女)。

       (2)绘制散点图

plt.figure(figsize=(10,5))
plt.plot(dt['x'],dt['CL1'],color='red',linewidth=2.0,linestyle='--')
plt.plot(dt['x'],dt['CL2'],color='blue',linewidth=2.0,linestyle='--')
plt.plot(dt['x'],dt['CL3'],color='green',linewidth=2.0,linestyle=':')
plt.plot(dt['x'],dt['CL4'],color='gray',linewidth=2.0,linestyle=':')
plt.plot(dt['x'],dt['CL5'],color='gold',linewidth=2.0,linestyle='-.')
plt.plot(dt['x'],dt['CL6'],color='orange',linewidth=2.0,linestyle='-.')
plt.legend()
plt.show()

在这里插入图片描述
       整体来看,由上图可知,死亡率随着年龄的增加而提高,60岁之前,死亡率变化基本不大,基本在“年龄”轴附近,随后逐渐升高,并且在105岁有个人为的截断,死亡率都变为1。

plt.figure(figsize=(10,10))
plt.plot(dt['x'][0:20],dt['CL1'][0:20],color='red',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][0:20],dt['CL2'][0:20],color='blue',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][0:20],dt['CL3'][0:20],color='darkturquoise',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][0:20],dt['CL4'][0:20],color='darkgreen',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][0:20],dt['CL5'][0:20],color='deeppink',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][0:20],dt['CL6'][0:20],color='orange',linewidth=2.0,linestyle='--')
plt.legend()
plt.show()

在这里插入图片描述
       此外,由上图可知,5-6岁有死亡率拐点,,在此拐点之前,死亡率逐渐下降,随后又开始上升,这是因为婴幼儿不仅对疾病抵抗力较差,而且对于各种意外事故的应对和保护能力不足,导致死亡率相对较高。

plt.figure(figsize=(10,10))
plt.plot(dt['x'][20:50],dt['CL1'][20:50],color='red',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][20:50],dt['CL2'][20:50],color='blue',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][20:50],dt['CL3'][20:50],color='darkturquoise',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][20:50],dt['CL4'][20:50],color='darkgreen',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][20:50],dt['CL5'][20:50],color='deeppink',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][20:50],dt['CL6'][20:50],color='orange',linewidth=2.0,linestyle='--')
plt.legend()
plt.show()
plt.figure(figsize=(10,10))
plt.plot(dt['x'][50:80],dt['CL1'][50:80],color='red',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][50:80],dt['CL2'][50:80],color='blue',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][50:80],dt['CL3'][50:80],color='darkturquoise',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][50:80],dt['CL4'][50:80],color='darkgreen',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][50:80],dt['CL5'][50:80],color='deeppink',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][50:80],dt['CL6'][50:80],color='orange',linewidth=2.0,linestyle='--')
plt.legend()
plt.show()

在这里插入图片描述
在这里插入图片描述
       由上两张图可知,在20-70岁区间,CL2的变化趋势值得关注,可能是该时期女性面临生育、女性特有癌症等风险因素,导致死亡率偏高,但还是低于CL1的死亡率,男同胞们更要关心爱护自己的身体健康呀,烟少抽,酒少喝。。。

plt.figure(figsize=(10,10))
plt.plot(dt['x'][80:105],dt['CL1'][80:105],color='red',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][80:105],dt['CL2'][80:105],color='blue',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][80:105],dt['CL3'][80:105],color='darkturquoise',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][80:105],dt['CL4'][80:105],color='darkgreen',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][80:105],dt['CL5'][80:105],color='deeppink',linewidth=2.0,linestyle='--')
plt.plot(dt['x'][80:105],dt['CL6'][80:105],color='orange',linewidth=2.0,linestyle='--')
plt.legend()
plt.show()

在这里插入图片描述
       根据上图,80-104岁区间内,各个群体的死亡率基本上是上升的,基本上是 C L 1 > C L 3 > C L 2 > C L 5 > C L 4 > C L 6 CL_1>CL_3>CL_2>CL_5>CL_4>CL_6 CL1>CL3>CL2>CL5>CL4>CL6,并且死亡率都比较高,可能是因为人随着年龄的增长,健康状况越来越不乐观,各种慢性疾病发病率增高,治疗难度越来越大,导致死亡率随着年龄的增长越来越高。

参考

[1] 李秀芳 编著:寿险精算实务实验教程[M],中国财政经济出版社2008年版

  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值