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

exemple brochure

parent c063e8be
No related branches found
No related tags found
No related merge requests found
Pipeline #20325 failed
%% Cell type:code id:7e095298 tags:
%% Cell type:code id:b18fc35a tags:
``` python
# CONFIGURATION DU NOTEBOOK
from openfisca_core.simulation_builder import SimulationBuilder
from openfisca_france import FranceTaxBenefitSystem
```
# Active l'affichage de résultats multiples par cellule
# %matplotlib inline (pour des graphes)
from IPython.core.interactiveshell import InteractiveShell
%% Cell type:markdown id:f6f428bc tags:
InteractiveShell.ast_node_interactivity = "all"
```
# Tax benefit system
%% Cell type:code id:b18fc35a tags:
%% Cell type:code id:ef660707 tags:
``` python
from openfisca_core.simulation_builder import SimulationBuilder
from openfisca_france import FranceTaxBenefitSystem
tax_benefit_system = FranceTaxBenefitSystem()
```
%% Cell type:markdown id:79e93d23 tags:
## Paramètres de la simulation
%% Cell type:code id:9f29d593 tags:
``` python
period = "2024-04"
```
%% Cell type:markdown id:a45a17aa tags:
## Cas-types
%% Cell type:code id:3c3fdfb1 tags:
``` python
# parametres du cas-type
cas_type_loyer = 500
cas_type_base_ressources = 11500
cas_type_charges_locatives = 0
cas_type_zone = 2
```
%% Cell type:code id:a53928fc tags:
``` python
cas_type_1 = {
"individus": {
"usager": {
"date_naissance": {"ETERNITY": "2007-03-01"},
"handicap": {f"{period}": False},
"statut_marital": {f"{period}": "celibataire"},
"activite": {f"{period}": "etudiant"},
"stagiaire": {f"{period}": False},
"alternant": {f"{period}": False},
"sortie_academie": {f"{period}": True},
"sortie_region_academique": {f"{period}": False},
}
},
"foyers_fiscaux": {
"foyer_fiscal_1": {"declarants": ["usager"], "personnes_a_charge": []}
},
"menages": {
"menage_1": {
"conjoint": [],
"enfants": [],
"personne_de_reference": ["usager"],
"depcom": {f"{period}": "75101"},
"statut_occupation_logement": {f"{period}": "locataire_vide"},
"loyer": {f"{period}": 700},
"charges_locatives": {f"{period}": 100},
"coloc": {f"{period}": False},
"logement_conventionne": {f"{period}": True},
}
},
"familles": {
"famille_1": {
"enfants": [],
"parents": ["usager"],
"proprietaire_proche_famille": {f"{period}": False},
}
},
}
# # cas type personne seule
# cas_type_seul = {
# "individus": {
# "usager": {
# "date_naissance": {"ETERNITY": "2007-03-01"},
# "handicap": {f"{period}": False},
# "statut_marital": {f"{period}": "celibataire"},
# "activite": {f"{period}": "etudiant"},
# "stagiaire": {f"{period}": False},
# "alternant": {f"{period}": False},
# "sortie_academie": {f"{period}": True},
# "sortie_region_academique": {f"{period}": False},
# }
# },
# "foyers_fiscaux": {
# "foyer_fiscal_1": {"declarants": ["usager"], "personnes_a_charge": []}
# },
# "menages": {
# "menage_1": {
# "conjoint": [],
# "enfants": [],
# "personne_de_reference": ["usager"],
# "depcom": {f"{period}": "75101"},
# "statut_occupation_logement": {f"{period}": "locataire_vide"},
# "loyer": {f"{period}": 700},
# "charges_locatives": {f"{period}": 100},
# "coloc": {f"{period}": False},
# "logement_conventionne": {f"{period}": True},
# }
# },
# "familles": {
# "famille_1": {
# "enfants": [],
# "parents": ["usager"],
# "proprietaire_proche_famille": {f"{period}": False},
# }
# },
# }
```
%% Cell type:code id:db456957 tags:
``` python
cas_type_2 = {
# cas type couple 2 enfants
cas_type_couple_2_enfants = {
"individus": {
"usager": {
"date_naissance": {"ETERNITY": "2007-03-01"},
"handicap": {f"{period}": False},
"statut_marital": {f"{period}": "marie"},
"activite": {f"{period}": "actif"},
"stagiaire": {f"{period}": False},
"alternant": {f"{period}": False},
"sortie_academie": {f"{period}": True},
"sortie_region_academique": {f"{period}": False},
},
"conjoint": {
"date_naissance": {"ETERNITY": "2007-03-01"},
"handicap": {f"{period}": False},
"statut_marital": {f"{period}": "marie"},
"activite": {f"{period}": "actif"},
"stagiaire": {f"{period}": False},
"alternant": {f"{period}": False},
"sortie_academie": {f"{period}": True},
"sortie_region_academique": {f"{period}": False},
},
"enfant_1": {
"date_naissance": {"ETERNITY": "2023-03-01"},
},
"enfant_2": {
"date_naissance": {"ETERNITY": "2023-03-01"},
},
},
"foyers_fiscaux": {
"foyer_fiscal_1": {
"declarants": ["usager"],
"personnes_a_charge": ["enfant_1", "enfant_2"],
}
},
"menages": {
"menage_1": {
"conjoint": ["conjoint"],
"enfants": ["enfant_1", "enfant_2"],
"personne_de_reference": ["usager"],
# 'depcom': {f"{period}": '33000'},
"statut_occupation_logement": {f"{period}": "locataire_vide"},
"loyer": {f"{period}": 500},
"charges_locatives": {f"{period}": 0},
"loyer": {f"{period}": cas_type_loyer},
"charges_locatives": {f"{period}": cas_type_charges_locatives},
"coloc": {f"{period}": False},
"logement_conventionne": {f"{period}": True},
"zone_apl": {f"{period}": 2},
"zone_apl": {f"{period}": cas_type_zone},
}
},
"familles": {
"famille_1": {
"enfants": ["enfant_1", "enfant_2"],
"parents": ["usager", "conjoint"],
"proprietaire_proche_famille": {f"{period}": False},
"aide_logement_base_ressources": {f"{period}": 11500},
"reduction_loyer_solidarite": {f"{period}": 0},
"aide_logement_base_ressources": {f"{period}": cas_type_base_ressources},
"reduction_loyer_solidarite": {
f"{period}": 0
}, # ATTENTION : dans l'exemple de la brochure, pas de RLS car AL et non APL (à corriger dans Openfisca)
}
},
}
```
%% Cell type:code id:abe80545 tags:
``` python
situation_apl = cas_type_2
# choix du cas-type
situation_apl = cas_type_couple_2_enfants
```
%% Cell type:code id:efb61acf tags:
%% Cell type:markdown id:55cb3f88 tags:
``` python
# CALCUL DE L'APL
# Simulation
tax_benefit_system = FranceTaxBenefitSystem()
%% Cell type:code id:efb61acf tags:
``` python
sb = SimulationBuilder()
simulation = sb.build_from_entities(tax_benefit_system, situation_apl)
```
# apl_variables = ['apl', 'logement_conventionne', 'aide_logement_montant', 'aide_logement_montant_brut', 'zone_apl']
apl_variables = [
"apl",
"zone_apl",
"al_nb_personnes_a_charge",
"al_couple",
"coloc",
"logement_chambre",
"aide_logement_loyer_retenu",
"aide_logement_loyer_plafond",
"aide_logement_loyer_reel",
"logement_conventionne",
"aide_logement_montant",
"aide_logement_montant_brut",
]
# apl_variables_entities = ['familles', 'menages', 'familles', 'familles', 'menages']
# apl_variables_groupes = ['famille_1', 'menage_1', 'famille_1', 'famille_1', 'menage_1']
%% Cell type:code id:ff3832df tags:
for variable_name in apl_variables:
print(f"{variable_name}: {simulation.calculate(variable_name, period)}")
``` python
# paramètres
parametres_secteur_locatif_period = tax_benefit_system.parameters(
chemin_parametres = tax_benefit_system.parameters(
period
).prestations_sociales.aides_logement.allocations_logement.locatif
).prestations_sociales.aides_logement.allocations_logement
# Pour mémoire, à partir d'ici, tous les simulation.calculate d'une variable impliquée dans le calcul 'apl'
# fera appel au cache des valeurs de la simulation (n'impliquera pas de re-calcul)
param_p0_taux = (
chemin_parametres.locatif.formule.pp_particip_perso.p0_particip_min.p0_taux
)
param_p0_forfait = (
chemin_parametres.locatif.formule.pp_particip_perso.p0_particip_min.p0_forfait
)
param_minoration_forfaitaire = chemin_parametres.locatif.minoration_forfaitaire
param_taux_crds = tax_benefit_system.parameters(
period
).prelevements_sociaux.contributions_sociales.crds.taux.rates[0]
```
%% Output
%% Cell type:code id:b9a67424 tags:
apl: [406.47]
zone_apl: ['zone_2']
al_nb_personnes_a_charge: [2]
al_couple: [ True]
coloc: [False]
logement_chambre: [False]
aide_logement_loyer_retenu: [439.07]
aide_logement_loyer_plafond: [439.07]
aide_logement_loyer_reel: [500.]
logement_conventionne: [ True]
aide_logement_montant: [406.47]
aide_logement_montant_brut: [408.51]
``` python
# calculs
%% Cell type:code id:46898467 tags:
result_loyer_retenu = round(
simulation.calculate("aide_logement_loyer_retenu", period).item(), 2
)
result_C = round(simulation.calculate("aide_logement_charges", period).item(), 2)
result_R = round(
simulation.calculate("aide_logement_base_ressources", period).item(), 2
)
result_R0 = round(simulation.calculate("aide_logement_R0", period).item(), 2)
result_P0 = round(
max(param_p0_taux * (result_loyer_retenu + result_C), param_p0_forfait), 2
)
result_Pp = round(result_P0 + 0.02685 * (result_R - result_R0), 2)
result_AL = result_loyer_retenu + result_C - result_Pp
result_AL_brute = result_AL - param_minoration_forfaitaire
result_crds = round(simulation.calculate("crds_logement", period).item(), 2)
result_aide_logement = round(simulation.calculate("aide_logement", period).item(), 2)
```
``` python
apl_variables_results = ["zone_apl", "aide_logement_loyer_retenu"]
%% Cell type:markdown id:1cb0b79b tags:
# Exemple brochure
apl_results = {}
%% Cell type:code id:0411e81a tags:
for variable_name in apl_variables_results:
apl_results[f"{variable_name}"] = simulation.calculate(variable_name, period)
``` python
# Mise en surbrillance
apl_results["zone_apl"]
```
YELLOW_BG_BLACK_TEXT = "\033[30;43m" # texte noir (30), fond jaune (43)
RESET = "\033[0m"
%% Output
{'zone_apl': EnumArray([TypesZoneApl.zone_2]),
'aide_logement_loyer_retenu': array([439.07], dtype=float32)}
def highlight(val):
return f"{YELLOW_BG_BLACK_TEXT}{val}{RESET}"
```
%% Cell type:code id:47278699 tags:
%% Cell type:code id:1efffbf0 tags:
``` python
print("Zone APL :")
result_zone_apl = simulation.calculate("zone_apl", period)
print(result_zone_apl)
temp_variable = "zone_apl"
print(f"{temp_variable}: {simulation.calculate(temp_variable, period)}")
print("")
print("Loyer retenu :")
temp_variable = "aide_logement_loyer_retenu"
print(f"{temp_variable}: {simulation.calculate(temp_variable, period)}")
print("")
print("Forfait de charges :")
temp_variable = "aide_logement_charges"
print(f"{temp_variable}: {simulation.calculate(temp_variable, period)}")
print("")
print("Participation personnelle :")
temp_variable = "aide_logement_participation_personnelle"
print(f"{temp_variable}: {simulation.calculate(temp_variable, period)}")
print("")
print("Base ressources :")
temp_variable = "aide_logement_base_ressources"
print(f"{temp_variable}: {simulation.calculate(temp_variable, period)}")
print("")
print("APL avant dégressivité :")
temp_variable = "aide_logement_montant_brut_avant_degressivite"
print(f"{temp_variable}: {simulation.calculate(temp_variable, period)}")
print("")
print("APL avec baisse forfaitaire :")
temp_variable = "aide_logement_montant_brut"
print(f"{temp_variable}: {simulation.calculate(temp_variable, period)}")
print("")
print("Réduction loyer de solidarité :")
temp_variable = "reduction_loyer_solidarite"
print(f"{temp_variable}: {simulation.calculate(temp_variable, period)}")
print("")
print("CRDS :")
temp_variable = "crds_logement"
print(f"{temp_variable}: {simulation.calculate(temp_variable, period)}")
print("")
print("APL montant brut CRDS :")
temp_variable = "aide_logement_montant_brut_crds"
print(f"{temp_variable}: {simulation.calculate(temp_variable, period)}")
print("")
print("APL :")
temp_variable = "apl"
print(f"{temp_variable}: {simulation.calculate(temp_variable, period)}")
print("")
```
# Exemple métropole
# brochure 2024 p. 22
# https://www.ecologie.gouv.fr/sites/default/files/documents/Brochure-bareme-2024-APL.pdf
%% Output
Zone APL :
['zone_2']
zone_apl: ['zone_2']
Loyer retenu :
aide_logement_loyer_retenu: [439.07]
Forfait de charges :
aide_logement_charges: [84.42]
Participation personnelle :
aide_logement_participation_personnelle: [109.9838]
Base ressources :
aide_logement_base_ressources: [11500.]
APL avant dégressivité :
aide_logement_montant_brut_avant_degressivite: [413.5062]
APL avec baisse forfaitaire :
aide_logement_montant_brut: [408.51]
Réduction loyer de solidarité :
reduction_loyer_solidarite: [0.]
CRDS :
crds_logement: [-2.04255]
APL montant brut CRDS :
aide_logement_montant_brut_crds: [408.51]
APL :
apl: [406.47]
%% Cell type:code id:0deaf0cc tags:
``` python
f"""Soit un couple avec deux enfants à charge en zone II ayant des ressources annuelles
prises en compte pour le calcul de 11 500 € et payant un loyer mensuel de 500 €.
Le calcul est effectué en AL locative, pour le droit de janvier 2024.
AL = L + C - Pp
avec
Pp = P0 + Tp * (R - R0)
et
Tp = TF + TL
L = loyer pris en compte = minimum entre Lréel et Lplafond = {439,07 }
(loyer plafond de la zone II pour un couple avec deux enfants à charge)
C = 84,42 € (forfait charges pour un couple avec deux enfants à charge, en zone II)
P0 = maximum entre [8,5 % (L + C)] et 37,91 €
8,5 % (L + C) = 8,5 % (439,07 + 84,42) = 8,5% * 523,49 = 44,50 > 37,91
d’où P0 = 44,50 €
R = 11 500 € (valeur déjà arrondie à la centaine d’euros supérieure) et R0 = 9 061 €
d’où R - R0 = 11 500 – 9 061 = 2 439 €
TF = 2,38 %
RL = L / LR = 1 (valeur déjà arrondie à deux décimales)
d’où TL = 0,45 % * 30 % + 0,68 % * (1 - 75 %) = 0,305 % (valeur déjà arrondie à trois
décimales)
Tp = TF + TL = 2,38 % + 0,305 % = 2,685 %
Pp = P0 + Tp * (R - R0) = 44,50 + 2,685 % * 2 439 = 109,98 €
AL = L + C - Pp = 439,07 + 84,42 - 109,98
AL = 413,51 €
Finalisation du calcul :
- vérification de la dégressivité : Lréel = 500 €
La dégressivité s’applique pour un Lréel > 2,5 * Lplafond = 2,5 * 439,07 = 1 097,68 €.
Ainsi, dans ce cas, la dégressivité de l’aide ne s’applique pas.
- baisse forfaitaire de l’aide de 5 € :
Aide brute = AL - 5 € = 408,51 €
- application de la RLS : dans ce cas, la RLS ne s’applique pas car l’aide est une
allocation de logement (AL) et non une aide personnalisée au logement (APL).
- vérification du seuil de versement : Aide brute = 408,51 € > seuil de versement
de 10 € pour l’AL.
- application de la CRDS : le montant à déduire de l’aide est de 0,5 % de l’aide à
verser, soit 0,5 % * 408,51 = 2,04 € (arrondi au centime inférieur)
Aide nette = 408,51 - 2,04 = 406,47 € ; arrondi à l’euro inférieur
Ainsi, l’aide versée = 406 €"""
print(
f"Soit un couple avec deux enfants à charge en zone {cas_type_zone} ayant des ressources annuelles prises en compte pour le calcul de {cas_type_base_ressources} € et payant un loyer mensuel de {cas_type_loyer} €."
)
print(
"Le calcul est effectué en AL locative, pour le droit de janvier 2024. AL = L + C - Pp avec Pp = P0 + Tp * (R - R0) et Tp = TF + TL"
)
print(
f"L = loyer pris en compte = minimum entre Lréel et Lplafond = {highlight(result_loyer_retenu)}"
)
print("(loyer plafond de la zone II pour un couple avec deux enfants à charge)")
print(
f"C = {highlight(result_C)} € (forfait charges pour un couple avec deux enfants à charge, en zone II)"
)
print(f"P0 = maximum entre [8,5 % (L + C)] et {highlight(param_p0_forfait)}")
print(
f"8,5 % (L + C) = 8,5 % ({highlight(result_loyer_retenu)} + {highlight(result_C)}) = 8,5 % * {highlight(round(result_loyer_retenu + result_C, 2))} = {highlight(round(0.085 * (result_loyer_retenu + result_C), 2))} > {highlight(param_p0_forfait)}"
)
assert round(0.085 * (result_loyer_retenu + result_C), 2) > param_p0_forfait
print(f"d’où P0 = {highlight(result_P0)}")
print(
f"R = {result_R} € (valeur déjà arrondie à la centaine d’euros supérieure) et R0 = {highlight(result_R0)}"
)
print(
f"d’où R - R0 = {result_R}{highlight(result_R0)} = {highlight(result_R - result_R0)}"
)
print("TF = 2,38 %")
print("RL = L / LR = 1 (valeur déjà arrondie à deux décimales)")
print(
"d’où TL = 0,45 % * 30 % + 0,68 % * (1 - 75 %) = 0,305 % (valeur déjà arrondie à trois décimales)"
)
print("Tp = TF + TL = 2,38 % + 0,305 % = 2,685 %")
print(
f"Pp = P0 + Tp * (R - R0) = {highlight(result_P0)} + 2,685 % * {highlight(result_R - result_R0)} = {highlight(result_Pp)}"
)
print(
f"AL = L + C - Pp = {highlight(result_loyer_retenu)} + {highlight(result_C)} - {highlight(result_Pp)}"
)
print(f"AL = {highlight(result_AL)}")
print("Finalisation du calcul :")
print(f"- vérification de la dégressivité : Lréel = {cas_type_loyer}")
print(
f"La dégressivité s’applique pour un Lréel > 2,5 * Lplafond = 2,5 * {highlight(result_loyer_retenu)} = {highlight(round(2.5 * result_loyer_retenu, 2))} €."
)
print("Ainsi, dans ce cas, la dégressivité de l’aide ne s’applique pas.")
print("- baisse forfaitaire de l’aide de 5 € :")
print(
f"Aide brute = AL - {param_minoration_forfaitaire} € = {highlight(result_AL_brute)}"
)
print(
"- application de la RLS : dans ce cas, la RLS ne s’applique pas car l’aide est une allocation de logement (AL) et non une aide personnalisée au logement (APL)."
)
print(
f"- vérification du seuil de versement : Aide brute = {highlight(result_AL_brute)} € > seuil de versement de 10 € pour l’AL."
)
assert result_AL_brute > 10
print(
f"- application de la CRDS : le montant à déduire de l’aide est de 0,5 % de l’aide à verser, soit {(param_taux_crds * 100)} % * {highlight(result_AL_brute)} = {highlight(round(param_taux_crds * (result_AL_brute), 2))} € (arrondi au centime inférieur)"
)
print(f"Aide nette = {result_AL_brute} - 2,04 = 406,47 € ; arrondi à l’euro inférieur")
print(
f"Ainsi, l’aide versée = {highlight(result_aide_logement)}"
) # FAIRE L'ARRONDI DANS OPENFISCA
```
%% Output
'Soit un couple avec deux enfants à charge en zone II ayant des ressources annuelles\nprises en compte pour le calcul de 11 500 € et payant un loyer mensuel de 500 €.\nLe calcul est effectué en AL locative, pour le droit de janvier 2024.\nAL = L + C - Pp\n avec\n Pp = P0 + Tp * (R - R0)\n et\n Tp = TF + TL\nL = loyer pris en compte = minimum entre Lréel et Lplafond = 439,07 €\n(loyer plafond de la zone II pour un couple avec deux enfants à charge)\nC = 84,42 € (forfait charges pour un couple avec deux enfants à charge, en zone II)\nP0 = maximum entre [8,5 % (L + C)] et 37,91 €\n8,5 % (L + C) = 8,5 % (439,07 + 84,42) = 8,5% * 523,49 = 44,50 > 37,91\nd’où P0 = 44,50 €\nR = 11 500 € (valeur déjà arrondie à la centaine d’euros supérieure) et R0 = 9 061 €\nd’où R - R0 = 11 500 – 9 061 = 2 439 €\nTF = 2,38 %\nRL = L / LR = 1 (valeur déjà arrondie à deux décimales)\nd’où TL = 0,45 % * 30 % + 0,68 % * (1 - 75 %) = 0,305 % (valeur déjà arrondie à trois\ndécimales)\nTp = TF + TL = 2,38 % + 0,305 % = 2,685 %\nPp = P0 + Tp * (R - R0) = 44,50 + 2,685 % * 2 439 = 109,98 €\nAL = L + C - Pp = 439,07 + 84,42 - 109,98\n AL = 413,51 €\nFinalisation du calcul :\n- vérification de la dégressivité : Lréel = 500 €\nLa dégressivité s’applique pour un Lréel > 2,5 * Lplafond = 2,5 * 439,07 = 1 097,68 €.\nAinsi, dans ce cas, la dégressivité de l’aide ne s’applique pas.\n- baisse forfaitaire de l’aide de 5 € :\n Aide brute = AL - 5 € = 408,51 €\n- application de la RLS : dans ce cas, la RLS ne s’applique pas car l’aide est une\nallocation de logement (AL) et non une aide personnalisée au logement (APL).\n- vérification du seuil de versement : Aide brute = 408,51 € > seuil de versement\nde 10 € pour l’AL.\n- application de la CRDS : le montant à déduire de l’aide est de 0,5 % de l’aide à\nverser, soit 0,5 % * 408,51 = 2,04 € (arrondi au centime inférieur)\nAide nette = 408,51 - 2,04 = 406,47 € ; arrondi à l’euro inférieur\nAinsi, l’aide versée = 406 €'
Soit un couple avec deux enfants à charge en zone 2 ayant des ressources annuelles prises en compte pour le calcul de 11500 € et payant un loyer mensuel de 500 €.
Le calcul est effectué en AL locative, pour le droit de janvier 2024. AL = L + C - Pp avec Pp = P0 + Tp * (R - R0) et Tp = TF + TL
L = loyer pris en compte = minimum entre Lréel et Lplafond = 439.07 €
(loyer plafond de la zone II pour un couple avec deux enfants à charge)
C = 84.42 € (forfait charges pour un couple avec deux enfants à charge, en zone II)
P0 = maximum entre [8,5 % (L + C)] et 37.91 €
8,5 % (L + C) = 8,5 % (439.07 + 84.42) = 8,5 % * 523.49 = 44.5 > 37.91
d’où P0 = 44.5 €
R = 11500.0 € (valeur déjà arrondie à la centaine d’euros supérieure) et R0 = 9061.0 €
d’où R - R0 = 11500.0 – 9061.0 = 2439.0 €
TF = 2,38 %
RL = L / LR = 1 (valeur déjà arrondie à deux décimales)
d’où TL = 0,45 % * 30 % + 0,68 % * (1 - 75 %) = 0,305 % (valeur déjà arrondie à trois décimales)
Tp = TF + TL = 2,38 % + 0,305 % = 2,685 %
Pp = P0 + Tp * (R - R0) = 44.5 + 2,685 % * 2439.0 = 109.99 €
AL = L + C - Pp = 439.07 + 84.42 - 109.99
AL = 413.5 €
Finalisation du calcul :
- vérification de la dégressivité : Lréel = 500 €
La dégressivité s’applique pour un Lréel > 2,5 * Lplafond = 2,5 * 439.07 = 1097.67 €.
Ainsi, dans ce cas, la dégressivité de l’aide ne s’applique pas.
- baisse forfaitaire de l’aide de 5 € :
Aide brute = AL - 5 € = 408.5 €
- application de la RLS : dans ce cas, la RLS ne s’applique pas car l’aide est une allocation de logement (AL) et non une aide personnalisée au logement (APL).
- vérification du seuil de versement : Aide brute = 408.5 € > seuil de versement de 10 € pour l’AL.
- application de la CRDS : le montant à déduire de l’aide est de 0,5 % de l’aide à verser, soit 0.5 % * 408.5 = 2.04 € (arrondi au centime inférieur)
Aide nette = 408.5 - 2,04 = 406,47 € ; arrondi à l’euro inférieur
Ainsi, l’aide versée = 406.47 €
......
%% Cell type:markdown id: tags:
# Aides logement - Budgétaire
%% Cell type:code id: tags:
``` python
from leximpact_survey_scenario.leximpact_survey_scenario import (
LeximpactErfsSurveyScenario,
)
import pandas as pd
import os
config_files_directory = os.path.join(
os.path.dirname(os.path.dirname(os.getcwd())), ".config", "openfisca-survey-manager"
)
from leximpact_survey_scenario.leximpact_tax_and_benefit_system import ( # leximpact_tbs_extension,
create_leximpact_tbs,
)
```
%% Output
revenus_capital has been updated in leximpact-survey-scenario
iaidrdi has been updated in leximpact-survey-scenario
rfr_plus_values_hors_rni has been updated in leximpact-survey-scenario
assiette_csg_plus_values has been updated in leximpact-survey-scenario
rpns_imposables has been updated in leximpact-survey-scenario
rpns_autres_revenus has been updated in leximpact-survey-scenario
paje_naissance has been updated in leximpact-survey-scenario
allegement_general_mode_recouvrement has been updated in leximpact-survey-scenario
%% Cell type:markdown id: tags:
# Données individus
%% Cell type:code id: tags:
``` python
# tax and benefit system
leximpact_tbs = create_leximpact_tbs(projected_variables={
# "menage": {
# "famille": variables_logement_famille,
# },
# "individu": {
# "famille": variables_logement_famille
# },
})
leximpact_tbs = create_leximpact_tbs(
projected_variables={
# "menage": {
# "famille": variables_logement_famille,
# },
# "individu": {
# "famille": variables_logement_famille
# },
}
)
```
%% Output
revenus_capital has been updated in leximpact-survey-scenario
iaidrdi has been updated in leximpact-survey-scenario
rfr_plus_values_hors_rni has been updated in leximpact-survey-scenario
assiette_csg_plus_values has been updated in leximpact-survey-scenario
rpns_imposables has been updated in leximpact-survey-scenario
rpns_autres_revenus has been updated in leximpact-survey-scenario
paje_naissance has been updated in leximpact-survey-scenario
allegement_general_mode_recouvrement has been updated in leximpact-survey-scenario
%% Cell type:code id: tags:
``` python
# survey scenario
survey_scenario = LeximpactErfsSurveyScenario(
period=2025,
config_files_directory=config_files_directory,
baseline_tax_benefit_system = leximpact_tbs
baseline_tax_benefit_system=leximpact_tbs,
)
```
%% Cell type:code id: tags:
``` python
# variables
variables = [
'weight_familles',
'weight_menages',
'aides_logement',
"aide_logement", # famille
"zone_apl", # menage
"statut_occupation_logement", # menage
"al_couple", # famille
"aide_logement_base_ressources", # famille
"loyer", # menage
"aide_logement_loyer_plafond", # famille
"apl", # famille
"als", # famille
"alf", # famille
"logement_conventionne", # menage
"aide_logement_montant", # famille
"al_nb_personnes_a_charge" # famille
"weight_familles",
"weight_menages",
"aides_logement",
"aide_logement", # famille
"zone_apl", # menage
"statut_occupation_logement", # menage
"al_couple", # famille
"aide_logement_base_ressources", # famille
"loyer", # menage
"aide_logement_loyer_plafond", # famille
"apl", # famille
"als", # famille
"alf", # famille
"logement_conventionne", # menage
"aide_logement_montant", # famille
"al_nb_personnes_a_charge", # famille
]
```
%% Cell type:code id: tags:
``` python
# df_individus
df_individus = survey_scenario.simulations[
"baseline"
].create_data_frame_by_entity(
variables,
period=2025,
merge=True
)
df_individus = survey_scenario.simulations["baseline"].create_data_frame_by_entity(
variables, period=2025, merge=True
)
```
%% Cell type:code id: tags:
``` python
# ordre des colonnes
# df.columns
# columns_first = variables_logement
# columns_others = [col for col in df.columns if col not in columns_first]
# df = df[columns_first + columns_others]
```
%% Cell type:code id: tags:
``` python
# calcul du budget
# df["aide_logement_total"] = df["aide_logement"] * df[weight]
# df["aide_logement_total"].sum() / 1e9
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment