精算基础设施336 个方法

精算算法

财产险、人身险、风险与资本、数据科学定价的方法库。每个方法都对过标准答案,改一个参数就当场重算。

对过的标准答案
963 条
覆盖的考试公式
422 / 422
开源库
8 个

01考试大纲覆盖表

对照考试大纲,覆盖多少一数便知

按 SOA、CAS、IFoA 的 13 门考试整理公式条目。每一格是平台有的公式数和大纲里的公式数。

考试大纲覆盖表:行是方法族,列是考试,格子里是平台有的公式数和大纲里的公式数。方向键在格子之间移动。
方法族方法SOACASIFoA公式
FAMALTAMASTAMSRMPA5MAS-IMAS-IICM1CM2CS1CS2SP8
财产险精算122 个方法
10大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考17/17
11大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考6/6
6大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考6/6
11大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考12/12
24大纲不考大纲不考大纲不考大纲不考大纲不考31/31
6大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考8/8
22大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考27/27
18大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考18/18
11大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考13/13
3大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考—
人身险精算85 个方法
19大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考48/48
5大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考12/12
9大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考18/18
11大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考13/13
7大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考19/19
4大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考9/9
9大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考14/14
4大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考6/6
10大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考13/13
7大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考—
风险与资本68 个方法
8大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考4/4
7大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考9/9
4大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考—
2大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考—
9大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考4/4
3大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考5/5
13大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考16/16
15大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考20/20
7大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考8/8
数据科学定价61 个方法
22大纲不考大纲不考大纲不考大纲不考大纲不考36/36
2大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考—
3大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考—
4大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考—
3大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考—
4大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考—
10大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考11/11
13大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考19/19
死亡率的深度学习建设中大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考大纲不考—
合计336100/10047/4767/6750/5023/2349/49103/10337/3796/9642/4262/6289/8935/35422/422

公式条目按 28 份精算考试公式表整理,编号和中文名是平台自己的。格子里的数字是:方法目录里通过测试的方法声明覆盖的公式数 / 这个考试大纲里这个方法族的公式数。 点一格看这一格的公式和方法。

02方法清单

每个方法,都对过标准答案

教材的例题和独立的手算是测试的答案。测试没有通过的方法不上线,也不计数。

↓ 进入结果

符合条件的方法 6 个

03当场运行

每个领域,挑几个当场算

下面的数都是这个页面刚刚算出来的。改一个参数,停一下,结果就会重算。

财产险精算

损失分布、保障调整、总损失、信度、费率厘定、准备金评估、再保险。122 个方法

选一个损失分布和参数,它的密度、矩、分位数、有限期望值和平均超额损失各是多少?

公式、标准答案和代码

输入

Cauchy 的尺度、逆高斯的形状也用 θ

0100,000 万
0.011,000
元

范围 -100,000 万元 到 100,000 万元

4 个数 · 元

最小 100最大 1,000均值 462.5

1–20 个数,每个在 0.000001–100 亿 之间。一行一个,可以直接粘贴一列。

当前选项用不到的 8 个参数已隐藏,换了选项会显示出来。

没有用数据:按输入的参数计算

按输入的参数计算:Pareto 分布(两参数,Lomax)(α = 3, θ = 200)

输出

用时 855 毫秒 · 缓存 · 11/14 21:02 运行

期望 E[X]
100元
方差 Var(X)
3 万元²
标准差
173.205元
变异系数 CV
1.73205
偏度 γ₁
—
超额峰度 γ₂
—
中位数
51.9842元
95% 分位数 VaR
342.884元
99% 分位数 VaR
728.318元
TVaR 99%
1,192.48元
密度 f(100)
0.00296296
分布函数 F(100)
0.703704
生存函数 S(100)
0.296296
危险率 h(100)
0.01
累积危险率 H(100)
1.2164
正的矩存在到几阶(上界)
3
密度 f(x) 和生存函数 S(x)
  • 密度 f(x)
  • 生存函数 S(x)

纵轴:S(x);密度按最大值缩放到 1

  • scipy 写法:scipy.stats.lomax(c=3, scale=200)。
  • 教材的两参数 Pareto 是 scipy 的 lomax,不是 scipy.stats.pareto(单参数)。
  • 正的原点矩只存在到 3 阶以下(k < 3)。阶数越低,尾部越重。
结果的表格3 张

有限期望值和平均超额损失lev4 行 · 6 列

结果表 有限期望值和平均超额损失
上限 u(元)E[X∧u](元)E[(X∧u)²]S(u)E[X∧u]/E[X]平均超额损失 e(u)(元)
10055.55564,444.440.2962960.555556150
25080.246912,345.680.08779150.802469225
50091.836720,408.160.02332360.918367350
1,00097.222227,777.780.004629630.972222600

各阶原点矩moments5 行 · 3 列

结果表 各阶原点矩
阶数 k原点矩 E[X^k]是否存在
-1—不存在(无穷大)
1100存在
240,000存在
3—不存在(无穷大)
4—不存在(无穷大)

分位数(VaR)和 TVaRquantiles7 行 · 3 列

结果表 分位数(VaR)和 TVaR
概率 p分位数 VaR_p(元)TVaR_p(元)
0.551.9842177.976
0.75117.48276.22
0.9230.887446.33
0.95342.884614.325
0.99728.3181,192.48
0.995969.6071,554.41
0.9991,8002,800
运行的代码Python 19 行855 毫秒 · 缓存
import jsonfrom wi_actuarial.methods.distributions import exploreresult = explore.explore(    dist="pareto",    theta=200,    alpha=3,    tau=2,    gamma=2,    mu=4,    sigma=1,    a=2,    b=3,    alpha1=2,    alpha2=3,    x=100,    limits=[100, 250, 500, 1000],)print(json.dumps(result, ensure_ascii=False))

开源库scipy1.17.1· BSDnumpy2.4.6· BSD-3-Clause

在智能体里这样问“选一个损失分布和参数,它的密度、矩、分位数、有限期望值和平均超额损失各是多少?”

人身险精算

利息理论、生命表、寿险和年金、保费和准备金、多状态模型、利润测试、死亡率。85 个方法

一个人在这个年龄买终身寿险、年金或定期寿险,纯保费是多少?

公式、标准答案和代码

输入

岁
0 岁100 岁
年
1 年50 年
元
1,000 元10,000 万元
%
0%8%

真实数据

《中国人身保险业经验生命表(2025)》(中国精算师协会,金规〔2025〕21号)

insured-life-mortality-2025

输出

用时 334 毫秒 · 缓存 · 11/14 21:02 运行

期初付终身年金 ä
28.5029
终身寿险 A
0.304807
20 年定期寿险的年缴纯保费
122.533元
平均余命(整年)
49.0657年
第四套 非养老类业务一表(男):30 岁的 10 万人还活着多少

纵轴:人

  • 年末给付死亡保险金,保费年初缴纳。
  • 固定利率时用 pyliferisk 再算一遍,最大差 3.55e-15。
结果的表格1 张

精算现值和 pyliferisk 校验values7 行 · 3 列

结果表 精算现值和 pyliferisk 校验
项目平台计算pyliferisk 校验
期初付终身年金 ä_x28.502928.5029
终身寿险 A_x(每元保额)0.3048070.304807
20 年定期寿险 A¹_x:n(每元保额)0.0194220.019422
20 年期初付年金 ä_x:n15.850415.8504
20 年纯生存(每元)nEx0.593982—
保额 100000 元的 20 年定期寿险年缴纯保费122.533—
平均余命(整年)49.0657—
运行的代码Python 12 行334 毫秒 · 缓存
import jsonfrom wi_actuarial import liferesult = life.table_values(    table="2025-CL2-M",    age=30,    term=20,    sum_insured=100000,    curve="flat",    interest=0.025,)print(json.dumps(result, ensure_ascii=False))

开源库pyliferisk1.13.0· GPL-3.0-or-laternumpy2.4.6· BSD-3-Clause

在智能体里这样问“用第四套经验生命表的非养老类业务一表和重大疾病经验发生率表 CI3,30 岁男性、20 年重疾险、保额 30 万元,按 2.5% 的利率算年缴纯保费。”

风险与资本

风险度量、极值理论、相依与 Copula、巨灾模型、模拟、破产理论、金融数学。68 个方法

  • 巨灾模型现在能运行 4 个模块的简化测算,危险性用平台的真实数据。
  • 完整的巨灾模型建设中(OasisLMF)。
  • 易损性:演示参数,待校准。

损失服从某个分布时,99% 置信水平的 VaR 是多少?超过它的损失平均有多大(TVaR、ES)?

公式、标准答案和代码

输入

正态的均值,对数正态的 ln 尺度均值

范围 -100 万 到 10,000 万

正态的标准差,对数正态的 ln 尺度标准差

0.0011,000 万
0.50.9999

当前选项用不到的 2 个参数已隐藏,换了选项会显示出来。

没有用数据:按输入的参数计算

按输入的参数计算:对数正态分布 LN(μ = 7, σ = 1)

输出

用时 820 毫秒 · 缓存 · 11/14 21:02 运行

期望损失 E[X]
1,808.04元
标准差
2,370.04元
VaR(p = 0.99)
1.123 万元
TVaR / ES(p = 0.99)
1.67 万元
TVaR ÷ VaR
1.48704
VaR − 期望(非预期损失)
9,422元
置信水平和 VaR、TVaR
  • VaR
  • TVaR

纵轴:金额(元)

结果的表格1 张

各置信水平的 VaR 和 TVaRlevels8 行 · 4 列

结果表 各置信水平的 VaR 和 TVaR
置信水平 p相当于几年一遇VaR(元)TVaR(元)
0.521,096.633,042.37
0.7542,152.724,538.93
0.9103,950.327,035.88
0.95205,680.849,384.14
0.975407,785.0812,188.86
0.9910011,230.0416,699.49
0.99520014,412.1820,804.27
0.9991,00024,106.3933,084.41
运行的代码Python 12 行820 毫秒 · 缓存
import jsonfrom wi_actuarial.methods.risk_measures import var_tvarresult = var_tvar.var_tvar(    dist="lognormal",    mu=7,    sigma=1,    alpha=3,    theta=1000,    p=0.99,)print(json.dumps(result, ensure_ascii=False))

开源库scipy1.17.1· BSDnumpy2.4.6· BSD-3-Clause

在智能体里这样问“损失服从某个分布时,99% 置信水平的 VaR 是多少?超过它的损失平均有多大(TVaR、ES)?”

数据科学定价

广义线性模型、加性模型、提升树、神经网络、可解释性、模型评估、时间序列。61 个方法

页面上的费率只是参考费率区间,最终价格由核保人员决定。

每个风险因子让费率高多少、低多少?

公式、标准答案和代码

输入

模型的目标
风险因子至少选 1 个

纯保费模型

1.11.9

演示数据,不是真实数据

平台的演示数据:健康险保单 100000 张和它们的理赔案件(已结案和审核中)。数据是合成的,出险和保单特征之间没有设计好的关系

health-policyhealth-claim

输出

用时 4.7 秒 · 缓存 · 11/14 21:02 运行

基准水平的纯保费
2,057.33元 / 年
相对数的范围(最小)
0.956497倍
相对数的范围(最大)
1.05308倍
显著(p < 0.05)的水平
2个
提升图:按预测值分 10 组
  • 实际
  • 预测

纵轴:纯保费(元 / 年)

  • 相对数 = exp(系数)。基准水平是每个因子里风险暴露最多的水平,相对数为 1。
  • 置信区间不包含 1 的水平,和基准水平的差别在统计上显著。
  • 相对数是方法的演示,不是费率。只能给出参考费率区间,最终价格由核保人员决定。
结果的表格3 张

模型的拟合fit7 行 · 2 列

结果表 模型的拟合
项目值
模型Tweedie GLM(方差幂 1.5),对数链接,权重 = 风险暴露
行数100,000
偏差16,510,733.49
零模型偏差16,515,841.16
离散参数222.994
AIC—
对数似然(tweedie 库)-412,287.8

提升图的分组lift10 行 · 4 列

结果表 提升图的分组
组风险暴露实际预测
19,677.221,934.081,955.34
29,652.22,032.81,997.94
39,624.22,054.342,022.91
49,642.712,000.92,042.77
59,620.332,069.932,060.88
69,609.92,093.072,078.96
79,612.542,080.572,099.62
89,563.352,104.142,119.36
99,602.162,148.072,145.76
109,603.072,210.172,204.52

各因子水平的相对数relativities17 行 · 7 列

结果表 各因子水平的相对数
因子水平相对数95% 下限95% 上限p 值风险暴露(年)
性别女1.016610.9885671.045450.24837348,084.57
性别男1———48,123.09
年龄段30-39岁0.9960260.9532471.040720.8588917,134.9
年龄段30岁以下0.9705150.931491.011170.15292422,313.33
年龄段40-49岁0.9564970.9152030.9996540.048232817,161.83
年龄段50-59岁1.009430.966191.05460.67445217,188.87
年龄段60岁以上1———22,408.74
险种住院医疗险1.053081.00381.104780.034412416,231.78
险种团体医疗险1.01120.9635861.061170.6507816,142.04
险种意外医疗险0.9936840.9466691.043030.79778215,970.13
险种百万医疗险1.010710.9629481.060850.66619715,911.52
险种重大疾病险1———16,267.17
险种门急诊医疗险0.9826130.9358481.031710.48079315,685.02
销售渠道个人代理1.01560.9762531.056530.44260123,976.15
销售渠道互联网1.020470.9809731.061550.31436824,021.43
销售渠道团险直销1———24,157.35
销售渠道银保0.9807540.9426241.020430.33678924,052.72
运行的代码Python 9 行4.7 秒 · 缓存
import jsonfrom wi_actuarial import ratingresult = rating.glm_relativities(    target="pure_premium",    factors=["gender", "age_band", "product_type", "channel"],    var_power=1.5,)print(json.dumps(result, ensure_ascii=False))

开源库statsmodels0.15.0· BSD-3-Clausetweedie0.0.9· BSDpandas3.1.1· BSD-3-Clause

在智能体里这样问“用平台的健康险演示数据,按性别和年龄段做一个纯保费的广义线性模型,给出费率相对数。”

04运行环境

用的都是开源的精算工具

所有方法在同一个运行环境里执行:Python 3.11.2,方法库 wi_actuarial 1.1.0。智能体在对话里调用的也是这些库。

运行环境里的开源库、版本、许可和用途
库版本许可在平台上用来做什么
chainladder0.10.1MPL-2.0准备金评估:链梯法、BF 法、Mack 法
aggregate0.30.0BSD-3-Clause损失建模:用快速傅里叶变换算总损失分布
statsmodels0.15.0BSD-3-Clause费率厘定:广义线性模型
tweedie0.0.9BSD费率厘定:Tweedie 分布的密度和似然
pyliferisk1.13.0GPL-3.0-or-later人身险精算:生命表和换算函数(用来校验)
scipy1.17.1BSD分布拟合、统计检验
numpy2.4.6BSD-3-Clause数值计算
pandas3.1.1BSD-3-Clause表格数据