def run_micro_macro(reform, user_params, guid): guid = '' start_time = time.time() REFORM_DIR = "./OUTPUT_REFORM_" + guid BASELINE_DIR = "./OUTPUT_BASELINE_" + guid # Add start year from reform to user parameters start_year = sorted(reform.keys())[0] user_params['start_year'] = start_year with open("log_{}.log".format(guid), 'w') as f: f.write("guid: {}\n".format(guid)) f.write("reform: {}\n".format(reform)) f.write("user_params: {}\n".format(user_params)) ''' ------------------------------------------------------------------------ Run baseline ------------------------------------------------------------------------ ''' output_base = BASELINE_DIR kwargs = { 'output_base': output_base, 'baseline_dir': BASELINE_DIR, 'test': True, 'time_path': True, 'baseline': True, 'user_params': user_params, 'run_micro': False, 'guid': guid } runner(**kwargs) ''' ------------------------------------------------------------------------ Run reform ------------------------------------------------------------------------ ''' output_base = REFORM_DIR kwargs = { 'output_base': output_base, 'baseline_dir': BASELINE_DIR, 'test': True, 'time_path': True, 'baseline': False, 'reform': reform, 'user_params': user_params, 'guid': guid, 'run_micro': False } runner(**kwargs) time.sleep(0.5) ans = postprocess.create_diff(baseline_dir=BASELINE_DIR, policy_dir=REFORM_DIR) print("total time was ", (time.time() - start_time)) return ans
def run_micro_macro(reform, user_params, guid): guid = '' start_time = time.time() REFORM_DIR = "./OUTPUT_REFORM_" + guid BASELINE_DIR = "./OUTPUT_BASELINE_" + guid # Add start year from reform to user parameters start_year = sorted(reform.keys())[0] user_params['start_year'] = start_year with open("log_{}.log".format(guid), 'w') as f: f.write("guid: {}\n".format(guid)) f.write("reform: {}\n".format(reform)) f.write("user_params: {}\n".format(user_params)) ''' ------------------------------------------------------------------------ Run baseline ------------------------------------------------------------------------ ''' output_base = BASELINE_DIR kwargs = {'output_base': output_base, 'baseline_dir': BASELINE_DIR, 'test': True, 'time_path': True, 'baseline': True, 'user_params': user_params, 'run_micro': False, 'guid': guid} runner(**kwargs) ''' ------------------------------------------------------------------------ Run reform ------------------------------------------------------------------------ ''' output_base = REFORM_DIR kwargs = {'output_base': output_base, 'baseline_dir': BASELINE_DIR, 'test': True, 'time_path': True, 'baseline': False, 'reform': reform, 'user_params': user_params, 'guid': guid, 'run_micro': False} runner(**kwargs) time.sleep(0.5) ans = postprocess.create_diff(baseline_dir=BASELINE_DIR, policy_dir=REFORM_DIR) print("total time was ", (time.time() - start_time)) return ans
def main(): # Define parameters to use for multiprocessing client = Client(processes=False) num_workers = min(multiprocessing.cpu_count(), 7) print('Number of workers = ', num_workers) run_start_time = time.time() # Grab a reform JSON file already in Tax-Calculator # In this example the 'reform' is a change to 2017 law (the # baseline policy is tax law in 2018) reform_url = ('https://raw.githubusercontent.com/' 'PSLmodels/Tax-Calculator/master/taxcalc/' 'reforms/2017_law.json') ref = Calculator.read_json_param_objects(reform_url, None) iit_reform = ref['policy'] # Directories to save data CUR_DIR = os.path.dirname(os.path.realpath(__file__)) base_dir = os.path.join(CUR_DIR, BASELINE_DIR, "SS") reform_dir = os.path.join(CUR_DIR, REFORM_DIR, "SS") # Set some OG model parameters # See default_parameters.json for more description of these parameters alpha_T = np.zeros(50) # Adjusting the path of transfer spending alpha_T[0:2] = 0.09 alpha_T[2:10] = 0.09 + 0.01 alpha_T[10:40] = 0.09 - 0.01 alpha_T[40:] = 0.09 alpha_G = np.zeros(7) # Adjusting the path of non-transfer spending alpha_G[0:3] = 0.05 - 0.01 alpha_G[3:6] = 0.05 - 0.005 alpha_G[6:] = 0.05 # Also adjust the Frisch elasticity, the start year, the # effective corporate income tax rate, and the SS debt-to-GDP ratio og_spec = { 'frisch': 0.41, 'start_year': 2018, 'tau_b': [0.0357], 'debt_ratio_ss': 1.0, 'alpha_T': alpha_T.tolist(), 'alpha_G': alpha_G.tolist() } ''' ------------------------------------------------------------------------ Run baseline policy first ------------------------------------------------------------------------ ''' output_base = BASELINE_DIR kwargs = { 'output_base': base_dir, 'baseline_dir': base_dir, 'test': False, 'time_path': True, 'baseline': True, 'og_spec': og_spec, 'guid': '_example', 'run_micro': True, 'data': 'cps', 'client': client, 'num_workers': num_workers } start_time = time.time() runner(**kwargs) print('run time = ', time.time() - start_time) ''' ------------------------------------------------------------------------ Run reform policy ------------------------------------------------------------------------ ''' # update the effective corporate income tax rate og_spec = { 'frisch': 0.41, 'start_year': 2018, 'tau_b': [0.0595], 'debt_ratio_ss': 1.0, 'alpha_T': alpha_T.tolist(), 'alpha_G': alpha_G.tolist() } output_base = REFORM_DIR kwargs = { 'output_base': reform_dir, 'baseline_dir': base_dir, 'test': False, 'time_path': True, 'baseline': False, 'og_spec': og_spec, 'guid': '_example', 'iit_reform': iit_reform, 'run_micro': True, 'data': 'cps', 'client': client, 'num_workers': num_workers } start_time = time.time() runner(**kwargs) print('run time = ', time.time() - start_time) # return ans - the percentage changes in macro aggregates and prices # due to policy changes from the baseline to the reform ans = postprocess.create_diff(baseline_dir=base_dir, policy_dir=reform_dir) print("total time was ", (time.time() - run_start_time)) print('Percentage changes in aggregates:', ans)
def run_micro_macro(user_params, reform=None, baseline_dir=BASELINE_DIR, reform_dir=REFORM_DIR, guid='', data=PUF_PATH, ok_to_run_baseline=True): start_time = time.time() T_shifts = np.zeros(50) T_shifts[2:10] = 0.01 T_shifts[10:40] = -0.01 G_shifts = np.zeros(6) G_shifts[0:3] = -0.01 G_shifts[3:6] = -0.005 user_params = { 'frisch': 0.41, 'start_year': 2017, 'tau_b': 0.20, 'debt_ratio_ss': 1.0, 'delta_tau_annual': 0.05, 'T_shifts': T_shifts.tolist(), 'G_shifts': G_shifts.tolist() } ''' ------------------------------------------------------------------------ Run baseline ------------------------------------------------------------------------ ''' print('path exists', not os.path.exists(baseline_dir), ok_to_run_baseline) # if not os.path.exists(baseline_dir) and ok_to_run_baseline: if ok_to_run_baseline: output_base = baseline_dir kwargs = { 'output_base': baseline_dir, 'baseline_dir': baseline_dir, 'test': False, 'time_path': True, 'baseline': True, 'analytical_mtrs': False, 'age_specific': True, 'user_params': user_params, 'guid': '', 'run_micro': False, 'small_open': False, 'budget_balance': False, 'baseline_spending': False, 'data': data, 'client': client, 'num_workers': 4 } runner(**kwargs) ''' ------------------------------------------------------------------------ Run reform ------------------------------------------------------------------------ ''' output_base = reform_dir kwargs = { 'output_base': output_base, 'baseline_dir': baseline_dir, 'test': False, 'time_path': True, 'baseline': False, 'analytical_mtrs': False, 'age_specific': True, 'user_params': user_params, 'guid': guid, 'reform': reform, 'run_micro': False, 'small_open': False, 'budget_balance': False, 'baseline_spending': False, 'data': data, 'client': client, 'num_workers': 4 } runner(**kwargs) ans = postprocess.create_diff(baseline_dir=baseline_dir, policy_dir=reform_dir) print("total time was ", (time.time() - start_time)) print('Percentage changes in aggregates:', ans)
def run_micro_macro(user_params): # Grab a reform JSON file already in Tax-Calculator # In this example the 'reform' is a change to 2017 law (the # baseline policy is tax law in 2018) reform_url = ('https://raw.githubusercontent.com/' 'PSLmodels/Tax-Calculator/master/taxcalc/' 'reforms/2017_law.json') #ref = Calculator.read_json_param_objects(reform_url, None) # Modified #reform = ref['policy'] # Modified # Define parameters to use for multiprocessing client = Client(processes=False) num_workers = 1 # multiprocessing.cpu_count() print('Number of workers = ', num_workers) start_time = time.time() # Set some model parameters # See parameters.py for description of these parameters alpha_T = np.ones(50) * 0.1230058215 # Modified alpha_G = np.ones(7) * 0.01234569933 # Modified small_open = False user_params = { 'frisch': 0.5, 'start_year': 2018, 'tau_b': [(0.21 * 0.55) * (0.017 / 0.055), (0.21 * 0.55) * (0.017 / 0.055)], 'debt_ratio_ss': 2.0, 'alpha_T': alpha_T.tolist(), 'alpha_G': alpha_G.tolist(), 'small_open': small_open } # modified ''' ------------------------------------------------------------------------ Run baseline policy first ------------------------------------------------------------------------ ''' output_base = BASELINE_DIR kwargs = { 'output_base': output_base, 'baseline_dir': BASELINE_DIR, 'test': False, 'time_path': False, 'baseline': True, 'user_params': user_params, 'guid': '_example', 'run_micro': False, 'data': 'cps', 'client': client, 'num_workers': num_workers } start_time = time.time() runner(**kwargs) print('run time = ', time.time() - start_time) ''' ------------------------------------------------------------------------ Run reform policy ------------------------------------------------------------------------ ''' user_params = { 'frisch': 0.5, 'start_year': 2018, 'tau_b': [(0.35 * 0.55) * (0.017 / 0.055)], 'debt_ratio_ss': 1.0, 'alpha_T': alpha_T.tolist(), 'alpha_G': alpha_G.tolist(), 'small_open': small_open } output_base = REFORM_DIR kwargs = { 'output_base': output_base, 'baseline_dir': BASELINE_DIR, 'test': False, 'time_path': True, 'baseline': False, 'user_params': user_params, 'guid': '_example', 'reform': reform, 'run_micro': True, 'data': 'cps', 'client': client, 'num_workers': num_workers } start_time = time.time() runner(**kwargs) print('run time = ', time.time() - start_time) # return ans - the percentage changes in macro aggregates and prices # due to policy changes from the baseline to the reform ans = postprocess.create_diff(baseline_dir=BASELINE_DIR, policy_dir=REFORM_DIR) print("total time was ", (time.time() - start_time)) print('Percentage changes in aggregates:', ans)
print('run time = ', time.time()-start_time) ''' ------------------------------------------------------------------------ Run reform policy ------------------------------------------------------------------------ ''' # update the effective corporate income tax rate og_spec = {'frisch': 0.41, 'start_year': 2018, 'tau_b': [0.0595], 'debt_ratio_ss': 1.0, 'alpha_T': alpha_T.tolist(), 'alpha_G': alpha_G.tolist()} output_base = REFORM_DIR kwargs = {'output_base': output_base, 'baseline_dir': BASELINE_DIR, 'test': False, 'time_path': True, 'baseline': False, 'og_spec': og_spec, 'guid': '_example', 'iit_reform': iit_reform, 'run_micro': True, 'data': 'cps', 'client': client, 'num_workers': num_workers} start_time = time.time() runner(**kwargs) print('run time = ', time.time()-start_time) # return ans - the percentage changes in macro aggregates and prices # due to policy changes from the baseline to the reform ans = postprocess.create_diff( baseline_dir=BASELINE_DIR, policy_dir=REFORM_DIR) print("total time was ", (time.time() - run_start_time)) print('Percentage changes in aggregates:', ans)
def run_micro_macro(user_params): # Grab a reform JSON file already in Tax-Calculator # In this example the 'reform' is a change to 2017 law (the # baseline policy is tax law in 2018) reform_url = ('https://raw.githubusercontent.com/' 'PSLmodels/Tax-Calculator/master/taxcalc/' 'reforms/2017_law.json') ref = Calculator.read_json_param_objects(reform_url, None) reform = ref['policy'] # Define parameters to use for multiprocessing client = Client(processes=False) num_workers = 1 # multiprocessing.cpu_count() print('Number of workers = ', num_workers) start_time = time.time() # Set some model parameters # See parameters.py for description of these parameters alpha_T = np.zeros(50) alpha_T[0:2] = 0.09 alpha_T[2:10] = 0.09 + 0.01 alpha_T[10:40] = 0.09 - 0.01 alpha_T[40:] = 0.09 alpha_G = np.zeros(7) alpha_G[0:3] = 0.05 - 0.01 alpha_G[3:6] = 0.05 - 0.005 alpha_G[6:] = 0.05 small_open = False user_params = {'frisch': 0.41, 'start_year': 2018, 'tau_b': [(0.21 * 0.55) * (0.017 / 0.055), (0.21 * 0.55) * (0.017 / 0.055)], 'debt_ratio_ss': 1.0, 'alpha_T': alpha_T.tolist(), 'alpha_G': alpha_G.tolist(), 'small_open': small_open} ''' ------------------------------------------------------------------------ Run baseline policy first ------------------------------------------------------------------------ ''' output_base = BASELINE_DIR kwargs = {'output_base': output_base, 'baseline_dir': BASELINE_DIR, 'test': False, 'time_path': True, 'baseline': True, 'user_params': user_params, 'guid': '_example', 'run_micro': True, 'data': 'cps', 'client': client, 'num_workers': num_workers} start_time = time.time() runner(**kwargs) print('run time = ', time.time()-start_time) ''' ------------------------------------------------------------------------ Run reform policy ------------------------------------------------------------------------ ''' user_params = {'frisch': 0.41, 'start_year': 2018, 'tau_b': [(0.35 * 0.55) * (0.017 / 0.055)], 'debt_ratio_ss': 1.0, 'alpha_T': alpha_T.tolist(), 'alpha_G': alpha_G.tolist(), 'small_open': small_open} output_base = REFORM_DIR kwargs = {'output_base': output_base, 'baseline_dir': BASELINE_DIR, 'test': False, 'time_path': True, 'baseline': False, 'user_params': user_params, 'guid': '_example', 'reform': reform, 'run_micro': True, 'data': 'cps', 'client': client, 'num_workers': num_workers} start_time = time.time() runner(**kwargs) print('run time = ', time.time()-start_time) # return ans - the percentage changes in macro aggregates and prices # due to policy changes from the baseline to the reform ans = postprocess.create_diff( baseline_dir=BASELINE_DIR, policy_dir=REFORM_DIR) print("total time was ", (time.time() - start_time)) print('Percentage changes in aggregates:', ans)