Skip to content

Commit 9942e3a

Browse files
spec: add heatmap-loss-triangle specification (#4602)
## New Specification: `heatmap-loss-triangle` Related to #4581 --- ### specification.md # heatmap-loss-triangle: Actuarial Loss Development Triangle ## Description A triangular matrix visualization showing cumulative insurance claim payments developing over time. Rows represent accident/origin years, columns represent development periods (e.g., 1-10 years), with the upper-left triangle displaying actual observed cumulative claims and the lower-right triangle showing projected/estimated values (IBNR). This plot is essential for actuarial reserving, enabling analysts to visualize the chain-ladder method and identify development patterns in loss data. ## Applications - Insurance reserving: visualizing cumulative claims development to estimate IBNR (Incurred But Not Reported) reserves using the chain-ladder method - Reinsurance pricing: assessing reserve adequacy and treaty pricing by examining historical loss development patterns - Financial reporting: preparing loss reserve disclosures and communicating reserve estimates to stakeholders ## Data - `accident_year` (integer) - The origin/accident year when claims occurred (e.g., 2015-2024) - `development_period` (integer) - The development period in years from origin (e.g., 1-10) - `cumulative_amount` (float) - Cumulative claim payments at each development stage - `is_projected` (boolean) - Whether the value is actual (observed) or projected (estimated) - `development_factor` (float) - Age-to-age development factors between consecutive periods - Size: 10 accident years x 10 development periods (triangular: ~55 actual + ~45 projected cells) - Example: Cumulative paid claims triangle with accident years 2015-2024 and development periods 1-10 ## Notes - The upper-left triangle contains actual/observed values; the lower-right triangle contains projected values - Use distinct visual styling (e.g., different background colors or hatching) to clearly differentiate actual from projected cells - The diagonal from top-right to bottom-left represents the latest evaluation date - Annotate each cell with the cumulative amount value (formatted with thousands separator) - Display age-to-age development factors between column headers or as a separate row below the triangle - Color intensity should encode the magnitude of cumulative amounts - Include a clear legend distinguishing actual vs projected regions - Row labels show accident/origin years; column headers show development periods --- **Next:** Add `approved` label to the issue to merge this PR. --- :robot: *[spec-create workflow](https://github.com/MarkusNeusinger/pyplots/actions/runs/22779531295)* Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 815ab6d commit 9942e3a

2 files changed

Lines changed: 54 additions & 0 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# heatmap-loss-triangle: Actuarial Loss Development Triangle
2+
3+
## Description
4+
5+
A triangular matrix visualization showing cumulative insurance claim payments developing over time. Rows represent accident/origin years, columns represent development periods (e.g., 1-10 years), with the upper-left triangle displaying actual observed cumulative claims and the lower-right triangle showing projected/estimated values (IBNR). This plot is essential for actuarial reserving, enabling analysts to visualize the chain-ladder method and identify development patterns in loss data.
6+
7+
## Applications
8+
9+
- Insurance reserving: visualizing cumulative claims development to estimate IBNR (Incurred But Not Reported) reserves using the chain-ladder method
10+
- Reinsurance pricing: assessing reserve adequacy and treaty pricing by examining historical loss development patterns
11+
- Financial reporting: preparing loss reserve disclosures and communicating reserve estimates to stakeholders
12+
13+
## Data
14+
15+
- `accident_year` (integer) - The origin/accident year when claims occurred (e.g., 2015-2024)
16+
- `development_period` (integer) - The development period in years from origin (e.g., 1-10)
17+
- `cumulative_amount` (float) - Cumulative claim payments at each development stage
18+
- `is_projected` (boolean) - Whether the value is actual (observed) or projected (estimated)
19+
- `development_factor` (float) - Age-to-age development factors between consecutive periods
20+
- Size: 10 accident years x 10 development periods (triangular: ~55 actual + ~45 projected cells)
21+
- Example: Cumulative paid claims triangle with accident years 2015-2024 and development periods 1-10
22+
23+
## Notes
24+
25+
- The upper-left triangle contains actual/observed values; the lower-right triangle contains projected values
26+
- Use distinct visual styling (e.g., different background colors or hatching) to clearly differentiate actual from projected cells
27+
- The diagonal from top-right to bottom-left represents the latest evaluation date
28+
- Annotate each cell with the cumulative amount value (formatted with thousands separator)
29+
- Display age-to-age development factors between column headers or as a separate row below the triangle
30+
- Color intensity should encode the magnitude of cumulative amounts
31+
- Include a clear legend distinguishing actual vs projected regions
32+
- Row labels show accident/origin years; column headers show development periods
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
spec_id: heatmap-loss-triangle
2+
title: Actuarial Loss Development Triangle
3+
4+
# Specification tracking
5+
created: "2026-03-06T19:53:43Z"
6+
updated: null
7+
issue: 4581
8+
suggested: MarkusNeusinger
9+
10+
# Classification tags
11+
tags:
12+
plot_type:
13+
- heatmap
14+
data_type:
15+
- numeric
16+
- matrix
17+
domain:
18+
- finance
19+
features:
20+
- annotated
21+
- color-mapped
22+
- cumulative

0 commit comments

Comments
 (0)