Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

variables sali et salnet à 0 lorsqu'on définit le revenu par salsuperbrut #75

Closed
fmassot opened this issue Mar 15, 2014 · 9 comments
Closed

Comments

@fmassot
Copy link

fmassot commented Mar 15, 2014

Lorsqu'on effectue une simulation via l'api avec un scénario où l'on définit le revenu d'un individu avec la variable salsuperbrut, on a sali et salnet à 0. Par ailleurs, revdisp est toujours à 5255.464355 quelque soit salsuperbrut.

L'exemple précis du bug est dans un notebook visible ici (voir le tableau à la fin): http://nbviewer.ipython.org/urls/raw.githubusercontent.com/fmassot/openfisca-web-notebook/master/test_salairesuperbrut.ipynb?create=1

@benjello
Copy link
Member

La législation prend comme référence le salaire brut. De là on peut calculer les cotisations et en déduire les salaires superbrut, net et imposable. On a également coder des fonctions pour remonter du salaire net et du salaire imposable au salaire brut (et puis on peut dérouler la législation) car ces valeurs sont parfois connus des gens et/ou renseigné dans es enquêtes. On n'a jamais pensé partir du salaire superbrut.

Le revenu dispoible de 5222 euros correspond au RSA sur l'année car l'individu n'a pas de salaire.

@fmassot
Copy link
Author

fmassot commented Mar 16, 2014

Merci !

C effectivement pas très intuitif de définir un salaire à partir du super brut. Je voulais en fait définir cette variable pour calculer des taux effectifs sur une matrice [part du capital dans le revenu total, part du salaire dans le revenu total] où le revenu total = capital + salaire super brut. Définir un capital et salsuperbrut me paraissait alors naturel.

si c trop long à implémenter, je peux m'en passer, mais faudrait peut être imposer la présence de salnet ou sali (même si ces derniers sont à 0).

@benjello
Copy link
Member

Il faut surtout écrire une doc de l'API ;-)
@MalkIPP a eu la même idée que toi et elle l'a même mise en oeuvre pendant le hackathon. Je la laisse t'expliquer comment elle a réalisé cela à coup de fsolve. Et maintenait moi dans la boucle, ça m'intéresse ;-)

@malkaguillot
Copy link
Contributor

Yep c'est effectivement indispensable de considérer le salaire superbrut puisque c'est en quelque sorte le coût total du travail et le coût total du capital que l'on compare.
Voici le bout de code que j'ai voulu utiliser. Le principe est qu'on calcule le salaire brut correspondant au salaire superbrut que l'on veut :

import openfisca_france, datetime
TaxBenefitSystem = openfisca_france.init_country()
tax_benefit_system = TaxBenefitSystem()

from scipy.optimize import fsolve
year = 2013

def _salbrut_from_salsuperbrut(salsuperbrut):
def _salsuperbrut_from_salbrut(brut):
simulation = tax_benefit_system.new_scenario().init_single_entity(
parent1 = {'birth': datetime.date(year - 40, 1, 1),
'salbrut': brut,
},
year = year,
).new_simulation(debug = True)
return simulation.calculate('salsuperbrut')
return fsolve(_salsuperbrut_from_salbrut,salsuperbrut)
#print _salbrut_from_salsuperbrut(salsuperbrut = 24000)

@clems
Copy link
Member

clems commented Mar 18, 2014

Les fonctions qui permettent de passer de sali à salbrut inversent un
barème exprimé en fonction du brut en un barème exprimé en fonction du net
en recombinant l'ensemble des tranches en un barème unique. Il me semble
qu'on doit pouvoir les réutiliser pour répondre à cette question
(probablement en les adaptant car la présence des allègements de charge et
du CICE complique sérieusement les choses). Il faut faire attention avec
les fsolve. La législation est loin de former des ensembles avec toutes les
bonnes propriétés de convexité permettant d'assurer l'existance et
l'unicité des solutions. Par exemple, l'effet de seuil du CICE, à 2,5 SMIC
fait que certains coûts du travail n'existent pas...
Le 16 mars 2014 17:52, "Mahdi Ben Jelloul" notifications@github.com a
écrit :

Il faut surtout écrire une doc de l'API ;-)
@MalkIPP https://github.com/MalkIPP a eu la même idée que toi et elle
l'a même mise en oeuvre pendant le hackathon. Je la laisse t'expliquer
comment elle a réalisé cela à coup de fsolve. Et maintenait moi dans la
boucle, ça m'intéresse ;-)

Reply to this email directly or view it on GitHubhttps://github.com//issues/75#issuecomment-37775957
.

@fmassot
Copy link
Author

fmassot commented Mar 22, 2014

Plutôt que d'utiliser fsolve, j'ai fait une interpolation à partir des points données par une simulation. J'ai mis un exemple ici : http://nbviewer.ipython.org/urls/raw.githubusercontent.com/fmassot/openfisca-web-notebook/master/calcul_taux_effectif.ipynb?create=1

@malkaguillot
Copy link
Contributor

Super ton exemple ! Juste pour être sure : sur le "contour", la couleur représente le taux d'imposition ?
En fait, après la remarque de @clems, je me suis motivée pour faire la fonction d'inversion "à la main". Ce n'est pas fini (à peine commencé) : je te dis quand est elle intégrée au code d'OF.
Aussi, dans ton exemple tu ne prends pas en compte les prélèvements sociaux sur les revenus des capitaux imposés au barème (prelsoc_cap_bar) : ils sont également non contributifs (en revanche, la csg et la crds payée sur ces revenus est déjà incluse dans les variables csg et crds).
En fait, je fais un peu le même projet mais avec une approche différence (plus restrictive sans doute) : je cherche à déterminer avant la simulation une proportion de salaire superbrut / capital, même si c'est bien un salaire brut que je mettrai en entrée. Je t'envoie le truc dès que ça donne quelque chose.

@benjello
Copy link
Member

Ravi de vous voir motivé pour bosser pour finir ce chouette projet. J'ai
commencé à faire des inversions net to brut avec des fsolve. Il peut y
avoir des problèmes du type de ceux que soulèvent Clément donc toujours
faire les tests dans l'autre sens pour vérifier (uen fois que l'on a le
brut vérifier que l'on retrouve le net ou dans votre cas le superbrut)

Mahdi Ben Jelloul

2014-03-22 13:29 GMT+01:00 Guillot notifications@github.com:

Super ton exemple ! Juste pour être sure : sur le "contour", la couleur
représente le taux d'imposition ?
En fait, après la remarque de @clems https://github.com/clems, je me
suis motivée pour faire la fonction d'inversion "à la main". Ce n'est pas
fini (à peine commencé) : je te dis quand est elle intégrée au code d'OF.
Aussi, dans ton exemple tu ne prends pas en compte les prélèvements
sociaux sur les revenus des capitaux imposés au barème (prelsoc_cap_bar) :
ils sont également non contributifs (en revanche, la csg et la crds payée
sur ces revenus est déjà incluse dans les variables csg et crds).
En fait, je fais un peu le même projet mais avec une approche différence
(plus restrictive sans doute) : je cherche à déterminer avant la simulation
une proportion de salaire superbrut / capital, même si c'est bien un
salaire brut que je mettrai en entrée. Je t'envoie le truc dès que ça donne
quelque chose.

Reply to this email directly or view it on GitHubhttps://github.com//issues/75#issuecomment-38350237
.

@benjello
Copy link
Member

Et sur le fond, il faut peut-être tenir compte d'autres taxes et impôt sur
le capital comme l'IS, la taxe foncière etc

Mahdi Ben Jelloul

2014-03-22 14:36 GMT+01:00 Mahdi Ben Jelloul mahdi.benjelloul@gmail.com:

Ravi de vous voir motivé pour bosser pour finir ce chouette projet. J'ai
commencé à faire des inversions net to brut avec des fsolve. Il peut y
avoir des problèmes du type de ceux que soulèvent Clément donc toujours
faire les tests dans l'autre sens pour vérifier (uen fois que l'on a le
brut vérifier que l'on retrouve le net ou dans votre cas le superbrut)

Mahdi Ben Jelloul

2014-03-22 13:29 GMT+01:00 Guillot notifications@github.com:

Super ton exemple ! Juste pour être sure : sur le "contour", la couleur

représente le taux d'imposition ?
En fait, après la remarque de @clems https://github.com/clems, je me
suis motivée pour faire la fonction d'inversion "à la main". Ce n'est pas
fini (à peine commencé) : je te dis quand est elle intégrée au code d'OF.
Aussi, dans ton exemple tu ne prends pas en compte les prélèvements
sociaux sur les revenus des capitaux imposés au barème (prelsoc_cap_bar) :
ils sont également non contributifs (en revanche, la csg et la crds payée
sur ces revenus est déjà incluse dans les variables csg et crds).
En fait, je fais un peu le même projet mais avec une approche différence
(plus restrictive sans doute) : je cherche à déterminer avant la simulation
une proportion de salaire superbrut / capital, même si c'est bien un
salaire brut que je mettrai en entrée. Je t'envoie le truc dès que ça donne
quelque chose.

Reply to this email directly or view it on GitHubhttps://github.com//issues/75#issuecomment-38350237
.

@benjello benjello closed this as completed Apr 9, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants