Skip to contents

Merz and Wuthrich's (2008) one-year view of a mack_fit: the standard error of the claims development result (CDR), the change in the chain-ladder ultimate over a calendar year, for each origin and in total, in the next calendar year and in every later one. The total includes the covariance between origins. Results match R ChainLadder's CDR(MackChainLadder(x), dev = "all") (validation/reference/reserving_cdr_r.csv) and the totals of Table 4 in the paper.

Usage

claims_development_result(fit, ptr = NULL)

Arguments

fit

A single-segment mack_fit with volume-weighted factors.

ptr

A ClaimsDevelopmentResult pointer; used internally.

Value

A claims_development_result object.

Details

The formulas assume volume-weighted factors (mack(average = "volume"), the default), no tail (mack(tail = 1), the default: a factor of exactly 1 that replaces no estimated factor), and the latest values on one calendar diagonal with one new origin per period; anything else is an error (R ChainLadder only warns about other factors). The fit must have a single segment: use segment() to pick one.

Properties, as standard errors (not mean squared errors): one_year_standard_error per origin (R's CDR(1)S.E.) and total_one_year_standard_error; by_calendar_year, an origin x calendar year matrix whose column k is R's CDR(k)S.E., zero once an origin is fully developed, with one year per age-to-age factor (R adds a last year past the run-off, always zero); total_by_calendar_year; run_off_standard_error per origin and total_run_off_standard_error, the square root of the yearly mean squared errors summed, which equals Mack's standard error; and origins. as.data.frame() gives one row per origin: origin, cdr_1, cdr_2, ... (the columns of by_calendar_year) and run_off, as Python's MackFit.claims_development_result().to_frame().

See also

mack(); odp_one_year() simulates the one-year view of any averaging, tail or expected-loss method.

Examples

long <- data.frame(year = rep(2018:2021, 4:1),
                   age = c(12, 24, 36, 48, 12, 24, 36, 12, 24, 12),
                   paid = c(100, 150, 165, 170, 110, 170, 180, 120, 175, 130))
m <- mack(triangle(long, "year", "age", "paid"))
cdr <- claims_development_result(m)
cdr@one_year_standard_error
#>     2018     2019     2020     2021 
#> 0.000000 5.616429 6.946872 8.150932 
cdr@total_one_year_standard_error
#> [1] 16.45603
cdr@by_calendar_year
#>       calendar_year
#> origin        1        2        3
#>   2018 0.000000 0.000000 0.000000
#>   2019 5.616429 0.000000 0.000000
#>   2020 6.946872 4.945813 0.000000
#>   2021 8.150932 6.540720 4.955989
# The yearly run-off adds up to Mack's standard error.
all.equal(cdr@total_run_off_standard_error, m@total_standard_error)
#> [1] TRUE
as.data.frame(cdr)
#>   origin    cdr_1    cdr_2    cdr_3   run_off
#> 1   2018 0.000000 0.000000 0.000000  0.000000
#> 2   2019 5.616429 0.000000 0.000000  5.616429
#> 3   2020 6.946872 4.945813 0.000000  8.527608
#> 4   2021 8.150932 6.540720 4.955989 11.566353