Plafonnement de l'avantage du quotient conjugal dans le calcul de l'IRPP


In [1]:
from datetime import date

from openfisca_france import init_country
from openfisca_france.model.base import *

Adaptation pour faciliter l'usage de ce notebook

Ce correctif permet de redéfinir plusieurs fois la même variable sans provoquer d'erreur.

Variable avec formule

Variable avec différentes formules en fonction de la date

Système socio-fiscal


In [2]:
TaxBenefitSystem = init_country()
tax_benefit_system = TaxBenefitSystem()

Simulation


In [3]:
# age = 60
# ages = [12, 37, 28]

# jean_eric = {
#     'name': u'Jean-Éric',
#     'age': 33,
# }
# aurelie = dict(
#     name = u'Aurélie',
#     age = 33,
# )

# personnes = [aurelie, jean_eric]

In [4]:
scenario = tax_benefit_system.new_scenario().init_single_entity(
    period = 2014,
    parent1 = dict(
        birth = date(1980, 1, 1),
        salaire_de_base = 400000,
        statmarit = 5,
        ),
    parent2 = dict(
        birth = date(1980, 1, 1),
        salaire_imposable = 0,
        ),
    enfants = [
        ],
    )

simulation_exemple = scenario.new_simulation(debug = True)

In [5]:
simulation_exemple2 = tax_benefit_system.new_scenario().init_single_entity(
    period = 2014,
    parent1 = dict(
        birth = date(1980, 1, 1),
        salaire_de_base = 400000,
        ),
    enfants = [
        ],
    ).new_simulation(debug = True)

In [6]:
print "exemple 1",simulation_exemple.calculate("impo"), \
       ", exemple 2", simulation_exemple2.calculate("impo")


exemple 1 [ 0.] , exemple 2 [-143454.59375]

In [7]:
scenario = tax_benefit_system.new_scenario().init_single_entity(
    period = 2014,
    parent1 = dict(
        birth = date(1980, 1, 1),
        salaire_imposable = 400000,
        statmarit = 5,
        ),
    )

simulation_exemple = scenario.new_simulation(debug = True)

In [8]:
import json
import urllib
import webbrowser
def get_trace_tool_link(scenario, variables, api_url = u'http://api-test.openfisca.fr',
        trace_tool_url = u'http://www.openfisca.fr/outils/trace'):
    scenario_json = scenario.to_json()
    simulation_json = {
        'scenarios': [scenario_json],
        'variables': variables,
        }
    url = trace_tool_url + '?' + urllib.urlencode({
        'simulation': json.dumps(simulation_json),
        'api_url': api_url,
        })
    return url

In [9]:
print get_trace_tool_link(scenario, ["impo"])


http://www.openfisca.fr/outils/trace?api_url=http%3A%2F%2Fapi-test.openfisca.fr&simulation=%7B%22scenarios%22%3A+%5B%7B%22period%22%3A+%222014%22%2C+%22test_case%22%3A+%7B%22familles%22%3A+%5B%7B%22id%22%3A+0%2C+%22parents%22%3A+%5B%22ind0%22%5D%7D%5D%2C+%22foyers_fiscaux%22%3A+%5B%7B%22id%22%3A+0%2C+%22declarants%22%3A+%5B%22ind0%22%5D%7D%5D%2C+%22individus%22%3A+%5B%7B%22id%22%3A+%22ind0%22%2C+%22salaire_imposable%22%3A+400000.0%2C+%22statmarit%22%3A+5%2C+%22birth%22%3A+%221980-01-01%22%7D%5D%2C+%22menages%22%3A+%5B%7B%22id%22%3A+0%2C+%22personne_de_reference%22%3A+%22ind0%22%7D%5D%7D%7D%5D%2C+%22variables%22%3A+%5B%22impo%22%5D%7D

Réforme


In [10]:
from openfisca_core import reforms

from numpy import (datetime64, logical_and as and_, logical_not as not_, logical_or as or_, logical_xor as xor_,
    maximum as max_, minimum as min_, round)

In [11]:
Reform = reforms.make_reform(
    key = 'plafonnement_gain_quotient_conjugal',
    name = u"Réforme des cotisations pour un Revenu de base",
    reference = tax_benefit_system,
    )

In [12]:
@Reform.formula
class rev_cat_tspr_individuel(SimpleFormulaColumn):
    column = FloatCol
    entity_class = Individus
    label = u"Nouvelles cotisations contributives"

    def function(self, simulation, period):
        period = period.start.offset('first-of', 'year').period('year')
        tspr = simulation.calculate('tspr', period)
        indu_plaf_abat_pen = simulation.calculate('indu_plaf_abat_pen_individuel', period)
        return period, tspr + indu_plaf_abat_pen
    
@Reform.formula
class indu_plaf_abat_pen_individuel(SimpleFormulaColumn):
    column = FloatCol(default = 0)
    entity_class = Individus
    label = u"indu_plaf_abat_pen"

    def function(self, simulation, period):
        """
        Plafonnement de l'abattement de 10% sur les pensions du foyer
        'foy'
        """
        period = period.start.offset('first-of', 'year').period('year')
        abatpen = simulation.legislation_at(period.start).ir.tspr.abatpen

        pen_net = simulation.calculate('pen_net', period)
        rev_pen = simulation.calculate('rev_pen', period)
        print type(pen_net)

        abat = rev_pen - pen_net
        return period, abat - min_(abat, abatpen.max)

In [13]:
@Reform.formula
class rev_cat_individuel(SimpleFormulaColumn):
    column = FloatCol(default = 0)
    entity_class = Individus
    label = u"Revenus catégoriels"
    url = "http://www.insee.fr/fr/methodes/default.asp?page=definitions/revenus-categoriesl.htm"

    def function(self, simulation, period):
        '''
        Revenus Categoriels
        '''
        period = period.start.offset('first-of', 'year').period('year')
        rev_cat_tspr_individuel = simulation.calculate('rev_cat_tspr_individuel', period)
       # rev_cat_rvcm = simulation.calculate('rev_cat_rvcm', period)
       # rev_cat_rfon = simulation.calculate('rev_cat_rfon', period)
       # rev_cat_rpns = simulation.calculate('rev_cat_rpns', period)
       # rev_cat_pv = simulation.calculate('rev_cat_pv', period)

        return period, rev_cat_tspr_individuel # + rev_cat_rvcm + rev_cat_rfon + rev_cat_rpns + rev_cat_pv TODO :Add everything

In [14]:
@Reform.formula
class rbg_individuel(SimpleFormulaColumn):
    column = FloatCol(default = 0)
    entity_class = Individus
    label = u"Revenu brut global"
    url = "http://www.documentissime.fr/dossiers-droit-pratique/dossier-19-l-impot-sur-le-revenu-les-modalites-generales-d-imposition/la-determination-du-revenu-imposable/le-revenu-brut-global.html"

    def function(self, simulation, period):
        '''Revenu brut global
        '''
        period = period.start.offset('first-of', 'year').period('year')
        rev_cat_individuel = simulation.calculate('rev_cat_individuel', period)
       # deficit_ante = simulation.calculate('deficit_ante', period)
      #  f6gh = simulation.calculate('f6gh', period)
        #nbic_impm_individuel = simulation.calculate('nbic_impm', period)
        #nacc_pvce_individuel = simulation.calculate('nacc_pvce', period)
        cga = simulation.legislation_at(period.start).ir.rpns.cga_taux2

        # (Total 17)
        # sans les revenus au quotient
        #nacc_pvce = self.sum_by_entity(nacc_pvce_holder)
        return period, max_(0, rev_cat_individuel) # + f6gh + nbic_impm_individuel + nacc_pvce) * (1 + cga) - deficit_ante

In [15]:
@Reform.formula
class rng_individuel(SimpleFormulaColumn):
    column = FloatCol(default = 0)
    entity_class = Individus
    label = u"Revenu net global"
    url = "http://impotsurlerevenu.org/definitions/114-revenu-net-global.php"

    def function(self, simulation, period):
        ''' Revenu net global (total 20) '''
        period = period.start.offset('first-of', 'year').period('year')
        rbg_individuel = simulation.calculate('rbg_individuel', period)
        csg_deduc = simulation.calculate('csg_deduc', period)
        #print csg_deduc  #TODO : CHeck that, why is it a Foyer size ?
        charges_deduc = simulation.calculate('charges_deduc', period)

        return period, max_(0, rbg_individuel - csg_deduc - charges_deduc)

In [16]:
@Reform.formula
class rni_individuel(SimpleFormulaColumn):
    column = FloatCol(default = 0)
    entity_class = Individus
    label = u"Revenu net imposable"
    url = "http://impotsurlerevenu.org/definitions/115-revenu-net-imposable.php"

    def function(self, simulation, period):
        ''' Revenu net imposable ou déficit à reporter'''
        period = period.start.offset('first-of', 'year').period('year')
        rng_individuel = simulation.calculate('rng_individuel', period)
        #abat_spe = simulation.calculate('abat_spe', period)

        return period, rng_individuel #- abat_spe

In [38]:
@Reform.formula
class ir_brut_individuel(SimpleFormulaColumn):
    column = FloatCol(default = 0)
    entity_class = Individus
    label = u"Impot sur le revenu brut avant non imposabilité et plafonnement du quotient"

    def function(self, simulation, period):
        period = period.start.offset('first-of', 'month').period('year')
        nbptr_holder = simulation.compute('nbptr', period)
        nbptr_individualise = self.cast_from_entity_to_roles(nbptr_holder)
        nb_adult = simulation.calculate('nb_adult', period)
        nbptr_individuel = nbptr_individualise * (nb_adult == 1) + (nbptr_individualise/2) * (nb_adult == 2)    
        taux_effectif = simulation.calculate('taux_effectif', period)
        rni_individuel = simulation.calculate('rni_individuel', period)
        bareme = simulation.legislation_at(period.start).ir.bareme

        return period, (taux_effectif == 0) * nbptr_individuel * bareme.calc(rni_individuel / nbptr_individualise) + \
                        taux_effectif * rni_individuel


Caution: You are adding a formula to an instantiated Reform. Reform must be reinstatiated.

In [59]:
@Reform.formula
class ir_qf_conjugual_plafonne_revenu_de_base(SimpleFormulaColumn):
    column = FloatCol(default = 0)
    entity_class = FoyersFiscaux
    label = u""

    def function(self, simulation, period):
        period = period.start.offset('first-of', 'month').period('year')
        seuil = 6032
        ir_brut = simulation.calculate('ir_brut', period)
        ir_brut_individuel_holder = simulation.compute('ir_brut_individuel', period)
        ir_indivudel_somme = self.sum_by_entity(ir_brut_individuel_holder)
        ir_qf_conj_plaf = max_(ir_indivudel_somme- seuil, ir_brut )
        return period, ir_qf_conj_plaf


Caution: You are adding a formula to an instantiated Reform. Reform must be reinstatiated.

In [ ]:


In [60]:
[2,3,4]


Out[60]:
[2, 3, 4]

In [61]:
reform = Reform()

In [62]:
reform_simulation =  reform.new_scenario().init_single_entity(
                                                                period = 2014,
                                                                parent1 = dict(
                                                                    birth = date(1980, 1, 1),
                                                                    salaire_imposable = 400000,
                                                                    ),
                                                                parent2 = dict(
                                                                    birth = date(1980, 1, 1),
                                                                    salaire_imposable = 100000,
                                                                    ),
                                                                enfants = [
                                                                    ],
                                                                ).new_simulation(debug = True)

In [66]:
print reform_simulation.calculate('ir_qf_conjugual_plafonne_revenu_de_base')
reform_simulation.calculate('irpp') - reform_simulation.calculate('ir_qf_conjugual_plafonne_revenu_de_base')


[ 195419.328125]
Out[66]:
array([-397673.9375], dtype=float32)

In [19]:
reform_simulation.calculate('rev_cat_individuel')


Out[19]:
array([ 387843.,  387843.], dtype=float32)

In [20]:
reform_simulation.calculate('rev_cat_individuel')


Out[20]:
array([ 387843.,  387843.], dtype=float32)

In [21]:
reform_simulation.calculate('cotisations_contributives')


---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-21-c56b25471fe0> in <module>()
----> 1 reform_simulation.calculate('cotisations_contributives')

/home/openfisca/openfisca-core/openfisca_core/simulations.pyc in calculate(self, column_name, period, accept_other_period, requested_formulas_by_period)
     89             period = self.period
     90         return self.compute(column_name, period = period, accept_other_period = accept_other_period,
---> 91             requested_formulas_by_period = requested_formulas_by_period).array
     92 
     93     def calculate_add(self, column_name, period = None, requested_formulas_by_period = None):

/home/openfisca/openfisca-core/openfisca_core/simulations.pyc in compute(self, column_name, period, accept_other_period, requested_formulas_by_period)
    169             if variable_infos not in caller_input_variables_infos:
    170                 caller_input_variables_infos.append(variable_infos)
--> 171         return self.entity_by_column_name[column_name].compute(column_name, period = period,
    172             accept_other_period = accept_other_period, requested_formulas_by_period = requested_formulas_by_period)
    173 

KeyError: 'cotisations_contributives'

In [ ]:
reform_simulation.calculate('nouv_salbrut')

In [ ]:
reform_simulation.calculate('salbrut')

In [ ]:
reform_simulation.calculate('salnet')

In [30]:



Out[30]:
[u'nbN',
 u'nbR',
 u'caseE',
 u'caseF',
 u'caseG',
 u'caseH',
 u'caseK',
 u'caseL',
 u'caseN',
 u'caseP',
 u'caseS',
 u'caseT',
 u'caseW',
 u'b1ab',
 u'b1ac',
 u'b1bc',
 u'b1be',
 u'b1bh',
 u'b1bk',
 u'b1cl',
 u'b1cb',
 u'b1cd',
 u'b1ce',
 u'b1cf',
 u'b1cg',
 u'b1co',
 u'b2gh',
 u'b2mt',
 u'b2ne',
 u'b2mv',
 u'b2nf',
 u'b2mx',
 u'b2na',
 u'b2nc',
 u'b4rs',
 u'rev_or',
 u'rev_exo',
 u'tax_fonc',
 u'restit_imp',
 u'isf_imm_bati',
 u'isf_imm_non_bati',
 u'isf_actions_sal',
 u'isf_droits_sociaux',
 u'ass_isf',
 u'isf_iai',
 u'isf_avant_reduction',
 u'isf_reduc_pac',
 u'isf_inv_pme',
 u'isf_org_int_gen',
 u'isf_avant_plaf',
 u'tot_impot',
 u'revetproduits',
 u'decote_isf',
 u'isf_apres_plaf',
 u'isf_tot',
 u'rvcm_plus_abat',
 u'maj_cga',
 u'bouclier_rev',
 u'bouclier_imp_gen',
 u'restitutions',
 u'bouclier_sumimp',
 u'bouclier_fiscal',
 u'f6de',
 u'f6gi',
 u'f6gj',
 u'f6el',
 u'f6em',
 u'f6gp',
 u'f6gu',
 u'f6eu',
 u'f6ev',
 u'f6dd',
 u'f6aa',
 u'f6cc',
 u'f6eh',
 u'f6da',
 u'f6cb',
 u'f6hj',
 u'f6hk',
 u'f6hl',
 u'f6hm',
 u'f6gh',
 u'f6fa',
 u'f6fb',
 u'f6fc',
 u'f6fd',
 u'f6fe',
 u'f6fl',
 u'rfr_cd',
 u'cd1',
 u'cd2',
 u'rbg_int',
 u'charges_deduc',
 u'cd_penali',
 u'cd_acc75a',
 u'cd_percap',
 u'cd_deddiv',
 u'cd_doment',
 u'cd_eparet',
 u'cd_sofipe',
 u'cd_cinema',
 u'cd_ecodev',
 u'cd_grorep',
 u'credits_impot',
 u'nb_pac2',
 u'accult',
 u'acqgpl',
 u'aidmob',
 u'aidper',
 u'assloy',
 u'autent',
 u'ci_garext',
 u'creimp_exc_2008',
 u'creimp',
 u'direpa',
 u'divide',
 u'drbail',
 u'inthab',
 u'jeunes',
 u'mecena',
 u'percvm',
 u'preetu',
 u'prlire',
 u'quaenv',
 u'quaenv_bouquet',
 u'saldom2',
 u'jour_xyz',
 u'rfr_n_1',
 u'rfr_n_2',
 u'nbptr_n_2',
 u'nb_adult',
 u'nb_pac',
 u'nbF',
 u'nbG',
 u'nbH',
 u'nbI',
 u'nbJ',
 u'marpac',
 u'celdiv',
 u'veuf',
 u'jveuf',
 u'indu_plaf_abat_pen',
 u'rto',
 u'rto_net',
 u'rev_cat_pv',
 u'rev_cat_tspr',
 u'deficit_rcm',
 u'rev_cat_rvcm',
 u'rfr_rvcm',
 u'rev_cat_rfon',
 u'rev_cat_rpns',
 u'rev_cat',
 u'deficit_ante',
 u'rbg',
 u'csg_deduc_patrimoine',
 u'csg_deduc_patrimoine_simulated',
 u'csg_deduc',
 u'rng',
 u'rni',
 u'ir_brut',
 u'ir_ss_qf',
 u'ir_plaf_qf',
 u'avantage_qf',
 u'decote',
 u'decote_gain_fiscal',
 u'nat_imp',
 u'ip_net',
 u'iaidrdi',
 u'cont_rev_loc',
 u'teicaa',
 u'assiette_vente',
 u'assiette_service',
 u'assiette_proflib',
 u'microsocial',
 u'microentreprise',
 u'plus_values',
 u'iai',
 u'cehr',
 u'irpp',
 u'pensions_alimentaires_versees',
 u'rfr',
 u'rev_cap_bar',
 u'rev_cap_lib',
 u'avf',
 u'imp_lib',
 u'fon',
 u'defrag',
 u'defacc',
 u'defncn',
 u'defmeu',
 u'abat_spe',
 u'taux_effectif',
 u'nbptr',
 u'ppe_coef',
 u'ppe_elig',
 u'ppe_brute',
 u'ppe',
 u'ir_pv_immo',
 u'reductions',
 u'adhcga',
 u'assvie',
 u'cappme',
 u'cotsyn',
 u'creaen',
 u'deffor',
 u'daepad',
 u'dfppce',
 u'doment',
 u'domlog',
 u'domsoc',
 u'donapd',
 u'duflot',
 u'ecodev',
 u'ecpess',
 u'garext',
 u'intagr',
 u'intcon',
 u'intemp',
 u'invfor',
 u'invlst',
 u'invrev',
 u'locmeu',
 u'mohist',
 u'patnat',
 u'prcomp',
 u'repsoc',
 u'resimm',
 u'rsceha',
 u'saldom',
 u'scelli',
 u'sofica',
 u'sofipe',
 u'spfcpi',
 u'f7ud',
 u'f7uf',
 u'f7xs',
 u'f7xt',
 u'f7xu',
 u'f7xw',
 u'f7xy',
 u'f7va',
 u'f7vc',
 u'f7db',
 u'f7df',
 u'f7dq',
 u'f7dg',
 u'f7dl',
 u'f7uh_2007',
 u'f7vy',
 u'f7vz',
 u'f7vx',
 u'f7vw',
 u'f7vv',
 u'f7vu',
 u'f7vt',
 u'f7cd',
 u'f7ce',
 u'f7ga',
 u'f7gb',
 u'f7gc',
 u'f7ge',
 u'f7gf',
 u'f7gg',
 u'f7ea',
 u'f7eb',
 u'f7ec',
 u'f7ed',
 u'f7ef',
 u'f7eg',
 u'f7td',
 u'f7vo',
 u'f7uk',
 u'f7gz',
 u'f7wm',
 u'f7wn',
 u'f7wo',
 u'f7wp',
 u'f7we',
 u'f7wg',
 u'f7wa',
 u'f7wb',
 u'f7wc',
 u'f7ve',
 u'f7vf',
 u'f7vg',
 u'f7sg',
 u'f7sj',
 u'f7sk',
 u'f7sl',
 u'f7sm',
 u'f7sn',
 u'f7so',
 u'f7sp',
 u'f7sq',
 u'f7sr',
 u'f7ss',
 u'f7st',
 u'f7su',
 u'f7sv',
 u'f7sw',
 u'f7wq',
 u'f7ws',
 u'f7wt',
 u'f7wu',
 u'f7wv',
 u'f7ww',
 u'f7wx',
 u'f7wh',
 u'f7wk',
 u'f7wf',
 u'f7wi',
 u'f7wj',
 u'f7wl',
 u'f7wr',
 u'f7ur',
 u'f7oz',
 u'f7pz',
 u'f7qz',
 u'f7rz',
 u'f7qv',
 u'f7qo',
 u'f7qp',
 u'f7pa',
 u'f7pb',
 u'f7pc',
 u'f7pd',
 u'f7qe',
 u'f7pe',
 u'f7pf',
 u'f7pg',
 u'f7ph',
 u'f7pi',
 u'f7pj',
 u'f7pk',
 u'f7pl',
 u'f7pm',
 u'f7pn',
 u'f7po',
 u'f7pp',
 u'f7pq',
 u'f7pr',
 u'f7ps',
 u'f7pt',
 u'f7pu',
 u'f7pv',
 u'f7pw',
 u'f7px',
 u'f7py',
 u'f7rg',
 u'f7rh',
 u'f7ri',
 u'f7rj',
 u'f7rk',
 u'f7rl',
 u'f7rm',
 u'f7rn',
 u'f7ro',
 u'f7rp',
 u'f7rq',
 u'f7rr',
 u'f7rs',
 u'f7rt',
 u'f7ru',
 u'f7rv',
 u'f7rw',
 u'f7rx',
 u'f7ry',
 u'f7nu',
 u'f7nv',
 u'f7nw',
 u'f7nx',
 u'f7ny',
 u'f7mn',
 u'f7lh',
 u'f7mb',
 u'f7kt',
 u'f7li',
 u'f7mc',
 u'f7ku',
 u'f7sz',
 u'fhsa',
 u'fhsb',
 u'fhsf',
 u'fhsg',
 u'fhsc',
 u'fhsh',
 u'fhsd',
 u'fhsi',
 u'fhse',
 u'fhsj',
 u'fhsk',
 u'fhsl',
 u'fhsp',
 u'fhsq',
 u'fhsm',
 u'fhsr',
 u'fhsn',
 u'fhss',
 u'fhso',
 u'fhst',
 u'fhsu',
 u'fhsv',
 u'fhsw',
 u'fhsx',
 u'fhsy',
 u'fhsz',
 u'fhta',
 u'fhtb',
 u'fhtc',
 u'fhtd',
 u'f7fy',
 u'f7gy',
 u'f7hy',
 u'f7ky',
 u'f7iy',
 u'f7ly',
 u'f7my',
 u'f7ra',
 u'f7rb',
 u'f7rc',
 u'f7rd',
 u'f7re',
 u'f7rf',
 u'f7sx',
 u'f7sy',
 u'f7gw',
 u'f7gx',
 u'f7xa',
 u'f7xb',
 u'f7xc',
 u'f7xd',
 u'f7xe',
 u'f7xf',
 u'f7xh',
 u'f7xi',
 u'f7xj',
 u'f7xk',
 u'f7xl',
 u'f7xm',
 u'f7xn',
 u'f7xo',
 u'f7xp',
 u'f7xq',
 u'f7xr',
 u'f7xv',
 u'f7xx',
 u'f7xz',
 u'f7uy',
 u'f7uz',
 u'f7cf',
 u'f7cl',
 u'f7cm',
 u'f7cn',
 u'f7cc',
 u'f7cq',
 u'f7cu',
 u'f7gs',
 u'f7ua',
 u'f7ub',
 u'f7uc',
 u'f7ui',
 u'f7uj',
 u'f7qb',
 u'f7qc',
 u'f7qd',
 u'f7qk',
 u'f7qn',
 u'f7kg',
 u'f7ql',
 u'f7qt',
 u'f7qm',
 u'f7qu',
 u'f7ki',
 u'f7qj',
 u'f7qw',
 u'f7qx',
 u'f7qf',
 u'f7qg',
 u'f7qh',
 u'f7qi',
 u'f7qq',
 u'f7qr',
 u'f7qs',
 u'f7mm',
 u'f7lg',
 u'f7ma',
 u'f7ks',
 u'f7kh',
 u'f7oa',
 u'f7ob',
 u'f7oc',
 u'f7oh',
 u'f7oi',
 u'f7oj',
 u'f7ok',
 u'f7ol',
 u'f7om',
 u'f7on',
 u'f7oo',
 u'f7op',
 u'f7oq',
 u'f7or',
 u'f7os',
 u'f7ot',
 u'f7ou',
 u'f7ov',
 u'f7ow',
 u'fhod',
 u'fhoe',
 u'fhof',
 u'fhog',
 u'fhox',
 u'fhoy',
 u'fhoz',
 u'fhra',
 u'fhrb',
 u'fhrc',
 u'fhrd',
 u'f7gq',
 u'f7fq',
 u'f7fm',
 u'f7fl',
 u'f7gn',
 u'f7fn',
 u'f7fh',
 u'f7ff',
 u'f7fg',
 u'f7nz',
 u'f7ka',
 u'f7kb',
 u'f7kc',
 u'f7kd',
 u'f7uh',
 u'f7un',
 u'f7ul',
 u'f7uu',
 u'f7uv',
 u'f7uw',
 u'f7th',
 u'f7ux',
 u'f7tg',
 u'f7tf',
 u'f7ut',
 u'f7um',
 u'f7hj',
 u'f7hk',
 u'f7hn',
 u'f7ho',
 u'f7hl',
 u'f7hm',
 u'f7hr',
 u'f7hs',
 u'f7la',
 u'f7lb',
 u'f7lc',
 u'f7ld',
 u'f7le',
 u'f7lf',
 u'f7ls',
 u'f7lm',
 u'f7lz',
 u'f7mg',
 u'f7na',
 u'f7nb',
 u'f7nc',
 u'f7nd',
 u'f7ne',
 u'f7nf',
 u'f7ng',
 u'f7nh',
 u'f7ni',
 u'f7nj',
 u'f7nk',
 u'f7nl',
 u'f7nm',
 u'f7nn',
 u'f7no',
 u'f7np',
 u'f7nq',
 u'f7nr',
 u'f7ns',
 u'f7nt',
 u'f7hv',
 u'f7hw',
 u'f7hx',
 u'f7hz',
 u'f7ht',
 u'f7hu',
 u'f7ha',
 u'f7hb',
 u'f7hg',
 u'f7hh',
 u'f7hd',
 u'f7he',
 u'f7hf',
 u'f7ja',
 u'f7jb',
 u'f7jd',
 u'f7je',
 u'f7jf',
 u'f7jg',
 u'f7jh',
 u'f7jj',
 u'f7jk',
 u'f7jl',
 u'f7jm',
 u'f7jn',
 u'f7jo',
 u'f7jp',
 u'f7jq',
 u'f7jr',
 u'f7gj',
 u'f7gk',
 u'f7gl',
 u'f7gp',
 u'f7fa',
 u'f7fb',
 u'f7fc',
 u'f7fd',
 u'f7ij',
 u'f7il',
 u'f7im',
 u'f7ik',
 u'f7in',
 u'f7iv',
 u'f7iw',
 u'f7io',
 u'f7ip',
 u'f7ir',
 u'f7iq',
 u'f7iu',
 u'f7it',
 u'f7is',
 u'f7ia',
 u'f7ib',
 u'f7ic',
 u'f7id',
 u'f7ie',
 u'f7if',
 u'f7ig',
 u'f7ix',
 u'f7ih',
 u'f7iz',
 u'f7jt',
 u'f7ju',
 u'f7jv',
 u'f7jw',
 u'f7jx',
 u'f7jy',
 u'f7jc',
 u'f7ji',
 u'f7js',
 u'f7gt',
 u'f7gu',
 u'f7gv',
 u'f7xg',
 u'f7uo',
 u'f7us',
 u'f7sb',
 u'f7sc',
 u'f7sd',
 u'f7se',
 u'f7sh',
 u'f7up',
 u'f7uq',
 u'f1ar',
 u'f1br',
 u'f1cr',
 u'f1dr',
 u'f1er',
 u'f4tq',
 u'f7sf',
 u'f7si',
 u'f7te',
 u'f7tu',
 u'f7tt',
 u'f7tv',
 u'f7tx',
 u'f7ty',
 u'f7tw',
 u'f7gh',
 u'f7gi',
 u'f8tc',
 u'f8tb',
 u'f8te',
 u'f8tf',
 u'f8tg',
 u'f8tl',
 u'f8to',
 u'f8tp',
 u'f8ts',
 u'f8uz',
 u'f8uw',
 u'f8tz',
 u'f8wa',
 u'f8wb',
 u'f8wc__2008',
 u'f8wc',
 u'f8wd',
 u'f8we',
 u'f8wr',
 u'f8ws',
 u'f8wt',
 u'f8wu',
 u'f8wv',
 u'f8wx',
 u'elig_creimp_exc_2008',
 u'rev_microsocial',
 u'csg_cap_bar',
 u'crds_cap_bar',
 u'prelsoc_cap_bar',
 u'csg_pv_mo',
 u'crds_pv_mo',
 u'prelsoc_pv_mo',
 u'csg_pv_immo',
 u'crds_pv_immo',
 u'prelsoc_pv_immo',
 u'csg_fon',
 u'crds_fon',
 u'prelsoc_fon',
 u'csg_cap_lib',
 u'crds_cap_lib',
 u'prelsoc_cap_lib',
 u'f8ta',
 u'f8th',
 u'f8td_2002_2005',
 u'f8td',
 u'f8ti',
 u'f8tk',
 u'f8uy',
 u'mbic_mvct',
 u'macc_mvct',
 u'mncn_mvct',
 u'f5qf',
 u'f5qg',
 u'f5qn',
 u'f5qo',
 u'f5qp',
 u'f5qq',
 u'f5ga',
 u'f5gb',
 u'f5gc',
 u'f5gd',
 u'f5ge',
 u'f5gf',
 u'f5gg',
 u'f5gh',
 u'f5gi',
 u'f5gj',
 u'f5rn',
 u'f5ro',
 u'f5rp',
 u'f5rq',
 u'f5rr',
 u'f5rw',
 u'f5ht',
 u'f5it',
 u'f5jt',
 u'f5kt',
 u'f5lt',
 u'f5mt',
 u'f2da',
 u'f2dh',
 u'f2ee',
 u'f2dc',
 u'f2fu',
 u'f2ch',
 u'f2ts',
 u'f2go',
 u'f2tr',
 u'f2cg',
 u'f2bh',
 u'f2ca',
 u'f2ck',
 u'f2ab',
 u'f2bg',
 u'f2aa',
 u'f2al',
 u'f2am',
 u'f2an',
 u'f2aq',
 u'f2ar',
 u'f2as',
 u'f2dm',
 u'f2gr',
 u'f1aw',
 u'f1bw',
 u'f1cw',
 u'f1dw',
 u'f4ba',
 u'f4bb',
 u'f4bc',
 u'f4bd',
 u'f4be',
 u'f4bf',
 u'f4bl',
 u'f3si',
 u'f3sa',
 u'f3sf',
 u'f3sd',
 u'f3vc',
 u'f3ve',
 u'f3vl',
 u'f3vm',
 u'f3vt',
 u'f3vg',
 u'f3vh',
 u'f3vu',
 u'f3vv',
 u'f3vv_end_2010',
 u'f3vz',
 u'idmen',
 u'idfoy',
 u'idfam',
 u'quimen',
 u'quifoy',
 u'quifam',
 u'birth',
 u'adoption',
 u'alt',
 u'activite',
 u'enceinte',
 u'statmarit',
 u'invalide',
 u'est_enfant_dans_famille',
 u'etu',
 u'rempli_obligation_scolaire',
 u'ressortissant_eee',
 u'duree_possession_titre_sejour',
 u'coloc',
 u'logement_chambre',
 u'revenu_net_individu',
 u'revenu_initial_individu',
 u'rev_trav',
 u'pen',
 u'cotsoc_bar_declarant1',
 u'cotsoc_lib_declarant1',
 u'rev_cap',
 u'crds',
 u'csg',
 u'cotsoc_noncontrib',
 u'prelsoc_cap',
 u'etr',
 u'maj_cga_i',
 u'f6ps',
 u'f6rs',
 u'f6ss',
 u'jeunes_ind',
 u'age',
 u'age_en_mois',
 u'enfant_a_charge',
 u'enfant_a_charge_invalide',
 u'enfant_a_charge_garde_alternee',
 u'enfant_a_charge_garde_alternee_invalide',
 u'enfant_majeur_celibataire_sans_enfant',
 u'rev_sal',
 u'salcho_imp',
 u'rev_act_sal',
 u'rev_act_nonsal',
 u'rev_act',
 u'rev_pen',
 u'pen_net',
 u'abat_sal_pen',
 u'sal_pen_net',
 u'rto_declarant1',
 u'rto_net_declarant1',
 u'tspr',
 u'pensions_alimentaires_versees_declarant1',
 u'glo',
 u'rpns_pvce',
 u'rpns_exon',
 u'rag',
 u'ric',
 u'rac',
 u'rnc',
 u'rpns',
 u'rpns_pvct',
 u'rpns_mvct',
 u'rpns_mvlt',
 u'rpns_i',
 u'ppe_rev',
 u'ppe_coef_tp',
 u'ppe_base',
 u'ppe_elig_i',
 u'f7ac',
 u'elig_creimp_jeunes',
 u'assiette_csg_abattue',
 u'assiette_csg_non_abattue',
 u'csg_deductible_salaire',
 u'csg_imposable_salaire',
 u'crds_salaire',
 u'forfait_social',
 u'salaire_imposable',
 u'salaire_net',
 u'tehr',
 u'rev_microsocial_declarant1',
 u'csg_cap_bar_declarant1',
 u'crds_cap_bar_declarant1',
 u'prelsoc_cap_bar_declarant1',
 u'csg_cap_lib_declarant1',
 u'crds_cap_lib_declarant1',
 u'prelsoc_cap_lib_declarant1',
 u'taux_csg_remplacement',
 u'csg_deductible_chomage',
 u'csg_imposable_chomage',
 u'crds_chomage',
 u'cho',
 u'chonet',
 u'csg_deductible_retraite',
 u'csg_imposable_retraite',
 u'crds_retraite',
 u'casa',
 u'rst',
 u'rstnet',
 u'assiette_allegement',
 u'allegement_fillon',
 u'coefficient_proratisation',
 u'credit_impot_competitivite_emploi',
 u'smic_proratise',
 u'apprenti',
 u'remuneration_apprenti',
 u'exoneration_cotisations_employeur_apprenti',
 u'exoneration_cotisations_salariales_apprenti',
 u'prime_apprentissage',
 u'jei_date_demande',
 u'exoneration_cotisations_employeur_geographiques',
 u'exoneration_cotisations_employeur_jei',
 u'exoneration_cotisations_employeur_zfu',
 u'exoneration_cotisations_employeur_zrd',
 u'exoneration_cotisations_employeur_zrr',
 u'exoneration_is_creation_zrr',
 u'jeune_entreprise_innovante',
 u'bassin_emploi_redynamiser',
 u'zone_restructuration_defense',
 u'zone_franche_urbaine',
 u'zone_revitalisation_rurale',
 u'stage_duree_heures',
 u'stage_gratification_taux',
 u'stage_gratification',
 u'stage_gratification_reintegration',
 u'stagiaire',
 u'exoneration_cotisations_employeur_stagiaire',
 u'exoneration_cotisations_salarie_stagiaire',
 u'allocations_temporaires_invalidite',
 u'assiette_cotisations_sociales_public',
 u'contribution_exceptionnelle_solidarite',
 u'fonds_emploi_hospitalier',
 u'ircantec_salarie',
 u'ircantec_employeur',
 u'pension_civile_salarie',
 u'pension_civile_employeur',
 u'rafp_salarie',
 u'rafp_employeur',
 u'assiette_cotisations_sociales',
 u'assiette_cotisations_sociales_prive',
 u'reintegration_titre_restaurant_employeur',
 u'accident_du_travail',
 u'agff_salarie',
 u'agff_employeur',
 u'agirc_gmp_assiette',
 u'agirc_gmp_salarie',
 u'agirc_gmp_employeur',
 u'agirc_salarie',
 u'agirc_employeur',
 u'ags',
 u'apec_salarie',
 u'apec_employeur',
 u'arrco_salarie',
 u'arrco_employeur',
 u'chomage_salarie',
 u'chomage_employeur',
 u'contribution_solidarite_autonomie',
 u'cotisation_exceptionnelle_temporaire_salarie',
 u'cotisation_exceptionnelle_temporaire_employeur',
 u'famille',
 u'mmid_salarie',
 u'mmid_employeur',
 u'mmida_employeur',
 u'mhsup',
 u'plafond_securite_sociale',
 u'prevoyance_obligatoire_cadre',
 u'taille_entreprise',
 u'taux_accident_travail',
 u'vieillesse_deplafonnee_salarie',
 u'vieillesse_plafonnee_salarie',
 u'vieillesse_deplafonnee_employeur',
 u'vieillesse_plafonnee_employeur',
 u'cotisations_employeur',
 u'cotisations_employeur_contributives',
 u'cotisations_employeur_non_contributives',
 u'cotisations_salariales_contributives',
 u'cotisations_salariales_non_contributives',
 u'cotisations_salariales',
 u'conge_individuel_formation_cdd',
 u'contribution_developpement_apprentissage',
 u'contribution_supplementaire_apprentissage',
 u'cotisations_employeur_main_d_oeuvre',
 u'fnal',
 u'fnal_tranche_a',
 u'fnal_tranche_a_plus_20',
 ...]

In [ ]:
tax_benefit_system.column_by_name.keys()