3. 数据基础
非寿险定价的精度,首先取决于数据基础是否扎实。费率表不是凭空推导出来的,它来自保单、赔案、暴露单位、外部因子等多源数据的清洗、对齐与结构化。本章围绕数据来源、保单与赔案数据结构、数据质量检查、缺失值与异常值处理、数据字典构建五个环节,建立一套可复用的数据准备流程。
一、核心原理:定价数据的四类来源
非寿险定价常用的数据来源可分为四类,它们承担不同角色:
- 保单数据(Policy):记录承保标的、保额、费率因子、保费、起止日期,是风险暴露的载体。
- 赔案数据(Claim):记录出险时间、报案时间、赔付金额、准备金、险别,是损失强度的直接来源。
- 暴露数据(Exposure):如车险的车辆年、工程险的工期月,用于把赔案频率标准化。
- 外部数据(External):车型编码、地区风险等级、行业分类、气象与地理信息,用于补充风险因子。
四类数据通过保单号、标的号、险别代码、时间区间四个关键字段关联。定价建模的最小分析单元通常是“保单—险别—暴露期”三元组,而不是单张保单。
二、保单与赔案数据结构
保单表通常为“一保单多险别”的宽表或长表结构,赔案表为“一赔案多赔付项”的明细结构。下表给出典型字段清单:
| 数据表 | 关键字段 | 用途 |
|---|---|---|
| 保单主表 | 保单号、投保人、起保日期、终保日期、保费 | 暴露期切分、保费汇总 |
| 保单险别表 | 保单号、险别代码、保额、费率因子 | 险别维度建模 |
| 赔案主表 | 赔案号、保单号、出险日期、报案日期、状态 | 关联保单、计算延迟 |
| 赔付明细表 | 赔案号、赔付项、赔付金额、准备金 | 损失强度、已发生赔款 |
| 暴露表 | 标的号、险别、暴露单位、起止日期 | 频率分母 |
建模前需将保单按会计年度或事故年度切分为暴露期片段,使每个片段只对应一个风险期间。赔案则按事故年度归集,避免承保年度与事故年度混淆。
三、数据质量检查与缺失值、异常值处理
数据质量检查应形成固定清单,建议至少覆盖以下维度:
- 完整性:关键字段缺失率,如保单号、起保日期、赔案金额。
- 一致性:赔案出险日期是否落在保单有效期内,保费是否等于保额乘费率。
- 唯一性:保单号、赔案号是否重复。
- 时效性:报案延迟、结案延迟是否在合理区间。
- 值域:年龄、车龄、保额是否在业务允许范围内。
缺失值处理需区分机制:完全随机缺失可直接删除或均值填充;与风险相关的缺失(如高风险客户不填职业)应单独设“缺失”类别,保留信息。异常值处理优先使用业务规则而非纯统计规则,例如赔付金额超过保额、车龄为负、暴露期为负,均应标记并回溯原始凭证。
-- 数据质量检查示例
SELECT policy_no,
COUNT(*) AS cnt
FROM policy
GROUP BY policy_no
HAVING COUNT(*) > 1; -- 重复保单
SELECT claim_no, paid_amount
FROM claim
WHERE paid_amount < 0
OR paid_amount > policy_limit; -- 异常赔付
四、数据字典构建与场景复盘
数据字典是定价团队与IT、精算、业务之间的契约。每个字段应记录:字段名、中文名、类型、取值范围、业务定义、来源系统、更新频率、负责人。数据字典不是一次性文档,而应随费率因子迭代同步维护。
以一个车险定价项目为例:初期直接使用原始保单表建模,发现“车龄”字段存在大量空值,且部分车辆车龄与首次登记日期矛盾。复盘后采取三项措施:一是用首次登记日期重新计算车龄;二是将无法计算车龄的记录单独标记为“未知车龄”类别;三是把车龄缺失率纳入数据质量看板。调整后,模型在未知车龄组的预测偏差明显下降。
完成本章的数据准备后,团队应能回答三个问题:数据来自哪里、每个字段代表什么、哪些记录不可直接用于建模。只有把数据基础打牢,后续的费率因子选择、模型拟合与费率表生成才有可靠前提。