Skip to content
Snippets Groups Projects
Commit 232a5e46 authored by BENOIT MICHAUD's avatar BENOIT MICHAUD
Browse files

notebook allegement general

parent e2833b17
No related branches found
No related tags found
No related merge requests found
Pipeline #21778 passed
%% Cell type:markdown id:ef8797bd tags:
# Imports
%% Cell type:code id:8b57b468 tags:
``` python
import pandas as pd
import numpy as np
import copy
from openfisca_core.simulation_builder import SimulationBuilder
from leximpact_survey_scenario.leximpact_tax_and_benefit_system import (
create_leximpact_tbs,
)
```
%% Cell type:markdown id:1c956e7b tags:
# Tax benefit system
%% Cell type:code id:9523944a tags:
``` python
# Créer un tax benefit system
tax_benefit_system = create_leximpact_tbs()
```
%% Output
allegement_general_mode_recouvrement has been updated in leximpact-survey-scenario
assiette_csg_plus_values has been updated in leximpact-survey-scenario
iaidrdi has been updated in leximpact-survey-scenario
paje_naissance has been updated in leximpact-survey-scenario
revenus_capital has been updated in leximpact-survey-scenario
rfr_plus_values_hors_rni has been updated in leximpact-survey-scenario
rpns_autres_revenus has been updated in leximpact-survey-scenario
rpns_imposables has been updated in leximpact-survey-scenario
%% Cell type:markdown id:dd09dd13 tags:
# Valeur des paramètres
%% Cell type:code id:083f5ec4 tags:
``` python
parametres_period = "2025-01"
smic_mensuel = tax_benefit_system.get_parameters_at_instant(
parametres_period
).marche_travail.salaire_minimum.smic.smic_b_mensuel
print(f"smic_mensuel : {smic_mensuel}")
smic_annuel = smic_mensuel * 12
print(f"smic_annuel : {smic_annuel}")
```
%% Output
smic_mensuel : 1801.8
smic_annuel : 21621.6
%% Cell type:markdown id:a2f7a723 tags:
# Cas-type
%% Cell type:code id:668a68fa tags:
``` python
annee = 2025
cas_type_salaire = 1.59 * smic_annuel
cas_type_base = {
"familles": {"Famille n°1": {"enfants": [], "parents": ["Adulte 1"]}},
"foyers_fiscaux": {
"Déclaration d’impôts n°1": {
"declarants": ["Adulte 1"],
"depcom_foyer": {
str(annee - 2): "69259",
str(annee - 1): "69259",
str(annee): "69259",
},
"personnes_a_charge": [],
}
},
"individus": {
"Adulte 1": {
"activite": {
str(annee - 2): "actif",
str(annee - 1): "actif",
str(annee): "actif",
},
"categorie_salarie": {
str(annee - 2): "prive_non_cadre",
str(annee - 1): "prive_non_cadre",
str(annee): "prive_non_cadre",
},
"contrat_de_travail": {
str(annee - 2): "temps_plein",
str(annee - 1): "temps_plein",
str(annee): "temps_plein",
},
"contrat_de_travail_type": {
str(annee - 2): "cdi",
str(annee - 1): "cdi",
str(annee): "cdi",
},
"effectif_entreprise": {
str(annee - 2): 20,
str(annee - 1): 20,
str(annee): 20,
},
"date_naissance": {str(annee): "1973-08-30"},
"depcom_entreprise": {
str(annee - 2): "69259",
str(annee - 1): "69259",
str(annee): "69259",
},
"heures_remunerees_volume": {
str(annee - 2): 1607,
str(annee - 1): 1607,
str(annee): 1607,
},
"invalidite": {
str(annee - 2): False,
str(annee - 1): False,
str(annee): False,
},
"salaire_de_base": {
str(annee - 2): cas_type_salaire,
str(annee - 1): cas_type_salaire,
str(annee): cas_type_salaire,
},
"statut_marital": {
str(annee - 2): "celibataire",
str(annee - 1): "celibataire",
str(annee): "celibataire",
},
}
},
"menages": {
"Logement principal n°1": {
"conjoint": [],
"depcom": {
str(annee - 2): "69259",
str(annee - 1): "69259",
str(annee): "69259",
},
"enfants": [],
"personne_de_reference": ["Adulte 1"],
"statut_occupation_logement": {
str(annee - 2): "locataire_vide",
str(annee - 1): "locataire_vide",
str(annee): "locataire_vide",
},
"loyer": {str(annee - 2): 4800, str(annee - 1): 4800, str(annee): 4800},
}
},
}
```
%% Cell type:code id:fb9fadf9 tags:
``` python
# Création de la simulation
simulation = SimulationBuilder().build_from_entities(tax_benefit_system, cas_type_base)
# Variables
temp_variables = ["allegement_general"]
# Calcul des variables
for var in temp_variables:
montant = simulation.calculate_add(var, f"{annee}")
print(f"{var} : {montant}")
```
%% Output
allegement_general : [116.886375]
%% Cell type:markdown id:0df1aff8 tags:
# Selon le salaire
%% Cell type:code id:df19565c tags:
``` python
# boucle sur les salaires
for salaire in np.arange(0, 50001, 1000):
cas_type = copy.deepcopy(cas_type_base)
cas_type["individus"]["Adulte 1"]["salaire_de_base"] = {
str(annee - 2): salaire,
str(annee - 1): salaire,
str(annee): salaire,
}
```
%% Cell type:code id:2347ef82 tags:
``` python
# Variables à calculer
variables_mensuelles = ["taux_allegement_general"]
variables_annuelles = ["salaire_de_base", "assiette_allegement", "allegement_general"]
# Résultats collectés ici
resultats = []
# Simulation pour chaque salaire
for salaire_en_smic in np.arange(1, 2, 0.05):
# Création du cas type
cas_type = copy.deepcopy(cas_type_base)
cas_type["individus"]["Adulte 1"]["salaire_de_base"] = {
str(annee - 2): salaire_en_smic * smic_annuel,
str(annee - 1): salaire_en_smic * smic_annuel,
str(annee): salaire_en_smic * smic_annuel,
}
# Création de la simulation
simulation = SimulationBuilder().build_from_entities(tax_benefit_system, cas_type)
# Calcul des variables
ligne = {"salaire_en_smic": salaire_en_smic}
for var in variables_mensuelles:
montant = simulation.calculate(var, f"{annee}-12")
ligne[var] = montant
for var in variables_annuelles:
montant = simulation.calculate_add(var, f"{annee}")
ligne[var] = montant
resultats.append(ligne)
# Résultats en DataFrame
df_resultats = pd.DataFrame(resultats)
print(df_resultats)
```
%% Output
salaire_en_smic taux_allegement_general salaire_de_base \
0 1.00 [0.3193] [21621.602]
1 1.05 [0.2788] [22702.682]
2 1.10 [0.2419] [23783.764]
3 1.15 [0.2083] [24864.842]
4 1.20 [0.1774] [25945.92]
5 1.25 [0.149] [27027.0]
6 1.30 [0.1228] [28108.08]
7 1.35 [0.0986] [29189.158]
8 1.40 [0.076] [30270.236]
9 1.45 [0.0551] [31351.318]
10 1.50 [0.0355] [32432.396]
11 1.55 [0.0172] [33513.477]
12 1.60 [0.0] [34594.555]
13 1.65 [0.0] [35675.645]
14 1.70 [0.0] [36756.72]
15 1.75 [0.0] [37837.8]
16 1.80 [0.0] [38918.88]
17 1.85 [0.0] [39999.96]
18 1.90 [0.0] [41081.04]
19 1.95 [0.0] [42162.125]
assiette_allegement allegement_general
0 [21621.602] [6904.496]
1 [22702.682] [6330.2646]
2 [23783.764] [5754.084]
3 [24864.842] [5179.347]
4 [25945.92] [4603.671]
5 [27027.0] [4027.9236]
6 [28108.08] [3452.6096]
7 [29189.158] [2878.0515]
8 [30270.236] [2301.5474]
9 [31351.318] [1727.4579]
10 [32432.396] [1151.3502]
11 [33513.477] [576.4319]
12 [34594.555] [0.0]
13 [35675.645] [0.0]
14 [36756.72] [0.0]
15 [37837.8] [0.0]
16 [38918.88] [0.0]
17 [39999.96] [0.0]
18 [41081.04] [0.0]
19 [42162.125] [0.0]
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment