Identify the first mature age-to-age (ata) link from a Triangle.
Internally builds a single-variable Link table, computes the
per-link diagnostic via summary.Link() with model = "ata", and
then locates the first link whose statistics satisfy all maturity
criteria.
Maturity is determined using a combination of:
cv < max_cvrse < max_rsevalid_ratio >= min_valid_ration_valid >= min_n_validoptional consecutive maturity over
min_runata links
Both cv and rse must be satisfied simultaneously. cv captures
the raw variability of observed ata factors across cohorts, while rse
reflects the precision of the WLS-estimated factor. Using both criteria
together provides a more robust maturity assessment than either alone.
Default loss = "loss" (cumulative loss). Maturity in chain
ladder is methodologically a property of loss development:
the ATA factors of cumulative loss stabilize when chain ladder
becomes reliable, which in turn makes downstream LR projection
reliable. ATA factors of ratio itself (a ratio of two cumulative
quantities) carry additional noise and tend to give less precise
maturity decisions. Override loss only when you specifically
want maturity of premium development or another cumulative metric.
Usage
detect_maturity(
x,
loss = "loss",
groups = NULL,
weight = NULL,
alpha = 1,
max_cv = 0.15,
max_rse = 0.05,
min_valid_ratio = 0.5,
min_n_valid = 3L,
min_run = 2L
)Arguments
- x
A
Triangleobject.- loss
Cumulative metric for the link factor. Default
"loss"(chain-ladder convention; see Description). Forwarded toas_link().- groups
Optional
charactersubset ofattr(x, "groups")selecting which columns define the maturity partition. Maturity is typically a structural property of the development curve driven by coverage rather than by demographic mix (age, channel, ...), so a Triangle aggregated byc("coverage", "age_band", "channel")may still want a per-coverage maturity.NULL(default) keeps the current Triangle grouping (fully backward compatible).character(0)pools across all groups and returns a single global maturity row. Any non-NULL, non-empty value must be a subset ofattr(x, "groups"); column order is irrelevant. When the requestedgroupsis coarser than the Triangle grouping, the underlyingloss/premium/ratiocolumns are re-aggregated to the coarser partition before computing ata links.- weight
Optional WLS weight variable. Forwarded to
as_link().- alpha
Numeric scalar controlling the variance structure in the underlying WLS fit. Default
1. Forwarded tosummary.Link().- max_cv
Maximum allowed coefficient of variation. Default is
0.15.- max_rse
Maximum allowed relative standard error. Default is
0.05.- min_valid_ratio
Minimum proportion of finite ata values required. Default is
0.5.- min_n_valid
Minimum number of finite ata factors required. Default is
3L.- min_run
Minimum number of consecutive ata links satisfying the maturity criteria. Default is
2L.
Value
A data.table with class "Maturity" containing one row
per group. Columns include ata_from, change (the maturity
point, i.e. the to-index of the first mature ata link),
ata_link, and the diagnostic statistics (mean, median,
wt, cv, f, f_se, rse, sigma, n_cohorts, n_valid,
n_inf, n_nan, valid_ratio). If no mature link is found,
all values for that group are NA.
