Title: | Claims Reserving under the Double Chain Ladder Model |
---|---|
Description: | Statistical modelling and forecasting in claims reserving in non-life insurance under the Double Chain Ladder framework by Martinez-Miranda, Nielsen and Verrall (2012). |
Authors: | Maria Dolores Martinez-Miranda, Jens Perch Nielsen and Richard Verrall |
Maintainer: | Maria Dolores Martinez-Miranda <[email protected]> |
License: | GPL-2 |
Version: | 0.1.2 |
Built: | 2024-12-06 06:29:40 UTC |
Source: | CRAN |
This package provides functions for statistical modelling and forecasting in claims reserving in non-life insurance under the Double Chain Ladder framework by Martinez-Miranda, Nielsen and Verrall (2012). Using specific functions, the user will be able generate plots to visualize and gain intuition about the data (run-off triangles), break down classical chain ladder under the DCL model, visualize the underlying delay function and the inflation, introduce expert knowledge about the severity inflation, the zero-claims etc. Besides a validation exercise can be performed through a back-test on the data.
Package: | DCL |
Type: | Package |
Version: | 0.1.0 |
Date: | 2013-10-24 |
License: | GPL-2 |
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Maintainer: Maria Dolores Martinez-Miranda <[email protected]>
Martinez-Miranda M.D., Nielsen B, Nielsen J.P and Verrall, R. (2011) Cash flow simulation for a model of outstanding liabilities based on claim amounts and claim numbers. Astin Bulletin, 41/1, 107-129.
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76.
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2013) Double Chain Ladder and Bornhuetter-Ferguson. North American Actuarial Journal, 17(2), 101-113.
Martinez-Miranda, M.D., Nielsen, J.P., Verrall, R. and Wuthrich, M.V. (2013) Double Chain Ladder, Claims Development Inflation and Zero Claims. Scandinavian Actuarial Journal. In press.
See more at http://www.cassknowledge.com/research/article/double-chain-ladder-cass-knowledge
data(NtriangleDCL) data(XtriangleDCL) # Classical chain ladder parameters my.clm.par<-clm(XtriangleDCL) Plot.clm.par(my.clm.par) # Estimation of the DCL parameters (break-down of the chain ladder parameters) my.dcl.par<-dcl.estimation(XtriangleDCL,NtriangleDCL) Plot.dcl.par(my.dcl.par) # DCL Predictions by diagonals (future calendar years) # Splitting the chain ladder reserve into RBNR and IBNR claims (ignoring the tail) preds.dcl.diag<-dcl.predict(my.dcl.par,Model=0,Tail=FALSE,num.dec=0) # Full cashflow considering the tail (only the variance process) # Below only B=200 simulations for faster calculations in the example boot1<-dcl.boot(dcl.par=my.dcl.par,Ntriangle=NtriangleDCL,boot.type=1,B=200) Plot.cashflow(boot1)
data(NtriangleDCL) data(XtriangleDCL) # Classical chain ladder parameters my.clm.par<-clm(XtriangleDCL) Plot.clm.par(my.clm.par) # Estimation of the DCL parameters (break-down of the chain ladder parameters) my.dcl.par<-dcl.estimation(XtriangleDCL,NtriangleDCL) Plot.dcl.par(my.dcl.par) # DCL Predictions by diagonals (future calendar years) # Splitting the chain ladder reserve into RBNR and IBNR claims (ignoring the tail) preds.dcl.diag<-dcl.predict(my.dcl.par,Model=0,Tail=FALSE,num.dec=0) # Full cashflow considering the tail (only the variance process) # Below only B=200 simulations for faster calculations in the example boot1<-dcl.boot(dcl.par=my.dcl.par,Ntriangle=NtriangleDCL,boot.type=1,B=200) Plot.cashflow(boot1)
From the input run-off triangle (weekly, monthly, quarterly, etc.) the function creates another triangle on a higher level of aggregation.
Aggregate(triangle, freq = 4)
Aggregate(triangle, freq = 4)
triangle |
The original run-off (incremental) triangle. It should be a squared matrix (let denote by m its dimension m). |
freq |
The frequency to be considered in the aggregation. The default value is 4, to be used to construct a yearly run-off triangle from a quarterly |
.
If the input triangle does not consist of complete periods (for example a quarterly triangle with only three quarters in the last year), then the last (lower level) periods will been removed to get full aggregated periods.
A run-off triangle in the specified higher level of aggregation.
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
get.incremental
,get.cumulative
,Plot.triangle
## A dummy example: a run-off triangle with 5*4=20 quarters m<-20 my.square<-matrix(1,m,m) # Now my.triangle is a quarterly triangle (the upper left triangle from my.square) my.triangle<-my.square my.triangle[row(my.square)+col(my.square)>(m+1)]<-NA my.yearly.triangle<-Aggregate(my.triangle) list(original=my.triangle,yearly=my.yearly.triangle)
## A dummy example: a run-off triangle with 5*4=20 quarters m<-20 my.square<-matrix(1,m,m) # Now my.triangle is a quarterly triangle (the upper left triangle from my.square) my.triangle<-my.square my.triangle[row(my.square)+col(my.square)>(m+1)]<-NA my.yearly.triangle<-Aggregate(my.triangle) list(original=my.triangle,yearly=my.yearly.triangle)
Estimate the parameters in the Double Chain Ladder model (delay parameters, severity mean and variance) using the Double Chain Ladder method with a Bornhuetter-Ferguson adjustment. The Bornhuetter-Ferguson tecnhique is applied to stabilise the underwriting inflation parameters using incurred data
bdcl.estimation( Xtriangle , Ntriangle , Itriangle , adj = 1 , Tables=TRUE , num.dec=4 , n.cal=NA , Fj.X=NA , Fj.N=NA , Fj.I=NA)
bdcl.estimation( Xtriangle , Ntriangle , Itriangle , adj = 1 , Tables=TRUE , num.dec=4 , n.cal=NA , Fj.X=NA , Fj.N=NA , Fj.I=NA)
Xtriangle |
The paid run-off triangle: incremental aggregated payments. It should be a matrix with incremental aggregated payments located in the upper triangle and the lower triangle consisting in missing or zero values. |
Ntriangle |
The counts data triangle: incremental number of reported claims. It should be a matrix with the observed counts located in the upper triangle and the lower triangle consisting in missing or zero values. It should has the same dimension as |
Itriangle |
The incurred triangle. It should be a matrix with incurred data located in the upper triangle. It is an incremental run-off triangle with the same dimension as |
adj |
Method to adjust the estimated delay parameters for the distributional model. It should be 1 (default value) or 2. See more in details below. |
Tables |
Logical. If TRUE (default) it is showed a table with the estimated parameters. |
num.dec |
Number of decimal places used to report numbers in the tables (if Tables=TRUE). |
n.cal |
Integer specifying the number of most recent calendars which will be used to calculate the development factors. By default |
Fj.X |
Optional vector with lentgth m-1 (m being the dimension of the triangles) with the development factors to calculate the chain ladder estimates from |
Fj.N |
Optional vector with lentgth m-1 with the development factors to calculate the chain ladder estimates from |
Fj.I |
Optional vector with lentgth m-1 with the development factors to calculate the chain ladder estimates from |
Two model are estimated in the double chain ladder framework as with the dcl.estimation
function. In this case the inflation parameter (inflat
) is estimated from the incurred triangle (see BF adjustment in the description of the BDCL method in Martinez-Miranda, Nielsen and Verrall 2013). The predicted reserve using these estimates
is different from the incurred reserve. If you want to
reproduce exactly the incurred reserve (by splitting it into its RBNS and IBNR components) then use the function idcl.estimation
.
pi.delay |
General delay parameters |
mu |
Mean severity factor |
inflat |
Underwriting severity inflation (BDCL inflation) |
inflat.DCL |
Underwriting severity inflation (DCL inflation) |
pj |
Delay probabilities (under a Multinomial assumption) |
mu.adj |
Adjusted mean factor corresponding to the |
sigma2 |
Variance severity factor |
phi |
Overdispersion parameter used to derive the estimate |
Ey |
Severity mean for each underwriting period |
Vy |
Severity variance for each underwriting period |
adj |
Type of adjusted used to derive the |
alpha.N |
Underwriting chain ladder parameter in the (OD)-Poisson model. Counts triangle (Ntriangle) |
beta.N |
Underwriting chain ladder parameter in the (OD)-Poisson model. Counts triangle (Ntriangle) |
Nhat |
The chain ladder preditions (counts triangle). It is a matrix having the chain ladder predictions in the future (lower triangle) and the fitted values in the past (upper triangle). |
alpha.X |
Underwriting chain ladder parameter in the (OD)-Poisson model. Paid triangle (Xtriangle) |
beta.X |
Underwriting chain ladder parameter in the (OD)-Poisson model. Paid triangle (Xtriangle) |
Xhat |
The chain ladder preditions (paid triangle). It is a matrix having the chain ladder predictions in the future (lower triangle) and the fitted values in the past (upper triangle). |
alpha.I |
Underwriting chain ladder parameter in the (OD)-Poisson model. Incurred triangle (Itriangle) |
beta.I |
Underwriting chain ladder parameter in the (OD)-Poisson model. Incurred triangle (Itriangle) |
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76.
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2013) Double Chain Ladder and Bornhuetter-Ferguson. North Americal Actuarial Journal.
get.incremental
, Plot.dcl.par
, dcl.predict
,
dcl.estimation
, idcl.estimation
, clm
# Reproducing the data analysis in the paper by Martinez-Miranda, Nielsen and Verrall (2013) data(NtriangleBDCL) data(XtriangleBDCL) data(ItriangleBDCL) my.bdcl.par<-bdcl.estimation(XtriangleBDCL,NtriangleBDCL,ItriangleBDCL) # Parameters shown in Table 1 Plot.dcl.par(my.bdcl.par,type.inflat='BDCL') # BDCL Predictions by diagonals (future calendar years) preds.bdcl.diag<-dcl.predict(my.bdcl.par,NtriangleBDCL,num.dec=0)
# Reproducing the data analysis in the paper by Martinez-Miranda, Nielsen and Verrall (2013) data(NtriangleBDCL) data(XtriangleBDCL) data(ItriangleBDCL) my.bdcl.par<-bdcl.estimation(XtriangleBDCL,NtriangleBDCL,ItriangleBDCL) # Parameters shown in Table 1 Plot.dcl.par(my.bdcl.par,type.inflat='BDCL') # BDCL Predictions by diagonals (future calendar years) preds.bdcl.diag<-dcl.predict(my.bdcl.par,NtriangleBDCL,num.dec=0)
Provide the classical chain ladder output consisting of the development (forward) factors and the predictions in the full square. Besides it provides the estimated parameters under the (over-dispersion) Poisson model for the double chain ladder estimation.
clm( triangle , n.cal = NA , Fj = NA )
clm( triangle , n.cal = NA , Fj = NA )
triangle |
The loss triangle. It should be a matrix with the observed counts (number of reported claims, number of payments etc.), aggregated payments or incurred data, located in the upper triangle. The lower triangle should consist of missing (NA) or zero values. |
n.cal |
Integer specifying the number of most recent calendars which will be used to calculate the development factors. By default |
Fj |
Optional. A vector with lentgth m-1 (m being the dimension of the triangle) with the development factors to calculate the chain ladder estimates. See more details below. |
By default Fj=NA
and then classical chain ladder with the common calculation of the development factors (or using the most recent calendars -if 0<n.cal
<m is provided), is performed. By specifying a valid vector with the development factors (it should has lenght equal to m-1), the user is allowed to use his own values in the algorithm. If valid values are specified for both n.cal
and Fj
, the first one (n.cal
) will be ignored and the given development factors will be used in the calculations.
triangle.hat |
A matrix with dimension m having the chain ladder predictions in the future (lower triangle) and the fitted values in the past (upper triangle). |
alpha |
Underwriting chain ladder parameter in the (OD)-Poisson model (see for example Verrall (1991) for a formal definition) |
beta |
Underwriting chain ladder parameter in the (OD)-Poisson model (Verrall 1991) |
Fj |
Development (forward) factors |
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76.
Verrall, R. (1991) Chain ladder and Maximum Likelihood. Journal of the Institute of Actuaries 118, 489-499.
get.incremental
, Plot.clm.par
, Plot.triangle
data(NtriangleDCL) clm.N<-clm(NtriangleDCL) # The alpha's clm.N$alpha # The beta's clm.N$beta # The development factors clm.N$Fj # Plotting the parameters and the dev. factors Plot.clm.par(clm.N) # The predictions Nhat<-clm.N$triangle.hat Plot.triangle(Nhat,Histogram=TRUE) ## Trying variations from classical chain ladder # Try CLM only using the more recent 2 calendars in the development # factors calculation clm(NtriangleDCL,n.cal=2) # Try CLM providing a vector with given development factors my.Fj<-c(1.4,1.1,1.0,1.1,1.1,1.0,1.0,1.0,1.1) clm(NtriangleDCL,Fj=my.Fj)
data(NtriangleDCL) clm.N<-clm(NtriangleDCL) # The alpha's clm.N$alpha # The beta's clm.N$beta # The development factors clm.N$Fj # Plotting the parameters and the dev. factors Plot.clm.par(clm.N) # The predictions Nhat<-clm.N$triangle.hat Plot.triangle(Nhat,Histogram=TRUE) ## Trying variations from classical chain ladder # Try CLM only using the more recent 2 calendars in the development # factors calculation clm(NtriangleDCL,n.cal=2) # Try CLM providing a vector with given development factors my.Fj<-c(1.4,1.1,1.0,1.1,1.1,1.0,1.0,1.0,1.1) clm(NtriangleDCL,Fj=my.Fj)
Provide the distribution of the IBNR, RBNS and total (RBNS+IBRN) reserves by calendar years and rows using bootstrapping.
dcl.boot( dcl.par , sigma2 , Ntriangle , boot.type = 2 , B = 999 , Tail = TRUE , summ.by = "diag" , Tables = TRUE , num.dec = 2 , n.cal = NA)
dcl.boot( dcl.par , sigma2 , Ntriangle , boot.type = 2 , B = 999 , Tail = TRUE , summ.by = "diag" , Tables = TRUE , num.dec = 2 , n.cal = NA)
dcl.par |
A list object with the estimated parameters: the value returned by the functions |
sigma2 |
Optional. The variance of the individual payments in the first underwriting period. |
Ntriangle |
The counts data triangle: incremental number of reported claims. It should be a matrix with the observed counts located in the upper triangle and the lower triangle consisting in missing or zero values. It should be the same triangle used to get the value passed by the argument |
boot.type |
Choose between values 1, to provide only the variance process, or 2 (default), to take into account the uncertainty of the parameters. |
B |
The number of simulations in the bootstrap algorithm. The defaul value is 999. |
Tail |
Logical. If |
summ.by |
A character value such as |
Tables |
Logical. If |
num.dec |
Number of decimal places used to report numbers in the tables. Used only if |
n.cal |
Integer specifying the number of most recent calendars which will be used to calculate the development factors. By default |
If the calculated severity variance using the function dcl.estimation
is not a valid estimate then it is recommended to provide directly this value through the argument sigma2
. It can be calculated using the function var
applied to a pilot sample of individual payments observed in the first underwriting period.
array.rbns.boot |
An array with dimensions (m,2m-1,B) (m being the dimension of the input triangles in DCL). Each |
Mat.rbns |
A matrix with B rows and 2m columns. Each |
array.ibnr.boot |
An array with dimensions (m,2m-1,B) (m being the dimension of the input triangles in DCL). Each |
Mat.ibnr |
A matrix with B rows and 2m columns. Each |
Mat.total |
A matrix with B rows and 2m columns. Each |
summ.rbns |
A dataframe with the summary of the RBNS distribution. Only if |
summ.ibnr |
A dataframe with the summary of the IBNR distribution. Only if |
summ.total |
A dataframe with the summary of the total(=RBNS+IBNR) distribution. Only if |
If boot.type=2
the function will take some time to perform the calculations. It increases with the dimension of the triangles and the specified number of simulations B
.
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76.
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2013) Double Chain Ladder and Bornhuetter-Ferguson. North Americal Actuarial Journal.
# Results described in the data application by Martinez-Miranda, Nielsen and Verrall (2012) data(NtriangleDCL) data(XtriangleDCL) # Estimation of the DCL parameters est<-dcl.estimation(XtriangleDCL,NtriangleDCL) # Full cashflow considering the tail (only the variance process) # Below only B=200 simulations to be faster in the example boot1<-dcl.boot(dcl.par=est,Ntriangle=NtriangleDCL,boot.type=1,B=200) Plot.cashflow(boot1) # Full cashflow with tail and taking into account the parameters uncertainty # and B=999 simulations. Do not run it unless you can wait about one minute # boot2<-dcl.boot(dcl.par=est,Ntriangle=NtriangleDCL,boot.type=2) # Plot.cashflow(boot2)
# Results described in the data application by Martinez-Miranda, Nielsen and Verrall (2012) data(NtriangleDCL) data(XtriangleDCL) # Estimation of the DCL parameters est<-dcl.estimation(XtriangleDCL,NtriangleDCL) # Full cashflow considering the tail (only the variance process) # Below only B=200 simulations to be faster in the example boot1<-dcl.boot(dcl.par=est,Ntriangle=NtriangleDCL,boot.type=1,B=200) Plot.cashflow(boot1) # Full cashflow with tail and taking into account the parameters uncertainty # and B=999 simulations. Do not run it unless you can wait about one minute # boot2<-dcl.boot(dcl.par=est,Ntriangle=NtriangleDCL,boot.type=2) # Plot.cashflow(boot2)
Provide the distribution of the IBNR, RBNS and total (RBNS+IBRN) reserves by calendar years and rows using bootstrapping.
dcl.boot.prior( Xtriangle , Ntriangle , sigma2 , mu , inflat.i , inflat.j , Qi , Model = 2 , adj = 1 , boot.type = 2, B = 999 , Tail = TRUE , summ.by = "diag", Tables = TRUE, num.dec = 2 , n.cal = NA , Fj.X = NA , Fj.N = NA )
dcl.boot.prior( Xtriangle , Ntriangle , sigma2 , mu , inflat.i , inflat.j , Qi , Model = 2 , adj = 1 , boot.type = 2, B = 999 , Tail = TRUE , summ.by = "diag", Tables = TRUE, num.dec = 2 , n.cal = NA , Fj.X = NA , Fj.N = NA )
Xtriangle |
The paid run-off triangle: incremental aggregated payments. It should be a matrix with incremental aggregated payments located in the upper triangle and the lower triangle consisting in missing or zero values. |
Ntriangle |
The counts data triangle: incremental number of reported claims. It should be a matrix with the observed counts located in the upper triangle and the lower triangle consisting in missing or zero values. It should has the same dimension as |
sigma2 |
Optional. The variance of the individual payments in the first underwriting period. |
mu |
Optional. The mean of the individual payments in the first underwriting period. |
inflat.i |
Optional. A vector with dimension m (the dimension of the input triangles) specifying the severity inflation in the underwriting direction. |
inflat.j |
Optional. A vector with dimension m specifying the severity inflation in the development direction. If not specified it will be assumed to be 1 and then the severity mean not depending on the development period. |
Qi |
Optional. A vector with dimension m specifying the probability of zero-claims for each underwriting period. If not specified then it will be assumed no zero-payments. |
Model |
Possible values are 0, 1 or 2 (default). See |
adj |
Method to adjust the estimated delay parameters for the distributional model. It should be 1 (default value) or 2. See |
boot.type |
Choose between values 1, to provide only the variance process, or 2 (default), to take into account the uncertainty of the parameters. |
B |
The number of simulations in the bootstrap algorithm. The defaul value is 999. |
Tail |
Logical. If |
summ.by |
A character value such as |
Tables |
Logical. If |
num.dec |
Number of decimal places used to report numbers in the tables. Used only if |
n.cal |
Integer specifying the number of most recent calendars which will be used to calculate the development factors. By default |
Fj.X |
Optional vector with lentgth m-1 (m being the dimension of the triangles) with the development factors to calculate the chain ladder estimates from |
Fj.N |
Optional vector with lentgth m-1 with the development factors to calculate the chain ladder estimates from |
If proper values are provided for the arguments sigma2
, mu
, inflat.i
, inflat.j
and Qi
then, they will be considered fixed as prior knowledge. Otherwise, if not specified, inflat.j
will be assumed to be a vector of ones, Qi
a vector of zeros, and the rest will be estimated using dcl.estimation
.
array.rbns.boot |
An array with dimensions (m,2m-1,B) (m being the dimension of the input triangles in DCL). Each |
Mat.rbns |
A matrix with B rows and 2m columns. Each |
array.ibnr.boot |
An array with dimensions (m,2m-1,B) (m being the dimension of the input triangles in DCL). Each |
Mat.ibnr |
A matrix with B rows and 2m columns. Each |
Mat.total |
A matrix with B rows and 2m columns. Each |
summ.rbns |
A dataframe with the summary of the RBNS distribution. Only if |
summ.ibnr |
A dataframe with the summary of the IBNR distribution. Only if |
summ.total |
A dataframe with the summary of the total(=RBNS+IBNR) distribution. Only if |
If boot.type=2
the function will take some time to perform the calculations. It increases with the dimension of the triangles and the specified number of simulations B
.
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P., Verrall, R. and Wuthrich, M.V. (2013) Double Chain Ladder, Claims Development Inflation and Zero Claims. Scandinavian Actuarial Journal. In press.
## Data application by in Martinez-Miranda, Nielsen, Verrall and Wuthrich (2013) data(NtrianglePrior) data(NpaidPrior) data(XtrianglePrior) ## Extract information about zero-claims and severity dev. inflation my.priors<-extract.prior(XtrianglePrior,NpaidPrior,NtrianglePrior,Plots=FALSE) my.inflat.j<-my.priors$inflat.j my.Qi<-my.priors$Qi ## Bootstrap cashflow incorporating prior knowledge about ## severity inflation and zero claims # Only variance process # Below only B=200 simulations for a fast example dist.priorC.I<-dcl.boot.prior(NtrianglePrior,XtrianglePrior, inflat.j=my.inflat.j,Qi=my.Qi,adj=2,Tail=FALSE,boot.type=1,B=200) Plot.cashflow(dist.priorC.I) ## Try to compare with DCL with no prior knowledge: # Only variance process # dist.dcl.I<-dcl.boot.prior(NtrianglePrior,XtrianglePrior,adj=2, # Tail=FALSE,boot.type=1) # Plot.cashflow(dist.dcl.I)
## Data application by in Martinez-Miranda, Nielsen, Verrall and Wuthrich (2013) data(NtrianglePrior) data(NpaidPrior) data(XtrianglePrior) ## Extract information about zero-claims and severity dev. inflation my.priors<-extract.prior(XtrianglePrior,NpaidPrior,NtrianglePrior,Plots=FALSE) my.inflat.j<-my.priors$inflat.j my.Qi<-my.priors$Qi ## Bootstrap cashflow incorporating prior knowledge about ## severity inflation and zero claims # Only variance process # Below only B=200 simulations for a fast example dist.priorC.I<-dcl.boot.prior(NtrianglePrior,XtrianglePrior, inflat.j=my.inflat.j,Qi=my.Qi,adj=2,Tail=FALSE,boot.type=1,B=200) Plot.cashflow(dist.priorC.I) ## Try to compare with DCL with no prior knowledge: # Only variance process # dist.dcl.I<-dcl.boot.prior(NtrianglePrior,XtrianglePrior,adj=2, # Tail=FALSE,boot.type=1) # Plot.cashflow(dist.dcl.I)
Compute the estimated parameters in the model (delay parameters, severity underwriting inflation, severity mean and variance) using the Double Chain Ladder method.
dcl.estimation( Xtriangle , Ntriangle , adj = 1 , Tables = TRUE , num.dec = 4 , n.cal = NA , Fj.X=NA , Fj.N=NA )
dcl.estimation( Xtriangle , Ntriangle , adj = 1 , Tables = TRUE , num.dec = 4 , n.cal = NA , Fj.X=NA , Fj.N=NA )
Xtriangle |
The paid run-off triangle: incremental aggregated payments. It should be a matrix with incremental aggregated payments located in the upper triangle and the lower triangle consisting in missing or zero values. |
Ntriangle |
The counts data triangle: incremental number of reported claims. It should be a matrix with the observed counts located in the upper triangle and the lower triangle consisting in missing or zero values. It should has the same dimension as |
adj |
Method to adjust the estimated delay parameters for the distributional model. It should be 1 (default value) or 2. See more in details below. |
Tables |
Logical. If |
num.dec |
Number of decimal places used to report numbers in the tables (if |
n.cal |
Integer specifying the number of most recent calendars which will be used to calculate the development factors. By default |
Fj.X |
Optional vector with lentgth m-1 (m being the dimension of the triangles) with the development factors to calculate the chain ladder estimates from |
Fj.N |
Optional vector with lentgth m-1 with the development factors to calculate the chain ladder estimates from |
Two models are estimated in the double chain ladder framework (Martinez-Miranda, Nielsen and Verrall 2012).
The basic DCL model only makes assumption on the first moments (see assumptions M1-M3 in Section 2 of the paper). From the two input triangles (Ntriangle
,Xtriangle
) the parameters involved in this model are estimated: pi.delay
(delay parameters that could be negative values and/or sum up above 1, by solving the linear system (7) in Section 3), mu
(mean of the individual payments in the first underwriting period, from expression (9)), inflat
(the underwriting severity mean inflation, from expression (8)), alpha.N
and beta.N
(the chain ladder parameters in the (OD)Poisson model for Ntriangle
from expressions (10)-(12)). Using the estimated parameters in this simpler model the predicted outstanding numbers (calculated from equations (14) and (15)) are exactly the classical chain ladder predictions (see Theorem 1 in pp. 67).
The second model is a distributional model (assumptions D1-D4 in Section 5) which allows to provide the full cash-flow. In this model the parameters are adjusted to match with the assumptions: pj
are delay probabilities resulting from adjusting the general parameters pi.delay
(defined in expressions (21)-(22)), mu.adj
is the corresponding adjusted mean factor and sigma2
is the variance factor (in expression (24)). The function dcl.estimation
suggest two different adjustments of the general pi.delay
, the user should choose the adjustment which does not modify substantially the IBNR/RBNS split in the basic model (M1-M3), see Martinez-Miranda, Nielsen, Verrall and W|thrich (2013) for a discussion.
pi.delay |
General delay parameters |
mu |
Mean severity factor |
inflat |
Underwriting severity inflation |
pj |
Delay probabilities (under a Multinomial assumption) |
mu.adj |
Adjusted mean factor corresponding to the |
sigma2 |
Variance severity factor |
phi |
Overdispersion parameter used to derive the estimate |
Ey |
Severity mean for each underwriting period |
Vy |
Severity variance for each underwriting period |
adj |
Type of adjusted used to derive the |
alpha.N |
Underwriting chain ladder parameter in the (OD)-Poisson model. Counts triangle (Ntriangle) |
beta.N |
Underwriting chain ladder parameter in the (OD)-Poisson model. Counts triangle (Ntriangle) |
Nhat |
The chain ladder preditions (counts triangle). It is a matrix having the chain ladder predictions in the future (lower triangle) and the fitted values in the past (upper triangle). |
alpha.X |
Underwriting chain ladder parameter in the (OD)-Poisson model. Paid triangle (Xtriangle) |
beta.X |
Underwriting chain ladder parameter in the (OD)-Poisson model. Paid triangle (Xtriangle) |
Xhat |
The chain ladder preditions (paid triangle). It is a matrix having the chain ladder predictions in the future (lower triangle) and the fitted values in the past (upper triangle). |
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76.
Martinez-Miranda, M.D., Nielsen, J.P., Verrall, R. and W|thrich, M.V. (2013) Double Chain Ladder, Claims Development Inflation and Zero Claims. Scandinavian Actuarial Journal.
Plot.dcl.par
, dcl.predict
,
bdcl.estimation
, idcl.estimation
, clm
data(NtriangleDCL) data(XtriangleDCL) # Estimation of the DCL parameters described in Martinez-Miranda, Nielsen and Verrall (2012) est1<-dcl.estimation(XtriangleDCL,NtriangleDCL) Plot.dcl.par(est1) # Compare two possible adjustmets to get distributional parameters # est1 with adj=1 pj.1<-est1$pj pi.delay<-est1$pi.delay est2<-dcl.estimation(XtriangleDCL,NtriangleDCL,adj=2,Tables=FALSE) pj.2<-est2$pj data.frame(pi.delay=pi.delay,pj.adj.1=pj.1,pj.adj.2=pj.2)
data(NtriangleDCL) data(XtriangleDCL) # Estimation of the DCL parameters described in Martinez-Miranda, Nielsen and Verrall (2012) est1<-dcl.estimation(XtriangleDCL,NtriangleDCL) Plot.dcl.par(est1) # Compare two possible adjustmets to get distributional parameters # est1 with adj=1 pj.1<-est1$pj pi.delay<-est1$pi.delay est2<-dcl.estimation(XtriangleDCL,NtriangleDCL,adj=2,Tables=FALSE) pj.2<-est2$pj data.frame(pi.delay=pi.delay,pj.adj.1=pj.1,pj.adj.2=pj.2)
Pointwise predictions by calendar years and rows of the outstanding liabilities. The predictions are splitted between RBNS and IBNR claims.
dcl.predict( dcl.par , Ntriangle , Model = 2 , Tail = TRUE , Tables = TRUE , summ.by="diag", num.dec = 2 )
dcl.predict( dcl.par , Ntriangle , Model = 2 , Tail = TRUE , Tables = TRUE , summ.by="diag", num.dec = 2 )
dcl.par |
A list object with the estimated parameters: the value returned by the functions |
Ntriangle |
Optional. The counts data triangle: incremental number of reported claims. It should be a matrix with the observed counts located in the upper triangle and the lower triangle consisting in missing or zero values. It should has the same dimension as the |
Model |
Possible values are 0, 1 or 2 (default). See more details below. |
Tail |
Logical. If |
Tables |
Logical. If |
summ.by |
A character value such as |
num.dec |
Number of decimal places used to report numbers in the tables. Used only if |
If Model=0
or Model=1
then the predictions are calculated using the DCL model parameters in assumptions M1-M3 (general delay parameters, see Martinez-Miranda, Nielsen and Verrall 2012). If Model=2
the adjusted delay probabilities (distributional model D1-D4) are considered. By choosing Model=0
the predictions are calculated ignoring the observed counts in Ntriangle
(also if the Ntriangle
is not specified). It should be specified to reproduce get the IBNR/RBNS split of classical paid chain ladder.
Choose summ.by="diag"
to calculate the predicted outstanding liabilities in the future calendar periods (diagonal sums), summ.by="row"
for sums by underwriting periods (row sums); or summ.by="cell"
to get only the the individual cell predictions.
Xrbns |
A matrix with dimension m by 2m-1 (m being the dimension of the input triangles in DCL) having the outstanding RBNS numbers as the entries. |
Drbns |
A vector with dimension 2m-1 with elements being the outstanding liabilities for RBNS claims in the future calendar periods (sums by diagonals). The last value is the RBNS reserve (overall sum). |
Rrbns |
A vector with dimension m with elements being the outstanding liabilities for RBNS claims at each underwriting period (sums by rows). The last value is the RBNS reserve (overall sum). |
Xibnr |
A matrix with dimension m by 2m-1 (m being the dimension of the input triangles in DCL) having the outstanding IBNR numbers as the entries. |
Dibnr |
A vector with dimension 2m-1 with elements being the outstanding liabilities for IBNR claims in the future calendar periods (sums by diagonals). The last value is the IBNR reserve (overall sum). |
Ribnr |
A vector with dimension m with elements being the outstanding liabilities for IBNR claims at each underwriting period (sums by rows). The last value is the RBNS reserve (overall sum). |
Xtotal |
A matrix with dimension m by 2m-1 (m being the dimension of the input triangles in DCL) having the outstanding total (=RBNS+IBNR) numbers as the entries. |
Dtotal |
A vector with dimension 2m-1 with elements being the outstanding liabilities for all claims in the future calendar periods (sums by diagonals). The last value is the total (=RBNS+IBNR) reserve (overall sum). |
Rtotal |
A vector with dimension m with elements being the outstanding liabilities for all claims at each underwriting period (sums by rows). The last value is the total (=RBNS+IBNR) reserve (overall sum). |
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76.
Martinez-Miranda, M.D., Nielsen, J.P., Verrall, R. and W|thrich, M.V. (2013) Double Chain Ladder, Claims Development Inflation and Zero Claims. Scandinavian Actuarial Journal.
dcl.estimation
, bdcl.estimation
, idcl.estimation
, dcl.predict.prior
## Data application by in Martinez-Miranda, Nielsen and Verrall (2012) data(NtriangleDCL) data(XtriangleDCL) # Estimation of the DCL parameters described est<-dcl.estimation(XtriangleDCL,NtriangleDCL) # with general delay parameters and ignoring Ntriangle to reproduce exactly chain ladder pred1<-dcl.predict(dcl.par=est,Model=1,Tail=FALSE) # with Modeled parameters (distributional Model) and ignoring Ntriangle pred2<-dcl.predict(dcl.par=est,Model=2,Tail=FALSE) # with Modeled parameters (distributional Model) using observed Ntriangle pred3<-dcl.predict(dcl.par=est,Ntriangle=NtriangleDCL,Model=2,Tail=FALSE) # providing the Tail, with Modeled parameters (distributional Model) pred4<-dcl.predict(dcl.par=est,Ntriangle=NtriangleDCL,Model=2,Tail=TRUE)
## Data application by in Martinez-Miranda, Nielsen and Verrall (2012) data(NtriangleDCL) data(XtriangleDCL) # Estimation of the DCL parameters described est<-dcl.estimation(XtriangleDCL,NtriangleDCL) # with general delay parameters and ignoring Ntriangle to reproduce exactly chain ladder pred1<-dcl.predict(dcl.par=est,Model=1,Tail=FALSE) # with Modeled parameters (distributional Model) and ignoring Ntriangle pred2<-dcl.predict(dcl.par=est,Model=2,Tail=FALSE) # with Modeled parameters (distributional Model) using observed Ntriangle pred3<-dcl.predict(dcl.par=est,Ntriangle=NtriangleDCL,Model=2,Tail=FALSE) # providing the Tail, with Modeled parameters (distributional Model) pred4<-dcl.predict(dcl.par=est,Ntriangle=NtriangleDCL,Model=2,Tail=TRUE)
Pointwise predictions by calendar years and rows of the outstanding liabilities. The predictions are splitted between RBNS and IBNR claims.
dcl.predict.prior( Ntriangle , Xtriangle , inflat.i , inflat.j , Qi , Model = 2, adj = 2, Tail = FALSE, Tables = TRUE, summ.by = "diag", num.dec = 2 )
dcl.predict.prior( Ntriangle , Xtriangle , inflat.i , inflat.j , Qi , Model = 2, adj = 2, Tail = FALSE, Tables = TRUE, summ.by = "diag", num.dec = 2 )
Ntriangle |
Optional. The counts data triangle: incremental number of reported claims. It should be a matrix with the observed counts located in the upper triangle and the lower triangle consisting in missing or zero values. It should has the same dimension as the |
Xtriangle |
The paid run-off triangle: incremental aggregated payments. It should be a matrix with incremental aggregated payments located in the upper triangle and the lower triangle consisting in missing or zero values. |
inflat.i |
Optional. A vector with dimension m (the dimension of the input triangles) specifying the severity inflation in the underwriting direction. If not specified it will be estimated using |
inflat.j |
Optional. A vector with dimension m specifying the severity inflation in the development direction. If not specified it will be assumed to be 1 and then the severity mean not depending on the development period. |
Qi |
Optional. A vector with dimension m specifying the probability of zero-claims for each underwriting period. If not specified then it will be assumed no zero-payments. |
Model |
Possible values are 0, 1 or 2 (default). See |
adj |
Method to adjust the estimated delay parameters for the distributional model. It should be 1 (default value) or 2. See |
Tail |
Logical. If |
Tables |
Logical. If |
summ.by |
A character value such as |
num.dec |
Number of decimal places used to report numbers in the tables. Used only if |
The predictions are calculated under the first moment assumptions in the DCL model (see M1-M3) in Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012). In this case the severity mean is specified as
inflat.i * (1-Qi) * inflat.j * mu
where inflat.i
, Qi
, inflat.j
and mu
are prior information specified by the user. With this specification, the prediction formula consists of the expectation (conditional expectation -if Ntriangle
is given and Model=0
) of the future (RBNS/IBNR) aggregated payments. See formulas (8)-(9) in the paper.
If the prior information is not provided the function will return the DCL predictions as dcl.predict
. The information about Qi
, inflat.j
can be extracted through DCL using extract.prior
.
Xrbns |
A matrix with dimension m by 2m-1 (m being the dimension of the input triangles in DCL) having the outstanding RBNS numbers as the entries. |
Drbns |
A vector with dimension 2m-1 with elements being the outstanding liabilities for RBNS claims in the future calendar periods (sums by diagonals). The last value is the RBNS reserve (overall sum). |
Rrbns |
A vector with dimension m with elements being the outstanding liabilities for RBNS claims at each underwriting period (sums by rows). The last value is the RBNS reserve (overall sum). |
Xibnr |
A matrix with dimension m by 2m-1 (m being the dimension of the input triangles in DCL) having the outstanding IBNR numbers as the entries. |
Dibnr |
A vector with dimension 2m-1 with elements being the outstanding liabilities for IBNR claims in the future calendar periods (sums by diagonals). The last value is the IBNR reserve (overall sum). |
Ribnr |
A vector with dimension m with elements being the outstanding liabilities for IBNR claims at each underwriting period (sums by rows). The last value is the RBNS reserve (overall sum). |
Xtotal |
A matrix with dimension m by 2m-1 (m being the dimension of the input triangles in DCL) having the outstanding total (=RBNS+IBNR) numbers as the entries. |
Dtotal |
A vector with dimension 2m-1 with elements being the outstanding liabilities for all claims in the future calendar periods (sums by diagonals). The last value is the total (=RBNS+IBNR) reserve (overall sum). |
Rtotal |
A vector with dimension m with elements being the outstanding liabilities for all claims at each underwriting period (sums by rows). The last value is the total (=RBNS+IBNR) reserve (overall sum). |
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76.
Martinez-Miranda, M.D., Nielsen, J.P., Verrall, R. and Wuthrich, M.V. (2013) Double Chain Ladder, Claims Development Inflation and Zero Claims. Scandinavian Actuarial Journal. In press.
dcl.estimation
, bdcl.estimation
, idcl.estimation
, dcl.predict
,extract.prior
## Data application by in Martinez-Miranda, Nielsen, Verrall and Wuthrich (2013) data(NtrianglePrior) data(NpaidPrior) data(XtrianglePrior) Ntriangle<-NtrianglePrior Xtriangle<-XtrianglePrior Npaid<-NpaidPrior ## Extract information about zero-claims and severity dev. inflation my.priors<-extract.prior(Xtriangle,Npaid,Ntriangle) my.inflat.j<-my.priors$inflat.j my.Qi<-my.priors$Qi # Reproducing the poinwise predicions (tables 3,4,5) in the paper # Note: in the paper we did not use Ntriangle in the predictions # when modelling the predictions are slightly different ## Prior A: only using development year inflation m<-nrow(Ntriangle) preds.prior.A.gen<-dcl.predict.prior(Ntriangle,Xtriangle, inflat.j=my.inflat.j,Qi=rep(0,m),Model=0,adj=1, Tail=FALSE,Tables=TRUE,summ.by="diag",num.dec=2) preds.prior.A.mod<-dcl.predict.prior(Ntriangle,Xtriangle, inflat.j=my.inflat.j,Qi=rep(0,m),Model=2,adj=2, Tail=FALSE,Tables=TRUE,summ.by="diag",num.dec=2) ## Prior B: only using zero claims inflation preds.prior.B.gen<-dcl.predict.prior(Ntriangle,Xtriangle, inflat.j=rep(1,m),Qi=my.Qi,Model=0,adj=1, Tail=FALSE,Tables=TRUE,summ.by="diag",num.dec=2) preds.prior.B.mod<-dcl.predict.prior(Ntriangle,Xtriangle, inflat.j=rep(1,m),Qi=my.Qi,Model=2,adj=2, Tail=FALSE,Tables=TRUE,summ.by="diag",num.dec=2) ## Prior C: only using development inflation and zero claims inflation preds.prior.C.gen<-dcl.predict.prior(Ntriangle,Xtriangle, inflat.j=my.inflat.j,Qi=my.Qi,Model=0,adj=1, Tail=FALSE,Tables=TRUE,summ.by="diag",num.dec=2) preds.prior.C.mod<-dcl.predict.prior(Ntriangle,Xtriangle, inflat.j=my.inflat.j,Qi=my.Qi,Model=2,adj=2, Tail=FALSE,Tables=TRUE,summ.by="diag",num.dec=2)
## Data application by in Martinez-Miranda, Nielsen, Verrall and Wuthrich (2013) data(NtrianglePrior) data(NpaidPrior) data(XtrianglePrior) Ntriangle<-NtrianglePrior Xtriangle<-XtrianglePrior Npaid<-NpaidPrior ## Extract information about zero-claims and severity dev. inflation my.priors<-extract.prior(Xtriangle,Npaid,Ntriangle) my.inflat.j<-my.priors$inflat.j my.Qi<-my.priors$Qi # Reproducing the poinwise predicions (tables 3,4,5) in the paper # Note: in the paper we did not use Ntriangle in the predictions # when modelling the predictions are slightly different ## Prior A: only using development year inflation m<-nrow(Ntriangle) preds.prior.A.gen<-dcl.predict.prior(Ntriangle,Xtriangle, inflat.j=my.inflat.j,Qi=rep(0,m),Model=0,adj=1, Tail=FALSE,Tables=TRUE,summ.by="diag",num.dec=2) preds.prior.A.mod<-dcl.predict.prior(Ntriangle,Xtriangle, inflat.j=my.inflat.j,Qi=rep(0,m),Model=2,adj=2, Tail=FALSE,Tables=TRUE,summ.by="diag",num.dec=2) ## Prior B: only using zero claims inflation preds.prior.B.gen<-dcl.predict.prior(Ntriangle,Xtriangle, inflat.j=rep(1,m),Qi=my.Qi,Model=0,adj=1, Tail=FALSE,Tables=TRUE,summ.by="diag",num.dec=2) preds.prior.B.mod<-dcl.predict.prior(Ntriangle,Xtriangle, inflat.j=rep(1,m),Qi=my.Qi,Model=2,adj=2, Tail=FALSE,Tables=TRUE,summ.by="diag",num.dec=2) ## Prior C: only using development inflation and zero claims inflation preds.prior.C.gen<-dcl.predict.prior(Ntriangle,Xtriangle, inflat.j=my.inflat.j,Qi=my.Qi,Model=0,adj=1, Tail=FALSE,Tables=TRUE,summ.by="diag",num.dec=2) preds.prior.C.mod<-dcl.predict.prior(Ntriangle,Xtriangle, inflat.j=my.inflat.j,Qi=my.Qi,Model=2,adj=2, Tail=FALSE,Tables=TRUE,summ.by="diag",num.dec=2)
A way of extracting information about zero-claims and severity development inflation through the DCL method applied to two counts triangles: number of payments and number of reported claims.
extract.prior(Xtriangle, Npaid, Ntriangle, Plots = TRUE , n.cal = NA , Fj.X = NA , Fj.N = NA , Fj.Npaid = NA )
extract.prior(Xtriangle, Npaid, Ntriangle, Plots = TRUE , n.cal = NA , Fj.X = NA , Fj.N = NA , Fj.Npaid = NA )
Xtriangle |
The paid run-off triangle: incremental aggregated payments. It should be a matrix with incremental aggregated payments located in the upper triangle and the lower triangle consisting in missing or zero values. |
Npaid |
A run-off (incremental) triangle with the number of payments. It should be a matrix with the observed counts located in the upper triangle and the lower triangle consisting in missing or zero values. It should has the same dimension as |
Ntriangle |
The counts data triangle: incremental number of reported claims. It should be a matrix with the observed counts located in the upper triangle and the lower triangle consisting in missing or zero values. It should has the same dimension as |
Plots |
Logical. If TRUE (default) it is showed a two by one plot showing the extracted severity inflation in the development direction and the probability of zero-claims for each underwriting period. |
n.cal |
Integer specifying the number of most recent calendars which will be used to calculate the development factors. By default |
Fj.X |
Optional vector with lentgth m-1 (m being the dimension of the triangles) with the development factors to calculate the chain ladder estimates from |
Fj.Npaid |
Optional vector with lentgth m-1 with the development factors to calculate the chain ladder estimates from |
Fj.N |
Optional vector with lentgth m-1 with the development factors to calculate the chain ladder estimates from |
The function implements the strategy proposed in the paper by Martinez-Miranda, Nielsen, Verrall and Wuthrich (2013) to extract information for additional triangles (see "Section 5: An example showing how other data can be used to provide prior information in practice"). The derived severity inflation inflat.j
does not extend to the tail. If you want provide the tail, by using dcl.predict.prior
, the vector should be extended to have dimension 2m-1, otherwise the tail will be not provided (as was done in the cited paper).
inflat.j |
A vector with dimension m with the extracted severity inflation in the development direction. |
Qi |
A vector with dimension m with the extracted probability of zero-claims for undewriting period. |
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P., Verrall, R. and Wuthrich, M.V. (2013) Double Chain Ladder, Claims Development Inflation and Zero Claims. Scandinavian Actuarial Journal. In press.
dcl.predict.prior
, dcl.estimation
## Data application in Martinez-Miranda, Nielsen, Verrall and Wuthrich (2013) data(NtrianglePrior) data(NpaidPrior) data(XtrianglePrior) extract.prior(XtrianglePrior,NpaidPrior,NtrianglePrior)
## Data application in Martinez-Miranda, Nielsen, Verrall and Wuthrich (2013) data(NtrianglePrior) data(NpaidPrior) data(XtrianglePrior) extract.prior(XtrianglePrior,NpaidPrior,NtrianglePrior)
Switch from an incremental to a cumulative triangle
get.cumulative( triangle )
get.cumulative( triangle )
triangle |
An incremental run-off triangle |
The cumulative triangle
The methods in this the DCL package works normally on incremental triangles
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
data(NtriangleDCL) get.cumulative(NtriangleDCL)
data(NtriangleDCL) get.cumulative(NtriangleDCL)
Switch from an cumulative to an incremental triangle
get.incremental( triangle )
get.incremental( triangle )
triangle |
A cumulative run-off triangle |
The incremental triangle
The methods in this the DCL package works normally on incremental triangles
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
data(NtriangleDCL) Ntriangle.cum<-get.cumulative(NtriangleDCL) get.incremental(Ntriangle.cum)
data(NtriangleDCL) Ntriangle.cum<-get.cumulative(NtriangleDCL) get.incremental(Ntriangle.cum)
Estimate the parameters in the Double Chain Ladder model model: delay parameters, severity mean and variance. The inflation parameter is corrected using the incurred data to provide the incurred cashflow.
idcl.estimation( Xtriangle , Ntriangle , Itriangle , adj = 1 , Tables = TRUE , num.dec = 4 , n.cal = NA , Fj.X = NA , Fj.N = NA , Fj.I = NA)
idcl.estimation( Xtriangle , Ntriangle , Itriangle , adj = 1 , Tables = TRUE , num.dec = 4 , n.cal = NA , Fj.X = NA , Fj.N = NA , Fj.I = NA)
Xtriangle |
The paid run-off triangle: incremental aggregated payments. It should be a matrix with incremental aggregated payments located in the upper triangle and the lower triangle consisting in missing or zero values. |
Ntriangle |
The counts data triangle: incremental number of reported claims. It should be a matrix with the observed counts located in the upper triangle and the lower triangle consisting in missing or zero values. It should has the same dimension as |
Itriangle |
The incurred triangle. It should be a matrix with incurred data located in the upper triangle. It is an incremental run-off triangle with the same dimension as |
adj |
Method to adjust the estimated delay parameters for the distributional model. It should be 1 (default value) or 2. See more in details below. |
Tables |
Logical. If TRUE (default) it is showed a table with the estimated parameters. |
num.dec |
Number of decimal places used to report numbers in the tables (if Tables=TRUE). |
n.cal |
Integer specifying the number of most recent calendars which will be used to calculate the development factors. By default |
Fj.X |
Optional vector with lentgth m-1 (m being the dimension of the triangles) with the development factors to calculate the chain ladder estimates from |
Fj.N |
Optional vector with lentgth m-1 with the development factors to calculate the chain ladder estimates from |
Fj.I |
Optional vector with lentgth m-1 with the development factors to calculate the chain ladder estimates from |
Two model are estimated in the double chain ladder framework as with the dcl.estimation
function. In this case the DCL inflation parameter estimated by dcl.estimation
from Ntriangle
and Xtriangle
is adjusted so that the derived predicted reserve is equal to the incurred reserve. Use this estimation method if you want the RBNS/IBNR split the incurred reserve and the incurred full cashflow.
pi.delay |
General delay parameters |
mu |
Mean severity factor |
inflat |
Underwriting severity inflation (BDCL inflation) |
inflat.DCL |
Underwriting severity inflation (DCL inflation) |
pj |
Delay probabilities (under a Multinomial assumption) |
mu.adj |
Adjusted mean factor corresponding to the |
sigma2 |
Variance severity factor |
phi |
Overdispersion parameter used to derive the estimate |
Ey |
Severity mean for each underwriting period |
Vy |
Severity variance for each underwriting period |
adj |
Type of adjusted used to derive the |
alpha.N |
Underwriting chain ladder parameter in the (OD)-Poisson model. Counts triangle (Ntriangle) |
beta.N |
Underwriting chain ladder parameter in the (OD)-Poisson model. Counts triangle (Ntriangle) |
Nhat |
The chain ladder preditions (counts triangle). It is a matrix having the chain ladder predictions in the future (lower triangle) and the fitted values in the past (upper triangle). |
alpha.X |
Underwriting chain ladder parameter in the (OD)-Poisson model. Paid triangle (Xtriangle) |
beta.X |
Underwriting chain ladder parameter in the (OD)-Poisson model. Paid triangle (Xtriangle) |
Xhat |
The chain ladder preditions (paid triangle). It is a matrix having the chain ladder predictions in the future (lower triangle) and the fitted values in the past (upper triangle). |
alpha.I |
Underwriting chain ladder parameter in the (OD)-Poisson model. Incurred triangle (Itriangle) |
beta.I |
Underwriting chain ladder parameter in the (OD)-Poisson model. Incurred triangle (Itriangle) |
CL.I.i |
Outstanding incurred numbers (row sums of the lower predicted triangle) from classical chain ladder on the incurred triangle. |
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76. Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2013) Double Chain Ladder and Bornhuetter-Ferguson. North Americal Actuarial Journal, 17(2), 101-113.
Plot.dcl.par
, dcl.predict
,
dcl.estimation
, bdcl.estimation
data(NtriangleBDCL) data(XtriangleBDCL) data(ItriangleBDCL) my.idcl.par<-idcl.estimation(XtriangleBDCL,NtriangleBDCL,ItriangleBDCL) # Parameters Plot.dcl.par(my.idcl.par,type.inflat='IDCL') # IDCL Predictions by diagonals (future calendar years) preds.idcl.diag<-dcl.predict(my.idcl.par,NtriangleBDCL,num.dec=0) # Comparing with the BDCL method my.bdcl.par<-bdcl.estimation(XtriangleBDCL,NtriangleBDCL,ItriangleBDCL) # Parameters shown in Table 1 Plot.dcl.par(my.bdcl.par,type.inflat='BDCL') # BDCL Predictions by diagonals (future calendar years) preds.bdcl.diag<-dcl.predict(my.bdcl.par,NtriangleBDCL,num.dec=0)
data(NtriangleBDCL) data(XtriangleBDCL) data(ItriangleBDCL) my.idcl.par<-idcl.estimation(XtriangleBDCL,NtriangleBDCL,ItriangleBDCL) # Parameters Plot.dcl.par(my.idcl.par,type.inflat='IDCL') # IDCL Predictions by diagonals (future calendar years) preds.idcl.diag<-dcl.predict(my.idcl.par,NtriangleBDCL,num.dec=0) # Comparing with the BDCL method my.bdcl.par<-bdcl.estimation(XtriangleBDCL,NtriangleBDCL,ItriangleBDCL) # Parameters shown in Table 1 Plot.dcl.par(my.bdcl.par,type.inflat='BDCL') # BDCL Predictions by diagonals (future calendar years) preds.bdcl.diag<-dcl.predict(my.bdcl.par,NtriangleBDCL,num.dec=0)
Real motor data from a major insurer. It is a yearly run-off (incremental) triangle consisting of the incurred data during 19 years. These data were used in the empirical illustration provided by Martinez-Miranda, Nielsen and Verrall (2013).
data(ItriangleBDCL)
data(ItriangleBDCL)
Matrix with dimension 19 by 19: 19 undewriting years and 19 development years.
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2013) Double Chain Ladder and Bornhuetter-Fergusson. North American Actuarial Journal, 17(2), 101-113.
data(ItriangleBDCL) data(XtriangleBDCL) m<-nrow(XtriangleBDCL) clm.I<-clm(ItriangleBDCL) alpha.I<-clm.I$alpha # The total paid for each accident year in the past Ri.X<-rowSums(XtriangleBDCL,na.rm=TRUE) # Incurred outstanding numbers Ri.CL.incurred<-alpha.I-Ri.X Total.CL.incurred<- sum(Ri.CL.incurred,na.rm=TRUE) ## Compare with CL on paid data clm.X<-clm(XtriangleBDCL) Xhat<-as.matrix(clm.X$triangle.hat) Ri.CL.paid<-rowSums(Xhat)-rowSums(XtriangleBDCL,na.rm=TRUE) Total.CL.paid<- sum(Ri.CL.paid,na.rm=TRUE) # the predictions by rows data.frame(underw.year=c(1:m,"Total"),CLM.paid=c(Ri.CL.paid,Total.CL.paid), CLM.incurred=round(c(Ri.CL.incurred,Total.CL.incurred),4)) # now the predictions by diagonals inflat.factor<-Ri.CL.incurred/Ri.CL.paid inflat.factor[Ri.CL.paid==0]<-1 # the lower triangle from incurred chain ladder is defined as: Ihat<-Xhat for (i in 1:m) Ihat[i,]<-Xhat[i,]*inflat.factor[i] # now the sums by diagonals Diag.CL.paid<-sapply(split(Xhat, row(Xhat)+col(Xhat)), sum, na.rm=TRUE) Dclm.paid<-c(Diag.CL.paid[-(1:m)]) Total.CL.paid<- sum(Dclm.paid,na.rm=TRUE) Dclm.paid<-c(Dclm.paid,Total.CL.paid) Diag.CL.inc<-sapply(split(Ihat, row(Ihat)+col(Ihat)), sum, na.rm=TRUE) Dclm.inc<-c(Diag.CL.inc[-(1:m)]) Total.CL.inc<- sum(Dclm.inc,na.rm=TRUE) Dclm.inc<-c(Dclm.inc,Total.CL.inc) # A table with the chain ladder predictions (paid and incurred data) data.frame(Future.years=c(1:(m-1),'Tot.'), clm.paid=round(Dclm.paid),clm.incurred=round(Dclm.inc))
data(ItriangleBDCL) data(XtriangleBDCL) m<-nrow(XtriangleBDCL) clm.I<-clm(ItriangleBDCL) alpha.I<-clm.I$alpha # The total paid for each accident year in the past Ri.X<-rowSums(XtriangleBDCL,na.rm=TRUE) # Incurred outstanding numbers Ri.CL.incurred<-alpha.I-Ri.X Total.CL.incurred<- sum(Ri.CL.incurred,na.rm=TRUE) ## Compare with CL on paid data clm.X<-clm(XtriangleBDCL) Xhat<-as.matrix(clm.X$triangle.hat) Ri.CL.paid<-rowSums(Xhat)-rowSums(XtriangleBDCL,na.rm=TRUE) Total.CL.paid<- sum(Ri.CL.paid,na.rm=TRUE) # the predictions by rows data.frame(underw.year=c(1:m,"Total"),CLM.paid=c(Ri.CL.paid,Total.CL.paid), CLM.incurred=round(c(Ri.CL.incurred,Total.CL.incurred),4)) # now the predictions by diagonals inflat.factor<-Ri.CL.incurred/Ri.CL.paid inflat.factor[Ri.CL.paid==0]<-1 # the lower triangle from incurred chain ladder is defined as: Ihat<-Xhat for (i in 1:m) Ihat[i,]<-Xhat[i,]*inflat.factor[i] # now the sums by diagonals Diag.CL.paid<-sapply(split(Xhat, row(Xhat)+col(Xhat)), sum, na.rm=TRUE) Dclm.paid<-c(Diag.CL.paid[-(1:m)]) Total.CL.paid<- sum(Dclm.paid,na.rm=TRUE) Dclm.paid<-c(Dclm.paid,Total.CL.paid) Diag.CL.inc<-sapply(split(Ihat, row(Ihat)+col(Ihat)), sum, na.rm=TRUE) Dclm.inc<-c(Diag.CL.inc[-(1:m)]) Total.CL.inc<- sum(Dclm.inc,na.rm=TRUE) Dclm.inc<-c(Dclm.inc,Total.CL.inc) # A table with the chain ladder predictions (paid and incurred data) data.frame(Future.years=c(1:(m-1),'Tot.'), clm.paid=round(Dclm.paid),clm.incurred=round(Dclm.inc))
It is a yearly run-off (incremental) triangle consisting of the number of non-zero payments during 14 years. These data were used in the empirical illustration provided by Martinez-Miranda, Nielsen, Verrall and Wuthrich (2013).
data(NpaidPrior)
data(NpaidPrior)
Matrix with dimension 14 by 14: 14 undewriting years and 14 development years.
Martinez-Miranda, M.D., Nielsen, J.P., Verrall, R. and Wuthrich, M.V. (2013) Double Chain Ladder, Claims Development Inflation and Zero Claims. Scandinavian Actuarial Journal. In press.
data(NpaidPrior) Plot.triangle(NpaidPrior)
data(NpaidPrior) Plot.triangle(NpaidPrior)
Real motor data from a major insurer. It is a yearly run-off (incremental) triangle consisting of the number of reported claims during 19 years. These data were used in the empirical illustration provided by Martinez-Miranda, Nielsen and Verrall (2013).
data(NtriangleBDCL)
data(NtriangleBDCL)
Matrix with dimension 19 by 19: 19 undewriting years and 19 development years.
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2013) Double Chain Ladder and Bornhuetter-Fergusson. North American Actuarial Journal, 17(2), 101-113.
data(NtriangleBDCL) Plot.triangle(NtriangleBDCL, Histogram=TRUE) Plot.triangle(NtriangleBDCL) # Classical chain ladder method clm(NtriangleBDCL)
data(NtriangleBDCL) Plot.triangle(NtriangleBDCL, Histogram=TRUE) Plot.triangle(NtriangleBDCL) # Classical chain ladder method clm(NtriangleBDCL)
Real motor data from a major insurer. It is a yearly run-off (incremental) triangle consisting of the number of reported claims during 10 years. These data were used in the empirical illustration provided by Martinez-Miranda, Nielsen and Verrall (2012).
data(NtriangleDCL)
data(NtriangleDCL)
Matrix with dimension 10 by 10: 10 undewriting years and 10 development years.
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76.
data(NtriangleDCL) Plot.triangle(NtriangleDCL, Histogram=TRUE) Plot.triangle(NtriangleDCL) # Classical chain ladder method clm(NtriangleDCL)
data(NtriangleDCL) Plot.triangle(NtriangleDCL, Histogram=TRUE) Plot.triangle(NtriangleDCL) # Classical chain ladder method clm(NtriangleDCL)
It is a yearly run-off (incremental) triangle consisting of the number of reported claims during 14 years. These data were used in the empirical illustration provided by Martinez-Miranda, Nielsen, Verrall and Wuthrich (2013).
data(NtrianglePrior)
data(NtrianglePrior)
Matrix with dimension 14 by 14: 14 undewriting years and 14 development years.
Martinez-Miranda, M.D., Nielsen, J.P., Verrall, R. and Wuthrich, M.V. (2013) Double Chain Ladder, Claims Development Inflation and Zero Claims. Scandinavian Actuarial Journal. In press.
data(NtrianglePrior) Plot.triangle(NtrianglePrior, Histogram=TRUE) Plot.triangle(NtrianglePrior) # Classical chain ladder method clm(NtrianglePrior)
data(NtrianglePrior) Plot.triangle(NtrianglePrior, Histogram=TRUE) Plot.triangle(NtrianglePrior) # Classical chain ladder method clm(NtrianglePrior)
Provide histograms and boxplots of the RBNS, IBNR and total(=RBNS+IBNR) cashflows. The boxplots corresponds to the distribution of the outstanding liabities in the future calendar periods. The histograms show the distribution of the reserve (overall total).
Plot.cashflow( cashflow )
Plot.cashflow( cashflow )
cashflow |
A list object returned by the function |
The cashflow should be derived by specifying the parameter summ.by="diag"
in the function dcl.boot
or dcl.boot.prior
.
No returned value.
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76.
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2013) Double Chain Ladder and Bornhuetter-Ferguson. North Americal Actuarial Journal, 17(2), 101-113.
Martinez-Miranda, M.D., Nielsen, J.P., Verrall, R. and Wuthrich, M.V. (2013) Double Chain Ladder, Claims Development Inflation and Zero Claims. Scandinavian Actuarial Journal. In press.
dcl.boot
, dcl.boot.prior
, dcl.estimation
# Results described in the data application by Martinez-Miranda, Nielsen and Verrall (2012) data(NtriangleDCL) data(XtriangleDCL) # Estimation of the DCL parameters est<-dcl.estimation(XtriangleDCL,NtriangleDCL) # Full cashflow considering the tail (only variance process) # Below only B=200 simulations for a fast example boot1<-dcl.boot(dcl.par=est,Ntriangle=NtriangleDCL,boot.type=1,B=200) Plot.cashflow(boot1)
# Results described in the data application by Martinez-Miranda, Nielsen and Verrall (2012) data(NtriangleDCL) data(XtriangleDCL) # Estimation of the DCL parameters est<-dcl.estimation(XtriangleDCL,NtriangleDCL) # Full cashflow considering the tail (only variance process) # Below only B=200 simulations for a fast example boot1<-dcl.boot(dcl.par=est,Ntriangle=NtriangleDCL,boot.type=1,B=200) Plot.cashflow(boot1)
Show a plot with the estimates of the chain ladder parameters and the development factors
Plot.clm.par( clm.par )
Plot.clm.par( clm.par )
clm.par |
A list object with the estimated chain ladder parameters: the value returned by the functions |
No returned value
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76.
clm
, dcl.estimation
, Plot.triangle
data(NtriangleDCL) my.clm.par<-clm(NtriangleDCL) Plot.clm.par(my.clm.par)
data(NtriangleDCL) my.clm.par<-clm(NtriangleDCL) Plot.clm.par(my.clm.par)
Show a two by two plot with the estimated parameters in the Double Chain Ladder model
Plot.dcl.par( dcl.par , type.inflat = 'DCL' )
Plot.dcl.par( dcl.par , type.inflat = 'DCL' )
dcl.par |
A list object with the estimated parameters: the value returned by the functions |
type.inflat |
Method used to estimate the inflation . Possible values are: 'DCL' (default) if it was used |
No returned value
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76.
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2013) Double Chain Ladder and Bornhuetter-Ferguson. North Americal Actuarial Journal, 17(2), 101-113.
dcl.estimation
, bdcl.estimation
, idcl.estimation
data(NtriangleDCL) data(XtriangleDCL) # Estimation of the DCL parameters described in Martinez-Miranda, Nielsen and Verrall (2012) my.dcl.par<-dcl.estimation(XtriangleDCL,NtriangleDCL) Plot.dcl.par(my.dcl.par)
data(NtriangleDCL) data(XtriangleDCL) # Estimation of the DCL parameters described in Martinez-Miranda, Nielsen and Verrall (2012) my.dcl.par<-dcl.estimation(XtriangleDCL,NtriangleDCL) Plot.dcl.par(my.dcl.par)
Graphical representaion of an incremental run-off triangle.
Plot.triangle( triangle , Histogram = FALSE , tit='' )
Plot.triangle( triangle , Histogram = FALSE , tit='' )
triangle |
The loss incremental triangle. It should be a matrix with the observed counts (number of reported claims, number of payments etc.), payments or incurred data, located in the upper triangle. The lower triangle consisting in missing or zero values. |
Histogram |
Logical. If TRUE then a histogram representing the triangle is shown. If FALSE (default) then a classical representation of the triangle is shown, this is, a matplot of the row sums from both incremental and cummulative triangle. |
tit |
Character. Title to be added to the plot |
A histogram representation of the histogram is consistent with the run-off triangles of counts such as the number of reported claims, number of payments, etc. See Martinez-Miranda, Nielsen, Sperlich and Verrall (2013) for a further explanation.
No returned value
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76.
Martinez-Miranda M.D., Nielsen, J.P., Sperlich, S., Verrall, R. (2013). Continuous Chain Ladder: Reformulating and generalizing a classical insurance problem. Experts Systems with Applications, 40(14), 5588-5603.
## Plotting a counts triangle (number of reported claims) data(NtriangleDCL) Plot.triangle(NtriangleDCL, Histogram=TRUE,tit=expression(paste('Counts: ',N[ij]))) # Classical CL predictions clm.N<-clm(NtriangleDCL) Nhat<-clm.N$triangle.hat # Compare the original histogram with the CL projections Plot.triangle(Nhat, Histogram=TRUE,tit='CL Predictions') ## Plotting a paid triangle (number of reported claims) data(XtriangleDCL) Plot.triangle(XtriangleDCL)
## Plotting a counts triangle (number of reported claims) data(NtriangleDCL) Plot.triangle(NtriangleDCL, Histogram=TRUE,tit=expression(paste('Counts: ',N[ij]))) # Classical CL predictions clm.N<-clm(NtriangleDCL) Nhat<-clm.N$triangle.hat # Compare the original histogram with the CL projections Plot.triangle(Nhat, Histogram=TRUE,tit='CL Predictions') ## Plotting a paid triangle (number of reported claims) data(XtriangleDCL) Plot.triangle(XtriangleDCL)
A back-test to validate incurred reserve (IDCL) against paid reserve (DCL) or the paid with a Bornhuetter-Fergusson adjustment (BDCL). The validation strategy consists of: (1) Cut ncut=1,2,. diagonals from the observed paid triangle. (2) Apply the three methods (DCL, BDCL and IDCL), and (3) compare forecasts and actual values.
validating.incurred( ncut = 0 , Xtriangle , Ntriangle , Itriangle , Model = 0 , Plot.box = TRUE , Tables = TRUE , num.dec = 4 , n.cal = NA , Fj.X = NA , Fj.N = NA , Fj.I = NA)
validating.incurred( ncut = 0 , Xtriangle , Ntriangle , Itriangle , Model = 0 , Plot.box = TRUE , Tables = TRUE , num.dec = 4 , n.cal = NA , Fj.X = NA , Fj.N = NA , Fj.I = NA)
ncut |
The number of last periods (diagonals) to cut from the paid triangle. The default value is 0 (see details below). |
Xtriangle |
The paid run-off triangle: incremental aggregated payments. It should be a matrix with incremental aggregated payments located in the upper triangle and the lower triangle consisting in missing or zero values. |
Ntriangle |
The counts data triangle: incremental number of reported claims. It should be a matrix with the observed counts located in the upper triangle and the lower triangle consisting in missing or zero values. It should has the same dimension as |
Itriangle |
The incurred triangle. It should be a matrix with incurred data located in the upper triangle. It is an incremental run-off triangle with the same dimension as |
Model |
Possible values are 0, 1 or 2 (default). See more details below. |
Plot.box |
Logical. If |
Tables |
Logical. If |
num.dec |
Number of decimal places used to report numbers in the tables. Used only if |
n.cal |
Integer specifying the number of most recent calendars which will be used to calculate the development factors. By default |
Fj.X |
Optional vector with lentgth m-1 (m being the dimension of the triangles) with the development factors to calculate the chain ladder estimates from |
Fj.N |
Optional vector with lentgth m-1 with the development factors to calculate the chain ladder estimates from |
Fj.I |
Optional vector with lentgth m-1 with the development factors to calculate the chain ladder estimates from |
If ncut=0
the test is not computed but a plot showing the difference among the three methods is shown. It is recommended to start with this step to have some insight about the problem. Note that the first part in the IDCL inflation is usually very volatile since no many outstanding liabitities arise from the first underwriting periods.
The predicion errors provided through the value pe.vector
are calculated as follow:
For individual cells: pe.cells = sum(ce.dif^2) / sum(ce.obs^2)
with ce.dif
being the vector with the differences between the predicted cells and the actual cells (ce.obs
).
For diagonals: pe.diags = sum(ca.dif^2) / sum(ca.obs^2)
with ca.dif
being the vector with the differences between the predicted calendars and the actual calendars (ca.obs
).
For the total reserve: pe.tot = sum(tot.dif^2) / sum(tot.obs^2)
with tot.dif
the absolute difference between the predicted reserve and the actual reserve (tot.obs).
pe.vector |
A vector (length 10) with elements being (in the following order): |
Xdif |
A matrix with the individual cells errors (see |
Inflat.DCL |
The estimated underwriting DCL inflation using |
Inflat.BDCL |
The estimated underwriting BDCL inflation using |
Inflat.IDCL |
The estimated underwriting IDCL inflation using |
To validate classical chain ladder on paid data against classical chain ladder on incurred data it should be used Model=0
(see dcl.predict
) for more details.
M.D. Martinez-Miranda, J.P. Nielsen and R. Verrall
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2013) Double Chain Ladder and Bornhuetter-Ferguson. North Americal Actuarial Journal, 17(2), 101-113.
Martinez-Miranda M.D., Nielsen, J.P., Sperlich, S., Verrall, R. (2013). Continuous Chain Ladder: Reformulating and generalizing a classical insurance problem. Experts Systems with Applications, 40(14), 5588-5603.
dcl.estimation
, bdcl.estimation
, idcl.estimation
, ,dcl.predict
data(NtriangleBDCL) data(XtriangleBDCL) data(ItriangleBDCL) Ntriangle<-NtriangleBDCL Xtriangle<-XtriangleBDCL Itriangle<-ItriangleBDCL ## First compare the three methods to be validated (three different inflations) validating.incurred(ncut=0,Xtriangle,Ntriangle,Itriangle) ## Now perform a backtest cutting up to four calendars backward test.res<-matrix(NA,4,10) par(mfrow=c(2,2),cex.axis=0.9,cex.main=1) par(mar=c(1.5,1.5,1.5,1.5),oma=c(1,0.5,0.5,0.2),mgp=c(3,0.5,0)) for (i in 1:4) { res<-validating.incurred(ncut=i,Xtriangle,Ntriangle,Itriangle,Tables=FALSE) test.res[i,]<-as.numeric(res$pe.vector) } test.res<-as.data.frame(test.res) names(test.res)<-c("num.cut","pe.point.DCL","pe.point.BDCL","pe.point.IDCL", "pe.calendar.DCL","pe.calendar.BDCL","pe.calendar.IDCL", "pe.total.DCL","pe.total.BDCL","pe.total.IDCL") print(test.res)
data(NtriangleBDCL) data(XtriangleBDCL) data(ItriangleBDCL) Ntriangle<-NtriangleBDCL Xtriangle<-XtriangleBDCL Itriangle<-ItriangleBDCL ## First compare the three methods to be validated (three different inflations) validating.incurred(ncut=0,Xtriangle,Ntriangle,Itriangle) ## Now perform a backtest cutting up to four calendars backward test.res<-matrix(NA,4,10) par(mfrow=c(2,2),cex.axis=0.9,cex.main=1) par(mar=c(1.5,1.5,1.5,1.5),oma=c(1,0.5,0.5,0.2),mgp=c(3,0.5,0)) for (i in 1:4) { res<-validating.incurred(ncut=i,Xtriangle,Ntriangle,Itriangle,Tables=FALSE) test.res[i,]<-as.numeric(res$pe.vector) } test.res<-as.data.frame(test.res) names(test.res)<-c("num.cut","pe.point.DCL","pe.point.BDCL","pe.point.IDCL", "pe.calendar.DCL","pe.calendar.BDCL","pe.calendar.IDCL", "pe.total.DCL","pe.total.BDCL","pe.total.IDCL") print(test.res)
Real motor data from a major insurer. It is a run-off (incremental) triangle consisting of the aggregated payments during 19 years. These data were used in the empirical illustration provided by Martinez-Miranda, Nielsen and Verrall (2013).
data(XtriangleBDCL)
data(XtriangleBDCL)
Matrix with dimension 19 by 19: 19 undewriting years and 19 development years.
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2013) Double Chain Ladder and Bornhuetter-Fergusson. North American Actuarial Journal, 17(2), 101-113.
data(XtriangleBDCL) Plot.triangle(XtriangleBDCL) # Classical chain ladder method clm(XtriangleBDCL)
data(XtriangleBDCL) Plot.triangle(XtriangleBDCL) # Classical chain ladder method clm(XtriangleBDCL)
Real motor data from a major insurer. It is a yearly run-off (incremental) triangle consisting of the aggregated payments during 10 years. These data were used in the empirical illustration provided by Martinez-Miranda, Nielsen and Verrall (2012).
data(XtriangleDCL)
data(XtriangleDCL)
Matrix with dimension 10 by 10: 10 undewriting years and 10 development years.
Martinez-Miranda, M.D., Nielsen, J.P. and Verrall, R. (2012) Double Chain Ladder. Astin Bulletin, 42/1, 59-76.
data(XtriangleDCL) Plot.triangle(XtriangleDCL) # Classical chain ladder method clm(XtriangleDCL)
data(XtriangleDCL) Plot.triangle(XtriangleDCL) # Classical chain ladder method clm(XtriangleDCL)
It is a run-off (incremental) triangle consisting of the aggregated payments during 19 years. These data were used in the empirical illustration provided by Martinez-Miranda, Nielsen, Verrall and Wuthrich (2013).
data(XtrianglePrior)
data(XtrianglePrior)
Matrix with dimension 14 by 14: 14 undewriting years and 14 development years.
Martinez-Miranda, M.D., Nielsen, J.P., Verrall, R. and Wuthrich, M.V. (2013) Double Chain Ladder, Claims Development Inflation and Zero Claims. Scandinavian Actuarial Journal. In press.
data(XtrianglePrior) Plot.triangle(XtrianglePrior) # Classical chain ladder method clm(XtrianglePrior)
data(XtrianglePrior) Plot.triangle(XtrianglePrior) # Classical chain ladder method clm(XtrianglePrior)