Simulateur financier du système de retraites
Project description
Simulateur macroscopique du système de retraites
Introduction
Le COR (conseil d'orientation des retraites) a mis en ligne un simulateur pour permettre aux citoyens de simuler les effets macroscopiques des grandes lignes d'une réforme des retraites. Ce projet vise a reproduire les résultats et à ajouter un certain nombre de fonctionnalités utiles, comme celui de proposer de concevoir une réforme à prestation définie (ex: calcul automatique des cotisations sociales pour avoir un système équilibré financièrement avec un certain niveau de vie pour les retraités et un age de départ fixé a priori).
On utilise les données de projection du COR et on se base sur la documentation technique fournie par le COR.
Implémentation
Les calculs sont faits dans la classe SimulateurRetraites.py.
Le script demo.py est un script qui utilise SimulateurRetraites.py pour générer un certain nombre de figures, qu'on trouve dans le répertoire fig.
Publications
Ce simulateur a été utile pour l'écriture de ces articles sur la réforme des retraites:
- D'après le COR, Macron & Philippe veulent vous faire travailler jusqu'à 68 ans, partie 1 et partie 2
- D'après le COR, Philippe vous donne la "liberté" de partir à 62 ans et d'être pauvre
- D'après le COR, la réforme Philippe/Macron ne sera pas équilibrée financièrement
Dépendances
Les dépendances sont :
- Python >= 3.4
- numpy >= 0.10
- matplotlib >= 1.5.3
- scipy >= 1.0.0
- openturns >= 1.14
## Installation
L'installation se fait avec les commandes suivantes:
git clone https://github.com/brunoscherrer/retraites.git
cd retraites
python setup.py install
Exemples de simulations
Ci-dessous, nous suivons une suggestion de Michaël Zemmour (Université de Lille) faite lors d'une intervention d'une vingtaine de minutes, c'est-à-dire d'expérimenter dans le même cadre macro-éconmique que le COR.
On peut utiliser le code pour reproduire exactement les prévisions macroscopiques du simulateur du COR avec notamment les valeurs par défaut (celles d'un statu quo du système). Cela permet de plus de calculer automatiquement les effets macroscopiques de réformes dont les cotisations seraient ajustées de sorte à équilibrer la situation financière du système. Ci-dessous, voici les prévisions du COR (sans aucune intervention) et deux exemples qui ont en commun de fixer comme objectif un niveau de vie des retraités égal à celui des actifs, le premier gardant les projections du COR en termes de départ à la retraite, le deuxième fixant un départ effectif à 61 ans. Les différentes courbes de couleurs à partir de 2020 correspondent aux différents scenarios conjoncturels (croissance/chômage) considérés par le COR à horizon 2070.
Hypothèses macroéconomiques du COR
Les projections ci-dessous sont basées sur celles d'un certain nombre d'indicateurs macroscopiques fournis par le COR (voir la documentation technique fournie par le COR pour plus de détails), par exemple sur le fait qu'en 2070, un retraité moyen qui aurait une pension d'environ la moitié du salarié moyen aurait sensiblement le même niveau de vie.
Simulation 1: Projections du COR avec le réglage initial
Dans cette première simulation, on observe une baisse légère des cotisations jusque 2070. Le système est globalement (en moyenne sur les différents scénarios conjoncturels) équilibré financièrement. Cet équilibre est possible via la baisse des pensions, de 0.5 fois le salaire moyen (2019) à une fourchette [0.25, 0.45] fois le salaire moyen selon la conjoncture. Le niveau de vie des retraités pourrait en être fortement affecté (jusqu'à une baisse de 30% dans le pire cas).
Simulation 2: Adaptation automatique des cotisations
On voit qu'il suffit de prévoir une hausse légère de cotisations, précisément de 31% (aujourd'hui) à 35% (en 2070), c'est-à-dire en moyene +0.25% par an (vu que 1.0025^(2070-2020)=35/31) alors on peut dans le pire scenario assurer un niveau de vie aux retraités équivalent à celui des actifs et le système est équilibré.
Simulation 3: Adaptation automatique des cotisations avec départ à 61 ans
Dans la troisième figure "Départ à 61 ans et cotisations adaptées", on peut mesurer ce que coûterait collectivement le fait de permettre aux français de partir (effectivement) à la retraite à 61 ans (ce qui correspond à une hypothèse d'un départ possible à 60%). Il faudrait alors porter l'effort de cotisations de 31% à 39% dans le pire cas conjoncturel, soit une augmentation moyenne par an de +0.46% des cotisations.
Exemple d'utilisation
La classe SimulateurRetraites
implémente le simulateur qui évalue les résultats
du modèle en fonction des hypothèses (conjoncture) et des leviers.
Cette classe implémente plusieurs stratégie de pilotage, la plus simple étant
le pilotage du COR qui est évaluée grâce à la méthode pilotageCOR
.
La méthode pilotageCOR
retourne une instance de la classe SimulateurAnalyse
.
Cette classe permet de produire les graphiques pour réaliser l'analyse
des résultats.
from retraites.SimulateurRetraites import SimulateurRetraites
simulateur = SimulateurRetraites()
analyse = simulateur.pilotageCOR()
La méthode dessineSimulation
permet de produire les graphiques standard dans l'analyse
d'une stratégie de pilotage.
analyse.dessineSimulation()
Le code précédent produit le graphique suivant.
Documentation de l'API
L'interface de programmation est documentée avec des docstrings.
On y accède avec la fonction help
.
Par exemple, l'exemple suivant génère la documentation de la classe
SimulateurRetraites
.
from retraites.SimulateurRetraites import SimulateurRetraites
help(SimulateurRetraites)
La Documentation de l'API présente une version lisible de l'aide.
Études réalisées avec le simulateur
L'article "Ce que l'étude d'impact ne dit pas" présente une analyse détaillée de l'étude d'impact de Janvier 2020 réalisée à l'aide du simulateur.
La description du modèle mathématique est donnée dans le Modèle du simulateur officiel du COR.
Un exemple complet d'utilisation du simulateur est présenté dans Simulations numériques.
D'autres exemples sont présentés dans le répertoire doc :
- Simulations numériques du rapport du COR de Juin 2019
- Simulations numériques de tous les pilotages possibles
- Essai de détermination des réformes possibles à partir de l'étude d'impact
- Une autre réforme en augmentant légèrement la part du PIB
- Dessin de la naissance à la mort d'une génération
- Pilotage par la durée de vie en retraite
- Impact du déficit dans la trajectoire du COR de Juin 2019
Les résultats présentés dans "Ce que l'étude d'impact ne dit pas" proviennent des cahiers électroniques suivants :
- Analyse de l'étude d'impact
- Simulations numériques de l'étude d'impact
- Essai de détermination des réformes possibles à partir de l'étude d'impact
- Analyse de la trajectoire de l'âge de départ dans l'étude d'impact
- La réforme des retraites ne se fera pas à «budget constant»
- Simulations numériques du rapport du COR de Juin 2019 - Calcul de pension annuelle (brut)
- Numérisation de l'étude d'impact
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file retraites-0.1.1.tar.gz
.
File metadata
- Download URL: retraites-0.1.1.tar.gz
- Upload date:
- Size: 7.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b80dfa5dec029427502a3b11ff0b3ec5cf49f4b147099d0f5add889c34e8b7f |
|
MD5 | b44a54cd5796819bce2431ce4dbc2afd |
|
BLAKE2b-256 | dc1af100e212cfb850a8bb38d17b878ed4411bdc9da3a65a59e3db3c7f06dbd2 |
File details
Details for the file retraites-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: retraites-0.1.1-py3-none-any.whl
- Upload date:
- Size: 58.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | db3f78849c4f2b2e2bbf9a39991871d39768eb3c7bd77ea91e248cee472e9585 |
|
MD5 | 0bfc8c8a94d0d2b91a99cbfd225b4b64 |
|
BLAKE2b-256 | d7e8dea8d68b22105a06fe5483308d9f464135b8659498fe5d017d74c8f64320 |