offdataai
Insurance · data model template

Actuarial Loss Reserving & Triangles data model

Kimball warehouse for actuarial reserving: claim-transaction facts, loss-development triangle cells, reserve estimates (ultimate/IBNR by method), earned premium by accident period, and per-claim valuation snapshots over conformed accident-period, development-period, line-of-business, and reserving-segment dimensions.

Actuarial loss-reserving analytics: claim financial transactions, loss-development triangle cells (paid/incurred by accident and development period), reserve estimates (chain-ladder and Bornhuetter-Ferguson ultimates and IBNR), earned premium, and per-claim valuation snapshots — a Kimball star schema with conformed line-of-business, accident-period, development-period, and reserving-segment dimensions for IFRS 17 / Solvency II reserving. It is a Kimball dimensional model: fact tables at a declared grain surrounded by conformed dimensions, ready for BI tools and a semantic layer.

KimballInsuranceIFRS-17Solvency-IINAICASOP
13
tables
99
columns
23
relationships
1
PII columns

Opening the template creates a project with the ERD, platform-native DDL, a dbt project and documentation already generated (recommended platform: Databricks). Edit it in plain English or on the canvas, then ship it to any supported warehouse.

Subject areas

transactionstrianglesreservespremiumclaim_detailconformed_dimensions

Design decisions

  • Triangle cell keyed by accident AND development period

    The loss-development triangle is the fundamental reserving structure; modeling each cell at accident-period × development-period grain lets chain-ladder and BF run directly off the warehouse.

  • Separate reserve-estimate fact with a method dimension

    Reserves are estimated by multiple methods (chain-ladder, BF, Cape Cod) each valuation; a method-keyed estimate fact stores every method's ultimate and IBNR with a selected-ultimate flag for the booked figure.

  • Earned premium by accident period

    Bornhuetter-Ferguson and expected-loss methods need an a-priori exposure base; earned premium at accident-period grain provides it.

  • Per-claim snapshot alongside aggregate triangles

    Large-loss and reopened-claim review needs claim detail; a per-claim valuation snapshot complements the aggregate triangle without changing its grain.

Tables in the Actuarial Loss Reserving & Triangles model

Every table with its grain, columns, types and keys. PK marks a primary key, BK a business key and PII a column classified as personal data, which gets a masking strategy by default.

Fact tables (5)

fct_claim_transaction

Grain: one row per claim financial transaction

Transaction-grain claim financial movements feeding triangles.

ColumnTypeKeys
claim_transaction_keybigintPK
date_keybigint
claim_keybigint
line_of_business_keybigint
accident_period_keybigint
transaction_typevarchar
paid_amountdecimal
case_reserve_changedecimal
recovery_amountdecimal
expense_amountdecimal
currencyvarchar

fct_loss_triangle_cell

Grain: one row per segment per accident period per development period (periodic snapshot)

Loss-development triangle cell — the core reserving data structure.

ColumnTypeKeys
valuation_date_keybigint
line_of_business_keybigint
reserving_segment_keybigint
accident_period_keybigint
development_period_keybigint
cumulative_paid_lossesdecimal
cumulative_incurred_lossesdecimal
case_reservesdecimal
reported_claim_countinteger
closed_claim_countinteger
earned_premiumdecimal

fct_reserve_estimate

Grain: one row per segment per accident period per valuation per method

Reserve estimates (ultimate, IBNR) by method per valuation.

ColumnTypeKeys
reserve_estimate_keybigintPK
valuation_date_keybigint
line_of_business_keybigint
reserving_segment_keybigint
accident_period_keybigint
method_keybigint
actuary_keybigint
ultimate_lossdecimal
paid_to_datedecimal
case_reservedecimal
ibnr_reservedecimal
total_reservedecimal
loss_development_factordecimal
expected_loss_ratiodecimal
selected_ultimate_flagboolean

fct_earned_premium

Grain: one row per segment per accident period per month (periodic snapshot)

Earned premium by accident period — the BF a-priori exposure base.

ColumnTypeKeys
date_keybigint
line_of_business_keybigint
reserving_segment_keybigint
accident_period_keybigint
written_premiumdecimal
earned_premiumdecimal
unearned_premiumdecimal
exposure_countinteger

fct_claim_snapshot

Grain: one row per claim per valuation (periodic snapshot)

Per-claim valuation snapshot for large-loss and development review.

ColumnTypeKeys
date_keybigint
claim_keybigint
line_of_business_keybigint
accident_period_keybigint
reported_amountdecimal
paid_amountdecimal
case_reservedecimal
incurred_amountdecimal
is_reopenedboolean
development_age_monthssmallint

Dimension tables (4)

dim_date

Grain: one row per calendar day

ColumnTypeKeys
date_keybigintPK
full_datedateBK
month_numbersmallint
quartersmallint
yearsmallint

dim_reserving_segment

Grain: one row per reserving segment

ColumnTypeKeys
reserving_segment_keybigintPK
segment_idvarcharBK
segment_namevarchar
regionvarchar
perilvarchar
granularityvarchar

dim_claim

Grain: one row per claim

ColumnTypeKeys
claim_keybigintPK
claim_idvarcharBK
claim_numbervarchar
claim_typevarchar
report_lag_daysinteger
is_large_lossboolean
is_catastropheboolean
claim_statusvarchar

dim_actuary

Grain: one row per actuary / analyst

ColumnTypeKeys
actuary_keybigintPK
actuary_idvarcharBK
actuary_namevarcharPII
credentialvarchar
teamvarchar

Lookup tables (4)

dim_accident_period

Grain: one row per accident period

ColumnTypeKeys
accident_period_keybigintPK
accident_period_codevarcharBK
accident_yearsmallint
accident_quartersmallint
accident_monthsmallint
period_labelvarchar

dim_development_period

Grain: one row per development lag

ColumnTypeKeys
development_period_keybigintPK
development_period_codevarcharBK
development_lag_monthssmallint
development_yearsmallint
maturity_labelvarchar

dim_line_of_business

Grain: one row per line of business

ColumnTypeKeys
line_of_business_keybigintPK
lob_codevarcharBK
lob_namevarchar
coverage_groupvarchar
segmentvarchar

dim_method

Grain: one row per reserving method

ColumnTypeKeys
method_keybigintPK
method_codevarcharBK
method_namevarchar
method_categoryvarchar

Relationships

Each relationship is a foreign key on the first table referencing the second.

  • fct_claim_transaction.date_key → dim_date (many-to-one)
  • fct_claim_transaction.claim_key → dim_claim (many-to-one)
  • fct_claim_transaction.line_of_business_key → dim_line_of_business (many-to-one)
  • fct_claim_transaction.accident_period_key → dim_accident_period (many-to-one)
  • fct_loss_triangle_cell.valuation_date_key → dim_date (many-to-one)
  • fct_loss_triangle_cell.line_of_business_key → dim_line_of_business (many-to-one)
  • fct_loss_triangle_cell.reserving_segment_key → dim_reserving_segment (many-to-one)
  • fct_loss_triangle_cell.accident_period_key → dim_accident_period (many-to-one)
  • fct_loss_triangle_cell.development_period_key → dim_development_period (many-to-one)
  • fct_reserve_estimate.valuation_date_key → dim_date (many-to-one)
  • fct_reserve_estimate.line_of_business_key → dim_line_of_business (many-to-one)
  • fct_reserve_estimate.reserving_segment_key → dim_reserving_segment (many-to-one)
  • fct_reserve_estimate.accident_period_key → dim_accident_period (many-to-one)
  • fct_reserve_estimate.method_key → dim_method (many-to-one)
  • fct_reserve_estimate.actuary_key → dim_actuary (many-to-one)
  • fct_earned_premium.date_key → dim_date (many-to-one)
  • fct_earned_premium.line_of_business_key → dim_line_of_business (many-to-one)
  • fct_earned_premium.reserving_segment_key → dim_reserving_segment (many-to-one)
  • fct_earned_premium.accident_period_key → dim_accident_period (many-to-one)
  • fct_claim_snapshot.date_key → dim_date (many-to-one)
  • fct_claim_snapshot.claim_key → dim_claim (many-to-one)
  • fct_claim_snapshot.line_of_business_key → dim_line_of_business (many-to-one)
  • fct_claim_snapshot.accident_period_key → dim_accident_period (many-to-one)

Related templates

All templates →
Start for $1

From requirements to AI-ready context, in one platform.

Describe your business in a conversation, start from a template or connect your own database. Your first model is ready in minutes.

Get startedBook a demo

Plans from $1/month · cancel any time