Skip to main content

Python License CircleCI Binder

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épendances

Les dépendances sont :

## 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.

conjoncture.jpg

legende_scenarios.png

Simulation 1: Projections du COR avec le réglage initial

cor.jpg

legende_scenarios.png

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

cotisations.jpg

legende_scenarios.png

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

61ans.jpg

legende_scenarios.png

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.

cor.jpg

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 :

Les résultats présentés dans "Ce que l'étude d'impact ne dit pas" proviennent des cahiers électroniques suivants :

Metadata

Release files for retraites 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for retraites 0.1.1
File Size Uploaded
retraites-0.1.1.tar.gz 7.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for retraites 0.1.1
File Interpreter ABI Platform
retraites-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 7.3 MB

Release files / retraites-0.1.1.tar.gz

Download URL retraites-0.1.1.tar.gz
Size 7.3 MB
Tags Source
SHA-256 checksum
How to use checksums
1b80dfa5dec029427502a3b11ff0b3ec5cf49f4b147099d0f5add889c34e8b7f
BLAKE2b-256 checksum
How to use checksums
dc1af100e212cfb850a8bb38d17b878ed4411bdc9da3a65a59e3db3c7f06dbd2
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / retraites-0.1.1-py3-none-any.whl

Download URL retraites-0.1.1-py3-none-any.whl
Size 58.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
db3f78849c4f2b2e2bbf9a39991871d39768eb3c7bd77ea91e248cee472e9585
BLAKE2b-256 checksum
How to use checksums
d7e8dea8d68b22105a06fe5483308d9f464135b8659498fe5d017d74c8f64320
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page