Freakonometrics

To content | To menu | To search

Tag - provisions

Entries feed - Comments feed

Friday, June 29 2012

Provisionnement et modélisation individuelle des sinistres

Il y a quelques années, Guillaume Beneteau avait fait son mémoire d'actuariat, en France, sur l'utilisation de données individuelles pour faire du provisionnement (au lieu de travailler sur des donnees aggregées dans des triangles). Dans le même genre d'idées, Ngoc An Dinh et Gilles Chau viennent de soutenir leur mémoire cette semaine à l'ENSAE, encadré par Frédéric Planchet. L'idée était de modéliser les processus de règlements avec deux approches : la première intitulée dynamiques markoviennes qui considère les processus de règlements (avec une certaine dynamique sous-jacente), et une basée sur des modèles linéaires généralisés qui suppose que les règlements appartiennent à une famille de distribution paramétrique et les paramètres dépendent des facteurs liés aux règlements. Le mémoire est en ligne sur le blog, ainsi que le code R.

Tuesday, December 13 2011

ACT2040: examen final (suite et fin)

Comme annoncé, l'examen terminal a lieu ce matin, et il est basé sur des données mises en ligne sur le blog depuis une dizaine de jours. L'énoncé est un peu longue, avec une bonne trentaine de pages de sorties informatiques, et un énoncé comprenant une trentaine de questions. Des éléments de correction sont en ligne ci-dessous (plutôt que de taper une correction en pdf, autant mettre le code en ligne).

On suppose importée les vases (sinon, le code est ici). Pour la première partie - sur la tarification (a priori) - la fréquence annuelle de sinistres est tout simplement

Continue reading...

Tuesday, November 29 2011

ACT2040: chain ladder

Pour la fin du cours, on a commencé à voir le méthode dit Chain Ladder. Pour cela, rappelons que l'on dispose du jeu de données suivants, de paiements cumulés,

> source("http://perso.univ-rennes1.fr/
arthur.charpentier/bases.R")
> PAID
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,] 3209 4372 4411 4428 4435 4456
[2,] 3367 4659 4696 4720 4730   NA
[3,] 3871 5345 5398 5420   NA   NA
[4,] 4239 5917 6020   NA   NA   NA
[5,] 4929 6794   NA   NA   NA   NA
[6,] 5217   NA   NA   NA   NA   NA
> PAID/PREMIUM
       [,1]   [,2]   [,3]   [,4]   [,5]   [,6]
[1,] 0.6989 0.9522 0.9607 0.9644 0.9660 0.9705
[2,] 0.7206 0.9972 1.0051 1.0102 1.0124     NA
[3,] 0.7960 1.0991 1.1100 1.1145     NA     NA
[4,] 0.8191 1.1433 1.1632     NA     NA     NA
[5,] 0.8688 1.1976     NA     NA     NA     NA
[6,] 0.8112     NA     NA     NA     NA     NA

si on visualise l'évolution du ratio sinistre/primes. On peut visualiser les facteurs de transition dans le tableau ci-dessous,

> PAID[,2:6]/PAID[,1:5]
[,1]     [,2]     [,3]     [,4]     [,5]
[1,] 1.362418 1.008920 1.003854 1.001581 1.004735
[2,] 1.383724 1.007942 1.005111 1.002119       NA
[3,] 1.380780 1.009916 1.004076       NA       NA
[4,] 1.395848 1.017407       NA       NA       NA
[5,] 1.378373       NA       NA       NA       NA
[6,]       NA       NA       NA       NA       NA

Toutefois, pour faire le ratio moyen, on ne fait pas la moyenne des ratios, ou alors à condition de pondérer correctement, par exemple pour passer de la première à la seconde ligne du tableau,

> k=1
> weighted.mean(x=PAID[,k+1]/PAID[,k],w=PAID[,k],na.rm=TRUE)
[1] 1.380933
> sum(PAID[1:(6-k),k+1])/sum(PAID[1:(6-k),k])
[1] 1.380933
En itérant, on récupère l'ensemble des coefficients de transition,
> lambda=rep(NA,5)
> for(k in 1:5){
+ lambda[k]=(sum(PAID[1:(6-k),k+1])/sum(PAID[1:(6-k),k]))}
> lambda
[1] 1.380933 1.011433 1.004343 1.001858 1.004735
Une fois récupérés tous les coefficients de transition, on peut compléter la partie inférieure du triangle (ou de la matrice),
> PROJECTION=PAID
> for(k in 1:5){
+ PROJECTION[((7-k):6),k+1]=PROJECTION[((7-k):6),k]*lambda[k]
+ print(PROJECTION)}
[,1]     [,2] [,3] [,4] [,5] [,6]
[1,] 3209 4372.000 4411 4428 4435 4456
[2,] 3367 4659.000 4696 4720 4730   NA
[3,] 3871 5345.000 5398 5420   NA   NA
[4,] 4239 5917.000 6020   NA   NA   NA
[5,] 4929 6794.000   NA   NA   NA   NA
[6,] 5217 7204.327   NA   NA   NA   NA
[,1]     [,2]     [,3] [,4] [,5] [,6]
[1,] 3209 4372.000 4411.000 4428 4435 4456
[2,] 3367 4659.000 4696.000 4720 4730   NA
[3,] 3871 5345.000 5398.000 5420   NA   NA
[4,] 4239 5917.000 6020.000   NA   NA   NA
[5,] 4929 6794.000 6871.672   NA   NA   NA
[6,] 5217 7204.327 7286.691   NA   NA   NA
[,1]     [,2]     [,3]     [,4] [,5] [,6]
[1,] 3209 4372.000 4411.000 4428.000 4435 4456
[2,] 3367 4659.000 4696.000 4720.000 4730   NA
[3,] 3871 5345.000 5398.000 5420.000   NA   NA
[4,] 4239 5917.000 6020.000 6046.147   NA   NA
[5,] 4929 6794.000 6871.672 6901.518   NA   NA
[6,] 5217 7204.327 7286.691 7318.339   NA   NA
[,1]     [,2]     [,3]     [,4]     [,5] [,6]
[1,] 3209 4372.000 4411.000 4428.000 4435.000 4456
[2,] 3367 4659.000 4696.000 4720.000 4730.000   NA
[3,] 3871 5345.000 5398.000 5420.000 5430.072   NA
[4,] 4239 5917.000 6020.000 6046.147 6057.383   NA
[5,] 4929 6794.000 6871.672 6901.518 6914.344   NA
[6,] 5217 7204.327 7286.691 7318.339 7331.939   NA
[,1]     [,2]     [,3]     [,4]     [,5]     [,6]
[1,] 3209 4372.000 4411.000 4428.000 4435.000 4456.000
[2,] 3367 4659.000 4696.000 4720.000 4730.000 4752.397
[3,] 3871 5345.000 5398.000 5420.000 5430.072 5455.784
[4,] 4239 5917.000 6020.000 6046.147 6057.383 6086.065
[5,] 4929 6794.000 6871.672 6901.518 6914.344 6947.084
[6,] 5217 7204.327 7286.691 7318.339 7331.939 7366.656
où on visualise, étape par étape, le remplissage de la partie inférieure de la matrice. La dernière colonne contient des prédictions des charges ultimes, par année de survenance, et sur la diagonale, on a toujours le montant de paiements déjà effectués par année de survenance. Le montant de provision est alors la différence entre ce que l'on pense payer, et ce que l'on a déjà payé.
> PROJECTION[,6]-diag(PAID[,6:1])
[1]    0.00   22.3968   35.7838   66.0646  153.0835 2149.6564
> sum(PROJECTION[,6]-diag(PAID[,6:1]))
[1] 2426.985



Monday, October 25 2010

Statistique de l'assurance STT6705V, partie 8

Les vidéos du dernier cours sont en ligne ici et (désolé pour le retard). La semaine étant une semaine de relâche à Montréal, il n'y aura pas de cours cette semaine...
Pour reprendre les simulations qui n'ont pas marché au tableau (j'avais oublié restreindre un vecteur de paramètres et j'avais un problème sur le nom d'un paramètre), je mets ci-dessous des lignes de code qui tournent. Pour commencer, on importe le triangle, et on fait une simple régression log-Poisson,
> source("http://perso.univ-rennes1.fr/arthur.charpentier/bases.R")
> an <- 6; ligne = rep(1:an, each=an);
>          colonne = rep(1:an, an)
> passe = (ligne + colonne - 1)<=an;
> n = sum(passe)
> INC=PAID
> INC[,2:6]=PAID[,2:6]-PAID[,1:5]
> Y = as.vector(INC)
> lig = as.factor(colonne)
> col = as.factor(ligne)
> base=data.frame(Y,lig,col,passe)
> reg=glm(Y~lig+col,data=base,  family=poisson("log"))
> YP=predict(reg,newdata=base,  type="response")
 
ensuite, on fait un peut de bootstrap pour générer des pseudo-triangles, et on les utilise pour quantifier l'erreur d'estimation du montant de provision,
> set.seed(1)
> R1=rep(NA,2000)
> R2=rep(NA,2000)
> R3=rep(NA,2000)
> for(s in 1:2000){
+ erreursim=sample(erreur,
+    size=36,replace=TRUE)
+ Ysim=YP+erreursim*sqrt(YP)
+ Ysim[passe==FALSE]=NA
+ basesim=data.frame(Ysim,lig,col)
+ if(min(Ysim[passe==TRUE])>0){
+ reg=glm(Ysim~lig+col,data=basesim,  family=quasipoisson("log"))
+ YPs=predict(reg,newdata=base, type="response")
+ nsim=sum(passe==FALSE)
+ phi=summary(reg)$dispersion
+ MU=YPs[passe==FALSE]
   # il manquait ici la spécification des indices
[passe==FALSE]
+ R1[s]=sum(rpois(nsim,lambda=MU))
+ R2[s]=sum(rnbinom(nsim,mu=MU,  size=MU/(phi*MU-1)))
+ R3[s]=sum(rgamma(nsim,shape=MU/phi,  scale=phi))
+ }}
.On peut alors faire des dessins pour visualiser les trois distributions du montant de provisions (ou plutôt des scénarios générés de paiements futur), avec une loi de Poisson tout d'abord, en rouge,

On a alors deux méthodes qui tentent d'approcher la loi quasi poisson, i.e. une loi Gamma en bleu,

et une loi binomiale négative (qui ne semble pas tourner ici...). A suivre donc...