Skip to contents

Synthetic long-format loss experience data for demonstrating the lossratio package workflow. Generated deterministically from data-raw/make_experience.R (set.seed = 20260501). Per-coverage calibration scalars (target ultimate LR, cohort premium volume, cell-level noise CV) were measured once on a real long-term Korean health-insurance portfolio and baked in as constants – no real-portfolio data is shipped. The runoff shape uses a small dev-1 "waiting-period" dip followed by roughly constant incremental loss per dev, so the cumulative LR rises monotonically toward the target. The surgery coverage carries a synthetic 2024-07 cohort regime change (target LR scaled by 0.6) so the detect_regime() example has a clear shift to find.

Usage

experience

Format

A data.table with 2,664 rows and 15 columns. Each row is one (coverage, underwriting cohort, calendar period) cell of a 36-cohort x up-to-36-dev jagged triangle:

coverage

Coverage code (character). One of:

  • CI – the two major non-cancer critical illnesses, covering cerebrovascular disease (stroke, cerebral infarction, cerebral haemorrhage) and ischemic heart disease (angina, acute myocardial infarction). Does not include cancer; cancer is the separate cancer coverage.

  • cancer – cancer.

  • inpatient – hospitalisation per-day fixed benefit.

  • surgery – surgery per-event fixed benefit.

uy, uy_h, uy_q, uy_m

Underwriting period (year / half / quarter / month) as Date.

cy, cy_h, cy_q, cy_m

Calendar period (year / half / quarter / month) as Date.

dev_y, dev_h, dev_q, dev_m

Development period (year / half / quarter / month) as integer.

incr_loss

Per-period loss amount (numeric).

incr_premium

Per-period premium amount (numeric); for long-term health insurance applications, risk premium is commonly used.

Source

Generated by data-raw/make_experience.R. Calibration scalars (per-coverage target LR, premium volume mean + CV across cohorts, cell-level noise CV) were measured once on a real portfolio and baked in as constants; cell-level structure and all noise draws are synthetic.

Examples

if (FALSE) { # \dontrun{
data(experience)
head(experience)

tri <- as_triangle(
  experience,
  groups   = "coverage",
  cohort   = "uy_m",
  calendar = "cy_m",
  loss     = "incr_loss",
  premium  = "incr_premium"
)
} # }