Excellent
On passe maintenant au Module 2 : Calcul Actuariel Fondamental – Théorie du
Risque, un pilier essentiel pour comprendre la mécanique probabiliste derrière les
provisions techniques.
Je vais te donner ici :
• le processus global,
• les feuilles Excel concernées,
• les TP complets avec corrections R commentées,
• et les interprétations actuarielles.
MODULE 2 — Calcul Actuariel Fondamental : Théorie du Risque
Objectif général
Appliquer les fondements de la théorie du risque collectif et individuel pour
modéliser la distribution agrégée des sinistres et préparer le terrain des calculs de
provisionnement stochastique.
Tu apprendras à :
• modéliser la fréquence et la sévérité des sinistres,
• calculer la distribution agrégée des pertes,
• et simuler les probabilités extrêmes (ruine, sinistres lourds, dépendance
entre branches).
Processus global
Feuille "Sinistres" → Modélisation de fréquence & sévérité → Distribution agrégée →
Simulation Monte Carlo → Analyse du risque total
Feuilles Excel utilisées
Feuille Rôle Étape
Base principale des montants payés Analyse fréquence &
Sinistres
/ réservés sévérité
Portefeuille_Assurance Répartition par ligne de business Segmentation
Paramètres de distribution
Hypothèses_Risque Modélisation
(initialisation, calibration)
Résultats_GLM Sortie du modèle fréquence/sévérité Interprétation
Stockage des Best Estimates
Provisions_PSS Résultats finaux
simulés
Audit_Trail Trace des modèles & paramètres Gouvernance
TP1 — Modélisation de la fréquence des sinistres
Objectif
Modéliser le nombre de sinistres par contrat et par an à l’aide d’une loi de Poisson
ou de Binomiale négative.
Feuilles concernées
• Sinistres
• Portefeuille_Assurance
Code (correction commentée)
library(dplyr)
library(actuar)
# Importation
fichier <- "Provisionnement_Actuariel_Master.xlsx"
sinistres <- readxl::read_excel(fichier, sheet = "Sinistres")
contrats <- readxl::read_excel(fichier, sheet = "Portefeuille_Assurance")
# Calcul fréquence par contrat
freq <- sinistres %>%
group_by(ID_Contrat) %>%
summarise(Nb_Sinistres = n())
# Ajustement loi de Poisson
lambda_hat <- mean(freq$Nb_Sinistres)
lambda_hat
# Vérification : simulation
sim_freq <- rpois(10000, lambda_hat)
hist(sim_freq, breaks = 20, main = "Distribution simulée - Poisson", col = "lightblue")
Résultat attendu :
• λ estimé ≈ moyenne du nombre de sinistres par contrat (~0.5 à 1.5 selon la
génération).
• Distribution simulée proche de la distribution empirique.
Commentaire actuariel :
La loi de Poisson modélise bien les sinistres indépendants et rares. Si la variance
dépasse la moyenne, on utilisera la Binomiale négative.
TP2 — Modélisation de la sévérité des sinistres
Objectif
Ajuster une distribution paramétrique aux montants individuels de sinistres.
Feuille concernée
• Sinistres
Code (correction commentée)
library(fitdistrplus)
# Extraction des montants
montants <- sinistres$Payé + sinistres$Réservé
montants <- montants[montants > 0]
# Visualisation
hist(montants, breaks = 30, col = "lightgray", main = "Histogramme des sinistres")
# Ajustement loi Lognormale
fit_ln <- fitdist(montants, "lnorm")
summary(fit_ln)
# Comparaison avec loi Gamma
fit_gam <- fitdist(montants, "gamma")
gofstat(list(fit_ln, fit_gam))
Résultat attendu :
• La lognormale ou la gamma ont les meilleurs AIC/BIC.
• Tu peux stocker les paramètres estimés dans Hypothèses_Risque.
Commentaire actuariel :
Les montants de sinistres sont positifs, asymétriques et à queue lourde →
lognormale, gamma ou Pareto selon la branche.
TP3 — Distribution agrégée des pertes
Objectif
Combiner fréquence et sévérité → distribution totale du risque.
Feuilles concernées
• Hypothèses_Risque
• Provisions_PSS
Code (correction commentée)
library(actuar)
# Paramètres
lambda <- lambda_hat
meanlog <- fit_ln$estimate["meanlog"]
sdlog <- fit_ln$estimate["sdlog"]
# Simulation agrégée (Poisson composée Lognormale)
n_sim <- 10000
sim_agg <- replicate(n_sim, sum(rlnorm(rpois(1, lambda), meanlog, sdlog)))
# Visualisation
hist(sim_agg, breaks = 50, col = "lightblue", main = "Distribution agrégée des pertes")
quantile(sim_agg, c(0.95, 0.99))
Résultat attendu :
• Distribution très asymétrique
• Quantiles supérieurs (VaR 95% ou 99%) très élevés
Commentaire actuariel :
Cette distribution sert à estimer la Best Estimate, le SCR de réserve, et les
provisions PSS stochastiques.
TP4 — Dépendance entre branches (Copules)
Objectif
Mesurer la dépendance entre deux lignes d’affaires (ex. Auto vs Habitation).
Feuilles concernées
• Sinistres
• Portefeuille_Assurance
• Hypothèses_Risque
Code (correction commentée)
library(copula)
library(dplyr)
# Agrégation par ligne d’affaires
agg <- sinistres %>%
inner_join(contrats, by = "ID_Contrat") %>%
group_by(Ligne_Business) %>%
summarise(Total = sum(Payé + Réservé, na.rm = TRUE))
# Exemple : dépendance entre 2 lignes
u <- pobs(matrix(agg$Total[1:2], ncol = 2))
cop <- normalCopula(dim = 2)
fit_cop <- fitCopula(cop, u, method = "ml")
fit_cop
Résultat attendu :
• Coefficient de corrélation ρ ≈ 0.3–0.6 selon la génération.
• On peut utiliser ces copules plus tard pour la simulation SCR multi-
branches.
Commentaire actuariel :
Les branches sinistrées ensemble révèlent une dépendance structurelle →
importante pour la diversification du capital.
Synthèse du Module 2
Étape Objectif Feuille(s) Résultat
Estimer la fréquence
TP1 Sinistres / Portefeuille λ de Poisson
des sinistres
Paramètres
TP2 Estimer la sévérité Sinistres
Lognormale/Gamma
Hypothèses_Risque /
TP3 Distribution agrégée Simulation totale
Provisions_PSS
Corrélation inter-
TP4 Sinistres / Portefeuille Copule ajustée
branches
Compétences acquises
Maîtrise de la théorie du risque (collective & individuelle)
Modélisation fréquentielle et de sévérité en R
Simulation de distributions agrégées de pertes
Introduction à la dépendance par copules
Souhaites-tu que l’on passe maintenant au Module 3 : Triangle de Développement
& Méthodes Déterministes Avancées,
ou préfères-tu que je te génère les résultats simulés (TP1–TP3) directement dans
le fichier Excel pour que tu puisses visualiser les distributions ?