Skip to content

steve-gerald/scoring-confiance

Repository files navigation

Score de confiance & tarification du risque — Plateforme "vente de kilos"

Projet actuariel (assurance non-vie / P&C) en Python. À partir d'un portefeuille de transactions, on estime la probabilité de litige d'une mise en relation entre un voyageur et un expéditeur de colis, on la traduit en score de confiance affichable dans l'application, et on en déduit le prix d'une assurance colis.

Cadrage. Faire tourner une telle plateforme pose de vraies questions juridiques (responsabilité douanière du voyageur, transport du bien d'un tiers, marchandises sensibles). Ce dépôt n'opère pas la plateforme : il en construit le cerveau d'évaluation du risque — la brique actuarielle, réutilisable et défendable. C'est aussi un objet de portfolio orienté pricing non-vie.


En une image

transactions ──▶ proba de litige ──▶ score /100 ──▶ décision (valider / vérifier)
                       │
                       └────────────▶ prime pure ──▶ prix de l'assurance colis

Contenu du dépôt

scoring-confiance-colis/
├── noyau_scoring.py              # fonctions partagées (chargement, modèles, scoring)
├── 01_generation_donnees.py      # crée 8 000 transactions synthétiques
├── 02_modele_scoring.py          # modèles fréquence + sévérité, score du portefeuille
├── 03_benchmark_ml.py            # PISTE 1 : logistique vs LightGBM + SHAP
├── 04_calibration_seuils.py      # PISTE 2 : seuil de décision optimal (coûts)
├── 05_tarification_commerciale.py# PISTE 3 : prime pure → prix de vente
├── 06_demo_scoring.py            # PISTE 4 : outil de scoring (démo + interactif)
├── requirements.txt
├── data/                         # CSV générés
├── figures/                      # graphiques PNG
└── rapport/                      # rapport Word

Installation & exécution

pip install -r requirements.txt

# à lancer dans l'ordre (chaque script écrit ce que le suivant peut réutiliser)
python3 01_generation_donnees.py        # -> data/transactions_synthetiques.csv
python3 02_modele_scoring.py            # -> score du portefeuille + 1 figure
python3 03_benchmark_ml.py              # -> comparaison de modèles + 2 figures
python3 04_calibration_seuils.py        # -> seuil de décision optimal + 1 figure
python3 05_tarification_commerciale.py  # -> grille tarifaire + 1 figure
python3 06_demo_scoring.py              # -> démo de scoring (interactif en terminal)

Le 01 est reproductible (np.random.seed(2024)).


Comment ça marche

Les données (01). La plateforme n'existe pas, donc aucune donnée réelle. On fabrique 8 000 transactions dont le risque dépend de facteurs connus : corridor, catégorie de colis, expérience du voyageur, taux de réussite passé, vérification d'identité (KYC), anomalie de prix au kilo, valeur déclarée.

Le modèle (02). Deux modèles classiques d'assurance :

  • fréquence (régression logistique) → probabilité de litige ;
  • sévérité (modèle Gamma) → coût moyen d'un litige.

On assemble : prime pure = probabilité × coût, et score de confiance = (1 − probabilité) × 100.


Les 4 pistes

Piste 1 — Benchmark machine learning (03). On confronte la régression logistique à un LightGBM, mesuré en AUC / Gini, avec une courbe de lift et une analyse SHAP. Ici la logistique fait jeu égal (voire mieux) : le risque est essentiellement linéaire, donc le modèle simple et lisible l'emporte — un bon argument pour le garder en production.

Piste 2 — Calibration du seuil (04). Un score ne sert à rien sans règle de décision. On définit une matrice de coûts (coût d'une vérification vs coût d'un litige subi) et on cherche le seuil qui minimise le coût total. Résultat : basculer en vérification manuelle sous 71/100, soit ~10 % des transactions.

Piste 3 — Tarification commerciale (05). On transforme la prime pure en prix de vente : frais de gestion (15 %), commission (10 %), marge de sécurité (8 %), puis la taxe belge sur les primes (9,6 % en 2026). Le client paie en moyenne ~1,6× la prime pure, soit de ~25 € à ~46 € selon le corridor.

Piste 4 — Outil de scoring (06). La brique qu'appellerait l'application : elle prend une transaction et rend score + décision. Scénarios de démonstration inclus, plus un mode interactif en terminal.


Résultats clés

Le modèle retrouve la hiérarchie de risque injectée (test de cohérence) :

Facteur Effet sur le risque
Anomalie de prix au kilo ×2,2
Catégorie médicaments ×2,2
Corridor Bruxelles→Kinshasa ×1,3
Identité vérifiée (KYC) ×0,5
Catégorie documents ×0,5

Exemples de scoring :

Profil Score Décision
Voyageur fiable, électronique, BRU→DLA 93/100 Valider
Profil moyen, vêtements, CDG→DKR 94/100 Valider
Nouveau compte, médicaments, prix anormal, BRU→FIH 11/100 Vérification manuelle

Limites

  • Données synthétiques : on valide la mécanique, pas le marché réel.
  • Le score d'anomalie de prix est un indicateur simplifié.
  • Les hypothèses de coûts (vérification, chargements) sont à caler avec le métier.
  • Pas de dimension temporelle (saisonnalité, dérive des corridors).

Stack : Python — pandas, numpy, statsmodels, scikit-learn, lightgbm, shap, matplotlib. Auteur : Steve.

About

Projet de scoring de confiance

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages