3. 数据基础与三角形构建
Chain Ladder与BF方法的全部计算都建立在同一个基础之上:赔款三角形。三角形不是一张简单的报表,而是把"事故年"与"进展年"两个维度交叉后形成的结构化数据矩阵。如果三角形构建错误,后续的因子选择、尾部外推、BF先验设定都会系统性偏离。本章聚焦数据准备阶段,讲清楚累计与增量两种口径、事故年与进展年的定义、数据清洗要点、异常值识别方法以及口径统一原则。
一、核心原理:两个维度与两种口径
赔款三角形的行是事故年(Accident Year, AY),即损失发生的年度;列是进展年(Development Year, DY),即从事故年起到评估时点经过的年数。第i行第j列的单元格C(i,j)表示事故年i在进展年j末的累计已付(或已发生)赔款。对角线上的数据来自同一评估日,因此三角形天然呈现"右上角缺失"的形状。
累计赔款三角形满足单调不减性:C(i,j) ≥ C(i,j-1)。增量赔款三角形则是相邻累计值之差:I(i,j) = C(i,j) − C(i,j-1)。两者信息等价,但用途不同——Chain Ladder因子基于累计值计算,而BF方法中的期望赔付率与报告模式往往需要增量结构来分配。实务中建议同时维护两套口径,并保证二者可相互校验。
二、方法流程:从原始数据到可用三角形
- 确定评估日与口径:明确是已付赔款(Paid)、已发生赔款(Incurred)还是已报案赔款(Reported),三者不可混用。
- 按事故年与进展年分组:以事故发生日期归属事故年,以支付日期与事故年之差确定进展年。
- 数据清洗:剔除重复记录、负值、跨期错配、币种不一致的记录。
- 异常值识别:通过进展因子序列、链梯比率、同比波动筛查异常单元格。
- 口径统一:统一再保前/后、直接/间接、含税/不含税、免赔额处理方式。
- 构建累计与增量三角形:输出标准矩阵并做交叉校验。
三、案例场景:一次典型的数据清洗
假设某财险公司车险业务提供2020—2024年已付赔款明细,评估日为2024年12月31日。清洗过程中发现以下问题:
| 问题类型 | 具体表现 | 处理方式 |
|---|---|---|
| 重复记录 | 同一赔案号出现两次,金额相同 | 按赔案号去重,保留最新状态 |
| 负值赔款 | 追偿回收导致已付为负 | 与原始赔付合并,净额入表 |
| 事故年错配 | 报案日期跨年,事故日期归属上一年 | 以事故日期为准重新归属 |
| 币种混用 | 部分案件以美元支付 | 按评估日汇率统一折算为人民币 |
| 大额异常 | 某事故年DY1金额突增3倍 | 核查是否为巨灾或单笔大案,单独标注 |
清洗完成后,用以下伪代码校验累计与增量的一致性:
# 累计三角形转增量三角形
for i in range(n_rows):
for j in range(1, n_cols):
incremental[i][j] = cumulative[i][j] - cumulative[i][j-1]
incremental[i][0] = cumulative[i][0]
# 校验:增量逐期累加应还原累计
for i in range(n_rows):
running = 0
for j in range(n_cols):
running += incremental[i][j]
assert abs(running - cumulative[i][j]) < 1e-6
四、误区与复盘
异常值识别可借助链梯比率法:计算每个单元格的个体进展因子,与同列中位数比较,偏离超过阈值(如3倍标准差)的标记为可疑。对于可疑单元格,不应直接删除,而应追溯原始赔案,判断是真实业务波动还是数据错误。若是真实巨灾,应在模型中单独处理或使用稳健因子估计。
口径统一是数据基础的最后一道关口。再保前与再保后、直接业务与分入业务、含税与不含税、免赔额是否扣除,这些选择必须在三角形构建前明确并贯穿始终。建议在数据字典中固化口径定义,并在每次更新数据时执行自动化校验脚本,确保累计三角形单调不减、增量非负(除追偿外)、对角线日期一致。只有数据基础扎实,Chain Ladder与BF的后续计算才具备可信度。