The next definition was taken from https://www.investopedia.com/terms/i/incurredbutnotreported.asp.
Incurred but not reported (IBNR) is a type of reserve account used in the insurance industry as the provision for claims and/or events that have transpired, but have not yet been reported to an insurance company.
The problem consists of the estimation of outstanding claims reserves in general insurance.
The next figure graphically depicts the problem; the idea is to estimate the unobserved claims using the left triangle observations.
The ChainLadder R package can be used to …
To install the package you can use the next code.
install.packages('ChainLadder')
To use the package you can load it using the next code.
library(ChainLadder)
The datasets for the estimation of outstanding claims reserves in general insurance must have the next triangle structure:
RAA
## dev
## origin 1 2 3 4 5 6 7 8 9 10
## 1981 5012 8269 10907 11805 13539 16181 18009 18608 18662 18834
## 1982 106 4285 5396 10666 13782 15599 15496 16169 16704 NA
## 1983 3410 8992 13873 16141 18735 22214 22863 23466 NA NA
## 1984 5655 11555 15766 21266 23425 26083 27067 NA NA NA
## 1985 1092 9565 15836 22169 25955 26180 NA NA NA NA
## 1986 1513 6445 11702 12935 15852 NA NA NA NA NA
## 1987 557 4020 10946 12314 NA NA NA NA NA NA
## 1988 1351 6947 13112 NA NA NA NA NA NA NA
## 1989 3133 5395 NA NA NA NA NA NA NA NA
## 1990 2063 NA NA NA NA NA NA NA NA NA
The generic plot
function can be used to plot the data.
plot(RAA/1000, main="Claims development by origin year",
ylab="Claims (in thousands)", las=1)
It is possible to create a lattice plot using the argument lattice=TRUE
inside plot
fucntion.
plot(RAA/1000, lattice=TRUE, main = "Claims development by origin year")
In this example we are using the data from the video https://youtu.be/KANe-_28j0E.
x <- triangle("2015" = c(34871, 38358, 40276, 41082, 40671),
"2016" = c(38154, 41969, 44068, 44949),
"2017" = c(29425, 36781, 39356),
"2018" = c(40876, 44964),
"2019" = c(42776))
In this example we are using the data from: https://www.uio.no/studier/emner/matnat/math/STK4540/h14/lectures/chain-ladder-metode.pdf
x <- triangle("2005" = c(1232, 2178, 2698, 3420, 3736, 3901, 3949, 3963),
"2006" = c(1469, 2670, 3378, 4223, 4684, 4919, 4975),
"2007" = c(1652, 3068, 4027, 4981, 5586, 5873),
"2008" = c(1831, 3465, 4589, 5676, 6401),
"2009" = c(2074, 3993, 5323, 6563),
"2010" = c(2434, 4697, 6358),
"2011" = c(2810, 4918),
"2012" = c(3072))
clm <- function(x) {
n <- ncol(x)
res <- numeric()
for (i in 1:(n-1)) {
sub_mat <- x[1:(n-i), i:(i+1)]
if (!is.matrix(sub_mat))
sub_mat <- matrix(sub_mat, nrow=1)
w <- colSums(sub_mat)
res <- append(res, w[2] / w[1])
}
names(res) <- 2:n
res
}
To obtain the clm we can use
clms <- clm(x)
clms
## 2 3 4 5 6 7 8
## 1.850763 1.313985 1.242218 1.115137 1.049050 1.011791 1.003545
ata(x)
## dev
## origin 1-2 2-3 3-4 4-5 5-6 6-7 7-8
## 2005 1.768 1.239 1.268 1.092 1.044 1.012 1.004
## 2006 1.818 1.265 1.250 1.109 1.050 1.011 NA
## 2007 1.857 1.313 1.237 1.121 1.051 NA NA
## 2008 1.892 1.324 1.237 1.128 NA NA NA
## 2009 1.925 1.333 1.233 NA NA NA NA
## 2010 1.930 1.354 NA NA NA NA NA
## 2011 1.750 NA NA NA NA NA NA
## smpl 1.849 1.305 1.245 1.113 1.049 1.012 1.004
## vwtd 1.851 1.314 1.242 1.115 1.049 1.012 1.004
This method estimates the standard errors of the chain-ladder forecast.
mack <- MackChainLadder(RAA, est.sigma="Mack")
mack
## MackChainLadder(Triangle = RAA, est.sigma = "Mack")
##
## Latest Dev.To.Date Ultimate IBNR Mack.S.E CV(IBNR)
## 1981 18,834 1.000 18,834 0 0 NaN
## 1982 16,704 0.991 16,858 154 206 1.339
## 1983 23,466 0.974 24,083 617 623 1.010
## 1984 27,067 0.943 28,703 1,636 747 0.457
## 1985 26,180 0.905 28,927 2,747 1,469 0.535
## 1986 15,852 0.813 19,501 3,649 2,002 0.549
## 1987 12,314 0.694 17,749 5,435 2,209 0.406
## 1988 13,112 0.546 24,019 10,907 5,358 0.491
## 1989 5,395 0.336 16,045 10,650 6,333 0.595
## 1990 2,063 0.112 18,402 16,339 24,566 1.503
##
## Totals
## Latest: 160,987.00
## Dev: 0.76
## Ultimate: 213,122.23
## IBNR: 52,135.23
## Mack.S.E 26,909.01
## CV(IBNR): 0.52
We can observe the estimated values using:
mack$FullTriangle
## dev
## origin 1 2 3 4 5 6 7 8
## 1981 5012 8269.000 10907.000 11805.00 13539.00 16181.00 18009.00 18608.00
## 1982 106 4285.000 5396.000 10666.00 13782.00 15599.00 15496.00 16169.00
## 1983 3410 8992.000 13873.000 16141.00 18735.00 22214.00 22863.00 23466.00
## 1984 5655 11555.000 15766.000 21266.00 23425.00 26083.00 27067.00 27967.34
## 1985 1092 9565.000 15836.000 22169.00 25955.00 26180.00 27277.85 28185.21
## 1986 1513 6445.000 11702.000 12935.00 15852.00 17649.38 18389.50 19001.20
## 1987 557 4020.000 10946.000 12314.00 14428.00 16063.92 16737.55 17294.30
## 1988 1351 6947.000 13112.000 16663.88 19524.65 21738.45 22650.05 23403.47
## 1989 3133 5395.000 8758.905 11131.59 13042.60 14521.43 15130.38 15633.68
## 1990 2063 6187.677 10045.834 12767.13 14958.92 16655.04 17353.46 17930.70
## dev
## origin 9 10
## 1981 18662.00 18834.00
## 1982 16704.00 16857.95
## 1983 23863.43 24083.37
## 1984 28441.01 28703.14
## 1985 28662.57 28926.74
## 1986 19323.01 19501.10
## 1987 17587.21 17749.30
## 1988 23799.84 24019.19
## 1989 15898.45 16044.98
## 1990 18234.38 18402.44
We can plot the estimations with a confidence level using the next code.
plot(mack, lattice=TRUE)
We can check the Mack’s assumptions using the plot function.
plot(mack)
Hola Daniel. Por favor me ayuda a completar esta sección.