Freakonometrics

To content | To menu | To search

Wednesday, December 5 2012

Interview sur mutualisation versus segmentation

Hier, j'ai été un peu surpris quand un ancien collègue en France m'a parlé d'une interview exclusive (de moi) sur http://argusdelassurance.com/.... Puis je me suis souvenu qu'il y a quelques semaines, Madeleine m'avait contacter pour me poser quelques questions sur les assurance « à la carte », et la plus grande modularité des produits. Elle avait mis le doigt sur deux questions importantes, "comment procéder au calcul quand les offres sont personnalisées" et "est-ce intéressant pour l'assureur, pour l’assureur" ? Pour la première partie, c'est technique, et ça correspond à ce qu'on fait dans les cours de tarification (on en reparle dans quelques semaines, promis). Par contre le second point est plus troublant. Avec la théorie économique d'un côté, et les principes d'antisélection et d'aléa moral, mais qui insiste sur la nécessité, et pas l'intérêt de la segmentation... Afin de partager mon point de vue sur ces problèmes, j'avais voulu reprendre simplement un modèle qu'on avait utilisé dans le livre avec Michel Denuit (tome 1). Cet exemple nécessite un peu de formalisation, et j'ai été très surpris de voir que Madeleine l'avait gardé. Mieux, qu'elle l'avait clarifié (il faut dire qu'elle m'avait demandé un courriel en fin de journée, et que j'avais tapé ça rapidement, tout en faisant les devoirs des grands, et le bain de la plus petite... quand je relis ce que j'avais envoyé, et ce qu'elle en a fait, je suis admiratif). Mais prenons deux minutes pour reformuler cette histoire de segmentation d'un marché de l'assurance...

Commençons par le cas le plus simple, sans segmentation, avec mutualisation parfaite (et donc prime unique). En utilisant un principe de prime pure, si http://latex.codecogs.com/gif.latex?S désigne la perte (aléatoire) pour les assurés, la prime à payer serait http://latex.codecogs.com/gif.latex?\mathbb{E}(S). Et dans ce cas, en moyenne, le bilan de l'assureur serait équilibré, car http://latex.codecogs.com/gif.latex?\mathbb{E}(S-\mathbb{E}(S))=0. Si on regarde l'incertitude associée aux dépenses (disons la variance pour faire simple), les assurés n'ont aucune variance car la dépense est la même pour tous. Tout le risque (la variance) est à la charge de l'assureur. On peut résumer ça dans le petit tableau suivant,


Assurés
Assureur
Dépense

http://latex.codecogs.com/gif.latex?\mathbb{E}(S)

http://latex.codecogs.com/gif.latex?S-\mathbb{E}(S)

Dépense moyenne

http://latex.codecogs.com/gif.latex?\mathbb{E}(S)

http://latex.codecogs.com/gif.latex?0
Variance
http://latex.codecogs.com/gif.latex?0

http://latex.codecogs.com/gif.latex?\text{Var}(S)

On a ici la répartition des dépenses et du risque (que nous appellerons variance, à la Markowitz) entre l'assureur et les assurés assez simple, et on a un mécanisme de transfert des risques pur.

Continuons dans un monde parfait (disons avec information parfaite) mais avec cette fois de la segmentation (parfaite). Autrement dit, si la variable de risque est un variable http://latex.codecogs.com/gif.latex?\Omega, connue par l'assureur, alors il devrait faire payer http://latex.codecogs.com/gif.latex?\mathbb{E}(S|\Omega) pour un assuré portant le risque http://latex.codecogs.com/gif.latex?\Omega. Cette fois, la décomposition des dépenses et des risques se fait de la manière suivante


Assurés
Assureur
Dépense

http://latex.codecogs.com/gif.latex?\mathbb{E}(S|\Omega)

http://latex.codecogs.com/gif.latex?S-\mathbb{E}(S)

Dépense moyenne

http://latex.codecogs.com/gif.latex?\mathbb{E}(S)

http://latex.codecogs.com/gif.latex?0
Variance

http://latex.codecogs.com/gif.latex?\text{Var}(\mathbb{E}(S|\Omega))

http://latex.codecogs.com/gif.latex?\text{Var}(S-\mathbb{E}(S|\Omega))

Cette fois, l'assureur prend à sa charge la composante des risques purement aléatoire, mais les assurés prennent à leur charge une partie de la variabilité, correspondant à l'hétérogénéité du portefeuille. On notera que la variance de l'assureur est ici http://latex.codecogs.com/gif.latex?\mathbb{E}(\text{Var}(S|\Omega)): on retrouve ici la formule classique de décomposition de la variance

http://latex.codecogs.com/gif.latex?\text{Var}(\mathbb{E}(S|\Omega))+\mathbb{E}(\text{Var}(S|\Omega))=\text{Var}(S)

On a ici une première composante qui repose sur les assurés, et la seconde sur les assureurs. C'est d'ailleurs le théorème de Pythagore, avec la variance liée à l'hétérogénéité à gauche, et à droite, la composante purement aléatoire.

Mais dans la vraie vie http://latex.codecogs.com/gif.latex?\Omega (le risque intrinsèque de l'assuré) n'est pas connu. On doit faire une segmentation imparfaite: on dispose de quelques variables explicatives, que l'on notera par un vecteur http://latex.codecogs.com/gif.latex?\boldsymbol{X}, et on va essayer de construire un proxy de la variable de risque http://latex.codecogs.com/gif.latex?\Omega (c'est le but des méthodes économétriques appliquées en tarification). La décomposition entre l'assureur et ses assurés se fait de la manière suivante


Assurés
Assureur
Dépense

http://latex.codecogs.com/gif.latex?\mathbb{E}(S|\boldsymbol{X})

http://latex.codecogs.com/gif.latex?S-\mathbb{E}(S|\boldsymbol{X})

Dépense moyenne

http://latex.codecogs.com/gif.latex?\mathbb{E}(S)

http://latex.codecogs.com/gif.latex?0
Variance

http://latex.codecogs.com/gif.latex?\text{Var}(\mathbb{E}(S|\boldsymbol{X}))

http://latex.codecogs.com/gif.latex?\mathbb{E}(\text{Var}(S|\boldsymbol{X}))

qui correspond à la décomposition précédente, en remplaçant la variable non-observée http://latex.codecogs.com/gif.latex?\Omega par le proxy construit à partir de http://latex.codecogs.com/gif.latex?\boldsymbol{X}.   Là encore, en moyenne, l'assureur est à l'équilibre, car

http://latex.codecogs.com/gif.latex?\mathbb{E}(\mathbb{E}(S|\boldsymbol{X}))=\mathbb{E}(S)

autrement dit segmenter n'a pas de conséquence, en moyenne, sur le résultat de l'assureur. Par contre, la variance de l'assureur est ici

http://latex.codecogs.com/gif.latex?\mathbb{E}(\text{Var}(S|\boldsymbol{X}))=\mathbb{E}(\text{Var}(S|\Omega))+\mathbb{E}(\text{Var}(\mathbb{E}(S|\Omega)|\boldsymbol{X}))

et la variance total du portefeuille est alors la somme

http://latex.codecogs.com/gif.latex?\text{Var}(\mathbb{E}(S|\boldsymbol{X}))+\mathbb{E}(\text{Var}(S|\Omega))+\mathbb{E}(\text{Var}(\mathbb{E}(S|\Omega)|\boldsymbol{X}))

avec à gauche, un terme lié à la segmentation, au centre le hasard, et à droite, un terme de solidarité entre assuré (qu'on pourrait appeler de mutualisation), lié au fait que le risque n'est que partiellement assurable. C'est la mutualisation résiduelle qui peut exister en assurance santé si on exclue les tests génétiques: à partir de quelles variables explicatives http://latex.codecogs.com/gif.latex?\boldsymbol{X}, on peut inférer le risque de maladie, mais moins que si des tests génétiques permettaient d'approcher http://latex.codecogs.com/gif.latex?\Omega avec une plus grande précision... Autrement dit, segmenter imparfaitement, ou partiellement, permet de maintenir un effet de mutualisation dans le portefeuille.... de faire de l'assurance en quelque sorte...

Wednesday, November 21 2012

Actuariat en Afrique subsaharienne francophone

Depuis que le blog (ou le précédent) existe, je sais (par les messages que je reçois par courriel) qu’il est beaucoup lu en Afrique (francophone). J’ai reçu avant hier un livre publié par Aymric Kamega et Frédéric Planchet, tiré de la thèse de doctorat d’Aymric (en ligne sur http://halshs.archives-ouvertes.fr/) défendue en décembre dernier. J’étais alors rapporteur extérieur, et j’avais souligné l’intérêt des travaux d’Aymric dans le cadre de la volonté de la CIMA (autorité de contrôle régionale des marchés d’assurance pour l’Afrique subsaharienne francophone) de fournir aux assureurs de la région des outils adaptés. En particulier des tables de mortalité d’expérience, propres à la région. KamegaEn effet, (comme le rappelle Aymric), suite aux états généraux (de l’assurance vie)  en 2007, le principe de la construction de tables de mortalité d’expérience a été adopté en remplacement des tables de mortalité de la population générale française entre 1960 et 1964 (tables dites PM 60-64 et PF 60-64) jusqu’alors imposées. Aymric avait travaillé sur ce sujet, et a soutenu une thèse de doctorat qui avait fait l'unanimité. J’avais pris beaucoup de plaisir à lire la thèse, j’en pense que j’en aurais à lire le livre (disponible sur le site de l’éditeur http://seddita.com/).

Monday, February 27 2012

Promesse et rationalité économique (à court terme)

Non, je vais pas faire une analyse des promesses en cette année électorale (bien que le sujet pourrait être amusant, on peut penser aux propos du candidat Newt Gingrich qui veut que la lune devienne un état américain, ici ou ). Non, en fait je voulais faire un billet sur le sujet les assureurs sont-ils vraiment des voleurs ? En effet, lorsqu'en classe on présente le fonctionnement d'un contrat d'assurance - en particulier lorsque l'on parle de tarification et de l'inversion du cycle de production, ou du provisionnement - on explique que l'assuré achète une promesse: celle de se faire indemniser les sinistres survenus pendant la période dite de couverture. Car formellement, c'est bien de cela qu'il s'agit. Sauf qu'il y a toujours quelqu'un pour faire noter que ce n'est peut-être pas aussi simple et que l'assureur, souvent, rechigne à payer.

En fait, il est parfaitement rationnel - d'un point de vue économique (on s'entend) - que l'assureur négocie. En tous les cas si l'assureur a une vision à très court terme... Et c'est ce que justifient Briegleb & Lemaire (1982), sur l'analyse du marchandage ou Lemaire (1982) (dont sera très largement inspiré ce billet).
Considérons un cas très simple: un assuré a subit une perte http://freakonometrics.blog.free.fr/public/perso5/tribunal33.gif (connue, de l'assuré comme de l'assureur). Mais l'assureur refuse de payer. Et l'assuré envisage d'aller au tribunal. Afin de voir s'il s'agit d'une décision rationnelle, on suppose que l'assuré (http://freakonometrics.blog.free.fr/public/perso5/tribunal18.gif) avait une richesse  avant que le sinistre ne survienne, qu'aller en justice lui coûte , et qu'il estime que sa probabilité de gagner le procès est http://freakonometrics.blog.free.fr/public/perso5/tribunal05.gif. De son coté, la compagnie (http://freakonometrics.blog.free.fr/public/perso5/tribunal19.gif) d'assurance a une richesse , qu'aller en justice lui coute http://freakonometrics.blog.free.fr/public/perso5/tribunal04.gif, et que la probabilité que la compagnie perde le procès est - selon la compagnie - http://freakonometrics.blog.free.fr/public/perso5/tribunal06.gif (les http://freakonometrics.blog.free.fr/public/perso5/tribunal.gif sont alors les probabilités que l'assuré gagne son procès, mais vu des deux cotés). Au tribunal, on suppose que le juge rend un verdict du genre tout ou rien (on n'autorise pas ici de compensation plus importantes que le cout réel du sinistre, et on ne parle pas non plus de remboursement des frais d'avocat en cas de victoire du procès).
L'espérance d'utilité de l'assuré est

http://freakonometrics.blog.free.fr/public/perso5/tribunal07.gif

alors que pour la compagnie d'assurance, son espérance d'utilité est

http://freakonometrics.blog.free.fr/public/perso5/tribunal08.gif

La situation est Pareto optimale si

http://freakonometrics.blog.free.fr/public/perso5/tribunal09.gif

Si on suppose que les agents sont risquophobe (i.e. http://freakonometrics.blog.free.fr/public/perso5/tribunal10.gif décroissante), alors

http://freakonometrics.blog.free.fr/public/perso5/tribunal11.gif

alors que

http://freakonometrics.blog.free.fr/public/perso5/tribunal12.gif

Aussi, une condition nécessaire pour que la situation soit Pareto-optimale est que

http://freakonometrics.blog.free.fr/public/perso5/tribunal14.gif

i.e. http://freakonometrics.blog.free.fr/public/perso5/tribuanl16.gif. Aller au tribunal n'est pas Pareto optimal si http://freakonometrics.blog.free.fr/public/perso5/tribunal18.gif croit plus en ses raisons de gagner que http://freakonometrics.blog.free.fr/public/perso5/tribunal19.gif. Si http://freakonometrics.blog.free.fr/public/perso5/tribunal17.gif, il peut alors être optimal de ne pas aller au tribunal.... On ne dit pas ici qu'il faut que la compagnie indemnise (intégralement) l'assuré, mais que l'assureur et l'assuré peuvent avoir intérêt a trouver une solution amiable...
Si http://freakonometrics.blog.free.fr/public/perso5/tribuanl16.gif, il peut être intéressant d'aller au tribunal... mais pas forcément... Du point de vue de l'assureur, on peut supposer que sa richesse lui permet de ne pas être risquophobe, ou au moins d’être risque neutre (face a cette assuré au moins). Elle est donc indifférente entre aller au tribunal (et avoir un rendement incertain) et verser un règlement amiable si le versement correspond à son espérance de perte si elle va au procès. Autrement dit http://freakonometrics.blog.free.fr/public/perso5/tribunal20.gif. L'assuré acceptera cette somme si l'utilité qu'il en tire est plus grande que l'espérance d'utilité qu'il aura en allant au tribunal,

http://freakonometrics.blog.free.fr/public/perso5/tribunal21.gif

La différence entre le terme de gauche et le terme de droite est une fonction http://freakonometrics.blog.free.fr/public/perso5/tribunal22.gif. Si l'agent a une utilité exponentielle

http://freakonometrics.blog.free.fr/public/perso5/tribunal23.gif

alors

http://freakonometrics.blog.free.fr/public/perso5/tribunal25.gif

doit être une fonction positive. Un calcul rapide de dérivées montre que cette fonction est convexe, avec un minimum atteint en

http://freakonometrics.blog.free.fr/public/perso5/tribunal26.gif

Moralité ?
  • pour les petits et pour les gros sinistres, il est normal que l'assureur et l'assuré cherchent une solution amiable (transaction)
  • en revanche, pour les sinistres de cout intermédiaire, il peut être légitime d'aller au tribunal (procès).

Maintenant, si on a les grandes directions... peut-être peut-on essayer de mieux comprendre quelle serait le montant de la transaction dans le cas ou une solution amiable est envisagée. Nash (1950) a envisagé un jeu non-coopératif afin de décrire le marchandage. La transaction optimale est la quantité http://freakonometrics.blog.free.fr/public/perso5/tribunal28.gif qui maximise le produit des deux gains d'utilité (cf Nash (1950) ou Roth (1979))

http://freakonometrics.blog.free.fr/public/perso5/tribunal30.gif

La condition du premier ordre donne l'équation suivante

http://freakonometrics.blog.free.fr/public/perso5/tribunal27.gif

Si on fait un peu de calcul numérique, on note que la solution http://freakonometrics.blog.free.fr/public/perso5/tribunal32.gif est décroissante en http://freakonometrics.blog.free.fr/public/perso5/tribunal31.gif: plus l'assuré est risquophobe, plus faible sera la montant de la transaction.... Ce qui n'est pas surprenant, on retrouve ici un résultat noté dans Peeters (1981), Roth (1982) ou ecnore Osbourne (1985). Maintenant, sur le modèle théorique on pourrait bien entendu argumenter que le tribunal fonctionne selon une règle trop simple du tout ou rien, et qu'un procès peut couter beaucoup cher que le simple remboursement du cout du sinistre. Ou qu'il pourrait créer une jurisprudence. On pourrait aussi regarder économétriquement le lien entre le cout des sinistres et les montants des ententes amiables (c'est ce que fait Ayusoa, Bermúdezb & Santolinoc (2012)) mais c'est une autre histoire.... ou ça pourrait être le sujet pour une autre histoire... à suivre donc.

Saturday, April 2 2011

Variable annuities is not a systemic risk ?

The Geneva Association just published on its website an interesting report on variable annuities and systemic risk (online here). Based on a definition of potentially systemically risky activities, on interconnectedness or substitutability, the report claims that since "none of the criteria is triggered", variables annuities is "not a potentially systemically risk activity". Even if "short-term effects are conceivable". I guess it is a diplomatic way to say it...
Note that a series of slides can also be downloaded (there) on insurance and systemic risk. But that deserves a more detailed post.

Friday, February 25 2011

Pour une tarification de l'assurance automobile à l'aide du tour de poitrine !

Plusieurs sites spécialisés en assurance commencent à évoquer un arrêté probable de la cour européenne sur la discrimination en assurance (par exemple ici ou ). Une des bases (économiques) de l'assurance est le principe d'Akerlof qui pousse les assureurs à segmenter par classe de risque. Afin de segmenter, et de révéler les classes de risques, on utilise l'historique de sinistralité (information dite a posteriori), ou bien des informations exogènes (dites a priori) sur le conducteur, le véhicule, son usage, etc. Par exemple on peut utiliser l'ancienneté du véhicule, et le nombre de kilomètre effectués (en moyenne) par le conducteur, comme sur le graphique ci-dessous (retrouvé dans les transparents que l'on utilisait avec François Bucchini quand on donnait le cours d'assurance dommage à l'ENSAE, les probas étant "normalisées" dans une espère de base 100)

ou encore le type de carburant utilisé (diesel ou essence)

On retrouve que plus on conduit, plus la probabilité d'avoir un accident augmente, mais le carburant et l'âge du véhicule semblent être aussi des variables discriminantes. Et parmi les variables qui semblent significatives (pour expliquer la probabilité d'avoir un accident), il y a le sexe (croisé ici avec le kilométrage, comme auparavant),

Alors l'effet peut sembler marginal sur ce graphique... mais c'est loin d'être le cas. Par exemple, sans utiliser des techniques très poussées en économétrie, on peut regarder le nombre moyen de sinistres, et le coût moyen de sinistres, par sexe, et par tranche d'âge (voire aussi par CSP et par puissance du véhicule). Dans une étude faite par un assureur, j'avais trouvé les chiffres suivants

En haut à droite (beaucoup d'accidents, et coût - en moyenne - élevé) on retrouve les jeunes hommes. Donc oui, les jeunes hommes sont significativement beaucoup plus risqués que les autres conducteurs. Et le soucis est que, si on ne segmente pas, Georges Akerlof nous explique que le marché de l'assurance disparait, les "bons" risques ne voulant plus payer pour les "mauvais" risques. Sans pour autant rentrer dans une spirale infernale de la segmentation, il est bon que les primes restent corrélées au risque sous-jacent.

Les assureurs prétendent qu'ils ne «ne font pas de la discrimination, ils font de la différenciation ». Je ne rentrerais pas sur les débats de terminologie (pas aujourd'hui en tous les cas), mais le but n'est pas de trouver des variables "explicatives" de la sinistralité au sens causal (malgré la terminologie usuelle des économètres) mais de trouver des variables "corrélées" avec une forte sinistralité, et de les utiliser pour segmenter. Les assureurs européen avaient, jusqu'alors, bénéficié d'un sursis dans le calcul des primes qui leur permet de pratiquer des tarifs différents « lorsque le sexe est un facteur déterminant dans l’évaluation des risques».

Dans un cours d'analyse de données, j'avais montré (ici) qu'à partir des notes de étudiant(e)s à différents examens, je pouvais prédire le sexe des étudiants. Bon, l'étude avait été faite rapidement, avec un petit jeu de données (et donc sans population d'apprentissage et de test), mais il est facile de trouver des variables permettant de deviner le sexe d'un conducteur. D'aucuns pourraient être tentés d'utiliser la pointure des chaussures, mais personnellement je préférerais le tour de poitrine, ou un tour de poitrine ramené à un tour de hanche. Je suis presque sûr qu'avec de telles observations, on peut avoir des variables fortement corrélées avec la survenance d'accident ! En tous les cas ça promet un peu d'animation chez les agents d'assurance ! voire chez les chirurgiens esthétiques (retirer les implants mammaires pour faire baisser sa prime d'assurance auto, voilà qui est original) !

Friday, February 4 2011

Les prix ont-ils vraiment monté ?

J'avais évoqué l'autre jour (ici) les ordres de grandeurs sur les indemnisations des accidents corporels.

Hier soir, Benoit m'a envoyé un rapport publié par le Comité consultatif du secteur financier (en ligne ici) sur l'évolution des prix de l'assurance. J'ai retenu deux graphiques assez surprenant, où les primes d'assurance auto sont comparées à l'évolution des prix de consommations usuelles,
et afin de comparer à un autre produit d'assurance, on peut regarder l'assurance multirisque habitation,
Je suis assez surpris par l'évolution des prix de l'assurance auto, même si j'ai du mal à comprendre comment on peut construire un "indice des prix de l'assurance" (les contrats étant tous complètement différents en terme de garantie, de franchises) Ne mesure-ton pas ici un changement en terme de couverture des assurés, plus que de prix...? J'aimerais bien connaître l'évolution des franchises dans le temps par exemple, ou la proportion des contrats achetés pour lesquels le conducteur est assuré...

Tuesday, January 4 2011

Les 950 catastrophes naturelles de 2010

Depuis hier, je réponds à pas mal de questions sur la déclaration de Munich Re, sur le fait que 2010 ait été une "année record " en terme de catastrophes naturelles, avec 950 "catastrophes" (cf ici). Alors petite précision méthodologique important: ce qu'a annoncé Munich Re, c'est "950 events of 2010" qui "include the cat classes 1 – 6". Y compris les classes 1 et 2 qui sont assez floues, on en conviendra...En fait, quand on pense à "catastrophes", on pense à des choses assez violentes, par à un coup de vent qui fait tomber des branches sur un toit (catégorie 1 me semble-t-il). Si on se focalise sur la dernière catégorie, on observe l'évolution suivante (l'évolution en noir était dans les graphiques publiés par Munich Re, qui pour rappel vend des couvertures contre ces évènements),et si on ne retient que les évènements climatiques (weather related)

Il faudrait vérifier pour 2010 (avec le détail sur les nombres d'évènements par classe) mais le graphique ci-dessus laisse planer des doutes sur les déclarations observées presque tous les ans comme quoi nous battons sans cesses des records...

Friday, July 30 2010

Tempête et inondation: 1,5 milliards d'euros pour Xynthia

Les premiers rapports sur Xynthia, ses conséquences mais aussi ses causes commencent à être diffusés, comme ici par exemple. Pour rappels, dans la nuit du 27 au 28 février, la tempête Xynthia a balayé plusieurs pays européens, causant de très nombreux dégâts en France, principalement en Charente Maritime et en Vendée. A l’ile de Ré, des rafales de 160 km/h ont été mesurées. Mais les effets de la tempête ont été décuplés par la présence de polders, l’océan reprenant alors en quelques heures des territoires que l’homme croyait s’être approprié depuis quelques siècles. Comble de malchance, cette tempête est survenu lors des grandes marées, ce qui a de nouveau accentué les effets : afin de compenser la baisse de pression atmosphérique, le niveau des océans monte davantage, créant ainsi une surcote, et causant des inondations dès que le niveau des digues est atteint.

Ces inondations ont causé environ 420 000 sinistres, pour un coût de 700 millions € (soit un coût moyen par sinistre de l‘ordre de 1700 €). 22 000 sinistres ont été des dommages matériels de véhicules (pour un coût total de l’ordre de 35 millions €), 69 000 sinistres ont été des dommages de professionnels (pour 255 millions €) et près de 330 000 sinistres ont été des dommages à des particuliers, pour mon montant total de 425 millions d’euros. Le risque inondation est couvert par le régime dit cat nat, instauré par la loi du 13 juillet 1982, qui est obligatoire dans tout contrat de dommages aux biens, et qui couvre tous les dommages causées par une « intensité anormale d’un agent naturel », excepté les tempêtes. Si une commune touchée est classée comme été victime d’une catastrophe naturelle, les habitants peuvent alors faire jouer la garantie. Toutefois, si la commune n’a pas fait de Plan de Prévention des Risques,. Le montant des primes d’assurance affectée par ces catastrophes est fixé par l’Etat, ou plutôt la part de la prime habitation (pour les particulier) qui sera affectée à la couverture du risque, en l‘occurrence 12%: peu importe le risque réel, l’Etat impose un mécanisme de solidarité entre les assurés. Les assureurs touchent ainsi environ 1,3 milliards € au titre de l’ensemble des risques dit cat nat (ce qui inclus la sécheresse ou les mouvements de terrain, en plus des inondations). Les assureurs peuvent également souscrire un contrat de réassurance auprès de la Caisse Centrale de Réassurance (CCR, possédant une garantie illimitée de l‘Etat) en quote-part, conduisant à un partage pour moitié entre l’assureur et le réassurance. La CCR offre de plus une clause de limitation des pertes, dans le cas où un sinistre couterait plus du double des primes encaissées. Compte tenu du rôle central joué par la CCR, c’est cette dernière qui fournit généralement les statistiques sur les évènements naturels.
Les tempêtes ont fait l’objet d’une extension obligatoire, en juin 1990, dans tous les contrats dommage, avec une couverture qui incluse généralement la grêle et le poids de la neige. La tempête en elle même a causé environ 35 000 sinistres, pour un coût de 700 millions € (soit un coût moyen par sinistre de l‘ordre de 20 000 €). Environ 10 500 de ces sinistres sont liés à des couvertures de véhicules, avec un coût moyen de l’ordre de 5 000 €. 5 500 ont causé des dommages à des professionnels, pour un coût total de l’ordre de 250 millions €, alors que 400 millions ont été affecté à 19 000 sinistres de particuliers. Cette garantie est certes elle aussi obligatoire, mais l’Etat ne propose plus d’intervenir, et ce sont les réassureurs privés qui permettent aux assureurs de se couvrir contre les très grosses tempêtes (on aura en mémoire celles de décembre 1999, dont le montant réévalué atteint les 10 milliards €). Notons que pour couvrir le risque tempêtes, les assureurs collectent environ 1 milliard € par an. Dans le cas de la garantie tempête, la principale source de données est la Fédération Française des Sociétés d’Assurance, qui collecte les données des différentes mutuelles et compagnies d’assurance.
Cet évènement a marqué les esprits non seulement à cause du nombre élevé de victimes, mais aussi car il rappelle deux évènements très similaires. Le premier est survenu dans la nuit du 31 janvier au 1er février 1953, au Pays Bas, où une tempête a traversé le pays à quelques jours des grandes marées (ici). Les digues subirent plus de 400 brèches, et plus de 500 km de digues furent à reconstruire. Mais surtout, 1 836 personnes trouvèrent la mort, ce qui, ramené à la population des Pays-Bas de l’époque (de l’ordre de 10 millions d’habitants), correspondrait – aujourd’hui – à une catastrophe causant la mort de plus de 10 000 personnes en France (ou plus de 60 000 aux Etats Unis). Le second est l’ouragan Katrina qui a détruit la Nouvelle Orléans le 28 août 2005, où le raz de marée qui est survenu au même moment a causé davantage de dégâts que les rafales de vent (pourtant très fort). Ce risque avait été évoqué par des ingénieurs quelques mois plus tôt.
Le parallèle avec Katrina est d’autant plus saisissant que, comme à la Nouvelle Orléans, on retrouve des rapports d’experts qui évoquent la catastrophe quelques mois plus tôt. En particulier, l’idée d’avoir un « Plan de Prévention des Risques de submersion marine dans l’estuaire du Lay sur les communes de La Faute-sur-Mer et de l’Aiguillon-sur-Mer, où la conjonction de deux phénomènes, de crue dans l’estuaire du Lay et de submersion marine, pourrait avoir un impact très important sur les zones densifiées à l’arrière d’un réseau de digues vieillissant. » (ici). A La Faute-sur-Mer, « la rupture des digues sur ce secteur engendrerait des dégâts majeurs aux biens et aux personnes », ajoute le rapport en citant l'exemple des tempêtes Lothar et Martin qui « ont démontré que les zones côtières pouvaient être submergées par la mer, notamment en zone estuarienne ».

(le graphique a été volé sur le site de 20min, ici). En effet, depuis les tempêtes de décembre 99, les tempêtes majeures en Europe sont jugées « rares », mais plus « exceptionnelles ». On a même vu des cyclones tropicaux se diriger vers l’Europe (au lieu de se diriger vers les Amériques) comme la tempête Grace en octobre 2009 (ici). Autrement dit le risque existe. Et comme toujours quand on fait face à un risque, deux solutions se posent à nous : accepter de prendre le risque, quitte éventuellement à transférer la conséquence financière à un tiers (un assureur le plus souvent), ou tout mettre en œuvre pour le réduire (on parlera alors de prévention). Mais encore faut-il toutefois avoir conscience de l’existence de ces risques, en l’occurrence de risques à long terme. Et ce n’est pas essentiel si l’on mène des politiques à court terme.

Thursday, July 22 2010

Bonus-malus et non déclaration de sinistres

Le mécanisme bonus-malus a de très nombreuses vertus, dont celui de renforcer la solidarité. Mais il semble qu'il incite aussi à ne pas déclarer certains petits sinistres à son assureur. C'est ce que nous allons montrer ici.
 La distribution des personnes ayant un bonus de 50% (ce qui est le niveau le plus bas que l'on puisse atteindre, en théorie) a la forme suivante, en fonction de l'âge du conducteur,
> library(splines) ;  library(pscl)
> reg <- glm(bonus~bs(ageconducteur),base=sinistres,family=binomial)
> base <- data.frame(ageconducteur=seq(18,80))
> y=predict(reg,newdata=base)
> plot(seq(18,80),y)

http://blogperso.univ-rennes1.fr/arthur.charpentier/public/perso3/.BLEUproportion-bonus-50_m.jpg
Comme je le notais déjà ici, une personne qui a un niveau de bonus bas peut être incitée à ne pas déclarer un petit sinistre à son assureur (et de proposer  un arrangement à l'amiable avec la contrepartie).
Cette sur-représentation des 0 dans la base pour les très bas niveaux de bonus peut être prise en compte à l'aide des modèles dits zero-inflated.
Classiquement, on supposait que
dans le cas d'un modèle de Poisson. On va supposer ici que l'assuré peut décider de ne pas déclarer certains sinistres. Autrement dit
et pour  
On peut considérer un modèle logistique pour modéliser cette probabilité de non-déclaration, 
alors que pour le modèle de Poisson
En fait, si l'on suppose que l'impact d'une variable n'est pas linéaire, on peut introduire des splines pour estimer la transformation optimale,
> library(splines) ;  library(pscl)
> reg=zeroinfl(nombre~bs(ageconducteur,df=4) | bs(ageconducteur), data = nombre,
+ dist = "poisson",link="logit",offset=log(exposition))
> age=seq(18,80)
> DT=data.frame(ageconducteur=age,exposition=1)
> Y=predict(reg,newdata=DT,type="zero")
> plot(age,Y)
Ce qui permet de ne faire une prédiction que sur la composante d'inflation zero. Sur une base de données sur laquelle je devrais revenir à la rentrée, on obtient la tendance suivante,
Malheureusement, l'interprétation est plus délicate, car avec une régression binomiale négative, qui autorise plus de variance, on obtient des ordres de grandeur très différents
> reg=zeroinfl(nombre~bs(ageconducteur,df=4) | bs(ageconducteur), data = nombre,
+ dist = "negbin",link="logit",offset=log(exposition))

(on oubliera le comportement de bord pour les âges élevés, peu de personnes âgées appartenant à ce portefeuille, les résultats sont peu robustes à droite).
On retrouve toutefois une fonction croissante (au moins entre 20 et 60 ans), ce qui peut être relié avec la distribution du bonus en fonction de l'âge: plus on est âgé, plus on a de chance d'avoir un très bon bonus, et plus on a de chances de ne pas déclarer un sinistre à son assureur...
D'ailleurs, si on fait la régression directement sur le niveau de bonus, et plus sur l'âge, on a l'impact suivant
> reg=zeroinfl(nombre~bs(bonus,df=4) | bs(bonus), data = nombre,
+ dist = "poisson",link="logit",offset=log(exposition))

Moralité, c'est bien le niveau élevé de bonus qui incite les assurés à ne pas déclarer de sinistres à leurs assureurs (et pas forcément un effet d'âge que l'on pourrait associer à de l'Alzheimer).

Monday, May 17 2010

Foot, probabilité, et assurance, partie 1

Depuis la fenêtre de mon bureau, je pourrais presque voir la grande banderolle sur le fronton du centre commercial de la Visitation,

Un vendeur d'électroménager proposer de rembourser certains achats sir la France gagne la coupe du monde de foot ! Cela me fait penser au court billet que j'avais fait l'an dernier, ici, comme quoi certainscamping pouvaient rembourser les vacances des vacanciers en cas de mauvais temps.... Oui, on pourrait s'en douter, il y a un contrat d'assurance derrière - afin d'éviter que ce revendeur (il n'est pas le seul d'ailleurs) ne fasse faillite ! Des amis qui suivent le foot me faisaient remarqué que la prime d'assurance ne devaient pas être trop élevée....
Pour être un peu plus précis, Berkshire Hathaway a annoncé avoir assuré un de ses souscripteurs en cas de victoire de l’équipe de France lors de la prochaine coupe du monde. La perte maximale ne semble pas colossale, comme le notait Warren Duffet: « je pense que nous allons perdre 30 millions de dollars, ou quelque chose comme ça, si la France gagne ».
Quant aux probabilités dans le cas des vacances (ici), Meteo France propose des estimations objectives des probabilités. Dans le cas du foot, on peut faire comme en finance, et aller extraire les probabilités des marchés, en l'occurrence des sites de pari en ligne, comme ici. En l'occurrence, on apprend que la cote de la France est de l'ordre de 21... mais je reviendrais là dessus dans un autre billet !

Wednesday, March 31 2010

Triangles multiples et dépendance

Parmi les problèmes qui ont connu leur heure de gloire il y a quelques années, il y a eu le sujet des triangles multivariés, ou plutôt de la dépendance qui pourrait exister entre des triangles de paiements. Considérons les deux triangles suivants, obtenus auprès d'un même assureur, pour des sinistres en auto matériel entre 1994 et 2003, i.e.

et pareil pour les sinistres en auto-corporel,

On peut alors envisager deux techniques: travailler sur le triangle agrégé, ou travailler sur les triangles séparer, puis les agréger les prédictions ensuites,
  • Comparaison des prédictions par la méthode de Mack (i.e. chain-ladder)
On peut commencer par utiliser la formule de Mack, en supposant que le montant des provisions suit une loi lognormale. Rappelons que si http://perso.univ-rennes1.fr/arthur.charpentier/latex/ln-tr-01.png
alors les deux premiers moments vérifient
http://perso.univ-rennes1.fr/arthur.charpentier/latex/ln-tr-02.png
et
http://perso.univ-rennes1.fr/arthur.charpentier/latex/ln-tr-03.png
ce qui s'inverse simplement, et permet d'écrire
http://perso.univ-rennes1.fr/arthur.charpentier/latex/ln-tr-04.png
et
http://perso.univ-rennes1.fr/arthur.charpentier/latex/ln-tr-05.png
Aussi, à partir du montant prédit et de l'écart-type, on peut en déduire les paramètres de la loi sous-jacente.
> P.corp=read.table("http://perso.univ-rennes1.fr/arthur.charpentier/auto-corporel.csv",
+        header=FALSE,sep=";",na.strings = "NA",dec=",")
> P.corp=as.matrix(P.corp)
> n=nrow(P.corp)
> P.mat =read.table("http://perso.univ-rennes1.fr/arthur.charpentier/auto-materiel.csv",
+        header=FALSE,sep=";",na.strings = "NA",dec=",")
> P.mat=as.matrix(P.mat)
> P.mat=P.mat[1:n,1:n]
>  P.mat = P.mat[2:10,1:9]
>  P.corp= P.corp[2:10,1:9]
> n=9
> P.tot = P.mat + P.corp
> library(ChainLadder)
> V=MackChainLadder(P.tot)$Total.Mack.S.E
> E=sum(MackChainLadder(P.tot)$FullTriangle[,n]-
+ diag(MackChainLadder(P.tot)$FullTriangle[n:1,]))
> mu = log(E) - .5*log(1+V^2/E^2)
> sigma2 = log(1+V^2/E^2)
Les trois distributions sont alors les suivantes (sous hypothèse de lognormalité)

Si on suppose que les deux branches sont indépendantes, on peut alors regarder comment se comporte la convolée des deux lois log-normales,
> library(distr)
> V=MackChainLadder(P.mat)$Total.Mack.S.E
> E=sum(MackChainLadder(P.mat)$FullTriangle[,n]-
+-diag(MackChainLadder(P.mat)$FullTriangle[n:1,]))
> mu = log(E) - .5*log(1+V^2/E^2)
> sigma2 = log(1+V^2/E^2)

> LM = Lnorm(meanlog=mu,sdlog=sqrt(sigma2))
> V=MackChainLadder(P.corp)$Total.Mack.S.E
> E=sum(MackChainLadder(P.corp)$FullTriangle[,n]-
+ diag(MackChainLadder(P.corp)$FullTriangle[n:1,]))
> mu = log(E) - .5*log(1+V^2/E^2)
> sigma2 = log(1+V^2/E^2)

> LC = Lnorm(meanlog=mu,sdlog=sqrt(sigma2))
> LT=LM+LC

On peut alors tracer les densités
> u=seq(0,qlnorm(.95,mu,sqrt(sigma2)),length=1000)
> vtotal=dlnorm(u,mu,sqrt(sigma2))
> vconvol=d(LT)(u)

Si on compare les quantiles (on se contentera du quantile à 90% car on a des soucis numériques sur le calcul du quantile de la convolée pour un niveau trop élevé),
> q(LT)(.9)
[1] 271463.7
> qlnorm(.9,mu,sqrt(sigma2))
[1] 365395.1
Autrement dit, on a le choix sur l'interprétation,
  • travailler sur les triangles agrégés apporte beaucoup trop d'incertitudes,
  • supposer les triangles matériels et corporels indépendants est une hypothèse trop forte.
Un approche un peu extrême consisterait à supposer les risques comonotones, autrement dit le quantile de la somme serait la somme des quantiles,
> qlnorm(.9,mu,sqrt(sigma2))
[1] 64262.87
> qlnorm(.9,mu,sqrt(sigma2))
[1] 230645
dont la somme fait
[1] 294907.9
qu'il faudrait comparer à
> qlnorm(.9,mu,sqrt(sigma2))
[1] 365395.1

Bref, supposer les risques comontones ne suffit manifestement pas (je renvoie ici pour un billet expliquant que le quantile d'une somme est un objet assez complexe).
  • Approche par les GLM
Une autre idée est de supposer que les résidus obtenus suite à un GLM sont - éventuellement - corrélés. Commençons par faire de simples régressions de Poisson (on va mettre les incréments négatifs à 0, comme on le verra ci-dessous, ça ne cahnge pas grand chose sur le montant total de provision.... ceux qui le souhaitent rafineront),
>   an <- n; ligne = rep(1:an, each=an); colonne = rep(1:an, an)
>   passe = (ligne + colonne - 1)<=an; n = sum(passe)
>   PAID=P.corp; INC=PAID
>   INC[,2:an]=PAID[,2:an]-PAID[,1:(an-1)]
>   I.corp = INC
>   PAID=P.mat; INC=PAID
>   INC[,2:an]=PAID[,2:an]-PAID[,1:(an-1)]
>   I.mat = INC
>   Ym = as.vector(I.mat)
>   Ym[Ym<0]=0
>   Yc = as.vector(I.corp)
>   lig = as.factor(ligne)
>   col = as.factor(colonne)
>   base = data.frame(Ym,Yc,col,lig)
>  regm=glm(Ym~col+lig,data=base,family="poisson")
Il y a eu 35 avis (utilisez warnings() pour les visionner)
>  regc=glm(Yc~col+lig,data=base,family="poisson")
Il y a eu 38 avis (utilisez warnings() pour les visionner)
> MackChainLadder(P.mat)
MackChainLadder(Triangle = P.mat)

      Latest Dev.To.Date  Ultimate      IBNR  Mack.S.E CV(IBNR)
1  2,897,694       1.000 2,897,694      0.00      0.00      NaN
2    353,866       1.000   353,873      6.96      4.52    0.649
3    358,922       1.000   358,926      3.97     21.89    5.515
4    342,988       1.000   343,020     32.27     47.55    1.473
5    288,867       1.000   288,920     52.64     52.77    1.002
6    297,708       1.000   297,775     66.67    371.73    5.576
7    270,537       0.999   270,891    354.26    820.88    2.317
8    290,748       0.997   291,570    822.22  1,180.80    1.436
9    276,447       0.993   278,320  1,872.75  2,486.60    1.328
10   224,499       0.896   250,571 26,071.84 39,252.98    1.506

                 Totals
Latest:    5,602,275.93
Ultimate:  5,631,559.51
IBNR:         29,283.58
Mack S.E.:    39,374.90
CV(IBNR):          1.34
>  sum(exp(predict(regm,newdata=base))[passe!=TRUE])
[1] 29669.72
> MackChainLadder(P.corp)
MackChainLadder(Triangle = P.corp)

      Latest Dev.To.Date  Ultimate   IBNR Mack.S.E CV(IBNR)
1  2,231,325       1.000 2,231,325      0        0      NaN
2    182,004       0.991   183,683  1,678    1,060    0.632
3    196,756       0.981   200,589  3,833    2,731    0.712
4    205,591       0.964   213,166  7,575    4,534    0.599
5    176,427       0.943   187,096 10,669    6,128    0.574
6    156,175       0.912   171,227 15,053    9,091    0.604
7    138,483       0.867   159,709 21,226   12,717    0.599
8    109,483       0.803   136,359 26,876   17,557    0.653
9     73,108       0.704   103,835 30,727   29,956    0.975
10    24,322       0.532    45,723 21,401   59,465    2.779

                 Totals
Latest:    3,493,676.24
Ultimate:  3,632,713.12
IBNR:        139,036.88
Mack S.E.:    72,058.66
CV(IBNR):          0.52
>  sum(exp(predict(regc,newdata=base))[passe!=TRUE])
[1] 139036.9
Mais le point important est que l'on peut récupérer les résidus, et étudier leur structure de dépendance,
> plot(residuals(regc,type="pearson"),
+      residuals(regm,type="pearson"),pch=19,col="blue")

et pour les amateurs de copules, on trouvera un beau cas de dépendance très très forte
> plot(rank(residuals(regc,type="pearson"))/56,
+      rank(residuals(regm,type="pearson"))/56,pch=19,col="green")

Notons toutefois que si on supprime la première ligne des triangles (combined all years), on obtient des représentations sensiblement différentes,


et une dépendance également très différente,

malgré l'effet ligne qu iaurait dû être présent dès la première ligne. Visiblement, cette première ligne est trop complexe pour être traitée comme les autres (agrégation de processus de gestion de sinistres trop différents). Notons que la  corrélation au sens de Spearman (corrélation de rang) vaut ici
> u=rank(residuals(regc,type="pearson"))/46
> v=rank(residuals(regm,type="pearson"))/46
> cor(u,v)
[1] 0.3051383

On peut alors tenter de faire du boostrap en tirant les paires de résidus à chaque fois, ce qui permet de prendre en compte cette dépendance qui semble exister entre les triangles.
Dans un second temps, on peut aussi introduire de la dépendance sur les scenarios à venir. Lors des tirages des lois normales (évoqués ici), on peut très bien considérer un vecteur Gaussien bivarié, avec une corrélation arbitrairement fixée. La fonction de simulation dans la méthode Chain-Ladder devient alors,
> CLboot2=function(triangle1,l1,s1,triangle2,l2,s2,rho){
+ m=nrow(triangle1)
+ for(i in 2:m){
+ for(j in (m-i+2):m){
+ E=rmnorm(1, mean=c(triangle1[j,i-1]*l1[i-1],
+  triangle2[j,i-1]*l2[i-1]),
+            varcov=matrix(c(triangle1[j,i-1]*s1[i-1]^2,
+ rho*sqrt(triangle1[j,i-1]*triangle2[j,i-1])*
+ s1[i-1]*s2[i-1],
+ rho*sqrt(triangle1[j,i-1]*triangle2[j,i-1])*
+ s1[i-1]*s2[i-1],triangle2[j,i-1]*s2[i-1]^2),2,2))
+ triangle1[j,i]=E[1,1]
+ triangle2[j,i]=E[1,2]
+ }}
+ ULT1=triangle1[,m]
+ DIAG1=diag(triangle1[,m:1])
+ ULT2=triangle2[,m]
+ DIAG2=diag(triangle2[,m:1])
+ return(c(sum(ULT1-DIAG1),sum(ULT2-DIAG2)))
+ }
(le code est sûrement loin d'être optimal, mais au moins on comprend ce qui se passe). En prenant un peu de temps, on peut alors faire tourner différents scenarios, avec des dépendances plus ou moins fortes,
>  regm=glm(Ym~col+lig,data=base,family="poisson")
>  regc=glm(Yc~col+lig,data=base,family="poisson")
> Ec=residuals(regc,type="pearson")
> Em=residuals(regm,type="pearson")
> YPc=predict(regc,newdata=base)
> YPm=predict(regm,newdata=base)
> n=9
> base=data.frame(YPc,YPm,lig,col)
> nsim=50000
> PROVISION=rep(NA,nsim)
> PROVISIONm=rep(NA,nsim)
> PROVISIONc=rep(NA,nsim)
> PROVISIONc2=rep(NA,nsim)
> PROVISION2=rep(NA,nsim)
> for(k in 1:nsim){
+ I=sample(1:45,size=n^2,replace=TRUE)
+ simEm = Em[I]
+ simEc = Ec[I]
+ I=sample(1:45,size=n^2,replace=TRUE)
+ simEc2= Ec[I]
+
+ bruitm=simEm*sqrt(exp(YPm))
+ bruitc=simEc*sqrt(exp(YPc))
+ bruitc2=simEc2*sqrt(exp(YPc))
+ INCsm=exp(YPm)+bruitm
+ INCsc=exp(YPc)+bruitc
+ INCsc2=exp(YPc)+bruitc2
+ INCMm=matrix(INCsm,n,n)
+ INCMc=matrix(INCsc,n,n)
+ INCMc2=matrix(INCsc2,n,n)
+ CUMMm=INCMm
+ CUMMc=INCMc
+ CUMMc2=INCMc2
+ for(j in 2:n){CUMMm[,j]=CUMMm[,j-1]+INCMm[,j]
+                CUMMc[,j]=CUMMc[,j-1]+INCMc[,j]
+                CUMMc2[,j]=CUMMc2[,j-1]+INCMc2[,j]}
+
+ PROVISIONm[k]=CLb(CUMMm,lambdam,sigmam)
+ PROVISIONc[k]=CLb(CUMMc,lambdac,sigmac)
+ PROVISIONc2[k]=CLb(CUMMc2,lambdac,sigmac)
+ PROVISION[k]=sum(CLb2(CUMMm,lambdam,sigmam,CUMMc,lambdac,sigmac,0.8))
+ PROVISION2[k]=CLb(CUMMm,lambdam,sigmam)+CLb(CUMMc2,lambdac,sigmac)}
où l'on récupère les prédictions marginales (y compris en générant des scénarios indépendants dans la procédure de bootstrap). Ensuite, on regarde la somme des triangles, tout d'abord en tirant les paires d'erreurs obtenus par GLM, puis en tirant un vecteur Gaussien lors des prédiction, et enfin dans le cas complémentement indépendant. On peut commencer par comparer aux montants Chain Ladder obtenu intialement,
>  sum(MackChainLadder(P.mat)$FullTriangle[,n]
+  -diag(MackChainLadder(P.mat)$FullTriangle[n:1,]))
[1] 63895.45
>  sum(MackChainLadder(P.corp)$FullTriangle[,n]
+  -diag(MackChainLadder(P.corp)$FullTriangle[n:1,]))
[1] 324070.2
Bref, marginalement, on est sur des choses comparables. Si on regarde maintenant au niveau agrégé,
> sum(MackChainLadder(P.tot)$FullTriangle[,n]
+  -diag(MackChainLadder(P.tot)$FullTriangle[n:1,]))
[1] 415998.4
> mean(PROVISION)
[1] 387822.1
> mean(PROVISION2)
[1] 387989.9

Autrement dit, on retrouve la fait que la dépendance n'influence pas le best estimate (ce qui est rassurant), mais il devrait influcer l'erreur,
>  plot(density(PROVISION),col="red")
>  lines(density(PROVISION2),col="orange")

On obtient la distribution en rouge est le cas corrélé, et en orange la prédiction des provisions sous hypothèse d'indépendance. Et si l'on regarde les quantiles
> quantile(PROVISION,.995)
   99.5%
464792.2
> quantile(PROVISION2,.995)
   99.5%
452022.6
Bref, on obtient un quantile plus élevé que ce que nous avions en supposant l'indépendance (ce qui nous conforte dans la justesse de notre algorithme). Comme la distribution semble plutôt Gaussienne, et pas trop lognormale, j'ai rajouté la "distribution" obtenue par Mack en supposant la normalité des provisions sur le triangle cumulé, en bleu, en trait plein, et en pointillé le cas log-normal.

Bref, on retrouve l'idée intuitive que provisionner sur des risques non-homogène apporte d'avantage d'incertitude. Il convient donc d'avoir les triangles les plus stables possible, puis de les agréger ensuite...

Tuesday, March 30 2010

Erreur de prédiction en provisionnement: approche par bootstrap

Les méthodes présentées jusqu'à présent dans ce blog, liant incertitude et bootstrap dans le calcul des provisions pour sinistres à payer, ne parlaient que , i.e. variance error. Regardons comment obtenir des quantifications de ces deux erreurs. Mais commençons par un exemple plus simple (comme toujours), à savoir le modèle linéaire.

  • Erreurs de prédiction dans le modèle linéaire, et bootstrap
Comme nous l'avons rappelé plusieurs fois, formellement, on souhaite quantifier
qui peut se décomposer sous la forme suivante
qui est - à peu près - égal à
Dans le cas de la régression linéaire, où nous avions déjà vu ce genre de choses, nous avions interprété les deux termes de la manière suivante
  • le premier terme correspond à l’erreur intrinsèque d’un modèle d’ajustement, qui n’est jamais parfait (c’est la variance du bruit), ou process error,
  • le second terme correspond à l’erreur d’estimation des paramètres, ou variance error,
Revenons sur l'estimation de ces quantités par bootstrap. Commençons par la seconde. sous l'hypothèse d'un modèle Gaussien l'incertitude peut se visualiser sur le dessin ci-dessous (où la variance est visualisée sous la forme d'un intervalle de confiance),

L'idée du boostrap est, au choix,
  • de tirer des paires, et de considérer http://perso.univ-rennes1.fr/arthur.charpentier/latex/ibnr-boot-01.png
  • de tirer des erreur, et de considérer http://perso.univ-rennes1.fr/arthur.charpentier/latex/ibnr-boot-02.png
Si on répète un certain nombre de fois, on obtient le graphique ci-dessous.

Pour le premier type d'erreur, c'est un peu artificiel ici mais pour prédire des valeurs qui incluent cette erreur, il suffit d'estimer http://perso.univ-rennes1.fr/arthur.charpentier/latex/ibnr-boot-03.png, puis de tirer http://perso.univ-rennes1.fr/arthur.charpentier/latex/ibnr-boot-04.png

Autrement dit, pour combiner les erreurs, et obtenir une erreur sur la valeur observée http://perso.univ-rennes1.fr/arthur.charpentier/latex/ibnr-boot-05.png, on génère des valeurs telles que
http://perso.univ-rennes1.fr/arthur.charpentier/latex/ibnr-boot-06.png
où http://perso.univ-rennes1.fr/arthur.charpentier/latex/ibnr-boot-07.png a été obtenu lors d'une étape du boostrap.
  • Erreurs de prédiction en provisionnement, et bootstrap
On peut utiliser cette idée pour obtenir l'erreur de prédiction faite en provisionnement. Pour introduire l'erreur de processus, i.e. process error, le plus simple est de supposer que, comme dans le modèle de Mack (1993), il existe un link ratio et que la variance conditionnelle est proportionnelle au dernier montant payé, en supposant de plus que le montant est conditionnellement Gaussien, i.e.
http://perso.univ-rennes1.fr/arthur.charpentier/latex/ibnr-boot-08.png
Reprenons notre exemple classique. On utilise alors simplement le code suivant
>  source("http://perso.univ-rennes1.fr/arthur.charpentier/bases.R")
>  library(statmod)
Erreur dans library(statmod) : aucun package nommé 'statmod' n'est trouvé
>  an <- 6; ligne = rep(1:an, each=an); colonne = rep(1:an, an)
>  passe = (ligne + colonne - 1)<=an; np = sum(passe)
>  futur = (ligne + colonne - 1)> an; nf = sum(passe)
>   INC=PAID
>   INC[,2:6]=PAID[,2:6]-PAID[,1:5]
>  Y = as.vector(INC)
>  lig = as.factor(ligne)
>  col = as.factor(colonne)
Avec le code suivant pour récupérer la prédiction par Chain-Ladder
>  CL=function(triangle){
+  n=nrow(triangle)
+  LAMBDA=rep(NA,n-1)
+  for(i in 1:(n-1)){
+  LAMBDA[i]=sum(triangle[1:(n-i),i+1])/
+            sum(triangle[1:(n-i),i]) }
+  DIAG=diag(triangle[,n:1])
+  TOTO=c(1,rev(LAMBDA))
+  return(sum(cumprod(TOTO)*DIAG-DIAG)) }
et le code suivant pour la méthode Chain-Ladder bruitée,
>  CLboot=function(triangle,l,s){
+  m=nrow(triangle)
+  for(i in 2:m){
+   triangle[(m-i+2):m,i]=rnorm(i-1,
+            mean=triangle[(m-i+2):m,i-1]*l[i-1],
+            sd=sqrt(triangle[(m-i+2):m,i-1])*s[i-1])
+  }
+  ULT=triangle[,m]
+  DIAG=diag(triangle[,m:1])
+  return(sum(ULT-DIAG)) }
On peut alors lancer un certain nombre de rééchantillonages
>  base=data.frame(Y,lig,col)
>  REG=glm(Y~lig+col,family=poisson)
>  YP=predict(REG,newdata=base)
>  E=residuals(REG,"pearson")
>  PROV.BE=rep(NA,5000)
>  PROVISION=rep(NA,5000)
>  for(k in 1:50000){
+  simE=sample(E,size=36,replace=TRUE)
+  bruit=simE*sqrt(exp(YP))
+  INCsim=exp(YP)+bruit
+  INCM=matrix(INCsim,6,6)
+  CUMM=INCM
+  for(j in 2:6){CUMM[,j]=CUMM[,j-1]+INCM[,j]}
+  PROV.BE[k]=CL(CUMM)
+  PROVISION[k]=CLboot(CUMM,lambda,sigma)}
La distribution du montant de provision (et non plus la distribution du best estimate - que j'ai tracé ici en bleu) est alors représentée ci-dessous en rouge,

Tuesday, February 2 2010

Les modèles en réassurance

Publication d'un papier sur les modèles en réassurance dans la revue Risques (ici), suite à un questionnement sur la pertinence des modèles classiques utilisés par les réassureurs. La question initiale était partie de la constatation - que l'on retrouve ici ou - sur l'utilisation (ou la mauvaise utilisation) de modèles sophistiques en finance de marché, en essayant d'expliquer que - d'un point de vue épistémologique au moins - les modèles des réassureurs étaient plus robustes. En particulier, on notera que les modèles les plus anciens utilisés par les réassureurs (en particulier la loi de Pareto comme je l'avais évoqué ici) ont eu une légitimité pratique durant plusieurs décennies avant d'être justifiés par la théorie des valeurs extrêmes. Je ferais d'ailleurs bientôt un billet sur l'histoire des valeurs extrêmes en statistiques, en revenant en particulier sur les travaux de Gumbel ou de Fréchet.

Sinon le code utilisé dans le papier est en ligne ici, et la base
> sinpe = read.table("http://perso.univ-rennes1.fr/arthur.charpentier/sinpe.csv",header=TRUE,sep=";")
> head(sinpe)
      DSUR  MNTPE
1 19850206 240439
2 19851228 125674
3 19850504 488331
4 19851118 457347
5 19850220 990919
6 19851214 182939
> annee=as.numeric(substr(as.character(sinpe$DSUR),1,4))
> sinistres=sinpe$MNTPE[annee>1992]
> XS=sinistres/100000
On se limite ici aux sinistres survenus après 1992. Si l'on visualise ces montants de sinistres, on obtient
> datesur=as.Date(as.character(sinpe$DSUR),"%Y%m%d")
> jour=datesur[annee>1992]
> plot(jour,sinistres/100000,xlab="",ylab="Coût individuel",cex=.5,ylim=c(0,600))
> ded=50
> abline(h=ded)

On peut aussi faire le graphique Pareto-log-log,
> library(evir)
> n=length(X)
> plot(log(sort(X)),log((n:1)/(n+1)),
+ xlab="Coûts des sinistres (logarithme)",ylab="Fonction de survie (logarithme)",cex=.8)
> out <- gpd(XS, 15)
> XI=as.numeric(out$par.ests[1]); BETA=as.numeric(out$par.ests[2])
> x0=seq(2,8,.01)
> lines(x,-1/XI*(x-log(15)),col="red")

(l'ajustement de la loi de Pareto permettant de tracer la droite rouge) ou encore visualiser l'estimateur de Hill de l'indice de queue,
> hill(X)

Pour finir, le code suivant permet de calculer la prime pure (ou plus généralement une prime de Wang) soit de manière non-paramétrique (burning cost) ou bien en utilisant l'ajustement d'une loi de Pareto. Le papier étant un papier de vulgarisation, j'ai pris le seuil de manière arbitraire, sans aucune recherche de valeur "optimale",
> DEDUC = seq(10,50,by=5)
> lambda=0;  
seuil=5
> WG1=WG2=rep(NA,length(DEDUC))
> for(k in 1:length(DEDUC)){
+ deductible=DEDUC[k]
+ out <- gpd(XS, seuil)
+ XI=as.numeric(out$par.ests[1]); BETA=as.numeric(out$par.ests[2])
+ G0=function(x){1-pgpd(x+seuil, xi = XI, mu = seuil, beta = BETA)}
+ G=function(x){(G0(x+deductible-seuil))/(G0(deductible-seuil))}
+ F=function(x){pnorm(qnorm(G(x))+lambda)}
+ (wang1=integrate(F, 0, Inf))
+ X=XS[XS>deductible]
+ n=length(X)
+ FS= function(z){
+ m=rep(NA,length(z))
+ for(i in 1:length(m)){
+ m[i]=sum(X>z[i]+deductible)/n}
+ return(m)
+ }
+ G=function(x){pnorm(qnorm(FS(x))+lambda)}
+ (wang2=sum(G(seq(0,800,.01))*.01))
+ WG1[k]=as.numeric(wang1$value)
+ WG2[k]=wang2
+ }
> plot(DEDUC,WG2-DEDUC,type='b',xlab="Niveau de la priorité ('00 000 euros)",ylab="Prime pure par sinistres réassuré",ylim=c(0,50))
> lines(DEDUC,WG1-DEDUC,type='b',col="red",pch=4)
> legend(10,50,c("Aujustement d'une loi de Pareto","'Burning cost'"),
+ col=c("red","black"),lty=1,cex=.8,pch=c(4,1))

Wednesday, October 7 2009

A quand des élites avec un minimum de culture économique ?

(et non pas idéologique....). J'ai beaucoup apprécié le dernier billet sur le blog de Cimon (ici), et je conseille d'aller y faire un saut...
J'avais déjà parlé il y a quelques mois (ici) du rattachement entre l'ACAM (autorité de contrôle des assurances et des mutuelles) et de la Commission Bancaire. Et j'avais dit tout le mal que j'en pensais, car la banque et l'assurance présentent, certes, beaucoup de similitudes, mais ce sont malgré tout des activités très différentes, ce que j'ai pu appelé parfois une forme de dualité: le système banquaire fonctionnant sur la confiance que placent les banques dans leurs clients (les créditeurs étant les personnes qui ont souscrit des crédits), et le système d'assurance fonctionnant sur la confiance que placent les assurés dans leur compagnie d'assurance (car les assurances vendent des promesses).
L'assurance a donc fondamentalement besoin d'être contrôlé, et en particulier un régulateur a besoin de vérifier que les assureurs pourront tenir leurs engagements, ce qu'on appelle la solvabilité.
Il y a quelques mois, Guillaume Plantin (ancien commissaire contrôleur, actuellement enseignant à la London Business School) et Jean Charles Rochet (professeur à TSE1) ont publié un ouvrage très très instructif when insurers go bust. Comme ils le notent très justement à la fin (je ne m'empêcherais pas de mettre en ligne deux pages, ici et , qui sont les deux pages de conclusion du livre) "the only convincing raison d’être of prudential regulation is the policyholders’ coordination problem. As long as an insurance company does well, it is optimal to let the top management and shareholders run it without constraints". Et comme le montrent tous les petits modèles qu'ils présentent dans l'ouvrage, la régulartion "maximizes the social value of insurance". Bref, l'évolution actuelle est davantage dictée par des arguments idéologiques que par des motivations éonomiques....
1 Jean-Charles avait coécrit un joli économie de l'assurance chez Economica, il y a maintenant quelques années, c'est dire s'il connait le sujet. J'avais eu  Jean-Charles comme prof à l'ensae, sur un cours d'économie de la banque (il venait de publier un livre sur le sujet avec Xavier Freixas). Je me souviendrais toujours d'une remarque qu'il avait faite à la toute fin du cours comme quoi la régulation était indispensable, en assurance tout comme en banque, mais qu'en pratique, si les agents étaient rationnels, elle ne servait à rien car seule la menace suffisait (c'est la notion de menace crédible).

Monday, June 8 2009

La "méthode des marges"

Je vais reprendre un commentaire posté ici pour faire un nouveau billet sur un sujet qui m'a souvent interpelé quand je donnais mes premiers cours sur l'actuariat de l'assurance non-vie: la "méthode des marges". Étrangement, cette méthode n'est pas vraiment référencée dans la littérature académique (en économétrie, en statistique ou même en actuariat - en tous cas sous ce nom), et pourtant tout les praticiens parlent de cette méthode...
L'idée est relativement simple: dans un modèle linéaire Gaussien, il existe beaucoup de méthodes pour justifier l'estimation par moindres carrés (l'estimation par moindres carrés coïncide - dans le cas Gaussien - avec l'estimation du maximum de vraisemblance, ou la méthode des moments), et pour interpréter alors les coefficients. Si on a dans les variables explicatives une variable dichotomique, l'interprétation des coefficients est alors très simple, et très élégantes.

Dans le cas du modèle linéaire, faisons un modèle simple, avec une variable continue, et une variable dichotomique (une dummy) que j'interprèterais par exemple comme le sexe de l'individu. Simulons une petite base de données de 1000 observations,
> X1=rbinom(n=1000,size=1,prob=.45)
> X2=runif(n=1000)*5
> epsilon = rnorm(1000)/2
> Y =3+4*(X1==1)-2*(X1==0)+X1 +epsilon
> d=data.frame(Y,X1,X2)
Je tiens à noter que mes deux variables explicatives ont été simulées indépendamment, ce qui suppose que l'on n'a pas du multicolinéarité. Tout ce que je vais faire par la suite repose sur cette hypothèse (forte). Commençons par régresser uniquement sur la variable continue (et la constante)
> lm(Y~X2)
Call:
lm(formula = Y ~ X2)
Coefficients:
(Intercept)           X2
   4.425978     0.001584

A partir de là, la "méthode des marges" me prédit que je peux en déduire le modèle où au lieu d'avoir une constante, je mets les deux facteurs (le sexe). Pour celà, on utilise le ratio entre la moyenne de Y (non-conditionnelle) et la moyenne de Y dans chacune des classes.
> d1=d[X1==1,]
> ( mean(d1)/mean(d))[1]
       Y
1.805869
> d0=d[X1==0,]
> ( mean(d0)/mean(d))[1]
        Y
0.2257336

Par la suite, ces ratio empiriques devraient être conservés lors de l'estimation. En particulier, je prédis que si l'on régresse sur le facteur sexe au lieu de régresser sur la constante, les coefficients associés à chaque facteur seront
> ( mean(d1)/mean(d))[1]*lm(Y~X2)$coef[1]
       Y
7.992737
> ( mean(d0)/mean(d))[1]*lm(Y~X2)$coef[1]
        Y
0.9990922
Si je fais la régression, par miracle, c'est exactement ce qu'on obtient
>  X1f = as.factor(X1)
> lm(Y~0+X1f+X2)
Call:
lm(formula = Y ~ 0 + X1f + X2)
Coefficients:
     X1f0       X1f1         X2
1.000e+00  8.000e+00  2.529e-17

Voilà ce à quoi correspond la "méthode des marges", du moins ce que j'en ai compris... Autrement dit l'estimation des coefficients (en supposant l'absence de multicolinéarité) peut être relié à des moyennes empiriques par classes, ce qui permettra une interprétation simple des coefficients. On notera une autre interprétation, qui est que le coefficient de chacun des facteurs a pu être obtenu indépendamment des autres, dans le sens où seul le comportement de la classe par rapport au comportement moyen intervient.

Alors cette méthode peut s'appliquer dans des cas plus généraux que le modèle gaussien. Dans le cas des modèles GLM, on a un peu plus de mal à interpréter les paramètres. Formellement, on fait une estimation par maximum de vraisemblance.
Pour reprendre l'exemple du commentaire (ici), plaçons nous dans l'approche de Renshaw et Verrall qui suggère un modèle log-Poissonnien sur les incréments de paiements, avec comme variables explicatives les facteurs année de survenance et année de déroulé (comme ce sont des facteurs, l'analyse précédente s'applique). Autrement dit, la vraisemblance s'écrit icisoit la log-vraisemblance suivanteLa condition du premier ordre correspond à l'annulation de la dérivée, i.e. dece qui donne tout simplementAutrement dit, on peut avoir l'impression que l'on peut estimer les paramètres associés à l'année de survenance indépendamment les uns des autres, i.e. "marginalement".

Voilà ce que j'avais compris à l'époque où j'avais essayé de me renseigner sur cette règle. Mais peut être n'est-ce pas ça du tout...? Si quelqu'un souhaite apporter des compléments, je lui  cède la place...

[COMPLEMENT] Bon, après avoir creusé un peu, je pense avoir une référence claire sur la méthode des marges: il s'agit dune méthode initialement appelé "method of marginal totals" de Jan Jung, dans un article paru dans l'Astin Bulletin en 1968 (ici). Il s'inspire d'un papier datant de 1963 de Robert Bailey () et un papier plus ancien coécrit avec LeRoy Simon en 1960 (), mais je crois qu'on attribue le plus souvent la paternité à Jan Jung.Comme toujours, la méthode n'est pas décrite explicitement, mais on y retrouve l'idée en lisant l'ensemble du texte,
On peut retrouver une citation par exemple dans un papier de Björn Ajne,en particulier, plusieurs méthodes sont comparées, dont celle dite des "marginal totals",Pour une lecture plus moderne, je renvoie à deux papiers de Stig Rosenlund, à Stockholm, ici. Sinon pour une version en français, je n'ai trouvé que ce papier de Frédéric Boulanger, paru dans le Journal de la SFdS, en 1993. Encore une fois, les commentaires sont ouverts pour tout complément.

- page 1 of 2