Claims development result: the one-year view of a Mack fit
claims_development_result.RdMerz 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.
Arguments
- fit
A single-segment mack_fit with volume-weighted factors.
- ptr
A
ClaimsDevelopmentResultpointer; used internally.
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