Beispiel #1
0
def test_sstpi():
    import tempfile
    import pickle
    import numpy as np
    import numpy as np
    import cPickle as pickle
    import os

    import dynamic
    dynamic.parameters.DATASET = 'REAL'

    from dynamic.utils import comp_array
    from dynamic.utils import comp_scalar
    from dynamic.utils import dict_compare
    from dynamic.utils import pickle_file_compare

    import dynamic.SS
    import dynamic.TPI
    from dynamic import parameters, wealth, labor, demographics, income, SS, TPI

    globals().update(dynamic.parameters.get_parameters())

    # Generate Wealth data moments
    output_dir = TEST_OUTPUT
    input_dir = "./OUTPUT"
    wealth.get_wealth_data(lambdas, J, flag_graphs, output_dir)

    # Generate labor data moments
    labor.labor_data_moments(flag_graphs, output_dir=output_dir)

    get_baseline = True
    calibrate_model = False

    # List of parameter names that will not be changing (unless we decide to
    # change them for a tax experiment)
    param_names = [
        'S', 'J', 'T', 'lambdas', 'starting_age', 'ending_age', 'beta',
        'sigma', 'alpha', 'nu', 'Z', 'delta', 'E', 'ltilde', 'g_y', 'maxiter',
        'mindist_SS', 'mindist_TPI', 'b_ellipse', 'k_ellipse', 'upsilon',
        'a_tax_income', 'chi_b_guess', 'chi_n_guess', 'b_tax_income',
        'c_tax_income', 'd_tax_income', 'tau_payroll', 'tau_bq',
        'calibrate_model', 'retire', 'mean_income_data', 'g_n_vector',
        'h_wealth', 'p_wealth', 'm_wealth', 'get_baseline', 'omega', 'g_n_ss',
        'omega_SS', 'surv_rate', 'e', 'rho'
    ]
    '''
    ------------------------------------------------------------------------
        Run SS with minimization to fit chi_b and chi_n
    ------------------------------------------------------------------------
    '''

    # This is the simulation before getting the replacement rate values
    sim_params = {}
    for key in param_names:
        try:
            sim_params[key] = locals()[key]
        except KeyError:
            sim_params[key] = globals()[key]

    sim_params['output_dir'] = output_dir
    sim_params['input_dir'] = input_dir
    income_tax_params, wealth_tax_params, ellipse_params, ss_parameters, \
        iterative_params = SS.create_steady_state_parameters(**sim_params)

    ss_outputs = SS.run_steady_state(ss_parameters,
                                     iterative_params,
                                     get_baseline,
                                     calibrate_model,
                                     output_dir=output_dir)
    '''
    ------------------------------------------------------------------------
        Run the baseline TPI simulation
    ------------------------------------------------------------------------
    '''

    ss_outputs['get_baseline'] = get_baseline
    income_tax_params, wealth_tax_params, ellipse_params, parameters, N_tilde, omega_stationary, K0, b_sinit, \
        b_splus1init, L0, Y0, w0, r0, BQ0, T_H_0, tax0, c0, initial_b, initial_n = TPI.create_tpi_params(
            **sim_params)
    ss_outputs['output_dir'] = output_dir
    ss_outputs['income_tax_params'] = income_tax_params
    ss_outputs['wealth_tax_params'] = wealth_tax_params
    ss_outputs['ellipse_params'] = ellipse_params
    ss_outputs['parameters'] = parameters
    ss_outputs['N_tilde'] = N_tilde
    ss_outputs['omega_stationary'] = omega_stationary
    ss_outputs['K0'] = K0
    ss_outputs['b_sinit'] = b_sinit
    ss_outputs['b_splus1init'] = b_splus1init
    ss_outputs['L0'] = L0
    ss_outputs['Y0'] = Y0
    ss_outputs['r0'] = r0
    ss_outputs['BQ0'] = BQ0
    ss_outputs['T_H_0'] = T_H_0
    ss_outputs['tax0'] = tax0
    ss_outputs['c0'] = c0
    ss_outputs['initial_b'] = initial_b
    ss_outputs['initial_n'] = initial_n
    ss_outputs['tau_bq'] = tau_bq
    ss_outputs['g_n_vector'] = g_n_vector
    TPI.run_time_path_iteration(**ss_outputs)

    # Platform specific exceptions:
    if sys.platform == "darwin":
        exceptions = {
            'tax_path': 0.08,
            'c_path': 0.02,
            'b_mat': 0.0017,
            'solutions': 0.005
        }
    else:
        exceptions = {}

    # compare results to test data
    for old, new in zip(oldfiles, newfiles):
        print "trying a pair"
        print old, new
        assert pickle_file_compare(old,
                                   new,
                                   exceptions=exceptions,
                                   relative=True)
        print "next pair"
Beispiel #2
0
def test_compare_pickle_file_relative(picklefile3, picklefile4):
    from dynamic.utils import pickle_file_compare
    assert pickle_file_compare(picklefile3.name, picklefile4.name, relative=True)
Beispiel #3
0
def test_compare_pickle_file_basic(picklefile1):
    from dynamic.utils import pickle_file_compare
    assert pickle_file_compare(picklefile1.name, picklefile1.name)
Beispiel #4
0
def test_compare_pickle_file_bad(picklefile1, picklefile2):
    from dynamic.utils import pickle_file_compare
    assert not pickle_file_compare(picklefile1.name, picklefile2.name)
Beispiel #5
0
def test_compare_pickle_file_bad2(picklefile3, picklefile4):
    from dynamic.utils import pickle_file_compare
    assert not pickle_file_compare(picklefile3.name, picklefile4.name)
Beispiel #6
0
def test_sstpi():
    import tempfile
    import pickle
    import numpy as np
    import numpy as np
    import cPickle as pickle
    import os

    import dynamic
    dynamic.parameters.DATASET = 'REAL'

    from dynamic.utils import comp_array
    from dynamic.utils import comp_scalar
    from dynamic.utils import dict_compare
    from dynamic.utils import pickle_file_compare

    import dynamic.SS
    import dynamic.TPI
    from dynamic import parameters, wealth, labor, demographics, income, SS, TPI

    globals().update(dynamic.parameters.get_parameters())

    # Generate Wealth data moments
    output_dir = TEST_OUTPUT
    input_dir = "./OUTPUT"
    wealth.get_wealth_data(lambdas, J, flag_graphs, output_dir)

    # Generate labor data moments
    labor.labor_data_moments(flag_graphs, output_dir=output_dir)

    get_baseline = True
    calibrate_model = False

    # List of parameter names that will not be changing (unless we decide to
    # change them for a tax experiment)
    param_names = ['S', 'J', 'T', 'lambdas', 'starting_age', 'ending_age',
                   'beta', 'sigma', 'alpha', 'nu', 'Z', 'delta', 'E',
                   'ltilde', 'g_y', 'maxiter', 'mindist_SS', 'mindist_TPI',
                   'b_ellipse', 'k_ellipse', 'upsilon',
                   'a_tax_income', 'chi_b_guess', 'chi_n_guess',
                   'b_tax_income', 'c_tax_income', 'd_tax_income',
                   'tau_payroll', 'tau_bq', 'calibrate_model',
                   'retire', 'mean_income_data', 'g_n_vector',
                   'h_wealth', 'p_wealth', 'm_wealth', 'get_baseline',
                   'omega', 'g_n_ss', 'omega_SS', 'surv_rate', 'e', 'rho']

    '''
    ------------------------------------------------------------------------
        Run SS with minimization to fit chi_b and chi_n
    ------------------------------------------------------------------------
    '''

    # This is the simulation before getting the replacement rate values
    sim_params = {}
    for key in param_names:
        try:
            sim_params[key] = locals()[key]
        except KeyError:
            sim_params[key] = globals()[key]

    sim_params['output_dir'] = output_dir
    sim_params['input_dir'] = input_dir
    income_tax_params, wealth_tax_params, ellipse_params, ss_parameters, \
        iterative_params = SS.create_steady_state_parameters(**sim_params)

    ss_outputs = SS.run_steady_state(ss_parameters, iterative_params,
                                     get_baseline, calibrate_model,
                                     output_dir=output_dir)

    '''
    ------------------------------------------------------------------------
        Run the baseline TPI simulation
    ------------------------------------------------------------------------
    '''

    ss_outputs['get_baseline'] = get_baseline
    income_tax_params, wealth_tax_params, ellipse_params, parameters, N_tilde, omega_stationary, K0, b_sinit, \
        b_splus1init, L0, Y0, w0, r0, BQ0, T_H_0, tax0, c0, initial_b, initial_n = TPI.create_tpi_params(
            **sim_params)
    ss_outputs['output_dir'] = output_dir
    ss_outputs['income_tax_params'] = income_tax_params
    ss_outputs['wealth_tax_params'] = wealth_tax_params
    ss_outputs['ellipse_params'] = ellipse_params
    ss_outputs['parameters'] = parameters
    ss_outputs['N_tilde'] = N_tilde
    ss_outputs['omega_stationary'] = omega_stationary
    ss_outputs['K0'] = K0
    ss_outputs['b_sinit'] = b_sinit
    ss_outputs['b_splus1init'] = b_splus1init
    ss_outputs['L0'] = L0
    ss_outputs['Y0'] = Y0
    ss_outputs['r0'] = r0
    ss_outputs['BQ0'] = BQ0
    ss_outputs['T_H_0'] = T_H_0
    ss_outputs['tax0'] = tax0
    ss_outputs['c0'] = c0
    ss_outputs['initial_b'] = initial_b
    ss_outputs['initial_n'] = initial_n
    ss_outputs['tau_bq'] = tau_bq
    ss_outputs['g_n_vector'] = g_n_vector
    TPI.run_time_path_iteration(**ss_outputs)

    # Platform specific exceptions:
    if sys.platform == "darwin":
        exceptions = {'tax_path': 0.08,
                      'c_path': 0.02,
                      'b_mat': 0.0017,
                      'solutions': 0.005}
    else:
        exceptions = {}

    # compare results to test data
    for old, new in zip(oldfiles, newfiles):
        print "trying a pair"
        print old, new
        assert pickle_file_compare(
            old, new, exceptions=exceptions, relative=True)
        print "next pair"
Beispiel #7
0
def test_compare_pickle_file_basic(picklefile1):
    from dynamic.utils import pickle_file_compare
    assert pickle_file_compare(picklefile1.name, picklefile1.name)
Beispiel #8
0
def test_compare_pickle_file_relative(picklefile3, picklefile4):
    from dynamic.utils import pickle_file_compare
    assert pickle_file_compare(picklefile3.name,
                               picklefile4.name,
                               relative=True)
Beispiel #9
0
def test_compare_pickle_file_bad2(picklefile3, picklefile4):
    from dynamic.utils import pickle_file_compare
    assert not pickle_file_compare(picklefile3.name, picklefile4.name)
Beispiel #10
0
def test_compare_pickle_file_bad(picklefile1, picklefile2):
    from dynamic.utils import pickle_file_compare
    assert not pickle_file_compare(picklefile1.name, picklefile2.name)