Project Record
Reinsurance Model Run Observability
Operational dashboard and lineage layer for multi-model reinsurance runs on Tyche—tracking outputs, runtime, treaty KPIs, and parameter sensitivity.
Context
As actuarial analyst on a reinsurance desk, I supported five to six treaty, reserving, and exposure models that batch-ran on Tyche, a leading actuarial software platform. Stakeholders needed a single view of what each run produced, how long it took, and whether outputs were consistent across models—not a rewrite of the pricing engines, but operational intelligence on top of them.
Problem
Model outputs landed as opaque directory trees with no unified lineage. Run duration, CPU use, and cross-model agreement were invisible until someone manually backtracked files. When treaty parameters changed—retention, quota share, attachment, or limit—there was no fast way to compare before/after performance or spot which model diverged.
Architecture
- Ingest: PowerShell scanners on Windows compute nodes walk Tyche output paths; parallel fan-out by model folder and treaty year.
- Parse: Python normalizes run metadata, file manifests (row counts, checksums, header schemas), and resource telemetry into an indexed store.
- Visualize: Refreshable dashboards show runtime percentiles, CPU/memory use, file-dependency graphs, and actuarial KPI overlays.
Reinsurance Metrics Overlay
Treaty KPIs are derived from model outputs, not re-implemented pricing logic:
- Ceded loss ratio: — compare across runs and models.
- Net retention: — sanity check on treaty structure.
- XL utilization: — attachment and limit stress.
- Geographic ceded exposure: choropleth by region and line of business layered on the ops view.
Parameter Sensitivity and Cross-Model Comparison
One-at-a-time sensitivity on treaty parameters :
where is ceded premium, net loss ratio, or runtime. Tornado charts rank drivers; Monte Carlo sweeps perturb within actuarially plausible ranges and report mean and p5/p95 of net loss ratio and ceded premium—using cached outputs or scaling factors where models are linear in quota share, and full reruns where they are not.
Cross-model agreement uses normalized distance on shared dimensions (LOB, region, treaty year):
Pairs above tolerance surface for review, analogous to reconciliation breaks on actuarial metrics rather than positions.
Speed and Refresh Techniques
- Incremental indexing: watermark on
mtimeand path; scan only new or changed outputs since last refresh. - Content-hash deduplication: skip re-parsing identical artifacts across reruns.
- Dependency-aware refresh: run DAG; if upstream manifest is unchanged, skip downstream KPI recompute.
- Metadata-first parsing: lightweight manifests before heavy actuarial file reads.
- Pre-aggregated rollups: nightly snapshots of per-run KPIs so dashboards query summaries, not raw outputs.
- Selective tile refresh: ops metrics, geo map, and sensitivity panels refresh independently.
Full-tree scans dropped from tens of minutes to sub-minute incremental refresh on typical daily batches.
Trade-offs
KPI aggregation is heuristic and model-version dependent. The sensitivity layer supports what-if exploration, not full stochastic reserving. Tyche path conventions require maintenance when model versions or folder layouts change. The dashboards accelerate diagnosis and treaty oversight but do not replace actuarial sign-off on model methodology.