def test_compute_gen_imbalance(): size_generation = 1 cohort = create_neutral_profiles_cohort(population=size_generation) simulation = Simulation() simulation.discount_rate = 0 simulation.growth_rate = 0 simulation.cohorts = cohort simulation.create_present_values('tax') gen_imbalance = simulation.compute_gen_imbalance(typ='tax') # print gen_imbalance assert gen_imbalance == -5000.0 / (2 * 199.0)
def test_compute_gen_imbalance(): size_generation = 1 cohort = create_neutral_profiles_cohort(population = size_generation) simulation = Simulation() simulation.discount_rate = 0 simulation.growth_rate = 0 simulation.cohorts = cohort simulation.create_present_values('tax') gen_imbalance = simulation.compute_gen_imbalance(typ = 'tax') # print gen_imbalance assert gen_imbalance[0] == -5000.0/(2*199.0), gen_imbalance[1] == -5000.0/(2*199.0)
def test_compute_gen_imbalance(): size_generation = 1 cohort = create_neutral_profiles_cohort(population = size_generation) simulation = Simulation() simulation.discount_rate = 0 simulation.growth_rate = 0 simulation.cohorts = cohort simulation.create_present_values('tax') print simulation.aggregate_pv.tail(20).to_string() print simulation.cohorts.head(20).to_string() gen_imbalance = simulation.compute_gen_imbalance(typ = 'tax', to_return='difference') # print gen_imbalance, -5000.0/(2*199.0) assert gen_imbalance == -5000.0/(2*199.0)
def test(): country = "france" population_filename = os.path.join(SRC_PATH, 'countries', country, 'sources', 'data_fr', 'proj_pop_insee', 'proj_pop.h5') profiles_filename = os.path.join(SRC_PATH, 'countries', country, 'sources', 'data_fr', 'profiles.h5') CBonnet_results = os.path.join(SRC_PATH, 'countries', country, 'sources', 'Carole_Bonnet', 'theoretical_results.xls') simulation = Simulation() population_scenario = "projpop0760_FECbasESPbasMIGbas" simulation.load_population(population_filename, population_scenario) simulation.load_profiles(profiles_filename) xls = ExcelFile(CBonnet_results) """ Hypothesis set #1 : actualization rate r = 3% growth rate g = 1% net_gov_wealth = -3217.7e+09 (unit : Franc Français (FF) of 1996) """ #Setting parameters year_length = 200 r = 0.03 g = 0.01 net_gov_wealth = -3217.7e+09 net_gov_spendings = 0 simulation.set_population_projection(year_length=year_length, method="exp_growth") simulation.set_tax_projection(method="per_capita", rate=g) simulation.set_growth_rate(g) simulation.set_discount_rate(r) simulation.create_cohorts() simulation.set_gov_wealth(net_gov_wealth) simulation.set_gov_spendings(net_gov_spendings) #Calculating net transfers #Net_transfers = tax paid to the state minus money recieved from the state #TODO: transform this in a method simulation.cohorts['total_taxes'] = 0 simulation.cohorts['total_payments'] = 0 taxes_list = ['tva', 'tipp', 'cot', 'irpp', 'impot', 'property'] payments_list = ['chomage', 'retraite', 'revsoc', 'maladie', 'educ'] simulation.cohorts.compute_net_transfers(name='net_transfers', taxes_list=taxes_list, payments_list=payments_list) """ Reproducing the table 2 : Comptes générationnels par âge et sexe (Compte central) """ #Generating generationnal accounts simulation.create_present_values(typ='net_transfers') print "PER CAPITA PV" print simulation.percapita_pv.xs(0, level='age').head() print simulation.percapita_pv.xs((0, 2007), level=['sex', 'year']).head() # Calculating the Intertemporal Public Liability ipl = simulation.compute_ipl(typ='net_transfers') print "------------------------------------" print "IPL =", ipl print "share of the GDP : ", ipl / 8050.6e+09 * 100, "%" print "------------------------------------" #Calculating the generational imbalance gen_imbalance = simulation.compute_gen_imbalance(typ='net_transfers') print "----------------------------------" print "imbalance : [n_1=", gen_imbalance[0], ", n_1-n_0=", gen_imbalance[ 1], ", n_1/n_0=", gen_imbalance[2], "]" print "----------------------------------" #Creating age classes cohorts_age_class = AccountingCohorts( simulation.percapita_pv.create_age_class(step=5)) cohorts_age_class._types = [ u'tva', u'tipp', u'cot', u'irpp', u'impot', u'property', u'chomage', u'retraite', u'revsoc', u'maladie', u'educ', u'net_transfers' ] age_class_pv_fe = cohorts_age_class.xs((1, 2007), level=['sex', 'year']) age_class_pv_ma = cohorts_age_class.xs((0, 2007), level=['sex', 'year']) print "AGE CLASS PV" print age_class_pv_fe.head() print age_class_pv_ma.head() #Plotting age_class_pv = cohorts_age_class.xs(2007, level="year").unstack(level="sex") age_class_pv = age_class_pv['net_transfers'] age_class_pv.columns = ['men', 'women'] # age_class_pv['total'] = age_class_pv_ma['net_transfers'] + age_class_pv_fe['net_transfers'] # age_class_pv['total'] *= 1.0/2.0 age_class_theory = xls.parse('Feuil1', index_col=0) age_class_pv['men_CBonnet'] = age_class_theory['men_Cbonnet'] age_class_pv['women_CBonnet'] = age_class_theory['women_Cbonnet'] age_class_pv.plot(style='--') plt.legend() plt.axhline(linewidth=2, color='black') plt.show()
def test(): print "Entering the simulation of C. Bonnet" simulation = Simulation() population_scenario = "projpop0760_FECbasESPbasMIGbas" simulation.load_population(population_filename, population_scenario) # Adding missing population data between 1996 and 2007 : store_pop = HDFStore(os.path.join(SRC_PATH, "countries", country, "sources", "Carole_Bonnet", "pop_1996_2006.h5")) corrected_pop = store_pop["population"] print simulation.population.head().to_string() print corrected_pop.head().to_string() print " longueurs des inputs" print "prévisions insee", len(simulation.population), "population corrigée", len(corrected_pop) simulation.population = concat([corrected_pop, simulation.population]) print " longueur après combinaison", len(simulation.population) # Loading profiles : simulation.load_profiles(profiles_filename) xls = ExcelFile(CBonnet_results) """ Hypothesis set #1 : actualization rate r = 3% growth rate g = 1% net_gov_wealth = -3217.7e+09 (unit : Franc Français (FRF) of 1996) non ventilated government spendings in 1996 : 1094e+09 FRF """ # Setting parameters : year_length = 250 simulation.year_length = year_length r = 0.03 g = 0.01 n = 0.00 net_gov_wealth = -3217.7e09 year_gov_spending = (1094) * 1e09 # avg_gov_spendings = 0 # # List w/ the economic affairs # spending_list = [241861, 246856, 245483, 251110, 261752, 271019, # 286330, 290499, 301556, 315994, 315979, 332317, # 343392, 352239, 356353, 356858] # count = 0 # for spent in spending_list: # year_gov_spending = spent*1e+06*((1+g)/(1+r))**count*6.55957 # print year_gov_spending # net_gov_spendings += year_gov_spending # avg_gov_spendings += year_gov_spending # count += 1 # avg_gov_spendings /= (count) # print 'avg_gov_spendings = ', avg_gov_spendings # Loading simulation's parameters : simulation.set_population_projection(year_length=year_length, method="stable") simulation.set_tax_projection(method="per_capita", rate=g) simulation.set_growth_rate(g) simulation.set_discount_rate(r) simulation.set_population_growth_rate(n) simulation.create_cohorts() simulation.set_gov_wealth(net_gov_wealth) simulation.set_gov_spendings(year_gov_spending, default=True, compute=True) # Calculating net transfers : # Net_transfers = tax paid to the state minus money recieved from the state taxes_list = ["tva", "tipp", "cot", "irpp", "impot", "property"] payments_list = ["chomage", "retraite", "revsoc", "maladie", "educ"] simulation.cohorts.compute_net_transfers(name="net_transfers", taxes_list=taxes_list, payments_list=payments_list) """ Reproducing the table 2 : Comptes générationnels par âge et sexe (Compte central) """ # Generating generationnal accounts : year = 1996 simulation.create_present_values(typ="net_transfers") print "PER CAPITA PV" print simulation.percapita_pv.xs(0, level="age").head(10) print simulation.percapita_pv.xs((0, year), level=["sex", "year"]).head(10) # Calculating the Intertemporal Public Liability ipl = simulation.compute_ipl(typ="net_transfers") print "------------------------------------" print "IPL =", ipl print "share of the GDP : ", ipl / 8050.6e09 * 100, "%" print "------------------------------------" # Calculating the generational imbalance gen_imbalance = simulation.compute_gen_imbalance(typ="net_transfers") print "----------------------------------" print "[n_1/n_0=", gen_imbalance, "]" print "----------------------------------" # Creating age classes cohorts_age_class = simulation.create_age_class(typ="net_transfers", step=5) cohorts_age_class._types = [ u"tva", u"tipp", u"cot", u"irpp", u"impot", u"property", u"chomage", u"retraite", u"revsoc", u"maladie", u"educ", u"net_transfers", ] age_class_pv_fe = cohorts_age_class.xs((1, year), level=["sex", "year"]) age_class_pv_ma = cohorts_age_class.xs((0, year), level=["sex", "year"]) print "AGE CLASS PV" print age_class_pv_fe.head() print age_class_pv_ma.head() age_class_pv = concat([age_class_pv_fe, age_class_pv_ma], axis=1) print age_class_pv age_class_pv.to_excel(str(xls_adress) + "\calibration.xlsx", "compte_generation") # Plotting age_class_pv = cohorts_age_class.xs(year, level="year").unstack(level="sex") age_class_pv = age_class_pv["net_transfers"] age_class_pv.columns = ["men", "women"] # age_class_pv['total'] = age_class_pv_ma['net_transfers'] + age_class_pv_fe['net_transfers'] # age_class_pv['total'] *= 1.0/2.0 age_class_theory = xls.parse("Feuil1", index_col=0) age_class_pv["men_CBonnet"] = age_class_theory["men_Cbonnet"] age_class_pv["women_CBonnet"] = age_class_theory["women_Cbonnet"] age_class_pv.plot(style="--") plt.legend() plt.axhline(linewidth=2, color="black") plt.show()
def test(): print 'Entering the simulation of C. Bonnet' simulation = Simulation() population_scenario = "projpop0760_FECbasESPbasMIGbas" simulation.load_population(population_filename, population_scenario) # Adding missing population data between 1996 and 2007 : store_pop = HDFStore(os.path.join(SRC_PATH, 'countries', country, 'sources', 'Carole_Bonnet', 'pop_1996_2006.h5')) corrected_pop = store_pop['population'] print simulation.population.head().to_string() print corrected_pop.head().to_string() print ' longueurs des inputs' print 'prévisions insee', len(simulation.population), 'population corrigée', len(corrected_pop) simulation.population = concat([corrected_pop, simulation.population]) print ' longueur après combinaison',len(simulation.population) #Loading profiles : simulation.load_profiles(profiles_filename) xls = ExcelFile(CBonnet_results) """ Hypothesis set #1 : actualization rate r = 3% growth rate g = 1% net_gov_wealth = -3217.7e+09 (unit : Franc Français (FRF) of 1996) non ventilated government spendings in 1996 : 1094e+09 FRF """ #Setting parameters : year_length = 250 simulation.year_length = year_length r = 0.03 g = 0.01 n = 0.00 net_gov_wealth = -3217.7e+09 year_gov_spending = (1094)*1e+09 # avg_gov_spendings = 0 # # List w/ the economic affairs # spending_list = [241861, 246856, 245483, 251110, 261752, 271019, # 286330, 290499, 301556, 315994, 315979, 332317, # 343392, 352239, 356353, 356858] # count = 0 # for spent in spending_list: # year_gov_spending = spent*1e+06*((1+g)/(1+r))**count*6.55957 # print year_gov_spending # net_gov_spendings += year_gov_spending # avg_gov_spendings += year_gov_spending # count += 1 # avg_gov_spendings /= (count) # print 'avg_gov_spendings = ', avg_gov_spendings # Loading simulation's parameters : simulation.set_population_projection(year_length=year_length, method="stable") simulation.set_tax_projection(method="per_capita", rate=g) simulation.set_growth_rate(g) simulation.set_discount_rate(r) simulation.set_population_growth_rate(n) simulation.create_cohorts() simulation.set_gov_wealth(net_gov_wealth) simulation.set_gov_spendings(year_gov_spending, default=True, compute=True) #Calculating net transfers : #Net_transfers = tax paid to the state minus money recieved from the state taxes_list = ['tva', 'tipp', 'cot', 'irpp', 'impot', 'property'] payments_list = ['chomage', 'retraite', 'revsoc', 'maladie', 'educ'] simulation.cohorts.compute_net_transfers(name = 'net_transfers', taxes_list = taxes_list, payments_list = payments_list) """ Reproducing the table 2 : Comptes générationnels par âge et sexe (Compte central) """ #Generating generationnal accounts : year = 1996 simulation.create_present_values(typ = 'net_transfers') print "PER CAPITA PV" print simulation.percapita_pv.xs(0, level = 'age').head(10) print simulation.percapita_pv.xs((0, year), level = ['sex', 'year']).head(10) # Calculating the Intertemporal Public Liability ipl = simulation.compute_ipl(typ = 'net_transfers') print "------------------------------------" print "IPL =", ipl print "share of the GDP : ", ipl/8050.6e+09*100, "%" print "------------------------------------" #Calculating the generational imbalance gen_imbalance = simulation.compute_gen_imbalance(typ = 'net_transfers') print "----------------------------------" print "[n_1/n_0=", gen_imbalance,"]" print "----------------------------------" #Creating age classes cohorts_age_class = simulation.create_age_class(typ = 'net_transfers', step = 5) cohorts_age_class._types = [u'tva', u'tipp', u'cot', u'irpp', u'impot', u'property', u'chomage', u'retraite', u'revsoc', u'maladie', u'educ', u'net_transfers'] age_class_pv_fe = cohorts_age_class.xs((1, year), level = ['sex', 'year']) age_class_pv_ma = cohorts_age_class.xs((0, year), level = ['sex', 'year']) print "AGE CLASS PV" print age_class_pv_fe.head() print age_class_pv_ma.head() age_class_pv = concat([age_class_pv_fe, age_class_pv_ma], axis=1) print age_class_pv age_class_pv.to_excel(str(xls_adress)+'\calibration.xlsx', 'compte_generation') #Plotting age_class_pv = cohorts_age_class.xs(year, level = "year").unstack(level="sex") age_class_pv = age_class_pv['net_transfers'] age_class_pv.columns = ['men' , 'women'] # age_class_pv['total'] = age_class_pv_ma['net_transfers'] + age_class_pv_fe['net_transfers'] # age_class_pv['total'] *= 1.0/2.0 age_class_theory = xls.parse('Feuil1', index_col = 0) age_class_pv['men_CBonnet'] = age_class_theory['men_Cbonnet'] age_class_pv['women_CBonnet'] = age_class_theory['women_Cbonnet'] age_class_pv.plot(style = '--') ; plt.legend() plt.axhline(linewidth=2, color='black') plt.show()