3. 生命表结构解析

生命表是寿险精算的“底层数据字典”。它把一群同质风险个体从某个年龄开始,逐年记录“还有多少人活着、当年会死多少人、死亡概率多大、平均还能活多久”。理解生命表,关键不是背公式,而是看懂每一列之间的递推关系,以及这些列在定价、准备金和风险评估中各自承担什么角色。

一、核心原理:从存活人数到死亡概率的递推链

生命表通常以10万人或100万人作为初始基数,记为 l₀。每一列都由前一列推导而来,形成一条严密的递推链:

  • lₓ(存活人数):到达年龄x时仍存活的人数,是生命表的“主列”。
  • dₓ(死亡人数):年龄x到x+1岁之间死亡的人数,满足 dₓ = lₓ − lₓ₊₁。
  • qₓ(死亡率):x岁个体在一年内死亡的概率,qₓ = dₓ / lₓ。
  • pₓ(生存率):x岁个体活到x+1岁的概率,pₓ = 1 − qₓ。
  • Lₓ(生存人年数):x岁到x+1岁之间平均存活的人年数,常用 Lₓ ≈ (lₓ + lₓ₊₁)/2。
  • Tₓ(累计生存人年数):从x岁起未来所有生存人年数之和,Tₓ = ΣLₓ。
  • eₓ(平均余命):x岁个体平均还能活的年数,eₓ = Tₓ / lₓ。

这条链条的核心逻辑是:存活人数决定死亡人数,死亡人数决定死亡概率,死亡概率再反推生存人年数和平均余命。任何一列出现偏差,都会沿链条向下游传导。

生命表列间递推关系示意 lₓ 存活人数 dₓ 死亡人数 qₓ 死亡概率 pₓ 生存概率 相减 相除 1−qₓ Lₓ 生存人年数 Tₓ 累计生存人年 eₓ 平均余命 近似 累加 核心递推公式: dₓ = lₓ − lₓ₊₁ | qₓ = dₓ / lₓ | pₓ = 1 − qₓ | Lₓ ≈ (lₓ + lₓ₊₁)/2 | Tₓ = ΣLₓ | eₓ = Tₓ / lₓ

二、编制原理与方法流程

生命表的编制并非简单统计,而是一套从原始数据到精算假设的完整流程。实务中通常分为以下步骤:

  1. 数据采集与清洗:收集被保险人群的承保、理赔、退保、失效等数据,剔除重复、缺失和异常记录。
  2. 暴露数计算:按年龄、性别、保单年度等维度计算风险暴露数,常用“年初人数+年末人数)/2”或精确到日的暴露量。
  3. 粗死亡率计算:用死亡人数除以暴露数,得到各年龄的原始死亡率。
  4. 修匀与平滑:由于高龄段数据稀疏,需用Gompertz、Makeham、Lee-Carter等模型或样条修匀,消除随机波动。
  5. 参数调整与安全边际:根据经验、趋势和监管要求,对死亡率进行保守调整,形成定价用或评估用生命表。
  6. 表列生成与校验:从 l₀ 出发递推生成全部列,并校验 e₀ 等指标是否合理。
实务提示:修匀不是“美化数据”,而是让死亡率随年龄呈现合理的光滑趋势。过度修匀会掩盖真实风险,修匀不足则导致保费波动过大。

三、生命表的分类与典型应用场景

不同业务目的需要不同生命表。常见分类如下:

分类维度 类型 主要用途
按性别 男性表、女性表、男女混合表 女性死亡率通常低于男性,定价需区分
按用途 定价生命表、评估生命表、经验生命表 定价偏保守,评估偏当前最优估计
按人群 国民生命表、寿险经验表、年金表 国民表反映整体人口,经验表反映被保险人群
按时间 静态表、动态表(含死亡率改善因子) 动态表用于长寿风险管理和准备金评估
按选择效应 选择表、终极表 选择表反映承保后初期死亡率偏低的现象

在寿险中,生命表的应用贯穿产品全生命周期:定价阶段用 qₓ 计算净保费;准备金评估用 lₓ 和 eₓ 计算未来给付现值;核保与风险选择用选择表判断不同风险等级;再保险安排用生命表评估分出保费和自留风险;长寿风险证券化则依赖动态生命表预测未来死亡率改善趋势。

四、常见误区与复盘要点

误区一:把国民生命表直接用于寿险定价。国民表覆盖全体人口,而被保险人群通常经过核保筛选,死亡率低于国民表。直接套用会导致定价偏高、产品失去竞争力。
误区二:忽视选择效应和终极表。刚承保的保单在前几年死亡率明显偏低,若只用终极表,会高估早期死亡成本。正确做法是使用选择-终极表,按保单年度区分。
误区三:用静态表评估长期寿险。死亡率随医疗进步逐年改善,静态表会高估未来死亡给付,导致准备金虚高。长期业务应使用含改善因子的动态表。

复盘时,建议重点检查三件事:一是 lₓ 是否单调递减且最终归零;二是 qₓ 曲线是否在婴幼儿期和老年期呈现合理的“U型”或“J型”;三是 eₓ 是否与行业经验值偏差过大。任何一项异常,都应回到暴露数和修匀环节排查。

# 生命表核心列校验示例(伪代码)
for age in range(0, max_age):
    assert l[age] >= l[age+1], "存活人数必须单调递减"
    assert abs(d[age] - (l[age] - l[age+1])) < 1e-6, "死亡人数递推错误"
    assert abs(q[age] - d[age]/l[age]) < 1e-6, "死亡率计算错误"
    assert 0 <= q[age] <= 1, "死亡率超出合理范围"
print("生命表列间一致性校验通过")

掌握生命表结构,本质上是掌握寿险精算的“语言”。每一列都不是孤立数字,而是风险在时间轴上的投影。只有理解列与列之间的递推逻辑,才能在定价、评估和风险管理中做出可靠判断。