1. 寿险保费计算基础
任务说明
本案例用一张简化生命表与预定利率,计算 3 年期定期寿险的净保费(只覆盖死亡赔付),再叠加费用附加与利润附加,得到毛保费。核心公式:
- 净保费现值 = Σ(每年死亡概率 × 保额 × 折现因子)
- 毛保费 = 净保费 / (1 − 费用附加率 − 利润附加率)
计算流程
完整代码
def net_premium(qx_list, sum_assured, i):
"""计算定期寿险净保费(趸缴)。
qx_list: 各年死亡概率,如 [q0, q1, q2]
sum_assured: 保额
i: 预定利率
"""
v = 1 / (1 + i)
pv = 0.0
for t, q in enumerate(qx_list, start=1):
pv += q * sum_assured * (v ** t)
return pv
def gross_premium(net, expense_rate, profit_rate):
"""净保费加费用附加与利润附加得到毛保费。"""
loading = expense_rate + profit_rate
if loading >= 1:
raise ValueError("附加率之和必须小于1")
return net / (1 - loading)
if __name__ == "__main__":
# 简化生命表:3年期,各年死亡概率
qx = [0.01, 0.015, 0.02]
SA = 100000 # 保额
i = 0.03 # 预定利率 3%
expense = 0.10 # 费用附加 10%
profit = 0.05 # 利润附加 5%
net = net_premium(qx, SA, i)
gross = gross_premium(net, expense, profit)
print(f"净保费 = {net:.2f}")
print(f"毛保费 = {gross:.2f}")
运行与验证
直接运行脚本:python premium.py。程序会打印净保费与毛保费。
判定标准:
- 净保费应等于 0.01×100000/1.03 + 0.015×100000/1.03² + 0.02×100000/1.03³ ≈ 4245.66
- 毛保费 = 净保费 / (1 − 0.10 − 0.05) = 净保费 / 0.85 ≈ 4994.89
- 若把
expense + profit调到 ≥1,应抛出ValueError,验证边界保护生效。
可自行修改 qx、i 或附加率,观察保费变化是否符合预期方向(利率升高净保费下降,附加率升高毛保费上升)。