Exemple #1
0
def run_model(meta_params_dict, adjustment):
    meta_params = MetaParameters()
    meta_params.adjust(meta_params_dict)

    policy_mods = convert_adj(adjustment["Policy"], meta_params.year.tolist())

    adjustment["Tax Information"]["year"] = meta_params.year
    params = CruncherParams()
    params.adjust(adjustment["Tax Information"], raise_errors=False)
    newvals = params.specification()

    crunch = Cruncher(inputs=newvals, custom_reform=policy_mods)

    #make dataset for bokeh plots
    ivar = crunch.ivar
    df = pd.concat([ivar] * 5000, ignore_index=True)
    increments = pd.DataFrame(list(range(0, 500000, 100)))
    zeros = pd.DataFrame([0] * 5000)
    #ivar position of e00200p
    df[9] = increments
    #set spouse earning to zero
    df[10] = zeros
    b = Batch(df)
    df_base = b.create_table()
    df_reform = b.create_table(policy_mods)
    #compute average tax rates
    df_base['IATR'] = df_base['Individual Income Tax'] / df_base['AGI']
    df_base['PATR'] = df_base['Payroll Tax'] / df_base['AGI']
    df_reform['IATR'] = df_reform['Individual Income Tax'] / df_reform['AGI']
    df_reform['PATR'] = df_reform['Payroll Tax'] / df_reform['AGI']

    return comp_output(crunch, df_base, df_reform)
Exemple #2
0
def get_inputs(meta_params_dict):
    """
	Return default parameters from Tax-Cruncher
	"""
    metaparams = MetaParameters()
    metaparams.adjust(meta_params_dict)

    params = CruncherParams()
    policy_params = TCParams()

    keep = [
        "mstat", "page", "sage", "depx", "dep13", "dep17", "dep18", "pwages",
        "swages", "dividends", "intrec", "stcg", "ltcg", "otherprop",
        "nonprop", "pensions", "gssi", "ui", "proptax", "otheritem",
        "childcare", "mortgage", "mtr_options"
    ]
    full_dict = params.specification(meta_data=True,
                                     include_empty=True,
                                     serializable=True)

    params_dict = {var: full_dict[var] for var in keep}

    cruncher_params = params_dict

    pol_params = policy_params.specification(meta_data=True,
                                             include_empty=True,
                                             serializable=True,
                                             year=metaparams.year)

    meta = metaparams.specification(meta_data=True,
                                    include_empty=True,
                                    serializable=True)

    return meta, {"Tax Information": cruncher_params, "Policy": pol_params}
Exemple #3
0
def get_inputs(meta_params_dict):
    """
    Return default parameters from Tax-Cruncher
    """
    metaparams = MetaParameters()
    metaparams.adjust(meta_params_dict)

    params = CruncherParams()
    policy_params = TCParams()

    policy_params.set_state(year=metaparams.year.tolist())

    filtered_pol_params = OrderedDict()
    for k, v in policy_params.dump().items():
        if k == "schema" or v.get("section_1", False):
            filtered_pol_params[k] = v

    keep = [
        "mstat", "page", "sage", "depx", "dep13", "dep17", "dep18", "pwages",
        "swages", "dividends", "intrec", "stcg", "ltcg", "otherprop",
        "nonprop", "pensions", "gssi", "ui", "proptax", "otheritem",
        "childcare", "mortgage", "mtr_options", "schema"
    ]
    cruncher_dict = params.dump()

    default_params = {
        "Tax Information":
        {k: v
         for k, v in cruncher_dict.items() if k in keep},
        "Policy": filtered_pol_params
    }

    meta = metaparams.dump()

    return {"meta_parameters": meta, "model_parameters": default_params}
Exemple #4
0
def run_model(meta_params_dict, adjustment):
    params = CruncherParams()
    params.adjust(adjustment["Tax Information"], raise_errors=False)
    newvals = params.specification()

    crunch = Cruncher(inputs=newvals,
                      custom_reform=convert_adj(adjustment["Policy"], 2019))

    return comp_output(crunch)
Exemple #5
0
def validate_inputs(meta_params_dict, adjustment, errors_warnings):
    params = CruncherParams()
    params.adjust(adjustment["Tax Information"], raise_errors=False)
    errors_warnings["Tax Information"]["errors"].update(params.errors)

    policy_adj = inputs.convert_policy_adjustment(adjustment["Policy"])

    policy_params = Policy()
    policy_params.adjust(policy_adj, raise_errors=False, ignore_warnings=True)
    errors_warnings["Policy"]["errors"].update(policy_params.errors)

    return {"errors_warnings": errors_warnings}
Exemple #6
0
def validate_inputs(meta_params_dict, adjustment, errors_warnings):
    params = CruncherParams()
    params.adjust(adjustment["Tax Information"], raise_errors=False)
    errors_warnings["Tax Information"]["errors"].update(params.errors)

    pol_params = {}
    # drop checkbox parameters.
    for param, data in list(adjustment["Policy"].items()):
        if not param.endswith("checkbox"):
            pol_params[param] = data

    policy_params = TCParams()
    policy_params.adjust(pol_params, raise_errors=False)
    errors_warnings["Policy"]["errors"].update(policy_params.errors)

    return errors_warnings
Exemple #7
0
def test_compare_defaults():
    '''
	Test that defaults.json and defaults_batch.json have the same
	parameters in the same order.
	'''
    cp = CruncherParams()
    ignore = ['mtr_options', 'reform_options']
    cp_list = []
    for k, v in cp.dump().items():
        cp_list.append(k)
    for item in ignore:
        cp_list.remove(item)

    bp = BatchParams()
    bp_list = []
    for k, v in bp.dump().items():
        bp_list.append(k)

    assert cp_list == bp_list
Exemple #8
0
def get_inputs(meta_params_dict):
    """
    Return default parameters from Tax-Cruncher
    """
    metaparams = MetaParameters()
    metaparams.adjust(meta_params_dict)

    params = CruncherParams()
    policy_params = Policy()

    policy_params.set_state(year=metaparams.year.tolist())

    policy_params.array_first = False
    # Hack to work smoothly with convert_policy_defaults since
    # it expects a data_source attribute.
    metaparams.data_source = "CPS"
    filtered_pol_params = inputs.convert_policy_defaults(
        metaparams, policy_params)

    keep = [
        "mstat", "page", "sage", "dep13", "dep17", "dep18", "otherdep",
        "pwages", "swages", "dividends", "intrec", "stcg", "ltcg", "otherprop",
        "nonprop", "pensions", "gssi", "ui", "proptax", "otheritem",
        "childcare", "mortgage", "businc", "sstb", "w2paid", "qualprop",
        "mtr_options", "schema"
    ]
    cruncher_dict = params.dump()

    default_params = {
        "Tax Information":
        {k: v
         for k, v in cruncher_dict.items() if k in keep},
        "Policy": filtered_pol_params
    }

    meta = metaparams.dump()

    return {"meta_parameters": meta, "model_parameters": default_params}
Exemple #9
0
def run_model(meta_params_dict, adjustment):
    meta_params = MetaParameters()
    meta_params.adjust(meta_params_dict)

    policy_mods = convert_adj(adjustment["Policy"], meta_params.year.tolist())

    adjustment["Tax Information"]["year"] = meta_params.year
    params = CruncherParams()
    params.adjust(adjustment["Tax Information"], raise_errors=False)
    newvals = params.specification()

    crunch = Cruncher(inputs=newvals, custom_reform=policy_mods)

    # make dataset for bokeh plots
    ivar = crunch.ivar
    _, mtr_opt, _ = crunch.taxsim_inputs()
    df = pd.concat([ivar] * 5000, ignore_index=True)
    increments = pd.DataFrame(list(range(0, 500000, 100)))

    # use Calculation Option to determine what var to increment
    if mtr_opt == 'Taxpayer Earnings':
        span = int(ivar[9])
        df[9] = increments
    elif mtr_opt == 'Spouse Earnings':
        span = int(ivar[10])
        df[10] = increments
    elif mtr_opt == 'Short Term Gains':
        span = int(ivar[13])
        df[13] = increments
    elif mtr_opt == 'Long Term Gains':
        span = int(ivar[14])
        df[14] = increments
    elif mtr_opt == 'Qualified Dividends':
        span = int(ivar[14])
        df[11] = increments
    elif mtr_opt == 'Interest Received':
        span = int(ivar[12])
        df[12] = increments
    elif mtr_opt == 'Pensions':
        span = int(ivar[17])
        df[17] = increments
    elif mtr_opt == 'Gross Social Security Benefits':
        span = int(ivar[18])
        df[18] = increments
    elif mtr_opt == 'Real Estate Taxes Paid':
        span = int(ivar[20])
        df[20] = increments
    elif mtr_opt == 'Mortgage':
        span = int(ivar[23])
        df[23] = increments

    b = Batch(df)
    df_base = b.create_table()
    df_reform = b.create_table(policy_mods)

    # compute average tax rates
    df_base['IATR'] = df_base['Individual Income Tax'] / df_base['AGI']
    df_base['PATR'] = df_base['Payroll Tax'] / df_base['AGI']
    df_reform['IATR'] = df_reform['Individual Income Tax'] / df_reform['AGI']
    df_reform['PATR'] = df_reform['Payroll Tax'] / df_reform['AGI']
    df_base['Axis'] = increments
    df_reform['Axis'] = increments

    return comp_output(crunch, df_base, df_reform, span, mtr_opt)