This is the third of a trilogy of posts demonstrating how to implement three basic deterministic Property&Casualty/General/Non-Life insurance actuarial techniques using the ChainLadder package in R.

In simplest form, the Bornhuetter-Ferguson ("BF") Method estimates IBNR for an accident/policy/underwriting/origin year (tranch of exposure) as the product of an

Then a BF estimate of ultimate loss is the sum of reported loss known at the time plus IBNR:

For an example we will use data from the Institute and Faculty of Actuaries

In simplest form, the Bornhuetter-Ferguson ("BF") Method estimates IBNR for an accident/policy/underwriting/origin year (tranch of exposure) as the product of an

*a-priori*estimate of ultimate loss for that exposure and an estimate of the percent of that ultimate loss unknown/unreported/undeveloped at the time:
IBNR =

*a-priori*EstimatedUltimateLoss * PercentUnreported
EstimatedUltimateLoss = ReportedLoss + IBNR

*A-priori*estimates of ultimate loss may originate from widespread sources. We will demonstrate with the Loss Ratio Method (see previous post). Estimates of unreported percents are commonly borne from a loss development analysis of a reported loss triangle (see previous post), demonstrated here.For an example we will use data from the Institute and Faculty of Actuaries

*Claims Reserving Manual*, Sections F & G (see previous posts at links above for online sources). The R statements below following the carat (">") may be copied and pasted into an R session.- First,
*a-priori*EstimatedUltimateLoss

> ELR = .83

> aprioriEstimatedUltimateLoss = Premium * ELR

> aprioriEstimatedUltimateLoss = Premium * ELR

- Next, PercentUnreported
- The reported loss triangle

2777, 3264, 3452, 3594, 3719, 3717,

3252, 3804, 3973, 4231, 4319, NA,

3725, 4404, 4779, 4946, NA, NA,

4521, 5422, 5676, NA, NA, NA,

5369, 6142, NA, NA, NA, NA,

5818, NA, NA, NA, NA, NA), nrow = 6, byrow = TRUE)

- Fire up ChainLadder. Select the volume weighted average age-to-age factors. Append a unity tail under the assumption that the first year is already at ultimate. Cumulate (multiplicatively) in appropriate order. Pause to inspect the cumulative development factors.

> library(ChainLadder)

> selected = attr(ata(ReportedLossTriangle), "vwtd")

> selected = c(selected, 1.000)

> CDF = cumprod(rev(selected))

> round(CDF, 3)

[1] 1.000 0.999 1.027 1.074 1.137 1.333

> round(IBNR)

[1] 0 -2 122 379 749 1764

It is possible to program the steps above into an R function. Is there a ChainLadder volunteer? Contributors welcome! Contact Markus Gesmann or one of the other authors found here or under "Members" here.

-dmm

> selected = attr(ata(ReportedLossTriangle), "vwtd")

> selected = c(selected, 1.000)

> CDF = cumprod(rev(selected))

> round(CDF, 3)

[1] 1.000 0.999 1.027 1.074 1.137 1.333

- Notice how reversing the order of the age-to-age (ATA) factors before cumulating enables the tail factor to line up with the first, most mature year and the last factor to line up with the last, least mature year. Also, the last observed ATA is less than 1.000 -- as is the second CDF -- so we should expect to see (slightly) negative IBNR for the second-most-mature accident year.
- Now calculate the unreported percents using the familiar formula

- IBNR

> round(IBNR)

[1] 0 -2 122 379 749 1764

- For the value of reported loss known at the time we can use ChainLadder's getLatestCumulative function

- Finally

It is possible to program the steps above into an R function. Is there a ChainLadder volunteer? Contributors welcome! Contact Markus Gesmann or one of the other authors found here or under "Members" here.

-dmm

------------------------------------------------