4. 版本管理入门

在精算建模工作中,模型文件往往不是“一次写完就结束”的交付物,而是随着经验数据更新、监管口径调整、再保安排变化而持续演进的资产。参数假设、死亡率表、退保率曲线、贴现率、情景设定、准备金评估逻辑,都会在不同版本之间发生细微但关键的变化。版本管理正是用来回答三个问题:改了什么、谁改的、为什么改,并保证任何历史状态都能被准确复现。

一、核心原理:版本管理不是“多存几个文件”

版本管理的本质是对文件集合随时间变化进行可追溯、可比较、可回退的受控记录。它把每一次有意义的修改固化为一个“提交”,并形成有向无环的版本历史。与“模型_v1.xlsx、模型_v2_最终版.xlsx、模型_v2_最终版_真的最终.xlsx”这类命名法相比,版本管理具备四个关键能力:

  • 快照与差异:每个版本保存完整状态,同时能精确显示行级、参数级差异。
  • 分支与合并:不同假设方案可并行开发,再合并回主线。
  • 追溯与审计:提交信息、作者、时间戳构成审计线索。
  • 回退与复现:可检出任意历史版本,重跑结果并比对。
版本管理的核心对象不是“文件”,而是“变更”。文件只是变更的载体;真正被管理的是假设、参数、逻辑和结论的演化过程。

二、常用工具:Git 与 SVN 的定位差异

精算团队常见的版本管理工具分为集中式与分布式两类。SVN 是集中式代表,所有历史存放在中央服务器;Git 是分布式代表,每个克隆都是完整仓库。二者并非简单的新旧替代关系,选择取决于团队协作模式、文件类型和合规要求。

对比维度 Git SVN
架构模式 分布式,本地含完整历史 集中式,依赖中央服务器
分支成本 极低,鼓励频繁分支 较高,通常按目录复制
离线能力 可离线提交、查看历史 离线操作受限
大二进制文件 需 Git LFS,否则仓库膨胀 相对友好,可增量存储
权限粒度 通常仓库级,细粒度需平台支持 可到目录/文件级
精算适用场景 代码、脚本、配置、文本化假设 历史遗留 Excel、集中管控环境

典型 Git 操作流程如下,精算人员至少应掌握检出、提交、分支、合并与查看差异:

# 克隆模型仓库
git clone https://git.example.com/actuary/reserving-model.git

# 创建假设调整分支
git checkout -b assumption/mortality-2024-update

# 修改参数文件后查看差异
git diff params/mortality.csv

# 提交并推送
git add params/mortality.csv
git commit -m "更新2024版死亡率表,来源:监管口径调整"
git push origin assumption/mortality-2024-update
若模型主体是 Excel,建议将关键假设抽离为 CSV、YAML 或 JSON 文本文件纳入 Git;Excel 本身可用 Git LFS 管理,但应避免频繁提交大二进制文件。

三、方法流程:从“改参数”到“可复现”

版本管理在精算工作中的落地,不是装一个工具就结束,而是形成一套可执行流程。建议按以下步骤建立规范:

  1. 确定纳管范围:模型代码、参数文件、假设文档、运行配置必须纳管;临时输出、日志、缓存不纳管。
  2. 约定分支策略:主线保持可运行,假设调整走特性分支,监管报送版本打标签。
  3. 规范提交信息:说明“改了什么假设、依据什么、影响哪些评估口径”。
  4. 建立评审机制:关键假设变更需第二人复核,合并前查看差异。
  5. 版本与结果绑定:每次正式评估记录提交哈希、参数版本和运行环境。

其中“版本与结果绑定”是精算审计的关键。仅保存结果文件而不记录对应代码与参数版本,等于无法复现。推荐在评估报告中写入类似标识:

评估批次:2024Q2-准备金
代码提交:a3f9c21
参数版本:mortality-2024.1 / lapse-2024.0
运行环境:Python 3.11 + 内部精算库 2.4.0
执行时间:2024-07-15 09:30

四、案例与场景:一次退保率假设调整

某寿险公司更新退保率假设,涉及三条产品线。若采用传统文件命名法,可能出现“退保率_新_最终_审核后.xlsx”多个副本,评估人员无法确认哪份被用于最终报告。引入 Git 后,流程变为:

  • 从主线创建分支 assumption/lapse-2024Q3;
  • 修改 lapse_curve.csv,提交信息注明数据来源与精算师意见;
  • 发起合并请求,复核人查看差异并确认影响范围;
  • 合并后打标签 v2024.3-lapse,用于季度评估;
  • 若监管要求回退,直接检出上一标签重跑。

整个过程可审计、可比较、可回退,且不依赖个人电脑上的文件副本。

五、误区与复盘

常见误区一:把版本管理当成“备份”。备份只保留最新副本,版本管理保留完整演化历史与差异。误区二:提交信息写“更新”“修改”。这类信息在审计时几乎无效。误区三:所有文件都塞进仓库,包括临时输出和大型二进制,导致仓库臃肿、协作变慢。

复盘建议:每季度检查一次仓库健康度,包括提交信息质量、分支是否及时清理、大文件是否误入、标签是否与正式报告对应。版本管理不是 IT 部门的专属工作,而是精算模型治理的基础设施。掌握它,意味着每一次假设调整都有据可查,每一个历史结论都能被重新验证。

精算模型版本演化与结果复现 主线 main 初始模型 v1.0 死亡率更新 v2024.1 退保率调整 v2024.3 监管报送 v2024.4 假设方案A 假设方案B tag v2024.4 复现标识:提交哈希 + 参数版本 + 运行环境 任意历史节点均可检出、重跑、比对,形成可审计的模型演化链