用生命表计算纯保费
目标
使用生命表和预定利率亲自计算定期寿险的净保费,在此基础上加上附加保费得到营业保费,再通过具体数字确认预定利率变化会使保费变动多少。
为什么重要
保费并不是“公司规定的数值”,而是依据三项假设计算出来的:死亡或受伤的概率有多大(风险率)、运用所收资金能获得多少收益(预定利率),以及销售和维持合同需要多少成本(费用)。这三项分别称为预定风险率、预定利率和预定费用率;保险产品系统中的产品定义,归根结底就是这三项假设构成的表。
净保费只由前两项假设得出。从生命表中读取在何时、以多大概率需要支付多少保险金额,再按预定利率折现为现值,得到趸缴净保费。将其分摊为“被保险人生存期间每年缴纳的金额”,就得到年缴净保费。在此基础上加上费用,便是客户实际缴纳的营业保费。
理解这一结构后,就能听懂业务现场的说法。“预定利率降低 0.25 个百分点会使保费上涨”,是指折现率降低导致现值增大;“该产品的附加保费占比较高”,是指费用假设较大。在产品系统中,如果保费相差 1 韩元,答案就在于哪项假设在哪一步采用了怎样的舍入方式。
本实验的规则
- 生命表包含 30~80 岁的
qx,且l30 = 100000。l(x+1) = l(x) × (1 − q(x)),d(x) = l(x) × q(x)。后续计算持续使用未经舍入的lx,文件中则保留到小数点后两位。 - 假设死亡发生在年末。n 年期定期寿险的趸缴净保费率(每 1 韩元保险金额)为
A = Σ(t=0..n−1) v^(t+1) × d(x+t) ÷ l(x),v = 1 ÷ (1 + i)。 - 期初付年金现值为
ä = Σ(t=0..n−1) v^t × l(x+t) ÷ l(x)。年缴净保费 = 保险金额 × A ÷ ä,不足 1 韩元四舍五入。月缴金额为年缴金额 ÷ 12 后四舍五入(本实验的简化规则)。 - 第 3、4 步的文件中
A、ä写到小数点后六位,但第 3 步的nsp以及第 5–7 步的计算要使用未经舍入的A、ä。如果重新读取文件中的六位小数值再相除,结果会相差几韩元,而评分精确到 1 韩元。 - 营业保费为
G = (P + α × S ÷ ä) ÷ (1 − β − γ)。P为年缴净保费,S为保险金额;α为新契约费用率,β为维持费用率,γ为收款费用率,这些参数均位于params.csv中。不足 1 韩元四舍五入。 - 比率保留到小数点后六位。
步骤
- 将右侧示例中的生成器保存为
/root/ins/make_premium.py,并运行python3 make_premium.py。将生成lifetable.csv(51 行)、params.csv和quotes.csv(5 份报价)。 - 在
/root/ins/lx.csv中以age,qx,lx,dx为表头,写入 30~80 岁共 51 行数据。 - 将 5 份报价的趸缴净保费写入
/root/ins/nsp.csv,表头为quote_id,age,term,sum_assured,nsp_rate,nsp。nsp_rate为 A,nsp为保险金额 × A(未经舍入的值)后对不足 1 韩元的部分四舍五入的值。 - 将 5 份报价的期初付年金现值写入
/root/ins/annuity.csv,表头为quote_id,annuity_due。 - 将年缴、月缴净保费写入
/root/ins/net_premium.csv,表头为quote_id,net_annual,net_monthly。A、ä不使用文件中的六位小数值,而是用未经舍入的值相除。 - 将营业保费写入
/root/ins/gross_premium.csv,表头为quote_id,net_annual,loading,gross_annual,gross_monthly。loading等于营业保费减去净保费。 - 分别按 1.5%、2.5% 和 3.5% 的预定利率计算
Q1的年缴净保费,并在/root/ins/sensitivity.txt中写入四行:net_at_1.5=,net_at_2.5=,net_at_3.5=,delta_pct=。delta_pct表示 1.5% 利率下的保费比 3.5% 利率下的保费高出百分之多少,保留到小数点后一位。 - 在
/root/ins/quote_report.md中撰写报价说明书,包含## Premium Breakdown(保费构成)、## Calculation Basis(计算依据)、## Interest Rate Sensitivity(预定利率敏感性)、## Limitations(局限与注意事项)四个章节。章节标题用英文标题或意思相同的韩文、日文、中文标题均可,也可以把两者用括号并写。
参考
- 将第 2 步生成表格的逻辑封装成函数后,第 3~7 步都可以使用该函数。请用字典保存
lx。 - Python 的
round()会把 .5 舍入到相邻的偶数。对不足 1 韩元的数值四舍五入时,请使用int(x + 0.5)。 - 常见错误 1:把死亡给付的折现指数写成
t。由于假设在年末死亡,应使用t+1。 - 常见错误 2:使用
lx舍入到小数点后两位的结果计算下一年。只在写入文件时舍入。 - 常见错误 3:按净保费的一定百分比直接加上附加保费。维持费用和收款费用是营业保费的比例,因此需要通过除法反求。
生成生命表和报价请求
将右侧示例中的生成器保存为 /root/ins/make_premium.py,并运行 python3 make_premium.py。将生成 lifetable.csv(51 行)、params.csv 和 quotes.csv(5 份报价)。
请将实验说明中的生成器保存为 /root/ins/make_premium.py,并使用 python3 运行。如果手工修改,后续步骤中的所有数字都会出现偏差。
根据死亡率计算生存人数
在 /root/ins/lx.csv 中以 age,qx,lx,dx 为表头,写入 30~80 岁共 51 行数据。
从 l30 = 100000 开始,按 l(x+1) = l(x) × (1 − q(x))、d(x) = l(x) × q(x) 计算。计算过程持续使用浮点数,只在写入文件时使用 %.2f。
计算趸缴净保费
将 5 份报价的趸缴净保费写入 /root/ins/nsp.csv,表头为 quote_id,age,term,sum_assured,nsp_rate,nsp。nsp_rate 为 A,nsp 为保险金额 × A(未经舍入的值)后对不足 1 韩元的部分四舍五入的值。
A = Σ(t=0..n−1) v^(t+1) × l(x+t) × q(x+t) ÷ l(x), v = 1/1.025。由于假设在年末死亡,指数为 t+1。nsp = int(S × A + 0.5)。
计算分期缴纳保费时的价值
将 5 份报价的期初付年金现值写入 /root/ins/annuity.csv,表头为 quote_id,annuity_due。
ä = Σ(t=0..n−1) v^t × l(x+t) ÷ l(x)。由于是期初付,首项为 v^0 = 1。
计算年缴、月缴净保费
将年缴、月缴净保费写入 /root/ins/net_premium.csv,表头为 quote_id,net_annual,net_monthly。A、ä 不使用文件中的六位小数值,而是用未经舍入的值相除。
net_annual = int(S × A ÷ ä + 0.5), net_monthly = int(net_annual ÷ 12 + 0.5)。计算除法时请使用浮点数值,而不是文件中保留六位小数的值。
加上费用得到营业保费
将营业保费写入 /root/ins/gross_premium.csv,表头为 quote_id,net_annual,loading,gross_annual,gross_monthly。loading 等于营业保费减去净保费。
G = (P + 0.01 × S ÷ ä) ÷ (1 − 0.05 − 0.03),不足 1 韩元四舍五入。P 直接使用第 5 步中已经四舍五入的年缴净保费,loading = G − P。
改变预定利率并观察保费变化
分别按 1.5%、2.5% 和 3.5% 的预定利率计算 Q1 的年缴净保费,并在 /root/ins/sensitivity.txt 中写入四行:net_at_1.5=, net_at_2.5=, net_at_3.5=, delta_pct=。delta_pct 表示 1.5% 利率下的保费比 3.5% 利率下的保费高出百分之多少,保留到小数点后一位。
将第 5 步的计算分别以 i = 0.015、0.025、0.035 运行三次。delta_pct = (net_1.5 − net_3.5) ÷ net_3.5 × 100,并使用 %.1f 格式。
撰写报价说明书
在 /root/ins/quote_report.md 中撰写报价说明书,包含 ## Premium Breakdown(保费构成)、## Calculation Basis(计算依据)、## Interest Rate Sensitivity(预定利率敏感性)、## Limitations(局限与注意事项)四个章节。章节标题用英文标题或意思相同的韩文、日文、中文标题均可,也可以把两者用括号并写。
四个章节标题须与英文标题或意思相同的韩文、日文、中文标题一致。在保费构成(Premium Breakdown)章节中写入 Q1 的营业保费(gross premium)、净保费(net premium)和附加保费(loading);在计算依据(Calculation Basis)章节中写入 2.5% 的预定利率(assumed interest rate);在敏感性(Sensitivity)章节中以数字写入 delta_pct。