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

  • 一、生命表介绍
  • 二、编制换算表
    • 2.1基本概念
    • 2.2基本公式
    • 2.3编制换算函数表
  • 三、可视化
  • 参考

一、生命表介绍

1997年4月1日我国颁布了第一张中国寿险业生命表,即中国人寿保险业经验生命表(1990一1993),差不多10年后,2006年1月1日,《中国人寿保险业经验生命表(2000一2003)》开始施行,简称:CL(2000一2003)CL(2000一2003)CL(2000一2003),再次经过10年,中国保监会开始颁布第三版中国人身保险业经验生命表,命名为《中国人身保险业经验生命表(2010-2013)》,英文名称为“China Life Insurance Mortality Table(2010-2013)”,简称:CL(2010一2013)CL(2010一2013)CL(2010一2013),其中:非养老类业务一表两张,非养老类业务二表两张,养老类业务表两张,分别是:
       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基本概念

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

2.2基本公式

Dx=vxlx,Cx=vx+12dxD_x=v^{x}l_x,C_x=v^{x+\frac{1}{2}}d_xDx​=vxlx​,Cx​=vx+21​dx​
       Mx=∑k=0w−xCx+k,Nx=∑k=0w−xDx+kM_x=\sum_{k=0}^{w-x} C_{x+k},N_x=\sum_{k=0}^{w-x} D_{x+k}Mx​=k=0∑w−x​Cx+k​,Nx​=k=0∑w−x​Dx+k​
       Rx=∑k=0w−xMx+k,Sx=∑k=0w−xNx+kR_x=\sum_{k=0}^{w-x} M_{x+k},S_x=\sum_{k=0}^{w-x} N_{x+k}Rx​=k=0∑w−x​Mx+k​,Sx​=k=0∑w−x​Nx+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

其中QxMQxMQxM表示男性死亡率,QxFQxFQxF表示女性死亡率
       部分数据如下所示:

       (3)计算中间变量
       接下来计算中间变量:生存概率pxp_xpx​、生存人数lxl_xlx​、死亡人数dxd_xdx​和平均余命e˚x\mathring e_xe˚x​。
       假设初始人口为10万l0=100000l_0=100000l0​=100000,那么有:
       px=1−qx,lx=lx−1⋅px−1,dx=lx−lx+1,e˚x=∑i=x+1wlilx+0.5p_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.5px​=1−qx​,lx​=lx−1​⋅px−1​,dx​=lx​−lx+1​,e˚x​=lx​∑i=x+1w​li​​+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] = 100000data['lxF'][0] = 100000else: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 =0exF =0for 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.5data['exF'][k] = exF / data['lxF'][k]  + 0.5else:data['exM'][k] = 0.5data['exF'][k] = 0.5

部分数据如下所示:

       (4)计算换算表其余变量
       假设利率i=2.5i=2.5%i=2.5,那么:
       Dx=vxlx=(1+i)−xlx,Cx=vx+12dx=(1+i)−(x+12)dxD_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_xDx​=vxlx​=(1+i)−xlx​,Cx​=vx+21​dx​=(1+i)−(x+21​)dx​
       另外,Mx,Nx,Rx,SxM_x,N_x,R_x,S_xMx​,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=0mxF=0for t in range(k,w+1):mxM = mxM + data['CxM'][t]mxF = mxF + data['CxF'][t]data['MxM'][k] = mxMdata['MxF'][k] = mxF
# 计算Nx
data['NxM'] = None
data['NxF'] = None
for k in range(w+1):nxM=0nxF=0for t in range(k,w+1):nxM = nxM + data['DxM'][t]nxF = nxF + data['DxF'][t]data['NxM'][k] = nxMdata['NxF'][k] = nxF
# 计算Rx
data['RxM'] = None
data['RxF'] = None
for k in range(w+1):rxM=0rxF=0for t in range(k,w+1):rxM = rxM + data['MxM'][t]rxF = rxF + data['MxF'][t]data['RxM'][k] = rxMdata['RxF'][k] = rxF
# 计算Sx
data['SxM'] = None
data['SxF'] = None
for k in range(w+1):sxM=0sxF=0for t in range(k,w+1):sxM = sxM + data['NxM'][t]sxF = sxF + data['NxF'][t]data['SxM'][k] = sxMdata['SxF'][k] = sxFdata

部分数据如下所示:

三、可视化

下面将对新生命表死亡率进行可视化展示:
       (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岁区间内,各个群体的死亡率基本上是上升的,基本上是CL1>CL3>CL2>CL5>CL4>CL6CL_1>CL_3>CL_2>CL_5>CL_4>CL_6CL1​>CL3​>CL2​>CL5​>CL4​>CL6​,并且死亡率都比较高,可能是因为人随着年龄的增长,健康状况越来越不乐观,各种慢性疾病发病率增高,治疗难度越来越大,导致死亡率随着年龄的增长越来越高。

参考

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

寿险精算实验一——编制生命表换算表相关推荐

  1. java数据结构实验一顺序表,java数据结构实验代码之升序顺序表

    java数据结构实验代码之升序顺序表 数据结构实验报告 学院:管理学院 班级:13电子商务(1)班 姓名:廖秋君 学号:3213004779 2014年 10月 23 日 目录 一.需求分析----- ...

  2. 狗狗的年龄的python编程_狗狗与人年龄换算表,终于知道狗狗多大了!

    原标题:狗狗与人年龄换算表,终于知道狗狗多大了! 狗狗的寿命只有短短的十几年,很多人都很好奇狗狗的年龄到底是人类年龄的几岁呢?那么狗狗的年龄与人类的年龄是怎么换算的呢?今天小编带你一起了解一下吧. 那 ...

  3. 鞋长度和欧美的标准宽度换算表

    鞋长度和欧美的标准宽度 换算表,有些商家有游标卡尺可以量的: 足长与足围(足最宽处周长)宽度的换算表 : 下载 (176.05 KB) 鞋长度和欧美的标准宽度换算表 2007-11-12 22:59 ...

  4. sql小数转换为百分数_这么齐全的数学单位换算表?寒假赶紧存下为孩子考试助力!...

    今天为大家分享这份小学数学常用公式大全(单位换算表),替孩子收藏一份,提高数学成绩! 长度单位换算 1千米=1000米1米=10分米 1分米=10厘米1米=100厘米 1厘米=10毫米 面积单位换算 ...

  5. 长度单位换算python_长度单位换算表-在线长度单位转换器

    长度单位换算表-在线长度单位转换器 公里(kilometre) 米(metre) 分米(decimeter) 厘米(centimeter) 毫米(millimeter) 微米(micrometer) ...

  6. 实验报告微型计算机拆卸顺序表,顺序表的操作实验报告馒头制作.doc

    顺序表的操作实验报告馒头制作 实验二 顺序表的操作实验报告 班 级10计科2学号20104012010姓名翁朝伟实验名称顺序表的操作实验目的掌握线性表的顺序存储结构的基本概念.基本操作和应用实验环境硬 ...

  7. 基于普中科技的单片机开发实验仪编写的数字表

    基于普中科技的单片机开发实验仪编写的数字表 1.项目简单说明 一.显示日期,对ds1302芯片进行计时所得的日期用数码管进行显示: 二.显示温度,对18B20芯片测量所得的温度用数码管进行显示: 三. ...

  8. 常用px, pt, em 换算表

    常用px,pt,em换算表 pt (point,磅):是一个物理长度单位,指的是72分之一英寸. px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理 ...

  9. 数据结构实验1《基于线性表的图书管理系统》

    数据结构实验1<基于线性表的图书管理系统> (visual studio 2019可运行) 输入及输出要求见<数据结构C语言(第二版)>严蔚敏版 [本文仅用于啥都看不懂还想交作 ...

  10. 数据库系统概论 实验报告答案 实验五:数据库单表查询

    实验五:数据库单表查询 一.实验目的 1. 掌握SELECT语句的基本语法和查询条件表示方法: 2. 掌握查询条件表达式和使用方法: 3. 掌握GROUP BY 子句的作用和使用方法: 4. 掌握HA ...

最新文章

  1. 在多变环境中长期定位和建图的通用框架
  2. 详细!快速入门指南!Docker!
  3. 2021-01-16交叉熵损失函数比均方误差损失函数优点在哪里
  4. 【活动报名 | 青源Talk第4期】沈华伟:图神经网络及其应用
  5. 工具类HttpServerUtility
  6. MSC Apex 2020中文版
  7. GET和POST的真正区别
  8. 2005年度国产空间信息系统软件测评工作圆满结束
  9. rust笔记5结构体
  10. Azure China (5) 管理Azure China Powershell
  11. Ajax核心:XMLHTTP组件相关技术资料
  12. 微博舆情挖掘需求分析
  13. mysql使用命令行导入sql脚本 报错无法插入中文
  14. JavaScript数组属性和方法
  15. python读取批量txt文件
  16. Linux网络环境配置 虚拟机网络环境配置
  17. npm与cnpm详解
  18. 整合Visual C++和WDK7:Step by step
  19. 使用vue做一个“淘宝“项目(删除原有代码)
  20. xnetoe toe(tcp offload engine)测试方案与结果

热门文章

  1. 计算机会说,计算机会有意识吗?你以为就我们才有吗~
  2. 苯酚吸附专用树脂 污水中的苯酚怎么去除
  3. 批量将一个 PDF 文件按固定页数拆分成多个小的 PDF 文件
  4. 设计一个高性能三维渲染服务器,最强大脑-CATIA飞机协同设计制造工作站配置方案2016...
  5. Ubuntu安装摄像头驱动
  6. 国际象棋渲染测试软件,国际象棋与Cinebench渲染
  7. U盘数据恢复工具哪个好?
  8. 第一次模拟考试总结反思
  9. JAVA 开发规范
  10. 云端服务器怎么修改密码,云端服务器怎么设置登录密码