Category Archives: Course

Calculs de SCR, Solvency Capital Requirements

Pour reprendre le contexte général, Solvency II (l’analogue de la directive CRD pour les banques*) repose sur 3 piliers,

  1. définir des seuils quantitatifs de calcul des provisions techniques des fonds propres, seuils qui seront à terme réglementaires, à savoir le MCR (Minimum Capital Requirement, niveau minimum de fonds propres en-dessous duquel l’intervention de l’autorité de contrôle sera automatique) et le SCR (Solvency Capital Requirement, capital cible nécessaire pour absorber le choc provoqué par une sinistralité exceptionnelle),
  2. fixer des normes qualitatives de suivi des risques en interne aux sociétés, et définir comment l’autorité de contrôle doit exercer ses pouvoirs de surveillance dans ce contexte. Notons qu’en principe, les autorités de contrôle auront la possibilité de réclamer à des sociétés “trop risquées” de détenir un capital plus élevé que le montant suggéré par le calcul du SCR, et pourra les forcer àréduire leur exposition aux risques,
  3. définir un ensemble d’information que les autorités de contrôle jugeront nécessaires pour exercer leur pouvoir de surveillance.

Cette histoire de pilliers peut s’illustrer de la manière suivante

Sur le premier pilier, assureurs et réassureurs devront mesurer les risques, et devront s’assurer qu’ils détiennent suffisamment de capital pour les couvrir. En pratique, le CEIOPS et la Commission Européenne ont retenu une probabilité de ruine de 0,5%. Les calculs de capital se font alors de deux manières, au choix,

  1. utiliser une formule standard. La formule ainsi que la calibration des paramètres ont été abordé à l’aide des QIS.
  2. utiliser un modèle interne. Là dessus, le CEIOPS étudie les modalités d’évaluation.

En avril 2007, QIS3 a été lancé, afin de proposer une formule standard pour le calcul des MCR et SCR, en étudiant la problématique spécifique des groupes. En particulier, on trouve dans les documents la formule suivante (pour un calcul de basic SCR)

Cette formule sort du QIS3, mais on trouve des choses analogues dans Sandström (2004), par exemple,

Avec une contrainte forte sur la forme du SCR, il obtient alors

D’où sort cette formule ? Certains ont tenté des éléments de réponse, par exemple

Ce résultat n’est malheureusement pas très probant car il n’est jamais rien évoqué sur la dépendance entre les composantes, ce qui est troublant. Sandstôrm écrit quelque chose de similaire, même si pour lui “normalité” est ici entendu dans un cadre multivarié.

Une explication peut être trouvée dans un papier de Dietmar Pfeiffer et Doreen Straßburger (ici) paru dans le Scandinavian Actuarial Journal (téléchargeable ici). Il cherche à expliquer comment calculer le SCR,

Il note, et c’est effectivement l’intuition que l’on avait, que dans un monde Gaussien (multivarié), cette formule marche, aussi bien pour un SCR basé sur la VaR que la TVaR. En particulier, ils citent un livre de Sven Koryciorz, correspondant à sa thèse de doctorat, intitulée “Sicherheitskapitalbestimmung und –allokation in der Schadenversicherung. Eine risikotheoretische Analyse auf der Basis des Value-at-Risk und des Conditional Value-at-Risk“, publiée en 2004.
Sinon, pour aller un peu plus loin, on peut aussi noter, dans les rapports du CEIOPS des déclarations un peu troublantes, par exemple

Il est pourtant facile de montrer que ce n’est pas le cas (même si c’est effectivement ce que préconise la “formule standard“). Le graphique ci-dessous montre l’évolution de la VaR d’une somme de risques corrélés (échangeables) en fonction de la corrélation sous-jacente: sur cet exemple, les risques très très corrélés sont moins risqués que des risques moyennement corrélés.

(la loi sous-jacente est une copule de Student). En revanche pour la TVaR, sur le même exemple, la TVaR de la somme est effectivement une fonction croissante avec la corrélation,


(plus de compléments dans les slides de l’école d’été à Lyon l’été dernier, ici).

* Pour reprendre des éléments de la page de wikipedia (ici), la directive européenne CRD (Capital Requirements Directive, i.e. Fonds Propres Réglementaires) transpose dans le droit européen les recommandations des accords de Bâle II, visant à calculer les fonds propres exigés pour les établissements financiers (i.e. directives 2006/48/CEet 2006/49/CE) .

La loi de Goodhart

Pour conclure le cours de M2 sur les mesures de risque, je voulais revenir sur la loi de Goodhart, énoncé par Charles Goodhart, alors qu’il était chief economic advisor à la Banque d’Angleterre, en 1975 (voir ici pour une analyse détaillée de la loi). L’énoncé originelle était de la forme suivante “Once a social or economic indicator or other surrogate measure is made a target for the purpose of conducting social or economic policy, then it will lose the information content that would qualify it to play such a role.

On retrouve cette loi énoncée dans le livre Economics de John Sloman, par exemple sur le contrôle des banques “If bank advances are a good indicator of aggregate demand, the government may choose to control bank lending. But as soon as it does, bank lending will become a poor indicator.” Certaines personnes énoncent la loi sous la forme suivante, “when a measure becomes a target, it ceases to be a measure”. Autrement dit, pour les non-anglophiles, “toute mesure qui devient un objectif cesse d’être une mesure“.

Il va de soi que ce genre de remarque marche pour les mesures de risque et le contrôle, mais aussi pour des problèmes liés à l’évaluation des universités, comme les g ou h factor, ou le classement de Shanghaï.

Méthodes numériques et convolution, suite

Pour poursuivre un ancien billet, je voulais revenir plus particulièrement sur l’algorithme de Panjer, et sur la précision de l’approximation faite en discrétisant la loi des coûts individuels. Les références sont ici

Je reprends ici un partie de l’article de wikipedia sur le sujet. Comme toujours, on souhaite approcher la loi de

 S = \sum_{i=1}^N X_i\,

On suppose ici que les coûts individuels sont discrets, et on pose

f_k = P[X_i = hk].\,

On suppose de plus que les nombres sont dans une classe un peu particulière, vérifiant

 P[N=k] = p_k=

En fait, cette condition n’est pas trop forte, la plupart des lois classiques étant de ce type.

La formule permettant d’obtenir

g_k =P[S = hk] \,.

est alors obtenue par récurrence, en posant

g_0=p_0\cdot \exp(f_0 b)\text{ if }a = 0,\,

g_0=\frac{p_0}{(1-f_0a)^{1+b/a}}\text{ for }a \ne 0,\,

et ensuite

g_k=\frac{1}{1-f_0a}\sum_{j=1}^k \left( a+\frac{b\cdot j}{k} \right) \cdot f_j \cdot g_{k-j}.\,

L’avantage c’est que tout cela a été programmé sous R… Pour la discrétisation, je reprends ici actuar qui propose plusieurs techniques. En particulier on distinguera entre une borne supérieure et une borne inférieure, une version arrondir et une version sans biais.

> fx <- discretize(pgamma(x, 2, 1), method = "upper", from = 0, to = 17, step = 0.5)
> fx <- discretize(pgamma(x, 2, 1), method = "lower", from = 0, to = 17, step = 0.5)
> fx <- discretize(pgamma(x, 2, 1), method = "rouding", from = 0, to = 17, step = 0.5)
> fx <- discretize(pgamma(x, 2, 1),method = "unbiased", lev = levgamma(x, 1), from = 0, to = 17, step = 0.5)

On peut alors utiliser l’algorithme de Panjer pour calculer la loi composée basée sur ces discrétisations. Au niveau de la programmation, le code est le suivant 

>  fx <- discretize(pgamma(x, 2, 1), from = 0, to = 22,
+  step = 0.5, method = "unbiased", lev = levgamma(x,2, 1))
>  Fs <- aggregateDist("recursive", model.freq = "poisson",
+  model.sev = fx, lambda = 10, x.scale = 0.5)

Graphiquement, on obtient la distribution suivante pour la loi composée (fonction de répartition et fonction quantile).

Convolution(s) et lois composées, aspects numériques

Nous avons vu en cours que l’outil de base pour travailler sur les sommes de variables aléatoires était la convolution,

(f * g )(t)  , stackrel{mathrm{def}}{=} int_{-infty}^{infty} f(tau)cdot g(t - tau), dtau
= int_{-infty}^{infty} f(t-tau)cdot g(tau), dtau.

permettant d’obtenir la densité ou la fonction de répartition de la somme de deux variables indépendantes.

Cet outils permet en théorie d’obtenir la forme d’une loi composée, i.e. d’une somme dont le nombre de termes est aléatoire.

Pour les calculs numériques de la convolée, Vincent Goulet a programmé pas  mal de choses dans la librairie actuar. Numériquement, il faut discrétiser la loi des coûts de sinistres. Si on suppose par exemple que les coûts individuels sont discrets, on peut obtenir la distribution simplement

> fx <- c(0, 0.15, 0.2, 0.25, 0.125, 0.075,
+         0.05, 0.05, 0.05, 0.025, 0.025)
> pn <- c(0.05, 0.1, 0.15, 0.2, 0.25, 0.15, 0.06, 0.03, 0.01)
> Fs <- aggregateDist("convolution", model.freq = pn,
+                     model.sev = fx, x.scale = 25)
> summary(Fs)
Aggregate Claim Amount Empirical CDF:
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    0.0   150.0   275.0   314.5   400.0  2000.0 
> c(Fs(0), diff(Fs(25 * 0:21))) # probability mass function
 [1] 0.05000000 0.01500000 0.02337500 0.03467500 0.03257656 0.03578639
 [7] 0.03980787 0.04356232 0.04751800 0.04903380 0.05189806 0.05137886
[13] 0.05118691 0.05030486 0.04818189 0.04575882 0.04280890 0.03937836
[19] 0.03574568 0.03196808 0.02832446 0.02478833
> plot(Fs)

On peut aussi utiliser des méthodes d’approximation récursives,

> Fs <- aggregateDist(“recursive”, model.freq = “poisson”,
+                     model.sev = fx, lambda = 3, x.scale = 25)
> plot(Fs)

Ce qui donne le graphique suivant

Des méthodes d’approximation de type normal power sont aussi programmées, ainsi que les techniques de simulations. Par exemple ici pour une survenance Poissonienne avec des coûts Gamma, on écrit

> Fs <- aggregateDist("recursive", model.freq = "poisson",
+ model.sev = fx, lambda = 3, x.scale = 25)
> plot(Fs)

Enfin, pour lier avec le DM que je donnerais mercredi, Vincent Goulet a aussi programmé une méthode d’estimation de quantile,

> model.freq <- expression(data = rpois(3))
> model.sev <- expression(data = rgamma(100, 2))
> Fs <- aggregateDist("simulation", nb.simul = 1000,
+                     model.freq, model.sev)

Simulation d’un processus de Poisson

Le prochain cours reviendra sur la solvabilité des compagnies d’assurance, et en particulier sur la modélisation et le calcul de la probabilité de ruine. En particulier, nous passerons pas mal de temps sur le “processus de Poisson“.

Nous verrons en cours les notions de base sur les processus de Poisson$ \{N_t\}$. En particulier, nous verrons qu’ils se caractérisent soit par le processus d’arrivées $ \{T_i\}$, correspondant aux dates d’arrivée des sinistres, ou bien par$ W_i=, correspondants aux durées intersinistres. En effet, on peut obtenir des expressions de la forme $ N_t=.

Dans sa forme la plus simple, on s’intéresse aux processus homogènes. $ \{N_t: t \ge 0 \}$ sera un processus de Poisson homogène d’intensité $ \lambda > 0$ si les durées entre arrivées, $ W_i$ i.i.d. de loi exponentielle de paramètre $ \lambda $. L’algorithme naturel pour simuler les dates d’arrivées de sinistre $ T_1,T_2,\ldots,T_n$ est alors

  1. poser $ T_0 =
  2. pour $ i = on génère$ E$ suivant une loi exponentielle de paramètre $ \lambda $, puis on pose $ T_i =

Les choses vont se compliquer si on suppose que le processus de Poisson n’est plus homogène. Cette hypothèse est peut être davantage réaliste pour l’assurance. Par exemple, les assureurs savent qu’il y a plus d’accidents automobiles les jours de brouillard, ou de pluie, ou de verglas. On peut donc supposer qu’il existe un cycle lié au climat.

On suppose ici que le processus de Poisson est d’intensité $ \lambda(t)$. La première idée pour simuler un tel processus est de supposer qu’il existe $ \overline{\lambda}$ tel que $ \lambda(t)\leq\overline{\lambda}$ pour tout $ t$. On note $ T_1^* ,T_2^* , T_3^* ,\ldots$ des arrivées successives d’un processus de Poisson de paramètre $ \overline{\lambda}$. On met alors en place une stratégie acceptation/rejet, telle que l’on garde le $ i$ème sinistre $ T_i^*$ avec probabilité $ \lambda(T_i^* )/\overline{\lambda}$. La suite $ T_1, T_2, \ldots$ ainsi construite suit un processus de Poisson nonhomogène d’intensité $ \lambda(t)$. D’où l’algorithme

  1. On pose $ T_0 = et $ T^* = 0$
  2. on génère une variable exponentielle$ E$ d’intensité $ \overline{\lambda}$.
  3. On pose alors$ T^* = T^* + E$.
  4. On génère une variable $ U$ uniforme sur $ (0,1)$: si $ U>\lambda(T^*)/\overline{\lambda}$ on rejette (et on retourne en 2.), et sinon on pose $ T_i = .

Une autre méthode consiste à noter que l’incrément

$ N_t-N_s$, $ 0 < s < t$, suit une loi de Poisson d’intensité$ \widetilde{\lambda} = \int_s^t \lambda(u)du$. Aussi, la fonction de répartition $ F_s$ du temps d’attente $ W_s$ est qui vaut

On peut utiliser la méthode suivante pour simuler le processus de Poisson

  1. Poser $ T_0 =
  2. Générer $ U$ suivant une loi uniforme sur $ (0,1)$
  3. Poser $ T_i =

Pour aller plus loin, je renvoie à des bouquins sur la simulation de processus, ou pour les applications assurantielles au Statistical Tools for Finance and Insurance, chez Springer.

Visualiser des classes après une classification, avec XLStat

Avec R, il est très simple de visualiser les classes obtenus lors d’une classification. Mais avec XLStat…. on peut visualiser les nuages sur le plan principal (obtenu par ACP) ou alors visualiser les barycentres des classes sur le plan principal. En fait, il suffit de rajouter la variable correspondant à la “classe” dans le tableau initial, puis de faire une ACP en mettant la “classe” comme variable supplémentaire (qualitative). On commence par faire la classification des individus,

Ensuite on récupère la colonne et on la colle avec le tableau des données,

Enfin, on fait une ACP en rajoutant la classe comme variable supplémentaire.

On peut alors plus facilement interpréter les classes: ici le groupe 3 sont les “bons élèves“, le groupe 1 les “élèves moyens” et enfin le groupe 2 les “moins bons élèves“.

Sinon la base qui a servi pour cet exemple sera utilisée lors du dernier TD. Je mets aussi un lien vers la classification des bordeaux.

Measuring and Covering Catastrophic Risks

Short course on Measuring and Covering Catastrophic Risks at the Maresias Conference in Sao Paulo, April 2009. Slides are now online.

There has been recently a large interest in catastrophic risks, especially following hurricane seasons in 2004 and 2005. But measuring those risks and providing an appropriate cover might be difficult. In this course, we will first describe those risks, especially climate risks (or climate related), man based risks (large fires or business interuption), and mortality risks. For those risks, we will also discuss possible covers, from classical (re)insurance to securitization (cat or mortality bonds) or insurance-linked securities (cat options). As we will see, the pricing of those products can simply be related to the choice of a risk measure. We will then discuss risk measures for large risks, and conclude with the aggregation issue.

Cat bond securitization will be studied in this course, explaining why they can be an additional tool (instead of an alternative technique) to insure against natural catastrophes.
while a Cat Bond mechanism is the following
For a more fancy description, it can be described as follows,

Two examples of natural catastrophes securitization will be studied carefully

  • WinCat : Winterthur securitization in 1997
  • The Mexican Earthquake 2007 Cat Cond.

The dataset used in this example was kindly provided by Dr. Miguel A. Santoyo (here)

  • Longevity and Mortality Risk

Paradoxe de Grossman et Stiglitz


Pour le cinquième cours à l’X, sur les asymétries d’information, les slides sont en ligne, ainsi que les énoncés des exercices. Je ferais PC l’après midi, salle 75, bâtiment Paul Levy. Sinon la page maintenue par Alfred Galichon se trouve ici. Petit complément sur le paradoxe de Grossman et Stiglitz, étudié en exercice (i.e. si un marché est efficient du point de vue de l’information, autrement dit toute l’information pertinente est contenue dans les prix de marché, alors aucun agent n’est incité à acquérir de l’information sur laquelle sont fondés les prix),

Grossman and Stiglitz (1980) argued that because information is costly, prices cannot perfectly reflect the information which is available, since if it did, those who spent resources to obtain it would receive no compensation, leading to the conclusion that an informationally efficient market is impossible.” Sewell (2006)

” Second, perfect efficiency is an unrealistic benchmark that is unlikely to hold in practice. Even in theory, as Grossman and Stiglitz (1980) have shown, abnormal returns will exist if there are costs of gathering and processing information. These returns are necessary to compensate investors for their information-gathering and information-processing expenses, and are no longer abnormal when these expenses are properly accounted for. In a large and liquid market, information costs are likely to justify only small abnormal returns, but it is difficult to say how small, even if such costs could be measured precisely.” Campbell, Lo and MacKinlay (1997), page 24

” Grossman (1976) and Grossman and Stiglitz (1980) go even further. They argue that perfectly informationally efficient markets are an impossibility, for if markets are perfectly efficient, the return to gathering information is nil, in which case there would be little reason to trade and markets would eventually collapse. Alternatively, the degree of market inefficiency determines the efforrt investors are willing to expend to gather and trade on information, hence a non-degenerate market equilibrium will arise only when there are sufficient profit opportunities, i.e., inefficiencies, to compensate investors for the costs of trading and information-gathering. The profits earned by these industrious investors may be viewed as economic rents that accrue to those willing to engage in such activities.” Lo and MacKinlay (1999), pages 5-6

Analyse discriminante et géométrie (dans un triangle)

Lors du cours, nous avons vu que pour discriminer (en dimension 2) entre 2 classes, ou 2 nuages de points distincts: l’axe de discrimination sera la droite passant par les barycentres des deux nuages de points.


En retenant un critère 50-50, on considère comme axe de séparation la médiatrice de ces deux barycentres, l’espace contenant le barycentre des points rouges devenant l’espace rouge.

Toujours avec deux variables explicatives (ou éventuellement les deux axes discriminants), on suppose avoir trois classes. Dans ce cas, on peut discriminer les nuages 2 à 2. Un petit résultat de géométrie nous garantit que les trois médiatrices passent par un point unique.

On a alors coupé l’espace en 6 régions, 6 camemberts passant par le centre du cercle passant les sommets du triangle constitué par les centres de gravité. On regroupe les régions par paires, en leur attribuant la couleur où se trouve le centre de gravité,

C’est ce petit résultat qui permet de créer une discrimination entre les qualités des vins de Bordeaux. Cet exemple sera repris en TD.

Analyse Discriminante et Scoring

Les slides de la cinquième partie sont en ligne sur mon blog.

Parmi les cours en ligne, je renverrais aux nombreux papiers d’Hervé Abdi, à Dallas,en particulier sur l’analyse discriminante (ici), sur les principales distances utilisées en ADD (ici), ou encore l’ACM (ici). Sinon, côté données, les codes R sont les suivants,
etudiants<-read.table("https://perso.univ-rennes1.fr/arthur.charpentier/Etudiants-ville.csv",header=TRUE,sep=";")
titanic<-read.table("https://perso.univ-rennes1.fr/arthur.charpentier/titanic.csv",header=TRUE,sep=",")

Régression logistique, analyse discriminante… et XLStat

Pour répondre à une question qui m’a été posée, il est possible de récupérer une version gratuite de 30 jours d’XLStat via http://www.01net.com/.

Sinon je ne peux qu’encourager les étudiants à se mettre à R… contrairement à XLStat, il faut coder un minimum, mais l’investissement en vaut la peine. Pour ceux qui auraient peur, je renvoie vers ce document rédigé par Denis Poinsot, “R pour les Statophobes“.

Sinon, sur l’analyse discriminante, encore une fois, des choses sont possibles via XLStat…


Pour la régression logistique, on pourra consulter

Les outils de régression logistique ne sont pas rangés dans l’analyse des données,

On a alors par défaut une régression logistique sur données binaire (deux classes),

mais qui peut s’étendre à plusieurs classes,

Pour la base des données, les bases saporta.xls et bordeaux.xls sont en ligne sur ma page (la base tirée des pages 414-415 de Saporta  1990 ne contient que 3/4 des observations, car c’est un peu long de taper à la main…).

Dernier billet sur l’assurance vie (a priori)

Afin de rappeler ce que nous avons vu en TD jeudi dernier, je mets un petit billet pour rappeler les trois techniques de calcul de PM. Pour une temporaire décès, sur n années, on a

  • la méthode prospective, i.e. sur la période [k,n], ce qui s’écrit
ou encore
  • la méthode rétrospective, i.e. sur la période [0,k] – on se place en 0 puis on “actualise”, soit
  • la méthode itérative, i.e. on étudie la variation de PM, entre k-1 et k, en se plaçant en k-1, puis en “actualisant”. On a
Pour un autre exemple (assurance combinant une rente viagère en cas de vie et un capital décès), je renvoie au dernier TD.

Calcul (pratique) de la provision mathématique

Nous verrons mercredi comment calculer une provision mathématique (i.e. la PM) pour un contrat d’assurance temporaire décès. Les calculs suivants sont fait sous Excel, avec un assuré de 20 ans, un durée contractuelle de 25 ans, une prime payée annuellement et un taux d’actualisation de 3,5%.

On pourra alors utiliser cette feuille de calcul pour regarder l’évolution de la PM en fonction de l’âge de l’assuré, ou du taux d’actualisation.

Sinon il est aussi possible d’utiliser R pour faire des formules de calcul plus générales, et plus simples. Par exemple, pour calculer un VAP sous R, on peut utiliser un code de la forme suivante

> capital=c(100,100,125,125,150,150); n=length(capital) 
> taux=0.035; x=45 
> (capital.act=capital*(1/(1+taux))^(1:n)) 
[1] 96.61836 93.35107 112.74284 108.93028 126.29598 122.02510 
> Lx=read.table("https://perso.univ-rennes1.fr/arthur.charpentier/TV8890.csv",header=TRUE,sep=";") 
> (PROBA=Lx[((Lx[,1]>x)*(Lx[,1]<=(x+n)))==1,2]/Lx[(Lx[,1]==x)==1,2]) 
[1] 0.9980581 0.9960128 0.9938849 0.9915814 0.9890714 0.9863444 
> (FluxVAP=capital.act*PROBA) 
[1] 96.43073 92.97886 112.05341 108.01324 124.91573 120.35877 
> (VAP=sum(FluxVAP)) 
[1] 654.7507

CAH (et kmeans) avec XLstat

Sur la CAH, nous avons vu que l’on a deux degrés de liberté, fondamentaux pour l’analyse

  • le choix de la distance (min, max, euclidienne, minkowski…)
  • le choix de la méthode de regroupement, ou d’agrégation (ward, single, complete…)

Ces deux degrés de libertés sont les deux paramètres qu’il convient de sélectionner lors de l’analyse,


Sinon pour les kmeans, il y a un peu moins de choix,

En cours, j’ai insisté sur l’idée de l’algorithme, plus que sur les critères de classification. Tous sont basés sur W, la matrice d’inertie intra-classe commune (pooled SSPC matrix)

  • Minimiser la trace de W pour un nombre de classes donné, revient à minimiser la variance intra-classe totale, c’est à dire minimiser l’hétérogénéité des groupes.
  • L’utilisation du déterminant de W permet de construire un critère nettement moins sensible aux effets d’échelle.
  • Le critère du lambda de Wilks correspond à la division du déterminant(W) par le déterminant(T) où T est la matrice d’inertie totale: aussi, la division par le déterminant de T permet d’avoir un critère toujours compris entre 0 et 1. Mais sinon les résultats donnés par la minimisation de ce critère sont identiques à ceux donnés par le déterminant de W.
  • enfin le dernier critère est plus long (mais plus robuste) car au lieu d’utiliser le barycentre d’une classe (i.e. la moyenne) on utilise un point médian.