From 73b5ede6733b497af135478b3616a3b4fef331cc Mon Sep 17 00:00:00 2001 From: hdoupe Date: Tue, 19 Nov 2019 13:28:24 -0500 Subject: [PATCH 01/64] checpoint: most policy, calculator tests pass --- taxcalc/calcfunctions.py | 16 +- taxcalc/calculator.py | 6 +- taxcalc/consumption.json | 325 +- taxcalc/consumption.py | 4 +- taxcalc/decorators.py | 8 +- taxcalc/growdiff.json | 684 +- taxcalc/growdiff.py | 5 - taxcalc/parameters.py | 1180 +- taxcalc/policy.py | 68 +- taxcalc/policy_current_law.json | 24163 ++++++++++++++++++++++------- taxcalc/tests/test_calculator.py | 6 +- taxcalc/tests/test_policy.py | 280 +- 12 files changed, 19613 insertions(+), 7132 deletions(-) diff --git a/taxcalc/calcfunctions.py b/taxcalc/calcfunctions.py index 8dc383455..7265e1bea 100644 --- a/taxcalc/calcfunctions.py +++ b/taxcalc/calcfunctions.py @@ -1773,19 +1773,19 @@ def ComputeBenefit(calc, ID_switch): # the types of itemized deductions covered under the BenefitSurtax no_ID_calc = copy.deepcopy(calc) if ID_switch[0]: - no_ID_calc.policy_param('ID_Medical_hc', 1.) + no_ID_calc.policy_param('ID_Medical_hc', [1.]) if ID_switch[1]: - no_ID_calc.policy_param('ID_StateLocalTax_hc', 1.) + no_ID_calc.policy_param('ID_StateLocalTax_hc', [1.]) if ID_switch[2]: - no_ID_calc.policy_param('ID_RealEstate_hc', 1.) + no_ID_calc.policy_param('ID_RealEstate_hc', [1.]) if ID_switch[3]: - no_ID_calc.policy_param('ID_Casualty_hc', 1.) + no_ID_calc.policy_param('ID_Casualty_hc', [1.]) if ID_switch[4]: - no_ID_calc.policy_param('ID_Miscellaneous_hc', 1.) + no_ID_calc.policy_param('ID_Miscellaneous_hc', [1.]) if ID_switch[5]: - no_ID_calc.policy_param('ID_InterestPaid_hc', 1.) + no_ID_calc.policy_param('ID_InterestPaid_hc', [1.]) if ID_switch[6]: - no_ID_calc.policy_param('ID_Charity_hc', 1.) + no_ID_calc.policy_param('ID_Charity_hc', [1.]) no_ID_calc._calc_one_year() # pylint: disable=protected-access diff_iitax = no_ID_calc.array('iitax') - calc.array('iitax') benefit = np.where(diff_iitax > 0., diff_iitax, 0.) @@ -1798,6 +1798,8 @@ def BenefitSurtax(calc): to income tax, combined tax, and surtax liabilities. """ if calc.policy_param('ID_BenefitSurtax_crt') != 1.: + print("switch", calc.policy_param('ID_BenefitSurtax_Switch')) + switch = calc.policy_param('ID_BenefitSurtax_Switch') ben = ComputeBenefit(calc, calc.policy_param('ID_BenefitSurtax_Switch')) agi = calc.array('c00100') diff --git a/taxcalc/calculator.py b/taxcalc/calculator.py index b5d1c2825..418dfcaee 100644 --- a/taxcalc/calculator.py +++ b/taxcalc/calculator.py @@ -277,7 +277,11 @@ def policy_param(self, param_name, param_value=None): return None (which can be ignored). """ if param_value is None: - return getattr(self.__policy, param_name) + val = getattr(self.__policy, param_name) + if param_name.startswith("_"): + return val + else: + return val[0] # drop down a dimension. setattr(self.__policy, param_name, param_value) return None diff --git a/taxcalc/consumption.json b/taxcalc/consumption.json index 43bea766b..9c32c6cf8 100644 --- a/taxcalc/consumption.json +++ b/taxcalc/consumption.json @@ -1,112 +1,239 @@ { - "MPC_e17500": { - "long_name": "Marginal propensity to consume medical expenses", - "description": "Defined as dollar change in medical-expense consumption divided by dollar change in income. Typical value is in [0,1] range.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": 0, "max": 1} + "schema": { + "labels": { + "year": { + "type": "int", + "validators": { + "range": { + "min": 2013, + "max": 2029 + } + } + } }, - - "MPC_e18400": { - "start_year": 2013, - "long_name": "Marginal propensity to consume state-and-local taxes", - "description": "Defined as dollar change in state-and-local-taxes consumption divided by dollar change in income. Typical value is in [0,1] range.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": 0, "max": 1} + "additional_members": { + "section_1": { + "type": "str" + }, + "section_2": { + "type": "str" + }, + "start_year": { + "type": "int" + }, + "indexable": { + "type": "bool" + }, + "indexed": { + "type": "bool" + } + } + }, + "MPC_e17500": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Marginal propensity to consume medical expenses", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } }, - - "MPC_e19800": { - "start_year": 2013, - "long_name": "Marginal propensity to consume charity cash contributions", - "description": "Defined as dollar change in charity-cash-contribution consumption divided by dollar change in income. Typical value is in [0,1] range.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": 0, "max": 1} + "description": "Defined as dollar change in medical-expense consumption divided by dollar change in income. Typical value is in [0,1] range." + }, + "MPC_e18400": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Marginal propensity to consume state-and-local taxes", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } }, - - "MPC_e20400": { - "start_year": 2013, - "long_name": "Marginal propensity to consume miscellaneous deduction expenses", - "description": "Defined as dollar change in miscellaneous-deduction-expense consumption divided by dollar change in income. Typical value is in [0,1] range.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": 0, "max": 1} + "start_year": 2013, + "description": "Defined as dollar change in state-and-local-taxes consumption divided by dollar change in income. Typical value is in [0,1] range." + }, + "MPC_e19800": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Marginal propensity to consume charity cash contributions", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } }, - - "BEN_housing_value": { - "long_name": "Consumption value of housing benefits", - "description": "Consumption value per dollar of housing benefits, all of which are in-kind benefits.", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 1} + "start_year": 2013, + "description": "Defined as dollar change in charity-cash-contribution consumption divided by dollar change in income. Typical value is in [0,1] range." + }, + "MPC_e20400": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Marginal propensity to consume miscellaneous deduction expenses", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } }, - - "BEN_snap_value": { - "long_name": "Consumption value of SNAP benefits", - "description": "Consumption value per dollar of SNAP benefits, all of which are in-kind benefits.", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 1} + "start_year": 2013, + "description": "Defined as dollar change in miscellaneous-deduction-expense consumption divided by dollar change in income. Typical value is in [0,1] range." + }, + "BEN_housing_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of housing benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } }, - - "BEN_tanf_value": { - "long_name": "Consumption value of TANF benefits", - "description": "Consumption value per dollar of TANF benefits, some of which are cash benefits and some of which are in-kind benefits.", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 1} + "description": "Consumption value per dollar of housing benefits, all of which are in-kind benefits." + }, + "BEN_snap_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of SNAP benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } }, - - "BEN_vet_value": { - "long_name": "Consumption value of veterans benefits", - "description": "Consumption value per dollar of veterans benefits, some of which are in-kind benefits (only about 48% are cash benefits).", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 2} + "description": "Consumption value per dollar of SNAP benefits, all of which are in-kind benefits." + }, + "BEN_tanf_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of TANF benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } }, - - "BEN_wic_value": { - "long_name": "Consumption value of WIC benefits", - "description": "Consumption value per dollar of WIC benefits, all of which are in-kind benefits.", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 1} + "description": "Consumption value per dollar of TANF benefits, some of which are cash benefits and some of which are in-kind benefits." + }, + "BEN_vet_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of veterans benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 2 + } }, - - "BEN_mcare_value": { - "long_name": "Consumption value of Medicare benefits", - "description": "Consumption value per dollar of Medicare benefits, all of which are in-kind benefits.", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 2} + "description": "Consumption value per dollar of veterans benefits, some of which are in-kind benefits (only about 48% are cash benefits)." + }, + "BEN_wic_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of WIC benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } }, - - "BEN_mcaid_value": { - "long_name": "Consumption value of Medicaid benefits", - "description": "Consumption value per dollar of Medicaid benefits, all of which are in-kind benefits.", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 2} + "description": "Consumption value per dollar of WIC benefits, all of which are in-kind benefits." + }, + "BEN_mcare_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of Medicare benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 2 + } }, - - "BEN_other_value": { - "long_name": "Consumption value of other benefits", - "description": "Consumption value per dollar of other benefits, some of which are in-kind benefits (somewhere between 52% and 76% are in-kind benefits).", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 1} - } + "description": "Consumption value per dollar of Medicare benefits, all of which are in-kind benefits." + }, + "BEN_mcaid_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of Medicaid benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 2 + } + }, + "description": "Consumption value per dollar of Medicaid benefits, all of which are in-kind benefits." + }, + "BEN_other_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of other benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, + "description": "Consumption value per dollar of other benefits, some of which are in-kind benefits (somewhere between 52% and 76% are in-kind benefits)." + } } diff --git a/taxcalc/consumption.py b/taxcalc/consumption.py index 0be9ea904..33f212225 100644 --- a/taxcalc/consumption.py +++ b/taxcalc/consumption.py @@ -34,8 +34,7 @@ class instance: Consumption def __init__(self): super().__init__() - self.initialize(Consumption.JSON_START_YEAR, - Consumption.DEFAULT_NUM_YEARS) + self.set_state(year=self.JSON_START_YEAR) @staticmethod def read_json_update(obj): @@ -46,6 +45,7 @@ def read_json_update(obj): pointing to a valid JSON file hosted online, or a valid JSON text. """ return Parameters._read_json_revision(obj, 'consumption') + # raise NotImplementedError() def update_consumption(self, revision, print_warnings=True, raise_errors=True): diff --git a/taxcalc/decorators.py b/taxcalc/decorators.py index 42be3a30c..fd229fa40 100644 --- a/taxcalc/decorators.py +++ b/taxcalc/decorators.py @@ -101,7 +101,7 @@ def ap_fuc(x_0, x_1, x_2, ...): return fstr.getvalue() -def create_toplevel_function_string(args_out, args_in, pm_or_pf): +def create_toplevel_function_string(args_out, args_in, pm_or_pf, parameter_list): """ Create a string for a function of the form: @@ -142,6 +142,9 @@ def hl_func(x_0, x_1, x_2, ...): fstr.write(" (" + ", ".join(outs) + ") = \\\n") fstr.write(" " + "applied_f(") for ppp, attr in zip(pm_or_pf, args_out + args_in): + # Bring Policy parameter values down a dimension. + if attr in parameter_list: + attr += "[0]" fstr.write("get_values(" + ppp + "." + attr + ")" + ", ") fstr.write(")\n") fstr.write(" header = [") @@ -308,7 +311,8 @@ def wrapper(*args, **kwargs): # Create the high level function high_level_func = create_toplevel_function_string(all_out_args, list(in_args), - pm_or_pf) + pm_or_pf, + set(all_parameters)) func_code = compile(high_level_func, "", "exec") fakeglobals = {} eval(func_code, # pylint: disable=eval-used diff --git a/taxcalc/growdiff.json b/taxcalc/growdiff.json index 5cd6faf70..972c0375d 100644 --- a/taxcalc/growdiff.json +++ b/taxcalc/growdiff.json @@ -1,233 +1,457 @@ { - "ABOOK": { - "long_name": "ABOOK additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABOOK extrapolates input variables: e07300 and e07400.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ACGNS": { - "long_name": "ACGNS additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ACGNS extrapolates input variables: e01200, p22250, p23250, e24515 and e24518.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ACPIM": { - "long_name": "ACPIM additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ACPIM extrapolates input variables: e03270, e03290 and e17500.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ACPIU": { - "long_name": "ACPIU additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ACPIU is the price inflation rate used to inflate many policy parameters. Note that non-zero values of this parameter will not affect historically known values of policy parameters.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ADIVS": { - "long_name": "ADIVS additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ADIVS extrapolates input variables: e00600 and e00650.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "AINTS": { - "long_name": "AINTS additive difference from default projection", - "description": "Default projection is in growfactors.csv file. AINTS extrapolates input variables: e00300 and e00400.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "AIPD": { - "long_name": "AIPD additive difference from default projection", - "description": "Default projection is in growfactors.csv file. AIPD extrapolates input variables: e19200.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ASCHCI": { - "long_name": "ASCHCI additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ASCHCI extrapolates input variables: e00900, e00900p and e00900s when they are positive.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ASCHCL": { - "long_name": "ASCHCL additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ASCHCL extrapolates input variables: e00900, e00900p and e00900s when they are negative.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ASCHEI": { - "long_name": "ASCHEI additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ASCHEI extrapolates input variables: e02000 when positive, and e26270, k1bx14p, k1bx14s and e27200 for all values.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ASCHEL": { - "long_name": "ASCHEL additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ASCHEL extrapolates input variable: e02000 when negative.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ASCHF": { - "long_name": "ASCHF additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ASCHF extrapolates input variables: e02100, e02100p and e02100s.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ASOCSEC": { - "long_name": "ASOCSEC additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ASOCSEC extrapolates input variable: e02400.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ATXPY": { - "long_name": "ATXPY additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ATXPY extrapolates input variables: e00700, e00800, e01400, e01500, e01700, e03150, e03210, e03220, e03230, e03300, e03400, e03500, e07240, e07260, p08000, e09700, e09800, e09900, e11200, e18400, e18500, e19800, e20100, e20400, g20500, e07600, e32800, e58990, e62900, e87530, e87521 and cmbtp.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "AUCOMP": { - "long_name": "AUCOMP additive difference from default projection", - "description": "Default projection is in growfactors.csv file. AUCOMP extrapolates input variable: e02300.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "AWAGE": { - "long_name": "AWAGE additive difference from default projection", - "description": "Default projection is in growfactors.csv file. AWAGE extrapolates input variables: e00200, e00200p and e00200s. Also, AWAGE is the wage growth rate used to inflate the OASDI maximum taxable earnings policy parameter, _SS_Earnings_c. Note that non-zero values of this parameter will not affect historically known values of _SS_Earnings_c.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ABENOTHER": { - "long_name": "ABENOTHER additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENOTHER extrapolates input variable other_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ABENMCARE": { - "long_name": "ABENMCARE additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENMCARE extrapolates input variable mcare_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - - "ABENMCAID": { - "long_name": "ABENMCAID additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENMCAID extrapolates input variable mcaid_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - - "ABENSSI": { - "long_name": "ABENSSI additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENSSI extrapolates input variable ssi_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - - "ABENSNAP": { - "long_name": "ABENSNAP additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENSNAP extrapolates input variable snap_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - - "ABENWIC": { - "long_name": "ABENWIC additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENWIC extrapolates input variable wic_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - - "ABENHOUSING": { - "long_name": "ABENHOUSING additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENHOUSING extrapolates input variable housing_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - - "ABENTANF": { - "long_name": "ABENTANF additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENTANF extrapolates input variable tanf_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} - }, - - "ABENVET": { - "long_name": "ABENVET additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENVET extrapolates input variable vet_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -1, "max": 1} + "schema": { + "labels": { + "year": { + "type": "int", + "validators": { + "range": { + "min": 2013, + "max": 2029 + } + } + } + }, + "additional_members": { + "section_1": { + "type": "str" + }, + "section_2": { + "type": "str" + }, + "start_year": { + "type": "int" + }, + "indexable": { + "type": "bool" + }, + "indexed": { + "type": "bool" + } } - + }, + "ABOOK": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABOOK additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ABOOK extrapolates input variables: e07300 and e07400." + }, + "ACGNS": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ACGNS additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ACGNS extrapolates input variables: e01200, p22250, p23250, e24515 and e24518." + }, + "ACPIM": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ACPIM additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ACPIM extrapolates input variables: e03270, e03290 and e17500." + }, + "ACPIU": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ACPIU additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ACPIU is the price inflation rate used to inflate many policy parameters. Note that non-zero values of this parameter will not affect historically known values of policy parameters." + }, + "ADIVS": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ADIVS additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ADIVS extrapolates input variables: e00600 and e00650." + }, + "AINTS": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "AINTS additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. AINTS extrapolates input variables: e00300 and e00400." + }, + "AIPD": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "AIPD additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. AIPD extrapolates input variables: e19200." + }, + "ASCHCI": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ASCHCI additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ASCHCI extrapolates input variables: e00900, e00900p and e00900s when they are positive." + }, + "ASCHCL": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ASCHCL additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ASCHCL extrapolates input variables: e00900, e00900p and e00900s when they are negative." + }, + "ASCHEI": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ASCHEI additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ASCHEI extrapolates input variables: e02000 when positive, and e26270, k1bx14p, k1bx14s and e27200 for all values." + }, + "ASCHEL": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ASCHEL additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ASCHEL extrapolates input variable: e02000 when negative." + }, + "ASCHF": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ASCHF additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ASCHF extrapolates input variables: e02100, e02100p and e02100s." + }, + "ASOCSEC": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ASOCSEC additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ASOCSEC extrapolates input variable: e02400." + }, + "ATXPY": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ATXPY additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ATXPY extrapolates input variables: e00700, e00800, e01400, e01500, e01700, e03150, e03210, e03220, e03230, e03300, e03400, e03500, e07240, e07260, p08000, e09700, e09800, e09900, e11200, e18400, e18500, e19800, e20100, e20400, g20500, e07600, e32800, e58990, e62900, e87530, e87521 and cmbtp." + }, + "AUCOMP": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "AUCOMP additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. AUCOMP extrapolates input variable: e02300." + }, + "AWAGE": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "AWAGE additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. AWAGE extrapolates input variables: e00200, e00200p and e00200s. Also, AWAGE is the wage growth rate used to inflate the OASDI maximum taxable earnings policy parameter, _SS_Earnings_c. Note that non-zero values of this parameter will not affect historically known values of _SS_Earnings_c." + }, + "ABENOTHER": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENOTHER additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ABENOTHER extrapolates input variable other_ben." + }, + "ABENMCARE": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENMCARE additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ABENMCARE extrapolates input variable mcare_ben." + }, + "ABENMCAID": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENMCAID additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ABENMCAID extrapolates input variable mcaid_ben." + }, + "ABENSSI": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENSSI additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ABENSSI extrapolates input variable ssi_ben." + }, + "ABENSNAP": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENSNAP additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ABENSNAP extrapolates input variable snap_ben." + }, + "ABENWIC": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENWIC additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ABENWIC extrapolates input variable wic_ben." + }, + "ABENHOUSING": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENHOUSING additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ABENHOUSING extrapolates input variable housing_ben." + }, + "ABENTANF": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENTANF additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ABENTANF extrapolates input variable tanf_ben." + }, + "ABENVET": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENVET additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -1, + "max": 1 + } + }, + "description": "Default projection is in growfactors.csv file. ABENVET extrapolates input variable vet_ben." + } } diff --git a/taxcalc/growdiff.py b/taxcalc/growdiff.py index b6644764d..c2765b56c 100644 --- a/taxcalc/growdiff.py +++ b/taxcalc/growdiff.py @@ -31,11 +31,6 @@ class instance: GrowDiff DEFAULTS_FILE_NAME = 'growdiff.json' DEFAULTS_FILE_PATH = os.path.abspath(os.path.dirname(__file__)) - def __init__(self): - super().__init__() - self.initialize(GrowDiff.JSON_START_YEAR, - GrowDiff.DEFAULT_NUM_YEARS) - @staticmethod def read_json_update(obj, topkey): """ diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index a5b67b3e5..2d293315d 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -1,862 +1,373 @@ -""" -Tax-Calculator abstract base parameters class. -""" -# CODING-STYLE CHECKS: -# pycodestyle parameters.py -# pylint --disable=locally-disabled parameters.py - +import copy import os import re -import abc -from collections import OrderedDict -import requests +from collections import defaultdict + +import paramtools import numpy as np -from taxcalc.utils import read_egg_json, json_to_dict +import requests +import taxcalc +from taxcalc.utils import json_to_dict -class Parameters(): - """ - Inherit from this class for Policy, Consumption, GrowDiff, and - other groups of parameters that need to have a set_year method. - Override this __init__ method and DEFAULTS_FILE_NAME and - DEFAULTS_FILE_PATH in the inheriting class. - """ - # pylint: disable=too-many-instance-attributes - __metaclass__ = abc.ABCMeta +def lt_func(x, y) -> bool: + return all(x < item for item in y) - DEFAULTS_FILE_NAME = None - DEFAULTS_FILE_PATH = None - def __init__(self): - # convert JSON in DEFAULTS_FILE_NAME into self._vals dictionary - assert self.DEFAULTS_FILE_NAME is not None - assert self.DEFAULTS_FILE_PATH is not None - file_path = os.path.join(self.DEFAULTS_FILE_PATH, - self.DEFAULTS_FILE_NAME) - if os.path.isfile(file_path): - with open(file_path) as pfile: - json_text = pfile.read() - vals = json_to_dict(json_text) - else: # find file in conda package - vals = read_egg_json(self.DEFAULTS_FILE_NAME) # pragma: no cover - # add leading underscore character to each parameter name - self._vals = OrderedDict() - for pname in vals: - self._vals['_' + pname] = vals[pname] - del vals - # declare several scalar variables - self._current_year = 0 - self._start_year = 0 - self._end_year = 0 - self._num_years = 0 - self._last_known_year = 0 - # declare optional _inflation_rates and _wage_growth_rates - self._inflation_rates = list() - self._wage_growth_rates = list() - self._wage_indexed = None - # declare removed and redefined parameters - self._removed = None - self._redefined = None - # declare parameter warning/error variables - self.parameter_warnings = '' - self.parameter_errors = '' - - def initialize(self, start_year, num_years, last_known_year=None, - removed=None, redefined=None, wage_indexed=None): - """ - Called from subclass __init__ function. - """ - # pylint: disable=too-many-arguments - # check arguments - assert start_year >= 0 - assert num_years >= 1 - end_year = start_year + num_years - 1 - assert last_known_year is None or isinstance(last_known_year, int) - assert removed is None or isinstance(removed, dict) - assert redefined is None or isinstance(redefined, dict) - assert wage_indexed is None or isinstance(wage_indexed, list) - # remember arguments - self._current_year = start_year - self._start_year = start_year - self._num_years = num_years - self._end_year = end_year - if last_known_year is None: - self._last_known_year = start_year - else: - assert last_known_year >= start_year - assert last_known_year <= end_year - self._last_known_year = last_known_year - if removed is None: - self._removed = dict() - else: - self._removed = removed - if redefined is None: - self._redefined = dict() - else: - self._redefined = redefined - if wage_indexed is None: - self._wage_indexed = list() - else: - self._wage_indexed = wage_indexed - # set default parameter values - self._apply_cpi_offset_to_inflation_rates() - self._set_default_vals() +def select_lt(value_objects, exact_match, labels, tree=None): + return paramtools.select(value_objects, exact_match, lt_func, labels, tree) - def inflation_rates(self): - """ - Override this method in subclass when appropriate. - """ - return self._inflation_rates - def wage_growth_rates(self): - """ - Override this method in subclass when appropriate. - """ - return self._wage_growth_rates +class Parameters(paramtools.Parameters): + defaults = None + array_first = True + label_to_extend = "year" + uses_extend_func = True - @property - def num_years(self): - """ - Parameters class number of parameter years property. - """ - return self._num_years + WAGE_INDEXED_PARAMS = () - @property - def current_year(self): - """ - Parameters class current calendar year property. - """ - return self._current_year + # Legacy class attrs + DEFAULTS_FILE_NAME = None + DEFAULTS_FILE_PATH = None + JSON_START_YEAR = None + LAST_KNOWN_YEAR = None + + def __init__(self, *args, **kwargs): + self.wage_growth_rates = None + self.inflation_rates = None + if self.defaults is None and self.DEFAULTS_FILE_PATH and self.DEFAULTS_FILE_NAME: + print("trying DEFAULTS_FILE_PATH and DEFAULTS_FILE_NAME") + self.defaults = os.path.join(self.DEFAULTS_FILE_PATH, self.DEFAULTS_FILE_NAME) + super().__init__(*args, **kwargs) + self._init_values = { + param: data["value"] + for param, data in self.read_params(self.defaults).items() + if param != "schema" + } + if self.JSON_START_YEAR: + self.set_state(year=self.JSON_START_YEAR) + + def adjust(self, params_or_path, **kwargs): + """ + Custom adjust method that handles special indexing logic. The logic + is: + + 1. If "CPI_offset" is adjusted, revert all values of indexed parameters + to the 'known' values: + a. The current values of parameters that are being adjusted are + deleted after the first year in which CPI_offset is adjusted. + b. The current values of parameters that are not being adjusted + (i.e. are not in params) are deleted after the last known year. + After the 'unknown' values have been deleted, the last known value + is extrapolated through the budget window. If there are indexed + parameters in the adjustment, they will be included in the final + adjustment call (unless their indexed status is changed). + 2. If the "indexed" status is updated for any parameter: + a. if a parameter has values that are being adjusted before + the indexed status is adjusted, update those parameters fist. + b. extend the values of that parameter to the year in which + the status is changed. + c. change the the indexed status for the parameter. + d. update parameter values in adjustment that are adjusted after + the year in which the indexed status changes. + e. using the new "-indexed" status, extend the values of that + parameter through the remaining years or until the -indexed + status changes again. + 3. Update all parameters that are not indexing related, i.e. they are + not "CPI_offset" or do not end with "-indexed". + 4. Return parsed adjustment with all adjustments, including "-indexed" + parameters. + + Notable side-effects: + - All values of indexed parameters, including default values, are wiped out after + the first year in which the "CPI_offset" is changed. This is only necessary because + Tax-Calculator hard-codes inflated values. If Tax-Calculator only hard-coded values + that were changed for non-inflation related reasons, then this would not be + necessary for default values. + - All values of a parameter whose indexed status is adjusted are wiped out after the + year in which the value is adjusted for the same hard-coding reason. + """ + min_year = min(self._stateless_label_grid["year"]) + + # turn off extra ops during the intermediary adjustments so that + # expensive and unnecessary operations are not changed. + label_to_extend = self.label_to_extend + array_first = self.array_first + self.array_first = False + + params = self.read_params(params_or_path) + + # Check if CPI_offset is adjusted. If so, reset values of all indexed + # parameters after year where CPI_offset is changed. If CPI_offset is + # changed multiple times, then the reset year is the year in which the + # CPI_offset is first changed. + needs_reset = [] + if params.get("CPI_offset") is not None: + # get first year CPI_offset is adjusted + cpi_adj = super().adjust({"CPI_offset": params["CPI_offset"]}, **kwargs) + # turn off extend now that CPI_offset has been updated. + self.label_to_extend = None + cpi_min_year = min(cpi_adj["CPI_offset"], key=lambda vo: vo["year"]) + # apply new CPI_offset values to inflation rates + rate_adjustment_vals = filter( + lambda vo: vo["year"] >= cpi_min_year["value"], + self._data["CPI_offset"]["value"] + ) + for cpi_vo in rate_adjustment_vals: + self.inflation_rates[cpi_vo["year"]] += cpi_vo["value"] + # 1. delete all unknown values. + # 1.a for revision these are years specified after cpi_min_year + to_delete = {} + to_adjust = {} + for param in params: + if param == "CPI_offset" or param in self.WAGE_INDEXED_PARAMS: + continue + if param.endswith("-indexed"): + param = param.split("-indexed")[0] + # TODO: disting. btw wage and price? + if self._data[param].get("indexed", False): + gt = self.select_gt(param, True, year=cpi_min_year["year"]) + to_delete[param] = list([dict(vo, **{"value": None}) for vo in gt]) + to_adjust[param] = select_lt( + self._init_values[param], + True, + {"year": cpi_min_year["year"] + 1}, + ) + needs_reset.append(param) + super().adjust(to_delete, **kwargs) + super().adjust(to_adjust, **kwargs) + + # 1.b for all others these are years after last_known_year + to_delete = {} + to_adjust = {} + last_known_year = max(cpi_min_year["year"], self.LAST_KNOWN_YEAR) + for param in self._data: + if ( + param in params + or param == "CPI_offset" + or param in self.WAGE_INDEXED_PARAMS + ): + continue + if self._data[param].get("indexed", False): # TODO: see above + gt = self.select_gt(param, True, year=last_known_year) + to_delete[param] = list([dict(vo, **{"value": None}) for vo in gt]) + to_adjust[param] = select_lt( + self._init_values[param], True, {"year": last_known_year + 1} + ) + needs_reset.append(param) + + super().adjust(to_delete, **kwargs) + super().adjust(to_adjust, **kwargs) + + self.extend(label_to_extend="year") + + # 2. handle -indexed parameters + self.label_to_extend = None + index_affected = set([]) + for param, values in params.items(): + if param.endswith("-indexed"): + base_param = param.split("-indexed")[0] + index_affected = index_affected | {param, base_param} + to_index = {} + if isinstance(values, bool): + to_index[min_year] = values + elif isinstance(values, list): + for vo in values: + to_index[vo.get("year", min_year)] = vo["value"] + else: + raise Exception( + "Index adjustment parameter must be a boolean or list." + ) + # 2.a adjust values less than first year in which index status + # was changed + if base_param in params: + min_index_change_year = min(to_index.keys()) + vos = select_lt( + params[base_param], False, {"year": min_index_change_year} + ) + if vos: + min_adj_year = min(vos, key=lambda vo: vo["year"])["year"] + gt = self.select_gt(base_param, True, year=min_adj_year) + super().adjust( + { + base_param: list( + [dict(vo, **{"value": None}) for vo in gt] + ) + } + ) + super().adjust({base_param: vos}, **kwargs) + self.extend( + params=[base_param], + label_to_extend="year", + label_to_extend_values=list( + range(min_year, min_index_change_year) + ), + ) - @property - def start_year(self): - """ - Parameters class first parameter year property. - """ - return self._start_year + for year in sorted(to_index): + indexed_val = to_index[year] + # get and delete all default values after year where indexed status changed. + gte = self.select_gt(base_param, True, year=year) + super().adjust( + {base_param: list([dict(vo, **{"value": None}) for vo in gte])} + ) + + # 2.b extend values for this parameter to the year where the indexed + # status changes. + if year > min_year: + self.extend( + params=[base_param], + label_to_extend="year", + label_to_extend_values=list(range(min_year, year + 1)), + ) - @property - def last_known_year(self): - """ - Parameters class last known parameter year property. - """ - return self._last_known_year + # 2.c set indexed status. + self._data[base_param]["indexed"] = indexed_val - @property - def end_year(self): - """ - Parameters class last parameter year property. - """ - return self._end_year + # 2.d adjust with values greater than or equal to current year + # in params + if base_param in params: + vos = paramtools.select_gt( + params[base_param], False, {"year": year - 1} + ) + super().adjust({base_param: vos}, **kwargs) - def set_year(self, year): - """ - Set parameters to their values for the specified calendar year. + # 2.e extend values throuh remaining years. + self.extend(params=[base_param], label_to_extend="year") - Parameters - ---------- - year: integer - calendar year for which to set current_year and parameter values + needs_reset.append(base_param) + # re-instate ops. + self.label_to_extend = label_to_extend + self.array_first = array_first - Raises - ------ - ValueError: - if year is not in [start_year, end_year] range. + # filter out "-indexed" params + nonindexed_params = { + param: val for param, val in params.items() if param not in index_affected + } - Returns - ------- - nothing: void - """ - if year < self.start_year or year > self.end_year: - msg = 'year {} passed to set_year() must be in [{},{}] range.' - raise ValueError(msg.format(year, self.start_year, self.end_year)) - self._current_year = year - iyr = year - self._start_year - for name in self._vals: - arr = getattr(self, name) - setattr(self, name[1:], arr[iyr]) + needs_reset = set(needs_reset) - set(nonindexed_params.keys()) + if needs_reset: + self._set_state(params=needs_reset) - def metadata(self): - """ - Returns ordered dictionary of all parameter information based on - DEFAULTS_FILE_NAME contents with each parameter's 'start_year', - 'value_yrs', and 'value' key values updated so that they contain - just the current_year information. - """ - mdata = OrderedDict() - for pname, pdata in self._vals.items(): - name = pname[1:] - mdata[name] = pdata - mdata[name]['start_year'] = '{}'.format(self.current_year) - mdata[name]['value_yrs'] = ['{}'.format(self.current_year)] - valraw = getattr(self, name) - if isinstance(valraw, np.ndarray): - val = valraw.tolist() - else: - val = valraw - mdata[name]['value'] = val - return mdata - - @staticmethod - def years_in_revision(revision): - """ - Return list of years in specified revision dictionary, which is - assumed to have a param:year:value format. - """ - assert isinstance(revision, dict) - years = list() - for _, paramdata in revision.items(): - assert isinstance(paramdata, dict) - for year, _ in paramdata.items(): - assert isinstance(year, int) - if year not in years: - years.append(year) - return years + # 3. Do adjustment for all non-indexing related parameters. + adj = super().adjust(nonindexed_params, **kwargs) - # ----- begin private methods of Parameters class ----- + # 4. Add indexing params back for return to user. + adj.update( + {param: val for param, val in params.items() if param in index_affected} + ) + return adj - def _set_default_vals(self, known_years=999999): + def get_index_rate(self, param, label_to_extend_val): """ - Called by initialize method and from some subclass methods. + Initalize indexing data and return the indexing rate value + depending on the parameter name and label_to_extend_val, the value of + label_to_extend. + Returns: rate to use for indexing. """ - # pylint: disable=too-many-branches,too-many-nested-blocks - assert isinstance(known_years, (int, dict)) - if isinstance(known_years, int): - known_years_is_int = True - elif isinstance(known_years, dict): - known_years_is_int = False - for name, data in self._vals.items(): - valtype = data['value_type'] - values = data['value'] - indexed = data.get('indexed', False) - if indexed: - if name in self._wage_indexed: - index_rates = self.wage_growth_rates() - else: - index_rates = self.inflation_rates() - if known_years_is_int: - values = values[:known_years] - else: - values = values[:known_years[name]] - else: - index_rates = None - setattr(self, name, - self._expand_array(values, valtype, - inflate=indexed, - inflation_rates=index_rates, - num_years=self._num_years)) - self.set_year(self._start_year) + if not self.inflation_rates or not self.wage_growth_rates: + self.set_rates() + if param in self.WAGE_INDEXED_PARAMS: + return self.wage_growth_rates[label_to_extend_val] + else: + return self.inflation_rates[label_to_extend_val] - def _update(self, revision_, print_warnings, raise_errors): - """ - Update parameters using specified revision_ dictionary and - leave current_year unchanged. - - Parameters - ---------- - revision_: parameter-changes dictionary in param:year:value format - Each param primary key must be a string; - each year secondary key must be an integer; and - each value item must be either - a real/integer/boolean/string value for a scalar parameter - or - a list of real/integer/boolean/string values for a vector param. - - print_warnings: boolean - if True, prints warnings when parameter_warnings exists; - if False, does not print warnings when parameter_warnings exists - and leaves warning handling to caller of _update method. - - raise_errors: boolean - if True, raises ValueError when parameter_errors exists; - if False, does not raise ValueError when parameter_errors exists - and leaves error handling to caller of _update method. - - Raises - ------ - ValueError: - if revision_ is not a dictionary. - if each revision_ primary key is not a valid parameter name. - if each revision_ secondary key is not an integet. - if minimum year in revision_ is less than current_year. - if maximum year in revision_ is greater than end_year. - if _validate_names_types generates errors - if _validate_values generates errors and raise_errors is True - - Returns - ------- - nothing: void - """ - # pylint: disable=too-many-locals,too-many-branches - # check revisions_ type and whether empty - if not isinstance(revision_, dict): - raise ValueError('ERROR: YYYY PARAM revision_ is not a dictionary') - if not revision_: - return # no revisions provided to update parameters - # convert revision_ to revision with year:param:value format - revision = dict() - for name, namedata in revision_.items(): - if not isinstance(name, str): - msg = 'ERROR: KEY {} is not a string parameter name' - raise ValueError(msg.format(name)) - if not isinstance(namedata, dict): - msg = 'ERROR: KEY {} VAL {} is not a year:value dictionary' - raise ValueError(msg.format(name, namedata)) - for year, yeardata in namedata.items(): - if not isinstance(year, int): - msg = 'ERROR: KEY {} YEAR {} is not an integer year' - raise ValueError(msg.format(name, year)) - if year not in revision: - revision[year] = dict() - revision[year][name] = yeardata - # check range of revision years - revision_years = list(revision.keys()) - first_revision_year = min(revision_years) - if first_revision_year < self.current_year: - msg = 'ERROR: {} YEAR revision provision in YEAR < current_year={}' - raise ValueError(msg.format(first_revision_year, - self.current_year)) - last_revision_year = max(revision_years) - if last_revision_year > self.end_year: - msg = 'ERROR: {} YEAR revision provision in YEAR > end_year={}' - raise ValueError(msg.format(last_revision_year, self.end_year)) - # add leading underscore character to each parameter name in revision - revision = Parameters._add_underscores(revision) - # add brackets around each value element in revision - revision = Parameters._add_brackets(revision) - # validate revision parameter names and types - self.parameter_warnings = '' - self.parameter_errors = '' - self._validate_names_types(revision) - if self.parameter_errors: - raise ValueError(self.parameter_errors) - # optionally apply CPI_offset to inflation_rates and re-initialize - known_years = self._apply_cpi_offset_in_revision(revision) - if known_years is not None: - self._set_default_vals(known_years=known_years) - # implement the revision year by year - precall_current_year = self.current_year - revision_parameters = set() - for year in sorted(revision_years): - self.set_year(year) - revision_parameters.update(revision[year].keys()) - self._update_for_year({year: revision[year]}) - self.set_year(precall_current_year) - # validate revision parameter values - self._validate_values(revision_parameters) - if self.parameter_warnings and print_warnings: - print(self.parameter_warnings) - if self.parameter_errors and raise_errors: - raise ValueError('\n' + self.parameter_errors) - - def _update_for_year(self, year_mods): - """ - Private method used by Parameters._update method. - """ - # pylint: disable=too-many-locals - # check YEAR value in the single YEAR:MODS dictionary parameter - assert isinstance(year_mods, dict) - assert len(year_mods.keys()) == 1 - year = list(year_mods.keys())[0] - assert year == self.current_year - # check that MODS is a dictionary - assert isinstance(year_mods[year], dict) - # implement reform provisions included in the single YEAR:MODS pair - num_years_to_expand = (self.start_year + self.num_years) - year - all_names = set(year_mods[year].keys()) # no duplicate keys in a dict - used_names = set() # set of used parameter names in MODS dict - for name, values in year_mods[year].items(): - # determine indexing status of parameter with name for year - if name.endswith('-indexed'): - continue # handle elsewhere in this method - vals_indexed = self._vals[name].get('indexed', False) - valtype = self._vals[name].get('value_type') - name_plus_indexed = name + '-indexed' - if name_plus_indexed in year_mods[year].keys(): - used_names.add(name_plus_indexed) - indexed = year_mods[year].get(name_plus_indexed) - self._vals[name]['indexed'] = indexed # remember status - else: - indexed = vals_indexed - # set post-reform values of parameter with name - used_names.add(name) - cval = getattr(self, name, None) - wage_indexed_param = name in self._wage_indexed - index_rates = self._indexing_rates_for_update(wage_indexed_param, - year, - num_years_to_expand) - nval = self._expand_array(values, valtype, - inflate=indexed, - inflation_rates=index_rates, - num_years=num_years_to_expand) - cval[(year - self.start_year):] = nval - # handle unused parameter names, all of which end in -indexed, but - # some parameter names ending in -indexed were handled above - unused_names = all_names - used_names - for name in unused_names: - used_names.add(name) - pname = name[:-8] # root parameter name - pindexed = year_mods[year][name] - self._vals[pname]['indexed'] = pindexed # remember status - cval = getattr(self, pname, None) - pvalues = [cval[year - self.start_year]] - wage_indexed_param = pname in self._wage_indexed - index_rates = self._indexing_rates_for_update(wage_indexed_param, - year, - num_years_to_expand) - valtype = self._vals[pname].get('value_type') - nval = self._expand_array(pvalues, valtype, - inflate=pindexed, - inflation_rates=index_rates, - num_years=num_years_to_expand) - cval[(year - self.start_year):] = nval - # confirm that all names have been used - assert len(used_names) == len(all_names) - # implement updated parameters for year - self.set_year(year) - - def _validate_names_types(self, revision): - """ - Check validity of parameter names and parameter types used - in the specified revision dictionary, which is assumed to - have a year:param:value format - """ - # pylint: disable=too-many-branches,too-many-nested-blocks - # pylint: disable=too-many-statements,too-many-locals - assert isinstance(self._vals, dict) - param_names = set(self._vals.keys()) - for year in sorted(revision.keys()): - for name in revision[year]: - if name.endswith('-indexed'): - if isinstance(revision[year][name], bool): - pname = name[:-8] # root parameter name - if pname not in param_names: - if pname in self._removed: - msg = self._removed[pname] - else: - msg = 'is an unknown parameter name' - self.parameter_errors += ( - 'ERROR: {} {} '.format(year, name[1:]) + - msg + '\n' - ) - else: - # check if root parameter is indexable - indexable = self._vals[pname].get('indexable', - False) - if not indexable: - msg = '{} {} parameter is not indexable' - self.parameter_errors += ( - 'ERROR: ' + - msg.format(year, pname[1:]) + '\n' - ) - else: - msg = '{} {} parameter is not true or false' - self.parameter_errors += ( - 'ERROR: ' + msg.format(year, name[1:]) + '\n' - ) - else: # if name does not end with '-indexed' - if name not in param_names: - if name in self._removed: - msg = self._removed[name] - else: - msg = 'is an unknown parameter name' - self.parameter_errors += ( - 'ERROR: {} {} '.format(year, name[1:]) + msg + '\n' - ) - else: - # check parameter value type avoiding use of isinstance - # because isinstance(True, (int,float)) is True, which - # makes it impossible to check float parameters - valtype = self._vals[name]['value_type'] - assert isinstance(revision[year][name], list) - pvalue = revision[year][name][0] - if isinstance(pvalue, list): - scalar = False # parameter value is a list - if not self._vals[name].get('vi_vals', []): - msg = ('{} {} with value {} ' - 'should be a scalar parameter') - self.parameter_errors += ( - 'ERROR: ' + - msg.format(year, name[1:], pvalue) + - '\n' - ) - # following is not true but is needed to - # avoid errors below - scalar = True - else: - scalar = True # parameter value is a scalar - if self._vals[name].get('vi_vals', []): - msg = ('{} {} with value {} ' - 'should be a vector parameter') - self.parameter_errors += ( - 'ERROR: ' + - msg.format(year, name[1:], pvalue) + - '\n' - ) - pvalue = [pvalue] # make scalar a single-item list - # pylint: disable=consider-using-enumerate - for idx in range(0, len(pvalue)): - if scalar: - pname = name - else: - col = self._vals[name]['vi_vals'][idx] - pname = '{}[{}]'.format(name, col) - pval = pvalue[idx] - # pylint: disable=unidiomatic-typecheck - if valtype == 'real': - if type(pval) != float and type(pval) != int: - msg = '{} {} value {} is not a number' - self.parameter_errors += ( - 'ERROR: ' + - msg.format(year, pname[1:], pval) + - '\n' - ) - elif valtype == 'boolean': - if type(pval) != bool: - msg = '{} {} value {} is not boolean' - self.parameter_errors += ( - 'ERROR: ' + - msg.format(year, pname[1:], pval) + - '\n' - ) - elif valtype == 'integer': - if type(pval) != int: - msg = '{} {} value {} is not integer' - self.parameter_errors += ( - 'ERROR: ' + - msg.format(year, pname[1:], pval) + - '\n' - ) - elif valtype == 'string': - if type(pval) != str: - msg = '{} {} value {} is not a string' - self.parameter_errors += ( - 'ERROR: ' + - msg.format(year, pname[1:], pval) + - '\n' - ) - del param_names - - def _validate_values(self, parameters_set): + def set_rates(self): """ - Check values of parameters in specified parameter_set using - range information from DEFAULTS_FILE_NAME JSON file. + This method is implemented by classes inheriting + Parameters. """ - # pylint: disable=too-many-statements,too-many-locals - # pylint: disable=too-many-branches,too-many-nested-blocks - assert isinstance(parameters_set, set) - parameters = sorted(parameters_set) - syr = self.start_year - for pname in parameters: - if pname.endswith('-indexed'): - continue # *-indexed parameter values validated elsewhere - if pname in self._redefined: - msg = self._redefined[pname] - self.parameter_warnings += msg + '\n' - pvalue = getattr(self, pname) - if self._vals[pname]['value_type'] == 'string': - valid_options = self._vals[pname]['valid_values']['options'] - for idx in np.ndindex(pvalue.shape): - if pvalue[idx] not in valid_options: - msg = "{} {} value '{}' not in {}" - fullmsg = '{}: {}\n'.format( - 'ERROR', - msg.format(idx[0] + syr, - pname[1:], - pvalue[idx], - valid_options) - ) - self.parameter_errors += fullmsg - else: # parameter does not have string type - for vop, vval in self._vals[pname]['valid_values'].items(): - if isinstance(vval, str): - vvalue = getattr(self, '_' + vval) - else: - vvalue = np.full(pvalue.shape, vval) - assert pvalue.shape == vvalue.shape - assert len(pvalue.shape) <= 2 - if len(pvalue.shape) == 2: - scalar = False # parameter value is a vector - else: - scalar = True # parameter value is a scalar - for idx in np.ndindex(pvalue.shape): - out_of_range = False - if vop == 'min' and pvalue[idx] < vvalue[idx]: - out_of_range = True - msg = '{} {} value {} < min value {}' - extra = self._vals[pname].get('invalid_minmsg', '') - if extra: - msg += ' {}'.format(extra) - if vop == 'max' and pvalue[idx] > vvalue[idx]: - out_of_range = True - msg = '{} {} value {} > max value {}' - extra = self._vals[pname].get('invalid_maxmsg', '') - if extra: - msg += ' {}'.format(extra) - if out_of_range: - action = self._vals[pname].get('invalid_action', - 'stop') - if scalar: - name = pname - else: - col = self._vals[pname]['vi_vals'][idx[1]] - name = '{}[{}]'.format(pname, col) - if extra: - msg += '[{}]'.format(col) - if action == 'warn': - fullmsg = '{}: {}\n'.format( - 'WARNING', - msg.format(idx[0] + syr, - name, - pvalue[idx], - vvalue[idx]) - ) - self.parameter_warnings += fullmsg - if action == 'stop': - fullmsg = '{}: {}\n'.format( - 'ERROR', - msg.format(idx[0] + syr, - name[1:], - pvalue[idx], - vvalue[idx]) - ) - self.parameter_errors += fullmsg - del parameters + raise NotImplementedError() - STRING_DTYPE = 'U16' + # alias methods - @staticmethod - def _expand_array(xxx, xxx_type, inflate, inflation_rates, num_years): + def _update(self, revision_, print_warnings, raise_errors): """ - Private method called only within this abstract base class. - Dispatch to either _expand_1d or _expand_2d given dimension of xxx. - - Parameters - ---------- - xxx : value to expand - xxx must be either a scalar list or a 1D numpy array, or - xxx must be either a list of scalar lists or a 2D numpy array - - xxx_type : string ('real', 'boolean', 'integer', 'string') + A translation layer on top of Parameters.adjust. Projects + that have historically used the `_update` method with + Tax-Calculator styled adjustments can continue to do so + without making any changes to how they handle adjustments. - inflate: boolean - As we expand, inflate values if this is True, otherwise, just copy + Converts reforms that are compatible with Tax-Calculator: - inflation_rates: list of inflation rates - Annual decimal inflation rates + adjustment = { + "standard_deduction": {2024: [10000.0, 10000.0]}, + "ss_rate": {2024: 0.2} + } - num_years: int - Number of budget years to expand + into reforms that are compatible with ParamTools: - Returns - ------- - expanded numpy array with specified type - """ - assert isinstance(xxx, (list, np.ndarray)) - if isinstance(xxx, list): - if xxx_type == 'real': - xxx = np.array(xxx, np.float64) - elif xxx_type == 'boolean': - xxx = np.array(xxx, np.bool_) - elif xxx_type == 'integer': - xxx = np.array(xxx, np.int16) - elif xxx_type == 'string': - xxx = np.array(xxx, np.dtype(Parameters.STRING_DTYPE)) - assert len(xxx.shape) == 1, \ - 'string parameters must be scalar (not vector)' - dim = len(xxx.shape) - assert dim in (1, 2) - if dim == 1: - return Parameters._expand_1d(xxx, inflate, inflation_rates, - num_years) - return Parameters._expand_2d(xxx, inflate, inflation_rates, - num_years) + { + 'standard_deduction': [ + {'year': 2024, 'marital_status': 'single', 'value': 10000.0}, + {'year': 2024, 'marital_status': 'joint', 'value': 10000.0} + ], + 'ss_rate': [{'value': 0.2}]} + } - @staticmethod - def _expand_1d(xxx, inflate, inflation_rates, num_years): - """ - Private method called only from _expand_array method. - Expand the given data xxx to account for given number of budget years. - If necessary, pad out additional years by increasing the last given - year using the given inflation_rates list. """ - if not isinstance(xxx, np.ndarray): - raise ValueError('_expand_1d expects xxx to be a numpy array') - if len(xxx) >= num_years: - return xxx - string_type = xxx.dtype == Parameters.STRING_DTYPE - if string_type: - ans = np.array(['' for i in range(0, num_years)], - dtype=xxx.dtype) - else: - ans = np.zeros(num_years, dtype=xxx.dtype) - ans[:len(xxx)] = xxx - if string_type: - extra = [str(xxx[-1]) for i in - range(1, num_years - len(xxx) + 1)] - else: - if inflate: - extra = [] - cur = xxx[-1] - for i in range(0, num_years - len(xxx)): - cur *= (1. + inflation_rates[i + len(xxx) - 1]) - cur = round(cur, 2) if cur < 9e99 else 9e99 - extra.append(cur) + if not isinstance(revision_, dict): + raise paramtools.ValidationError({"schema": "Revision must be a dictionary."}, None) + new_params = defaultdict(list) + # save shallow copy of current instance state + cur_state = dict(self.view_state()) + for param, val in revision_.items(): + if not isinstance(param, str): + raise paramtools.ValidationError({"schema": f"Parameter {param} is not a string."}, None) + if param not in self._data and param.split("-indexed")[0] not in self._data: + raise paramtools.ValidationError({"schema": f"Parameter {param} does not exist."}, None) + if param.endswith("-indexed"): + for year, yearval in val.items(): + new_params[param] += [{"year": year, "value": yearval}] + elif isinstance(val, dict): + for year, yearval in val.items(): + ndims = getattr(self, param).ndim + yearval = np.array(yearval) + short_dims = ndims - yearval.ndim + yearval = yearval.reshape( + (*(1, ) * short_dims, *yearval.shape) + ) + self.set_state(year=year) + try: + yearval = self.from_array(param, yearval) + except IndexError: + raise paramtools.ValidationError({"schema": f"Pameter {param} does not have the correct array dimensions for year {year}."}, None) + new_params[param] += yearval else: - extra = [float(xxx[-1]) for i in - range(1, num_years - len(xxx) + 1)] - ans[len(xxx):] = extra - return ans + raise paramtools.ValidationError({"schema": f"Parameter {param} must be a year:value dictionary if you are not using the new adjust method."}, None) + self.set_state(**cur_state) + return self.adjust(new_params, raise_errors=raise_errors) - @staticmethod - def _expand_2d(xxx, inflate, inflation_rates, num_years): - """ - Private method called only from _expand_array method. - Expand the given data to account for the given number of budget years. - For 2D arrays, we expand out the number of rows until we have num_years - number of rows. For each expanded row, we inflate using the given - inflation rates list. - """ - if not isinstance(xxx, np.ndarray): - raise ValueError('_expand_2d expects xxx to be a numpy array') - if xxx.shape[0] >= num_years: - return xxx - ans = np.zeros((num_years, xxx.shape[1]), dtype=xxx.dtype) - ans[:len(xxx), :] = xxx - for i in range(xxx.shape[0], ans.shape[0]): - for j in range(ans.shape[1]): - if inflate: - cur = (ans[i - 1, j] * - (1. + inflation_rates[i - 1])) - cur = round(cur, 2) if cur < 9e99 else 9e99 - ans[i, j] = cur - else: - ans[i, j] = ans[i - 1, j] - return ans + def set_year(self, year): + self.set_state(year=year) - def _indexing_rates_for_update(self, param_is_wage_indexed, - calyear, num_years_to_expand): - """ - Private method called only by the private Parameter._update method. - """ - if param_is_wage_indexed: - rates = self.wage_growth_rates() - else: - rates = self.inflation_rates() - if rates: - expanded_rates = [rates[(calyear - self.start_year) + i] - for i in range(0, num_years_to_expand)] - return expanded_rates - return None + @property + def current_year(self): + return self.label_grid["year"][0] - @staticmethod - def _add_underscores(update_dict): - """ - Returns dictionary that adds leading underscore character to - each parameter name in specified update_dict, which is assumed - to have a year:param:value format. - """ - updict = dict() - for year, yeardata in update_dict.items(): - updict[year] = dict() - for pname, pvalue in yeardata.items(): - updict[year]['_' + pname] = pvalue - return updict + @property + def start_year(self): + return self._stateless_label_grid["year"][0] - @staticmethod - def _add_brackets(update_dict): - """ - Returns dictionary that adds brackets around each - data element (value) in specified update_dict, which - is assumed to have a year:param:value format. - """ - updict = dict() - for year, yeardata in update_dict.items(): - updict[year] = dict() - for pname, pvalue in yeardata.items(): - if pname.endswith('-indexed'): - updict[year][pname] = pvalue # no added brackets - else: - updict[year][pname] = [pvalue] - return updict + @property + def end_year(self): + return self._stateless_label_grid["year"][-1] - def _apply_cpi_offset_to_inflation_rates(self): - """ - Called from Parameters.initialize method. - Does nothing if CPI_offset parameter is not in self._vals dictionary. - """ - if '_CPI_offset' not in self._vals: - return - nyrs = self.num_years - ovalues = self._vals['_CPI_offset']['value'] - if len(ovalues) < nyrs: # extrapolate last known value - ovalues = ovalues + ovalues[-1:] * (nyrs - len(ovalues)) - for idx in range(0, nyrs): - infrate = round(self._inflation_rates[idx] + ovalues[idx], 6) - self._inflation_rates[idx] = infrate - - def _apply_cpi_offset_in_revision(self, revision): - """ - Apply CPI offset to inflation rates and - revert indexed parameter values in preparation for re-indexing. - Also, return known_years which is dictionary with indexed policy - parameter names as keys and known_years as values. For indexed - parameters included in revision, the known_years value is equal to: - (first_cpi_offset_year - start_year + 1). For indexed parameters - not included in revision, the known_years value is equal to: - (max(first_cpi_offset_year, last_known_year) - start_year + 1). - """ - # pylint: disable=too-many-branches - # determine if CPI_offset is in specified revision; if not, return - cpi_offset_in_revision = False - for year in revision: - for name in revision[year]: - if name == '_CPI_offset': - cpi_offset_in_revision = True - break # out of loop - if not cpi_offset_in_revision: - return None - # extrapolate CPI_offset revision - self.set_year(self.start_year) - first_cpi_offset_year = 0 - for year in sorted(revision.keys()): - self.set_year(year) - if '_CPI_offset' in revision[year]: - if first_cpi_offset_year == 0: - first_cpi_offset_year = year - orevision = {'_CPI_offset': revision[year]['_CPI_offset']} - self._update_for_year({year: orevision}) - self.set_year(self.start_year) - assert first_cpi_offset_year > 0 - # adjust inflation rates - cpi_offset = getattr(self, '_CPI_offset') - for idx in range(0, self.num_years): - infrate = round(self._inflation_rates[idx] + cpi_offset[idx], 6) - self._inflation_rates[idx] = infrate - # revert indexed parameter values to policy_current_law.json values - for name in self._vals.keys(): - if self._vals[name]['indexed']: - setattr(self, name, self._vals[name]['value']) - # construct and return known_years dictionary - known_years = dict() - kyrs_in_revision = (first_cpi_offset_year - self.start_year + 1) - kyrs_not_in_revision = ( - max(first_cpi_offset_year, self.last_known_year) - - self.start_year + 1 - ) - for year in sorted(revision.keys()): - for name in revision[year]: - if name.endswith('-indexed'): - name = name[:-8] - if self._vals[name]['indexed']: - if name not in known_years: - known_years[name] = kyrs_in_revision - for name in self._vals.keys(): - if self._vals[name]['indexed']: - if name not in known_years: - known_years[name] = kyrs_not_in_revision - return known_years + @property + def num_years(self): + return self.end_year - self.start_year + 1 + + @property + def parameter_warnings(self): + # TODO: taxcalc expects string errors when empty. + # TODO: paramtools doesn't do errors. + return self.errors or "" + + @property + def parameter_errors(self): + # TODO: taxcalc expects string errors when empty. + return self.errors or "" @staticmethod def _read_json_revision(obj, topkey): @@ -864,12 +375,10 @@ def _read_json_revision(obj, topkey): Read JSON revision specified by obj and topkey returning a single revision dictionary suitable for use with the Parameters._update method. - The obj function argument can be None or a string, where the string contains a local filename, a URL beginning with 'http' pointing to a valid JSON file hosted online, or valid JSON text. - The topkey argument must be a string containing the top-level key in a compound-revision JSON text for which a revision dictionary is returned. If the specified topkey is not among @@ -926,3 +435,36 @@ def convert_year_to_int(syr_dict): single_dict = full_dict # convert string year to integer year in dictionary and return return convert_year_to_int(single_dict) + + def metadata(self): + return self.dump() + + @staticmethod + def years_in_revision(revision): + """ + Return list of years in specified revision dictionary, which is + assumed to have a param:year:value format. + """ + assert isinstance(revision, dict) + years = list() + for _, paramdata in revision.items(): + assert isinstance(paramdata, dict) + for year, _ in paramdata.items(): + assert isinstance(year, int) + if year not in years: + years.append(year) + return years + + def __getattr__(self, attr): + """ + Allows the user to get the value of a parameter over all years, + not just the ones that are active. + """ + if attr.startswith("_") and attr[1:] in super().__getattribute__("_data"): + state = dict(self.view_state()) + self.clear_state() + value = getattr(self, attr[1:]) + self.set_state(**state) + return value + else: + raise AttributeError(f"{attr} not definied.") diff --git a/taxcalc/policy.py b/taxcalc/policy.py index c16fd9b47..41aec353f 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -6,6 +6,8 @@ # pylint --disable=locally-disabled policy.py import os +import json +import numpy as np from taxcalc.parameters import Parameters from taxcalc.growfactors import GrowFactors @@ -68,14 +70,10 @@ class instance: Policy '_CTC_c': 'CTC_c was redefined in release 1.0.0' } # (3) specify which Policy parameters are wage (rather than price) indexed - WAGE_INDEXED_PARAMS = [ - '_SS_Earnings_c', - '_SS_Earnings_thd' - ] + WAGE_INDEXED_PARAMS = ['SS_Earnings_c', 'SS_Earnings_thd'] def __init__(self, gfactors=None, only_reading_defaults=False): # put JSON contents of DEFAULTS_FILE_NAME into self._vals dictionary - super().__init__() if only_reading_defaults: return # handle gfactors argument @@ -85,28 +83,9 @@ def __init__(self, gfactors=None, only_reading_defaults=False): self._gfactors = gfactors else: raise ValueError('gfactors is not None or a GrowFactors instance') - # read default parameters and initialize - syr = Policy.JSON_START_YEAR - lyr = Policy.LAST_BUDGET_YEAR - nyrs = Policy.DEFAULT_NUM_YEARS - self._inflation_rates = self._gfactors.price_inflation_rates(syr, lyr) - self._wage_growth_rates = self._gfactors.wage_growth_rates(syr, lyr) - self.initialize(syr, nyrs, Policy.LAST_KNOWN_YEAR, - Policy.REMOVED_PARAMS, - Policy.REDEFINED_PARAMS, - Policy.WAGE_INDEXED_PARAMS) - - def inflation_rates(self): - """ - Returns list of price inflation rates starting with JSON_START_YEAR. - """ - return self._inflation_rates - def wage_growth_rates(self): - """ - Returns list of wage growth rates starting with JSON_START_YEAR. - """ - return self._wage_growth_rates + super().__init__() + @staticmethod def read_json_reform(obj): @@ -121,18 +100,39 @@ def read_json_reform(obj): def implement_reform(self, reform, print_warnings=True, raise_errors=True): """ - Implement specified policy reform and leave current_year unchanged. - See Parameters._update for argument documentation and details about - the expected structure of the reform dictionary. + Implement reform using Tax-Calculator syled reforms/adjustments. Users + may also use the adjust method with ParamTools styled reforms. """ - self._update(reform, print_warnings, raise_errors) + # need to do conversion: + return self._update(reform, print_warnings=print_warnings, raise_errors=raise_errors) @staticmethod def parameter_list(): """ Returns list of parameter names in the policy_current_law.json file. """ - policy = Policy(only_reading_defaults=True) - plist = list(policy._vals.keys()) # pylint: disable=protected-access - del policy - return plist + path = os.path.join(Policy.DEFAULTS_FILE_PATH, Policy.DEFAULTS_FILE_NAME) + with open(path) as f: + defaults = json.loads(f.read()) # pylint: disable=protected-access + return [k for k in defaults if k!= "schema"] + + def set_rates(self): + """Initialize taxcalc indexing data.""" + cpi_vals = [vo["value"] for vo in self._data["CPI_offset"]["value"]] + # extend cpi_offset values through budget window if they + # have not been extended already. + cpi_vals = cpi_vals + cpi_vals[-1:] * (2029 - 2013 + 1 - len(cpi_vals)) + cpi_offset = {(2013 + ix): val for ix, val in enumerate(cpi_vals)} + + if not self._gfactors: + self._gfactors = GrowFactors() + + self.inflation_rates = { + 2013 + ix: np.round(rate + cpi_offset[2013 + ix], 4) + for ix, rate in enumerate(self._gfactors.price_inflation_rates(2013, 2029)) + } + + self.wage_growth_rates = { + 2013 + ix: rate + for ix, rate in enumerate(self._gfactors.wage_growth_rates(2013, 2029)) + } diff --git a/taxcalc/policy_current_law.json b/taxcalc/policy_current_law.json index b5dd1808d..858e45a1a 100644 --- a/taxcalc/policy_current_law.json +++ b/taxcalc/policy_current_law.json @@ -1,6588 +1,19249 @@ { + "schema": { + "labels": { + "year": { + "type": "int", + "validators": { + "range": { + "min": 2013, + "max": 2029 + } + } + }, + "MARS": { + "type": "str", + "validators": { + "choice": { + "choices": [ + "single", + "mjoint", + "mseparate", + "headhh", + "widow" + ] + } + } + }, + "idedtype": { + "type": "str", + "validators": { + "choice": { + "choices": [ + "med", + "sltx", + "retx", + "cas", + "misc", + "int", + "char" + ] + } + } + }, + "EIC": { + "type": "str", + "validators": { + "choice": { + "choices": [ + "0kids", + "1kid", + "2kids", + "3+kids" + ] + } + } + } + }, + "additional_members": { + "section_1": { + "type": "str" + }, + "section_2": { + "type": "str" + }, + "start_year": { + "type": "int" + }, + "indexable": { + "type": "bool" + }, + "indexed": { + "type": "bool" + } + } + }, "CPI_offset": { - "long_name": "Decimal offset ADDED to unchained CPI to get parameter indexing rate", - "description": "Values are zero before 2017; reforms that introduce indexing with chained CPI would have values around -0.0025 beginning in the year before the first year policy parameters will have values computed with chained CPI.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": -0.0025 + } + ], + "title": "Decimal offset ADDED to unchained CPI to get parameter indexing rate", + "type": "float", + "validators": { + "range": { + "min": -0.005, + "max": 0.005 + } + }, "section_1": "Parameter Indexing", "section_2": "Offsets", - "irs_ref": "", - "notes": "See April 2013 CBO report entitled 'What Would Be the Effect on the Deficit of Using the Chained CPI to Index Benefit Programs and the Tax Code?', which includes this: 'The chained CPI grows more slowly than the traditional CPI does: an average of about 0.25 percentage points more slowly per year over the past decade.' ", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - -0.0025], - "valid_values": {"min": -0.005, "max": 0.005}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Values are zero before 2017; reforms that introduce indexing with chained CPI would have values around -0.0025 beginning in the year before the first year policy parameters will have values computed with chained CPI.", + "notes": "See April 2013 CBO report entitled 'What Would Be the Effect on the Deficit of Using the Chained CPI to Index Benefit Programs and the Tax Code?', which includes this: 'The chained CPI grows more slowly than the traditional CPI does: an average of about 0.25 percentage points more slowly per year over the past decade.' " + }, "FICA_ss_trt": { - "long_name": "Social Security payroll tax rate", - "description": "Social Security FICA rate, including both employer and employee.", + "value": [ + { + "year": 2013, + "value": 0.124 + } + ], + "title": "Social Security payroll tax rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Payroll Taxes", "section_2": "Social Security FICA", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.124], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Social Security FICA rate, including both employer and employee.", + "notes": "" + }, "SS_Earnings_c": { - "long_name": "Maximum taxable earnings (MTE) for Social Security", - "description": "Individual earnings below this amount are subjected to Social Security (OASDI) payroll tax.", + "value": [ + { + "year": 2013, + "value": 113700.0 + }, + { + "year": 2014, + "value": 117000.0 + }, + { + "year": 2015, + "value": 118500.0 + }, + { + "year": 2016, + "value": 118500.0 + }, + { + "year": 2017, + "value": 127200.0 + }, + { + "year": 2018, + "value": 128400.0 + } + ], + "title": "Maximum taxable earnings (MTE) for Social Security", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Payroll Taxes", "section_2": "Social Security FICA", - "irs_ref": "W-2, Box 4, instructions", - "notes": "This parameter is indexed by the rate of growth in average wages, not by the price inflation rate.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [113700.0, - 117000.0, - 118500.0, - 118500.0, - 127200.0, - 128400.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Individual earnings below this amount are subjected to Social Security (OASDI) payroll tax.", + "notes": "This parameter is indexed by the rate of growth in average wages, not by the price inflation rate." + }, "SS_Earnings_thd": { - "long_name": "Additional Taxable Earnings Threshold for Social Security", - "description": "Individual earnings above this threshold are subjected to Social Security (OASDI) payroll tax, in addition to earnings below the maximum taxable earnings threshold.", + "value": [ + { + "year": 2013, + "value": 9e+99 + } + ], + "title": "Additional Taxable Earnings Threshold for Social Security", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Payroll Taxes", "section_2": "Social Security FICA", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [9e99], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Individual earnings above this threshold are subjected to Social Security (OASDI) payroll tax, in addition to earnings below the maximum taxable earnings threshold.", + "notes": "" + }, "FICA_mc_trt": { - "long_name": "Medicare payroll tax rate", - "description": "Medicare FICA rate, including both employer and employee.", + "value": [ + { + "year": 2013, + "value": 0.029 + } + ], + "title": "Medicare payroll tax rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Payroll Taxes", "section_2": "Medicare FICA", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.029], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Medicare FICA rate, including both employer and employee.", + "notes": "" + }, "AMEDT_ec": { - "long_name": "Additional Medicare tax earnings exclusion", - "description": "The Additional Medicare Tax rate, AMEDT_rt, applies to all earnings in excess of this excluded amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 250000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 125000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 200000.0 + } + ], + "title": "Additional Medicare tax earnings exclusion", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Payroll Taxes", "section_2": "Additional Medicare FICA", - "irs_ref": "Form 8959, line 5, in-line. ", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[200000.0, 250000.0, 125000.0, 200000.0, 200000.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The Additional Medicare Tax rate, AMEDT_rt, applies to all earnings in excess of this excluded amount.", + "notes": "" + }, "AMEDT_rt": { - "long_name": "Additional Medicare tax rate", - "description": "This is the rate applied to the portion of Medicare wages, RRTA compensation and self-employment income exceeding the Additional Medicare Tax earning exclusion.", + "value": [ + { + "year": 2013, + "value": 0.009 + } + ], + "title": "Additional Medicare tax rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Payroll Taxes", "section_2": "Additional Medicare FICA", - "irs_ref": "Form 8959, line 7, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.009], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This is the rate applied to the portion of Medicare wages, RRTA compensation and self-employment income exceeding the Additional Medicare Tax earning exclusion.", + "notes": "" + }, "SS_thd50": { - "long_name": "Threshold for Social Security benefit taxability 1", - "description": "The first threshold for Social Security benefit taxability: if taxpayers have provisional income greater than this threshold, up to 50% of their Social Security benefit will be subject to tax under current law.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 25000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 32000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 25000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 25000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 25000.0 + } + ], + "title": "Threshold for Social Security benefit taxability 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "SS_thd85" + } + }, "section_1": "Social Security Taxability", "section_2": "Threshold For Social Security Benefit Taxability 1", - "irs_ref": "Form 1040, line 5a&b, calculation (Worksheet, line 8)", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[25000.0, 32000.0, 25000.0, 25000.0, 25000.0]], - "valid_values": {"min": 0, "max": "SS_thd85"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for SS_thd85", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The first threshold for Social Security benefit taxability: if taxpayers have provisional income greater than this threshold, up to 50% of their Social Security benefit will be subject to tax under current law.", + "notes": "" + }, "SS_percentage1": { - "long_name": "Social Security taxable income decimal fraction 1", - "description": "Under current law if their provisional income is above the first threshold for Social Security taxability but below the second threshold, taxpayers need to apply this fraction to both the excess of their provisional income over the first threshold and their Social Security benefits, and then include the smaller one in their AGI.", + "value": [ + { + "year": 2013, + "value": 0.5 + } + ], + "title": "Social Security taxable income decimal fraction 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 1040, line 5b, instructions (Social Security Worksheets, line 2 & 13)", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.5], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Under current law if their provisional income is above the first threshold for Social Security taxability but below the second threshold, taxpayers need to apply this fraction to both the excess of their provisional income over the first threshold and their Social Security benefits, and then include the smaller one in their AGI.", + "notes": "" + }, "SS_thd85": { - "long_name": "Threshold for Social Security benefit taxability 2", - "description": "The second threshold for Social Security taxability: if taxpayers have provisional income greater than this threshold, up to 85% of their Social Security benefit will be subject to tax under current law.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 34000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 44000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 34000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 34000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 34000.0 + } + ], + "title": "Threshold for Social Security benefit taxability 2", + "type": "float", + "validators": { + "range": { + "min": "SS_thd50", + "max": 9e+99 + } + }, "section_1": "Social Security Taxability", "section_2": "Threshold For Social Security Benefit Taxability 2", - "irs_ref": "Form 1040, line 5a&b, calculation (Worksheet, add line 10 values to line 8).", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[34000.0, 44000.0, 34000.0, 34000.0, 34000.0]], - "valid_values": {"min": "SS_thd50", "max": 9e99}, - "invalid_minmsg": "for SS_thd50", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The second threshold for Social Security taxability: if taxpayers have provisional income greater than this threshold, up to 85% of their Social Security benefit will be subject to tax under current law.", + "notes": "" + }, "SS_percentage2": { - "long_name": "Social Security taxable income decimal fraction 2", - "description": "Under current law if their provisional income is above the second threshold for Social Security taxability, taxpayers need to apply this fraction to both the excess of their provisional income over the second threshold and their social security benefits, and then include the smaller one in their AGI.", + "value": [ + { + "year": 2013, + "value": 0.85 + } + ], + "title": "Social Security taxable income decimal fraction 2", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 1040, line 5b, instructions (Social Security Worksheets, line 15)", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.85], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Under current law if their provisional income is above the second threshold for Social Security taxability, taxpayers need to apply this fraction to both the excess of their provisional income over the second threshold and their social security benefits, and then include the smaller one in their AGI.", + "notes": "" + }, "ALD_StudentLoan_hc": { - "long_name": "Adjustment for student loan interest haircut", - "description": "This decimal fraction can be applied to limit the student loan interest adjustment allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Adjustment for student loan interest haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 1), line 33", - "notes": "The final adjustment amount will be (1-Haircut)*StudentLoanInterest.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This decimal fraction can be applied to limit the student loan interest adjustment allowed.", + "notes": "The final adjustment amount will be (1-Haircut)*StudentLoanInterest." + }, "ALD_SelfEmploymentTax_hc": { - "long_name": "Adjustment for self-employment tax haircut", - "description": "This decimal fraction, if greater than zero, reduces the employer equivalent portion of self-employment adjustment.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Adjustment for self-employment tax haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 4), line 57", - "notes": "The final adjustment amount would be (1-Haircut)*SelfEmploymentTaxAdjustment.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This decimal fraction, if greater than zero, reduces the employer equivalent portion of self-employment adjustment.", + "notes": "The final adjustment amount would be (1-Haircut)*SelfEmploymentTaxAdjustment." + }, "ALD_SelfEmp_HealthIns_hc": { - "long_name": "Adjustment for self employed health insurance haircut", - "description": "This decimal fraction, if greater than zero, reduces the health insurance adjustment for self-employed taxpayers.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Adjustment for self employed health insurance haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 4), line 61", - "notes": "The final adjustment amount would be (1-Haircut)*SelfEmployedHealthInsuranceAdjustment.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This decimal fraction, if greater than zero, reduces the health insurance adjustment for self-employed taxpayers.", + "notes": "The final adjustment amount would be (1-Haircut)*SelfEmployedHealthInsuranceAdjustment." + }, "ALD_KEOGH_SEP_hc": { - "long_name": "Adjustment for contributions to either KEOGH or SEP plan haircut", - "description": "Under current law, contributions to Keogh or SEP plans can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Adjustment for contributions to either KEOGH or SEP plan haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 1), line 28", - "notes": "The final adjustment amount is (1-Haircut)*KEOGH_SEP_Contributinos.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Under current law, contributions to Keogh or SEP plans can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", + "notes": "The final adjustment amount is (1-Haircut)*KEOGH_SEP_Contributinos." + }, "ALD_EarlyWithdraw_hc": { - "long_name": "Adjustment for early withdrawal penalty haircut", - "description": "Under current law, early withdraw penalty can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Adjustment for early withdrawal penalty haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 1), line 30", - "notes": "The final adjustment amount is (1-Haircut)*EarlyWithdrawPenalty.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "Under current law, early withdraw penalty can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", + "notes": "The final adjustment amount is (1-Haircut)*EarlyWithdrawPenalty." + }, "ALD_AlimonyPaid_hc": { - "long_name": "Adjustment for alimony-paid haircut", - "description": "Under pre-TCJA law, the full amount of alimony paid is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 1.0 + }, + { + "year": 2020, + "value": 1.0 + }, + { + "year": 2021, + "value": 1.0 + }, + { + "year": 2022, + "value": 1.0 + }, + { + "year": 2023, + "value": 1.0 + }, + { + "year": 2024, + "value": 1.0 + }, + { + "year": 2025, + "value": 1.0 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Adjustment for alimony-paid haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 1), line 31", - "notes": "The final adjustment amount would be (1-Haircut)*AlimonyPaid.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "Under pre-TCJA law, the full amount of alimony paid is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", + "notes": "The final adjustment amount would be (1-Haircut)*AlimonyPaid." + }, "ALD_AlimonyReceived_hc": { - "long_name": "Adjustment for alimony-received haircut", - "description": "Under pre-TCJA law, none of alimony received is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", + "value": [ + { + "year": 2013, + "value": 1.0 + }, + { + "year": 2014, + "value": 1.0 + }, + { + "year": 2015, + "value": 1.0 + }, + { + "year": 2016, + "value": 1.0 + }, + { + "year": 2017, + "value": 1.0 + }, + { + "year": 2018, + "value": 1.0 + }, + { + "year": 2019, + "value": 0.0 + }, + { + "year": 2020, + "value": 0.0 + }, + { + "year": 2021, + "value": 0.0 + }, + { + "year": 2022, + "value": 0.0 + }, + { + "year": 2023, + "value": 0.0 + }, + { + "year": 2024, + "value": 0.0 + }, + { + "year": 2025, + "value": 0.0 + }, + { + "year": 2026, + "value": 1.0 + } + ], + "title": "Adjustment for alimony-received haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 1), line 11 (new with TCJA)", - "notes": "The final adjustment amount would be (1-Haircut)*AlimonyReceived.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Under pre-TCJA law, none of alimony received is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", + "notes": "The final adjustment amount would be (1-Haircut)*AlimonyReceived." + }, "ALD_EducatorExpenses_hc": { - "long_name": "Deduction for educator expenses haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of educator expenses that can be deducted from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Deduction for educator expenses haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "", - "notes": "The final adjustment amount would be (1-Haircut)*EducatorExpenses.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of educator expenses that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*EducatorExpenses." + }, "ALD_HSADeduction_hc": { - "long_name": "Deduction for HSA deduction haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of a taxpayer's HSA deduction that can be deducted from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Deduction for HSA deduction haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "", - "notes": "The final adjustment amount would be (1-Haircut)*HSA_Deduction.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of a taxpayer's HSA deduction that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*HSA_Deduction." + }, "ALD_IRAContributions_hc": { - "long_name": "Deduction for IRA contributions haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of IRA contributions that can be deducted from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Deduction for IRA contributions haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "", - "notes": "The final adjustment amount would be (1-Haircut)*IRA_Contribution.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of IRA contributions that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*IRA_Contribution." + }, "ALD_DomesticProduction_hc": { - "long_name": "Deduction for domestic production activity haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of domestic production activity that can be deducted from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 1.0 + }, + { + "year": 2019, + "value": 1.0 + }, + { + "year": 2020, + "value": 1.0 + }, + { + "year": 2021, + "value": 1.0 + }, + { + "year": 2022, + "value": 1.0 + }, + { + "year": 2023, + "value": 1.0 + }, + { + "year": 2024, + "value": 1.0 + }, + { + "year": 2025, + "value": 1.0 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Deduction for domestic production activity haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "", - "notes": "The final adjustment amount would be (1-Haircut)*DomesticProductionActivity.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of domestic production activity that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*DomesticProductionActivity." + }, "ALD_Tuition_hc": { - "long_name": "Deduction for tuition and fees haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of tuition and fees that can be deducted from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 1.0 + } + ], + "title": "Deduction for tuition and fees haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "", - "notes": "The final adjustment amount would be (1-Haircut)*TuitionFees.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of tuition and fees that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*TuitionFees." + }, "ALD_InvInc_ec_rt": { - "long_name": "Investment income exclusion rate haircut", - "description": "Decimal fraction of investment income base that can be excluded from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Investment income exclusion rate haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Exclusions", - "irs_ref": "Form 1040, line 2a", - "notes": "The final taxable investment income will be (1-_ALD_InvInc_ec_rt)*investment_income_base. Even though the excluded portion of investment income is not included in AGI, it still is included in investment income used to calculate the Net Investment Income Tax and Earned Income Tax Credit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Decimal fraction of investment income base that can be excluded from AGI.", + "notes": "The final taxable investment income will be (1-_ALD_InvInc_ec_rt)*investment_income_base. Even though the excluded portion of investment income is not included in AGI, it still is included in investment income used to calculate the Net Investment Income Tax and Earned Income Tax Credit." + }, "ALD_Dependents_hc": { - "long_name": "Deduction for childcare costs haircut", - "description": "This decimal fraction, if greater than zero, reduces the portion of childcare costs that can be deducted from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Deduction for childcare costs haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Child And Elderly Care", - "irs_ref": "", - "notes": "The final adjustment would be (1-Haircut)*AverageChildcareCosts.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This decimal fraction, if greater than zero, reduces the portion of childcare costs that can be deducted from AGI.", + "notes": "The final adjustment would be (1-Haircut)*AverageChildcareCosts." + }, "ALD_Dependents_Child_c": { - "long_name": "National average childcare costs: ceiling for available childcare deduction.", - "description": "The weighted average of childcare costs in the US. 7165 is the weighted average from the 'Child Care in America: 2016 State Fact Sheets'.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + } + ], + "title": "National average childcare costs: ceiling for available childcare deduction.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Above The Line Deductions", "section_2": "Child And Elderly Care", - "irs_ref": "", - "notes": "This is a weighted average of childcare costs in each state", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The weighted average of childcare costs in the US. 7165 is the weighted average from the 'Child Care in America: 2016 State Fact Sheets'.", + "notes": "This is a weighted average of childcare costs in each state" + }, "ALD_Dependents_Elder_c": { - "long_name": "Ceiling for elderly care deduction proposed in Trump's tax plan", - "description": "A taxpayer can take an above the line deduction up to this amount if they have an elderly dependent. The Trump 2016 campaign proposal was for $5000.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + } + ], + "title": "Ceiling for elderly care deduction proposed in Trump's tax plan", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Above The Line Deductions", "section_2": "Child And Elderly Care", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "A taxpayer can take an above the line deduction up to this amount if they have an elderly dependent. The Trump 2016 campaign proposal was for $5000.", + "notes": "" + }, "ALD_Dependents_thd": { - "long_name": "Maximum level of income to qualify for the dependent care deduction", - "description": "A taxpayer can only claim the dependent care deduction if their total income is below this level. The Trump 2016 campaign proposal was for 250000 single, 500000 joint, 250000 separate, 500000 head of household].", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Maximum level of income to qualify for the dependent care deduction", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Above The Line Deductions", "section_2": "Child And Elderly Care", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "A taxpayer can only claim the dependent care deduction if their total income is below this level. The Trump 2016 campaign proposal was for 250000 single, 500000 joint, 250000 separate, 500000 head of household].", + "notes": "" + }, "ALD_BusinessLosses_c": { - "long_name": "Maximum amount of business losses deductible", - "description": "Business losses in excess of this amount may not be deducted from AGI.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 250000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 250000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 250000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 500000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 255600.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 511200.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 255600.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 255600.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 511200.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 260354.16 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 520708.32 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 260354.16 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 260354.16 + }, + { + "year": 2020, + "MARS": "widow", + "value": 520708.32 + }, + { + "year": 2021, + "MARS": "single", + "value": 266420.41 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 532840.82 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 266420.41 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 266420.41 + }, + { + "year": 2021, + "MARS": "widow", + "value": 532840.82 + }, + { + "year": 2022, + "MARS": "single", + "value": 272521.44 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 545042.88 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 272521.44 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 272521.44 + }, + { + "year": 2022, + "MARS": "widow", + "value": 545042.88 + }, + { + "year": 2023, + "MARS": "single", + "value": 278734.93 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 557469.86 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 278734.93 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 278734.93 + }, + { + "year": 2023, + "MARS": "widow", + "value": 557469.86 + }, + { + "year": 2024, + "MARS": "single", + "value": 284894.97 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 569789.94 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 284894.97 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 284894.97 + }, + { + "year": 2024, + "MARS": "widow", + "value": 569789.94 + }, + { + "year": 2025, + "MARS": "single", + "value": 290906.25 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 581812.51 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 290906.25 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 290906.25 + }, + { + "year": 2025, + "MARS": "widow", + "value": 581812.51 + }, + { + "year": 2026, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Maximum amount of business losses deductible", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Exclusions", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [250000.0, 500000.0, 250000.0, 250000.0, 500000.0], - [255600.0, 511200.0, 255600.0, 255600.0, 511200.0], - [260354.16, 520708.32, 260354.16, 260354.16, 520708.32], - [266420.41, 532840.82, 266420.41, 266420.41, 532840.82], - [272521.44, 545042.88, 272521.44, 272521.44, 545042.88], - [278734.93, 557469.86, 278734.93, 278734.93, 557469.86], - [284894.97, 569789.94, 284894.97, 284894.97, 569789.94], - [290906.25, 581812.51, 290906.25, 290906.25, 581812.51], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Business losses in excess of this amount may not be deducted from AGI.", + "notes": "" + }, "II_em": { - "long_name": "Personal and dependent exemption amount", - "description": "Subtracted from AGI in the calculation of taxable income, per taxpayer and dependent.", + "value": [ + { + "year": 2013, + "value": 3900.0 + }, + { + "year": 2014, + "value": 3950.0 + }, + { + "year": 2015, + "value": 4000.0 + }, + { + "year": 2016, + "value": 4050.0 + }, + { + "year": 2017, + "value": 4050.0 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 0.0 + }, + { + "year": 2020, + "value": 0.0 + }, + { + "year": 2021, + "value": 0.0 + }, + { + "year": 2022, + "value": 0.0 + }, + { + "year": 2023, + "value": 0.0 + }, + { + "year": 2024, + "value": 0.0 + }, + { + "year": 2025, + "value": 0.0 + }, + { + "year": 2026, + "value": 4901.0 + } + ], + "title": "Personal and dependent exemption amount", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Personal Exemptions", "section_2": "Personal And Dependent Exemption Amount", - "irs_ref": "Form 1040, line 42. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [3900.00, - 3950.00, - 4000.00, - 4050.00, - 4050.00, - 0.00, - 0.00, - 0.00, - 0.00, - 0.00, - 0.00, - 0.00, - 0.00, - 4901.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Subtracted from AGI in the calculation of taxable income, per taxpayer and dependent.", + "notes": "" + }, "II_em_ps": { - "long_name": "Personal exemption phaseout starting income", - "description": "If taxpayers' AGI is above this level, their personal exemption will start to decrease at the personal exemption phaseout rate (PEP provision).", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 250000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 300000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 150000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 275000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 300000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 254200.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 305050.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 152525.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 279650.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 305050.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 258250.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 309900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 154950.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 284040.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 309900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 259400.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 311300.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 155650.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 285350.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 311300.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 261500.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 313800.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 156900.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 287650.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 313800.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Personal exemption phaseout starting income", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 1040, line 42, instruction (Worksheet).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[250000.0, 300000.0, 150000.0, 275000.0, 300000.0], - [254200.0, 305050.0, 152525.0, 279650.0, 305050.0], - [258250.0, 309900.0, 154950.0, 284040.0, 309900.0], - [259400.0, 311300.0, 155650.0, 285350.0, 311300.0], - [261500.0, 313800.0, 156900.0, 287650.0, 313800.0], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "If taxpayers' AGI is above this level, their personal exemption will start to decrease at the personal exemption phaseout rate (PEP provision).", + "notes": "" + }, "II_prt": { - "long_name": "Personal exemption phaseout rate", - "description": "Personal exemption amount will decrease by this rate for each dollar of AGI exceeding exemption phaseout start.", + "value": [ + { + "year": 2013, + "value": 0.02 + } + ], + "title": "Personal exemption phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Exemptions", "section_2": "Personal Exemption Phaseout Rate", - "irs_ref": "Form 1040, line 42, instruction (Worksheet).", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.02], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Personal exemption amount will decrease by this rate for each dollar of AGI exceeding exemption phaseout start.", + "notes": "" + }, "II_no_em_nu18": { - "long_name": "Repeal personal exemptions for dependents under age 18", - "description": "Total personal exemptions will be decreased by the number of dependents under the age of 18.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Repeal personal exemptions for dependents under age 18", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Personal Exemptions", "section_2": "Repeal for Dependents Under Age 18", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Total personal exemptions will be decreased by the number of dependents under the age of 18.", + "notes": "" + }, "STD": { - "long_name": "Standard deduction amount", - "description": "Amount filing unit can use as a standard deduction.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 6100.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 12200.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 6100.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 8950.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 12200.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 6200.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 12400.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 6200.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9100.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 12400.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 6300.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 12600.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 6300.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9250.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 12600.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 6300.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 12600.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 6300.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9300.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 12600.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 6350.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 12700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 6350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9350.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 12700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 12000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 24000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 12000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 18000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 24000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 12268.8 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 24537.6 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 12268.8 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 18403.2 + }, + { + "year": 2019, + "MARS": "widow", + "value": 24537.6 + }, + { + "year": 2020, + "MARS": "single", + "value": 12497.0 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 24994.0 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 12497.0 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 18745.5 + }, + { + "year": 2020, + "MARS": "widow", + "value": 24994.0 + }, + { + "year": 2021, + "MARS": "single", + "value": 12788.18 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 25576.36 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 12788.18 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 19182.27 + }, + { + "year": 2021, + "MARS": "widow", + "value": 25576.36 + }, + { + "year": 2022, + "MARS": "single", + "value": 13081.03 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 26162.06 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 13081.03 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 19621.54 + }, + { + "year": 2022, + "MARS": "widow", + "value": 26162.06 + }, + { + "year": 2023, + "MARS": "single", + "value": 13379.28 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 26758.55 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 13379.28 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 20068.91 + }, + { + "year": 2023, + "MARS": "widow", + "value": 26758.55 + }, + { + "year": 2024, + "MARS": "single", + "value": 13674.96 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 27349.92 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 13674.96 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 20512.44 + }, + { + "year": 2024, + "MARS": "widow", + "value": 27349.92 + }, + { + "year": 2025, + "MARS": "single", + "value": 13963.5 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 27927.0 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 13963.5 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 20945.25 + }, + { + "year": 2025, + "MARS": "widow", + "value": 27927.0 + }, + { + "year": 2026, + "MARS": "single", + "value": 7685.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 15369.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 7685.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 11315.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 15369.0 + } + ], + "title": "Standard deduction amount", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Standard Deduction", "section_2": "Standard Deduction Amount", - "irs_ref": "Form 1040, line 8, instructions. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[6100.00, 12200.00, 6100.00, 8950.00, 12200.00], - [6200.00, 12400.00, 6200.00, 9100.00, 12400.00], - [6300.00, 12600.00, 6300.00, 9250.00, 12600.00], - [6300.00, 12600.00, 6300.00, 9300.00, 12600.00], - [6350.00, 12700.00, 6350.00, 9350.00, 12700.00], - [12000.0, 24000.0, 12000.0, 18000.0, 24000.0], - [12268.8, 24537.6, 12268.8, 18403.2, 24537.6], - [12497.0, 24994.0, 12497.0, 18745.5, 24994.0], - [12788.18, 25576.36, 12788.18, 19182.27, 25576.36], - [13081.03, 26162.06, 13081.03, 19621.54, 26162.06], - [13379.28, 26758.55, 13379.28, 20068.91, 26758.55], - [13674.96, 27349.92, 13674.96, 20512.44, 27349.92], - [13963.5, 27927.0, 13963.5, 20945.25, 27927.0], - [7685.0, 15369.0, 7685.0, 11315.0, 15369.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Amount filing unit can use as a standard deduction.", + "notes": "" + }, "STD_Dep": { - "long_name": "Standard deduction for dependents", - "description": "This is the maximum standard deduction for dependents.", + "value": [ + { + "year": 2013, + "value": 1000.0 + }, + { + "year": 2014, + "value": 1000.0 + }, + { + "year": 2015, + "value": 1050.0 + }, + { + "year": 2016, + "value": 1050.0 + }, + { + "year": 2017, + "value": 1050.0 + }, + { + "year": 2018, + "value": 1050.0 + } + ], + "title": "Standard deduction for dependents", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 1040, line 8, instructions. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1000.0, - 1000.0, - 1050.0, - 1050.0, - 1050.0, - 1050.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "This is the maximum standard deduction for dependents.", + "notes": "" + }, "STD_Aged": { - "long_name": "Additional standard deduction for blind and aged", - "description": "To get the standard deduction for aged or blind individuals, taxpayers need to add this value to regular standard deduction.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 1500.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 1200.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 1200.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 1500.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 1500.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 1550.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 1200.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 1200.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 1550.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 1550.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 1550.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 1250.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 1250.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 1550.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 1550.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 1550.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 1250.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 1250.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 1550.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 1550.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 1550.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 1250.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 1250.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 1550.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 1550.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 1600.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 1300.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 1300.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 1600.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 1300.0 + } + ], + "title": "Additional standard deduction for blind and aged", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Standard Deduction", "section_2": "Additional Standard Deduction For Blind And Aged", - "irs_ref": "Form 1040, line 8, calculation (the difference of the two tables given in the instruction).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[1500.0, 1200.0, 1200.0, 1500.0, 1500.0], - [1550.0, 1200.0, 1200.0, 1550.0, 1550.0], - [1550.0, 1250.0, 1250.0, 1550.0, 1550.0], - [1550.0, 1250.0, 1250.0, 1550.0, 1550.0], - [1550.0, 1250.0, 1250.0, 1550.0, 1550.0], - [1600.0, 1300.0, 1300.0, 1600.0, 1300.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "To get the standard deduction for aged or blind individuals, taxpayers need to add this value to regular standard deduction.", + "notes": "" + }, "STD_allow_charity_ded_nonitemizers": { - "long_name": "Allow standard deduction filers to take the charitable contributions deduction", - "description": "Extends the charitable contributions deduction to taxpayers who take the standard deduction. The same ceilings, floor, and haircuts applied to itemized deduction for charitable contributions also apply here.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Allow standard deduction filers to take the charitable contributions deduction", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "", "section_2": "", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Extends the charitable contributions deduction to taxpayers who take the standard deduction. The same ceilings, floor, and haircuts applied to itemized deduction for charitable contributions also apply here.", + "notes": "" + }, "II_credit": { - "long_name": "Personal refundable credit maximum amount", - "description": "This credit amount is fully refundable and is phased out based on AGI. It is available to tax units who would otherwise not file.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Personal refundable credit maximum amount", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Personal Refundable Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "This credit amount is fully refundable and is phased out based on AGI. It is available to tax units who would otherwise not file.", + "notes": "" + }, "II_credit_ps": { - "long_name": "Personal refundable credit phaseout start", - "description": "The personal refundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Personal refundable credit phaseout start", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Personal Refundable Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The personal refundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", + "notes": "" + }, "II_credit_prt": { - "long_name": "Personal refundable credit phaseout rate", - "description": "The personal refundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_ps threshold.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Personal refundable credit phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Refundable Credits", "section_2": "Personal Refundable Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The personal refundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_ps threshold.", + "notes": "" + }, "II_credit_nr": { - "long_name": "Personal nonrefundable credit maximum amount", - "description": "This credit amount is not refundable and is phased out based on AGI.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Personal nonrefundable credit maximum amount", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Personal Nonrefundable Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "This credit amount is not refundable and is phased out based on AGI.", + "notes": "" + }, "II_credit_nr_ps": { - "long_name": "Personal nonrefundable credit phaseout start", - "description": "The personal nonrefundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Personal nonrefundable credit phaseout start", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Personal Nonrefundable Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The personal nonrefundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", + "notes": "" + }, "II_credit_nr_prt": { - "long_name": "Personal nonrefundable credit phaseout rate", - "description": "The personal nonrefundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_nr_ps threshold.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Personal nonrefundable credit phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Personal Nonrefundable Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The personal nonrefundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_nr_ps threshold.", + "notes": "" + }, "ID_Medical_frt": { - "long_name": "Floor (as a decimal fraction of AGI) for deductible medical expenses.", - "description": "Taxpayers are eligible to deduct the portion of their medical expenses exceeding this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 0.1 + }, + { + "year": 2014, + "value": 0.1 + }, + { + "year": 2015, + "value": 0.1 + }, + { + "year": 2016, + "value": 0.1 + }, + { + "year": 2017, + "value": 0.075 + }, + { + "year": 2018, + "value": 0.075 + }, + { + "year": 2019, + "value": 0.1 + } + ], + "title": "Floor (as a decimal fraction of AGI) for deductible medical expenses.", + "type": "float", + "validators": { + "range": { + "min": 0.075, + "max": 0.1 + } + }, "section_1": "Itemized Deductions", "section_2": "Medical Expenses", - "irs_ref": "Form 1040 Schedule A, line 3, in-line. ", - "notes": "When using PUF data, lowering this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.100, - 0.100, - 0.100, - 0.100, - 0.075, - 0.075, - 0.100], - "valid_values": {"min": 0.075, "max": 0.100}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "warn", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Taxpayers are eligible to deduct the portion of their medical expenses exceeding this fraction of AGI.", + "notes": "When using PUF data, lowering this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor." + }, "ID_Medical_frt_add4aged": { - "long_name": "Addon floor (as a decimal fraction of AGI) for deductible medical expenses for elderly filing units.", - "description": "Elderly taxpayers have this fraction added to the value of the regular floor rate for deductible medical expenses. This fraction was -0.025 from 2013 to 2016, but that was temporary and it changed to zero beginning in 2017.", + "value": [ + { + "year": 2013, + "value": -0.025 + }, + { + "year": 2014, + "value": -0.025 + }, + { + "year": 2015, + "value": -0.025 + }, + { + "year": 2016, + "value": -0.025 + }, + { + "year": 2017, + "value": 0.0 + } + ], + "title": "Addon floor (as a decimal fraction of AGI) for deductible medical expenses for elderly filing units.", + "type": "float", + "validators": { + "range": { + "min": -0.025, + "max": 0.0 + } + }, "section_1": "Itemized Deductions", "section_2": "Medical Expenses", - "irs_ref": "Form 1040 Schedule A, line 3, in-line. ", - "notes": "When using PUF data, changing this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [-0.025, - -0.025, - -0.025, - -0.025, - 0.0], - "valid_values": {"min": -0.025, "max": 0.0}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "warn", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Elderly taxpayers have this fraction added to the value of the regular floor rate for deductible medical expenses. This fraction was -0.025 from 2013 to 2016, but that was temporary and it changed to zero beginning in 2017.", + "notes": "When using PUF data, changing this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor." + }, "ID_Medical_hc": { - "long_name": "Medical expense deduction haircut", - "description": "This decimal fraction can be applied to limit the amount of medical expense deduction allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Medical expense deduction haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Medical Expenses", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This decimal fraction can be applied to limit the amount of medical expense deduction allowed.", + "notes": "" + }, "ID_Medical_c": { - "long_name": "Ceiling on the amount of medical expense deduction allowed (dollars)", - "description": "The amount of medical expense deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of medical expense deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Medical Expenses", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The amount of medical expense deduction is limited to this dollar amount.", + "notes": "" + }, "ID_StateLocalTax_hc": { - "long_name": "State and local income and sales taxes deduction haircut.", - "description": "This decimal fraction reduces the state and local income and sales tax deduction.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "State and local income and sales taxes deduction haircut.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "State And Local Income And Sales Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This decimal fraction reduces the state and local income and sales tax deduction.", + "notes": "" + }, "ID_StateLocalTax_crt": { - "long_name": "Ceiling (as a decimal fraction of AGI) for the combination of all state and local income and sales tax deductions.", - "description": "The total deduction for state and local taxes is capped at this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 9e+99 + } + ], + "title": "Ceiling (as a decimal fraction of AGI) for the combination of all state and local income and sales tax deductions.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "State And Local Income And Sales Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [9e99], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The total deduction for state and local taxes is capped at this fraction of AGI.", + "notes": "" + }, "ID_StateLocalTax_c": { - "long_name": "Ceiling on the amount of state and local income and sales taxes deduction allowed (dollars)", - "description": "The amount of state and local income and sales taxes deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of state and local income and sales taxes deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "State And Local Income And Sales Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The amount of state and local income and sales taxes deduction is limited to this dollar amount.", + "notes": "" + }, "ID_RealEstate_hc": { - "long_name": "State, local, and foreign real estate taxes deduction haircut.", - "description": "This decimal fraction reduces real estate taxes paid eligible to deduct in itemized deduction.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "State, local, and foreign real estate taxes deduction haircut.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "State, Local, And Foreign Real Estate Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This decimal fraction reduces real estate taxes paid eligible to deduct in itemized deduction.", + "notes": "" + }, "ID_RealEstate_crt": { - "long_name": "Ceiling (as a decimal fraction of AGI) for the combination of all state, local, and foreign real estate tax deductions.", - "description": "The total deduction for all real estate taxes is capped at this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 9e+99 + } + ], + "title": "Ceiling (as a decimal fraction of AGI) for the combination of all state, local, and foreign real estate tax deductions.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "State, Local, And Foreign Real Estate Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [9e99], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The total deduction for all real estate taxes is capped at this fraction of AGI.", + "notes": "" + }, "ID_RealEstate_c": { - "long_name": "Ceiling on the amount of state, local, and foreign real estate taxes deduction allowed (dollars)", - "description": "The amount of real estate taxes deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of state, local, and foreign real estate taxes deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "State, Local, And Foreign Real Estate Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The amount of real estate taxes deduction is limited to this dollar amount.", + "notes": "" + }, "ID_AllTaxes_hc": { - "long_name": "State and local income, sales, and real estate tax deduction haircut.", - "description": "This decimal fraction reduces all state and local taxes paid eligible to deduct in itemized deduction.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "State and local income, sales, and real estate tax deduction haircut.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "State And Local Taxes And Real Estate Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This decimal fraction reduces all state and local taxes paid eligible to deduct in itemized deduction.", + "notes": "" + }, "ID_AllTaxes_c": { - "long_name": "Ceiling on the amount of state and local income, sales and real estate tax deductions allowed (dollars)", - "description": "The amount of state and local income, sales and real estate tax deductions is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 10000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 10000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 5000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 10000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 10000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 10224.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 10224.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 5112.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 10224.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 10224.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 10414.17 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 10414.17 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 5207.08 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 10414.17 + }, + { + "year": 2020, + "MARS": "widow", + "value": 10414.17 + }, + { + "year": 2021, + "MARS": "single", + "value": 10656.82 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 10656.82 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 5328.41 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 10656.82 + }, + { + "year": 2021, + "MARS": "widow", + "value": 10656.82 + }, + { + "year": 2022, + "MARS": "single", + "value": 10900.86 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 10900.86 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 5450.43 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 10900.86 + }, + { + "year": 2022, + "MARS": "widow", + "value": 10900.86 + }, + { + "year": 2023, + "MARS": "single", + "value": 11149.4 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 11149.4 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 5574.7 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 11149.4 + }, + { + "year": 2023, + "MARS": "widow", + "value": 11149.4 + }, + { + "year": 2024, + "MARS": "single", + "value": 11395.8 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 11395.8 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 5697.9 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 11395.8 + }, + { + "year": 2024, + "MARS": "widow", + "value": 11395.8 + }, + { + "year": 2025, + "MARS": "single", + "value": 11636.25 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 11636.25 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 5818.13 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 11636.25 + }, + { + "year": 2025, + "MARS": "widow", + "value": 11636.25 + }, + { + "year": 2026, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of state and local income, sales and real estate tax deductions allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "State And Local Taxes And Real Estate Taxes", - "irs_ref": "Form 1040 Schedule A, line 5e, in-line.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], - [10224.0, 10224.0, 5112.0, 10224.0, 10224.0], - [10414.17, 10414.17, 5207.08, 10414.17, 10414.17], - [10656.82, 10656.82, 5328.41, 10656.82, 10656.82], - [10900.86, 10900.86, 5450.43, 10900.86, 10900.86], - [11149.4, 11149.4, 5574.7, 11149.4, 11149.4], - [11395.8, 11395.8, 5697.9, 11395.8, 11395.8], - [11636.25, 11636.25, 5818.13, 11636.25, 11636.25], - [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The amount of state and local income, sales and real estate tax deductions is limited to this dollar amount.", + "notes": "" + }, "ID_InterestPaid_hc": { - "long_name": "Interest paid deduction haircut", - "description": "This decimal fraction can be applied to limit the amount of interest paid deduction allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Interest paid deduction haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Interest Paid", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This decimal fraction can be applied to limit the amount of interest paid deduction allowed.", + "notes": "" + }, "ID_InterestPaid_c": { - "long_name": "Ceiling on the amount of interest paid deduction allowed (dollars)", - "description": "The amount of interest paid deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of interest paid deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Interest Paid", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The amount of interest paid deduction is limited to this dollar amount.", + "notes": "" + }, "ID_Charity_crt_all": { - "long_name": "Ceiling (as a decimal fraction of AGI) for all charitable contribution deductions", - "description": "The total deduction for charity is capped at this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 0.5 + }, + { + "year": 2014, + "value": 0.5 + }, + { + "year": 2015, + "value": 0.5 + }, + { + "year": 2016, + "value": 0.5 + }, + { + "year": 2017, + "value": 0.5 + }, + { + "year": 2018, + "value": 0.6 + }, + { + "year": 2019, + "value": 0.6 + }, + { + "year": 2020, + "value": 0.6 + }, + { + "year": 2021, + "value": 0.6 + }, + { + "year": 2022, + "value": 0.6 + }, + { + "year": 2023, + "value": 0.6 + }, + { + "year": 2024, + "value": 0.6 + }, + { + "year": 2025, + "value": 0.6 + }, + { + "year": 2026, + "value": 0.5 + } + ], + "title": "Ceiling (as a decimal fraction of AGI) for all charitable contribution deductions", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 0.6 + } + }, "section_1": "Itemized Deductions", "section_2": "Charity", - "irs_ref": "Pub. 526, Limits on Deductions: 50% Limit Organizations. ", - "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.6, - 0.6, - 0.6, - 0.6, - 0.6, - 0.6, - 0.6, - 0.6, - 0.5], - "valid_values": {"min": 0, "max": 0.6}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "warn", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The total deduction for charity is capped at this fraction of AGI.", + "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped." + }, "ID_Charity_crt_noncash": { - "long_name": "Ceiling (as a decimal fraction of AGI) for noncash charitable contribution deductions", - "description": "The deduction for noncash charity contributions is capped at this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 0.3 + } + ], + "title": "Ceiling (as a decimal fraction of AGI) for noncash charitable contribution deductions", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 0.3 + } + }, "section_1": "Itemized Deductions", "section_2": "Charity", - "irs_ref": "Pub 526, Limits on Deductions: Special 30% Limit for Capital Gain Property. ", - "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.3], - "valid_values": {"min": 0, "max": 0.3}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "warn", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The deduction for noncash charity contributions is capped at this fraction of AGI.", + "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped." + }, "ID_Charity_frt": { - "long_name": "Floor (as a decimal fraction of AGI) for deductible charitable contributions.", - "description": "Taxpayers are eligible to deduct the portion of their charitable expense exceeding this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Floor (as a decimal fraction of AGI) for deductible charitable contributions.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Charity", - "irs_ref": "", - "notes": "This parameter allows for implementation of Option 52 from https://www.cbo.gov/sites/default/files/cbofiles/attachments/49638-BudgetOptions.pdf.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Taxpayers are eligible to deduct the portion of their charitable expense exceeding this fraction of AGI.", + "notes": "This parameter allows for implementation of Option 52 from https://www.cbo.gov/sites/default/files/cbofiles/attachments/49638-BudgetOptions.pdf." + }, "ID_Charity_hc": { - "long_name": "Charity expense deduction haircut", - "description": "This decimal fraction can be applied to limit the amount of charity expense deduction allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Charity expense deduction haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Charity", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This decimal fraction can be applied to limit the amount of charity expense deduction allowed.", + "notes": "" + }, "ID_Charity_c": { - "long_name": "Ceiling on the amount of charity expense deduction allowed (dollars)", - "description": "The amount of charity expense deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of charity expense deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Charity", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The amount of charity expense deduction is limited to this dollar amount.", + "notes": "" + }, "ID_Charity_f": { - "long_name": "Floor on the amount of charity expense deduction allowed (dollars)", - "description": "Only charitable giving in excess of this dollar amount is eligible for a deduction.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Floor on the amount of charity expense deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Charity", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Only charitable giving in excess of this dollar amount is eligible for a deduction.", + "notes": "" + }, "ID_Casualty_frt": { - "long_name": "Floor (as a decimal fraction of AGI) for deductible casualty loss.", - "description": "Taxpayers are eligible to deduct the portion of their gross casualty losses exceeding this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 0.1 + } + ], + "title": "Floor (as a decimal fraction of AGI) for deductible casualty loss.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Casualty", - "irs_ref": "Form 4684, line 17, in-line.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.1], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "Taxpayers are eligible to deduct the portion of their gross casualty losses exceeding this fraction of AGI.", + "notes": "" + }, "ID_Casualty_hc": { - "long_name": "Casualty expense deduction haircut", - "description": "This decimal fraction can be applied to limit the amount of casualty expense deduction allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 1.0 + }, + { + "year": 2019, + "value": 1.0 + }, + { + "year": 2020, + "value": 1.0 + }, + { + "year": 2021, + "value": 1.0 + }, + { + "year": 2022, + "value": 1.0 + }, + { + "year": 2023, + "value": 1.0 + }, + { + "year": 2024, + "value": 1.0 + }, + { + "year": 2025, + "value": 1.0 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Casualty expense deduction haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Casualty", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "This decimal fraction can be applied to limit the amount of casualty expense deduction allowed.", + "notes": "" + }, "ID_Casualty_c": { - "long_name": "Ceiling on the amount of casualty expense deduction allowed (dollars)", - "description": "The amount of casualty expense deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of casualty expense deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Casualty", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "description": "The amount of casualty expense deduction is limited to this dollar amount.", + "notes": "" + }, "ID_Miscellaneous_frt": { - "long_name": "Floor (as a decimal fraction of AGI) for deductible miscellaneous expenses.", - "description": "Taxpayers are eligible to deduct the portion of their miscellaneous expense exceeding this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 0.02 + } + ], + "title": "Floor (as a decimal fraction of AGI) for deductible miscellaneous expenses.", + "type": "float", + "validators": { + "range": { + "min": 0.02, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Miscellaneous", - "irs_ref": "Form 1040 Schedule A, line 16, instructions. ", - "notes": "When using PUF data, lowering this parameter value may produce unexpected results because in PUF data the variable e20400 is zero below the floor.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.02], - "valid_values": {"min": 0.02, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "warn", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Taxpayers are eligible to deduct the portion of their miscellaneous expense exceeding this fraction of AGI.", + "notes": "When using PUF data, lowering this parameter value may produce unexpected results because in PUF data the variable e20400 is zero below the floor." + }, "ID_Miscellaneous_hc": { - "long_name": "Miscellaneous expense deduction haircut", - "description": "This decimal fraction can be applied to limit the amount of miscellaneous expense deduction allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 1.0 + }, + { + "year": 2019, + "value": 1.0 + }, + { + "year": 2020, + "value": 1.0 + }, + { + "year": 2021, + "value": 1.0 + }, + { + "year": 2022, + "value": 1.0 + }, + { + "year": 2023, + "value": 1.0 + }, + { + "year": 2024, + "value": 1.0 + }, + { + "year": 2025, + "value": 1.0 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Miscellaneous expense deduction haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Miscellaneous", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This decimal fraction can be applied to limit the amount of miscellaneous expense deduction allowed.", + "notes": "" + }, "ID_Miscellaneous_c": { - "long_name": "Ceiling on the amount of miscellaneous expense deduction allowed (dollars)", - "description": "The amount of miscellaneous expense deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of miscellaneous expense deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Miscellaneous", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The amount of miscellaneous expense deduction is limited to this dollar amount.", + "notes": "" + }, "ID_ps": { - "long_name": "Itemized deduction phaseout AGI start (Pease provision)", - "description": "The itemized deductions will be reduced for taxpayers with AGI higher than this level.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 250000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 300000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 150000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 275000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 300000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 254200.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 305050.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 152525.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 279650.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 305050.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 258250.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 309900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 154950.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 284050.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 309900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 259400.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 311300.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 155650.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 285350.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 311300.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 261500.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 313800.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 156900.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 287650.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 313800.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "single", + "value": 316457.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 379748.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 189874.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 348102.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 379748.0 + } + ], + "title": "Itemized deduction phaseout AGI start (Pease provision)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Itemized Deduction Limitation", - "irs_ref": "Form 1040 Schedule A, line 29, instructions.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[250000.0, 300000.0, 150000.0, 275000.0, 300000.0], - [254200.0, 305050.0, 152525.0, 279650.0, 305050.0], - [258250.0, 309900.0, 154950.0, 284050.0, 309900.0], - [259400.0, 311300.0, 155650.0, 285350.0, 311300.0], - [261500.0, 313800.0, 156900.0, 287650.0, 313800.0], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [316457.0, 379748.0, 189874.0, 348102.0, 379748.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The itemized deductions will be reduced for taxpayers with AGI higher than this level.", + "notes": "" + }, "ID_prt": { - "long_name": "Itemized deduction phaseout rate (Pease provision)", - "description": "Taxpayers will not be eligible to deduct the full amount of itemized deduction if their AGI is above the phaseout start. The deductible portion would be decreased at this rate for each dollar exceeding the start.", + "value": [ + { + "year": 2013, + "value": 0.03 + }, + { + "year": 2014, + "value": 0.03 + }, + { + "year": 2015, + "value": 0.03 + }, + { + "year": 2016, + "value": 0.03 + }, + { + "year": 2017, + "value": 0.03 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 0.0 + }, + { + "year": 2020, + "value": 0.0 + }, + { + "year": 2021, + "value": 0.0 + }, + { + "year": 2022, + "value": 0.0 + }, + { + "year": 2023, + "value": 0.0 + }, + { + "year": 2024, + "value": 0.0 + }, + { + "year": 2025, + "value": 0.0 + }, + { + "year": 2026, + "value": 0.03 + } + ], + "title": "Itemized deduction phaseout rate (Pease provision)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Itemized Deduction Limitation", - "irs_ref": "Schedule A, line 29, instructions. ", - "notes": "This phaseout rate cannot be lower than 0.03 for each dollar, due to limited data on non-itemizers.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.03, - 0.03, - 0.03, - 0.03, - 0.03, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.03], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Taxpayers will not be eligible to deduct the full amount of itemized deduction if their AGI is above the phaseout start. The deductible portion would be decreased at this rate for each dollar exceeding the start.", + "notes": "This phaseout rate cannot be lower than 0.03 for each dollar, due to limited data on non-itemizers." + }, "ID_crt": { - "long_name": "Itemized deduction maximum phaseout as a decimal fraction of total itemized deductions (Pease provision)", - "description": "The phaseout amount is capped at this fraction of the original total deduction.", + "value": [ + { + "year": 2013, + "value": 0.8 + }, + { + "year": 2014, + "value": 0.8 + }, + { + "year": 2015, + "value": 0.8 + }, + { + "year": 2016, + "value": 0.8 + }, + { + "year": 2017, + "value": 0.8 + }, + { + "year": 2018, + "value": 1.0 + }, + { + "year": 2019, + "value": 1.0 + }, + { + "year": 2020, + "value": 1.0 + }, + { + "year": 2021, + "value": 1.0 + }, + { + "year": 2022, + "value": 1.0 + }, + { + "year": 2023, + "value": 1.0 + }, + { + "year": 2024, + "value": 1.0 + }, + { + "year": 2025, + "value": 1.0 + }, + { + "year": 2026, + "value": 0.8 + } + ], + "title": "Itemized deduction maximum phaseout as a decimal fraction of total itemized deductions (Pease provision)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Itemized Deduction Limitation", - "irs_ref": "Form 1040 Schedule A, line 17, instructions. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.8, - 0.8, - 0.8, - 0.8, - 0.8, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.8], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The phaseout amount is capped at this fraction of the original total deduction.", + "notes": "" + }, "ID_BenefitSurtax_trt": { - "long_name": "Surtax rate on the benefits from specified itemized deductions", - "description": "The benefit from specified itemized deductions exceeding the credit is taxed at this rate. A surtax rate of 1 strictly limits the benefit from specified itemized deductions to the specified credit. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Surtax rate on the benefits from specified itemized deductions", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The benefit from specified itemized deductions exceeding the credit is taxed at this rate. A surtax rate of 1 strictly limits the benefit from specified itemized deductions to the specified credit. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", + "notes": "" + }, "ID_BenefitSurtax_crt": { - "long_name": "Credit on itemized deduction benefit surtax (decimal fraction of AGI)", - "description": "The surtax on specified itemized deductions applies to benefits in excess of this fraction of AGI. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Credit on itemized deduction benefit surtax (decimal fraction of AGI)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The surtax on specified itemized deductions applies to benefits in excess of this fraction of AGI. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", + "notes": "" + }, "ID_BenefitSurtax_em": { - "long_name": "Exemption for itemized deduction benefit surtax (dollar AGI threshold)", - "description": "This amount is subtracted from itemized deduction benefits in the calculation of the itemized deduction benefit surtax. With ID_BenefitSurtax_crt set to 0.0 and ID_BenefitSurtax_trt set to 1.0, this amount serves as a dollar limit on the value of itemized deductions.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Exemption for itemized deduction benefit surtax (dollar AGI threshold)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "This amount is subtracted from itemized deduction benefits in the calculation of the itemized deduction benefit surtax. With ID_BenefitSurtax_crt set to 0.0 and ID_BenefitSurtax_trt set to 1.0, this amount serves as a dollar limit on the value of itemized deductions.", + "notes": "" + }, "ID_BenefitSurtax_Switch": { - "long_name": "Deductions subject to the surtax on itemized deduction benefits", - "description": "The surtax on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "value": [ + { + "year": 2013, + "idedtype": "med", + "value": true + }, + { + "year": 2013, + "idedtype": "sltx", + "value": true + }, + { + "year": 2013, + "idedtype": "retx", + "value": true + }, + { + "year": 2013, + "idedtype": "cas", + "value": true + }, + { + "year": 2013, + "idedtype": "misc", + "value": true + }, + { + "year": 2013, + "idedtype": "int", + "value": true + }, + { + "year": 2013, + "idedtype": "char", + "value": true + } + ], + "title": "Deductions subject to the surtax on itemized deduction benefits", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Itemized Deductions", "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "idedtype", - "vi_vals": ["med", "sltx", "retx", "cas", "misc", "int", "char"], - "value_type": "boolean", - "value": [[true, true, true, true, true, true, true]], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The surtax on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "notes": "" + }, "ID_BenefitCap_rt": { - "long_name": "Ceiling on the benefits from itemized deductions; decimal fraction of total deductible expenses", - "description": "The benefit from specified itemized deductions is capped at this percent of the total deductible expenses.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Ceiling on the benefits from itemized deductions; decimal fraction of total deductible expenses", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The benefit from specified itemized deductions is capped at this percent of the total deductible expenses.", + "notes": "" + }, "ID_BenefitCap_Switch": { - "long_name": "Deductions subject to the cap on itemized deduction benefits", - "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "value": [ + { + "year": 2013, + "idedtype": "med", + "value": true + }, + { + "year": 2013, + "idedtype": "sltx", + "value": true + }, + { + "year": 2013, + "idedtype": "retx", + "value": true + }, + { + "year": 2013, + "idedtype": "cas", + "value": true + }, + { + "year": 2013, + "idedtype": "misc", + "value": true + }, + { + "year": 2013, + "idedtype": "int", + "value": true + }, + { + "year": 2013, + "idedtype": "char", + "value": true + } + ], + "title": "Deductions subject to the cap on itemized deduction benefits", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Itemized Deductions", "section_2": "Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "idedtype", - "vi_vals": ["med", "sltx", "retx", "cas", "misc", "int", "char"], - "value_type": "boolean", - "value": [[true, true, true, true, true, true, true]], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "notes": "" + }, "ID_c": { - "long_name": "Ceiling on the amount of itemized deductions allowed (dollars)", - "description": "The amount of itemized deductions is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of itemized deductions allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The amount of itemized deductions is limited to this dollar amount.", + "notes": "" + }, "ID_AmountCap_rt": { - "long_name": "Ceiling on the gross amount of itemized deductions allowed; decimal fraction of AGI", - "description": "The gross allowable amount of specified itemized deductions is capped at this percent of AGI.", + "value": [ + { + "year": 2013, + "value": 9e+99 + } + ], + "title": "Ceiling on the gross amount of itemized deductions allowed; decimal fraction of AGI", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [9e99], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The gross allowable amount of specified itemized deductions is capped at this percent of AGI.", + "notes": "" + }, "ID_AmountCap_Switch": { - "long_name": "Deductions subject to the cap on itemized deduction benefits", - "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "value": [ + { + "year": 2013, + "idedtype": "med", + "value": true + }, + { + "year": 2013, + "idedtype": "sltx", + "value": true + }, + { + "year": 2013, + "idedtype": "retx", + "value": true + }, + { + "year": 2013, + "idedtype": "cas", + "value": true + }, + { + "year": 2013, + "idedtype": "misc", + "value": true + }, + { + "year": 2013, + "idedtype": "int", + "value": true + }, + { + "year": 2013, + "idedtype": "char", + "value": true + } + ], + "title": "Deductions subject to the cap on itemized deduction benefits", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Itemized Deductions", "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "idedtype", - "vi_vals": ["med", "sltx", "retx", "cas", "misc", "int", "char"], - "value_type": "boolean", - "value": [[true, true, true, true, true, true, true]], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "notes": "" + }, "CG_rt1": { - "long_name": "Long term capital gain and qualified dividends (regular/non-AMT) rate 1", - "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 1 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 1040 Schedule D tax worksheet, line 20, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 1 are taxed at this rate.", + "notes": "" + }, "CG_brk1": { - "long_name": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 1", - "description": "The gains and dividends (stacked on top of regular income) below this are taxed at capital gain rate 1.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 72500.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 48600.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 72500.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 73800.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 49400.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 73800.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 74900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 50200.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 74900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 75300.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 50400.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 75300.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 75900.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 50800.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 75900.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 38600.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 77200.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 38600.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 51700.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 77200.0 + } + ], + "title": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "CG_brk2" + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 1040 Schedule D tax worksheet, line 15, in-line. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[36250.0, 72500.0, 36250.0, 48600.0, 72500.0], - [36900.0, 73800.0, 36900.0, 49400.0, 73800.0], - [37450.0, 74900.0, 37450.0, 50200.0, 74900.0], - [37650.0, 75300.0, 37650.0, 50400.0, 75300.0], - [37950.0, 75900.0, 37950.0, 50800.0, 75900.0], - [38600.0, 77200.0, 38600.0, 51700.0, 77200.0]], - "valid_values": {"min": 0, "max": "CG_brk2"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for CG_brk2", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The gains and dividends (stacked on top of regular income) below this are taxed at capital gain rate 1.", + "notes": "" + }, "CG_rt2": { - "long_name": "Long term capital gain and qualified dividends (regular/non-AMT) rate 2", - "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 2 and above threshold 1 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 0.15 + } + ], + "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 2", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 1040 Schedule D tax worksheet, line 29, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.15], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 2 and above threshold 1 are taxed at this rate.", + "notes": "" + }, "CG_brk2": { - "long_name": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 2", - "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 1 are taxed at capital gain rate 2.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 400000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 450000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 225000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 425000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 450000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 406750.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 457600.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 228800.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 432200.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 457600.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 413200.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 464850.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 232425.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 439000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 464850.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 415050.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 466950.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 233475.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 441000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 466950.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 418400.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 470700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 235350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 444550.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 470700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 425800.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 479000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 239500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 452400.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 479000.0 + } + ], + "title": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 2", + "type": "float", + "validators": { + "range": { + "min": "CG_brk1", + "max": "CG_brk3" + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 1040 Schedule D tax worksheet, line 24, in-line. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[400000.0, 450000.0, 225000.0, 425000.0, 450000.0], - [406750.0, 457600.0, 228800.0, 432200.0, 457600.0], - [413200.0, 464850.0, 232425.0, 439000.0, 464850.0], - [415050.0, 466950.0, 233475.0, 441000.0, 466950.0], - [418400.0, 470700.0, 235350.0, 444550.0, 470700.0], - [425800.0, 479000.0, 239500.0, 452400.0, 479000.0]], - "valid_values": {"min": "CG_brk1", "max": "CG_brk3"}, - "invalid_minmsg": "for CG_brk1", - "invalid_maxmsg": "for CG_brk3", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 1 are taxed at capital gain rate 2.", + "notes": "" + }, "CG_rt3": { - "long_name": "Long term capital gain and qualified dividends (regular/non-AMT) rate 3", - "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 2 and below threshold 3 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 0.2 + } + ], + "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 3", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 1040 Schedule D tax worksheet, line 32, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.20], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 2 and below threshold 3 are taxed at this rate.", + "notes": "" + }, "CG_brk3": { - "long_name": "Top of long-term capital gains and qualified dividend tax (regular/non-AMT) bracket 3", - "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 2 are taxed at the capital gain rate 3; above this they are taxed at capital gain rate 4. Default value is essentially infinity.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Top of long-term capital gains and qualified dividend tax (regular/non-AMT) bracket 3", + "type": "float", + "validators": { + "range": { + "min": "CG_brk2", + "max": 9e+99 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 1040 Schedule D tax worksheet, line 24, in-line. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": "CG_brk2", "max": 9e99}, - "invalid_minmsg": "for CG_brk2", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 2 are taxed at the capital gain rate 3; above this they are taxed at capital gain rate 4. Default value is essentially infinity.", + "notes": "" + }, "CG_rt4": { - "long_name": "Long term capital gain and qualified dividends (regular/non-AMT) rate 4", - "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 4", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", + "notes": "" + }, "AMT_CG_rt1": { - "long_name": "Long term capital gain and qualified dividends (AMT) rate 1", - "description": "Capital gain and qualified dividends (stacked on top of regular income) below threshold 1 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Long term capital gain and qualified dividends (AMT) rate 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 6251, line 47, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Capital gain and qualified dividends (stacked on top of regular income) below threshold 1 are taxed at this rate.", + "notes": "" + }, "AMT_CG_brk1": { - "long_name": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 1", - "description": "The gains and dividends, stacked last, of AMT taxable income below this are taxed at AMT capital gain rate 1.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 72500.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 48600.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 72500.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 73800.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 49400.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 73800.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 74900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 50200.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 74900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 75300.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 50400.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 75300.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 75900.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 50800.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 75900.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 38600.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 77200.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 38600.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 51700.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 77200.0 + } + ], + "title": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "AMT_CG_brk2" + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 6251, line 19, in-line. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[36250.0, 72500.0, 36250.0, 48600.0, 72500.0], - [36900.0, 73800.0, 36900.0, 49400.0, 73800.0], - [37450.0, 74900.0, 37450.0, 50200.0, 74900.0], - [37650.0, 75300.0, 37650.0, 50400.0, 75300.0], - [37950.0, 75900.0, 37950.0, 50800.0, 75900.0], - [38600.0, 77200.0, 38600.0, 51700.0, 77200.0]], - "valid_values": {"min": 0, "max": "AMT_CG_brk2"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for AMT_CG_brk2", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The gains and dividends, stacked last, of AMT taxable income below this are taxed at AMT capital gain rate 1.", + "notes": "" + }, "AMT_CG_rt2": { - "long_name": "Long term capital gain and qualified dividends (AMT) rate 2", + "value": [ + { + "year": 2013, + "value": 0.15 + } + ], + "title": "Long term capital gain and qualified dividends (AMT) rate 2", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", + "indexable": false, + "indexed": false, "description": "Capital gain and qualified dividend (stacked on top of regular income) below threshold 2 and above threshold 1 are taxed at this rate.", - "irs_ref": "Form 6251, line 31, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.15], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "notes": "" + }, "AMT_CG_brk2": { - "long_name": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 2", - "description": "The gains and dividends, stacked last, of AMT taxable income below this threshold and above bracket 1 are taxed at AMT capital gain rate 2.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 400000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 450000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 225000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 425000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 450000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 406750.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 457600.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 228800.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 432200.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 457600.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 413200.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 464850.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 232425.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 439000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 464850.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 415050.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 466950.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 233475.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 441000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 466950.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 418400.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 470700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 235350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 444550.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 470700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 425800.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 479000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 239500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 452400.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 479000.0 + } + ], + "title": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 2", + "type": "float", + "validators": { + "range": { + "min": "AMT_CG_brk1", + "max": "AMT_CG_brk3" + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "notes": "", - "irs_ref": "Form 6251, line 25, in-line. ", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[400000.0, 450000.0, 225000.0, 425000.0, 450000.0], - [406750.0, 457600.0, 228800.0, 432200.0, 457600.0], - [413200.0, 464850.0, 232425.0, 439000.0, 464850.0], - [415050.0, 466950.0, 233475.0, 441000.0, 466950.0], - [418400.0, 470700.0, 235350.0, 444550.0, 470700.0], - [425800.0, 479000.0, 239500.0, 452400.0, 479000.0]], - "valid_values": {"min": "AMT_CG_brk1", "max": "AMT_CG_brk3"}, - "invalid_minmsg": "for AMT_CG_brk1", - "invalid_maxmsg": "for AMT_CG_brk3", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The gains and dividends, stacked last, of AMT taxable income below this threshold and above bracket 1 are taxed at AMT capital gain rate 2.", + "notes": "" + }, "AMT_CG_rt3": { - "long_name": "Long term capital gain and qualified dividends (AMT) rate 3", - "description": "The capital gain and qualified dividend (stacked on top of regular income) above threshold 2 and below threshold 3 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 0.2 + } + ], + "title": "Long term capital gain and qualified dividends (AMT) rate 3", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 6251, line 34, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.20], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The capital gain and qualified dividend (stacked on top of regular income) above threshold 2 and below threshold 3 are taxed at this rate.", + "notes": "" + }, "AMT_CG_brk3": { - "long_name": "Long term capital gain and qualified dividends (AMT) threshold 3", - "description": "The gains and dividends, stacked last, of AMT taxable income below this and above bracket 2 are taxed at capital gain rate 3; above thisthey are taxed at AMT capital gain rate 4. Default value is essentially infinity.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Long term capital gain and qualified dividends (AMT) threshold 3", + "type": "float", + "validators": { + "range": { + "min": "AMT_CG_brk2", + "max": 9e+99 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": "AMT_CG_brk2", "max": 9e99}, - "invalid_minmsg": "for AMT_CG_brk2", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The gains and dividends, stacked last, of AMT taxable income below this and above bracket 2 are taxed at capital gain rate 3; above thisthey are taxed at AMT capital gain rate 4. Default value is essentially infinity.", + "notes": "" + }, "AMT_CG_rt4": { - "long_name": "Long term capital gain and qualified dividends (AMT) rate 4", - "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Long term capital gain and qualified dividends (AMT) rate 4", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", + "notes": "" + }, "CG_nodiff": { - "long_name": "Long term capital gains and qualified dividends taxed no differently than regular taxable income", - "description": "Specifies whether or not long term capital gains and qualified dividends are taxed like regular taxable income.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Long term capital gains and qualified dividends taxed no differently than regular taxable income", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", - "irs_ref": "Current-law value is zero implying different tax treatment in Schedule D and AMT; a value of one implies same tax treatment in both regular and alternative minimum tax rules, but the same treatment can differ for regular and AMT.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Specifies whether or not long term capital gains and qualified dividends are taxed like regular taxable income.", + "notes": "" + }, "CG_ec": { - "long_name": "Dollar amount of all capital gains and qualified dividends that are excluded from AGI.", - "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + } + ], + "title": "Dollar amount of all capital gains and qualified dividends that are excluded from AGI.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income.", + "notes": "" + }, "CG_reinvest_ec_rt": { - "long_name": "Fraction of all capital gains and qualified dividends in excess of the dollar exclusion that are excluded from AGI.", - "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income. To limit the exclusion to capital gains and dividends invested within one year, set to statutory exclusion rate times the fraction of capital gains and qualified dividends in excess of the exclusion that are assumed to be reinvested within the year.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Fraction of all capital gains and qualified dividends in excess of the dollar exclusion that are excluded from AGI.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income. To limit the exclusion to capital gains and dividends invested within one year, set to statutory exclusion rate times the fraction of capital gains and qualified dividends in excess of the exclusion that are assumed to be reinvested within the year.", + "notes": "" + }, "II_rt1": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 1", - "description": "The lowest tax rate, applied to the portion of taxable income below tax bracket 1.", + "value": [ + { + "year": 2013, + "value": 0.1 + }, + { + "year": 2014, + "value": 0.1 + }, + { + "year": 2015, + "value": 0.1 + }, + { + "year": 2016, + "value": 0.1 + }, + { + "year": 2017, + "value": 0.1 + }, + { + "year": 2018, + "value": 0.1 + }, + { + "year": 2019, + "value": 0.1 + }, + { + "year": 2020, + "value": 0.1 + }, + { + "year": 2021, + "value": 0.1 + }, + { + "year": 2022, + "value": 0.1 + }, + { + "year": 2023, + "value": 0.1 + }, + { + "year": 2024, + "value": 0.1 + }, + { + "year": 2025, + "value": 0.1 + }, + { + "year": 2026, + "value": 0.1 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The lowest tax rate, applied to the portion of taxable income below tax bracket 1.", + "notes": "" + }, "II_brk1": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1", - "description": "Taxable income below this threshold is taxed at tax rate 1.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 8925.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 17850.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 8925.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 12750.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 17850.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 9075.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 18150.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9075.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 12950.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 18150.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 9225.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 18450.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9225.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 13150.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 18450.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 9275.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 18550.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9275.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 13250.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 18550.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 9325.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 18650.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9325.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 13350.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 18650.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 9525.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 19050.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9525.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 13600.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 19050.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 9738.36 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 19476.72 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9738.36 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 13904.64 + }, + { + "year": 2019, + "MARS": "widow", + "value": 19476.72 + }, + { + "year": 2020, + "MARS": "single", + "value": 9919.49 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 19838.99 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 9919.49 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 14163.27 + }, + { + "year": 2020, + "MARS": "widow", + "value": 19838.99 + }, + { + "year": 2021, + "MARS": "single", + "value": 10150.62 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 20301.24 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 10150.62 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 14493.27 + }, + { + "year": 2021, + "MARS": "widow", + "value": 20301.24 + }, + { + "year": 2022, + "MARS": "single", + "value": 10383.07 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 20766.13 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 10383.07 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 14825.17 + }, + { + "year": 2022, + "MARS": "widow", + "value": 20766.13 + }, + { + "year": 2023, + "MARS": "single", + "value": 10619.8 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 21239.6 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 10619.8 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 15163.18 + }, + { + "year": 2023, + "MARS": "widow", + "value": 21239.6 + }, + { + "year": 2024, + "MARS": "single", + "value": 10854.5 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 21709.0 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 10854.5 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 15498.29 + }, + { + "year": 2024, + "MARS": "widow", + "value": 21709.0 + }, + { + "year": 2025, + "MARS": "single", + "value": 11083.53 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 22167.06 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 11083.53 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 15825.3 + }, + { + "year": 2025, + "MARS": "widow", + "value": 22167.06 + }, + { + "year": 2026, + "MARS": "single", + "value": 11285.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 22569.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 11285.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 16156.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 22569.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "II_brk2" + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 44, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[8925.00, 17850.00, 8925.00, 12750.00, 17850.00], - [9075.00, 18150.00, 9075.00, 12950.00, 18150.00], - [9225.00, 18450.00, 9225.00, 13150.00, 18450.00], - [9275.00, 18550.00, 9275.00, 13250.00, 18550.00], - [9325.00, 18650.00, 9325.00, 13350.00, 18650.00], - [9525.0, 19050.0, 9525.0, 13600.0, 19050.0], - [9738.36, 19476.72, 9738.36, 13904.64, 19476.72], - [9919.49, 19838.99, 9919.49, 14163.27, 19838.99], - [10150.62, 20301.24, 10150.62, 14493.27, 20301.24], - [10383.07, 20766.13, 10383.07, 14825.17, 20766.13], - [10619.8, 21239.6, 10619.8, 15163.18, 21239.6], - [10854.5, 21709.0, 10854.5, 15498.29, 21709.0], - [11083.53, 22167.06, 11083.53, 15825.3, 22167.06], - [11285.0, 22569.0, 11285.0, 16156.0, 22569.0]], - "valid_values": {"min": 0, "max": "II_brk2"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for II_brk2", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Taxable income below this threshold is taxed at tax rate 1.", + "notes": "" + }, "II_rt2": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 2", - "description": "The second lowest tax rate, applied to the portion of taxable income below tax bracket 2 and above tax bracket 1.", + "value": [ + { + "year": 2013, + "value": 0.15 + }, + { + "year": 2014, + "value": 0.15 + }, + { + "year": 2015, + "value": 0.15 + }, + { + "year": 2016, + "value": 0.15 + }, + { + "year": 2017, + "value": 0.15 + }, + { + "year": 2018, + "value": 0.12 + }, + { + "year": 2019, + "value": 0.12 + }, + { + "year": 2020, + "value": 0.12 + }, + { + "year": 2021, + "value": 0.12 + }, + { + "year": 2022, + "value": 0.12 + }, + { + "year": 2023, + "value": 0.12 + }, + { + "year": 2024, + "value": 0.12 + }, + { + "year": 2025, + "value": 0.12 + }, + { + "year": 2026, + "value": 0.15 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 2", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.15, - 0.15, - 0.15, - 0.15, - 0.15, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.15], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The second lowest tax rate, applied to the portion of taxable income below tax bracket 2 and above tax bracket 1.", + "notes": "" + }, "II_brk2": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2", - "description": "Income below this threshold and above tax bracket 1 is taxed at tax rate 2.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 72500.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 48600.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 72500.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 73800.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 49400.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 73800.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 74900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 50200.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 74900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 75300.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 50400.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 75300.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 75900.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 50800.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 75900.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 38700.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 77400.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 38700.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 51800.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 77400.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 39566.88 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 79133.76 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 39566.88 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 52960.32 + }, + { + "year": 2019, + "MARS": "widow", + "value": 79133.76 + }, + { + "year": 2020, + "MARS": "single", + "value": 40302.82 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 80605.65 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 40302.82 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 53945.38 + }, + { + "year": 2020, + "MARS": "widow", + "value": 80605.65 + }, + { + "year": 2021, + "MARS": "single", + "value": 41241.88 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 82483.76 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 41241.88 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 55202.31 + }, + { + "year": 2021, + "MARS": "widow", + "value": 82483.76 + }, + { + "year": 2022, + "MARS": "single", + "value": 42186.32 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 84372.64 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 42186.32 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 56466.44 + }, + { + "year": 2022, + "MARS": "widow", + "value": 84372.64 + }, + { + "year": 2023, + "MARS": "single", + "value": 43148.17 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 86296.33 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 43148.17 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 57753.88 + }, + { + "year": 2023, + "MARS": "widow", + "value": 86296.33 + }, + { + "year": 2024, + "MARS": "single", + "value": 44101.74 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 88203.48 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 44101.74 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 59030.24 + }, + { + "year": 2024, + "MARS": "widow", + "value": 88203.48 + }, + { + "year": 2025, + "MARS": "single", + "value": 45032.29 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 90064.58 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 45032.29 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 60275.78 + }, + { + "year": 2025, + "MARS": "widow", + "value": 90064.58 + }, + { + "year": 2026, + "MARS": "single", + "value": 45926.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 91851.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 45926.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 61476.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 91851.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2", + "type": "float", + "validators": { + "range": { + "min": "II_brk1", + "max": "II_brk3" + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[36250.00, 72500.00, 36250.00, 48600.00, 72500.00], - [36900.00, 73800.00, 36900.00, 49400.00, 73800.00], - [37450.00, 74900.00, 37450.00, 50200.00, 74900.00], - [37650.00, 75300.00, 37650.00, 50400.00, 75300.00], - [37950.00, 75900.00, 37950.00, 50800.00, 75900.00], - [38700.0, 77400.0, 38700.0, 51800.0, 77400.0], - [39566.88, 79133.76, 39566.88, 52960.32, 79133.76], - [40302.82, 80605.65, 40302.82, 53945.38, 80605.65], - [41241.88, 82483.76, 41241.88, 55202.31, 82483.76], - [42186.32, 84372.64, 42186.32, 56466.44, 84372.64], - [43148.17, 86296.33, 43148.17, 57753.88, 86296.33], - [44101.74, 88203.48, 44101.74, 59030.24, 88203.48], - [45032.29, 90064.58, 45032.29, 60275.78, 90064.58], - [45926.0, 91851.0, 45926.0, 61476.0, 91851.0]], - "valid_values": {"min": "II_brk1", "max": "II_brk3"}, - "invalid_minmsg": "for II_brk1", - "invalid_maxmsg": "for II_brk3", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Income below this threshold and above tax bracket 1 is taxed at tax rate 2.", + "notes": "" + }, "II_rt3": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 3", - "description": "The third lowest tax rate, applied to the portion of taxable income below tax bracket 3 and above tax bracket 2.", + "value": [ + { + "year": 2013, + "value": 0.25 + }, + { + "year": 2014, + "value": 0.25 + }, + { + "year": 2015, + "value": 0.25 + }, + { + "year": 2016, + "value": 0.25 + }, + { + "year": 2017, + "value": 0.25 + }, + { + "year": 2018, + "value": 0.22 + }, + { + "year": 2019, + "value": 0.22 + }, + { + "year": 2020, + "value": 0.22 + }, + { + "year": 2021, + "value": 0.22 + }, + { + "year": 2022, + "value": 0.22 + }, + { + "year": 2023, + "value": 0.22 + }, + { + "year": 2024, + "value": 0.22 + }, + { + "year": 2025, + "value": 0.22 + }, + { + "year": 2026, + "value": 0.25 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 3", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.25, - 0.25, - 0.25, - 0.25, - 0.25, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.25], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The third lowest tax rate, applied to the portion of taxable income below tax bracket 3 and above tax bracket 2.", + "notes": "" + }, "II_brk3": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3", - "description": "Income below this threshold and above tax bracket 2 is taxed at tax rate 3.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 87850.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 146400.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 73200.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 125450.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 146400.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 89350.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 148850.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 74425.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 127550.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 148850.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 90750.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 151200.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 75600.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 129600.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 151200.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 91150.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 151900.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 75950.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 130150.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 151900.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 91900.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 153100.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 76550.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 131200.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 153100.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 82500.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 165000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 82500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 82500.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 165000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 84348.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 168696.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 84348.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 84348.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 168696.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 85916.87 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 171833.75 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 85916.87 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 85916.87 + }, + { + "year": 2020, + "MARS": "widow", + "value": 171833.75 + }, + { + "year": 2021, + "MARS": "single", + "value": 87918.74 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 175837.47 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 87918.74 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 87918.74 + }, + { + "year": 2021, + "MARS": "widow", + "value": 175837.47 + }, + { + "year": 2022, + "MARS": "single", + "value": 89932.07 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 179864.15 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 89932.07 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 89932.07 + }, + { + "year": 2022, + "MARS": "widow", + "value": 179864.15 + }, + { + "year": 2023, + "MARS": "single", + "value": 91982.53 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 183965.05 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 91982.53 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 91982.53 + }, + { + "year": 2023, + "MARS": "widow", + "value": 183965.05 + }, + { + "year": 2024, + "MARS": "single", + "value": 94015.34 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 188030.68 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 94015.34 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 94015.34 + }, + { + "year": 2024, + "MARS": "widow", + "value": 188030.68 + }, + { + "year": 2025, + "MARS": "single", + "value": 95999.06 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 191998.13 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 95999.06 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 95999.06 + }, + { + "year": 2025, + "MARS": "widow", + "value": 191998.13 + }, + { + "year": 2026, + "MARS": "single", + "value": 111214.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 185275.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 92638.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 158773.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 185275.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3", + "type": "float", + "validators": { + "range": { + "min": "II_brk2", + "max": "II_brk4" + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[87850.00, 146400.00, 73200.00, 125450.00, 146400.00], - [89350.00, 148850.00, 74425.00, 127550.00, 148850.00], - [90750.00, 151200.00, 75600.00, 129600.00, 151200.00], - [91150.00, 151900.00, 75950.00, 130150.00, 151900.00], - [91900.00, 153100.00, 76550.00, 131200.00, 153100.00], - [82500.0, 165000.0, 82500.0, 82500.0, 165000.0], - - [84348.0, 168696.0, 84348.0, 84348.0, 168696.0], - [85916.87, 171833.75, 85916.87, 85916.87, 171833.75], - [87918.74, 175837.47, 87918.74, 87918.74, 175837.47], - [89932.07, 179864.15, 89932.07, 89932.07, 179864.15], - [91982.53, 183965.05, 91982.53, 91982.53, 183965.05], - [94015.34, 188030.68, 94015.34, 94015.34, 188030.68], - [95999.06, 191998.13, 95999.06, 95999.06, 191998.13], - [111214.0, 185275.0, 92638.0, 158773.0, 185275.0]], - "valid_values": {"min": "II_brk2", "max": "II_brk4"}, - "invalid_minmsg": "for II_brk2", - "invalid_maxmsg": "for II_brk4", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Income below this threshold and above tax bracket 2 is taxed at tax rate 3.", + "notes": "" + }, "II_rt4": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 4", - "description": "The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.", + "value": [ + { + "year": 2013, + "value": 0.28 + }, + { + "year": 2014, + "value": 0.28 + }, + { + "year": 2015, + "value": 0.28 + }, + { + "year": 2016, + "value": 0.28 + }, + { + "year": 2017, + "value": 0.28 + }, + { + "year": 2018, + "value": 0.24 + }, + { + "year": 2019, + "value": 0.24 + }, + { + "year": 2020, + "value": 0.24 + }, + { + "year": 2021, + "value": 0.24 + }, + { + "year": 2022, + "value": 0.24 + }, + { + "year": 2023, + "value": 0.24 + }, + { + "year": 2024, + "value": 0.24 + }, + { + "year": 2025, + "value": 0.24 + }, + { + "year": 2026, + "value": 0.28 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 4", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.28, - 0.28, - 0.28, - 0.28, - 0.28, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.28], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.", + "notes": "" + }, "II_brk4": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4", - "description": "Income below this threshold and above tax bracket 3 is taxed at tax rate 4.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 183250.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 223050.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 111525.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 203150.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 223050.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 186350.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 226850.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 113425.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 206600.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 226850.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 189300.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 230450.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 115225.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 209850.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 230450.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 190150.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 231450.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 115725.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 210800.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 231450.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 191650.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 233350.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 116675.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 212500.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 233350.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 315000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 315000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 161028.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 322056.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 161028.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 161028.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 322056.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 164023.12 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 328046.24 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 164023.12 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 164023.12 + }, + { + "year": 2020, + "MARS": "widow", + "value": 328046.24 + }, + { + "year": 2021, + "MARS": "single", + "value": 167844.86 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 335689.72 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 167844.86 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 167844.86 + }, + { + "year": 2021, + "MARS": "widow", + "value": 335689.72 + }, + { + "year": 2022, + "MARS": "single", + "value": 171688.51 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 343377.01 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 171688.51 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 171688.51 + }, + { + "year": 2022, + "MARS": "widow", + "value": 343377.01 + }, + { + "year": 2023, + "MARS": "single", + "value": 175603.0 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 351206.01 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 175603.0 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 175603.0 + }, + { + "year": 2023, + "MARS": "widow", + "value": 351206.01 + }, + { + "year": 2024, + "MARS": "single", + "value": 179483.83 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 358967.66 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 179483.83 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 179483.83 + }, + { + "year": 2024, + "MARS": "widow", + "value": 358967.66 + }, + { + "year": 2025, + "MARS": "single", + "value": 183270.94 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 366541.88 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 183270.94 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 183270.94 + }, + { + "year": 2025, + "MARS": "widow", + "value": 366541.88 + }, + { + "year": 2026, + "MARS": "single", + "value": 231927.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 282391.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 141195.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 257159.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 282391.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4", + "type": "float", + "validators": { + "range": { + "min": "II_brk3", + "max": "II_brk5" + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Tax Rate Schedules).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[183250.00, 223050.00, 111525.00, 203150.00, 223050.00], - [186350.00, 226850.00, 113425.00, 206600.00, 226850.00], - [189300.00, 230450.00, 115225.00, 209850.00, 230450.00], - [190150.00, 231450.00, 115725.00, 210800.00, 231450.00], - [191650.00, 233350.00, 116675.00, 212500.00, 233350.00], - [157500.0, 315000.0, 157500.0, 157500.0, 315000.0], - [161028.0, 322056.0, 161028.0, 161028.0, 322056.0], - [164023.12, 328046.24, 164023.12, 164023.12, 328046.24], - [167844.86, 335689.72, 167844.86, 167844.86, 335689.72], - [171688.51, 343377.01, 171688.51, 171688.51, 343377.01], - [175603.0, 351206.01, 175603.0, 175603.0, 351206.01], - [179483.83, 358967.66, 179483.83, 179483.83, 358967.66], - [183270.94, 366541.88, 183270.94, 183270.94, 366541.88], - [231927.0, 282391.0, 141195.0, 257159.0, 282391.0]], - "valid_values": {"min": "II_brk3", "max": "II_brk5"}, - "invalid_minmsg": "for II_brk3", - "invalid_maxmsg": "for II_brk5", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Income below this threshold and above tax bracket 3 is taxed at tax rate 4.", + "notes": "" + }, "II_rt5": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 5", - "description": "The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.", + "value": [ + { + "year": 2013, + "value": 0.33 + }, + { + "year": 2014, + "value": 0.33 + }, + { + "year": 2015, + "value": 0.33 + }, + { + "year": 2016, + "value": 0.33 + }, + { + "year": 2017, + "value": 0.33 + }, + { + "year": 2018, + "value": 0.32 + }, + { + "year": 2019, + "value": 0.32 + }, + { + "year": 2020, + "value": 0.32 + }, + { + "year": 2021, + "value": 0.32 + }, + { + "year": 2022, + "value": 0.32 + }, + { + "year": 2023, + "value": 0.32 + }, + { + "year": 2024, + "value": 0.32 + }, + { + "year": 2025, + "value": 0.32 + }, + { + "year": 2026, + "value": 0.33 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 5", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.33, - 0.33, - 0.33, - 0.33, - 0.33, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.33], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.", + "notes": "" + }, "II_brk5": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5", - "description": "Income below this threshold and above tax bracket 4 is taxed at tax rate 5.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 398350.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 398350.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 199175.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 398350.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 398350.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 405100.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 405100.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 202550.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 405100.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 405100.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 411500.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 411500.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 205750.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 411500.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 411500.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 206675.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 413350.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 416700.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 416700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 208350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 416700.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 416700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 204480.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 408960.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 204480.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 204480.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 408960.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 208283.33 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 416566.66 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 208283.33 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 208283.33 + }, + { + "year": 2020, + "MARS": "widow", + "value": 416566.66 + }, + { + "year": 2021, + "MARS": "single", + "value": 213136.33 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 426272.66 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 213136.33 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 213136.33 + }, + { + "year": 2021, + "MARS": "widow", + "value": 426272.66 + }, + { + "year": 2022, + "MARS": "single", + "value": 218017.15 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 436034.3 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 218017.15 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 218017.15 + }, + { + "year": 2022, + "MARS": "widow", + "value": 436034.3 + }, + { + "year": 2023, + "MARS": "single", + "value": 222987.94 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 445975.89 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 222987.94 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 222987.94 + }, + { + "year": 2023, + "MARS": "widow", + "value": 445975.89 + }, + { + "year": 2024, + "MARS": "single", + "value": 227915.98 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 455831.95 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 227915.98 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 227915.98 + }, + { + "year": 2024, + "MARS": "widow", + "value": 455831.95 + }, + { + "year": 2025, + "MARS": "single", + "value": 232725.0 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 465450.01 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 232725.0 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 232725.0 + }, + { + "year": 2025, + "MARS": "widow", + "value": 465450.01 + }, + { + "year": 2026, + "MARS": "single", + "value": 504273.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 504273.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 252137.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 504273.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 504273.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5", + "type": "float", + "validators": { + "range": { + "min": "II_brk4", + "max": "II_brk6" + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[398350.00, 398350.00, 199175.00, 398350.00, 398350.00], - [405100.00, 405100.00, 202550.00, 405100.00, 405100.00], - [411500.00, 411500.00, 205750.00, 411500.00, 411500.00], - [413350.00, 413350.00, 206675.00, 413350.00, 413350.00], - [416700.00, 416700.00, 208350.00, 416700.00, 416700.00], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [204480.0, 408960.0, 204480.0, 204480.0, 408960.0], - [208283.33, 416566.66, 208283.33, 208283.33, 416566.66], - [213136.33, 426272.66, 213136.33, 213136.33, 426272.66], - [218017.15, 436034.3, 218017.15, 218017.15, 436034.3], - [222987.94, 445975.89, 222987.94, 222987.94, 445975.89], - [227915.98, 455831.95, 227915.98, 227915.98, 455831.95], - [232725.0, 465450.01, 232725.0, 232725.0, 465450.01], - [504273.0, 504273.0, 252137.0, 504273.0, 504273.0]], - "valid_values": {"min": "II_brk4", "max": "II_brk6"}, - "invalid_minmsg": "for II_brk4", - "invalid_maxmsg": "for II_brk6", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Income below this threshold and above tax bracket 4 is taxed at tax rate 5.", + "notes": "" + }, "II_rt6": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 6", - "description": "The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.", + "value": [ + { + "year": 2013, + "value": 0.35 + }, + { + "year": 2014, + "value": 0.35 + }, + { + "year": 2015, + "value": 0.35 + }, + { + "year": 2016, + "value": 0.35 + }, + { + "year": 2017, + "value": 0.35 + }, + { + "year": 2018, + "value": 0.35 + }, + { + "year": 2019, + "value": 0.35 + }, + { + "year": 2020, + "value": 0.35 + }, + { + "year": 2021, + "value": 0.35 + }, + { + "year": 2022, + "value": 0.35 + }, + { + "year": 2023, + "value": 0.35 + }, + { + "year": 2024, + "value": 0.35 + }, + { + "year": 2025, + "value": 0.35 + }, + { + "year": 2026, + "value": 0.35 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 6", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.", + "notes": "" + }, "II_brk6": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket 6", - "description": "Income below this threshold and above tax bracket 5 is taxed at tax rate 6.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 400000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 450000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 225000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 425000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 450000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 406750.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 457600.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 228800.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 432200.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 457600.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 413200.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 464850.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 232425.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 439000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 464850.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 415050.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 466950.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 233475.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 441000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 466950.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 418400.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 470700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 235350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 444550.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 470700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 600000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 300000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 600000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 511200.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 613440.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 306720.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 511200.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 613440.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 520708.32 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 624849.98 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 312424.99 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 520708.32 + }, + { + "year": 2020, + "MARS": "widow", + "value": 624849.98 + }, + { + "year": 2021, + "MARS": "single", + "value": 532840.82 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 639408.99 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 319704.49 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 532840.82 + }, + { + "year": 2021, + "MARS": "widow", + "value": 639408.99 + }, + { + "year": 2022, + "MARS": "single", + "value": 545042.88 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 654051.45 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 327025.73 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 545042.88 + }, + { + "year": 2022, + "MARS": "widow", + "value": 654051.45 + }, + { + "year": 2023, + "MARS": "single", + "value": 557469.86 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 668963.83 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 334481.91 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 557469.86 + }, + { + "year": 2023, + "MARS": "widow", + "value": 668963.83 + }, + { + "year": 2024, + "MARS": "single", + "value": 569789.94 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 683747.93 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 341873.96 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 569789.94 + }, + { + "year": 2024, + "MARS": "widow", + "value": 683747.93 + }, + { + "year": 2025, + "MARS": "single", + "value": 581812.51 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 698175.01 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 349087.5 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 581812.51 + }, + { + "year": 2025, + "MARS": "widow", + "value": 698175.01 + }, + { + "year": 2026, + "MARS": "single", + "value": 506331.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 569622.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 284811.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 537976.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 569622.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 6", + "type": "float", + "validators": { + "range": { + "min": "II_brk5", + "max": "II_brk7" + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[400000.00, 450000.00, 225000.00, 425000.00, 450000.00], - [406750.00, 457600.00, 228800.00, 432200.00, 457600.00], - [413200.00, 464850.00, 232425.00, 439000.00, 464850.00], - [415050.00, 466950.00, 233475.00, 441000.00, 466950.00], - [418400.00, 470700.00, 235350.00, 444550.00, 470700.00], - [500000.0, 600000.0, 300000.0, 500000.0, 600000.0], - [511200.0, 613440.0, 306720.0, 511200.0, 613440.0], - [520708.32, 624849.98, 312424.99, 520708.32, 624849.98], - [532840.82, 639408.99, 319704.49, 532840.82, 639408.99], - [545042.88, 654051.45, 327025.73, 545042.88, 654051.45], - [557469.86, 668963.83, 334481.91, 557469.86, 668963.83], - [569789.94, 683747.93, 341873.96, 569789.94, 683747.93], - [581812.51, 698175.01, 349087.5, 581812.51, 698175.01], - [506331.0, 569622.0, 284811.0, 537976.0, 569622.0]], - "valid_values": {"min": "II_brk5", "max": "II_brk7"}, - "invalid_minmsg": "for II_brk5", - "invalid_maxmsg": "for II_brk7", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Income below this threshold and above tax bracket 5 is taxed at tax rate 6.", + "notes": "" + }, "II_rt7": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 7", - "description": "The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.", + "value": [ + { + "year": 2013, + "value": 0.396 + }, + { + "year": 2014, + "value": 0.396 + }, + { + "year": 2015, + "value": 0.396 + }, + { + "year": 2016, + "value": 0.396 + }, + { + "year": 2017, + "value": 0.396 + }, + { + "year": 2018, + "value": 0.37 + }, + { + "year": 2019, + "value": 0.37 + }, + { + "year": 2020, + "value": 0.37 + }, + { + "year": 2021, + "value": 0.37 + }, + { + "year": 2022, + "value": 0.37 + }, + { + "year": 2023, + "value": 0.37 + }, + { + "year": 2024, + "value": 0.37 + }, + { + "year": 2025, + "value": 0.37 + }, + { + "year": 2026, + "value": 0.396 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 7", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.396, - 0.396, - 0.396, - 0.396, - 0.396, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.396], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.", + "notes": "" + }, "II_brk7": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket 7", - "description": "Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 7", + "type": "float", + "validators": { + "range": { + "min": "II_brk6", + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": "II_brk6", "max": 9e99}, - "invalid_minmsg": "for II_brk6", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.", + "notes": "" + }, "II_rt8": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 8", - "description": "The tax rate applied to the portion of taxable income above tax bracket 7.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 8", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The tax rate applied to the portion of taxable income above tax bracket 7.", + "notes": "" + }, "PT_rt1": { - "long_name": "Pass-through income tax rate 1", - "description": "The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.", + "value": [ + { + "year": 2013, + "value": 0.1 + }, + { + "year": 2014, + "value": 0.1 + }, + { + "year": 2015, + "value": 0.1 + }, + { + "year": 2016, + "value": 0.1 + }, + { + "year": 2017, + "value": 0.1 + }, + { + "year": 2018, + "value": 0.1 + }, + { + "year": 2019, + "value": 0.1 + }, + { + "year": 2020, + "value": 0.1 + }, + { + "year": 2021, + "value": 0.1 + }, + { + "year": 2022, + "value": 0.1 + }, + { + "year": 2023, + "value": 0.1 + }, + { + "year": 2024, + "value": 0.1 + }, + { + "year": 2025, + "value": 0.1 + }, + { + "year": 2026, + "value": 0.1 + } + ], + "title": "Pass-through income tax rate 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.", + "notes": "" + }, "PT_brk1": { - "long_name": "Pass-through income tax bracket (upper threshold) 1", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 8925.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 17850.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 8925.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 12750.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 17850.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 9075.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 18150.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9075.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 12950.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 18150.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 9225.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 18450.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9225.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 13150.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 18450.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 9275.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 18550.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9275.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 13250.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 18550.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 9325.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 18650.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9325.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 13350.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 18650.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 9525.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 19050.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9525.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 13600.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 19050.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 9738.36 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 19476.72 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9738.36 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 13904.64 + }, + { + "year": 2019, + "MARS": "widow", + "value": 19476.72 + }, + { + "year": 2020, + "MARS": "single", + "value": 9919.49 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 19838.99 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 9919.49 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 14163.27 + }, + { + "year": 2020, + "MARS": "widow", + "value": 19838.99 + }, + { + "year": 2021, + "MARS": "single", + "value": 10150.62 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 20301.24 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 10150.62 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 14493.27 + }, + { + "year": 2021, + "MARS": "widow", + "value": 20301.24 + }, + { + "year": 2022, + "MARS": "single", + "value": 10383.07 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 20766.13 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 10383.07 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 14825.17 + }, + { + "year": 2022, + "MARS": "widow", + "value": 20766.13 + }, + { + "year": 2023, + "MARS": "single", + "value": 10619.8 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 21239.6 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 10619.8 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 15163.18 + }, + { + "year": 2023, + "MARS": "widow", + "value": 21239.6 + }, + { + "year": 2024, + "MARS": "single", + "value": 10854.5 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 21709.0 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 10854.5 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 15498.29 + }, + { + "year": 2024, + "MARS": "widow", + "value": 21709.0 + }, + { + "year": 2025, + "MARS": "single", + "value": 11083.53 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 22167.06 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 11083.53 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 15825.3 + }, + { + "year": 2025, + "MARS": "widow", + "value": 22167.06 + }, + { + "year": 2026, + "MARS": "single", + "value": 11285.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 22569.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 11285.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 16156.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 22569.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "PT_brk2" + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[8925.00, 17850.00, 8925.00, 12750.00, 17850.00], - [9075.00, 18150.00, 9075.00, 12950.00, 18150.00], - [9225.00, 18450.00, 9225.00, 13150.00, 18450.00], - [9275.00, 18550.00, 9275.00, 13250.00, 18550.00], - [9325.00, 18650.00, 9325.00, 13350.00, 18650.00], - [9525.0, 19050.0, 9525.0, 13600.0, 19050.0], - [9738.36, 19476.72, 9738.36, 13904.64, 19476.72], - [9919.49, 19838.99, 9919.49, 14163.27, 19838.99], - [10150.62, 20301.24, 10150.62, 14493.27, 20301.24], - [10383.07, 20766.13, 10383.07, 14825.17, 20766.13], - [10619.8, 21239.6, 10619.8, 15163.18, 21239.6], - [10854.5, 21709.0, 10854.5, 15498.29, 21709.0], - [11083.53, 22167.06, 11083.53, 15825.3, 22167.06], - [11285.0, 22569.0, 11285.0, 16156.0, 22569.0]], - "valid_values": {"min": 0, "max": "PT_brk2"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for PT_brk2", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.", + "notes": "" + }, "PT_rt2": { - "long_name": "Pass-through income tax rate 2", - "description": "The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.", + "value": [ + { + "year": 2013, + "value": 0.15 + }, + { + "year": 2014, + "value": 0.15 + }, + { + "year": 2015, + "value": 0.15 + }, + { + "year": 2016, + "value": 0.15 + }, + { + "year": 2017, + "value": 0.15 + }, + { + "year": 2018, + "value": 0.12 + }, + { + "year": 2019, + "value": 0.12 + }, + { + "year": 2020, + "value": 0.12 + }, + { + "year": 2021, + "value": 0.12 + }, + { + "year": 2022, + "value": 0.12 + }, + { + "year": 2023, + "value": 0.12 + }, + { + "year": 2024, + "value": 0.12 + }, + { + "year": 2025, + "value": 0.12 + }, + { + "year": 2026, + "value": 0.15 + } + ], + "title": "Pass-through income tax rate 2", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.15, - 0.15, - 0.15, - 0.15, - 0.15, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.15], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.", + "notes": "" + }, "PT_brk2": { - "long_name": "Pass-through income tax bracket (upper threshold) 2", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 72500.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 48600.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 72500.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 73800.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 49400.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 73800.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 74900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 50200.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 74900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 75300.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 50400.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 75300.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 75900.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 50800.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 75900.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 38700.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 77400.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 38700.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 51800.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 77400.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 39566.88 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 79133.76 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 39566.88 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 52960.32 + }, + { + "year": 2019, + "MARS": "widow", + "value": 79133.76 + }, + { + "year": 2020, + "MARS": "single", + "value": 40302.82 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 80605.65 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 40302.82 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 53945.38 + }, + { + "year": 2020, + "MARS": "widow", + "value": 80605.65 + }, + { + "year": 2021, + "MARS": "single", + "value": 41241.88 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 82483.76 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 41241.88 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 55202.31 + }, + { + "year": 2021, + "MARS": "widow", + "value": 82483.76 + }, + { + "year": 2022, + "MARS": "single", + "value": 42186.32 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 84372.64 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 42186.32 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 56466.44 + }, + { + "year": 2022, + "MARS": "widow", + "value": 84372.64 + }, + { + "year": 2023, + "MARS": "single", + "value": 43148.17 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 86296.33 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 43148.17 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 57753.88 + }, + { + "year": 2023, + "MARS": "widow", + "value": 86296.33 + }, + { + "year": 2024, + "MARS": "single", + "value": 44101.74 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 88203.48 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 44101.74 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 59030.24 + }, + { + "year": 2024, + "MARS": "widow", + "value": 88203.48 + }, + { + "year": 2025, + "MARS": "single", + "value": 45032.29 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 90064.58 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 45032.29 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 60275.78 + }, + { + "year": 2025, + "MARS": "widow", + "value": 90064.58 + }, + { + "year": 2026, + "MARS": "single", + "value": 45926.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 91851.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 45926.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 61476.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 91851.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 2", + "type": "float", + "validators": { + "range": { + "min": "PT_brk1", + "max": "PT_brk3" + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[36250.00, 72500.00, 36250.00, 48600.00, 72500.00], - [36900.00, 73800.00, 36900.00, 49400.00, 73800.00], - [37450.00, 74900.00, 37450.00, 50200.00, 74900.00], - [37650.00, 75300.00, 37650.00, 50400.00, 75300.00], - [37950.00, 75900.00, 37950.00, 50800.00, 75900.00], - [38700.0, 77400.0, 38700.0, 51800.0, 77400.0], - [39566.88, 79133.76, 39566.88, 52960.32, 79133.76], - [40302.82, 80605.65, 40302.82, 53945.38, 80605.65], - [41241.88, 82483.76, 41241.88, 55202.31, 82483.76], - [42186.32, 84372.64, 42186.32, 56466.44, 84372.64], - [43148.17, 86296.33, 43148.17, 57753.88, 86296.33], - [44101.74, 88203.48, 44101.74, 59030.24, 88203.48], - [45032.29, 90064.58, 45032.29, 60275.78, 90064.58], - [45926.0, 91851.0, 45926.0, 61476.0, 91851.0]], - "valid_values": {"min": "PT_brk1", "max": "PT_brk3"}, - "invalid_minmsg": "for PT_brk1", - "invalid_maxmsg": "for PT_brk3", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.", + "notes": "" + }, "PT_rt3": { - "long_name": "Pass-through income tax rate 3", - "description": "The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.", + "value": [ + { + "year": 2013, + "value": 0.25 + }, + { + "year": 2014, + "value": 0.25 + }, + { + "year": 2015, + "value": 0.25 + }, + { + "year": 2016, + "value": 0.25 + }, + { + "year": 2017, + "value": 0.25 + }, + { + "year": 2018, + "value": 0.22 + }, + { + "year": 2019, + "value": 0.22 + }, + { + "year": 2020, + "value": 0.22 + }, + { + "year": 2021, + "value": 0.22 + }, + { + "year": 2022, + "value": 0.22 + }, + { + "year": 2023, + "value": 0.22 + }, + { + "year": 2024, + "value": 0.22 + }, + { + "year": 2025, + "value": 0.22 + }, + { + "year": 2026, + "value": 0.25 + } + ], + "title": "Pass-through income tax rate 3", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.25, - 0.25, - 0.25, - 0.25, - 0.25, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.25], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.", + "notes": "" + }, "PT_brk3": { - "long_name": "Pass-through income tax bracket (upper threshold) 3", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 87850.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 146400.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 73200.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 125450.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 146400.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 89350.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 148850.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 74425.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 127550.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 148850.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 90750.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 151200.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 75600.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 129600.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 151200.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 91150.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 151900.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 75950.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 130150.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 151900.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 91900.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 153100.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 76550.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 131200.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 153100.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 82500.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 165000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 82500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 82500.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 165000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 84348.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 168696.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 84348.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 84348.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 168696.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 85916.87 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 171833.75 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 85916.87 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 85916.87 + }, + { + "year": 2020, + "MARS": "widow", + "value": 171833.75 + }, + { + "year": 2021, + "MARS": "single", + "value": 87918.74 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 175837.47 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 87918.74 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 87918.74 + }, + { + "year": 2021, + "MARS": "widow", + "value": 175837.47 + }, + { + "year": 2022, + "MARS": "single", + "value": 89932.07 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 179864.15 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 89932.07 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 89932.07 + }, + { + "year": 2022, + "MARS": "widow", + "value": 179864.15 + }, + { + "year": 2023, + "MARS": "single", + "value": 91982.53 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 183965.05 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 91982.53 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 91982.53 + }, + { + "year": 2023, + "MARS": "widow", + "value": 183965.05 + }, + { + "year": 2024, + "MARS": "single", + "value": 94015.34 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 188030.68 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 94015.34 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 94015.34 + }, + { + "year": 2024, + "MARS": "widow", + "value": 188030.68 + }, + { + "year": 2025, + "MARS": "single", + "value": 95999.06 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 191998.13 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 95999.06 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 95999.06 + }, + { + "year": 2025, + "MARS": "widow", + "value": 191998.13 + }, + { + "year": 2026, + "MARS": "single", + "value": 111214.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 185275.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 92638.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 158773.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 185275.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 3", + "type": "float", + "validators": { + "range": { + "min": "PT_brk2", + "max": "PT_brk4" + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[87850.00, 146400.00, 73200.00, 125450.00, 146400.00], - [89350.00, 148850.00, 74425.00, 127550.00, 148850.00], - [90750.00, 151200.00, 75600.00, 129600.00, 151200.00], - [91150.00, 151900.00, 75950.00, 130150.00, 151900.00], - [91900.00, 153100.00, 76550.00, 131200.00, 153100.00], - [82500.0, 165000.0, 82500.0, 82500.0, 165000.0], - [84348.0, 168696.0, 84348.0, 84348.0, 168696.0], - [85916.87, 171833.75, 85916.87, 85916.87, 171833.75], - [87918.74, 175837.47, 87918.74, 87918.74, 175837.47], - [89932.07, 179864.15, 89932.07, 89932.07, 179864.15], - [91982.53, 183965.05, 91982.53, 91982.53, 183965.05], - [94015.34, 188030.68, 94015.34, 94015.34, 188030.68], - [95999.06, 191998.13, 95999.06, 95999.06, 191998.13], - [111214.0, 185275.0, 92638.0, 158773.0, 185275.0]], - "valid_values": {"min": "PT_brk2", "max": "PT_brk4"}, - "invalid_minmsg": "for PT_brk2", - "invalid_maxmsg": "for PT_brk4", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.", + "notes": "" + }, "PT_rt4": { - "long_name": "Pass-through income tax rate 4", - "description": "The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.", + "value": [ + { + "year": 2013, + "value": 0.28 + }, + { + "year": 2014, + "value": 0.28 + }, + { + "year": 2015, + "value": 0.28 + }, + { + "year": 2016, + "value": 0.28 + }, + { + "year": 2017, + "value": 0.28 + }, + { + "year": 2018, + "value": 0.24 + }, + { + "year": 2019, + "value": 0.24 + }, + { + "year": 2020, + "value": 0.24 + }, + { + "year": 2021, + "value": 0.24 + }, + { + "year": 2022, + "value": 0.24 + }, + { + "year": 2023, + "value": 0.24 + }, + { + "year": 2024, + "value": 0.24 + }, + { + "year": 2025, + "value": 0.24 + }, + { + "year": 2026, + "value": 0.28 + } + ], + "title": "Pass-through income tax rate 4", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.28, - 0.28, - 0.28, - 0.28, - 0.28, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.28], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.", + "notes": "" + }, "PT_brk4": { - "long_name": "Pass-through income tax bracket (upper threshold) 4", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 183250.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 223050.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 111525.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 203150.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 223050.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 186350.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 226850.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 113425.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 206600.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 226850.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 189300.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 230450.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 115225.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 209850.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 230450.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 190150.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 231450.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 115725.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 210800.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 231450.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 191650.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 233350.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 116675.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 212500.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 233350.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 315000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 315000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 161028.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 322056.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 161028.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 161028.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 322056.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 164023.12 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 328046.24 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 164023.12 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 164023.12 + }, + { + "year": 2020, + "MARS": "widow", + "value": 328046.24 + }, + { + "year": 2021, + "MARS": "single", + "value": 167844.86 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 335689.72 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 167844.86 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 167844.86 + }, + { + "year": 2021, + "MARS": "widow", + "value": 335689.72 + }, + { + "year": 2022, + "MARS": "single", + "value": 171688.51 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 343377.01 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 171688.51 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 171688.51 + }, + { + "year": 2022, + "MARS": "widow", + "value": 343377.01 + }, + { + "year": 2023, + "MARS": "single", + "value": 175603.0 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 351206.01 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 175603.0 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 175603.0 + }, + { + "year": 2023, + "MARS": "widow", + "value": 351206.01 + }, + { + "year": 2024, + "MARS": "single", + "value": 179483.83 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 358967.66 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 179483.83 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 179483.83 + }, + { + "year": 2024, + "MARS": "widow", + "value": 358967.66 + }, + { + "year": 2025, + "MARS": "single", + "value": 183270.94 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 366541.88 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 183270.94 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 183270.94 + }, + { + "year": 2025, + "MARS": "widow", + "value": 366541.88 + }, + { + "year": 2026, + "MARS": "single", + "value": 231927.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 282391.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 141195.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 257159.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 282391.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 4", + "type": "float", + "validators": { + "range": { + "min": "PT_brk3", + "max": "PT_brk5" + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[183250.00, 223050.00, 111525.00, 203150.00, 223050.00], - [186350.00, 226850.00, 113425.00, 206600.00, 226850.00], - [189300.00, 230450.00, 115225.00, 209850.00, 230450.00], - [190150.00, 231450.00, 115725.00, 210800.00, 231450.00], - [191650.00, 233350.00, 116675.00, 212500.00, 233350.00], - [157500.0, 315000.0, 157500.0, 157500.0, 315000.0], - [161028.0, 322056.0, 161028.0, 161028.0, 322056.0], - [164023.12, 328046.24, 164023.12, 164023.12, 328046.24], - [167844.86, 335689.72, 167844.86, 167844.86, 335689.72], - [171688.51, 343377.01, 171688.51, 171688.51, 343377.01], - [175603.0, 351206.01, 175603.0, 175603.0, 351206.01], - [179483.83, 358967.66, 179483.83, 179483.83, 358967.66], - [183270.94, 366541.88, 183270.94, 183270.94, 366541.88], - [231927.0, 282391.0, 141195.0, 257159.0, 282391.0]], - "valid_values": {"min": "PT_brk3", "max": "PT_brk5"}, - "invalid_minmsg": "for PT_brk3", - "invalid_maxmsg": "for PT_brk5", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.", + "notes": "" + }, "PT_rt5": { - "long_name": "Pass-through income tax rate 5", - "description": "The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.", + "value": [ + { + "year": 2013, + "value": 0.33 + }, + { + "year": 2014, + "value": 0.33 + }, + { + "year": 2015, + "value": 0.33 + }, + { + "year": 2016, + "value": 0.33 + }, + { + "year": 2017, + "value": 0.33 + }, + { + "year": 2018, + "value": 0.32 + }, + { + "year": 2019, + "value": 0.32 + }, + { + "year": 2020, + "value": 0.32 + }, + { + "year": 2021, + "value": 0.32 + }, + { + "year": 2022, + "value": 0.32 + }, + { + "year": 2023, + "value": 0.32 + }, + { + "year": 2024, + "value": 0.32 + }, + { + "year": 2025, + "value": 0.32 + }, + { + "year": 2026, + "value": 0.33 + } + ], + "title": "Pass-through income tax rate 5", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.33, - 0.33, - 0.33, - 0.33, - 0.33, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.33], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - - "PT_brk5": { - "long_name": "Pass-through income tax bracket (upper threshold) 5", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.", + "indexable": false, + "indexed": false, + "description": "The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.", + "notes": "" + }, + "PT_brk5": { + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 398350.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 398350.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 199175.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 398350.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 398350.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 405100.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 405100.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 202550.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 405100.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 405100.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 411500.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 411500.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 205750.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 411500.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 411500.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 206675.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 413350.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 416700.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 416700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 208350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 416700.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 416700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 204480.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 408960.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 204480.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 204480.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 408960.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 208283.33 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 416566.66 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 208283.33 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 208283.33 + }, + { + "year": 2020, + "MARS": "widow", + "value": 416566.66 + }, + { + "year": 2021, + "MARS": "single", + "value": 213136.33 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 426272.66 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 213136.33 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 213136.33 + }, + { + "year": 2021, + "MARS": "widow", + "value": 426272.66 + }, + { + "year": 2022, + "MARS": "single", + "value": 218017.15 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 436034.3 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 218017.15 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 218017.15 + }, + { + "year": 2022, + "MARS": "widow", + "value": 436034.3 + }, + { + "year": 2023, + "MARS": "single", + "value": 222987.94 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 445975.89 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 222987.94 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 222987.94 + }, + { + "year": 2023, + "MARS": "widow", + "value": 445975.89 + }, + { + "year": 2024, + "MARS": "single", + "value": 227915.98 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 455831.95 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 227915.98 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 227915.98 + }, + { + "year": 2024, + "MARS": "widow", + "value": 455831.95 + }, + { + "year": 2025, + "MARS": "single", + "value": 232725.0 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 465450.01 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 232725.0 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 232725.0 + }, + { + "year": 2025, + "MARS": "widow", + "value": 465450.01 + }, + { + "year": 2026, + "MARS": "single", + "value": 504273.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 504273.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 252137.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 504273.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 504273.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 5", + "type": "float", + "validators": { + "range": { + "min": "PT_brk4", + "max": "PT_brk6" + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[398350.00, 398350.00, 199175.00, 398350.00, 398350.00], - [405100.00, 405100.00, 202550.00, 405100.00, 405100.00], - [411500.00, 411500.00, 205750.00, 411500.00, 411500.00], - [413350.00, 413350.00, 206675.00, 413350.00, 413350.00], - [416700.00, 416700.00, 208350.00, 416700.00, 416700.00], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [204480.0, 408960.0, 204480.0, 204480.0, 408960.0], - [208283.33, 416566.66, 208283.33, 208283.33, 416566.66], - [213136.33, 426272.66, 213136.33, 213136.33, 426272.66], - [218017.15, 436034.3, 218017.15, 218017.15, 436034.3], - [222987.94, 445975.89, 222987.94, 222987.94, 445975.89], - [227915.98, 455831.95, 227915.98, 227915.98, 455831.95], - [232725.0, 465450.01, 232725.0, 232725.0, 465450.01], - [504273.0, 504273.0, 252137.0, 504273.0, 504273.0]], - "valid_values": {"min": "PT_brk4", "max": "PT_brk6"}, - "invalid_minmsg": "for PT_brk4", - "invalid_maxmsg": "for PT_brk6", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.", + "notes": "" + }, "PT_rt6": { - "long_name": "Pass-through income tax rate 6", - "description": "The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.", + "value": [ + { + "year": 2013, + "value": 0.35 + }, + { + "year": 2014, + "value": 0.35 + }, + { + "year": 2015, + "value": 0.35 + }, + { + "year": 2016, + "value": 0.35 + }, + { + "year": 2017, + "value": 0.35 + }, + { + "year": 2018, + "value": 0.35 + }, + { + "year": 2019, + "value": 0.35 + }, + { + "year": 2020, + "value": 0.35 + }, + { + "year": 2021, + "value": 0.35 + }, + { + "year": 2022, + "value": 0.35 + }, + { + "year": 2023, + "value": 0.35 + }, + { + "year": 2024, + "value": 0.35 + }, + { + "year": 2025, + "value": 0.35 + }, + { + "year": 2026, + "value": 0.35 + } + ], + "title": "Pass-through income tax rate 6", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.", + "notes": "" + }, "PT_brk6": { - "long_name": "Pass-through income tax bracket (upper threshold) 6", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 400000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 450000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 225000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 425000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 450000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 406750.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 457600.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 228800.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 432200.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 457600.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 413200.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 464850.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 232425.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 439000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 464850.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 415050.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 466950.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 233475.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 441000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 466950.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 418400.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 470700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 235350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 444550.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 470700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 600000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 300000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 600000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 511200.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 613440.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 306720.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 511200.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 613440.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 520708.32 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 624849.98 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 312424.99 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 520708.32 + }, + { + "year": 2020, + "MARS": "widow", + "value": 624849.98 + }, + { + "year": 2021, + "MARS": "single", + "value": 532840.82 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 639408.99 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 319704.49 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 532840.82 + }, + { + "year": 2021, + "MARS": "widow", + "value": 639408.99 + }, + { + "year": 2022, + "MARS": "single", + "value": 545042.88 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 654051.45 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 327025.73 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 545042.88 + }, + { + "year": 2022, + "MARS": "widow", + "value": 654051.45 + }, + { + "year": 2023, + "MARS": "single", + "value": 557469.86 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 668963.83 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 334481.91 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 557469.86 + }, + { + "year": 2023, + "MARS": "widow", + "value": 668963.83 + }, + { + "year": 2024, + "MARS": "single", + "value": 569789.94 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 683747.93 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 341873.96 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 569789.94 + }, + { + "year": 2024, + "MARS": "widow", + "value": 683747.93 + }, + { + "year": 2025, + "MARS": "single", + "value": 581812.51 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 698175.01 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 349087.5 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 581812.51 + }, + { + "year": 2025, + "MARS": "widow", + "value": 698175.01 + }, + { + "year": 2026, + "MARS": "single", + "value": 506331.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 569622.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 284811.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 537976.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 569622.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 6", + "type": "float", + "validators": { + "range": { + "min": "PT_brk5", + "max": "PT_brk7" + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[400000.00, 450000.00, 225000.00, 425000.00, 450000.00], - [406750.00, 457600.00, 228800.00, 432200.00, 457600.00], - [413200.00, 464850.00, 232425.00, 439000.00, 464850.00], - [415050.00, 466950.00, 233475.00, 441000.00, 466950.00], - [418400.00, 470700.00, 235350.00, 444550.00, 470700.00], - [500000.0, 600000.0, 300000.0, 500000.0, 600000.0], - [511200.0, 613440.0, 306720.0, 511200.0, 613440.0], - [520708.32, 624849.98, 312424.99, 520708.32, 624849.98], - [532840.82, 639408.99, 319704.49, 532840.82, 639408.99], - [545042.88, 654051.45, 327025.73, 545042.88, 654051.45], - [557469.86, 668963.83, 334481.91, 557469.86, 668963.83], - [569789.94, 683747.93, 341873.96, 569789.94, 683747.93], - [581812.51, 698175.01, 349087.5, 581812.51, 698175.01], - [506331.0, 569622.0, 284811.0, 537976.0, 569622.0]], - "valid_values": {"min": "PT_brk5", "max": "PT_brk7"}, - "invalid_minmsg": "for PT_brk5", - "invalid_maxmsg": "for PT_brk7", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.", + "notes": "" + }, "PT_rt7": { - "long_name": "Pass-through income tax rate 7", - "description": "The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.", + "value": [ + { + "year": 2013, + "value": 0.396 + }, + { + "year": 2014, + "value": 0.396 + }, + { + "year": 2015, + "value": 0.396 + }, + { + "year": 2016, + "value": 0.396 + }, + { + "year": 2017, + "value": 0.396 + }, + { + "year": 2018, + "value": 0.37 + }, + { + "year": 2019, + "value": 0.37 + }, + { + "year": 2020, + "value": 0.37 + }, + { + "year": 2021, + "value": 0.37 + }, + { + "year": 2022, + "value": 0.37 + }, + { + "year": 2023, + "value": 0.37 + }, + { + "year": 2024, + "value": 0.37 + }, + { + "year": 2025, + "value": 0.37 + }, + { + "year": 2026, + "value": 0.396 + } + ], + "title": "Pass-through income tax rate 7", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.396, - 0.396, - 0.396, - 0.396, - 0.396, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.396], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.", + "notes": "" + }, "PT_brk7": { - "long_name": "Extra pass-through income tax bracket", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 6 is taxed at tax rate 7. Default value is essentially infinity.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Extra pass-through income tax bracket", + "type": "float", + "validators": { + "range": { + "min": "PT_brk6", + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": "PT_brk6", "max": 9e99}, - "invalid_minmsg": "for PT_brk6", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 6 is taxed at tax rate 7. Default value is essentially infinity.", + "notes": "" + }, "PT_rt8": { - "long_name": "Extra pass-through income tax rate", - "description": "The extra tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations above the tax bracket 7.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Extra pass-through income tax rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The extra tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations above the tax bracket 7.", + "notes": "" + }, "PT_EligibleRate_active": { - "long_name": "Share of active business income eligible for PT rate schedule", - "description": "Eligibility rate of active business income for separate pass-through rates.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Share of active business income eligible for PT rate schedule", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "", - "notes": "Active business income defined as e00900 + e26270", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Eligibility rate of active business income for separate pass-through rates.", + "notes": "Active business income defined as e00900 + e26270" + }, "PT_EligibleRate_passive": { - "long_name": "Share of passive business income eligible for PT rate schedule", - "description": "Eligibility rate of passive business income for mseparate pass-through rates.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Share of passive business income eligible for PT rate schedule", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "", - "notes": "Passive business income defined as e02000 - e26270", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "Eligibility rate of passive business income for mseparate pass-through rates.", + "notes": "Passive business income defined as e02000 - e26270" + }, "PT_wages_active_income": { - "long_name": "Wages included in (positive) active business income eligible for PT rates", - "description": "Whether active business income eligibility base for PT schedule for includes wages.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Wages included in (positive) active business income eligible for PT rates", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "", - "notes": "Only applies if active business income is positive", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "Whether active business income eligibility base for PT schedule for includes wages.", + "notes": "Only applies if active business income is positive" + }, "PT_top_stacking": { - "long_name": "PT taxable income stacked on top of regular taxable income", - "description": "Whether taxable income eligible for PT rate schedule is stacked on top of regular taxable income.", + "value": [ + { + "year": 2013, + "value": true + } + ], + "title": "PT taxable income stacked on top of regular taxable income", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [true], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Whether taxable income eligible for PT rate schedule is stacked on top of regular taxable income.", + "notes": "" + }, "PT_qbid_rt": { - "long_name": "Pass-through qualified business income deduction rate", - "description": "Fraction of pass-through business income that may be excluded from taxable income.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.2 + }, + { + "year": 2019, + "value": 0.2 + }, + { + "year": 2020, + "value": 0.2 + }, + { + "year": 2021, + "value": 0.2 + }, + { + "year": 2022, + "value": 0.2 + }, + { + "year": 2023, + "value": 0.2 + }, + { + "year": 2024, + "value": 0.2 + }, + { + "year": 2025, + "value": 0.2 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Pass-through qualified business income deduction rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "2018 IRS Publication 535, Chapter 12: Qualified Business Income Deduction", - "notes": "Applies to e00900 + e26270", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Fraction of pass-through business income that may be excluded from taxable income.", + "notes": "Applies to e00900 + e26270" + }, "PT_qbid_taxinc_thd": { - "long_name": "Lower threshold of pre-QBID taxable income", - "description": "Pre-QBID taxable income above this lower threshold implies the QBID amount begins to be limited.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 315000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 315000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 161028.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 322056.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 161028.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 161028.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 322056.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 164023.12 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 328046.24 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 164023.12 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 164023.12 + }, + { + "year": 2020, + "MARS": "widow", + "value": 328046.24 + }, + { + "year": 2021, + "MARS": "single", + "value": 167844.86 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 335689.72 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 167844.86 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 167844.86 + }, + { + "year": 2021, + "MARS": "widow", + "value": 335689.72 + }, + { + "year": 2022, + "MARS": "single", + "value": 171688.51 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 343377.01 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 171688.51 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 171688.51 + }, + { + "year": 2022, + "MARS": "widow", + "value": 343377.01 + }, + { + "year": 2023, + "MARS": "single", + "value": 175603.0 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 351206.01 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 175603.0 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 175603.0 + }, + { + "year": 2023, + "MARS": "widow", + "value": 351206.01 + }, + { + "year": 2024, + "MARS": "single", + "value": 179483.83 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 358967.66 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 179483.83 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 179483.83 + }, + { + "year": 2024, + "MARS": "widow", + "value": 358967.66 + }, + { + "year": 2025, + "MARS": "single", + "value": 183270.94 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 366541.88 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 183270.94 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 183270.94 + }, + { + "year": 2025, + "MARS": "widow", + "value": 366541.88 + }, + { + "year": 2026, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Lower threshold of pre-QBID taxable income", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "2018 IRS Publication 535, Chapter 12: Qualified Business Income Deduction", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [157500.0, 315000.0, 157500.0, 157500.0, 315000.0], - [161028.0, 322056.0, 161028.0, 161028.0, 322056.0], - [164023.12, 328046.24, 164023.12, 164023.12, 328046.24], - [167844.86, 335689.72, 167844.86, 167844.86, 335689.72], - [171688.51, 343377.01, 171688.51, 171688.51, 343377.01], - [175603.0, 351206.01, 175603.0, 175603.0, 351206.01], - [179483.83, 358967.66, 179483.83, 179483.83, 358967.66], - [183270.94, 366541.88, 183270.94, 183270.94, 366541.88], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Pre-QBID taxable income above this lower threshold implies the QBID amount begins to be limited.", + "notes": "" + }, "PT_qbid_taxinc_gap": { - "long_name": "Dollar gap between upper and lower threshold of pre-QBID taxable income", - "description": "Pre-QBID taxable income above this upper threshold implies the QBID amount is even more limited.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 1.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 1.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 1.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 1.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 1.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 1.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 1.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 1.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 1.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 1.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 1.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 1.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 1.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 1.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 1.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 1.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 1.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 1.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 1.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 1.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 1.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 1.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 1.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 1.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 1.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2020, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2021, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2021, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2022, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2022, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2023, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2023, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2024, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2024, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2025, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2025, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2026, + "MARS": "single", + "value": 1.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 1.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 1.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 1.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 1.0 + } + ], + "title": "Dollar gap between upper and lower threshold of pre-QBID taxable income", + "type": "float", + "validators": { + "range": { + "min": 1, + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "2018 IRS Publication 535, Chapter 12: Qualified Business Income Deduction", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[1.0, 1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0, 1.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [1.0, 1.0, 1.0, 1.0, 1.0]], - "valid_values": {"min": 1, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Pre-QBID taxable income above this upper threshold implies the QBID amount is even more limited.", + "notes": "" + }, "PT_qbid_w2_wages_rt": { - "long_name": "QBID cap rate on pass-through business W-2 wages paid", - "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.5 + }, + { + "year": 2019, + "value": 0.5 + }, + { + "year": 2020, + "value": 0.5 + }, + { + "year": 2021, + "value": 0.5 + }, + { + "year": 2022, + "value": 0.5 + }, + { + "year": 2023, + "value": 0.5 + }, + { + "year": 2024, + "value": 0.5 + }, + { + "year": 2025, + "value": 0.5 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "QBID cap rate on pass-through business W-2 wages paid", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "2018 IRS Publication 535, Chapter 12: Qualified Business Income Deduction", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds.", + "notes": "" + }, "PT_qbid_alt_w2_wages_rt": { - "long_name": "Alternative QBID cap rate on pass-through business W-2 wages paid", - "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business plus some fraction of business property if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.25 + }, + { + "year": 2019, + "value": 0.25 + }, + { + "year": 2020, + "value": 0.25 + }, + { + "year": 2021, + "value": 0.25 + }, + { + "year": 2022, + "value": 0.25 + }, + { + "year": 2023, + "value": 0.25 + }, + { + "year": 2024, + "value": 0.25 + }, + { + "year": 2025, + "value": 0.25 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Alternative QBID cap rate on pass-through business W-2 wages paid", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "2018 IRS Publication 535, Chapter 12: Qualified Business Income Deduction", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.25, - 0.25, - 0.25, - 0.25, - 0.25, - 0.25, - 0.25, - 0.25, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business plus some fraction of business property if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", + "notes": "" + }, "PT_qbid_alt_property_rt": { - "long_name": "Alternative QBID cap rate on pass-through business property owned", - "description": "QBID is capped at this fraction of business property owned plus some fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.025 + }, + { + "year": 2019, + "value": 0.025 + }, + { + "year": 2020, + "value": 0.025 + }, + { + "year": 2021, + "value": 0.025 + }, + { + "year": 2022, + "value": 0.025 + }, + { + "year": 2023, + "value": 0.025 + }, + { + "year": 2024, + "value": 0.025 + }, + { + "year": 2025, + "value": 0.025 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Alternative QBID cap rate on pass-through business property owned", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "2018 IRS Publication 535, Chapter 12: Qualified Business Income Deduction", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.025, - 0.025, - 0.025, - 0.025, - 0.025, - 0.025, - 0.025, - 0.025, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "QBID is capped at this fraction of business property owned plus some fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", + "notes": "" + }, "AMT_em": { - "long_name": "AMT exemption amount", - "description": "The amount of AMT taxable income exempted from AMT.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 51900.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 80800.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 40400.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 51900.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 80800.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 52800.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 82100.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 41050.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 52800.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 82100.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 53600.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 83400.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 41700.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 53600.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 83400.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 53900.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 83800.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 41900.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 53900.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 83800.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 54300.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 84500.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 42250.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 54300.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 84500.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 70300.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 109400.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 54700.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 70300.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 109400.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 71874.72 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 111850.56 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 55925.28 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 71874.72 + }, + { + "year": 2019, + "MARS": "widow", + "value": 111850.56 + }, + { + "year": 2020, + "MARS": "single", + "value": 73211.59 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 113930.98 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 56965.49 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 73211.59 + }, + { + "year": 2020, + "MARS": "widow", + "value": 113930.98 + }, + { + "year": 2021, + "MARS": "single", + "value": 74917.42 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 116585.57 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 58292.79 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 74917.42 + }, + { + "year": 2021, + "MARS": "widow", + "value": 116585.57 + }, + { + "year": 2022, + "MARS": "single", + "value": 76633.03 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 119255.38 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 59627.69 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 76633.03 + }, + { + "year": 2022, + "MARS": "widow", + "value": 119255.38 + }, + { + "year": 2023, + "MARS": "single", + "value": 78380.26 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 121974.4 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 60987.2 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 78380.26 + }, + { + "year": 2023, + "MARS": "widow", + "value": 121974.4 + }, + { + "year": 2024, + "MARS": "single", + "value": 80112.47 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 124670.04 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 62335.02 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 80112.47 + }, + { + "year": 2024, + "MARS": "widow", + "value": 124670.04 + }, + { + "year": 2025, + "MARS": "single", + "value": 81802.84 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 127300.58 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 63650.29 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 81802.84 + }, + { + "year": 2025, + "MARS": "widow", + "value": 127300.58 + }, + { + "year": 2026, + "MARS": "single", + "value": 65712.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 102258.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 51129.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 65712.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 102258.0 + } + ], + "title": "AMT exemption amount", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "section_3": "Exemption", - "irs_ref": "Form 1040 (Schedule 2), line 45, instruction (Worksheet).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[51900.00, 80800.00, 40400.00, 51900.00, 80800.00], - [52800.00, 82100.00, 41050.00, 52800.00, 82100.00], - [53600.00, 83400.00, 41700.00, 53600.00, 83400.00], - [53900.00, 83800.00, 41900.00, 53900.00, 83800.00], - [54300.00, 84500.00, 42250.00, 54300.00, 84500.00], - [70300.0, 109400.0, 54700.0, 70300.0, 109400.0], - [71874.72, 111850.56, 55925.28, 71874.72, 111850.56], - [73211.59, 113930.98, 56965.49, 73211.59, 113930.98], - [74917.42, 116585.57, 58292.79, 74917.42, 116585.57], - [76633.03, 119255.38, 59627.69, 76633.03, 119255.38], - [78380.26, 121974.4, 60987.2, 78380.26, 121974.4], - [80112.47, 124670.04, 62335.02, 80112.47, 124670.04], - [81802.84, 127300.58, 63650.29, 81802.84, 127300.58], - [65712.0, 102258.0, 51129.0, 65712.0, 102258.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The amount of AMT taxable income exempted from AMT.", + "notes": "" + }, "AMT_prt": { - "long_name": "AMT exemption phaseout rate", - "description": "AMT exemption will decrease at this rate for each dollar of AMT taxable income exceeding AMT phaseout start.", + "value": [ + { + "year": 2013, + "value": 0.25 + } + ], + "title": "AMT exemption phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "section_3": "Exemption", - "irs_ref": "Form 1040 (Schedule 2), line 45, instruction (Worksheet).", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.25], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "AMT exemption will decrease at this rate for each dollar of AMT taxable income exceeding AMT phaseout start.", + "notes": "" + }, "AMT_em_ps": { - "long_name": "AMT exemption phaseout start", - "description": "AMT exemption starts to decrease when AMT taxable income goes beyond this threshold.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 115400.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 153900.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 76950.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 115400.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 153900.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 117300.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 156500.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 78250.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 117300.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 156500.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 119200.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 158900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 79450.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 119200.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 158900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 119700.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 159700.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 79850.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 119700.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 159700.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 120700.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 160900.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 80450.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 120700.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 160900.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 1000000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 511200.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 1022400.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 511200.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 511200.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 1022400.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 520708.32 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 1041416.64 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 520708.32 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 520708.32 + }, + { + "year": 2020, + "MARS": "widow", + "value": 1041416.64 + }, + { + "year": 2021, + "MARS": "single", + "value": 532840.82 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 1065681.65 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 532840.82 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 532840.82 + }, + { + "year": 2021, + "MARS": "widow", + "value": 1065681.65 + }, + { + "year": 2022, + "MARS": "single", + "value": 545042.88 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 1090085.76 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 545042.88 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 545042.88 + }, + { + "year": 2022, + "MARS": "widow", + "value": 1090085.76 + }, + { + "year": 2023, + "MARS": "single", + "value": 557469.86 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 1114939.71 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 557469.86 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 557469.86 + }, + { + "year": 2023, + "MARS": "widow", + "value": 1114939.71 + }, + { + "year": 2024, + "MARS": "single", + "value": 569789.94 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 1139579.88 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 569789.94 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 569789.94 + }, + { + "year": 2024, + "MARS": "widow", + "value": 1139579.88 + }, + { + "year": 2025, + "MARS": "single", + "value": 581812.51 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 1163625.02 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 581812.51 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 581812.51 + }, + { + "year": 2025, + "MARS": "widow", + "value": 1163625.02 + }, + { + "year": 2026, + "MARS": "single", + "value": 146066.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 194715.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 97357.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 146066.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 194715.0 + } + ], + "title": "AMT exemption phaseout start", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "section_3": "Exemption", - "irs_ref": "Form 1040 (Schedule 2), line 45, instruction (Worksheet).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[115400.00, 153900.00, 76950.00, 115400.00, 153900.00], - [117300.00, 156500.00, 78250.00, 117300.00, 156500.00], - [119200.00, 158900.00, 79450.00, 119200.00, 158900.00], - [119700.00, 159700.00, 79850.00, 119700.00, 159700.00], - [120700.00, 160900.00, 80450.00, 120700.00, 160900.00], - [500000.0, 1000000.0, 500000.0, 500000.0, 1000000.0], - [511200.0, 1022400.0, 511200.0, 511200.0, 1022400.0], - [520708.32, 1041416.64, 520708.32, 520708.32, 1041416.64], - [532840.82, 1065681.65, 532840.82, 532840.82, 1065681.65], - [545042.88, 1090085.76, 545042.88, 545042.88, 1090085.76], - [557469.86, 1114939.71, 557469.86, 557469.86, 1114939.71], - [569789.94, 1139579.88, 569789.94, 569789.94, 1139579.88], - [581812.51, 1163625.02, 581812.51, 581812.51, 1163625.02], - [146066.0, 194715.0, 97357.0, 146066.0, 194715.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "AMT exemption starts to decrease when AMT taxable income goes beyond this threshold.", + "notes": "" + }, "AMT_child_em": { - "long_name": "Child AMT exemption additional income base", - "description": "The child's AMT exemption is capped by this amount plus the child's earned income.", + "value": [ + { + "year": 2013, + "value": 7150.0 + }, + { + "year": 2014, + "value": 7250.0 + }, + { + "year": 2015, + "value": 7400.0 + }, + { + "year": 2016, + "value": 7400.0 + }, + { + "year": 2017, + "value": 7500.0 + }, + { + "year": 2018, + "value": 7600.0 + } + ], + "title": "Child AMT exemption additional income base", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 6251, line 5, instruction.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [7150.0, - 7250.0, - 7400.0, - 7400.0, - 7500.0, - 7600.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The child's AMT exemption is capped by this amount plus the child's earned income.", + "notes": "" + }, "AMT_child_em_c_age": { - "long_name": "Age ceiling for special AMT exemption", - "description": "Individuals under this age must use the child AMT exemption rules.", + "value": [ + { + "year": 2013, + "value": 18 + } + ], + "title": "Age ceiling for special AMT exemption", + "type": "int", + "validators": { + "range": { + "min": 0, + "max": 30 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 6251, line 5, instruction.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "integer", - "value": [18], - "valid_values": {"min": 0, "max": 30}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Individuals under this age must use the child AMT exemption rules.", + "notes": "" + }, "AMT_rt1": { - "long_name": "AMT rate 1", - "description": "The tax rate applied to the portion of AMT taxable income below the surtax threshold, AMT bracket 1.", + "value": [ + { + "year": 2013, + "value": 0.26 + } + ], + "title": "AMT rate 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "section_3": "Tax rates", - "irs_ref": "Form 6251, line 7, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.26], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The tax rate applied to the portion of AMT taxable income below the surtax threshold, AMT bracket 1.", + "notes": "" + }, "AMT_brk1": { - "long_name": "AMT bracket 1 (upper threshold)", - "description": "AMT taxable income below this is subject to AMT rate 1 and above it is subject to AMT rate 1 + the additional AMT rate.", + "value": [ + { + "year": 2013, + "value": 179500.0 + }, + { + "year": 2014, + "value": 182500.0 + }, + { + "year": 2015, + "value": 185400.0 + }, + { + "year": 2016, + "value": 186300.0 + }, + { + "year": 2017, + "value": 187800.0 + }, + { + "year": 2018, + "value": 191100.0 + } + ], + "title": "AMT bracket 1 (upper threshold)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "section_3": "Tax rates", - "irs_ref": "Form 6251, line 7, instruction.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [179500.0, - 182500.0, - 185400.0, - 186300.0, - 187800.0, - 191100.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "AMT taxable income below this is subject to AMT rate 1 and above it is subject to AMT rate 1 + the additional AMT rate.", + "notes": "" + }, "AMT_rt2": { - "long_name": "Additional AMT rate for AMT taxable income above AMT bracket 1", - "description": "The additional tax rate applied to the portion of AMT income above the AMT bracket 1.", + "value": [ + { + "year": 2013, + "value": 0.02 + } + ], + "title": "Additional AMT rate for AMT taxable income above AMT bracket 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "section_3": "Tax rates", - "irs_ref": "Form 6251, line 7, in-line. ", - "notes": "This is the additional tax rate (on top of AMT rate 1) for AMT income above AMT bracket 1.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.02], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The additional tax rate applied to the portion of AMT income above the AMT bracket 1.", + "notes": "This is the additional tax rate (on top of AMT rate 1) for AMT income above AMT bracket 1." + }, "AMT_em_pe": { - "long_name": "AMT exemption phaseout ending AMT taxable income for Married filing Separately", - "description": "The AMT exemption is entirely disallowed beyond this AMT taxable income level for individuals who are married but filing separately.", + "value": [ + { + "year": 2013, + "value": 238550.0 + }, + { + "year": 2014, + "value": 242450.0 + }, + { + "year": 2015, + "value": 246250.0 + }, + { + "year": 2016, + "value": 247450.0 + }, + { + "year": 2017, + "value": 249450.0 + }, + { + "year": 2018, + "value": 718800.0 + }, + { + "year": 2019, + "value": 734901.12 + }, + { + "year": 2020, + "value": 748570.28 + }, + { + "year": 2021, + "value": 766011.97 + }, + { + "year": 2022, + "value": 783553.64 + }, + { + "year": 2023, + "value": 801418.67 + }, + { + "year": 2024, + "value": 819130.02 + }, + { + "year": 2025, + "value": 836413.66 + }, + { + "year": 2026, + "value": 301874.0 + } + ], + "title": "AMT exemption phaseout ending AMT taxable income for Married filing Separately", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 6251, line 4, instruction.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [238550.0, - 242450.0, - 246250.0, - 247450.0, - 249450.0, - 718800.0, - 734901.12, - 748570.28, - 766011.97, - 783553.64, - 801418.67, - 819130.02, - 836413.66, - 301874.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "description": "The AMT exemption is entirely disallowed beyond this AMT taxable income level for individuals who are married but filing separately.", + "notes": "" + }, "CDCC_c": { - "long_name": "Maximum child & dependent care credit per dependent", - "description": "The maximum amount of credit allowed for each qualifying dependent.", + "value": [ + { + "year": 2013, + "value": 3000.0 + } + ], + "title": "Maximum child & dependent care credit per dependent", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 3000 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Child And Dependent Care", - "irs_ref": "Form 2441, line 3, in-line.", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [3000.0], - "valid_values": {"min": 0, "max": 3000}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The maximum amount of credit allowed for each qualifying dependent.", + "notes": "" + }, "CDCC_ps": { - "long_name": "Child & dependent care credit phaseout start", - "description": "For taxpayers with AGI over this amount, the credit is reduced by one percentage point each $2000 of AGI over this amount.", + "value": [ + { + "year": 2013, + "value": 15000.0 + } + ], + "title": "Child & dependent care credit phaseout start", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Child And Dependent Care", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [15000.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "For taxpayers with AGI over this amount, the credit is reduced by one percentage point each $2000 of AGI over this amount.", + "notes": "" + }, "CDCC_crt": { - "long_name": "Child & dependent care credit phaseout percentage rate ceiling", - "description": "The maximum percentage rate in the AGI phaseout; this percentage rate decreases as AGI rises above the CDCC_ps level.", + "value": [ + { + "year": 2013, + "value": 35.0 + } + ], + "title": "Child & dependent care credit phaseout percentage rate ceiling", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 100 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Child And Dependent Care", - "irs_ref": "Form 2241, line 8, in-line.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [35.0], - "valid_values": {"min": 0, "max": 100}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The maximum percentage rate in the AGI phaseout; this percentage rate decreases as AGI rises above the CDCC_ps level.", + "notes": "" + }, "CTC_c": { - "long_name": "Maximum nonrefundable child tax credit per child", - "description": "The maximum nonrefundable credit allowed for each child.", + "value": [ + { + "year": 2013, + "value": 1000.0 + }, + { + "year": 2014, + "value": 1000.0 + }, + { + "year": 2015, + "value": 1000.0 + }, + { + "year": 2016, + "value": 1000.0 + }, + { + "year": 2017, + "value": 1000.0 + }, + { + "year": 2018, + "value": 2000.0 + }, + { + "year": 2019, + "value": 2000.0 + }, + { + "year": 2020, + "value": 2000.0 + }, + { + "year": 2021, + "value": 2000.0 + }, + { + "year": 2022, + "value": 2000.0 + }, + { + "year": 2023, + "value": 2000.0 + }, + { + "year": 2024, + "value": 2000.0 + }, + { + "year": 2025, + "value": 2000.0 + }, + { + "year": 2026, + "value": 1000.0 + } + ], + "title": "Maximum nonrefundable child tax credit per child", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Child Tax Credit", - "irs_ref": "Form 1040, line 12, worksheet, line 1.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1000.0, - 1000.0, - 1000.0, - 1000.0, - 1000.0, - 2000.0, - 2000.0, - 2000.0, - 2000.0, - 2000.0, - 2000.0, - 2000.0, - 2000.0, - 1000.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The maximum nonrefundable credit allowed for each child.", + "notes": "" + }, "CTC_c_under5_bonus": { - "long_name": "Bonus child tax credit maximum for qualifying children under five", - "description": "The maximum amount of child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Bonus child tax credit maximum for qualifying children under five", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Child Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The maximum amount of child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", + "notes": "" + }, "CTC_ps": { - "long_name": "Child tax credit phaseout MAGI start", - "description": "Child tax credit begins to decrease when MAGI is above this level; read descriptions of the dependent credit amounts for how they phase out when MAGI is above this level.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 75000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 110000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 55000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 75000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 75000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 75000.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 110000.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 55000.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 75000.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 75000.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 75000.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 110000.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 55000.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 75000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 75000.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 75000.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 110000.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 55000.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 75000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 75000.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 75000.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 110000.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 55000.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 75000.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 75000.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2020, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2021, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2021, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2022, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2022, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2023, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2023, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2024, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2024, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2025, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2025, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2026, + "MARS": "single", + "value": 75000.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 110000.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 55000.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 75000.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 75000.0 + } + ], + "title": "Child tax credit phaseout MAGI start", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Child Tax Credit", - "irs_ref": "Form 1040, line 12, worksheet, line 5.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[75000.0, 110000.0, 55000.0, 75000.0, 75000.0], - [75000.0, 110000.0, 55000.0, 75000.0, 75000.0], - [75000.0, 110000.0, 55000.0, 75000.0, 75000.0], - [75000.0, 110000.0, 55000.0, 75000.0, 75000.0], - [75000.0, 110000.0, 55000.0, 75000.0, 75000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "Child tax credit begins to decrease when MAGI is above this level; read descriptions of the dependent credit amounts for how they phase out when MAGI is above this level.", + "notes": "" + }, "CTC_prt": { - "long_name": "Child and dependent tax credit phaseout rate", - "description": "The amount of the credit starts to decrease at this rate if MAGI is higher than child tax credit phaseout start.", + "value": [ + { + "year": 2013, + "value": 0.05 + } + ], + "title": "Child and dependent tax credit phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Child Tax Credit", - "irs_ref": "Form 1040, line 12, instruction (child tax credit worksheet, line 7)", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.05], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The amount of the credit starts to decrease at this rate if MAGI is higher than child tax credit phaseout start.", + "notes": "" + }, "ACTC_c": { - "long_name": "Maximum refundable additional child tax credit", - "description": "This refundable credit is applied to child dependents and phases out exactly like the CTC amount.", + "value": [ + { + "year": 2013, + "value": 1000.0 + }, + { + "year": 2014, + "value": 1000.0 + }, + { + "year": 2015, + "value": 1000.0 + }, + { + "year": 2016, + "value": 1000.0 + }, + { + "year": 2017, + "value": 1000.0 + }, + { + "year": 2018, + "value": 1400.0 + }, + { + "year": 2019, + "value": 1400.0 + }, + { + "year": 2020, + "value": 1400.0 + }, + { + "year": 2021, + "value": 1400.0 + }, + { + "year": 2022, + "value": 1500.0 + }, + { + "year": 2023, + "value": 1500.0 + }, + { + "year": 2024, + "value": 1500.0 + }, + { + "year": 2025, + "value": 1600.0 + }, + { + "year": 2026, + "value": 1000.0 + } + ], + "title": "Maximum refundable additional child tax credit", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "CTC_c" + } + }, "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1000.0, - 1000.0, - 1000.0, - 1000.0, - 1000.0, - 1400.0, - 1400.0, - 1400.0, - 1400.0, - 1500.0, - 1500.0, - 1500.0, - 1600.0, - 1000.0], - "valid_values": {"min": 0, "max": "CTC_c"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for CTC_c", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "This refundable credit is applied to child dependents and phases out exactly like the CTC amount.", + "notes": "" + }, "ODC_c": { - "long_name": "Maximum nonrefundable other-dependent credit", - "description": "This nonrefundable credit is applied to non-child dependents and phases out along with the CTC amount.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 500.0 + }, + { + "year": 2019, + "value": 500.0 + }, + { + "year": 2020, + "value": 500.0 + }, + { + "year": 2021, + "value": 500.0 + }, + { + "year": 2022, + "value": 500.0 + }, + { + "year": 2023, + "value": 500.0 + }, + { + "year": 2024, + "value": 500.0 + }, + { + "year": 2025, + "value": 500.0 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Maximum nonrefundable other-dependent credit", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Other Dependent Tax Credit", - "irs_ref": "Form 1040, line 12, instruction (child tax credit worksheet, line 2)", - "notes": "Became current-law policy with passage of TCJA", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 500.0, - 500.0, - 500.0, - 500.0, - 500.0, - 500.0, - 500.0, - 500.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "This nonrefundable credit is applied to non-child dependents and phases out along with the CTC amount.", + "notes": "Became current-law policy with passage of TCJA" + }, "NIIT_thd": { - "long_name": "Net Investment Income Tax modified AGI threshold", - "description": "If modified AGI is more than this threshold, filing unit is subject to the Net Investment Income Tax.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 250000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 125000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 250000.0 + } + ], + "title": "Net Investment Income Tax modified AGI threshold", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Other Taxes", "section_2": "Net Investment Income Tax", - "irs_ref": "Form 8960, line 14, instructions. ", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[200000.0, 250000.0, 125000.0, 200000.0, 250000.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "If modified AGI is more than this threshold, filing unit is subject to the Net Investment Income Tax.", + "notes": "" + }, "NIIT_PT_taxed": { - "long_name": "Whether or not partnership and S-corp income is in NIIT base", - "description": "false ==> partnership and S-corp income excluded from NIIT base; true ==> partnership and S-corp income is in NIIT base.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Whether or not partnership and S-corp income is in NIIT base", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Other Taxes", "section_2": "Net Investment Income Tax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "false ==> partnership and S-corp income excluded from NIIT base; true ==> partnership and S-corp income is in NIIT base.", + "notes": "" + }, "NIIT_rt": { - "long_name": "Net Investment Income Tax rate", - "description": "If modified AGI exceeds NIIT_thd, all net investment income is taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 0.038 + } + ], + "title": "Net Investment Income Tax rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Other Taxes", "section_2": "Net Investment Income Tax", - "irs_ref": "Form 8960, line 21, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.038], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "If modified AGI exceeds NIIT_thd, all net investment income is taxed at this rate.", + "notes": "" + }, "EITC_c": { - "long_name": "Maximum earned income credit", - "description": "This is the maximum amount of earned income credit taxpayers are eligible for; it depends on how many kids they have.", + "value": [ + { + "year": 2013, + "EIC": "0kids", + "value": 487.0 + }, + { + "year": 2013, + "EIC": "1kid", + "value": 3250.0 + }, + { + "year": 2013, + "EIC": "2kids", + "value": 5372.0 + }, + { + "year": 2013, + "EIC": "3+kids", + "value": 6044.0 + }, + { + "year": 2014, + "EIC": "0kids", + "value": 496.0 + }, + { + "year": 2014, + "EIC": "1kid", + "value": 3305.0 + }, + { + "year": 2014, + "EIC": "2kids", + "value": 5460.0 + }, + { + "year": 2014, + "EIC": "3+kids", + "value": 6143.0 + }, + { + "year": 2015, + "EIC": "0kids", + "value": 503.0 + }, + { + "year": 2015, + "EIC": "1kid", + "value": 3359.0 + }, + { + "year": 2015, + "EIC": "2kids", + "value": 5548.0 + }, + { + "year": 2015, + "EIC": "3+kids", + "value": 6242.0 + }, + { + "year": 2016, + "EIC": "0kids", + "value": 506.0 + }, + { + "year": 2016, + "EIC": "1kid", + "value": 3373.0 + }, + { + "year": 2016, + "EIC": "2kids", + "value": 5572.0 + }, + { + "year": 2016, + "EIC": "3+kids", + "value": 6269.0 + }, + { + "year": 2017, + "EIC": "0kids", + "value": 510.0 + }, + { + "year": 2017, + "EIC": "1kid", + "value": 3400.0 + }, + { + "year": 2017, + "EIC": "2kids", + "value": 5616.0 + }, + { + "year": 2017, + "EIC": "3+kids", + "value": 6318.0 + }, + { + "year": 2018, + "EIC": "0kids", + "value": 519.0 + }, + { + "year": 2018, + "EIC": "1kid", + "value": 3461.0 + }, + { + "year": 2018, + "EIC": "2kids", + "value": 5716.0 + }, + { + "year": 2018, + "EIC": "3+kids", + "value": 6431.0 + } + ], + "title": "Maximum earned income credit", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, instruction (table).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "EIC", - "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], - "value_type": "real", - "value": [[487.0, 3250.0, 5372.0, 6044.0], - [496.0, 3305.0, 5460.0, 6143.0], - [503.0, 3359.0, 5548.0, 6242.0], - [506.0, 3373.0, 5572.0, 6269.0], - [510.0, 3400.0, 5616.0, 6318.0], - [519.0, 3461.0, 5716.0, 6431.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "This is the maximum amount of earned income credit taxpayers are eligible for; it depends on how many kids they have.", + "notes": "" + }, "EITC_rt": { - "long_name": "Earned income credit phasein rate", - "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum earned income credit.", + "value": [ + { + "year": 2013, + "EIC": "0kids", + "value": 0.0765 + }, + { + "year": 2013, + "EIC": "1kid", + "value": 0.34 + }, + { + "year": 2013, + "EIC": "2kids", + "value": 0.4 + }, + { + "year": 2013, + "EIC": "3+kids", + "value": 0.45 + } + ], + "title": "Earned income credit phasein rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, calculation (table: Max_EIC/Max_EIC_base_income).", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "EIC", - "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], - "value_type": "real", - "value": [[0.0765, 0.3400, 0.4000, 0.4500]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum earned income credit.", + "notes": "" + }, "EITC_basic_frac": { - "long_name": "Fraction of maximum earned income credit paid at zero earnings", - "description": "This fraction of EITC_c is always paid as a credit and one minus this fraction is applied to the phasein rate, EITC_rt. This fraction is zero under current law.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + } + ], + "title": "Fraction of maximum earned income credit paid at zero earnings", + "type": "float", + "validators": { + "range": { + "min": 0.0, + "max": 1.0 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, instruction (table).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0.0, "max": 1.0}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This fraction of EITC_c is always paid as a credit and one minus this fraction is applied to the phasein rate, EITC_rt. This fraction is zero under current law.", + "notes": "" + }, "EITC_prt": { - "long_name": "Earned income credit phaseout rate", - "description": "Earned income credit begins to decrease at the this rate when AGI is higher than earned income credit phaseout start AGI.", + "value": [ + { + "year": 2013, + "EIC": "0kids", + "value": 0.0765 + }, + { + "year": 2013, + "EIC": "1kid", + "value": 0.1598 + }, + { + "year": 2013, + "EIC": "2kids", + "value": 0.2106 + }, + { + "year": 2013, + "EIC": "3+kids", + "value": 0.2106 + } + ], + "title": "Earned income credit phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, calculation (table: Max_EIC_base_income/Phaseout_Base).", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "EIC", - "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], - "value_type": "real", - "value": [[0.0765, 0.1598, 0.2106, 0.2106]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Earned income credit begins to decrease at the this rate when AGI is higher than earned income credit phaseout start AGI.", + "notes": "" + }, "EITC_ps": { - "long_name": "Earned income credit phaseout start AGI", - "description": "If AGI is higher than this threshold, the amount of EITC will start to decrease at the phaseout rate.", + "value": [ + { + "year": 2013, + "EIC": "0kids", + "value": 7970.0 + }, + { + "year": 2013, + "EIC": "1kid", + "value": 17530.0 + }, + { + "year": 2013, + "EIC": "2kids", + "value": 17530.0 + }, + { + "year": 2013, + "EIC": "3+kids", + "value": 17530.0 + }, + { + "year": 2014, + "EIC": "0kids", + "value": 8110.0 + }, + { + "year": 2014, + "EIC": "1kid", + "value": 17830.0 + }, + { + "year": 2014, + "EIC": "2kids", + "value": 17830.0 + }, + { + "year": 2014, + "EIC": "3+kids", + "value": 17830.0 + }, + { + "year": 2015, + "EIC": "0kids", + "value": 8250.0 + }, + { + "year": 2015, + "EIC": "1kid", + "value": 18150.0 + }, + { + "year": 2015, + "EIC": "2kids", + "value": 18150.0 + }, + { + "year": 2015, + "EIC": "3+kids", + "value": 18150.0 + }, + { + "year": 2016, + "EIC": "0kids", + "value": 8270.0 + }, + { + "year": 2016, + "EIC": "1kid", + "value": 18190.0 + }, + { + "year": 2016, + "EIC": "2kids", + "value": 18190.0 + }, + { + "year": 2016, + "EIC": "3+kids", + "value": 18190.0 + }, + { + "year": 2017, + "EIC": "0kids", + "value": 8340.0 + }, + { + "year": 2017, + "EIC": "1kid", + "value": 18340.0 + }, + { + "year": 2017, + "EIC": "2kids", + "value": 18340.0 + }, + { + "year": 2017, + "EIC": "3+kids", + "value": 18340.0 + }, + { + "year": 2018, + "EIC": "0kids", + "value": 8490.0 + }, + { + "year": 2018, + "EIC": "1kid", + "value": 18660.0 + }, + { + "year": 2018, + "EIC": "2kids", + "value": 18660.0 + }, + { + "year": 2018, + "EIC": "3+kids", + "value": 18660.0 + } + ], + "title": "Earned income credit phaseout start AGI", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, instructions.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "EIC", - "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], - "value_type": "real", - "value": [[7970.0, 17530.0, 17530.0, 17530.0], - [8110.0, 17830.0, 17830.0, 17830.0], - [8250.0, 18150.0, 18150.0, 18150.0], - [8270.0, 18190.0, 18190.0, 18190.0], - [8340.0, 18340.0, 18340.0, 18340.0], - [8490.0, 18660.0, 18660.0, 18660.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "If AGI is higher than this threshold, the amount of EITC will start to decrease at the phaseout rate.", + "notes": "" + }, "EITC_ps_MarriedJ": { - "long_name": "Extra earned income credit phaseout start AGI for married filling jointly", - "description": "This is the additional amount added on the regular phaseout start amount for taxpayers with filling status of married filing jointly.", + "value": [ + { + "year": 2013, + "EIC": "0kids", + "value": 5340.0 + }, + { + "year": 2013, + "EIC": "1kid", + "value": 5340.0 + }, + { + "year": 2013, + "EIC": "2kids", + "value": 5340.0 + }, + { + "year": 2013, + "EIC": "3+kids", + "value": 5340.0 + }, + { + "year": 2014, + "EIC": "0kids", + "value": 5430.0 + }, + { + "year": 2014, + "EIC": "1kid", + "value": 5430.0 + }, + { + "year": 2014, + "EIC": "2kids", + "value": 5430.0 + }, + { + "year": 2014, + "EIC": "3+kids", + "value": 5430.0 + }, + { + "year": 2015, + "EIC": "0kids", + "value": 5500.0 + }, + { + "year": 2015, + "EIC": "1kid", + "value": 5500.0 + }, + { + "year": 2015, + "EIC": "2kids", + "value": 5500.0 + }, + { + "year": 2015, + "EIC": "3+kids", + "value": 5500.0 + }, + { + "year": 2016, + "EIC": "0kids", + "value": 5550.0 + }, + { + "year": 2016, + "EIC": "1kid", + "value": 5550.0 + }, + { + "year": 2016, + "EIC": "2kids", + "value": 5550.0 + }, + { + "year": 2016, + "EIC": "3+kids", + "value": 5550.0 + }, + { + "year": 2017, + "EIC": "0kids", + "value": 5590.0 + }, + { + "year": 2017, + "EIC": "1kid", + "value": 5590.0 + }, + { + "year": 2017, + "EIC": "2kids", + "value": 5590.0 + }, + { + "year": 2017, + "EIC": "3+kids", + "value": 5590.0 + }, + { + "year": 2018, + "EIC": "0kids", + "value": 5680.0 + }, + { + "year": 2018, + "EIC": "1kid", + "value": 5690.0 + }, + { + "year": 2018, + "EIC": "2kids", + "value": 5690.0 + }, + { + "year": 2018, + "EIC": "3+kids", + "value": 5690.0 + } + ], + "title": "Extra earned income credit phaseout start AGI for married filling jointly", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, calculation (the difference between EIC phaseout bases of married jointly filers and other filers).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "EIC", - "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], - "value_type": "real", - "value": [[5340.0, 5340.0, 5340.0, 5340.0], - [5430.0, 5430.0, 5430.0, 5430.0], - [5500.0, 5500.0, 5500.0, 5500.0], - [5550.0, 5550.0, 5550.0, 5550.0], - [5590.0, 5590.0, 5590.0, 5590.0], - [5680.0, 5690.0, 5690.0, 5690.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "This is the additional amount added on the regular phaseout start amount for taxpayers with filling status of married filing jointly.", + "notes": "" + }, "EITC_MinEligAge": { - "long_name": "Minimum Age for Childless EITC Eligibility", - "description": "For a childless filing unit, at least one individual's age needs to be no less than this age (but no greater than the EITC_MaxEligAge) in order to be eligible for an earned income tax credit.", + "value": [ + { + "year": 2013, + "value": 25 + } + ], + "title": "Minimum Age for Childless EITC Eligibility", + "type": "int", + "validators": { + "range": { + "min": 0, + "max": 125 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, step 4, instructions.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "integer", - "value": [25], - "valid_values": {"min": 0, "max": 125}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "For a childless filing unit, at least one individual's age needs to be no less than this age (but no greater than the EITC_MaxEligAge) in order to be eligible for an earned income tax credit.", + "notes": "" + }, "EITC_MaxEligAge": { - "long_name": "Maximum Age for Childless EITC Eligibility", - "description": "For a childless filing unit, at least one individual's age needs to be no greater than this age (but no less than the EITC_MinEligAge) in order to be eligible for an earned income tax credit.", + "value": [ + { + "year": 2013, + "value": 64 + } + ], + "title": "Maximum Age for Childless EITC Eligibility", + "type": "int", + "validators": { + "range": { + "min": 0, + "max": 125 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, step 4, instructions.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "integer", - "value": [64], - "valid_values": {"min": 0, "max": 125}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "For a childless filing unit, at least one individual's age needs to be no greater than this age (but no less than the EITC_MinEligAge) in order to be eligible for an earned income tax credit.", + "notes": "" + }, "EITC_InvestIncome_c": { - "long_name": "Maximum investment income before EITC reduction", - "description": "The EITC amount is reduced when investment income exceeds this ceiling.", + "value": [ + { + "year": 2013, + "value": 3300.0 + }, + { + "year": 2014, + "value": 3350.0 + }, + { + "year": 2015, + "value": 3400.0 + }, + { + "year": 2016, + "value": 3400.0 + }, + { + "year": 2017, + "value": 3450.0 + }, + { + "year": 2018, + "value": 3500.0 + } + ], + "title": "Maximum investment income before EITC reduction", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, instruction(step2)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [3300.0, - 3350.0, - 3400.0, - 3400.0, - 3450.0, - 3500.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The EITC amount is reduced when investment income exceeds this ceiling.", + "notes": "" + }, "EITC_excess_InvestIncome_rt": { - "long_name": "Rate of EITC reduction when investment income exceeds ceiling", - "description": "The EITC amount is reduced at this rate per dollar of investment income exceeding the ceiling.", + "value": [ + { + "year": 2013, + "value": 9e+99 + } + ], + "title": "Rate of EITC reduction when investment income exceeds ceiling", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, instruction(step2)", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [9e99], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The EITC amount is reduced at this rate per dollar of investment income exceeding the ceiling.", + "notes": "" + }, "EITC_indiv": { - "long_name": "EITC is computed for each spouse based on individual earnings", - "description": "Current-law value is false implying EITC is filing-unit based; a value of true implies EITC is computed for each individual wage earner. The additional phaseout start for joint filers is not affected by this parameter, nor are investment income and age eligibilty rules.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "EITC is computed for each spouse based on individual earnings", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Current-law value is false implying EITC is filing-unit based; a value of true implies EITC is computed for each individual wage earner. The additional phaseout start for joint filers is not affected by this parameter, nor are investment income and age eligibilty rules.", + "notes": "" + }, "EITC_sep_filers_elig": { - "long_name": "Separate filers are eligibile for the EITC", - "description": "Current-law value is false, implying ineligibility.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Separate filers are eligibile for the EITC", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "Current-law value is false, implying ineligibility.", + "notes": "" + }, "RPTC_c": { - "long_name": "Maximum refundable payroll tax credit", - "description": "This is the maximum amount of the refundable payroll tax credit for each taxpayer/spouse.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + } + ], + "title": "Maximum refundable payroll tax credit", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Refundable Payroll Tax Credit", - "irs_ref": "", - "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "This is the maximum amount of the refundable payroll tax credit for each taxpayer/spouse.", + "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt." + }, "RPTC_rt": { - "long_name": "Refundable payroll tax credit phasein rate", - "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum refundable payroll tax credit, where earnings is defined as in FICA and SECA.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Refundable payroll tax credit phasein rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Refundable Payroll Tax Credit", - "irs_ref": "", - "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum refundable payroll tax credit, where earnings is defined as in FICA and SECA.", + "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt." + }, "LLC_Expense_c": { - "long_name": "Lifetime learning credit expense limit", - "description": "The maximum expense eligible for lifetime learning credit, per child.", + "value": [ + { + "year": 2013, + "value": 10000.0 + } + ], + "title": "Lifetime learning credit expense limit", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 8863, line 11, in-line.", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [10000.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "description": "The maximum expense eligible for lifetime learning credit, per child.", + "notes": "" + }, "ETC_pe_Single": { - "long_name": "Education tax credit phaseout ends (Single)", - "description": "The education tax credit will be zero for those taxpayers of single filing status with modified AGI (in thousands) higher than this level.", + "value": [ + { + "year": 2013, + "value": 63.0 + }, + { + "year": 2014, + "value": 64.0 + }, + { + "year": 2015, + "value": 65.0 + }, + { + "year": 2016, + "value": 65.0 + }, + { + "year": 2017, + "value": 66.0 + }, + { + "year": 2018, + "value": 67.0 + } + ], + "title": "Education tax credit phaseout ends (Single)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 8863, line 13, inline.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [63.0, - 64.0, - 65.0, - 65.0, - 66.0, - 67.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "description": "The education tax credit will be zero for those taxpayers of single filing status with modified AGI (in thousands) higher than this level.", + "notes": "" + }, "ETC_pe_Married": { - "long_name": "Education tax credit phaseout ends (Married)", - "description": "The education tax credit will be zero for those taxpayers of married filing status with modified AGI level (in thousands) higher than this level.", + "value": [ + { + "year": 2013, + "value": 127.0 + }, + { + "year": 2014, + "value": 128.0 + }, + { + "year": 2015, + "value": 130.0 + }, + { + "year": 2016, + "value": 131.0 + }, + { + "year": 2017, + "value": 132.0 + }, + { + "year": 2018, + "value": 134.0 + } + ], + "title": "Education tax credit phaseout ends (Married)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 8863, line 13, inline.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [127.0, - 128.0, - 130.0, - 131.0, - 132.0, - 134.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "description": "The education tax credit will be zero for those taxpayers of married filing status with modified AGI level (in thousands) higher than this level.", + "notes": "" + }, "ACTC_rt": { - "long_name": "Additional Child Tax Credit rate", - "description": "This is the fraction of earnings used in calculating the ACTC, which is a partially refundable credit that supplements the CTC for some taxpayers.", + "value": [ + { + "year": 2013, + "value": 0.15 + } + ], + "title": "Additional Child Tax Credit rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", - "irs_ref": "Form 8812, line 8, inline.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.15], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "This is the fraction of earnings used in calculating the ACTC, which is a partially refundable credit that supplements the CTC for some taxpayers.", + "notes": "" + }, "ACTC_rt_bonus_under5family": { - "long_name": "Bonus additional child tax credit rate for families with qualifying children under 5", - "description": "For families with qualifying children under 5 years old, this bonus rate is added to the fraction of earnings (additional child tax credit rate) used in calculating the ACTC.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Bonus additional child tax credit rate for families with qualifying children under 5", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "For families with qualifying children under 5 years old, this bonus rate is added to the fraction of earnings (additional child tax credit rate) used in calculating the ACTC.", + "notes": "" + }, "ACTC_Income_thd": { - "long_name": "Additional Child Tax Credit income threshold", - "description": "The portion of earned income below this threshold does not count as base for the Additional Child Tax Credit.", + "value": [ + { + "year": 2013, + "value": 3000.0 + }, + { + "year": 2014, + "value": 3000.0 + }, + { + "year": 2015, + "value": 3000.0 + }, + { + "year": 2016, + "value": 3000.0 + }, + { + "year": 2017, + "value": 3000.0 + }, + { + "year": 2018, + "value": 2500.0 + }, + { + "year": 2019, + "value": 2500.0 + }, + { + "year": 2020, + "value": 2500.0 + }, + { + "year": 2021, + "value": 2500.0 + }, + { + "year": 2022, + "value": 2500.0 + }, + { + "year": 2023, + "value": 2500.0 + }, + { + "year": 2024, + "value": 2500.0 + }, + { + "year": 2025, + "value": 2500.0 + }, + { + "year": 2026, + "value": 3000.0 + } + ], + "title": "Additional Child Tax Credit income threshold", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", - "irs_ref": "Form 8812, line 7, in-line.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [3000.0, - 3000.0, - 3000.0, - 3000.0, - 3000.0, - 2500.0, - 2500.0, - 2500.0, - 2500.0, - 2500.0, - 2500.0, - 2500.0, - 2500.0, - 3000.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The portion of earned income below this threshold does not count as base for the Additional Child Tax Credit.", + "notes": "" + }, "ACTC_ChildNum": { - "long_name": "Additional Child Tax Credit minimum number of qualified children for different formula", - "description": "Families with this number of qualified children or more may qualify for a different formula to calculate the Additional Child Tax Credit, which is a partially refundable credit that supplements the Child Tax Credit for some taxpayers.", + "value": [ + { + "year": 2013, + "value": 3 + } + ], + "title": "Additional Child Tax Credit minimum number of qualified children for different formula", + "type": "int", + "validators": { + "range": { + "min": 0, + "max": 99 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", - "irs_ref": "Form 8812, Part II. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "integer", - "value": [3], - "valid_values": {"min": 0, "max": 99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Families with this number of qualified children or more may qualify for a different formula to calculate the Additional Child Tax Credit, which is a partially refundable credit that supplements the Child Tax Credit for some taxpayers.", + "notes": "" + }, "CTC_new_c": { - "long_name": "New refundable child tax credit maximum amount per child", - "description": "In addition to all credits currently available for dependents, this parameter gives each qualifying child a new refundable credit with this maximum amount.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "New refundable child tax credit maximum amount per child", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "In addition to all credits currently available for dependents, this parameter gives each qualifying child a new refundable credit with this maximum amount.", + "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit." + }, "CTC_new_c_under5_bonus": { - "long_name": "Bonus new refundable child tax credit maximum for qualifying children under five", - "description": "The maximum amount of the new refundable child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Bonus new refundable child tax credit maximum for qualifying children under five", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The maximum amount of the new refundable child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", + "notes": "" + }, "CTC_new_for_all": { - "long_name": "Whether or not maximum amount of the new refundable child tax credit is available to all", - "description": "The maximum amount of the new refundable child tax credit does not depend on AGI when true; otherwise, see CTC_new_rt.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Whether or not maximum amount of the new refundable child tax credit is available to all", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The maximum amount of the new refundable child tax credit does not depend on AGI when true; otherwise, see CTC_new_rt.", + "notes": "" + }, "CTC_new_rt": { - "long_name": "New refundable child tax credit amount phasein rate", - "description": "The maximum amount of the new child tax credit is increased at this rate per dollar of positive AGI until CTC_new_c times the number of qualified children is reached if CTC_new_for_all is false; if CTC_new_for_all is true, there is no AGI limitation to the maximum amount.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "New refundable child tax credit amount phasein rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The maximum amount of the new child tax credit is increased at this rate per dollar of positive AGI until CTC_new_c times the number of qualified children is reached if CTC_new_for_all is false; if CTC_new_for_all is true, there is no AGI limitation to the maximum amount.", + "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit." + }, "CTC_new_ps": { - "long_name": "New refundable child tax credit phaseout starting AGI", - "description": "The total amount of new child tax credit is reduced for taxpayers with AGI higher than this level.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "New refundable child tax credit phaseout starting AGI", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The total amount of new child tax credit is reduced for taxpayers with AGI higher than this level.", + "notes": "" + }, "CTC_new_prt": { - "long_name": "New refundable child tax credit amount phaseout rate", - "description": "The total amount of the new child tax credit is reduced at this rate per dollar exceeding the phaseout starting AGI, CTC_new_ps.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "New refundable child tax credit amount phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The total amount of the new child tax credit is reduced at this rate per dollar exceeding the phaseout starting AGI, CTC_new_ps.", + "notes": "" + }, "CTC_new_refund_limited": { - "long_name": "New child tax credit refund limited to a decimal fraction of payroll taxes", - "description": "Specifies whether the new child tax credit refund is limited by the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt).", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "New child tax credit refund limited to a decimal fraction of payroll taxes", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "Set this parameter to true to limit the refundability or false to allow full refundability for all taxpayers.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Specifies whether the new child tax credit refund is limited by the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt).", + "notes": "Set this parameter to true to limit the refundability or false to allow full refundability for all taxpayers." + }, "CTC_new_refund_limit_payroll_rt": { - "long_name": "New child tax credit refund limit rate (decimal fraction of payroll taxes)", - "description": "The fraction of payroll taxes (employee plus employer shares, but excluding all Medicare payroll taxes) that serves as a limit to the amount of new child tax credit that can be refunded.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "New child tax credit refund limit rate (decimal fraction of payroll taxes)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "Set this parameter to zero for no refundability; set it to 9e99 for unlimited refundability for taxpayers with payroll tax liabilities.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The fraction of payroll taxes (employee plus employer shares, but excluding all Medicare payroll taxes) that serves as a limit to the amount of new child tax credit that can be refunded.", + "notes": "Set this parameter to zero for no refundability; set it to 9e99 for unlimited refundability for taxpayers with payroll tax liabilities." + }, "CTC_new_refund_limited_all_payroll": { - "long_name": "New child tax credit refund limit applies to all FICA taxes, not just OASDI", - "description": "Specifies whether the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt) applies to all FICA taxes (true) or just OASDI taxes (false).", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "New child tax credit refund limit applies to all FICA taxes, not just OASDI", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "If the new CTC is limited, set this parameter to true to limit the refundability to all FICA taxes or false to limit refundabiity to OASDI taxes.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Specifies whether the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt) applies to all FICA taxes (true) or just OASDI taxes (false).", + "notes": "If the new CTC is limited, set this parameter to true to limit the refundability to all FICA taxes or false to limit refundabiity to OASDI taxes." + }, "FST_AGI_trt": { - "long_name": "New minimum tax; rate as a decimal fraction of AGI", - "description": "Individual income taxes and the employee share of payroll taxes are credited against this minimum tax, so the surtax is the difference between the tax rate times AGI and the credited taxes. The new minimum tax is similar to the Fair Share Tax, except that no credits are exempted from the base.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "New minimum tax; rate as a decimal fraction of AGI", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Surtaxes", "section_2": "New Minimum Tax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Individual income taxes and the employee share of payroll taxes are credited against this minimum tax, so the surtax is the difference between the tax rate times AGI and the credited taxes. The new minimum tax is similar to the Fair Share Tax, except that no credits are exempted from the base.", + "notes": "" + }, "FST_AGI_thd_lo": { - "long_name": "Minimum AGI needed to be subject to the new minimum tax", - "description": "A taxpayer is only subject to the new minimum tax if they exceed this level of AGI.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 1000000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 1000000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 1000000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 1000000.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 1000000.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 1000000.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 1000000.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 1000000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 1000000.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 1000000.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 1000000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 1000000.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 1000000.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 1000000.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 1000000.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 1000000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 1000000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 1000000.0 + } + ], + "title": "Minimum AGI needed to be subject to the new minimum tax", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "FST_AGI_thd_hi" + } + }, "section_1": "Surtaxes", "section_2": "New Minimum Tax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], - [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], - [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], - [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], - [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], - [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6]], - "valid_values": {"min": 0, "max": "FST_AGI_thd_hi"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for FST_AGI_thd_hi", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "A taxpayer is only subject to the new minimum tax if they exceed this level of AGI.", + "notes": "" + }, "FST_AGI_thd_hi": { - "long_name": "AGI level at which the New Minimum Tax is fully phased in", - "description": "The new minimum tax will be fully phased in at this level of AGI. If there is no phase-in, this upper threshold should be set equal to the lower AGI threshold.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 2000000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 2000000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 1000000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 2000000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 2000000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 2000000.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 2000000.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 1000000.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 2000000.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 2000000.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 2000000.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 2000000.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 1000000.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 2000000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 2000000.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 2000000.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 2000000.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 1000000.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 2000000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 2000000.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 2000000.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 2000000.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 1000000.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 2000000.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 2000000.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 2000000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 2000000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 1000000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 2000000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 2000000.0 + } + ], + "title": "AGI level at which the New Minimum Tax is fully phased in", + "type": "float", + "validators": { + "range": { + "min": "FST_AGI_thd_lo", + "max": 9e+99 + } + }, "section_1": "Surtaxes", "section_2": "New Minimum Tax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], - [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], - [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], - [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], - [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], - [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6]], - "valid_values": {"min": "FST_AGI_thd_lo", "max": 9e99}, - "invalid_minmsg": "for FST_AGI_thd_lo", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The new minimum tax will be fully phased in at this level of AGI. If there is no phase-in, this upper threshold should be set equal to the lower AGI threshold.", + "notes": "" + }, "AGI_surtax_trt": { - "long_name": "New AGI surtax rate", - "description": "The surtax rate is applied to the portion of Adjusted Gross Income above the AGI surtax threshold.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "New AGI surtax rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Surtaxes", "section_2": "New AGI Surtax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The surtax rate is applied to the portion of Adjusted Gross Income above the AGI surtax threshold.", + "notes": "" + }, "AGI_surtax_thd": { - "long_name": "Threshold for the new AGI surtax", - "description": "The aggregate gross income above this AGI surtax threshold is taxed at surtax rate on AGI.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Threshold for the new AGI surtax", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Surtaxes", "section_2": "New AGI Surtax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "The aggregate gross income above this AGI surtax threshold is taxed at surtax rate on AGI.", + "notes": "" + }, "LST": { - "long_name": "Dollar amount of lump-sum tax", - "description": "The lump-sum tax is levied on every member of a tax filing unit. The lump-sum tax is included only in combined taxes; it is not included in income or payroll taxes.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Dollar amount of lump-sum tax", + "type": "float", + "validators": { + "range": { + "min": -9e+99, + "max": 9e+99 + } + }, "section_1": "Surtaxes", "section_2": "Lump-Sum Tax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": -9e99, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "The lump-sum tax is levied on every member of a tax filing unit. The lump-sum tax is included only in combined taxes; it is not included in income or payroll taxes.", + "notes": "" + }, "UBI_u18": { - "long_name": "UBI benefit for those under 18", - "description": "UBI benefit provided to people under 18.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + } + ], + "title": "UBI benefit for those under 18", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Universal Basic Income", "section_2": "UBI Benefits", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "UBI benefit provided to people under 18.", + "notes": "" + }, "UBI_1820": { - "long_name": "UBI benefit for those 18 through 20", - "description": "UBI benefit provided to people 18-20 years of age.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + } + ], + "title": "UBI benefit for those 18 through 20", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Universal Basic Income", "section_2": "UBI Benefits", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "UBI benefit provided to people 18-20 years of age.", + "notes": "" + }, "UBI_21": { - "long_name": "UBI benefit for those 21 and over", - "description": "UBI benefit provided to people 21 and over.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + } + ], + "title": "UBI benefit for those 21 and over", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Universal Basic Income", "section_2": "UBI Benefits", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "description": "UBI benefit provided to people 21 and over.", + "notes": "" + }, "UBI_ecrt": { - "long_name": "Fraction of UBI benefits excluded from AGI", - "description": "One minus this fraction of UBI benefits are taxable and will be added to AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Fraction of UBI benefits excluded from AGI", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Universal Basic Income", "section_2": "UBI Taxability", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "One minus this fraction of UBI benefits are taxable and will be added to AGI.", + "notes": "" + }, "CR_RetirementSavings_hc": { - "long_name": "Credit for retirement savings haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the retirement savings credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Credit for retirement savings haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*RetirementSavingsCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of the retirement savings credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*RetirementSavingsCredit." + }, "CR_ForeignTax_hc": { - "long_name": "Credit for foreign tax haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the foreign tax credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Credit for foreign tax haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*ForeignTaxCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of the foreign tax credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*ForeignTaxCredit." + }, "CR_ResidentialEnergy_hc": { - "long_name": "Credit for residential energy haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the residential energy credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Credit for residential energy haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*ResidentialEnergyCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of the residential energy credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*ResidentialEnergyCredit." + }, "CR_GeneralBusiness_hc": { - "long_name": "Credit for general business haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the general business credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Credit for general business haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*GeneralBusinessCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of the general business credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*GeneralBusinessCredit." + }, "CR_MinimumTax_hc": { - "long_name": "Credit for previous year minimum tax credit haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the previous year minimum tax credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Credit for previous year minimum tax credit haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*PreviousYearMinimumTaxCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of the previous year minimum tax credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*PreviousYearMinimumTaxCredit." + }, "CR_AmOppRefundable_hc": { - "long_name": "Refundable portion of the American Opportunity Credit haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the refundable American Opportunity credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Refundable portion of the American Opportunity Credit haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*RefundablePortionOfAmericanOpportunityCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of the refundable American Opportunity credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*RefundablePortionOfAmericanOpportunityCredit." + }, "CR_AmOppNonRefundable_hc": { - "long_name": "Nonrefundable portion of the American Opportunity Credit haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the nonrefundable American Opportunity credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Nonrefundable portion of the American Opportunity Credit haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*NonRefundablePortionOfAmericanOpportunityCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of the nonrefundable American Opportunity credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*NonRefundablePortionOfAmericanOpportunityCredit." + }, "CR_SchR_hc": { - "long_name": "Schedule R Credit haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of Schedule R credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Schedule R Credit haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*ScheduleRCredit", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of Schedule R credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*ScheduleRCredit" + }, "CR_OtherCredits_hc": { - "long_name": "Other Credits haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of other credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Other Credits haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*OtherCredits.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of other credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*OtherCredits." + }, "CR_Education_hc": { - "long_name": "Education Credits haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of education credits that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Education Credits haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*EducationCredits.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction reduces the portion of education credits that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*EducationCredits." + }, "CR_Charity_rt": { - "long_name": "Charity Credit rate", - "description": "If greater than zero, this decimal fraction represents the portion of total charitable contributions provided as a nonrefundable tax credit.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Charity Credit rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "", "section_2": "", - "irs_ref": "", - "notes": "Credit claimed will be (rt) * (e19800 + e20100)", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "If greater than zero, this decimal fraction represents the portion of total charitable contributions provided as a nonrefundable tax credit.", + "notes": "Credit claimed will be (rt) * (e19800 + e20100)" + }, "CR_Charity_f": { - "long_name": "Charity Credit Floor", - "description": "Only charitable giving in excess of this dollar amount is eligible for the charity credit.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Charity Credit Floor", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Only charitable giving in excess of this dollar amount is eligible for the charity credit.", + "notes": "" + }, "CR_Charity_frt": { - "long_name": "Charity Credit Floor Rate", - "description": "Only charitable giving in excess of this decimal fraction of AGI is eligible for the charity credit.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Charity Credit Floor Rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "", "section_2": "", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Only charitable giving in excess of this decimal fraction of AGI is eligible for the charity credit.", + "notes": "" + }, "BEN_ssi_repeal": { - "long_name": "SSI benefit repeal switch", - "description": "SSI benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "SSI benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "SSI benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_housing_repeal": { - "long_name": "Housing benefit repeal switch", - "description": "Housing benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Housing benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Housing benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_snap_repeal": { - "long_name": "SNAP benefit repeal switch", - "description": "SNAP benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "SNAP benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "SNAP benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_tanf_repeal": { - "long_name": "TANF benefit repeal switch", - "description": "TANF benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "TANF benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "TANF benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_vet_repeal": { - "long_name": "Veterans benefit repeal switch", - "description": "Veterans benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Veterans benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Veterans benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_wic_repeal": { - "long_name": "WIC benefit repeal switch", - "description": "WIC benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "WIC benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "WIC benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_mcare_repeal": { - "long_name": "Medicare benefit repeal switch", - "description": "Medicare benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Medicare benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Medicare benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_mcaid_repeal": { - "long_name": "Medicaid benefit repeal switch", - "description": "Medicaid benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Medicaid benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Medicaid benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_oasdi_repeal": { - "long_name": "Social Security benefit repeal switch", - "description": "Social Security benefits (e02400) can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Social Security benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Social Security benefits (e02400) can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_ui_repeal": { - "long_name": "Unemployment insurance benefit repeal switch", - "description": "Unemployment insurance benefits (e02300) can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Unemployment insurance benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "description": "Unemployment insurance benefits (e02300) can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_other_repeal": { - "long_name": "Other benefit repeal switch", - "description": "Other benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Other benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} + "indexable": false, + "indexed": false, + "description": "Other benefits can be repealed by switching this parameter to true.", + "notes": "" } -} +} \ No newline at end of file diff --git a/taxcalc/tests/test_calculator.py b/taxcalc/tests/test_calculator.py index 89622f1f4..1fe9a37e7 100644 --- a/taxcalc/tests/test_calculator.py +++ b/taxcalc/tests/test_calculator.py @@ -232,10 +232,10 @@ def test_make_calculator_increment_years_first(cps_subsample): rec = Records.cps_constructor(data=cps_subsample) calc = Calculator(policy=pol, records=rec) # compare expected policy parameter values with those embedded in calc - irates = pol.inflation_rates() + irates = pol.inflation_rates # TODO: should this be a method or a property? () syr = Policy.JSON_START_YEAR - irate2015 = irates[2015 - syr] - irate2016 = irates[2016 - syr] + irate2015 = irates[2015] + irate2016 = irates[2016] std6 = std5 * (1.0 + irate2015) std7 = std6 * (1.0 + irate2016) exp_STD_Aged = np.array([[1500, 1200, 1200, 1500, 1500], diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index 29ddd35d8..277280591 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -11,6 +11,7 @@ import json import numpy as np import pytest +import paramtools # pylint: disable=import-error from taxcalc import Policy @@ -30,45 +31,17 @@ def test_correct_class_instantiation(): pol = Policy() assert pol pol.implement_reform({}) - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): pol.implement_reform(list()) - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): pol.implement_reform({2099: {'II_em': 99000}}) pol.set_year(2019) - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): pol.implement_reform({2018: {'II_em': 99000}}) - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): pol.implement_reform({2020: {'II_em': -1000}}) -def test_policy_json_content_consistency(): - """ - Test contents of JSON defaults file, which is read into Policy._vals dict. - """ - expected_vi_vals = { - 'MARS': ['single', 'mjoint', 'mseparate', 'headhh', 'widow'], - 'EIC': ['0kids', '1kid', '2kids', '3+kids'], - 'idedtype': ['med', 'sltx', 'retx', 'cas', 'misc', 'int', 'char'] - } - policy = Policy() - start_year = policy.start_year - assert start_year == Policy.JSON_START_YEAR - policy_vals = getattr(policy, '_vals') - for name, data in policy_vals.items(): - # check entries in value_yrs list - value_yrs = data['value_yrs'] - assert isinstance(value_yrs, list) - value = data['value'] - expected_value_yrs = [(start_year + i) for i in range(len(value))] - if value_yrs != expected_value_yrs: - msg = 'name,value_yrs,expected_value_yrs: {}\n{}\n{}' - raise ValueError(msg.format(name, value_yrs, expected_value_yrs)) - # check entries in vi_vals list - vivals = data['vi_vals'] - if vivals: - assert vivals == expected_vi_vals[data['vi_name']] - - def test_json_reform_url(): """ Test reading a JSON reform from a URL. Results from the URL are expected @@ -189,10 +162,10 @@ def test_constant_inflation_rate_with_reform(): } pol.implement_reform(reform) # extract price inflation rates - pirates = pol.inflation_rates() + pirates = pol.inflation_rates syr = Policy.JSON_START_YEAR - irate_b = pirates[ryr - 2 - syr] - irate_a = pirates[ryr - syr] + irate_b = pirates[ryr - 2] + irate_a = pirates[ryr] # check implied inflation rate just before reform grate = float(pol._II_em[ryr - 1 - syr]) / float(pol._II_em[ryr - 2 - syr]) assert round(grate - 1.0, 4) == round(irate_b, 4) @@ -217,10 +190,10 @@ def test_variable_inflation_rate_with_reform(): pol.set_year(2020) assert pol.current_year == 2020 # extract price inflation rates - pirates = pol.inflation_rates() - irate2018 = pirates[2018 - syr] - irate2020 = pirates[2020 - syr] - irate2021 = pirates[2021 - syr] + pirates = pol.inflation_rates + irate2018 = pirates[2018] + irate2020 = pirates[2020] + irate2021 = pirates[2021] # check implied inflation rate between 2018 and 2019 (before the reform) grate = float(pol._II_em[2019 - syr]) / float(pol._II_em[2018 - syr]) assert round(grate - 1.0, 5) == round(irate2018, 5) @@ -240,58 +213,60 @@ def test_multi_year_reform(): syr = Policy.JSON_START_YEAR nyrs = Policy.DEFAULT_NUM_YEARS pol = Policy() - iratelist = pol.inflation_rates() + iratelist = pol.inflation_rates ifactor = {} for i in range(0, nyrs): - ifactor[syr + i] = 1.0 + iratelist[i] - wratelist = pol.wage_growth_rates() + ifactor[syr + i] = 1.0 + iratelist[syr + i] + wratelist = pol.wage_growth_rates wfactor = {} for i in range(0, nyrs): - wfactor[syr + i] = 1.0 + wratelist[i] + wfactor[syr + i] = 1.0 + wratelist[syr + i] + # TODO: this seems like a test of _expand_array which is + # already tested within paramtools # confirm that parameters have current-law values - assert np.allclose(getattr(pol, '_EITC_c'), - Policy._expand_array( - np.array([[487, 3250, 5372, 6044], - [496, 3305, 5460, 6143], - [503, 3359, 5548, 6242], - [506, 3373, 5572, 6269], - [510, 3400, 5616, 6318], - [519, 3461, 5716, 6431]], - dtype=np.float64), - 'real', - inflate=True, - inflation_rates=iratelist, - num_years=nyrs), - atol=0.01, rtol=0.0) - assert np.allclose(getattr(pol, '_STD_Dep'), - Policy._expand_array( - np.array([1000, 1000, 1050, 1050, 1050, 1050], - dtype=np.float64), - 'real', - inflate=True, - inflation_rates=iratelist, - num_years=nyrs), - atol=0.01, rtol=0.0) - assert np.allclose(getattr(pol, '_CTC_c'), - Policy._expand_array( - np.array([1000] * 5 + [2000] * 8 + [1000], - dtype=np.float64), - 'real', - inflate=False, - inflation_rates=iratelist, - num_years=nyrs), - atol=0.01, rtol=0.0) - # this parameter uses a different indexing rate - assert np.allclose(getattr(pol, '_SS_Earnings_c'), - Policy._expand_array( - np.array([113700, 117000, 118500, 118500, 127200, - 128400], - dtype=np.float64), - 'real', - inflate=True, - inflation_rates=wratelist, - num_years=nyrs), - atol=0.01, rtol=0.0) + # assert np.allclose(getattr(pol, '_EITC_c'), + # Policy._expand_array( + # np.array([[487, 3250, 5372, 6044], + # [496, 3305, 5460, 6143], + # [503, 3359, 5548, 6242], + # [506, 3373, 5572, 6269], + # [510, 3400, 5616, 6318], + # [519, 3461, 5716, 6431]], + # dtype=np.float64), + # 'real', + # inflate=True, + # inflation_rates=iratelist, + # num_years=nyrs), + # atol=0.01, rtol=0.0) + # assert np.allclose(getattr(pol, '_STD_Dep'), + # Policy._expand_array( + # np.array([1000, 1000, 1050, 1050, 1050, 1050], + # dtype=np.float64), + # 'real', + # inflate=True, + # inflation_rates=iratelist, + # num_years=nyrs), + # atol=0.01, rtol=0.0) + # assert np.allclose(getattr(pol, '_CTC_c'), + # Policy._expand_array( + # np.array([1000] * 5 + [2000] * 8 + [1000], + # dtype=np.float64), + # 'real', + # inflate=False, + # inflation_rates=iratelist, + # num_years=nyrs), + # atol=0.01, rtol=0.0) + # # this parameter uses a different indexing rate + # assert np.allclose(getattr(pol, '_SS_Earnings_c'), + # Policy._expand_array( + # np.array([113700, 117000, 118500, 118500, 127200, + # 128400], + # dtype=np.float64), + # 'real', + # inflate=True, + # inflation_rates=wratelist, + # num_years=nyrs), + # atol=0.01, rtol=0.0) # specify multi-year reform using a param:year:value-fomatted dictionary reform = { 'SS_Earnings_c': {2016: 300000, @@ -440,15 +415,17 @@ def test_policy_metadata(): """ clp = Policy() mdata = clp.metadata() - assert isinstance(mdata['STD']['value'], list) - assert np.allclose(mdata['STD']['value'], - [6100, 12200, 6100, 8950, 12200]) - assert isinstance(mdata['CDCC_ps']['value'], float) - assert mdata['CDCC_ps']['value'] == 15000 - dump = False - if dump: - print(mdata) - assert 1 == 2 + assert mdata + # TODO: this is tested thoroughly in paramtools + # assert isinstance(mdata['STD']['value'], list) + # assert np.allclose(mdata['STD']['value'], + # [6100, 12200, 6100, 8950, 12200]) + # assert isinstance(mdata['CDCC_ps']['value'], float) + # assert mdata['CDCC_ps']['value'] == 15000 + # dump = False + # if dump: + # print(mdata) + # assert 1 == 2 def test_implement_reform_raises_on_no_year(): @@ -457,7 +434,7 @@ def test_implement_reform_raises_on_no_year(): """ reform = {'STD_Aged': [1400, 1200, 1400, 1400, 1400]} ppo = Policy() - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): ppo.implement_reform(reform) @@ -467,7 +444,7 @@ def test_implement_reform_raises_on_early_year(): """ ppo = Policy() reform = {'STD_Aged': {2010: [1400, 1100, 1100, 1400, 1400]}} - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): ppo.implement_reform(reform) @@ -585,16 +562,15 @@ def test_pop_the_cap_reform(): ppo = Policy() assert ppo.current_year == Policy.JSON_START_YEAR # confirm that MTE has current-law values in 2015 and 2016 - mte = ppo._SS_Earnings_c syr = Policy.JSON_START_YEAR - assert mte[2015 - syr] == 118500 - assert mte[2016 - syr] == 118500 + assert ppo._SS_Earnings_c[2015 - syr] == 118500 + assert ppo._SS_Earnings_c[2016 - syr] == 118500 # specify a "pop the cap" reform that eliminates MTE cap in 2016 reform = {'SS_Earnings_c': {2016: 9e99}} ppo.implement_reform(reform) - assert mte[2015 - syr] == 118500 - assert mte[2016 - syr] == 9e99 - assert mte[ppo.end_year - syr] == 9e99 + assert ppo._SS_Earnings_c[2015 - syr] == 118500 + assert ppo._SS_Earnings_c[2016 - syr] == 9e99 + assert ppo._SS_Earnings_c[ppo.end_year - syr] == 9e99 def test_order_of_indexing_and_level_reforms(): @@ -780,6 +756,7 @@ def generate_section_dictionary(html_text): path = os.path.join(tests_path, '..', 'policy_current_law.json') with open(path, 'r') as clpfile: clpdict = json.load(clpfile) + clpdict.pop("schema", None) # ... make sure ever clpdict section title is in valid_dict clp_dict = dict() # dictionary of clp section titles structured like valid for pname in clpdict: @@ -826,6 +803,7 @@ def test_description_punctuation(tests_path): path = os.path.join(tests_path, '..', 'policy_current_law.json') with open(path, 'r') as jsonfile: dct = json.load(jsonfile) + dct.pop("schema", None) all_desc_ok = True for param in dct.keys(): if not dct[param]['description'].endswith('.'): @@ -836,77 +814,17 @@ def test_description_punctuation(tests_path): assert all_desc_ok -def test_valid_value_infomation(): - """ - Check consistency of valid_values info in policy_current_law.json file. - """ - # pylint: disable=too-many-statements,too-many-locals - # pylint: disable=too-many-branches,too-many-nested-blocks - # construct set of parameter names with a "valid_values" field - policy = Policy() - min_max_list = ['min', 'max'] - warn_stop_list = ['warn', 'stop'] - json_range_params = set() - parameters = set(policy._vals.keys()) - for pname, param in policy._vals.items(): - assert isinstance(param, dict) - if param['value_type'] == 'string': - continue # because string parameters have no invalid_* keys - prange = param.get('valid_values', None) - if prange: - json_range_params.add(pname) - oor_action = param['invalid_action'] - assert oor_action in warn_stop_list - range_items = prange.items() - assert len(range_items) == 2 - for vop, vval in range_items: - assert vop in min_max_list - if isinstance(vval, str): - if vval == 'default': - if vop != 'min' or oor_action != 'warn': - msg = 'USES DEFAULT FOR min OR FOR error' - assert pname == msg - continue - else: - vval_ = '_' + vval - if vval_ in parameters: - if vop == 'min': - extra_msg = param['invalid_minmsg'] - if vop == 'max': - extra_msg = param['invalid_maxmsg'] - assert vval in extra_msg - else: - assert vval == 'ILLEGAL RANGE STRING VALUE' - else: # if vval is not a str - if isinstance(vval, int): - continue - elif isinstance(vval, float): - continue - elif isinstance(vval, bool): - continue - else: - assert vval == 'ILLEGAL RANGE NUMERIC VALUE' - # compare contents of c_l_p.json parameters and json_range_params - unmatched = parameters ^ json_range_params - if unmatched: - assert unmatched == 'UNMATCHED RANGE PARAMETERS' - # check all current-law-policy parameters for range validity - clp = Policy() - clp._validate_values(parameters) - # eventually activate: assert not clp.parameter_warnings - ctc_c_warning = 'CTC_c was redefined in release 1.0.0\n' - assert clp.parameter_warnings == ctc_c_warning - assert not clp.parameter_errors - - def test_indexing_rates_for_update(): """ Check private _indexing_rates_for_update method. """ pol = Policy() - wgrates = pol._indexing_rates_for_update('_SS_Earnings_c', 2017, 10) - pirates = pol._indexing_rates_for_update('_II_em', 2017, 10) - assert len(wgrates) == len(pirates) + wgrates = pol.get_index_rate('_SS_Earnings_c', 2017) + pirates = pol.get_index_rate('_II_em', 2017) + # TODO: get_index_rate returns a dict + # assert len(wgrates) == len(pirates) + assert isinstance(wgrates, np.float64) + assert isinstance(pirates, np.float64) def test_reform_with_bad_ctc_levels(): @@ -918,7 +836,7 @@ def test_reform_with_bad_ctc_levels(): 'CTC_c': {2020: 2200}, 'ACTC_c': {2020: 2500} } - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): pol.implement_reform(child_credit_reform) @@ -928,11 +846,11 @@ def test_reform_with_removed_parameter(): """ policy1 = Policy() reform1 = {'FilerCredit_c': {2020: 1000}} - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): policy1.implement_reform(reform1) policy2 = Policy() reform2 = {'FilerCredit_c-indexed': {2020: True}} - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): policy2.implement_reform(reform2) @@ -945,7 +863,8 @@ def test_reform_with_out_of_range_error(): pol.implement_reform(reform, raise_errors=False) assert pol.parameter_errors - +# TODO: paramtools does not have warnings. +@pytest.mark.xfail def test_reform_with_warning(): """ Try to use warned out-of-range parameter value in reform. @@ -962,13 +881,16 @@ def test_reform_with_scalar_vector_errors(): """ policy1 = Policy() reform1 = {'SS_thd85': {2020: 30000}} - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): policy1.implement_reform(reform1) policy2 = Policy() + # TODO: this does not throw an error because the + # reshape call in `_update` casts it down to the + # correct number of dimensions. reform2 = {'ID_Medical_frt': {2020: [0.08]}} - with pytest.raises(ValueError): - policy2.implement_reform(reform2) - + # with pytest.raises(paramtools.ValidationError): + # policy2.implement_reform(reform2) + policy2.implement_reform(reform2) def test_index_offset_reform(): """ @@ -987,9 +909,9 @@ def test_index_offset_reform(): pvalue2 = dict() for cyr in [2019, 2020, 2021]: policy1.set_year(cyr) - pvalue1[cyr] = policy1.CTC_c + pvalue1[cyr] = policy1.CTC_c[0] policy2.set_year(cyr) - pvalue2[cyr] = policy2.CTC_c + pvalue2[cyr] = policy2.CTC_c[0] # check that pvalue1 and pvalue2 dictionaries contain the expected values assert pvalue2[2019] == pvalue1[2019] assert pvalue2[2020] == pvalue1[2020] From 6000bc47ca7720936e829c41496f5d64520ef5fa Mon Sep 17 00:00:00 2001 From: hdoupe Date: Tue, 19 Nov 2019 14:00:49 -0500 Subject: [PATCH 02/64] Add paramtools to environment.yaml --- environment.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/environment.yml b/environment.yml index 1b9fabf9c..db5852e9a 100644 --- a/environment.yml +++ b/environment.yml @@ -1,4 +1,6 @@ name: taxcalc-dev +channels: + - conda-forge dependencies: - python - "numpy>=1.14" @@ -12,3 +14,4 @@ dependencies: - pycodestyle - pylint - coverage +- "paramtools>=0.10.0" From f41ec08ef638598f355f68a6574b5610154dc987 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sun, 15 Dec 2019 10:39:15 -0800 Subject: [PATCH 03/64] Add warning handling --- taxcalc/consumption.py | 4 ++-- taxcalc/growdiff.py | 4 ++-- taxcalc/parameters.py | 38 ++++++++++++++++++++++++++------- taxcalc/policy.py | 4 ++-- taxcalc/policy_current_law.json | 3 ++- taxcalc/taxcalcio.py | 4 ++-- taxcalc/tests/test_policy.py | 17 +++++++++++---- 7 files changed, 53 insertions(+), 21 deletions(-) diff --git a/taxcalc/consumption.py b/taxcalc/consumption.py index 33f212225..ddc8cf475 100644 --- a/taxcalc/consumption.py +++ b/taxcalc/consumption.py @@ -48,13 +48,13 @@ def read_json_update(obj): # raise NotImplementedError() def update_consumption(self, revision, - print_warnings=True, raise_errors=True): + ignore_warnings=False, raise_errors=True): """ Update consumption default values using specified revision dictionary. See Parameters._update for argument documentation and details about the expected structure of the revision dictionary. """ - self._update(revision, print_warnings, raise_errors) + self._update(revision, ignore_warnings, raise_errors) RESPONSE_VARS = set(['e17500', 'e18400', 'e19800', 'e20400']) BENEFIT_VARS = set(['housing', 'snap', 'tanf', 'vet', 'wic', diff --git a/taxcalc/growdiff.py b/taxcalc/growdiff.py index c2765b56c..59ca0da92 100644 --- a/taxcalc/growdiff.py +++ b/taxcalc/growdiff.py @@ -43,13 +43,13 @@ def read_json_update(obj, topkey): return Parameters._read_json_revision(obj, topkey) def update_growdiff(self, revision, - print_warnings=True, raise_errors=True): + ignore_warnings=False, raise_errors=True): """ Update growdiff default values using specified revision dictionary. See Parameters._update for argument documentation and details about the expected structure of the revision dictionary. """ - self._update(revision, print_warnings, raise_errors) + self._update(revision, ignore_warnings, raise_errors) def has_any_response(self): """ diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 2d293315d..0979f3326 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -280,9 +280,9 @@ def set_rates(self): """ raise NotImplementedError() - # alias methods + # alias methods below - def _update(self, revision_, print_warnings, raise_errors): + def _update(self, revision_, ignore_warnings, raise_errors): """ A translation layer on top of Parameters.adjust. Projects that have historically used the `_update` method with @@ -308,15 +308,24 @@ def _update(self, revision_, print_warnings, raise_errors): """ if not isinstance(revision_, dict): - raise paramtools.ValidationError({"schema": "Revision must be a dictionary."}, None) + raise paramtools.ValidationError( + {"errors": {"schema": "Revision must be a dictionary."}}, + None + ) new_params = defaultdict(list) # save shallow copy of current instance state cur_state = dict(self.view_state()) for param, val in revision_.items(): if not isinstance(param, str): - raise paramtools.ValidationError({"schema": f"Parameter {param} is not a string."}, None) + raise paramtools.ValidationError( + {"errors": {"schema": f"Parameter {param} is not a string."}}, + None + ) if param not in self._data and param.split("-indexed")[0] not in self._data: - raise paramtools.ValidationError({"schema": f"Parameter {param} does not exist."}, None) + raise paramtools.ValidationError( + {"errors": {"schema": f"Parameter {param} does not exist."}}, + None + ) if param.endswith("-indexed"): for year, yearval in val.items(): new_params[param] += [{"year": year, "value": yearval}] @@ -332,12 +341,25 @@ def _update(self, revision_, print_warnings, raise_errors): try: yearval = self.from_array(param, yearval) except IndexError: - raise paramtools.ValidationError({"schema": f"Pameter {param} does not have the correct array dimensions for year {year}."}, None) + msg = f"Pameter {param} does not have the correct array dimensions for year {year}." + raise paramtools.ValidationError( + {"errors": {"schema": msg}}, + None + ) new_params[param] += yearval else: - raise paramtools.ValidationError({"schema": f"Parameter {param} must be a year:value dictionary if you are not using the new adjust method."}, None) + msg = (f"Parameter {param} must be a year:value dictionary " + f"if you are not using the new adjust method.") + raise paramtools.ValidationError( + {"errors": {"schema": msg}}, + None + ) self.set_state(**cur_state) - return self.adjust(new_params, raise_errors=raise_errors) + return self.adjust( + new_params, + ignore_warnings=ignore_warnings, + raise_errors=raise_errors + ) def set_year(self, year): self.set_state(year=year) diff --git a/taxcalc/policy.py b/taxcalc/policy.py index 41aec353f..da42489f8 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -98,13 +98,13 @@ def read_json_reform(obj): return Parameters._read_json_revision(obj, 'policy') def implement_reform(self, reform, - print_warnings=True, raise_errors=True): + ignore_warnings=False, raise_errors=True): """ Implement reform using Tax-Calculator syled reforms/adjustments. Users may also use the adjust method with ParamTools styled reforms. """ # need to do conversion: - return self._update(reform, print_warnings=print_warnings, raise_errors=raise_errors) + return self._update(reform, ignore_warnings=ignore_warnings, raise_errors=raise_errors) @staticmethod def parameter_list(): diff --git a/taxcalc/policy_current_law.json b/taxcalc/policy_current_law.json index 858e45a1a..04dd87a7a 100644 --- a/taxcalc/policy_current_law.json +++ b/taxcalc/policy_current_law.json @@ -3030,7 +3030,8 @@ "validators": { "range": { "min": 0.075, - "max": 0.1 + "max": 0.1, + "level": "warn" } }, "section_1": "Itemized Deductions", diff --git a/taxcalc/taxcalcio.py b/taxcalc/taxcalcio.py index 6aee11a6b..30821d644 100644 --- a/taxcalc/taxcalcio.py +++ b/taxcalc/taxcalcio.py @@ -265,7 +265,7 @@ def init(self, input_data, tax_year, baseline, reform, assump, base = Policy(gfactors=gfactors_base) try: base.implement_reform(basedict['policy'], - print_warnings=False, + ignore_warnings=True, raise_errors=False) self.errmsg += base.parameter_errors except ValueError as valerr_msg: @@ -276,7 +276,7 @@ def init(self, input_data, tax_year, baseline, reform, assump, for poldict in policydicts: try: pol.implement_reform(poldict, - print_warnings=False, + ignore_warnings=True, raise_errors=False) self.errmsg += pol.parameter_errors except ValueError as valerr_msg: diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index 277280591..85e266d61 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -863,17 +863,26 @@ def test_reform_with_out_of_range_error(): pol.implement_reform(reform, raise_errors=False) assert pol.parameter_errors -# TODO: paramtools does not have warnings. -@pytest.mark.xfail def test_reform_with_warning(): """ Try to use warned out-of-range parameter value in reform. """ pol = Policy() reform = {'ID_Medical_frt': {2020: 0.05}} - pol.implement_reform(reform) - assert pol.parameter_warnings + # TODO: breaking change. ParamTools throws an error + # if ignore_warnings is False while taxcalc simply + # printed the warnings. If ignore_warnings is True + # the warnings are not stored. + + # pol.implement_reform(reform) + # assert pol.parameter_warnings + with pytest.raises(paramtools.ValidationError): + pol.implement_reform(reform) + pol = Policy() + pol.implement_reform(reform, ignore_warnings=True) + pol.set_state(year=2020) + assert pol.ID_Medical_frt == np.array([0.05]) def test_reform_with_scalar_vector_errors(): """ From 16b0ee64580d5ba244b776c91a8b12823fb4b523 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sun, 15 Dec 2019 11:14:46 -0800 Subject: [PATCH 04/64] Add docstring to base parameters class and clean up args --- taxcalc/consumption.py | 4 ++-- taxcalc/parameters.py | 35 +++++++++++++++++++++++++++++++---- taxcalc/policy.py | 4 ++-- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/taxcalc/consumption.py b/taxcalc/consumption.py index ddc8cf475..faa5af6f7 100644 --- a/taxcalc/consumption.py +++ b/taxcalc/consumption.py @@ -32,8 +32,8 @@ class instance: Consumption DEFAULTS_FILE_NAME = 'consumption.json' DEFAULTS_FILE_PATH = os.path.abspath(os.path.dirname(__file__)) - def __init__(self): - super().__init__() + def __init__(self, **kwargs): + super().__init__(**kwargs) self.set_state(year=self.JSON_START_YEAR) @staticmethod diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 0979f3326..5abef1a57 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -20,6 +20,34 @@ def select_lt(value_objects, exact_match, labels, tree=None): class Parameters(paramtools.Parameters): + """ + Base Parameters class that wraps ParamTools, + providing parameter indexing for tax policy in the + adjust method and backwards-compatible preserving + layer that supports Tax-Calculator's conventional + reform formatting style as well as convenience + methods like set_Year for classes operating on + this one. + + The defaults file path may be set through the + defaults class attribute variable or through + the old DEFAULTS_FILE_NAME/DEFAULTS_FILE_PATH + work flow. + + A custom getter method is implemented so that + the value of a parameter over all allowed years + can conveniently be retrieved by adding an + underscore before the variable name (e.g. + EITC_c vs _EITC_c). + + Note: Like all paramtools.Parameters classes + the values of attributes corresponding to a + parameter value on this class are ephemeral + and the only way to make permanent changes + to this class'sstate is through the set_state + or adjust methods. + + """ defaults = None array_first = True label_to_extend = "year" @@ -37,7 +65,6 @@ def __init__(self, *args, **kwargs): self.wage_growth_rates = None self.inflation_rates = None if self.defaults is None and self.DEFAULTS_FILE_PATH and self.DEFAULTS_FILE_NAME: - print("trying DEFAULTS_FILE_PATH and DEFAULTS_FILE_NAME") self.defaults = os.path.join(self.DEFAULTS_FILE_PATH, self.DEFAULTS_FILE_NAME) super().__init__(*args, **kwargs) self._init_values = { @@ -282,7 +309,7 @@ def set_rates(self): # alias methods below - def _update(self, revision_, ignore_warnings, raise_errors): + def _update(self, revision, ignore_warnings, raise_errors): """ A translation layer on top of Parameters.adjust. Projects that have historically used the `_update` method with @@ -307,7 +334,7 @@ def _update(self, revision_, ignore_warnings, raise_errors): } """ - if not isinstance(revision_, dict): + if not isinstance(revision, dict): raise paramtools.ValidationError( {"errors": {"schema": "Revision must be a dictionary."}}, None @@ -315,7 +342,7 @@ def _update(self, revision_, ignore_warnings, raise_errors): new_params = defaultdict(list) # save shallow copy of current instance state cur_state = dict(self.view_state()) - for param, val in revision_.items(): + for param, val in revision.items(): if not isinstance(param, str): raise paramtools.ValidationError( {"errors": {"schema": f"Parameter {param} is not a string."}}, diff --git a/taxcalc/policy.py b/taxcalc/policy.py index da42489f8..a2ac69698 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -72,7 +72,7 @@ class instance: Policy # (3) specify which Policy parameters are wage (rather than price) indexed WAGE_INDEXED_PARAMS = ['SS_Earnings_c', 'SS_Earnings_thd'] - def __init__(self, gfactors=None, only_reading_defaults=False): + def __init__(self, gfactors=None, only_reading_defaults=False, **kwargs): # put JSON contents of DEFAULTS_FILE_NAME into self._vals dictionary if only_reading_defaults: return @@ -84,7 +84,7 @@ def __init__(self, gfactors=None, only_reading_defaults=False): else: raise ValueError('gfactors is not None or a GrowFactors instance') - super().__init__() + super().__init__(**kwargs) @staticmethod From d9e5428ee3a2f987579eda0a9734edcb5e9aeb72 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Tue, 17 Dec 2019 10:07:58 -0800 Subject: [PATCH 05/64] Update tests in test_parameters.py --- taxcalc/parameters.py | 36 ++- taxcalc/tests/test_parameters.py | 370 ++++++++----------------------- 2 files changed, 118 insertions(+), 288 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 5abef1a57..14fd23c38 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -3,6 +3,7 @@ import re from collections import defaultdict +import marshmallow as ma import paramtools import numpy as np import requests @@ -19,6 +20,18 @@ def select_lt(value_objects, exact_match, labels, tree=None): return paramtools.select(value_objects, exact_match, lt_func, labels, tree) +class CompatibleDataSchema(ma.Schema): + """ + Schema for Compatible data object + { + "compatible_data": {"data1": bool, "data2": bool, ...} + } + """ + + puf = ma.fields.Boolean() + cps = ma.fields.Boolean() + + class Parameters(paramtools.Parameters): """ Base Parameters class that wraps ParamTools, @@ -48,6 +61,8 @@ class Parameters(paramtools.Parameters): or adjust methods. """ + field_map = {"compatible_data": ma.fields.Nested(CompatibleDataSchema())} + defaults = None array_first = True label_to_extend = "year" @@ -61,10 +76,10 @@ class Parameters(paramtools.Parameters): JSON_START_YEAR = None LAST_KNOWN_YEAR = None - def __init__(self, *args, **kwargs): + def __init__(self, *args, start_year=None, **kwargs): self.wage_growth_rates = None self.inflation_rates = None - if self.defaults is None and self.DEFAULTS_FILE_PATH and self.DEFAULTS_FILE_NAME: + if self.defaults is None and self.DEFAULTS_FILE_PATH is not None and self.DEFAULTS_FILE_NAME: self.defaults = os.path.join(self.DEFAULTS_FILE_PATH, self.DEFAULTS_FILE_NAME) super().__init__(*args, **kwargs) self._init_values = { @@ -72,8 +87,8 @@ def __init__(self, *args, **kwargs): for param, data in self.read_params(self.defaults).items() if param != "schema" } - if self.JSON_START_YEAR: - self.set_state(year=self.JSON_START_YEAR) + if start_year or self.JSON_START_YEAR: + self.set_state(year=start_year or self.JSON_START_YEAR) def adjust(self, params_or_path, **kwargs): """ @@ -195,6 +210,13 @@ def adjust(self, params_or_path, **kwargs): for param, values in params.items(): if param.endswith("-indexed"): base_param = param.split("-indexed")[0] + if not self._data[base_param].get("indexable", None): + raise paramtools.ValidationError( + { + "errors": {base_param: f"Parameter {base_param} is not indexable."} + }, + labels=None + ) index_affected = index_affected | {param, base_param} to_index = {} if isinstance(values, bool): @@ -358,7 +380,11 @@ def _update(self, revision, ignore_warnings, raise_errors): new_params[param] += [{"year": year, "value": yearval}] elif isinstance(val, dict): for year, yearval in val.items(): - ndims = getattr(self, param).ndim + val = getattr(self, param) + if isinstance(val, np.ndarray): + ndims = val.ndim + else: + ndims = 0 yearval = np.array(yearval) short_dims = ndims - yearval.ndim yearval = yearval.reshape( diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index dcece2265..dd40e17c7 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -10,6 +10,7 @@ import math import tempfile import numpy as np +import paramtools import pytest # pylint: disable=import-error from taxcalc import Parameters, Policy, Consumption, GrowFactors @@ -24,34 +25,48 @@ # Params class, which is defined in the test_params_class function. -PARAMS_JSON = """ +PARAMS_JSON = json.dumps( { -"real_param": { - "value_type": "real", - "value_yrs": [2001, 2002, 2003], - "value": [0.5, 0.5, 0.5], - "valid_values": {"min": 0, "max": 1} -}, -"int_param": { - "value_type": "integer", - "value_yrs": [2001, 2002, 2003], - "value": [2, 2, 2], - "valid_values": {"min": 0, "max": 9} -}, -"bool_param": { - "value_type": "boolean", - "value_yrs": [2001, 2002, 2003], - "value": [true, true, true], - "valid_values": {"min": false, "max": true} -}, -"str_param": { - "value_type": "string", - "value_yrs": [2001, 2002, 2003], - "value": ["linear", "linear", "linear"], - "valid_values": {"options": ["linear", "nonlinear", "cubic"]} -} -} -""" + "schema": { + "labels": { + "year": { + "type": "int", "validators": {"range": {"min": 2001, "max": 2010}} + } + }, + "operators": { + "array_first": True, + "label_to_extend": "year" + } + }, + "real_param": { + "title": "Real (float) parameter", + "description": "", + "type": "float", + "value": 0.5, + "validators": {"range": {"min": 0, "max": 1}} + }, + "int_param": { + "title": "Integer parameter", + "description": "", + "type": "int", + "value": 2, + "validators": {"range": {"min": 0, "max": 9}} + }, + "bool_param": { + "title": "Boolean parameter", + "description": "", + "type": "bool", + "value": True, + }, + "str_param": { + "title": "String parameter", + "description": "", + "type": "str", + "value": "linear", + "validators": {"choice": {"choices": ["linear", "nonlinear", "cubic"]}} + } +}) + @pytest.fixture(scope='module', name='params_json_file') @@ -69,7 +84,9 @@ def fixture_params_json_file(): @pytest.mark.parametrize("revision, expect", [ ({}, ""), ({'real_param': {2004: 1.9}}, "error"), - ({'int_param': {2004: [3.6]}}, "raise"), + # TODO: Should ParamTools allow ints for float + # params. Current behavior is to cast. + # ({'int_param': {2004: [3.6]}}, "raise"), ({'bool_param': {2004: [4.9]}}, "raise"), ({'str_param': {2004: [9]}}, "raise"), ({'str_param': {2004: 'nonlinear'}}, "noerror"), @@ -95,15 +112,14 @@ class Params(Parameters): NUM_YEARS = LAST_YEAR - START_YEAR + 1 def __init__(self): - super().__init__() - self.initialize(Params.START_YEAR, Params.NUM_YEARS) + super().__init__(start_year=Params.START_YEAR) def update_params(self, revision, - print_warnings=True, raise_errors=True): + ignore_warnings=False, raise_errors=True): """ Update parameters given specified revision dictionary. """ - self._update(revision, print_warnings, raise_errors) + self._update(revision, ignore_warnings, raise_errors) # test Params class prms = Params() @@ -112,27 +128,28 @@ def update_params(self, revision, assert prms.start_year == 2001 assert prms.current_year == 2001 assert prms.end_year == 2010 - assert prms.inflation_rates() == list() - assert prms.wage_growth_rates() == list() + assert prms.inflation_rates == None + assert prms.wage_growth_rates == None prms.set_year(2010) assert prms.current_year == 2010 - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): prms.set_year(2011) return + if expect == 'raise': - with pytest.raises(ValueError): - prms.update_params(revision, - print_warnings=False, - raise_errors=False) + with pytest.raises(paramtools.ValidationError): + prms.update_params(revision) elif expect == 'noerror': - prms.update_params(revision, print_warnings=False, raise_errors=False) - assert not prms.parameter_errors + prms.update_params(revision) + assert not prms.errors elif expect == 'error': - prms.update_params(revision, print_warnings=False, raise_errors=False) - assert prms.parameter_errors + with pytest.raises(paramtools.ValidationError): + prms.update_params(revision) + assert prms.errors elif expect == 'warn': - prms.update_params(revision, print_warnings=False, raise_errors=False) - assert prms.parameter_warnings + with pytest.raises(paramtools.ValidationError): + prms.update_params(revision) + assert prms.warnings @pytest.mark.parametrize("fname", @@ -143,18 +160,11 @@ def test_json_file_contents(tests_path, fname): """ Check contents of JSON parameter files in Tax-Calculator/taxcalc directory. """ - # pylint: disable=too-many-locals,too-many-branches,too-many-statements - # specify test information - required_keys = ['long_name', 'description', - 'value_type', 'value_yrs', 'value', 'valid_values'] - valid_value_types = ['boolean', 'integer', 'real', 'string'] - if fname == 'policy_current_law.json': - invalid_keys = ['invalid_minmsg', 'invalid_maxmsg', 'invalid_action'] - else: - invalid_keys = [] + # TODO: only leave checks on parameter specification, + # and leave schema checks to Paramtools first_year = Policy.JSON_START_YEAR last_known_year = Policy.LAST_KNOWN_YEAR # for indexed parameter values - num_known_years = last_known_year - first_year + 1 + known_years = set(range(first_year, last_known_year + 1)) long_params = ['II_brk1', 'II_brk2', 'II_brk3', 'II_brk4', 'II_brk5', 'II_brk6', 'II_brk7', 'PT_brk1', 'PT_brk2', 'PT_brk3', 'PT_brk4', @@ -164,41 +174,16 @@ def test_json_file_contents(tests_path, fname): 'STD', 'II_em', 'AMT_em', 'AMT_em_ps', 'AMT_em_pe', 'ID_ps', 'ID_AllTaxes_c'] - long_known_years = 2026 - first_year + 1 # for TCJA-reverting long_params - # read JSON parameter file into a dictionary - path = os.path.join(tests_path, '..', fname) - pfile = open(path, 'r') - allparams = json.load(pfile) - pfile.close() - assert isinstance(allparams, dict) + long_known_years = set(range(first_year, 2026 + 1)) # for TCJA-reverting long_params # check elements in each parameter sub-dictionary failures = '' + with open(os.path.join(tests_path, "..", fname)) as f: + allparams = json.loads(f.read()) for pname in allparams: - # all parameter names should be strings - assert isinstance(pname, str) + if pname == "schema": + continue # check that param contains required keys param = allparams[pname] - assert isinstance(param, dict) - for key in required_keys: - assert key in param - if param['value_type'] == 'string': - for key in invalid_keys: - assert key not in param - assert isinstance(param['valid_values']['options'], list) - else: - for key in invalid_keys: - assert key in param - assert param.get('invalid_action', 'stop') in ['stop', 'warn'] - # check for non-empty long_name and description strings - assert isinstance(param['long_name'], str) - if not param['long_name']: - assert '{} long_name'.format(pname) == 'empty string' - assert isinstance(param['description'], str) - if not param['description']: - assert '{} description'.format(pname) == 'empty string' - # check that indexable and indexed are boolean - assert isinstance(param.get('indexable', False), bool) - assert isinstance(param.get('indexed', False), bool) # check that indexable and indexed are False in many files if fname != 'policy_current_law.json': assert param.get('indexable', False) is False @@ -210,75 +195,40 @@ def test_json_file_contents(tests_path, fname): param.get('indexed', False), param.get('indexable', False)) failures += fail + '\n' - # check that value_type is correct string - if not param['value_type'] in valid_value_types: - msg = 'param:<{}>; value_type={}' - fail = msg.format(pname, param['value_type']) - failures += fail + '\n' - # check that indexable param has value_type real - if param.get('indexable', False) and param['value_type'] != 'real': - msg = 'param:<{}>; value_type={}; indexable={}' - fail = msg.format(pname, param['value_type'], + # check that indexable param has value_type float + if param.get('indexable', False) and param['type'] != 'float': + msg = 'param:<{}>; type={}; indexable={}' + fail = msg.format(pname, param['type'], param.get('indexable', False)) failures += fail + '\n' # ensure that indexable is False when value_type is not real - if param.get('indexable', False) and param['value_type'] != 'real': - msg = 'param:<{}>; indexable={}; value_type={}' + if param.get('indexable', False) and param['type'] != 'float': + msg = 'param:<{}>; indexable={}; type={}' fail = msg.format(pname, param.get('indexable', False), param['value_type']) failures += fail + '\n' - # check that value_yrs is list - valueyrs = param['value_yrs'] - assert isinstance(valueyrs, list) - # check all value_yrs values - cyr = first_year - for vyr in valueyrs: - assert vyr == cyr - cyr += 1 - # check type and dimension of value - value = param['value'] - assert isinstance(value, list) - assert len(value) == len(valueyrs) - # check that vi_name and vi_vals are consistent - viname = param.get('vi_name', '') - assert isinstance(viname, str) - vivals = param.get('vi_vals', []) - if viname == '': - assert vivals == [] - else: - assert isinstance(vivals, list) - # check different possible vi_name values - if viname == 'MARS': - assert len(vivals) == 5 - elif viname == 'EIC': - assert len(vivals) == 4 - elif viname == 'idedtype': - assert len(vivals) == 7 - elif viname == 'c00100': - pass - else: - assert viname == 'UNKNOWN vi_name VALUE' - # check length of each value row - for valuerow in value: - assert len(valuerow) == len(vivals) # check that indexed parameters have all known years in value_yrs list # (form_parameters are those whose value is available only on IRS form) form_parameters = [] if param.get('indexed', False): + defined_years = set( + vo["year"] for vo in param["value"] + ) error = False - known_years = num_known_years if pname in long_params: - known_years = long_known_years + exp_years = long_known_years + else: + exp_years = known_years if pname in form_parameters: - if len(valueyrs) != (known_years - 1): + if defined_years != exp_years: error = True else: - if len(valueyrs) != known_years: + if defined_years != exp_years: error = True if error: msg = 'param:<{}>; len(value_yrs)={}; known_years={}' - fail = msg.format(pname, len(valueyrs), known_years) + fail = msg.format(pname, len(defined_years), exp_years) failures += fail + '\n' if failures: raise ValueError(failures) @@ -319,160 +269,14 @@ def test_parameters_mentioned(tests_path, jfname, pfname): pfile.close() # check that each param (without leading _) is mentioned in code text for pname in allparams: + if pname == "schema": + continue assert pname[1:] in code_text # following tests access private methods, so pylint: disable=protected-access -def test_expand_xd_errors(): - """ - One of several _expand_?D tests. - """ - dct = dict() - with pytest.raises(ValueError): - Parameters._expand_1d(dct, inflate=False, inflation_rates=[], - num_years=10) - with pytest.raises(ValueError): - Parameters._expand_2d(dct, inflate=False, inflation_rates=[], - num_years=10) - - -def test_expand_1d_scalar(): - """ - One of several _expand_?D tests. - """ - yrs = 12 - val = 10.0 - exp = np.array([val * math.pow(1.02, i) for i in range(0, yrs)]) - res = Parameters._expand_1d(np.array([val]), - inflate=True, inflation_rates=[0.02] * yrs, - num_years=yrs) - assert np.allclose(exp, res, atol=0.01, rtol=0.0) - res = Parameters._expand_1d(np.array([val]), - inflate=True, inflation_rates=[0.02] * yrs, - num_years=1) - assert np.allclose(np.array([val]), res, atol=0.01, rtol=0.0) - - -def test_expand_2d_short_array(): - """ - One of several _expand_?D tests. - """ - ary = np.array([[1., 2., 3.]]) - val = np.array([1., 2., 3.]) - exp2 = np.array([val * math.pow(1.02, i) for i in range(1, 5)]) - exp1 = np.array([1., 2., 3.]) - exp = np.zeros((5, 3)) - exp[:1] = exp1 - exp[1:] = exp2 - res = Parameters._expand_2d(ary, inflate=True, - inflation_rates=[0.02] * 5, num_years=5) - assert np.allclose(exp, res, atol=0.01, rtol=0.0) - - -def test_expand_2d_variable_rates(): - """ - One of several _expand_?D tests. - """ - ary = np.array([[1., 2., 3.]]) - cur = np.array([1., 2., 3.]) - irates = [0.02, 0.02, 0.02, 0.03, 0.035] - exp2 = [] - for i in range(0, 4): - idx = i + len(ary) - 1 - cur = np.array(cur * (1.0 + irates[idx])) - print('cur is ', cur) - exp2.append(cur) - exp1 = np.array([1., 2., 3.]) - exp = np.zeros((5, 3)) - exp[:1] = exp1 - exp[1:] = exp2 - res = Parameters._expand_2d(ary, inflate=True, - inflation_rates=irates, num_years=5) - assert np.allclose(exp, res, atol=0.01, rtol=0.0) - - -def test_expand_2d_already_filled(): - """ - One of several _expand_?D tests. - """ - # pylint doesn't like caps in var name, so pylint: disable=invalid-name - _II_brk2 = [[36000., 72250., 36500., 48600., 72500., 36250.], - [38000., 74000., 36900., 49400., 73800., 36900.], - [40000., 74900., 37450., 50200., 74900., 37450.]] - res = Parameters._expand_2d(np.array(_II_brk2), - inflate=True, inflation_rates=[0.02] * 5, - num_years=3) - np.allclose(res, np.array(_II_brk2), atol=0.01, rtol=0.0) - - -def test_expand_2d_partial_expand(): - """ - One of several _expand_?D tests. - """ - # pylint doesn't like caps in var name, so pylint: disable=invalid-name - _II_brk2 = [[36000.0, 72250.0, 36500.0, 48600.0, 72500.0, 36250.0], - [38000.0, 74000.0, 36900.0, 49400.0, 73800.0, 36900.0], - [40000.0, 74900.0, 37450.0, 50200.0, 74900.0, 37450.0]] - # We have three years worth of data, need 4 years worth, - # but we only need the inflation rate for year 3 to go - # from year 3 -> year 4 - inf_rates = [0.02, 0.02, 0.03] - exp1 = 40000. * 1.03 - exp2 = 74900. * 1.03 - exp3 = 37450. * 1.03 - exp4 = 50200. * 1.03 - exp5 = 74900. * 1.03 - exp6 = 37450. * 1.03 - exp = [[36000.0, 72250.0, 36500.0, 48600.0, 72500.0, 36250.0], - [38000.0, 74000.0, 36900.0, 49400.0, 73800.0, 36900.0], - [40000.0, 74900.0, 37450.0, 50200.0, 74900.0, 37450.0], - [exp1, exp2, exp3, exp4, exp5, exp6]] - res = Parameters._expand_2d(np.array(_II_brk2), - inflate=True, inflation_rates=inf_rates, - num_years=4) - assert np.allclose(res, exp, atol=0.01, rtol=0.0) - - -@pytest.mark.parametrize('json_filename', - ['policy_current_law.json', - 'consumption.json', - 'growdiff.json']) -def test_bool_int_value_info(tests_path, json_filename): - """ - Check consistency of boolean and integer info in JSON parameter files. - """ - path = os.path.join(tests_path, '..', json_filename) - with open(path, 'r') as pfile: - pdict = json.load(pfile) - maxint = np.iinfo(np.int16).max - for param in sorted(pdict.keys()): - # find param type based on value - val = pdict[param]['value'] - while isinstance(val, list): - val = val[0] - valstr = str(val) - val_is_boolean = valstr in ('True', 'False') - val_is_integer = (not bool('.' in valstr or abs(val) > maxint) and - not val_is_boolean) - # check that val_is_integer is consistent with integer type - integer_type = pdict[param]['value_type'] == 'integer' - if val_is_integer != integer_type: - msg = 'param,value_type,valstr= {} {} {}' - msg = msg.format(str(param), - pdict[param]['value_type'], - valstr) - assert msg == 'ERROR: integer_value param has non-integer value' - # check that val_is_boolean is consistent with boolean_value - boolean_type = pdict[param]['value_type'] == 'boolean' - if val_is_boolean != boolean_type: - msg = 'param,value_type,valstr= {} {} {}' - msg = msg.format(str(param), - pdict[param]['value_type'], - valstr) - assert msg == 'ERROR: boolean_value param has non-boolean value' - def test_read_json_revision(): """ From c50e8d08d15f855e238ecfb9c9dbf0e1561f12cf Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sun, 22 Dec 2019 14:18:48 -0500 Subject: [PATCH 06/64] Fix terminology in comment --- taxcalc/parameters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 14fd23c38..2295e91d6 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -286,7 +286,7 @@ def adjust(self, params_or_path, **kwargs): self.extend(params=[base_param], label_to_extend="year") needs_reset.append(base_param) - # re-instate ops. + # re-instate actions. self.label_to_extend = label_to_extend self.array_first = array_first From d9f7c9316905e5ad4b77a6a1b7ee0f6e637ba36e Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sun, 22 Dec 2019 14:22:27 -0500 Subject: [PATCH 07/64] Remove debugging print statement from calcfunctions --- taxcalc/calcfunctions.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/taxcalc/calcfunctions.py b/taxcalc/calcfunctions.py index 7265e1bea..eb08d982a 100644 --- a/taxcalc/calcfunctions.py +++ b/taxcalc/calcfunctions.py @@ -1798,8 +1798,6 @@ def BenefitSurtax(calc): to income tax, combined tax, and surtax liabilities. """ if calc.policy_param('ID_BenefitSurtax_crt') != 1.: - print("switch", calc.policy_param('ID_BenefitSurtax_Switch')) - switch = calc.policy_param('ID_BenefitSurtax_Switch') ben = ComputeBenefit(calc, calc.policy_param('ID_BenefitSurtax_Switch')) agi = calc.array('c00100') From 8217150bb418a84d4f711dfd1173786d6db8f763 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sun, 22 Dec 2019 14:41:04 -0500 Subject: [PATCH 08/64] Revert inflation_rates and wage_growth_rates back to being methods to keep api compat --- taxcalc/consumption.py | 1 - taxcalc/parameters.py | 21 +++++++++++++++------ taxcalc/policy.py | 4 ++-- taxcalc/tests/test_parameters.py | 4 ++-- taxcalc/tests/test_policy.py | 8 ++++---- 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/taxcalc/consumption.py b/taxcalc/consumption.py index faa5af6f7..1aa182812 100644 --- a/taxcalc/consumption.py +++ b/taxcalc/consumption.py @@ -45,7 +45,6 @@ def read_json_update(obj): pointing to a valid JSON file hosted online, or a valid JSON text. """ return Parameters._read_json_revision(obj, 'consumption') - # raise NotImplementedError() def update_consumption(self, revision, ignore_warnings=False, raise_errors=True): diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 2295e91d6..dc6a146b0 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -77,8 +77,8 @@ class Parameters(paramtools.Parameters): LAST_KNOWN_YEAR = None def __init__(self, *args, start_year=None, **kwargs): - self.wage_growth_rates = None - self.inflation_rates = None + self._wage_growth_rates = None + self._inflation_rates = None if self.defaults is None and self.DEFAULTS_FILE_PATH is not None and self.DEFAULTS_FILE_NAME: self.defaults = os.path.join(self.DEFAULTS_FILE_PATH, self.DEFAULTS_FILE_NAME) super().__init__(*args, **kwargs) @@ -157,7 +157,7 @@ def adjust(self, params_or_path, **kwargs): self._data["CPI_offset"]["value"] ) for cpi_vo in rate_adjustment_vals: - self.inflation_rates[cpi_vo["year"]] += cpi_vo["value"] + self._inflation_rates[cpi_vo["year"]] += cpi_vo["value"] # 1. delete all unknown values. # 1.a for revision these are years specified after cpi_min_year to_delete = {} @@ -315,12 +315,12 @@ def get_index_rate(self, param, label_to_extend_val): label_to_extend. Returns: rate to use for indexing. """ - if not self.inflation_rates or not self.wage_growth_rates: + if not self._inflation_rates or not self._wage_growth_rates: self.set_rates() if param in self.WAGE_INDEXED_PARAMS: - return self.wage_growth_rates[label_to_extend_val] + return self._wage_growth_rates[label_to_extend_val] else: - return self.inflation_rates[label_to_extend_val] + return self._inflation_rates[label_to_extend_val] def set_rates(self): """ @@ -329,6 +329,15 @@ def set_rates(self): """ raise NotImplementedError() + # TODO: It seems like less trouble to keep wage_growth_rates + # and inflaiton_rates as attributes instead of methods that + # access a private variable. + def wage_growth_rates(self): + return self._wage_growth_rates + + def inflation_rates(self): + return self._inflation_rates + # alias methods below def _update(self, revision, ignore_warnings, raise_errors): diff --git a/taxcalc/policy.py b/taxcalc/policy.py index a2ac69698..2e30c401b 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -127,12 +127,12 @@ def set_rates(self): if not self._gfactors: self._gfactors = GrowFactors() - self.inflation_rates = { + self._inflation_rates = { 2013 + ix: np.round(rate + cpi_offset[2013 + ix], 4) for ix, rate in enumerate(self._gfactors.price_inflation_rates(2013, 2029)) } - self.wage_growth_rates = { + self._wage_growth_rates = { 2013 + ix: rate for ix, rate in enumerate(self._gfactors.wage_growth_rates(2013, 2029)) } diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index dd40e17c7..334455cb1 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -128,8 +128,8 @@ def update_params(self, revision, assert prms.start_year == 2001 assert prms.current_year == 2001 assert prms.end_year == 2010 - assert prms.inflation_rates == None - assert prms.wage_growth_rates == None + assert prms.inflation_rates() == None + assert prms.wage_growth_rates() == None prms.set_year(2010) assert prms.current_year == 2010 with pytest.raises(paramtools.ValidationError): diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index 85e266d61..a239d6e70 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -162,7 +162,7 @@ def test_constant_inflation_rate_with_reform(): } pol.implement_reform(reform) # extract price inflation rates - pirates = pol.inflation_rates + pirates = pol.inflation_rates() syr = Policy.JSON_START_YEAR irate_b = pirates[ryr - 2] irate_a = pirates[ryr] @@ -190,7 +190,7 @@ def test_variable_inflation_rate_with_reform(): pol.set_year(2020) assert pol.current_year == 2020 # extract price inflation rates - pirates = pol.inflation_rates + pirates = pol.inflation_rates() irate2018 = pirates[2018] irate2020 = pirates[2020] irate2021 = pirates[2021] @@ -213,11 +213,11 @@ def test_multi_year_reform(): syr = Policy.JSON_START_YEAR nyrs = Policy.DEFAULT_NUM_YEARS pol = Policy() - iratelist = pol.inflation_rates + iratelist = pol.inflation_rates() ifactor = {} for i in range(0, nyrs): ifactor[syr + i] = 1.0 + iratelist[syr + i] - wratelist = pol.wage_growth_rates + wratelist = pol.wage_growth_rates() wfactor = {} for i in range(0, nyrs): wfactor[syr + i] = 1.0 + wratelist[syr + i] From 5cd798a9af593e52df9dd9209edbb85a56a89fad Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sun, 22 Dec 2019 15:38:41 -0500 Subject: [PATCH 09/64] Use pm/pf terminology instead of paremeter_list for determining if it's a Policy parameter - Updates test_decorators.py for change in Policy parameter value dimensionality --- taxcalc/decorators.py | 7 +++--- taxcalc/tests/test_decorators.py | 38 ++++++++++++++++---------------- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/taxcalc/decorators.py b/taxcalc/decorators.py index fd229fa40..ac638f4b9 100644 --- a/taxcalc/decorators.py +++ b/taxcalc/decorators.py @@ -101,7 +101,7 @@ def ap_fuc(x_0, x_1, x_2, ...): return fstr.getvalue() -def create_toplevel_function_string(args_out, args_in, pm_or_pf, parameter_list): +def create_toplevel_function_string(args_out, args_in, pm_or_pf): """ Create a string for a function of the form: @@ -143,7 +143,7 @@ def hl_func(x_0, x_1, x_2, ...): fstr.write(" " + "applied_f(") for ppp, attr in zip(pm_or_pf, args_out + args_in): # Bring Policy parameter values down a dimension. - if attr in parameter_list: + if ppp == "pm": attr += "[0]" fstr.write("get_values(" + ppp + "." + attr + ")" + ", ") fstr.write(")\n") @@ -311,8 +311,7 @@ def wrapper(*args, **kwargs): # Create the high level function high_level_func = create_toplevel_function_string(all_out_args, list(in_args), - pm_or_pf, - set(all_parameters)) + pm_or_pf) func_code = compile(high_level_func, "", "exec") fakeglobals = {} eval(func_code, # pylint: disable=eval-used diff --git a/taxcalc/tests/test_decorators.py b/taxcalc/tests/test_decorators.py index 9c4e1b767..1ad4fc164 100644 --- a/taxcalc/tests/test_decorators.py +++ b/taxcalc/tests/test_decorators.py @@ -45,8 +45,8 @@ def test_create_toplevel_function_string_mult_outputs(): " return x\n" " outputs = \\\n" " (pm.a, pm.b) = \\\n" - " applied_f(get_values(pm.a), get_values(pm.b), " - "get_values(pf.d), get_values(pm.e), )\n" + " applied_f(get_values(pm.a[0]), get_values(pm.b[0]), " + "get_values(pf.d), get_values(pm.e[0]), )\n" " header = ['a', 'b']\n" " return DataFrame(data=np.column_stack(outputs)," "columns=header)") @@ -69,8 +69,8 @@ def test_create_toplevel_function_string(): " return x\n" " outputs = \\\n" " (pm.a) = \\\n" - " applied_f(get_values(pm.a), get_values(pf.d), " - "get_values(pm.e), )\n" + " applied_f(get_values(pm.a[0]), get_values(pf.d), " + "get_values(pm.e[0]), )\n" " header = ['a']\n" " return DataFrame(data=outputs," "columns=header)") @@ -167,8 +167,8 @@ def test_magic_apply_jit_swap(): def test_magic_iterate_jit(): pm = Foo() pf = Foo() - pm.a = np.ones((5,)) - pm.b = np.ones((5,)) + pm.a = np.ones((1, 5)) + pm.b = np.ones((1, 5)) pf.x = np.ones((5,)) pf.y = np.ones((5,)) pf.z = np.ones((5,)) @@ -212,8 +212,8 @@ def Magic_calc3(x, y, z): def test_function_takes_kwarg(): pm = Foo() pf = Foo() - pm.a = np.ones((5,)) - pm.b = np.ones((5,)) + pm.a = np.ones((1, 5)) + pm.b = np.ones((1, 5)) pf.x = np.ones((5,)) pf.y = np.ones((5,)) pf.z = np.ones((5,)) @@ -233,8 +233,8 @@ def Magic_calc4(x, y, z): def test_function_no_parameters_listed(): pm = Foo() pf = Foo() - pm.a = np.ones((5,)) - pm.b = np.ones((5,)) + pm.a = np.ones((1, 5)) + pm.b = np.ones((1, 5)) pf.x = np.ones((5,)) pf.y = np.ones((5,)) pf.z = np.ones((5,)) @@ -254,9 +254,9 @@ def Magic_calc5(w, x, y, z): def test_function_parameters_optional(): pm = Foo() pf = Foo() - pm.a = np.ones((5,)) - pm.b = np.ones((5,)) - pm.w = np.ones((5,)) + pm.a = np.ones((1, 5)) + pm.b = np.ones((1, 5)) + pm.w = np.ones((1, 5)) pf.x = np.ones((5,)) pf.y = np.ones((5,)) pf.z = np.ones((5,)) @@ -288,9 +288,9 @@ def test_iterate_jit_raises_on_unknown_return_argument(): uf2 = ij(unjittable_function2) pm = Foo() pf = Foo() - pm.a = np.ones((5,)) - pm.b = np.ones((5,)) - pm.w = np.ones((5,)) + pm.a = np.ones((1, 5)) + pm.b = np.ones((1, 5)) + pm.w = np.ones((1, 5)) pf.x = np.ones((5,)) pf.y = np.ones((5,)) pf.z = np.ones((5,)) @@ -317,9 +317,9 @@ def test_force_no_jit(): Magic_calc6_ = iterate_jit(parameters=['w'], nopython=True)(Magic_calc6) pm = Foo() pf = Foo() - pm.a = np.ones((5,)) - pm.b = np.ones((5,)) - pm.w = np.ones((5,)) + pm.a = np.ones((1, 5)) + pm.b = np.ones((1, 5)) + pm.w = np.ones((1, 5)) pf.x = np.ones((5,)) pf.y = np.ones((5,)) pf.z = np.ones((5,)) From 88bde600154deae65ad252e67a284c6fe99fdae0 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sun, 22 Dec 2019 15:42:29 -0500 Subject: [PATCH 10/64] Fix missed inflation_rates to method reversion --- taxcalc/tests/test_calculator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taxcalc/tests/test_calculator.py b/taxcalc/tests/test_calculator.py index 1fe9a37e7..95aaf8fac 100644 --- a/taxcalc/tests/test_calculator.py +++ b/taxcalc/tests/test_calculator.py @@ -232,7 +232,7 @@ def test_make_calculator_increment_years_first(cps_subsample): rec = Records.cps_constructor(data=cps_subsample) calc = Calculator(policy=pol, records=rec) # compare expected policy parameter values with those embedded in calc - irates = pol.inflation_rates # TODO: should this be a method or a property? () + irates = pol.inflation_rates() syr = Policy.JSON_START_YEAR irate2015 = irates[2015] irate2016 = irates[2016] From 058f4a435991f10753feb126dd651deade8f05fb Mon Sep 17 00:00:00 2001 From: hdoupe Date: Tue, 28 Jan 2020 17:44:01 -0500 Subject: [PATCH 11/64] Progress on reform docs --- setup.py | 5 ++++- taxcalc/calculator.py | 49 ++++++++++++++++++++++++------------------- taxcalc/parameters.py | 2 +- 3 files changed, 32 insertions(+), 24 deletions(-) diff --git a/setup.py b/setup.py index 4b261f62b..b4aba3d8b 100755 --- a/setup.py +++ b/setup.py @@ -31,7 +31,10 @@ 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Topic :: Software Development :: Libraries :: Python Modules'], - 'tests_require': ['pytest'] + 'tests_require': ['pytest'], + 'entry_points': { + 'console_scripts': ['tc=taxcalc.cli.tc:cli_tc_main'] + } } setup(**config) diff --git a/taxcalc/calculator.py b/taxcalc/calculator.py index 418dfcaee..9d1470c86 100644 --- a/taxcalc/calculator.py +++ b/taxcalc/calculator.py @@ -10,6 +10,7 @@ import copy import numpy as np import pandas as pd +import paramtools from taxcalc.calcfunctions import (TaxInc, SchXYZTax, GainsTax, AGIsurtax, NetInvIncTax, AMT, EI_PayrollTax, Adj, DependentCare, ALD_InvInc_ec_base, CapGains, @@ -1165,24 +1166,22 @@ def lines(text, num_indent_spaces, max_line_length=77): for year in years: baseline.set_year(year) updated.set_year(year) - mdata_base = baseline.metadata() - mdata_upda = updated.metadata() - mdata_base_keys = mdata_base.keys() - mdata_upda_keys = mdata_upda.keys() - assert set(mdata_base_keys) == set(mdata_upda_keys) + assert set(baseline.keys()) == set(updated.keys()) params_with_diff = list() - for pname in mdata_base_keys: - base_value = mdata_base[pname]['value'] - upda_value = mdata_upda[pname]['value'] - if upda_value != base_value: + for pname in baseline.keys(): + upda_value = getattr(updated, pname) + base_value = getattr(baseline, pname) + if ((isinstance(upda_value, np.ndarray) and np.allclose(upda_value, base_value)) or + (not isinstance(upda_value, np.ndarray) and upda_value != base_value)): params_with_diff.append(pname) if params_with_diff: + mdata_base = baseline.specification(meta_data=True) # write year doc += '{}:\n'.format(year) for pname in sorted(params_with_diff): # write updated value line - pval = mdata_upda[pname]['value'] - if mdata_base[pname]['value_type'] == 'boolean': + pval = getattr(updated, pname).tolist()[0] + if mdata_base[pname]['type'] == 'bool': if isinstance(pval, list): pval = [bool(item) for item in pval] else: @@ -1190,11 +1189,20 @@ def lines(text, num_indent_spaces, max_line_length=77): doc += ' {} : {}\n'.format(pname, pval) # ... write optional param-vector-index line if isinstance(pval, list): - pval = mdata_base[pname].get('vi_vals', []) - pval = [str(item) for item in pval] - doc += ' ' * (4 + len(pname)) + '{}\n'.format(pval) + labels = paramtools.consistent_labels( + [mdata_base[pname]["value"][0]] + ) + label = None + for _label in labels: + if _label not in ("value", "year"): + label = _label + break + if label: + label_values = baseline._stateless_label_grid[label] + label_values = [str(item) for item in label_values] + doc += ' ' * (4 + len(pname)) + '{}\n'.format(label_values) # ... write param-name line - name = mdata_base[pname]['long_name'] + name = mdata_base[pname]['title'] for line in lines('name: ' + name, 6): doc += ' ' + line # ... write param-description line @@ -1203,21 +1211,18 @@ def lines(text, num_indent_spaces, max_line_length=77): doc += ' ' + line # ... write param-baseline-value line if isinstance(baseline, Policy): - pval = mdata_base[pname]['value'] - ptype = mdata_base[pname]['value_type'] + pval = getattr(baseline, pname).tolist()[0] + ptype = mdata_base[pname]['type'] if isinstance(pval, list): - if ptype == 'boolean': + if ptype == 'bool': pval = [bool(item) for item in pval] - elif ptype == 'boolean': + elif ptype == 'bool': pval = bool(pval) doc += ' baseline_value: {}\n'.format(pval) else: # if baseline is GrowDiff object # each GrowDiff parameter has zero as default value doc += ' baseline_value: 0.0\n' del mdata_base - del mdata_upda - del mdata_base_keys - del mdata_upda_keys return doc # begin main logic of reform_documentation diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index dc6a146b0..a1f0718eb 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -521,7 +521,7 @@ def convert_year_to_int(syr_dict): return convert_year_to_int(single_dict) def metadata(self): - return self.dump() + return self.specification(meta_data=True, use_state=False) @staticmethod def years_in_revision(revision): From 7605b25afe607f209f1be5325a5c50f1decd33b8 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 29 Feb 2020 11:18:03 -0500 Subject: [PATCH 12/64] Parameters is not iterable and use leading underscore to get value for all years --- taxcalc/growdiff.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/taxcalc/growdiff.py b/taxcalc/growdiff.py index 59ca0da92..d3334960a 100644 --- a/taxcalc/growdiff.py +++ b/taxcalc/growdiff.py @@ -56,8 +56,8 @@ def has_any_response(self): Returns true if any parameter is non-zero for any year; returns false if all parameters are zero in all years. """ - for param in self._vals: - values = getattr(self, param) + for param in self: + values = getattr(self, f"_{param}") for year in np.ndindex(values.shape): val = values[year] if val != 0.0: From 2e464a3362d27bc2e2c8d272ca7c4a5a6ad0f655 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 29 Feb 2020 11:29:13 -0500 Subject: [PATCH 13/64] Catch paramtools.ValidationErrors instead of ValueErrors in taxcalcio --- taxcalc/taxcalcio.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/taxcalc/taxcalcio.py b/taxcalc/taxcalcio.py index 30821d644..55838f102 100644 --- a/taxcalc/taxcalcio.py +++ b/taxcalc/taxcalcio.py @@ -11,6 +11,7 @@ import sqlite3 import numpy as np import pandas as pd +import paramtools from taxcalc.policy import Policy from taxcalc.records import Records from taxcalc.consumption import Consumption @@ -245,7 +246,7 @@ def init(self, input_data, tax_year, baseline, reform, assump, gdiff_baseline = GrowDiff() try: gdiff_baseline.update_growdiff(paramdict['growdiff_baseline']) - except ValueError as valerr_msg: + except paramtools.ValidationError as valerr_msg: self.errmsg += valerr_msg.__str__() # create GrowFactors base object that incorporates gdiff_baseline gfactors_base = GrowFactors() @@ -254,7 +255,7 @@ def init(self, input_data, tax_year, baseline, reform, assump, gdiff_response = GrowDiff() try: gdiff_response.update_growdiff(paramdict['growdiff_response']) - except ValueError as valerr_msg: + except paramtools.ValidationError as valerr_msg: self.errmsg += valerr_msg.__str__() # create GrowFactors ref object that has all gdiff objects applied gfactors_ref = GrowFactors() @@ -268,7 +269,7 @@ def init(self, input_data, tax_year, baseline, reform, assump, ignore_warnings=True, raise_errors=False) self.errmsg += base.parameter_errors - except ValueError as valerr_msg: + except paramtools.ValidationError as valerr_msg: self.errmsg += valerr_msg.__str__() # ... the reform Policy object if self.specified_reform: @@ -279,7 +280,7 @@ def init(self, input_data, tax_year, baseline, reform, assump, ignore_warnings=True, raise_errors=False) self.errmsg += pol.parameter_errors - except ValueError as valerr_msg: + except paramtools.ValidationError as valerr_msg: self.errmsg += valerr_msg.__str__() else: pol = Policy(gfactors=gfactors_base) @@ -287,7 +288,7 @@ def init(self, input_data, tax_year, baseline, reform, assump, con = Consumption() try: con.update_consumption(paramdict['consumption']) - except ValueError as valerr_msg: + except paramtools.ValidationError as valerr_msg: self.errmsg += valerr_msg.__str__() # check for valid tax_year value if tax_year < pol.start_year: From c8e13c15be75a74975ecccabba8eb5760f7768b2 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 29 Feb 2020 11:34:01 -0500 Subject: [PATCH 14/64] Fix documentation tests for growdiff.py --- taxcalc/tests/test_growdiff.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/taxcalc/tests/test_growdiff.py b/taxcalc/tests/test_growdiff.py index fb0d22a7c..74bd49db5 100644 --- a/taxcalc/tests/test_growdiff.py +++ b/taxcalc/tests/test_growdiff.py @@ -62,6 +62,8 @@ def test_description_punctuation(tests_path): dct = json.load(jsonfile) all_desc_ok = True for param in dct.keys(): + if param == "schema": + continue if not dct[param]['description'].endswith('.'): all_desc_ok = False print('param,description=', @@ -79,6 +81,8 @@ def test_boolean_value_infomation(tests_path): with open(path, 'r') as gddfile: gdd = json.load(gddfile) for param in gdd.keys(): + if param == "schema": + continue val = gdd[param]['value'] if isinstance(val, list): val = val[0] @@ -89,7 +93,7 @@ def test_boolean_value_infomation(tests_path): val_is_boolean = True else: val_is_boolean = False - type_is_boolean = gdd[param]['value_type'] == 'boolean' + type_is_boolean = gdd[param]['type'] == 'bool' if val_is_boolean and not type_is_boolean: print('param,value_type,val,val_is_boolean=', str(param), From af6b64c54614277731e393f2a7141cf7aa5aa153 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 29 Feb 2020 11:39:37 -0500 Subject: [PATCH 15/64] Updata consumption tests for paramtools format and validation error --- taxcalc/tests/test_consumption.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/taxcalc/tests/test_consumption.py b/taxcalc/tests/test_consumption.py index 79413ec68..1c16ed0a0 100644 --- a/taxcalc/tests/test_consumption.py +++ b/taxcalc/tests/test_consumption.py @@ -2,6 +2,7 @@ # pycodestyle test_consumption.py import numpy as np +import paramtools import pytest import copy from taxcalc import Policy, Records, Calculator, Consumption @@ -57,19 +58,19 @@ def test_update_consumption(): def test_incorrect_update_consumption(): - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): Consumption().update_consumption([]) - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): Consumption().update_consumption({'MPC_e17500': {'xyz': 0.2}}) - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): Consumption().update_consumption({'MPC_e17500': {2012: 0.2}}) - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): Consumption().update_consumption({'MPC_e17500': {2052: 0.2}}) - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): Consumption().update_consumption({'MPC_exxxxx': {2014: 0.2}}) - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): Consumption().update_consumption({'MPC_e17500': {2014: -0.1}}) - with pytest.raises(ValueError): + with pytest.raises(paramtools.ValidationError): Consumption().update_consumption({'MPC_e17500-indexed': {2014: 0.1}}) @@ -98,12 +99,12 @@ def test_future_update_consumption(): def test_consumption_default_data(): consump = Consumption() - pdata = consump._vals + pdata = consump.specification(meta_data=True, ignore_state=True) for pname in pdata.keys(): if pname.startswith('MPC'): - assert pdata[pname]['value'] == [0.0] + assert pdata[pname]['value'] == [{"value": 0.0, "year": 2013}] elif pname.startswith('BEN'): - assert pdata[pname]['value'] == [1.0] + assert pdata[pname]['value'] == [{"value": 1.0, "year": 2013}] def test_consumption_response(cps_subsample): From ab5ba93848bbad82fb56b5d849a1364858bb3bf6 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 29 Feb 2020 11:47:05 -0500 Subject: [PATCH 16/64] Swap back to old style json files to make merge conflict resolution easier --- taxcalc/consumption.json | 301 +- taxcalc/growdiff.json | 636 +- taxcalc/policy_current_law.json | 24251 +++++++----------------------- 3 files changed, 6131 insertions(+), 19057 deletions(-) diff --git a/taxcalc/consumption.json b/taxcalc/consumption.json index 9c32c6cf8..616d8cfaa 100644 --- a/taxcalc/consumption.json +++ b/taxcalc/consumption.json @@ -1,239 +1,112 @@ { - "schema": { - "labels": { - "year": { - "type": "int", - "validators": { - "range": { - "min": 2013, - "max": 2029 - } - } - } - }, - "additional_members": { - "section_1": { - "type": "str" - }, - "section_2": { - "type": "str" - }, - "start_year": { - "type": "int" - }, - "indexable": { - "type": "bool" - }, - "indexed": { - "type": "bool" - } - } - }, "MPC_e17500": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Marginal propensity to consume medical expenses", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, - "description": "Defined as dollar change in medical-expense consumption divided by dollar change in income. Typical value is in [0,1] range." + "long_name": "Marginal propensity to consume medical expenses", + "description": "Defined as dollar change in medical-expense consumption divided by dollar change in income. Typical value is in [0,1] range.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": 0, "max": 1} }, + "MPC_e18400": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Marginal propensity to consume state-and-local taxes", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, - "start_year": 2013, - "description": "Defined as dollar change in state-and-local-taxes consumption divided by dollar change in income. Typical value is in [0,1] range." + "start_year": 2013, + "long_name": "Marginal propensity to consume state-and-local taxes", + "description": "Defined as dollar change in state-and-local-taxes consumption divided by dollar change in income. Typical value is in [0,1] range.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": 0, "max": 1} }, + "MPC_e19800": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Marginal propensity to consume charity cash contributions", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, - "start_year": 2013, - "description": "Defined as dollar change in charity-cash-contribution consumption divided by dollar change in income. Typical value is in [0,1] range." + "start_year": 2013, + "long_name": "Marginal propensity to consume charity cash contributions", + "description": "Defined as dollar change in charity-cash-contribution consumption divided by dollar change in income. Typical value is in [0,1] range.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": 0, "max": 1} }, + "MPC_e20400": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Marginal propensity to consume miscellaneous deduction expenses", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, - "start_year": 2013, - "description": "Defined as dollar change in miscellaneous-deduction-expense consumption divided by dollar change in income. Typical value is in [0,1] range." + "start_year": 2013, + "long_name": "Marginal propensity to consume miscellaneous deduction expenses", + "description": "Defined as dollar change in miscellaneous-deduction-expense consumption divided by dollar change in income. Typical value is in [0,1] range.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": 0, "max": 1} }, + "BEN_housing_value": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Consumption value of housing benefits", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, - "description": "Consumption value per dollar of housing benefits, all of which are in-kind benefits." + "long_name": "Consumption value of housing benefits", + "description": "Consumption value per dollar of housing benefits, all of which are in-kind benefits.", + "value_type": "real", + "value_yrs": [2013], + "value": [1.0], + "valid_values": {"min": 0, "max": 1} }, + "BEN_snap_value": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Consumption value of SNAP benefits", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, - "description": "Consumption value per dollar of SNAP benefits, all of which are in-kind benefits." + "long_name": "Consumption value of SNAP benefits", + "description": "Consumption value per dollar of SNAP benefits, all of which are in-kind benefits.", + "value_type": "real", + "value_yrs": [2013], + "value": [1.0], + "valid_values": {"min": 0, "max": 1} }, + "BEN_tanf_value": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Consumption value of TANF benefits", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, - "description": "Consumption value per dollar of TANF benefits, some of which are cash benefits and some of which are in-kind benefits." + "long_name": "Consumption value of TANF benefits", + "description": "Consumption value per dollar of TANF benefits, some of which are cash benefits and some of which are in-kind benefits.", + "value_type": "real", + "value_yrs": [2013], + "value": [1.0], + "valid_values": {"min": 0, "max": 1} }, + "BEN_vet_value": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Consumption value of veterans benefits", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 2 - } - }, - "description": "Consumption value per dollar of veterans benefits, some of which are in-kind benefits (only about 48% are cash benefits)." + "long_name": "Consumption value of veterans benefits", + "description": "Consumption value per dollar of veterans benefits, some of which are in-kind benefits (only about 48% are cash benefits).", + "value_type": "real", + "value_yrs": [2013], + "value": [1.0], + "valid_values": {"min": 0, "max": 2} }, + "BEN_wic_value": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Consumption value of WIC benefits", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, - "description": "Consumption value per dollar of WIC benefits, all of which are in-kind benefits." + "long_name": "Consumption value of WIC benefits", + "description": "Consumption value per dollar of WIC benefits, all of which are in-kind benefits.", + "value_type": "real", + "value_yrs": [2013], + "value": [1.0], + "valid_values": {"min": 0, "max": 1} }, + "BEN_mcare_value": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Consumption value of Medicare benefits", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 2 - } - }, - "description": "Consumption value per dollar of Medicare benefits, all of which are in-kind benefits." + "long_name": "Consumption value of Medicare benefits", + "description": "Consumption value per dollar of Medicare benefits, all of which are in-kind benefits.", + "value_type": "real", + "value_yrs": [2013], + "value": [1.0], + "valid_values": {"min": 0, "max": 2} }, + "BEN_mcaid_value": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Consumption value of Medicaid benefits", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 2 - } - }, - "description": "Consumption value per dollar of Medicaid benefits, all of which are in-kind benefits." + "long_name": "Consumption value of Medicaid benefits", + "description": "Consumption value per dollar of Medicaid benefits, all of which are in-kind benefits.", + "value_type": "real", + "value_yrs": [2013], + "value": [1.0], + "valid_values": {"min": 0, "max": 2} }, + "BEN_other_value": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Consumption value of other benefits", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, - "description": "Consumption value per dollar of other benefits, some of which are in-kind benefits (somewhere between 52% and 76% are in-kind benefits)." + "long_name": "Consumption value of other benefits", + "description": "Consumption value per dollar of other benefits, some of which are in-kind benefits (somewhere between 52% and 76% are in-kind benefits).", + "value_type": "real", + "value_yrs": [2013], + "value": [1.0], + "valid_values": {"min": 0, "max": 1} } -} +} \ No newline at end of file diff --git a/taxcalc/growdiff.json b/taxcalc/growdiff.json index 972c0375d..ab366768b 100644 --- a/taxcalc/growdiff.json +++ b/taxcalc/growdiff.json @@ -1,457 +1,233 @@ { - "schema": { - "labels": { - "year": { - "type": "int", - "validators": { - "range": { - "min": 2013, - "max": 2029 - } - } - } - }, - "additional_members": { - "section_1": { - "type": "str" - }, - "section_2": { - "type": "str" - }, - "start_year": { - "type": "int" - }, - "indexable": { - "type": "bool" - }, - "indexed": { - "type": "bool" - } - } - }, "ABOOK": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ABOOK additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ABOOK extrapolates input variables: e07300 and e07400." - }, + "long_name": "ABOOK additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABOOK extrapolates input variables: e07300 and e07400.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ACGNS": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ACGNS additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ACGNS extrapolates input variables: e01200, p22250, p23250, e24515 and e24518." - }, + "long_name": "ACGNS additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ACGNS extrapolates input variables: e01200, p22250, p23250, e24515 and e24518.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ACPIM": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ACPIM additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ACPIM extrapolates input variables: e03270, e03290 and e17500." - }, + "long_name": "ACPIM additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ACPIM extrapolates input variables: e03270, e03290 and e17500.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ACPIU": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ACPIU additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ACPIU is the price inflation rate used to inflate many policy parameters. Note that non-zero values of this parameter will not affect historically known values of policy parameters." - }, + "long_name": "ACPIU additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ACPIU is the price inflation rate used to inflate many policy parameters. Note that non-zero values of this parameter will not affect historically known values of policy parameters.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ADIVS": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ADIVS additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ADIVS extrapolates input variables: e00600 and e00650." - }, + "long_name": "ADIVS additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ADIVS extrapolates input variables: e00600 and e00650.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "AINTS": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "AINTS additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. AINTS extrapolates input variables: e00300 and e00400." - }, + "long_name": "AINTS additive difference from default projection", + "description": "Default projection is in growfactors.csv file. AINTS extrapolates input variables: e00300 and e00400.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "AIPD": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "AIPD additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. AIPD extrapolates input variables: e19200." - }, + "long_name": "AIPD additive difference from default projection", + "description": "Default projection is in growfactors.csv file. AIPD extrapolates input variables: e19200.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ASCHCI": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ASCHCI additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ASCHCI extrapolates input variables: e00900, e00900p and e00900s when they are positive." - }, + "long_name": "ASCHCI additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ASCHCI extrapolates input variables: e00900, e00900p and e00900s when they are positive.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ASCHCL": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ASCHCL additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ASCHCL extrapolates input variables: e00900, e00900p and e00900s when they are negative." - }, + "long_name": "ASCHCL additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ASCHCL extrapolates input variables: e00900, e00900p and e00900s when they are negative.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ASCHEI": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ASCHEI additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ASCHEI extrapolates input variables: e02000 when positive, and e26270, k1bx14p, k1bx14s and e27200 for all values." - }, + "long_name": "ASCHEI additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ASCHEI extrapolates input variables: e02000 when positive, and e26270, k1bx14p, k1bx14s and e27200 for all values.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ASCHEL": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ASCHEL additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ASCHEL extrapolates input variable: e02000 when negative." - }, + "long_name": "ASCHEL additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ASCHEL extrapolates input variable: e02000 when negative.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ASCHF": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ASCHF additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ASCHF extrapolates input variables: e02100, e02100p and e02100s." - }, + "long_name": "ASCHF additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ASCHF extrapolates input variables: e02100, e02100p and e02100s.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ASOCSEC": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ASOCSEC additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ASOCSEC extrapolates input variable: e02400." - }, + "long_name": "ASOCSEC additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ASOCSEC extrapolates input variable: e02400.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ATXPY": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ATXPY additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ATXPY extrapolates input variables: e00700, e00800, e01400, e01500, e01700, e03150, e03210, e03220, e03230, e03300, e03400, e03500, e07240, e07260, p08000, e09700, e09800, e09900, e11200, e18400, e18500, e19800, e20100, e20400, g20500, e07600, e32800, e58990, e62900, e87530, e87521 and cmbtp." - }, + "long_name": "ATXPY additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ATXPY extrapolates input variables: e00700, e00800, e01400, e01500, e01700, e03150, e03210, e03220, e03230, e03300, e03400, e03500, e07240, e07260, p08000, e09700, e09800, e09900, e11200, e18400, e18500, e19800, e20100, e20400, g20500, e07600, e32800, e58990, e62900, e87530, e87521 and cmbtp.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "AUCOMP": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "AUCOMP additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. AUCOMP extrapolates input variable: e02300." - }, + "long_name": "AUCOMP additive difference from default projection", + "description": "Default projection is in growfactors.csv file. AUCOMP extrapolates input variable: e02300.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "AWAGE": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "AWAGE additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. AWAGE extrapolates input variables: e00200, e00200p and e00200s. Also, AWAGE is the wage growth rate used to inflate the OASDI maximum taxable earnings policy parameter, _SS_Earnings_c. Note that non-zero values of this parameter will not affect historically known values of _SS_Earnings_c." - }, + "long_name": "AWAGE additive difference from default projection", + "description": "Default projection is in growfactors.csv file. AWAGE extrapolates input variables: e00200, e00200p and e00200s. Also, AWAGE is the wage growth rate used to inflate the OASDI maximum taxable earnings policy parameter, _SS_Earnings_c. Note that non-zero values of this parameter will not affect historically known values of _SS_Earnings_c.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ABENOTHER": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ABENOTHER additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ABENOTHER extrapolates input variable other_ben." - }, + "long_name": "ABENOTHER additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENOTHER extrapolates input variable other_ben.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ABENMCARE": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ABENMCARE additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ABENMCARE extrapolates input variable mcare_ben." - }, + "long_name": "ABENMCARE additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENMCARE extrapolates input variable mcare_ben.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + + "ABENMCAID": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ABENMCAID additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ABENMCAID extrapolates input variable mcaid_ben." - }, + "long_name": "ABENMCAID additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENMCAID extrapolates input variable mcaid_ben.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + + "ABENSSI": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ABENSSI additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ABENSSI extrapolates input variable ssi_ben." - }, + "long_name": "ABENSSI additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENSSI extrapolates input variable ssi_ben.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + + "ABENSNAP": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ABENSNAP additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ABENSNAP extrapolates input variable snap_ben." - }, + "long_name": "ABENSNAP additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENSNAP extrapolates input variable snap_ben.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + + "ABENWIC": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ABENWIC additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ABENWIC extrapolates input variable wic_ben." - }, + "long_name": "ABENWIC additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENWIC extrapolates input variable wic_ben.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + + "ABENHOUSING": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ABENHOUSING additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ABENHOUSING extrapolates input variable housing_ben." - }, + "long_name": "ABENHOUSING additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENHOUSING extrapolates input variable housing_ben.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + + "ABENTANF": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ABENTANF additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ABENTANF extrapolates input variable tanf_ben." - }, + "long_name": "ABENTANF additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENTANF extrapolates input variable tanf_ben.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} + }, + "ABENVET": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "ABENVET additive difference from default projection", - "type": "float", - "validators": { - "range": { - "min": -1, - "max": 1 - } - }, - "description": "Default projection is in growfactors.csv file. ABENVET extrapolates input variable vet_ben." + "long_name": "ABENVET additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENVET extrapolates input variable vet_ben.", + "value_type": "real", + "value_yrs": [2013], + "value": [0.0], + "valid_values": {"min": -10, "max": 10} } -} + +} \ No newline at end of file diff --git a/taxcalc/policy_current_law.json b/taxcalc/policy_current_law.json index 04dd87a7a..2c5093289 100644 --- a/taxcalc/policy_current_law.json +++ b/taxcalc/policy_current_law.json @@ -1,19250 +1,6675 @@ { - "schema": { - "labels": { - "year": { - "type": "int", - "validators": { - "range": { - "min": 2013, - "max": 2029 - } - } - }, - "MARS": { - "type": "str", - "validators": { - "choice": { - "choices": [ - "single", - "mjoint", - "mseparate", - "headhh", - "widow" - ] - } - } - }, - "idedtype": { - "type": "str", - "validators": { - "choice": { - "choices": [ - "med", - "sltx", - "retx", - "cas", - "misc", - "int", - "char" - ] - } - } - }, - "EIC": { - "type": "str", - "validators": { - "choice": { - "choices": [ - "0kids", - "1kid", - "2kids", - "3+kids" - ] - } - } - } - }, - "additional_members": { - "section_1": { - "type": "str" - }, - "section_2": { - "type": "str" - }, - "start_year": { - "type": "int" - }, - "indexable": { - "type": "bool" - }, - "indexed": { - "type": "bool" - } - } - }, "CPI_offset": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": -0.0025 - } - ], - "title": "Decimal offset ADDED to unchained CPI to get parameter indexing rate", - "type": "float", - "validators": { - "range": { - "min": -0.005, - "max": 0.005 - } - }, + "long_name": "Decimal offset ADDED to unchained CPI to get parameter indexing rate", + "description": "Values are zero before 2017; reforms that introduce indexing with chained CPI would have values around -0.0025 beginning in the year before the first year policy parameters will have values computed with chained CPI.", "section_1": "Parameter Indexing", "section_2": "Offsets", - "indexable": false, - "indexed": false, - "description": "Values are zero before 2017; reforms that introduce indexing with chained CPI would have values around -0.0025 beginning in the year before the first year policy parameters will have values computed with chained CPI.", - "notes": "See April 2013 CBO report entitled 'What Would Be the Effect on the Deficit of Using the Chained CPI to Index Benefit Programs and the Tax Code?', which includes this: 'The chained CPI grows more slowly than the traditional CPI does: an average of about 0.25 percentage points more slowly per year over the past decade.' " - }, + "irs_ref": "", + "notes": "See April 2013 CBO report entitled 'What Would Be the Effect on the Deficit of Using the Chained CPI to Index Benefit Programs and the Tax Code?', which includes this: 'The chained CPI grows more slowly than the traditional CPI does: an average of about 0.25 percentage points more slowly per year over the past decade.' ", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + -0.0025], + "valid_values": {"min": -0.005, "max": 0.005}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "FICA_ss_trt": { - "value": [ - { - "year": 2013, - "value": 0.124 - } - ], - "title": "Social Security payroll tax rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Social Security payroll tax rate", + "description": "Social Security FICA rate, including both employer and employee.", "section_1": "Payroll Taxes", "section_2": "Social Security FICA", - "indexable": false, - "indexed": false, - "description": "Social Security FICA rate, including both employer and employee.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.124], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "SS_Earnings_c": { - "value": [ - { - "year": 2013, - "value": 113700.0 - }, - { - "year": 2014, - "value": 117000.0 - }, - { - "year": 2015, - "value": 118500.0 - }, - { - "year": 2016, - "value": 118500.0 - }, - { - "year": 2017, - "value": 127200.0 - }, - { - "year": 2018, - "value": 128400.0 - } - ], - "title": "Maximum taxable earnings (MTE) for Social Security", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Maximum taxable earnings (MTE) for Social Security", + "description": "Individual earnings below this amount are subjected to Social Security (OASDI) payroll tax.", "section_1": "Payroll Taxes", "section_2": "Social Security FICA", + "irs_ref": "W-2, Box 4, instructions", + "notes": "This parameter is indexed by the rate of growth in average wages, not by the price inflation rate.", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "Individual earnings below this amount are subjected to Social Security (OASDI) payroll tax.", - "notes": "This parameter is indexed by the rate of growth in average wages, not by the price inflation rate." - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [113700.0, + 117000.0, + 118500.0, + 118500.0, + 127200.0, + 128400.0, + 132900.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "SS_Earnings_thd": { - "value": [ - { - "year": 2013, - "value": 9e+99 - } - ], - "title": "Additional Taxable Earnings Threshold for Social Security", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Additional Taxable Earnings Threshold for Social Security", + "description": "Individual earnings above this threshold are subjected to Social Security (OASDI) payroll tax, in addition to earnings below the maximum taxable earnings threshold.", "section_1": "Payroll Taxes", "section_2": "Social Security FICA", + "irs_ref": "", + "notes": "", + "value_yrs": [2013], "indexable": true, "indexed": false, - "description": "Individual earnings above this threshold are subjected to Social Security (OASDI) payroll tax, in addition to earnings below the maximum taxable earnings threshold.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [9e99], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "FICA_mc_trt": { - "value": [ - { - "year": 2013, - "value": 0.029 - } - ], - "title": "Medicare payroll tax rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Medicare payroll tax rate", + "description": "Medicare FICA rate, including both employer and employee.", "section_1": "Payroll Taxes", "section_2": "Medicare FICA", - "indexable": false, - "indexed": false, - "description": "Medicare FICA rate, including both employer and employee.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.029], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMEDT_ec": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 250000.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 125000.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 200000.0 - } - ], - "title": "Additional Medicare tax earnings exclusion", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Additional Medicare tax earnings exclusion", + "description": "The Additional Medicare Tax rate, AMEDT_rt, applies to all earnings in excess of this excluded amount.", "section_1": "Payroll Taxes", "section_2": "Additional Medicare FICA", + "irs_ref": "Form 8959, line 5, in-line. ", + "notes": "", + "value_yrs": [2013], "indexable": true, "indexed": false, - "description": "The Additional Medicare Tax rate, AMEDT_rt, applies to all earnings in excess of this excluded amount.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[200000.0, 250000.0, 125000.0, 200000.0, 200000.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMEDT_rt": { - "value": [ - { - "year": 2013, - "value": 0.009 - } - ], - "title": "Additional Medicare tax rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Additional Medicare tax rate", + "description": "This is the rate applied to the portion of Medicare wages, RRTA compensation and self-employment income exceeding the Additional Medicare Tax earning exclusion.", "section_1": "Payroll Taxes", "section_2": "Additional Medicare FICA", - "indexable": false, - "indexed": false, - "description": "This is the rate applied to the portion of Medicare wages, RRTA compensation and self-employment income exceeding the Additional Medicare Tax earning exclusion.", - "notes": "" - }, + "irs_ref": "Form 8959, line 7, in-line. ", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.009], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "SS_thd50": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 25000.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 32000.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 25000.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 25000.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 25000.0 - } - ], - "title": "Threshold for Social Security benefit taxability 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": "SS_thd85" - } - }, + "long_name": "Threshold for Social Security benefit taxability 1", + "description": "The first threshold for Social Security benefit taxability: if taxpayers have provisional income greater than this threshold, up to 50% of their Social Security benefit will be subject to tax under current law.", "section_1": "Social Security Taxability", "section_2": "Threshold For Social Security Benefit Taxability 1", + "irs_ref": "Form 1040, line 5a&b, calculation (Worksheet, line 8)", + "notes": "", + "value_yrs": [2013], "indexable": true, "indexed": false, - "description": "The first threshold for Social Security benefit taxability: if taxpayers have provisional income greater than this threshold, up to 50% of their Social Security benefit will be subject to tax under current law.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[25000.0, 32000.0, 25000.0, 25000.0, 25000.0]], + "valid_values": {"min": 0, "max": "SS_thd85"}, + "invalid_minmsg": "", + "invalid_maxmsg": "for SS_thd85", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "SS_percentage1": { - "value": [ - { - "year": 2013, - "value": 0.5 - } - ], - "title": "Social Security taxable income decimal fraction 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Social Security taxable income decimal fraction 1", + "description": "Under current law if their provisional income is above the first threshold for Social Security taxability but below the second threshold, taxpayers need to apply this fraction to both the excess of their provisional income over the first threshold and their Social Security benefits, and then include the smaller one in their AGI.", "section_1": "", "section_2": "", - "indexable": false, - "indexed": false, - "description": "Under current law if their provisional income is above the first threshold for Social Security taxability but below the second threshold, taxpayers need to apply this fraction to both the excess of their provisional income over the first threshold and their Social Security benefits, and then include the smaller one in their AGI.", - "notes": "" - }, + "irs_ref": "Form 1040, line 5b, instructions (Social Security Worksheets, line 2 & 13)", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.5], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "SS_thd85": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 34000.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 44000.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 34000.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 34000.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 34000.0 - } - ], - "title": "Threshold for Social Security benefit taxability 2", - "type": "float", - "validators": { - "range": { - "min": "SS_thd50", - "max": 9e+99 - } - }, + "long_name": "Threshold for Social Security benefit taxability 2", + "description": "The second threshold for Social Security taxability: if taxpayers have provisional income greater than this threshold, up to 85% of their Social Security benefit will be subject to tax under current law.", "section_1": "Social Security Taxability", "section_2": "Threshold For Social Security Benefit Taxability 2", + "irs_ref": "Form 1040, line 5a&b, calculation (Worksheet, add line 10 values to line 8).", + "notes": "", + "value_yrs": [2013], "indexable": true, "indexed": false, - "description": "The second threshold for Social Security taxability: if taxpayers have provisional income greater than this threshold, up to 85% of their Social Security benefit will be subject to tax under current law.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[34000.0, 44000.0, 34000.0, 34000.0, 34000.0]], + "valid_values": {"min": "SS_thd50", "max": 9e99}, + "invalid_minmsg": "for SS_thd50", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "SS_percentage2": { - "value": [ - { - "year": 2013, - "value": 0.85 - } - ], - "title": "Social Security taxable income decimal fraction 2", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Social Security taxable income decimal fraction 2", + "description": "Under current law if their provisional income is above the second threshold for Social Security taxability, taxpayers need to apply this fraction to both the excess of their provisional income over the second threshold and their social security benefits, and then include the smaller one in their AGI.", "section_1": "", "section_2": "", - "indexable": false, - "indexed": false, - "description": "Under current law if their provisional income is above the second threshold for Social Security taxability, taxpayers need to apply this fraction to both the excess of their provisional income over the second threshold and their social security benefits, and then include the smaller one in their AGI.", - "notes": "" - }, + "irs_ref": "Form 1040, line 5b, instructions (Social Security Worksheets, line 15)", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.85], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ALD_StudentLoan_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Adjustment for student loan interest haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Adjustment for student loan interest haircut", + "description": "This decimal fraction can be applied to limit the student loan interest adjustment allowed.", "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, - "description": "This decimal fraction can be applied to limit the student loan interest adjustment allowed.", - "notes": "The final adjustment amount will be (1-Haircut)*StudentLoanInterest." - }, + "irs_ref": "Form 1040 (Schedule 1), line 33", + "notes": "The final adjustment amount will be (1-Haircut)*StudentLoanInterest.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ALD_SelfEmploymentTax_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Adjustment for self-employment tax haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Adjustment for self-employment tax haircut", + "description": "This decimal fraction, if greater than zero, reduces the employer equivalent portion of self-employment adjustment.", "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, - "description": "This decimal fraction, if greater than zero, reduces the employer equivalent portion of self-employment adjustment.", - "notes": "The final adjustment amount would be (1-Haircut)*SelfEmploymentTaxAdjustment." - }, + "irs_ref": "Form 1040 (Schedule 4), line 57", + "notes": "The final adjustment amount would be (1-Haircut)*SelfEmploymentTaxAdjustment.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ALD_SelfEmp_HealthIns_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Adjustment for self employed health insurance haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Adjustment for self employed health insurance haircut", + "description": "This decimal fraction, if greater than zero, reduces the health insurance adjustment for self-employed taxpayers.", "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, - "description": "This decimal fraction, if greater than zero, reduces the health insurance adjustment for self-employed taxpayers.", - "notes": "The final adjustment amount would be (1-Haircut)*SelfEmployedHealthInsuranceAdjustment." - }, + "irs_ref": "Form 1040 (Schedule 4), line 61", + "notes": "The final adjustment amount would be (1-Haircut)*SelfEmployedHealthInsuranceAdjustment.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ALD_KEOGH_SEP_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Adjustment for contributions to either KEOGH or SEP plan haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Adjustment for contributions to either KEOGH or SEP plan haircut", + "description": "Under current law, contributions to Keogh or SEP plans can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, - "description": "Under current law, contributions to Keogh or SEP plans can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", - "notes": "The final adjustment amount is (1-Haircut)*KEOGH_SEP_Contributinos." - }, + "irs_ref": "Form 1040 (Schedule 1), line 28", + "notes": "The final adjustment amount is (1-Haircut)*KEOGH_SEP_Contributinos.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ALD_EarlyWithdraw_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Adjustment for early withdrawal penalty haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Adjustment for early withdrawal penalty haircut", + "description": "Under current law, early withdraw penalty can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, - "description": "Under current law, early withdraw penalty can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", - "notes": "The final adjustment amount is (1-Haircut)*EarlyWithdrawPenalty." - }, + "irs_ref": "Form 1040 (Schedule 1), line 30", + "notes": "The final adjustment amount is (1-Haircut)*EarlyWithdrawPenalty.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "ALD_AlimonyPaid_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.0 - }, - { - "year": 2019, - "value": 1.0 - }, - { - "year": 2020, - "value": 1.0 - }, - { - "year": 2021, - "value": 1.0 - }, - { - "year": 2022, - "value": 1.0 - }, - { - "year": 2023, - "value": 1.0 - }, - { - "year": 2024, - "value": 1.0 - }, - { - "year": 2025, - "value": 1.0 - }, - { - "year": 2026, - "value": 0.0 - } - ], - "title": "Adjustment for alimony-paid haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Adjustment for alimony-paid haircut", + "description": "Under pre-TCJA law, the full amount of alimony paid is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, - "description": "Under pre-TCJA law, the full amount of alimony paid is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", - "notes": "The final adjustment amount would be (1-Haircut)*AlimonyPaid." - }, + "irs_ref": "Form 1040 (Schedule 1), line 31", + "notes": "The final adjustment amount would be (1-Haircut)*AlimonyPaid.", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "ALD_AlimonyReceived_hc": { - "value": [ - { - "year": 2013, - "value": 1.0 - }, - { - "year": 2014, - "value": 1.0 - }, - { - "year": 2015, - "value": 1.0 - }, - { - "year": 2016, - "value": 1.0 - }, - { - "year": 2017, - "value": 1.0 - }, - { - "year": 2018, - "value": 1.0 - }, - { - "year": 2019, - "value": 0.0 - }, - { - "year": 2020, - "value": 0.0 - }, - { - "year": 2021, - "value": 0.0 - }, - { - "year": 2022, - "value": 0.0 - }, - { - "year": 2023, - "value": 0.0 - }, - { - "year": 2024, - "value": 0.0 - }, - { - "year": 2025, - "value": 0.0 - }, - { - "year": 2026, - "value": 1.0 - } - ], - "title": "Adjustment for alimony-received haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Adjustment for alimony-received haircut", + "description": "Under pre-TCJA law, none of alimony received is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, - "description": "Under pre-TCJA law, none of alimony received is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", - "notes": "The final adjustment amount would be (1-Haircut)*AlimonyReceived." - }, + "irs_ref": "Form 1040 (Schedule 1), line 11 (new with TCJA)", + "notes": "The final adjustment amount would be (1-Haircut)*AlimonyReceived.", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ALD_EducatorExpenses_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Deduction for educator expenses haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Deduction for educator expenses haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of educator expenses that can be deducted from AGI.", "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of educator expenses that can be deducted from AGI.", - "notes": "The final adjustment amount would be (1-Haircut)*EducatorExpenses." - }, + "irs_ref": "", + "notes": "The final adjustment amount would be (1-Haircut)*EducatorExpenses.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "ALD_HSADeduction_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Deduction for HSA deduction haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Deduction for HSA deduction haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of a taxpayer's HSA deduction that can be deducted from AGI.", "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of a taxpayer's HSA deduction that can be deducted from AGI.", - "notes": "The final adjustment amount would be (1-Haircut)*HSA_Deduction." - }, + "irs_ref": "", + "notes": "The final adjustment amount would be (1-Haircut)*HSA_Deduction.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "ALD_IRAContributions_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Deduction for IRA contributions haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Deduction for IRA contributions haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of IRA contributions that can be deducted from AGI.", "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of IRA contributions that can be deducted from AGI.", - "notes": "The final adjustment amount would be (1-Haircut)*IRA_Contribution." - }, + "irs_ref": "", + "notes": "The final adjustment amount would be (1-Haircut)*IRA_Contribution.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ALD_DomesticProduction_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 1.0 - }, - { - "year": 2019, - "value": 1.0 - }, - { - "year": 2020, - "value": 1.0 - }, - { - "year": 2021, - "value": 1.0 - }, - { - "year": 2022, - "value": 1.0 - }, - { - "year": 2023, - "value": 1.0 - }, - { - "year": 2024, - "value": 1.0 - }, - { - "year": 2025, - "value": 1.0 - }, - { - "year": 2026, - "value": 0.0 - } - ], - "title": "Deduction for domestic production activity haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Deduction for domestic production activity haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of domestic production activity that can be deducted from AGI.", "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of domestic production activity that can be deducted from AGI.", - "notes": "The final adjustment amount would be (1-Haircut)*DomesticProductionActivity." - }, + "irs_ref": "", + "notes": "The final adjustment amount would be (1-Haircut)*DomesticProductionActivity.", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ALD_Tuition_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 1.0 - } - ], - "title": "Deduction for tuition and fees haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Deduction for tuition and fees haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of tuition and fees that can be deducted from AGI.", "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of tuition and fees that can be deducted from AGI.", - "notes": "The final adjustment amount would be (1-Haircut)*TuitionFees." - }, + "irs_ref": "", + "notes": "The final adjustment amount would be (1-Haircut)*TuitionFees.", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "ALD_InvInc_ec_rt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Investment income exclusion rate haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Investment income exclusion rate haircut", + "description": "Decimal fraction of investment income base that can be excluded from AGI.", "section_1": "Above The Line Deductions", "section_2": "Misc. Exclusions", - "indexable": false, - "indexed": false, - "description": "Decimal fraction of investment income base that can be excluded from AGI.", - "notes": "The final taxable investment income will be (1-_ALD_InvInc_ec_rt)*investment_income_base. Even though the excluded portion of investment income is not included in AGI, it still is included in investment income used to calculate the Net Investment Income Tax and Earned Income Tax Credit." - }, + "irs_ref": "Form 1040, line 2a", + "notes": "The final taxable investment income will be (1-_ALD_InvInc_ec_rt)*investment_income_base. Even though the excluded portion of investment income is not included in AGI, it still is included in investment income used to calculate the Net Investment Income Tax and Earned Income Tax Credit.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ALD_Dependents_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Deduction for childcare costs haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Deduction for childcare costs haircut", + "description": "This decimal fraction, if greater than zero, reduces the portion of childcare costs that can be deducted from AGI.", "section_1": "Above The Line Deductions", "section_2": "Child And Elderly Care", - "indexable": false, - "indexed": false, - "description": "This decimal fraction, if greater than zero, reduces the portion of childcare costs that can be deducted from AGI.", - "notes": "The final adjustment would be (1-Haircut)*AverageChildcareCosts." - }, + "irs_ref": "", + "notes": "The final adjustment would be (1-Haircut)*AverageChildcareCosts.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ALD_Dependents_Child_c": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.0 - } - ], - "title": "National average childcare costs: ceiling for available childcare deduction.", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "National average childcare costs: ceiling for available childcare deduction.", + "description": "The weighted average of childcare costs in the US. 7165 is the weighted average from the 'Child Care in America: 2016 State Fact Sheets'.", "section_1": "Above The Line Deductions", "section_2": "Child And Elderly Care", + "irs_ref": "", + "notes": "This is a weighted average of childcare costs in each state", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The weighted average of childcare costs in the US. 7165 is the weighted average from the 'Child Care in America: 2016 State Fact Sheets'.", - "notes": "This is a weighted average of childcare costs in each state" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ALD_Dependents_Elder_c": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.0 - } - ], - "title": "Ceiling for elderly care deduction proposed in Trump's tax plan", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Ceiling for elderly care deduction proposed in Trump's tax plan", + "description": "A taxpayer can take an above the line deduction up to this amount if they have an elderly dependent. The Trump 2016 campaign proposal was for $5000.", "section_1": "Above The Line Deductions", "section_2": "Child And Elderly Care", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "A taxpayer can take an above the line deduction up to this amount if they have an elderly dependent. The Trump 2016 campaign proposal was for $5000.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ALD_Dependents_thd": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 0.0 - } - ], - "title": "Maximum level of income to qualify for the dependent care deduction", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Maximum level of income to qualify for the dependent care deduction", + "description": "A taxpayer can only claim the dependent care deduction if their total income is below this level. The Trump 2016 campaign proposal was for 250000 single, 500000 joint, 250000 separate, 500000 head of household].", "section_1": "Above The Line Deductions", "section_2": "Child And Elderly Care", + "irs_ref": "", + "notes": "", + "value_yrs": [2013], "indexable": true, "indexed": false, - "description": "A taxpayer can only claim the dependent care deduction if their total income is below this level. The Trump 2016 campaign proposal was for 250000 single, 500000 joint, 250000 separate, 500000 head of household].", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[0.0, 0.0, 0.0, 0.0, 0.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ALD_BusinessLosses_c": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 250000.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 500000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 250000.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 250000.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 500000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 255600.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 511200.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 255600.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 255600.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 511200.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 260354.16 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 520708.32 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 260354.16 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 260354.16 - }, - { - "year": 2020, - "MARS": "widow", - "value": 520708.32 - }, - { - "year": 2021, - "MARS": "single", - "value": 266420.41 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 532840.82 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 266420.41 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 266420.41 - }, - { - "year": 2021, - "MARS": "widow", - "value": 532840.82 - }, - { - "year": 2022, - "MARS": "single", - "value": 272521.44 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 545042.88 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 272521.44 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 272521.44 - }, - { - "year": 2022, - "MARS": "widow", - "value": 545042.88 - }, - { - "year": 2023, - "MARS": "single", - "value": 278734.93 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 557469.86 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 278734.93 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 278734.93 - }, - { - "year": 2023, - "MARS": "widow", - "value": 557469.86 - }, - { - "year": 2024, - "MARS": "single", - "value": 284894.97 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 569789.94 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 284894.97 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 284894.97 - }, - { - "year": 2024, - "MARS": "widow", - "value": 569789.94 - }, - { - "year": 2025, - "MARS": "single", - "value": 290906.25 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 581812.51 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 290906.25 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 290906.25 - }, - { - "year": 2025, - "MARS": "widow", - "value": 581812.51 - }, - { - "year": 2026, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Maximum amount of business losses deductible", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Maximum amount of business losses deductible", + "description": "Business losses in excess of this amount may not be deducted from AGI.", "section_1": "Above The Line Deductions", "section_2": "Misc. Exclusions", + "irs_ref": "Form 461, line 15, in-line", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Business losses in excess of this amount may not be deducted from AGI.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [250000.0, 500000.0, 250000.0, 250000.0, 500000.0], + [255000.0, 510000.0, 255000.0, 255000.0, 510000.0], + [259743.0, 519486.0, 259743.0, 259743.0, 519486.0], + [265795.01, 531590.02, 265795.01, 265795.01, 531590.02], + [271881.72, 543763.44, 271881.72, 271881.72, 543763.44], + [278080.62, 556161.24, 278080.62, 278080.62, 556161.24], + [284226.2, 568452.41, 284226.2, 284226.2, 568452.41], + [290223.38, 580446.75, 290223.38, 290223.38, 580446.75], + [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_em": { - "value": [ - { - "year": 2013, - "value": 3900.0 - }, - { - "year": 2014, - "value": 3950.0 - }, - { - "year": 2015, - "value": 4000.0 - }, - { - "year": 2016, - "value": 4050.0 - }, - { - "year": 2017, - "value": 4050.0 - }, - { - "year": 2018, - "value": 0.0 - }, - { - "year": 2019, - "value": 0.0 - }, - { - "year": 2020, - "value": 0.0 - }, - { - "year": 2021, - "value": 0.0 - }, - { - "year": 2022, - "value": 0.0 - }, - { - "year": 2023, - "value": 0.0 - }, - { - "year": 2024, - "value": 0.0 - }, - { - "year": 2025, - "value": 0.0 - }, - { - "year": 2026, - "value": 4901.0 - } - ], - "title": "Personal and dependent exemption amount", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Personal and dependent exemption amount", + "description": "Subtracted from AGI in the calculation of taxable income, per taxpayer and dependent.", "section_1": "Personal Exemptions", "section_2": "Personal And Dependent Exemption Amount", + "irs_ref": "Form 1040, line 42. ", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Subtracted from AGI in the calculation of taxable income, per taxpayer and dependent.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [3900.00, + 3950.00, + 4000.00, + 4050.00, + 4050.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 0.00, + 4901.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_em_ps": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 250000.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 300000.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 150000.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 275000.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 300000.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 254200.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 305050.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 152525.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 279650.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 305050.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 258250.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 309900.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 154950.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 284040.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 309900.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 259400.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 311300.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 155650.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 285350.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 311300.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 261500.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 313800.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 156900.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 287650.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 313800.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Personal exemption phaseout starting income", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Personal exemption phaseout starting income", + "description": "If taxpayers' AGI is above this level, their personal exemption will start to decrease at the personal exemption phaseout rate (PEP provision).", "section_1": "", "section_2": "", + "irs_ref": "Form 1040, line 42, instruction (Worksheet).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "If taxpayers' AGI is above this level, their personal exemption will start to decrease at the personal exemption phaseout rate (PEP provision).", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[250000.0, 300000.0, 150000.0, 275000.0, 300000.0], + [254200.0, 305050.0, 152525.0, 279650.0, 305050.0], + [258250.0, 309900.0, 154950.0, 284040.0, 309900.0], + [259400.0, 311300.0, 155650.0, 285350.0, 311300.0], + [261500.0, 313800.0, 156900.0, 287650.0, 313800.0], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_prt": { - "value": [ - { - "year": 2013, - "value": 0.02 - } - ], - "title": "Personal exemption phaseout rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Personal exemption phaseout rate", + "description": "Personal exemption amount will decrease by this rate for each dollar of AGI exceeding exemption phaseout start.", "section_1": "Personal Exemptions", "section_2": "Personal Exemption Phaseout Rate", - "indexable": false, - "indexed": false, - "description": "Personal exemption amount will decrease by this rate for each dollar of AGI exceeding exemption phaseout start.", - "notes": "" - }, + "irs_ref": "Form 1040, line 42, instruction (Worksheet).", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.02], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_no_em_nu18": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Repeal personal exemptions for dependents under age 18", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Repeal personal exemptions for dependents under age 18", + "description": "Total personal exemptions will be decreased by the number of dependents under the age of 18.", "section_1": "Personal Exemptions", "section_2": "Repeal for Dependents Under Age 18", - "indexable": false, - "indexed": false, - "description": "Total personal exemptions will be decreased by the number of dependents under the age of 18.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "STD": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 6100.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 12200.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 6100.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 8950.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 12200.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 6200.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 12400.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 6200.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9100.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 12400.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 6300.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 12600.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 6300.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9250.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 12600.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 6300.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 12600.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 6300.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9300.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 12600.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 6350.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 12700.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 6350.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9350.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 12700.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 12000.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 24000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 12000.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 18000.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 24000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 12268.8 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 24537.6 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 12268.8 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 18403.2 - }, - { - "year": 2019, - "MARS": "widow", - "value": 24537.6 - }, - { - "year": 2020, - "MARS": "single", - "value": 12497.0 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 24994.0 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 12497.0 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 18745.5 - }, - { - "year": 2020, - "MARS": "widow", - "value": 24994.0 - }, - { - "year": 2021, - "MARS": "single", - "value": 12788.18 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 25576.36 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 12788.18 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 19182.27 - }, - { - "year": 2021, - "MARS": "widow", - "value": 25576.36 - }, - { - "year": 2022, - "MARS": "single", - "value": 13081.03 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 26162.06 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 13081.03 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 19621.54 - }, - { - "year": 2022, - "MARS": "widow", - "value": 26162.06 - }, - { - "year": 2023, - "MARS": "single", - "value": 13379.28 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 26758.55 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 13379.28 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 20068.91 - }, - { - "year": 2023, - "MARS": "widow", - "value": 26758.55 - }, - { - "year": 2024, - "MARS": "single", - "value": 13674.96 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 27349.92 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 13674.96 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 20512.44 - }, - { - "year": 2024, - "MARS": "widow", - "value": 27349.92 - }, - { - "year": 2025, - "MARS": "single", - "value": 13963.5 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 27927.0 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 13963.5 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 20945.25 - }, - { - "year": 2025, - "MARS": "widow", - "value": 27927.0 - }, - { - "year": 2026, - "MARS": "single", - "value": 7685.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 15369.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 7685.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 11315.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 15369.0 - } - ], - "title": "Standard deduction amount", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Standard deduction amount", + "description": "Amount filing unit can use as a standard deduction.", "section_1": "Standard Deduction", "section_2": "Standard Deduction Amount", + "irs_ref": "Form 1040, line 8, instructions. ", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Amount filing unit can use as a standard deduction.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[6100.00, 12200.00, 6100.00, 8950.00, 12200.00], + [6200.00, 12400.00, 6200.00, 9100.00, 12400.00], + [6300.00, 12600.00, 6300.00, 9250.00, 12600.00], + [6300.00, 12600.00, 6300.00, 9300.00, 12600.00], + [6350.00, 12700.00, 6350.00, 9350.00, 12700.00], + [12000.0, 24000.0, 12000.0, 18000.0, 24000.0], + [12200.0, 24400.0, 12200.0, 18350.0, 24400.0], + [12426.92, 24853.84, 12426.92, 18691.31, 24853.84], + [12716.47, 25432.93, 12716.47, 19126.82, 25432.93], + [13007.67, 26015.35, 13007.67, 19564.82, 26015.35], + [13304.25, 26608.5, 13304.25, 20010.9, 26608.5], + [13598.27, 27196.55, 13598.27, 20453.14, 27196.55], + [13885.2, 27770.39, 13885.2, 20884.7, 27770.39], + [7685.0, 15369.0, 7685.0, 11315.0, 15369.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "STD_Dep": { - "value": [ - { - "year": 2013, - "value": 1000.0 - }, - { - "year": 2014, - "value": 1000.0 - }, - { - "year": 2015, - "value": 1050.0 - }, - { - "year": 2016, - "value": 1050.0 - }, - { - "year": 2017, - "value": 1050.0 - }, - { - "year": 2018, - "value": 1050.0 - } - ], - "title": "Standard deduction for dependents", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Standard deduction for dependents", + "description": "This is the maximum standard deduction for dependents.", "section_1": "", "section_2": "", + "irs_ref": "Form 1040, line 8, instructions. ", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "This is the maximum standard deduction for dependents.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [1000.0, + 1000.0, + 1050.0, + 1050.0, + 1050.0, + 1050.0, + 1100.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "STD_Aged": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 1500.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 1200.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 1200.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 1500.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 1500.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 1550.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 1200.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 1200.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 1550.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 1550.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 1550.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 1250.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 1250.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 1550.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 1550.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 1550.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 1250.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 1250.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 1550.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 1550.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 1550.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 1250.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 1250.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 1550.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 1550.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 1600.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 1300.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 1300.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 1600.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 1300.0 - } - ], - "title": "Additional standard deduction for blind and aged", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Additional standard deduction for blind and aged", + "description": "To get the standard deduction for aged or blind individuals, taxpayers need to add this value to regular standard deduction.", "section_1": "Standard Deduction", "section_2": "Additional Standard Deduction For Blind And Aged", + "irs_ref": "Form 1040, line 8, calculation (the difference of the two tables given in the instruction).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "To get the standard deduction for aged or blind individuals, taxpayers need to add this value to regular standard deduction.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[1500.0, 1200.0, 1200.0, 1500.0, 1500.0], + [1550.0, 1200.0, 1200.0, 1550.0, 1550.0], + [1550.0, 1250.0, 1250.0, 1550.0, 1550.0], + [1550.0, 1250.0, 1250.0, 1550.0, 1550.0], + [1550.0, 1250.0, 1250.0, 1550.0, 1550.0], + [1600.0, 1300.0, 1300.0, 1600.0, 1300.0], + [1650.0, 1300.0, 1300.0, 1650.0, 1300.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "STD_allow_charity_ded_nonitemizers": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Allow standard deduction filers to take the charitable contributions deduction", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Allow standard deduction filers to take the charitable contributions deduction", + "description": "Extends the charitable contributions deduction to taxpayers who take the standard deduction. The same ceilings, floor, and haircuts applied to itemized deduction for charitable contributions also apply here.", "section_1": "", "section_2": "", - "indexable": false, - "indexed": false, - "description": "Extends the charitable contributions deduction to taxpayers who take the standard deduction. The same ceilings, floor, and haircuts applied to itemized deduction for charitable contributions also apply here.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_credit": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 0.0 - } - ], - "title": "Personal refundable credit maximum amount", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Personal refundable credit maximum amount", + "description": "This credit amount is fully refundable and is phased out based on AGI. It is available to tax units who would otherwise not file.", "section_1": "Refundable Credits", "section_2": "Personal Refundable Credit", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "This credit amount is fully refundable and is phased out based on AGI. It is available to tax units who would otherwise not file.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_credit_ps": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 0.0 - } - ], - "title": "Personal refundable credit phaseout start", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Personal refundable credit phaseout start", + "description": "The personal refundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", "section_1": "Refundable Credits", "section_2": "Personal Refundable Credit", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The personal refundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_credit_prt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Personal refundable credit phaseout rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Personal refundable credit phaseout rate", + "description": "The personal refundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_ps threshold.", "section_1": "Refundable Credits", "section_2": "Personal Refundable Credit", - "indexable": false, - "indexed": false, - "description": "The personal refundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_ps threshold.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_credit_nr": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 0.0 - } - ], - "title": "Personal nonrefundable credit maximum amount", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Personal nonrefundable credit maximum amount", + "description": "This credit amount is not refundable and is phased out based on AGI.", "section_1": "Nonrefundable Credits", "section_2": "Personal Nonrefundable Credit", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "This credit amount is not refundable and is phased out based on AGI.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_credit_nr_ps": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 0.0 - } - ], - "title": "Personal nonrefundable credit phaseout start", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Personal nonrefundable credit phaseout start", + "description": "The personal nonrefundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", "section_1": "Nonrefundable Credits", "section_2": "Personal Nonrefundable Credit", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The personal nonrefundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_credit_nr_prt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Personal nonrefundable credit phaseout rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Personal nonrefundable credit phaseout rate", + "description": "The personal nonrefundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_nr_ps threshold.", "section_1": "Nonrefundable Credits", "section_2": "Personal Nonrefundable Credit", - "indexable": false, - "indexed": false, - "description": "The personal nonrefundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_nr_ps threshold.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_Medical_frt": { - "value": [ - { - "year": 2013, - "value": 0.1 - }, - { - "year": 2014, - "value": 0.1 - }, - { - "year": 2015, - "value": 0.1 - }, - { - "year": 2016, - "value": 0.1 - }, - { - "year": 2017, - "value": 0.075 - }, - { - "year": 2018, - "value": 0.075 - }, - { - "year": 2019, - "value": 0.1 - } - ], - "title": "Floor (as a decimal fraction of AGI) for deductible medical expenses.", - "type": "float", - "validators": { - "range": { - "min": 0.075, - "max": 0.1, - "level": "warn" - } - }, + "long_name": "Floor (as a decimal fraction of AGI) for deductible medical expenses.", + "description": "Taxpayers are eligible to deduct the portion of their medical expenses exceeding this fraction of AGI.", "section_1": "Itemized Deductions", "section_2": "Medical Expenses", - "indexable": false, - "indexed": false, - "description": "Taxpayers are eligible to deduct the portion of their medical expenses exceeding this fraction of AGI.", - "notes": "When using PUF data, lowering this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor." - }, + "irs_ref": "Form 1040 Schedule A, line 3, in-line. ", + "notes": "When using PUF data, lowering this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.100, + 0.100, + 0.100, + 0.100, + 0.075, + 0.075, + 0.075], + "valid_values": {"min": 0.075, "max": 0.100}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "warn", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_Medical_frt_add4aged": { - "value": [ - { - "year": 2013, - "value": -0.025 - }, - { - "year": 2014, - "value": -0.025 - }, - { - "year": 2015, - "value": -0.025 - }, - { - "year": 2016, - "value": -0.025 - }, - { - "year": 2017, - "value": 0.0 - } - ], - "title": "Addon floor (as a decimal fraction of AGI) for deductible medical expenses for elderly filing units.", - "type": "float", - "validators": { - "range": { - "min": -0.025, - "max": 0.0 - } - }, + "long_name": "Addon floor (as a decimal fraction of AGI) for deductible medical expenses for elderly filing units.", + "description": "Elderly taxpayers have this fraction added to the value of the regular floor rate for deductible medical expenses. This fraction was -0.025 from 2013 to 2016, but that was temporary and it changed to zero beginning in 2017.", "section_1": "Itemized Deductions", "section_2": "Medical Expenses", - "indexable": false, - "indexed": false, - "description": "Elderly taxpayers have this fraction added to the value of the regular floor rate for deductible medical expenses. This fraction was -0.025 from 2013 to 2016, but that was temporary and it changed to zero beginning in 2017.", - "notes": "When using PUF data, changing this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor." - }, + "irs_ref": "Form 1040 Schedule A, line 3, in-line. ", + "notes": "When using PUF data, changing this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [-0.025, + -0.025, + -0.025, + -0.025, + 0.0], + "valid_values": {"min": -0.025, "max": 0.0}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "warn", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_Medical_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Medical expense deduction haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Medical expense deduction haircut", + "description": "This decimal fraction can be applied to limit the amount of medical expense deduction allowed.", "section_1": "Itemized Deductions", "section_2": "Medical Expenses", - "indexable": false, - "indexed": false, - "description": "This decimal fraction can be applied to limit the amount of medical expense deduction allowed.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_Medical_c": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Ceiling on the amount of medical expense deduction allowed (dollars)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Ceiling on the amount of medical expense deduction allowed (dollars)", + "description": "The amount of medical expense deduction is limited to this dollar amount.", "section_1": "Itemized Deductions", "section_2": "Medical Expenses", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The amount of medical expense deduction is limited to this dollar amount.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_StateLocalTax_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "State and local income and sales taxes deduction haircut.", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "State and local income and sales taxes deduction haircut.", + "description": "This decimal fraction reduces the state and local income and sales tax deduction.", "section_1": "Itemized Deductions", "section_2": "State And Local Income And Sales Taxes", - "indexable": false, - "indexed": false, - "description": "This decimal fraction reduces the state and local income and sales tax deduction.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_StateLocalTax_crt": { - "value": [ - { - "year": 2013, - "value": 9e+99 - } - ], - "title": "Ceiling (as a decimal fraction of AGI) for the combination of all state and local income and sales tax deductions.", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Ceiling (as a decimal fraction of AGI) for the combination of all state and local income and sales tax deductions.", + "description": "The total deduction for state and local taxes is capped at this fraction of AGI.", "section_1": "Itemized Deductions", "section_2": "State And Local Income And Sales Taxes", - "indexable": false, - "indexed": false, - "description": "The total deduction for state and local taxes is capped at this fraction of AGI.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [9e99], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_StateLocalTax_c": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Ceiling on the amount of state and local income and sales taxes deduction allowed (dollars)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Ceiling on the amount of state and local income and sales taxes deduction allowed (dollars)", + "description": "The amount of state and local income and sales taxes deduction is limited to this dollar amount.", "section_1": "Itemized Deductions", "section_2": "State And Local Income And Sales Taxes", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The amount of state and local income and sales taxes deduction is limited to this dollar amount.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_RealEstate_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "State, local, and foreign real estate taxes deduction haircut.", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "State, local, and foreign real estate taxes deduction haircut.", + "description": "This decimal fraction reduces real estate taxes paid eligible to deduct in itemized deduction.", "section_1": "Itemized Deductions", "section_2": "State, Local, And Foreign Real Estate Taxes", - "indexable": false, - "indexed": false, - "description": "This decimal fraction reduces real estate taxes paid eligible to deduct in itemized deduction.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_RealEstate_crt": { - "value": [ - { - "year": 2013, - "value": 9e+99 - } - ], - "title": "Ceiling (as a decimal fraction of AGI) for the combination of all state, local, and foreign real estate tax deductions.", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Ceiling (as a decimal fraction of AGI) for the combination of all state, local, and foreign real estate tax deductions.", + "description": "The total deduction for all real estate taxes is capped at this fraction of AGI.", "section_1": "Itemized Deductions", "section_2": "State, Local, And Foreign Real Estate Taxes", - "indexable": false, - "indexed": false, - "description": "The total deduction for all real estate taxes is capped at this fraction of AGI.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [9e99], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_RealEstate_c": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Ceiling on the amount of state, local, and foreign real estate taxes deduction allowed (dollars)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Ceiling on the amount of state, local, and foreign real estate taxes deduction allowed (dollars)", + "description": "The amount of real estate taxes deduction is limited to this dollar amount.", "section_1": "Itemized Deductions", "section_2": "State, Local, And Foreign Real Estate Taxes", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The amount of real estate taxes deduction is limited to this dollar amount.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_AllTaxes_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "State and local income, sales, and real estate tax deduction haircut.", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "State and local income, sales, and real estate tax deduction haircut.", + "description": "This decimal fraction reduces all state and local taxes paid eligible to deduct in itemized deduction.", "section_1": "Itemized Deductions", "section_2": "State And Local Taxes And Real Estate Taxes", - "indexable": false, - "indexed": false, - "description": "This decimal fraction reduces all state and local taxes paid eligible to deduct in itemized deduction.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_AllTaxes_c": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 10000.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 10000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 5000.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 10000.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 10000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 10224.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 10224.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 5112.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 10224.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 10224.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 10414.17 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 10414.17 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 5207.08 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 10414.17 - }, - { - "year": 2020, - "MARS": "widow", - "value": 10414.17 - }, - { - "year": 2021, - "MARS": "single", - "value": 10656.82 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 10656.82 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 5328.41 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 10656.82 - }, - { - "year": 2021, - "MARS": "widow", - "value": 10656.82 - }, - { - "year": 2022, - "MARS": "single", - "value": 10900.86 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 10900.86 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 5450.43 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 10900.86 - }, - { - "year": 2022, - "MARS": "widow", - "value": 10900.86 - }, - { - "year": 2023, - "MARS": "single", - "value": 11149.4 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 11149.4 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 5574.7 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 11149.4 - }, - { - "year": 2023, - "MARS": "widow", - "value": 11149.4 - }, - { - "year": 2024, - "MARS": "single", - "value": 11395.8 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 11395.8 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 5697.9 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 11395.8 - }, - { - "year": 2024, - "MARS": "widow", - "value": 11395.8 - }, - { - "year": 2025, - "MARS": "single", - "value": 11636.25 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 11636.25 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 5818.13 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 11636.25 - }, - { - "year": 2025, - "MARS": "widow", - "value": 11636.25 - }, - { - "year": 2026, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Ceiling on the amount of state and local income, sales and real estate tax deductions allowed (dollars)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Ceiling on the amount of state and local income, sales and real estate tax deductions allowed (dollars)", + "description": "The amount of state and local income, sales and real estate tax deductions is limited to this dollar amount.", "section_1": "Itemized Deductions", "section_2": "State And Local Taxes And Real Estate Taxes", + "irs_ref": "Form 1040 Schedule A, line 5e, in-line.", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, - "indexed": true, - "description": "The amount of state and local income, sales and real estate tax deductions is limited to this dollar amount.", - "notes": "" - }, + "indexed": false, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], + [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], + [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], + [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], + [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], + [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], + [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], + [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], + [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_InterestPaid_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Interest paid deduction haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Interest paid deduction haircut", + "description": "This decimal fraction can be applied to limit the amount of interest paid deduction allowed.", "section_1": "Itemized Deductions", "section_2": "Interest Paid", - "indexable": false, - "indexed": false, - "description": "This decimal fraction can be applied to limit the amount of interest paid deduction allowed.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_InterestPaid_c": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Ceiling on the amount of interest paid deduction allowed (dollars)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Ceiling on the amount of interest paid deduction allowed (dollars)", + "description": "The amount of interest paid deduction is limited to this dollar amount.", "section_1": "Itemized Deductions", "section_2": "Interest Paid", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The amount of interest paid deduction is limited to this dollar amount.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_Charity_crt_all": { - "value": [ - { - "year": 2013, - "value": 0.5 - }, - { - "year": 2014, - "value": 0.5 - }, - { - "year": 2015, - "value": 0.5 - }, - { - "year": 2016, - "value": 0.5 - }, - { - "year": 2017, - "value": 0.5 - }, - { - "year": 2018, - "value": 0.6 - }, - { - "year": 2019, - "value": 0.6 - }, - { - "year": 2020, - "value": 0.6 - }, - { - "year": 2021, - "value": 0.6 - }, - { - "year": 2022, - "value": 0.6 - }, - { - "year": 2023, - "value": 0.6 - }, - { - "year": 2024, - "value": 0.6 - }, - { - "year": 2025, - "value": 0.6 - }, - { - "year": 2026, - "value": 0.5 - } - ], - "title": "Ceiling (as a decimal fraction of AGI) for all charitable contribution deductions", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 0.6 - } - }, + "long_name": "Ceiling (as a decimal fraction of AGI) for all charitable contribution deductions", + "description": "The total deduction for charity is capped at this fraction of AGI.", "section_1": "Itemized Deductions", "section_2": "Charity", - "indexable": false, - "indexed": false, - "description": "The total deduction for charity is capped at this fraction of AGI.", - "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped." - }, + "irs_ref": "Pub. 526, Limits on Deductions: 50% Limit Organizations. ", + "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.6, + 0.6, + 0.6, + 0.6, + 0.6, + 0.6, + 0.6, + 0.6, + 0.5], + "valid_values": {"min": 0, "max": 0.6}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "warn", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_Charity_crt_noncash": { - "value": [ - { - "year": 2013, - "value": 0.3 - } - ], - "title": "Ceiling (as a decimal fraction of AGI) for noncash charitable contribution deductions", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 0.3 - } - }, + "long_name": "Ceiling (as a decimal fraction of AGI) for noncash charitable contribution deductions", + "description": "The deduction for noncash charity contributions is capped at this fraction of AGI.", "section_1": "Itemized Deductions", "section_2": "Charity", - "indexable": false, - "indexed": false, - "description": "The deduction for noncash charity contributions is capped at this fraction of AGI.", - "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped." - }, + "irs_ref": "Pub 526, Limits on Deductions: Special 30% Limit for Capital Gain Property. ", + "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.3], + "valid_values": {"min": 0, "max": 0.3}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "warn", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_Charity_frt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Floor (as a decimal fraction of AGI) for deductible charitable contributions.", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Floor (as a decimal fraction of AGI) for deductible charitable contributions.", + "description": "Taxpayers are eligible to deduct the portion of their charitable expense exceeding this fraction of AGI.", "section_1": "Itemized Deductions", "section_2": "Charity", - "indexable": false, - "indexed": false, - "description": "Taxpayers are eligible to deduct the portion of their charitable expense exceeding this fraction of AGI.", - "notes": "This parameter allows for implementation of Option 52 from https://www.cbo.gov/sites/default/files/cbofiles/attachments/49638-BudgetOptions.pdf." - }, + "irs_ref": "", + "notes": "This parameter allows for implementation of Option 52 from https://www.cbo.gov/sites/default/files/cbofiles/attachments/49638-BudgetOptions.pdf.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_Charity_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Charity expense deduction haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Charity expense deduction haircut", + "description": "This decimal fraction can be applied to limit the amount of charity expense deduction allowed.", "section_1": "Itemized Deductions", "section_2": "Charity", - "indexable": false, - "indexed": false, - "description": "This decimal fraction can be applied to limit the amount of charity expense deduction allowed.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_Charity_c": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Ceiling on the amount of charity expense deduction allowed (dollars)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Ceiling on the amount of charity expense deduction allowed (dollars)", + "description": "The amount of charity expense deduction is limited to this dollar amount.", "section_1": "Itemized Deductions", "section_2": "Charity", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The amount of charity expense deduction is limited to this dollar amount.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_Charity_f": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 0.0 - } - ], - "title": "Floor on the amount of charity expense deduction allowed (dollars)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Floor on the amount of charity expense deduction allowed (dollars)", + "description": "Only charitable giving in excess of this dollar amount is eligible for a deduction.", "section_1": "Itemized Deductions", "section_2": "Charity", - "indexable": false, - "indexed": false, - "description": "Only charitable giving in excess of this dollar amount is eligible for a deduction.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[0.0, 0.0, 0.0, 0.0, 0.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_Casualty_frt": { - "value": [ - { - "year": 2013, - "value": 0.1 - } - ], - "title": "Floor (as a decimal fraction of AGI) for deductible casualty loss.", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Floor (as a decimal fraction of AGI) for deductible casualty loss.", + "description": "Taxpayers are eligible to deduct the portion of their gross casualty losses exceeding this fraction of AGI.", "section_1": "Itemized Deductions", "section_2": "Casualty", - "indexable": false, - "indexed": false, - "description": "Taxpayers are eligible to deduct the portion of their gross casualty losses exceeding this fraction of AGI.", - "notes": "" - }, + "irs_ref": "Form 4684, line 17, in-line.", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.1], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "ID_Casualty_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 1.0 - }, - { - "year": 2019, - "value": 1.0 - }, - { - "year": 2020, - "value": 1.0 - }, - { - "year": 2021, - "value": 1.0 - }, - { - "year": 2022, - "value": 1.0 - }, - { - "year": 2023, - "value": 1.0 - }, - { - "year": 2024, - "value": 1.0 - }, - { - "year": 2025, - "value": 1.0 - }, - { - "year": 2026, - "value": 0.0 - } - ], - "title": "Casualty expense deduction haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Casualty expense deduction haircut", + "description": "This decimal fraction can be applied to limit the amount of casualty expense deduction allowed.", "section_1": "Itemized Deductions", "section_2": "Casualty", - "indexable": false, - "indexed": false, - "description": "This decimal fraction can be applied to limit the amount of casualty expense deduction allowed.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "ID_Casualty_c": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Ceiling on the amount of casualty expense deduction allowed (dollars)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Ceiling on the amount of casualty expense deduction allowed (dollars)", + "description": "The amount of casualty expense deduction is limited to this dollar amount.", "section_1": "Itemized Deductions", "section_2": "Casualty", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The amount of casualty expense deduction is limited to this dollar amount.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "ID_Miscellaneous_frt": { - "value": [ - { - "year": 2013, - "value": 0.02 - } - ], - "title": "Floor (as a decimal fraction of AGI) for deductible miscellaneous expenses.", - "type": "float", - "validators": { - "range": { - "min": 0.02, - "max": 1 - } - }, + "long_name": "Floor (as a decimal fraction of AGI) for deductible miscellaneous expenses.", + "description": "Taxpayers are eligible to deduct the portion of their miscellaneous expense exceeding this fraction of AGI.", "section_1": "Itemized Deductions", "section_2": "Miscellaneous", - "indexable": false, - "indexed": false, - "description": "Taxpayers are eligible to deduct the portion of their miscellaneous expense exceeding this fraction of AGI.", - "notes": "When using PUF data, lowering this parameter value may produce unexpected results because in PUF data the variable e20400 is zero below the floor." - }, + "irs_ref": "Form 1040 Schedule A, line 16, instructions. ", + "notes": "When using PUF data, lowering this parameter value may produce unexpected results because in PUF data the variable e20400 is zero below the floor.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.02], + "valid_values": {"min": 0.02, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "warn", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_Miscellaneous_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 1.0 - }, - { - "year": 2019, - "value": 1.0 - }, - { - "year": 2020, - "value": 1.0 - }, - { - "year": 2021, - "value": 1.0 - }, - { - "year": 2022, - "value": 1.0 - }, - { - "year": 2023, - "value": 1.0 - }, - { - "year": 2024, - "value": 1.0 - }, - { - "year": 2025, - "value": 1.0 - }, - { - "year": 2026, - "value": 0.0 - } - ], - "title": "Miscellaneous expense deduction haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Miscellaneous expense deduction haircut", + "description": "This decimal fraction can be applied to limit the amount of miscellaneous expense deduction allowed.", "section_1": "Itemized Deductions", "section_2": "Miscellaneous", - "indexable": false, - "indexed": false, - "description": "This decimal fraction can be applied to limit the amount of miscellaneous expense deduction allowed.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_Miscellaneous_c": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Ceiling on the amount of miscellaneous expense deduction allowed (dollars)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Ceiling on the amount of miscellaneous expense deduction allowed (dollars)", + "description": "The amount of miscellaneous expense deduction is limited to this dollar amount.", "section_1": "Itemized Deductions", "section_2": "Miscellaneous", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The amount of miscellaneous expense deduction is limited to this dollar amount.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_ps": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 250000.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 300000.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 150000.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 275000.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 300000.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 254200.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 305050.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 152525.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 279650.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 305050.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 258250.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 309900.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 154950.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 284050.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 309900.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 259400.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 311300.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 155650.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 285350.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 311300.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 261500.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 313800.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 156900.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 287650.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 313800.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "single", - "value": 316457.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 379748.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 189874.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 348102.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 379748.0 - } - ], - "title": "Itemized deduction phaseout AGI start (Pease provision)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Itemized deduction phaseout AGI start (Pease provision)", + "description": "The itemized deductions will be reduced for taxpayers with AGI higher than this level.", "section_1": "Itemized Deductions", "section_2": "Itemized Deduction Limitation", + "irs_ref": "Form 1040 Schedule A, line 29, instructions.", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "The itemized deductions will be reduced for taxpayers with AGI higher than this level.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[250000.0, 300000.0, 150000.0, 275000.0, 300000.0], + [254200.0, 305050.0, 152525.0, 279650.0, 305050.0], + [258250.0, 309900.0, 154950.0, 284050.0, 309900.0], + [259400.0, 311300.0, 155650.0, 285350.0, 311300.0], + [261500.0, 313800.0, 156900.0, 287650.0, 313800.0], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [316457.0, 379748.0, 189874.0, 348102.0, 379748.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_prt": { - "value": [ - { - "year": 2013, - "value": 0.03 - }, - { - "year": 2014, - "value": 0.03 - }, - { - "year": 2015, - "value": 0.03 - }, - { - "year": 2016, - "value": 0.03 - }, - { - "year": 2017, - "value": 0.03 - }, - { - "year": 2018, - "value": 0.0 - }, - { - "year": 2019, - "value": 0.0 - }, - { - "year": 2020, - "value": 0.0 - }, - { - "year": 2021, - "value": 0.0 - }, - { - "year": 2022, - "value": 0.0 - }, - { - "year": 2023, - "value": 0.0 - }, - { - "year": 2024, - "value": 0.0 - }, - { - "year": 2025, - "value": 0.0 - }, - { - "year": 2026, - "value": 0.03 - } - ], - "title": "Itemized deduction phaseout rate (Pease provision)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Itemized deduction phaseout rate (Pease provision)", + "description": "Taxpayers will not be eligible to deduct the full amount of itemized deduction if their AGI is above the phaseout start. The deductible portion would be decreased at this rate for each dollar exceeding the start.", "section_1": "Itemized Deductions", "section_2": "Itemized Deduction Limitation", - "indexable": false, - "indexed": false, - "description": "Taxpayers will not be eligible to deduct the full amount of itemized deduction if their AGI is above the phaseout start. The deductible portion would be decreased at this rate for each dollar exceeding the start.", - "notes": "This phaseout rate cannot be lower than 0.03 for each dollar, due to limited data on non-itemizers." - }, + "irs_ref": "Schedule A, line 29, instructions. ", + "notes": "This phaseout rate cannot be lower than 0.03 for each dollar, due to limited data on non-itemizers.", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.03, + 0.03, + 0.03, + 0.03, + 0.03, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_crt": { - "value": [ - { - "year": 2013, - "value": 0.8 - }, - { - "year": 2014, - "value": 0.8 - }, - { - "year": 2015, - "value": 0.8 - }, - { - "year": 2016, - "value": 0.8 - }, - { - "year": 2017, - "value": 0.8 - }, - { - "year": 2018, - "value": 1.0 - }, - { - "year": 2019, - "value": 1.0 - }, - { - "year": 2020, - "value": 1.0 - }, - { - "year": 2021, - "value": 1.0 - }, - { - "year": 2022, - "value": 1.0 - }, - { - "year": 2023, - "value": 1.0 - }, - { - "year": 2024, - "value": 1.0 - }, - { - "year": 2025, - "value": 1.0 - }, - { - "year": 2026, - "value": 0.8 - } - ], - "title": "Itemized deduction maximum phaseout as a decimal fraction of total itemized deductions (Pease provision)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Itemized deduction maximum phaseout as a decimal fraction of total itemized deductions (Pease provision)", + "description": "The phaseout amount is capped at this fraction of the original total deduction.", "section_1": "Itemized Deductions", "section_2": "Itemized Deduction Limitation", - "indexable": false, - "indexed": false, - "description": "The phaseout amount is capped at this fraction of the original total deduction.", - "notes": "" - }, + "irs_ref": "Form 1040 Schedule A, line 17, instructions. ", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.8], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_BenefitSurtax_trt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Surtax rate on the benefits from specified itemized deductions", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Surtax rate on the benefits from specified itemized deductions", + "description": "The benefit from specified itemized deductions exceeding the credit is taxed at this rate. A surtax rate of 1 strictly limits the benefit from specified itemized deductions to the specified credit. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", "section_1": "Itemized Deductions", "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "indexable": false, - "indexed": false, - "description": "The benefit from specified itemized deductions exceeding the credit is taxed at this rate. A surtax rate of 1 strictly limits the benefit from specified itemized deductions to the specified credit. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_BenefitSurtax_crt": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Credit on itemized deduction benefit surtax (decimal fraction of AGI)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Credit on itemized deduction benefit surtax (decimal fraction of AGI)", + "description": "The surtax on specified itemized deductions applies to benefits in excess of this fraction of AGI. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", "section_1": "Itemized Deductions", "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "indexable": false, - "indexed": false, - "description": "The surtax on specified itemized deductions applies to benefits in excess of this fraction of AGI. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [1.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_BenefitSurtax_em": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 0.0 - } - ], - "title": "Exemption for itemized deduction benefit surtax (dollar AGI threshold)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Exemption for itemized deduction benefit surtax (dollar AGI threshold)", + "description": "This amount is subtracted from itemized deduction benefits in the calculation of the itemized deduction benefit surtax. With ID_BenefitSurtax_crt set to 0.0 and ID_BenefitSurtax_trt set to 1.0, this amount serves as a dollar limit on the value of itemized deductions.", "section_1": "Itemized Deductions", "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "This amount is subtracted from itemized deduction benefits in the calculation of the itemized deduction benefit surtax. With ID_BenefitSurtax_crt set to 0.0 and ID_BenefitSurtax_trt set to 1.0, this amount serves as a dollar limit on the value of itemized deductions.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_BenefitSurtax_Switch": { - "value": [ - { - "year": 2013, - "idedtype": "med", - "value": true - }, - { - "year": 2013, - "idedtype": "sltx", - "value": true - }, - { - "year": 2013, - "idedtype": "retx", - "value": true - }, - { - "year": 2013, - "idedtype": "cas", - "value": true - }, - { - "year": 2013, - "idedtype": "misc", - "value": true - }, - { - "year": 2013, - "idedtype": "int", - "value": true - }, - { - "year": 2013, - "idedtype": "char", - "value": true - } - ], - "title": "Deductions subject to the surtax on itemized deduction benefits", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Deductions subject to the surtax on itemized deduction benefits", + "description": "The surtax on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", "section_1": "Itemized Deductions", "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "indexable": false, - "indexed": false, - "description": "The surtax on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "idedtype", + "vi_vals": ["med", "sltx", "retx", "cas", "misc", "int", "char"], + "value_type": "boolean", + "value": [[true, true, true, true, true, true, true]], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_BenefitCap_rt": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Ceiling on the benefits from itemized deductions; decimal fraction of total deductible expenses", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Ceiling on the benefits from itemized deductions; decimal fraction of total deductible expenses", + "description": "The benefit from specified itemized deductions is capped at this percent of the total deductible expenses.", "section_1": "Itemized Deductions", "section_2": "Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses", - "indexable": false, - "indexed": false, - "description": "The benefit from specified itemized deductions is capped at this percent of the total deductible expenses.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [1.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_BenefitCap_Switch": { - "value": [ - { - "year": 2013, - "idedtype": "med", - "value": true - }, - { - "year": 2013, - "idedtype": "sltx", - "value": true - }, - { - "year": 2013, - "idedtype": "retx", - "value": true - }, - { - "year": 2013, - "idedtype": "cas", - "value": true - }, - { - "year": 2013, - "idedtype": "misc", - "value": true - }, - { - "year": 2013, - "idedtype": "int", - "value": true - }, - { - "year": 2013, - "idedtype": "char", - "value": true - } - ], - "title": "Deductions subject to the cap on itemized deduction benefits", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Deductions subject to the cap on itemized deduction benefits", + "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", "section_1": "Itemized Deductions", "section_2": "Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses", - "indexable": false, - "indexed": false, - "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "idedtype", + "vi_vals": ["med", "sltx", "retx", "cas", "misc", "int", "char"], + "value_type": "boolean", + "value": [[true, true, true, true, true, true, true]], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_c": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Ceiling on the amount of itemized deductions allowed (dollars)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Ceiling on the amount of itemized deductions allowed (dollars)", + "description": "The amount of itemized deductions is limited to this dollar amount.", "section_1": "Itemized Deductions", "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The amount of itemized deductions is limited to this dollar amount.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_AmountCap_rt": { - "value": [ - { - "year": 2013, - "value": 9e+99 - } - ], - "title": "Ceiling on the gross amount of itemized deductions allowed; decimal fraction of AGI", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Ceiling on the gross amount of itemized deductions allowed; decimal fraction of AGI", + "description": "The gross allowable amount of specified itemized deductions is capped at this percent of AGI.", "section_1": "Itemized Deductions", "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", - "indexable": false, - "indexed": false, - "description": "The gross allowable amount of specified itemized deductions is capped at this percent of AGI.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [9e99], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ID_AmountCap_Switch": { - "value": [ - { - "year": 2013, - "idedtype": "med", - "value": true - }, - { - "year": 2013, - "idedtype": "sltx", - "value": true - }, - { - "year": 2013, - "idedtype": "retx", - "value": true - }, - { - "year": 2013, - "idedtype": "cas", - "value": true - }, - { - "year": 2013, - "idedtype": "misc", - "value": true - }, - { - "year": 2013, - "idedtype": "int", - "value": true - }, - { - "year": 2013, - "idedtype": "char", - "value": true - } - ], - "title": "Deductions subject to the cap on itemized deduction benefits", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Deductions subject to the cap on itemized deduction benefits", + "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", "section_1": "Itemized Deductions", "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", - "indexable": false, - "indexed": false, - "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "idedtype", + "vi_vals": ["med", "sltx", "retx", "cas", "misc", "int", "char"], + "value_type": "boolean", + "value": [[true, true, true, true, true, true, true]], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CG_rt1": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Long term capital gain and qualified dividends (regular/non-AMT) rate 1", + "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 1 are taxed at this rate.", "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, - "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 1 are taxed at this rate.", - "notes": "" - }, + "irs_ref": "Form 1040 Schedule D tax worksheet, line 20, in-line. ", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CG_brk1": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 36250.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 72500.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 36250.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 48600.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 72500.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 36900.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 73800.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 36900.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 49400.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 73800.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 37450.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 74900.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 37450.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 50200.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 74900.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 37650.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 75300.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 37650.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 50400.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 75300.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 37950.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 75900.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 37950.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 50800.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 75900.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 38600.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 77200.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 38600.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 51700.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 77200.0 - } - ], - "title": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": "CG_brk2" - } - }, + "long_name": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 1", + "description": "The gains and dividends (stacked on top of regular income) below this are taxed at capital gain rate 1.", "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", + "irs_ref": "Form 1040 Schedule D tax worksheet, line 15, in-line. ", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The gains and dividends (stacked on top of regular income) below this are taxed at capital gain rate 1.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[36250.0, 72500.0, 36250.0, 48600.0, 72500.0], + [36900.0, 73800.0, 36900.0, 49400.0, 73800.0], + [37450.0, 74900.0, 37450.0, 50200.0, 74900.0], + [37650.0, 75300.0, 37650.0, 50400.0, 75300.0], + [37950.0, 75900.0, 37950.0, 50800.0, 75900.0], + [38600.0, 77200.0, 38600.0, 51700.0, 77200.0], + [39375.0, 78750.0, 39375.0, 52750.0, 78750.0]], + "valid_values": {"min": 0, "max": "CG_brk2"}, + "invalid_minmsg": "", + "invalid_maxmsg": "for CG_brk2", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CG_rt2": { - "value": [ - { - "year": 2013, - "value": 0.15 - } - ], - "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 2", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Long term capital gain and qualified dividends (regular/non-AMT) rate 2", + "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 2 and above threshold 1 are taxed at this rate.", "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, - "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 2 and above threshold 1 are taxed at this rate.", - "notes": "" - }, + "irs_ref": "Form 1040 Schedule D tax worksheet, line 29, in-line. ", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.15], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CG_brk2": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 400000.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 450000.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 225000.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 425000.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 450000.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 406750.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 457600.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 228800.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 432200.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 457600.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 413200.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 464850.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 232425.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 439000.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 464850.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 415050.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 466950.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 233475.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 441000.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 466950.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 418400.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 470700.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 235350.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 444550.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 470700.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 425800.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 479000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 239500.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 452400.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 479000.0 - } - ], - "title": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 2", - "type": "float", - "validators": { - "range": { - "min": "CG_brk1", - "max": "CG_brk3" - } - }, + "long_name": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 2", + "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 1 are taxed at capital gain rate 2.", "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", + "irs_ref": "Form 1040 Schedule D tax worksheet, line 24, in-line. ", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 1 are taxed at capital gain rate 2.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[400000.0, 450000.0, 225000.0, 425000.0, 450000.0], + [406750.0, 457600.0, 228800.0, 432200.0, 457600.0], + [413200.0, 464850.0, 232425.0, 439000.0, 464850.0], + [415050.0, 466950.0, 233475.0, 441000.0, 466950.0], + [418400.0, 470700.0, 235350.0, 444550.0, 470700.0], + [425800.0, 479000.0, 239500.0, 452400.0, 479000.0], + [434550.0, 488850.0, 244425.0, 461700.0, 488850.0]], + "valid_values": {"min": "CG_brk1", "max": "CG_brk3"}, + "invalid_minmsg": "for CG_brk1", + "invalid_maxmsg": "for CG_brk3", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CG_rt3": { - "value": [ - { - "year": 2013, - "value": 0.2 - } - ], - "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 3", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Long term capital gain and qualified dividends (regular/non-AMT) rate 3", + "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 2 and below threshold 3 are taxed at this rate.", "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, - "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 2 and below threshold 3 are taxed at this rate.", - "notes": "" - }, + "irs_ref": "Form 1040 Schedule D tax worksheet, line 32, in-line. ", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.20], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CG_brk3": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Top of long-term capital gains and qualified dividend tax (regular/non-AMT) bracket 3", - "type": "float", - "validators": { - "range": { - "min": "CG_brk2", - "max": 9e+99 - } - }, + "long_name": "Top of long-term capital gains and qualified dividend tax (regular/non-AMT) bracket 3", + "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 2 are taxed at the capital gain rate 3; above this they are taxed at capital gain rate 4. Default value is essentially infinity.", "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", + "irs_ref": "Form 1040 Schedule D tax worksheet, line 24, in-line. ", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 2 are taxed at the capital gain rate 3; above this they are taxed at capital gain rate 4. Default value is essentially infinity.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": "CG_brk2", "max": 9e99}, + "invalid_minmsg": "for CG_brk2", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CG_rt4": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 4", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Long term capital gain and qualified dividends (regular/non-AMT) rate 4", + "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, - "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [1.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_CG_rt1": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Long term capital gain and qualified dividends (AMT) rate 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Long term capital gain and qualified dividends (AMT) rate 1", + "description": "Capital gain and qualified dividends (stacked on top of regular income) below threshold 1 are taxed at this rate.", "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, - "description": "Capital gain and qualified dividends (stacked on top of regular income) below threshold 1 are taxed at this rate.", - "notes": "" - }, + "irs_ref": "Form 6251, line 47, in-line. ", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_CG_brk1": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 36250.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 72500.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 36250.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 48600.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 72500.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 36900.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 73800.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 36900.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 49400.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 73800.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 37450.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 74900.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 37450.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 50200.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 74900.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 37650.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 75300.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 37650.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 50400.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 75300.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 37950.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 75900.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 37950.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 50800.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 75900.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 38600.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 77200.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 38600.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 51700.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 77200.0 - } - ], - "title": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": "AMT_CG_brk2" - } - }, + "long_name": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 1", + "description": "The gains and dividends, stacked last, of AMT taxable income below this are taxed at AMT capital gain rate 1.", "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", + "irs_ref": "Form 6251, line 19, in-line. ", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The gains and dividends, stacked last, of AMT taxable income below this are taxed at AMT capital gain rate 1.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[36250.0, 72500.0, 36250.0, 48600.0, 72500.0], + [36900.0, 73800.0, 36900.0, 49400.0, 73800.0], + [37450.0, 74900.0, 37450.0, 50200.0, 74900.0], + [37650.0, 75300.0, 37650.0, 50400.0, 75300.0], + [37950.0, 75900.0, 37950.0, 50800.0, 75900.0], + [38600.0, 77200.0, 38600.0, 51700.0, 77200.0], + [39375.0, 78750.0, 39375.0, 52750.0, 78750.0]], + "valid_values": {"min": 0, "max": "AMT_CG_brk2"}, + "invalid_minmsg": "", + "invalid_maxmsg": "for AMT_CG_brk2", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_CG_rt2": { - "value": [ - { - "year": 2013, - "value": 0.15 - } - ], - "title": "Long term capital gain and qualified dividends (AMT) rate 2", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Long term capital gain and qualified dividends (AMT) rate 2", "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, "description": "Capital gain and qualified dividend (stacked on top of regular income) below threshold 2 and above threshold 1 are taxed at this rate.", - "notes": "" - }, + "irs_ref": "Form 6251, line 31, in-line. ", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.15], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_CG_brk2": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 400000.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 450000.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 225000.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 425000.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 450000.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 406750.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 457600.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 228800.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 432200.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 457600.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 413200.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 464850.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 232425.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 439000.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 464850.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 415050.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 466950.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 233475.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 441000.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 466950.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 418400.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 470700.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 235350.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 444550.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 470700.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 425800.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 479000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 239500.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 452400.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 479000.0 - } - ], - "title": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 2", - "type": "float", - "validators": { - "range": { - "min": "AMT_CG_brk1", - "max": "AMT_CG_brk3" - } - }, + "long_name": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 2", + "description": "The gains and dividends, stacked last, of AMT taxable income below this threshold and above bracket 1 are taxed at AMT capital gain rate 2.", "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", + "notes": "", + "irs_ref": "Form 6251, line 25, in-line. ", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The gains and dividends, stacked last, of AMT taxable income below this threshold and above bracket 1 are taxed at AMT capital gain rate 2.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[400000.0, 450000.0, 225000.0, 425000.0, 450000.0], + [406750.0, 457600.0, 228800.0, 432200.0, 457600.0], + [413200.0, 464850.0, 232425.0, 439000.0, 464850.0], + [415050.0, 466950.0, 233475.0, 441000.0, 466950.0], + [418400.0, 470700.0, 235350.0, 444550.0, 470700.0], + [425800.0, 479000.0, 239500.0, 452400.0, 479000.0], + [434550.0, 488850.0, 244425.0, 461700.0, 488850.0]], + "valid_values": {"min": "AMT_CG_brk1", "max": "AMT_CG_brk3"}, + "invalid_minmsg": "for AMT_CG_brk1", + "invalid_maxmsg": "for AMT_CG_brk3", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_CG_rt3": { - "value": [ - { - "year": 2013, - "value": 0.2 - } - ], - "title": "Long term capital gain and qualified dividends (AMT) rate 3", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Long term capital gain and qualified dividends (AMT) rate 3", + "description": "The capital gain and qualified dividend (stacked on top of regular income) above threshold 2 and below threshold 3 are taxed at this rate.", "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, - "description": "The capital gain and qualified dividend (stacked on top of regular income) above threshold 2 and below threshold 3 are taxed at this rate.", - "notes": "" - }, + "irs_ref": "Form 6251, line 34, in-line. ", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.20], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_CG_brk3": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Long term capital gain and qualified dividends (AMT) threshold 3", - "type": "float", - "validators": { - "range": { - "min": "AMT_CG_brk2", - "max": 9e+99 - } - }, + "long_name": "Long term capital gain and qualified dividends (AMT) threshold 3", + "description": "The gains and dividends, stacked last, of AMT taxable income below this and above bracket 2 are taxed at capital gain rate 3; above thisthey are taxed at AMT capital gain rate 4. Default value is essentially infinity.", "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The gains and dividends, stacked last, of AMT taxable income below this and above bracket 2 are taxed at capital gain rate 3; above thisthey are taxed at AMT capital gain rate 4. Default value is essentially infinity.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": "AMT_CG_brk2", "max": 9e99}, + "invalid_minmsg": "for AMT_CG_brk2", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_CG_rt4": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Long term capital gain and qualified dividends (AMT) rate 4", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Long term capital gain and qualified dividends (AMT) rate 4", + "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, - "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [1.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "CG_nodiff": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Long term capital gains and qualified dividends taxed no differently than regular taxable income", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Long term capital gains and qualified dividends taxed no differently than regular taxable income", + "description": "Specifies whether or not long term capital gains and qualified dividends are taxed like regular taxable income.", "section_1": "Capital Gains And Dividends", "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", - "indexable": false, - "indexed": false, - "description": "Specifies whether or not long term capital gains and qualified dividends are taxed like regular taxable income.", - "notes": "" - }, + "irs_ref": "Current-law value is zero implying different tax treatment in Schedule D and AMT; a value of one implies same tax treatment in both regular and alternative minimum tax rules, but the same treatment can differ for regular and AMT.", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CG_ec": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.0 - } - ], - "title": "Dollar amount of all capital gains and qualified dividends that are excluded from AGI.", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Dollar amount of all capital gains and qualified dividends that are excluded from AGI.", + "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income.", "section_1": "Capital Gains And Dividends", "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CG_reinvest_ec_rt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Fraction of all capital gains and qualified dividends in excess of the dollar exclusion that are excluded from AGI.", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Fraction of all capital gains and qualified dividends in excess of the dollar exclusion that are excluded from AGI.", + "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income. To limit the exclusion to capital gains and dividends invested within one year, set to statutory exclusion rate times the fraction of capital gains and qualified dividends in excess of the exclusion that are assumed to be reinvested within the year.", "section_1": "Capital Gains And Dividends", "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", - "indexable": false, - "indexed": false, - "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income. To limit the exclusion to capital gains and dividends invested within one year, set to statutory exclusion rate times the fraction of capital gains and qualified dividends in excess of the exclusion that are assumed to be reinvested within the year.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_rt1": { - "value": [ - { - "year": 2013, - "value": 0.1 - }, - { - "year": 2014, - "value": 0.1 - }, - { - "year": 2015, - "value": 0.1 - }, - { - "year": 2016, - "value": 0.1 - }, - { - "year": 2017, - "value": 0.1 - }, - { - "year": 2018, - "value": 0.1 - }, - { - "year": 2019, - "value": 0.1 - }, - { - "year": 2020, - "value": 0.1 - }, - { - "year": 2021, - "value": 0.1 - }, - { - "year": 2022, - "value": 0.1 - }, - { - "year": 2023, - "value": 0.1 - }, - { - "year": 2024, - "value": 0.1 - }, - { - "year": 2025, - "value": 0.1 - }, - { - "year": 2026, - "value": 0.1 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 1", + "description": "The lowest tax rate, applied to the portion of taxable income below tax bracket 1.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, - "description": "The lowest tax rate, applied to the portion of taxable income below tax bracket 1.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_brk1": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 8925.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 17850.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 8925.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 12750.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 17850.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 9075.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 18150.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9075.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 12950.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 18150.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 9225.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 18450.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9225.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 13150.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 18450.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 9275.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 18550.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9275.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 13250.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 18550.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 9325.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 18650.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9325.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 13350.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 18650.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 9525.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 19050.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9525.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 13600.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 19050.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 9738.36 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 19476.72 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 9738.36 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 13904.64 - }, - { - "year": 2019, - "MARS": "widow", - "value": 19476.72 - }, - { - "year": 2020, - "MARS": "single", - "value": 9919.49 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 19838.99 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 9919.49 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 14163.27 - }, - { - "year": 2020, - "MARS": "widow", - "value": 19838.99 - }, - { - "year": 2021, - "MARS": "single", - "value": 10150.62 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 20301.24 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 10150.62 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 14493.27 - }, - { - "year": 2021, - "MARS": "widow", - "value": 20301.24 - }, - { - "year": 2022, - "MARS": "single", - "value": 10383.07 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 20766.13 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 10383.07 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 14825.17 - }, - { - "year": 2022, - "MARS": "widow", - "value": 20766.13 - }, - { - "year": 2023, - "MARS": "single", - "value": 10619.8 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 21239.6 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 10619.8 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 15163.18 - }, - { - "year": 2023, - "MARS": "widow", - "value": 21239.6 - }, - { - "year": 2024, - "MARS": "single", - "value": 10854.5 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 21709.0 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 10854.5 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 15498.29 - }, - { - "year": 2024, - "MARS": "widow", - "value": 21709.0 - }, - { - "year": 2025, - "MARS": "single", - "value": 11083.53 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 22167.06 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 11083.53 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 15825.3 - }, - { - "year": 2025, - "MARS": "widow", - "value": 22167.06 - }, - { - "year": 2026, - "MARS": "single", - "value": 11285.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 22569.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 11285.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 16156.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 22569.0 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": "II_brk2" - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1", + "description": "Taxable income below this threshold is taxed at tax rate 1.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", + "irs_ref": "Form 1040, line 44, instruction (Schedule XYZ).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Taxable income below this threshold is taxed at tax rate 1.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[8925.00, 17850.00, 8925.00, 12750.00, 17850.00], + [9075.00, 18150.00, 9075.00, 12950.00, 18150.00], + [9225.00, 18450.00, 9225.00, 13150.00, 18450.00], + [9275.00, 18550.00, 9275.00, 13250.00, 18550.00], + [9325.00, 18650.00, 9325.00, 13350.00, 18650.00], + [9525.0, 19050.0, 9525.0, 13600.0, 19050.0], + [9700.0, 19400.0, 9700.0, 13850.0, 19400.0], + [9880.42, 19760.84, 9880.42, 14107.61, 19760.84], + [10110.63, 20221.27, 10110.63, 14436.32, 20221.27], + [10342.17, 20684.33, 10342.17, 14766.91, 20684.33], + [10577.97, 21155.94, 10577.97, 15103.59, 21155.94], + [10811.74, 21623.48, 10811.74, 15437.38, 21623.48], + [11039.87, 22079.74, 11039.87, 15763.11, 22079.74], + [11285.0, 22569.0, 11285.0, 16156.0, 22569.0]], + "valid_values": {"min": 0, "max": "II_brk2"}, + "invalid_minmsg": "", + "invalid_maxmsg": "for II_brk2", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_rt2": { - "value": [ - { - "year": 2013, - "value": 0.15 - }, - { - "year": 2014, - "value": 0.15 - }, - { - "year": 2015, - "value": 0.15 - }, - { - "year": 2016, - "value": 0.15 - }, - { - "year": 2017, - "value": 0.15 - }, - { - "year": 2018, - "value": 0.12 - }, - { - "year": 2019, - "value": 0.12 - }, - { - "year": 2020, - "value": 0.12 - }, - { - "year": 2021, - "value": 0.12 - }, - { - "year": 2022, - "value": 0.12 - }, - { - "year": 2023, - "value": 0.12 - }, - { - "year": 2024, - "value": 0.12 - }, - { - "year": 2025, - "value": 0.12 - }, - { - "year": 2026, - "value": 0.15 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 2", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 2", + "description": "The second lowest tax rate, applied to the portion of taxable income below tax bracket 2 and above tax bracket 1.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, - "description": "The second lowest tax rate, applied to the portion of taxable income below tax bracket 2 and above tax bracket 1.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.15, + 0.15, + 0.15, + 0.15, + 0.15, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.15], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_brk2": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 36250.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 72500.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 36250.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 48600.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 72500.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 36900.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 73800.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 36900.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 49400.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 73800.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 37450.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 74900.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 37450.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 50200.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 74900.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 37650.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 75300.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 37650.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 50400.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 75300.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 37950.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 75900.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 37950.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 50800.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 75900.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 38700.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 77400.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 38700.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 51800.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 77400.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 39566.88 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 79133.76 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 39566.88 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 52960.32 - }, - { - "year": 2019, - "MARS": "widow", - "value": 79133.76 - }, - { - "year": 2020, - "MARS": "single", - "value": 40302.82 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 80605.65 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 40302.82 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 53945.38 - }, - { - "year": 2020, - "MARS": "widow", - "value": 80605.65 - }, - { - "year": 2021, - "MARS": "single", - "value": 41241.88 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 82483.76 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 41241.88 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 55202.31 - }, - { - "year": 2021, - "MARS": "widow", - "value": 82483.76 - }, - { - "year": 2022, - "MARS": "single", - "value": 42186.32 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 84372.64 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 42186.32 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 56466.44 - }, - { - "year": 2022, - "MARS": "widow", - "value": 84372.64 - }, - { - "year": 2023, - "MARS": "single", - "value": 43148.17 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 86296.33 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 43148.17 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 57753.88 - }, - { - "year": 2023, - "MARS": "widow", - "value": 86296.33 - }, - { - "year": 2024, - "MARS": "single", - "value": 44101.74 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 88203.48 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 44101.74 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 59030.24 - }, - { - "year": 2024, - "MARS": "widow", - "value": 88203.48 - }, - { - "year": 2025, - "MARS": "single", - "value": 45032.29 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 90064.58 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 45032.29 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 60275.78 - }, - { - "year": 2025, - "MARS": "widow", - "value": 90064.58 - }, - { - "year": 2026, - "MARS": "single", - "value": 45926.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 91851.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 45926.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 61476.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 91851.0 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2", - "type": "float", - "validators": { - "range": { - "min": "II_brk1", - "max": "II_brk3" - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2", + "description": "Income below this threshold and above tax bracket 1 is taxed at tax rate 2.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Income below this threshold and above tax bracket 1 is taxed at tax rate 2.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[36250.00, 72500.00, 36250.00, 48600.00, 72500.00], + [36900.00, 73800.00, 36900.00, 49400.00, 73800.00], + [37450.00, 74900.00, 37450.00, 50200.00, 74900.00], + [37650.00, 75300.00, 37650.00, 50400.00, 75300.00], + [37950.00, 75900.00, 37950.00, 50800.00, 75900.00], + [38700.0, 77400.0, 38700.0, 51800.0, 77400.0], + [39475.0, 78950.0, 39475.0, 52850.0, 78950.0], + [40209.24, 80418.47, 40209.24, 53833.01, 80418.47], + [41146.11, 82292.22, 41146.11, 55087.32, 82292.22], + [42088.36, 84176.71, 42088.36, 56348.82, 84176.71], + [43047.97, 86095.94, 43047.97, 57633.57, 86095.94], + [43999.33, 87998.66, 43999.33, 58907.27, 87998.66], + [44927.72, 89855.43, 44927.72, 60150.22, 89855.43], + [45926.0, 91851.0, 45926.0, 61476.0, 91851.0]], + "valid_values": {"min": "II_brk1", "max": "II_brk3"}, + "invalid_minmsg": "for II_brk1", + "invalid_maxmsg": "for II_brk3", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_rt3": { - "value": [ - { - "year": 2013, - "value": 0.25 - }, - { - "year": 2014, - "value": 0.25 - }, - { - "year": 2015, - "value": 0.25 - }, - { - "year": 2016, - "value": 0.25 - }, - { - "year": 2017, - "value": 0.25 - }, - { - "year": 2018, - "value": 0.22 - }, - { - "year": 2019, - "value": 0.22 - }, - { - "year": 2020, - "value": 0.22 - }, - { - "year": 2021, - "value": 0.22 - }, - { - "year": 2022, - "value": 0.22 - }, - { - "year": 2023, - "value": 0.22 - }, - { - "year": 2024, - "value": 0.22 - }, - { - "year": 2025, - "value": 0.22 - }, - { - "year": 2026, - "value": 0.25 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 3", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 3", + "description": "The third lowest tax rate, applied to the portion of taxable income below tax bracket 3 and above tax bracket 2.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, - "description": "The third lowest tax rate, applied to the portion of taxable income below tax bracket 3 and above tax bracket 2.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.22, + 0.22, + 0.22, + 0.22, + 0.22, + 0.22, + 0.22, + 0.22, + 0.25], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_brk3": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 87850.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 146400.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 73200.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 125450.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 146400.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 89350.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 148850.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 74425.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 127550.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 148850.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 90750.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 151200.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 75600.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 129600.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 151200.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 91150.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 151900.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 75950.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 130150.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 151900.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 91900.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 153100.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 76550.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 131200.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 153100.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 82500.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 165000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 82500.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 82500.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 165000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 84348.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 168696.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 84348.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 84348.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 168696.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 85916.87 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 171833.75 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 85916.87 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 85916.87 - }, - { - "year": 2020, - "MARS": "widow", - "value": 171833.75 - }, - { - "year": 2021, - "MARS": "single", - "value": 87918.74 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 175837.47 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 87918.74 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 87918.74 - }, - { - "year": 2021, - "MARS": "widow", - "value": 175837.47 - }, - { - "year": 2022, - "MARS": "single", - "value": 89932.07 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 179864.15 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 89932.07 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 89932.07 - }, - { - "year": 2022, - "MARS": "widow", - "value": 179864.15 - }, - { - "year": 2023, - "MARS": "single", - "value": 91982.53 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 183965.05 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 91982.53 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 91982.53 - }, - { - "year": 2023, - "MARS": "widow", - "value": 183965.05 - }, - { - "year": 2024, - "MARS": "single", - "value": 94015.34 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 188030.68 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 94015.34 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 94015.34 - }, - { - "year": 2024, - "MARS": "widow", - "value": 188030.68 - }, - { - "year": 2025, - "MARS": "single", - "value": 95999.06 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 191998.13 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 95999.06 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 95999.06 - }, - { - "year": 2025, - "MARS": "widow", - "value": 191998.13 - }, - { - "year": 2026, - "MARS": "single", - "value": 111214.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 185275.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 92638.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 158773.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 185275.0 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3", - "type": "float", - "validators": { - "range": { - "min": "II_brk2", - "max": "II_brk4" - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3", + "description": "Income below this threshold and above tax bracket 2 is taxed at tax rate 3.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Income below this threshold and above tax bracket 2 is taxed at tax rate 3.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[87850.00, 146400.00, 73200.00, 125450.00, 146400.00], + [89350.00, 148850.00, 74425.00, 127550.00, 148850.00], + [90750.00, 151200.00, 75600.00, 129600.00, 151200.00], + [91150.00, 151900.00, 75950.00, 130150.00, 151900.00], + [91900.00, 153100.00, 76550.00, 131200.00, 153100.00], + [82500.0, 165000.0, 82500.0, 82500.0, 165000.0], + [84200.0, 168400.0, 84200.0, 84200.0, 168400.0], + [85766.12, 171532.24, 85766.12, 85766.12, 171532.24], + [87764.47, 175528.94, 87764.47, 87764.47, 175528.94], + [89774.28, 179548.55, 89774.28, 89774.28, 179548.55], + [91821.13, 183642.26, 91821.13, 91821.13, 183642.26], + [93850.38, 187700.75, 93850.38, 93850.38, 187700.75], + [95830.62, 191661.24, 95830.62, 95830.62, 191661.24], + [111214.0, 185275.0, 92638.0, 158773.0, 185275.0]], + "valid_values": {"min": "II_brk2", "max": "II_brk4"}, + "invalid_minmsg": "for II_brk2", + "invalid_maxmsg": "for II_brk4", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_rt4": { - "value": [ - { - "year": 2013, - "value": 0.28 - }, - { - "year": 2014, - "value": 0.28 - }, - { - "year": 2015, - "value": 0.28 - }, - { - "year": 2016, - "value": 0.28 - }, - { - "year": 2017, - "value": 0.28 - }, - { - "year": 2018, - "value": 0.24 - }, - { - "year": 2019, - "value": 0.24 - }, - { - "year": 2020, - "value": 0.24 - }, - { - "year": 2021, - "value": 0.24 - }, - { - "year": 2022, - "value": 0.24 - }, - { - "year": 2023, - "value": 0.24 - }, - { - "year": 2024, - "value": 0.24 - }, - { - "year": 2025, - "value": 0.24 - }, - { - "year": 2026, - "value": 0.28 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 4", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 4", + "description": "The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, - "description": "The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.28, + 0.28, + 0.28, + 0.28, + 0.28, + 0.24, + 0.24, + 0.24, + 0.24, + 0.24, + 0.24, + 0.24, + 0.24, + 0.28], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_brk4": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 183250.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 223050.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 111525.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 203150.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 223050.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 186350.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 226850.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 113425.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 206600.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 226850.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 189300.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 230450.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 115225.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 209850.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 230450.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 190150.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 231450.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 115725.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 210800.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 231450.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 191650.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 233350.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 116675.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 212500.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 233350.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 157500.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 315000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 157500.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 157500.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 315000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 161028.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 322056.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 161028.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 161028.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 322056.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 164023.12 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 328046.24 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 164023.12 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 164023.12 - }, - { - "year": 2020, - "MARS": "widow", - "value": 328046.24 - }, - { - "year": 2021, - "MARS": "single", - "value": 167844.86 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 335689.72 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 167844.86 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 167844.86 - }, - { - "year": 2021, - "MARS": "widow", - "value": 335689.72 - }, - { - "year": 2022, - "MARS": "single", - "value": 171688.51 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 343377.01 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 171688.51 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 171688.51 - }, - { - "year": 2022, - "MARS": "widow", - "value": 343377.01 - }, - { - "year": 2023, - "MARS": "single", - "value": 175603.0 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 351206.01 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 175603.0 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 175603.0 - }, - { - "year": 2023, - "MARS": "widow", - "value": 351206.01 - }, - { - "year": 2024, - "MARS": "single", - "value": 179483.83 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 358967.66 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 179483.83 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 179483.83 - }, - { - "year": 2024, - "MARS": "widow", - "value": 358967.66 - }, - { - "year": 2025, - "MARS": "single", - "value": 183270.94 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 366541.88 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 183270.94 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 183270.94 - }, - { - "year": 2025, - "MARS": "widow", - "value": 366541.88 - }, - { - "year": 2026, - "MARS": "single", - "value": 231927.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 282391.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 141195.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 257159.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 282391.0 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4", - "type": "float", - "validators": { - "range": { - "min": "II_brk3", - "max": "II_brk5" - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4", + "description": "Income below this threshold and above tax bracket 3 is taxed at tax rate 4.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", + "irs_ref": "Form 1040, line 11, instruction (Tax Rate Schedules).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Income below this threshold and above tax bracket 3 is taxed at tax rate 4.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[183250.00, 223050.00, 111525.00, 203150.00, 223050.00], + [186350.00, 226850.00, 113425.00, 206600.00, 226850.00], + [189300.00, 230450.00, 115225.00, 209850.00, 230450.00], + [190150.00, 231450.00, 115725.00, 210800.00, 231450.00], + [191650.00, 233350.00, 116675.00, 212500.00, 233350.00], + [157500.0, 315000.0, 157500.0, 157500.0, 315000.0], + [160725.0, 321450.0, 160725.0, 160700.0, 321450.0], + [163714.48, 327428.97, 163714.48, 163689.02, 327428.97], + [167529.03, 335058.07, 167529.03, 167502.97, 335058.07], + [171365.45, 342730.89, 171365.45, 171338.79, 342730.89], + [175272.58, 350545.16, 175272.58, 175245.32, 350545.16], + [179146.1, 358292.21, 179146.1, 179118.24, 358292.21], + [182926.09, 365852.17, 182926.09, 182897.63, 365852.17], + [231927.0, 282391.0, 141195.0, 257159.0, 282391.0]], + "valid_values": {"min": "II_brk3", "max": "II_brk5"}, + "invalid_minmsg": "for II_brk3", + "invalid_maxmsg": "for II_brk5", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_rt5": { - "value": [ - { - "year": 2013, - "value": 0.33 - }, - { - "year": 2014, - "value": 0.33 - }, - { - "year": 2015, - "value": 0.33 - }, - { - "year": 2016, - "value": 0.33 - }, - { - "year": 2017, - "value": 0.33 - }, - { - "year": 2018, - "value": 0.32 - }, - { - "year": 2019, - "value": 0.32 - }, - { - "year": 2020, - "value": 0.32 - }, - { - "year": 2021, - "value": 0.32 - }, - { - "year": 2022, - "value": 0.32 - }, - { - "year": 2023, - "value": 0.32 - }, - { - "year": 2024, - "value": 0.32 - }, - { - "year": 2025, - "value": 0.32 - }, - { - "year": 2026, - "value": 0.33 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 5", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 5", + "description": "The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, - "description": "The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.33, + 0.33, + 0.33, + 0.33, + 0.33, + 0.32, + 0.32, + 0.32, + 0.32, + 0.32, + 0.32, + 0.32, + 0.32, + 0.33], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_brk5": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 398350.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 398350.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 199175.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 398350.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 398350.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 405100.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 405100.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 202550.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 405100.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 405100.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 411500.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 411500.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 205750.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 411500.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 411500.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 413350.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 413350.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 206675.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 413350.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 413350.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 416700.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 416700.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 208350.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 416700.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 416700.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 204480.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 408960.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 204480.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 204480.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 408960.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 208283.33 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 416566.66 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 208283.33 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 208283.33 - }, - { - "year": 2020, - "MARS": "widow", - "value": 416566.66 - }, - { - "year": 2021, - "MARS": "single", - "value": 213136.33 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 426272.66 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 213136.33 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 213136.33 - }, - { - "year": 2021, - "MARS": "widow", - "value": 426272.66 - }, - { - "year": 2022, - "MARS": "single", - "value": 218017.15 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 436034.3 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 218017.15 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 218017.15 - }, - { - "year": 2022, - "MARS": "widow", - "value": 436034.3 - }, - { - "year": 2023, - "MARS": "single", - "value": 222987.94 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 445975.89 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 222987.94 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 222987.94 - }, - { - "year": 2023, - "MARS": "widow", - "value": 445975.89 - }, - { - "year": 2024, - "MARS": "single", - "value": 227915.98 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 455831.95 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 227915.98 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 227915.98 - }, - { - "year": 2024, - "MARS": "widow", - "value": 455831.95 - }, - { - "year": 2025, - "MARS": "single", - "value": 232725.0 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 465450.01 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 232725.0 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 232725.0 - }, - { - "year": 2025, - "MARS": "widow", - "value": 465450.01 - }, - { - "year": 2026, - "MARS": "single", - "value": 504273.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 504273.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 252137.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 504273.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 504273.0 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5", - "type": "float", - "validators": { - "range": { - "min": "II_brk4", - "max": "II_brk6" - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5", + "description": "Income below this threshold and above tax bracket 4 is taxed at tax rate 5.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Income below this threshold and above tax bracket 4 is taxed at tax rate 5.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[398350.00, 398350.00, 199175.00, 398350.00, 398350.00], + [405100.00, 405100.00, 202550.00, 405100.00, 405100.00], + [411500.00, 411500.00, 205750.00, 411500.00, 411500.00], + [413350.00, 413350.00, 206675.00, 413350.00, 413350.00], + [416700.00, 416700.00, 208350.00, 416700.00, 416700.00], + [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], + [204100.0, 408200.0, 204100.0, 204100.0, 408200.0], + [207896.26, 415792.52, 207896.26, 207896.26, 415792.52], + [212740.24, 425480.49, 212740.24, 212740.24, 425480.49], + [217611.99, 435223.99, 217611.99, 217611.99, 435223.99], + [222573.55, 445147.1, 222573.55, 222573.55, 445147.1], + [227492.42, 454984.85, 227492.42, 227492.42, 454984.85], + [232292.51, 464585.03, 232292.51, 232292.51, 464585.03], + [504273.0, 504273.0, 252137.0, 504273.0, 504273.0]], + "valid_values": {"min": "II_brk4", "max": "II_brk6"}, + "invalid_minmsg": "for II_brk4", + "invalid_maxmsg": "for II_brk6", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_rt6": { - "value": [ - { - "year": 2013, - "value": 0.35 - }, - { - "year": 2014, - "value": 0.35 - }, - { - "year": 2015, - "value": 0.35 - }, - { - "year": 2016, - "value": 0.35 - }, - { - "year": 2017, - "value": 0.35 - }, - { - "year": 2018, - "value": 0.35 - }, - { - "year": 2019, - "value": 0.35 - }, - { - "year": 2020, - "value": 0.35 - }, - { - "year": 2021, - "value": 0.35 - }, - { - "year": 2022, - "value": 0.35 - }, - { - "year": 2023, - "value": 0.35 - }, - { - "year": 2024, - "value": 0.35 - }, - { - "year": 2025, - "value": 0.35 - }, - { - "year": 2026, - "value": 0.35 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 6", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 6", + "description": "The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, - "description": "The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_brk6": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 400000.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 450000.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 225000.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 425000.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 450000.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 406750.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 457600.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 228800.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 432200.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 457600.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 413200.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 464850.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 232425.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 439000.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 464850.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 415050.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 466950.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 233475.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 441000.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 466950.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 418400.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 470700.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 235350.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 444550.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 470700.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 500000.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 600000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 300000.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 500000.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 600000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 511200.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 613440.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 306720.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 511200.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 613440.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 520708.32 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 624849.98 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 312424.99 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 520708.32 - }, - { - "year": 2020, - "MARS": "widow", - "value": 624849.98 - }, - { - "year": 2021, - "MARS": "single", - "value": 532840.82 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 639408.99 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 319704.49 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 532840.82 - }, - { - "year": 2021, - "MARS": "widow", - "value": 639408.99 - }, - { - "year": 2022, - "MARS": "single", - "value": 545042.88 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 654051.45 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 327025.73 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 545042.88 - }, - { - "year": 2022, - "MARS": "widow", - "value": 654051.45 - }, - { - "year": 2023, - "MARS": "single", - "value": 557469.86 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 668963.83 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 334481.91 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 557469.86 - }, - { - "year": 2023, - "MARS": "widow", - "value": 668963.83 - }, - { - "year": 2024, - "MARS": "single", - "value": 569789.94 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 683747.93 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 341873.96 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 569789.94 - }, - { - "year": 2024, - "MARS": "widow", - "value": 683747.93 - }, - { - "year": 2025, - "MARS": "single", - "value": 581812.51 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 698175.01 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 349087.5 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 581812.51 - }, - { - "year": 2025, - "MARS": "widow", - "value": 698175.01 - }, - { - "year": 2026, - "MARS": "single", - "value": 506331.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 569622.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 284811.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 537976.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 569622.0 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 6", - "type": "float", - "validators": { - "range": { - "min": "II_brk5", - "max": "II_brk7" - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket 6", + "description": "Income below this threshold and above tax bracket 5 is taxed at tax rate 6.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Income below this threshold and above tax bracket 5 is taxed at tax rate 6.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[400000.00, 450000.00, 225000.00, 425000.00, 450000.00], + [406750.00, 457600.00, 228800.00, 432200.00, 457600.00], + [413200.00, 464850.00, 232425.00, 439000.00, 464850.00], + [415050.00, 466950.00, 233475.00, 441000.00, 466950.00], + [418400.00, 470700.00, 235350.00, 444550.00, 470700.00], + [500000.0, 600000.0, 300000.0, 500000.0, 600000.0], + [510300.0, 612350.0, 306175.0, 510300.0, 612350.0], + [519791.58, 623739.71, 311869.86, 519791.58, 623739.71], + [531902.72, 638272.85, 319136.42, 531902.72, 638272.85], + [544083.3, 652889.29, 326444.65, 544083.3, 652889.29], + [556488.4, 667775.17, 333887.58, 556488.4, 667775.17], + [568786.79, 682533.0, 341266.5, 568786.79, 682533.0], + [580788.19, 696934.45, 348467.22, 580788.19, 696934.45], + [506331.0, 569622.0, 284811.0, 537976.0, 569622.0]], + "valid_values": {"min": "II_brk5", "max": "II_brk7"}, + "invalid_minmsg": "for II_brk5", + "invalid_maxmsg": "for II_brk7", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_rt7": { - "value": [ - { - "year": 2013, - "value": 0.396 - }, - { - "year": 2014, - "value": 0.396 - }, - { - "year": 2015, - "value": 0.396 - }, - { - "year": 2016, - "value": 0.396 - }, - { - "year": 2017, - "value": 0.396 - }, - { - "year": 2018, - "value": 0.37 - }, - { - "year": 2019, - "value": 0.37 - }, - { - "year": 2020, - "value": 0.37 - }, - { - "year": 2021, - "value": 0.37 - }, - { - "year": 2022, - "value": 0.37 - }, - { - "year": 2023, - "value": 0.37 - }, - { - "year": 2024, - "value": 0.37 - }, - { - "year": 2025, - "value": 0.37 - }, - { - "year": 2026, - "value": 0.396 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 7", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 7", + "description": "The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, - "description": "The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.396, + 0.396, + 0.396, + 0.396, + 0.396, + 0.37, + 0.37, + 0.37, + 0.37, + 0.37, + 0.37, + 0.37, + 0.37, + 0.396], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_brk7": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 7", - "type": "float", - "validators": { - "range": { - "min": "II_brk6", - "max": 9e+99 - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket 7", + "description": "Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": "II_brk6", "max": 9e99}, + "invalid_minmsg": "for II_brk6", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "II_rt8": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 8", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 8", + "description": "The tax rate applied to the portion of taxable income above tax bracket 7.", "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, - "description": "The tax rate applied to the portion of taxable income above tax bracket 7.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [1.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_rt1": { - "value": [ - { - "year": 2013, - "value": 0.1 - }, - { - "year": 2014, - "value": 0.1 - }, - { - "year": 2015, - "value": 0.1 - }, - { - "year": 2016, - "value": 0.1 - }, - { - "year": 2017, - "value": 0.1 - }, - { - "year": 2018, - "value": 0.1 - }, - { - "year": 2019, - "value": 0.1 - }, - { - "year": 2020, - "value": 0.1 - }, - { - "year": 2021, - "value": 0.1 - }, - { - "year": 2022, - "value": 0.1 - }, - { - "year": 2023, - "value": 0.1 - }, - { - "year": 2024, - "value": 0.1 - }, - { - "year": 2025, - "value": 0.1 - }, - { - "year": 2026, - "value": 0.1 - } - ], - "title": "Pass-through income tax rate 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Pass-through income tax rate 1", + "description": "The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10, + 0.10], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_brk1": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 8925.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 17850.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 8925.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 12750.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 17850.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 9075.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 18150.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9075.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 12950.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 18150.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 9225.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 18450.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9225.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 13150.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 18450.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 9275.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 18550.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9275.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 13250.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 18550.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 9325.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 18650.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9325.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 13350.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 18650.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 9525.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 19050.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9525.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 13600.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 19050.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 9738.36 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 19476.72 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 9738.36 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 13904.64 - }, - { - "year": 2019, - "MARS": "widow", - "value": 19476.72 - }, - { - "year": 2020, - "MARS": "single", - "value": 9919.49 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 19838.99 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 9919.49 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 14163.27 - }, - { - "year": 2020, - "MARS": "widow", - "value": 19838.99 - }, - { - "year": 2021, - "MARS": "single", - "value": 10150.62 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 20301.24 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 10150.62 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 14493.27 - }, - { - "year": 2021, - "MARS": "widow", - "value": 20301.24 - }, - { - "year": 2022, - "MARS": "single", - "value": 10383.07 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 20766.13 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 10383.07 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 14825.17 - }, - { - "year": 2022, - "MARS": "widow", - "value": 20766.13 - }, - { - "year": 2023, - "MARS": "single", - "value": 10619.8 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 21239.6 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 10619.8 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 15163.18 - }, - { - "year": 2023, - "MARS": "widow", - "value": 21239.6 - }, - { - "year": 2024, - "MARS": "single", - "value": 10854.5 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 21709.0 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 10854.5 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 15498.29 - }, - { - "year": 2024, - "MARS": "widow", - "value": 21709.0 - }, - { - "year": 2025, - "MARS": "single", - "value": 11083.53 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 22167.06 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 11083.53 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 15825.3 - }, - { - "year": 2025, - "MARS": "widow", - "value": 22167.06 - }, - { - "year": 2026, - "MARS": "single", - "value": 11285.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 22569.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 11285.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 16156.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 22569.0 - } - ], - "title": "Pass-through income tax bracket (upper threshold) 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": "PT_brk2" - } - }, + "long_name": "Pass-through income tax bracket (upper threshold) 1", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.", "section_1": "Personal Income", "section_2": "Pass-Through", + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[8925.00, 17850.00, 8925.00, 12750.00, 17850.00], + [9075.00, 18150.00, 9075.00, 12950.00, 18150.00], + [9225.00, 18450.00, 9225.00, 13150.00, 18450.00], + [9275.00, 18550.00, 9275.00, 13250.00, 18550.00], + [9325.00, 18650.00, 9325.00, 13350.00, 18650.00], + [9525.0, 19050.0, 9525.0, 13600.0, 19050.0], + [9700.0, 19400.0, 9700.0, 13850.0, 19400.0], + [9880.42, 19760.84, 9880.42, 14107.61, 19760.84], + [10110.63, 20221.27, 10110.63, 14436.32, 20221.27], + [10342.17, 20684.33, 10342.17, 14766.91, 20684.33], + [10577.97, 21155.94, 10577.97, 15103.59, 21155.94], + [10811.74, 21623.48, 10811.74, 15437.38, 21623.48], + [11039.87, 22079.74, 11039.87, 15763.11, 22079.74], + [11285.0, 22569.0, 11285.0, 16156.0, 22569.0]], + "valid_values": {"min": 0, "max": "PT_brk2"}, + "invalid_minmsg": "", + "invalid_maxmsg": "for PT_brk2", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_rt2": { - "value": [ - { - "year": 2013, - "value": 0.15 - }, - { - "year": 2014, - "value": 0.15 - }, - { - "year": 2015, - "value": 0.15 - }, - { - "year": 2016, - "value": 0.15 - }, - { - "year": 2017, - "value": 0.15 - }, - { - "year": 2018, - "value": 0.12 - }, - { - "year": 2019, - "value": 0.12 - }, - { - "year": 2020, - "value": 0.12 - }, - { - "year": 2021, - "value": 0.12 - }, - { - "year": 2022, - "value": 0.12 - }, - { - "year": 2023, - "value": 0.12 - }, - { - "year": 2024, - "value": 0.12 - }, - { - "year": 2025, - "value": 0.12 - }, - { - "year": 2026, - "value": 0.15 - } - ], - "title": "Pass-through income tax rate 2", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Pass-through income tax rate 2", + "description": "The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.15, + 0.15, + 0.15, + 0.15, + 0.15, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.15], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_brk2": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 36250.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 72500.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 36250.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 48600.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 72500.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 36900.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 73800.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 36900.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 49400.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 73800.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 37450.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 74900.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 37450.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 50200.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 74900.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 37650.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 75300.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 37650.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 50400.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 75300.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 37950.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 75900.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 37950.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 50800.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 75900.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 38700.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 77400.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 38700.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 51800.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 77400.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 39566.88 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 79133.76 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 39566.88 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 52960.32 - }, - { - "year": 2019, - "MARS": "widow", - "value": 79133.76 - }, - { - "year": 2020, - "MARS": "single", - "value": 40302.82 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 80605.65 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 40302.82 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 53945.38 - }, - { - "year": 2020, - "MARS": "widow", - "value": 80605.65 - }, - { - "year": 2021, - "MARS": "single", - "value": 41241.88 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 82483.76 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 41241.88 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 55202.31 - }, - { - "year": 2021, - "MARS": "widow", - "value": 82483.76 - }, - { - "year": 2022, - "MARS": "single", - "value": 42186.32 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 84372.64 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 42186.32 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 56466.44 - }, - { - "year": 2022, - "MARS": "widow", - "value": 84372.64 - }, - { - "year": 2023, - "MARS": "single", - "value": 43148.17 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 86296.33 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 43148.17 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 57753.88 - }, - { - "year": 2023, - "MARS": "widow", - "value": 86296.33 - }, - { - "year": 2024, - "MARS": "single", - "value": 44101.74 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 88203.48 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 44101.74 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 59030.24 - }, - { - "year": 2024, - "MARS": "widow", - "value": 88203.48 - }, - { - "year": 2025, - "MARS": "single", - "value": 45032.29 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 90064.58 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 45032.29 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 60275.78 - }, - { - "year": 2025, - "MARS": "widow", - "value": 90064.58 - }, - { - "year": 2026, - "MARS": "single", - "value": 45926.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 91851.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 45926.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 61476.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 91851.0 - } - ], - "title": "Pass-through income tax bracket (upper threshold) 2", - "type": "float", - "validators": { - "range": { - "min": "PT_brk1", - "max": "PT_brk3" - } - }, + "long_name": "Pass-through income tax bracket (upper threshold) 2", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.", "section_1": "Personal Income", "section_2": "Pass-Through", + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[36250.00, 72500.00, 36250.00, 48600.00, 72500.00], + [36900.00, 73800.00, 36900.00, 49400.00, 73800.00], + [37450.00, 74900.00, 37450.00, 50200.00, 74900.00], + [37650.00, 75300.00, 37650.00, 50400.00, 75300.00], + [37950.00, 75900.00, 37950.00, 50800.00, 75900.00], + [38700.0, 77400.0, 38700.0, 51800.0, 77400.0], + [39475.0, 78950.0, 39475.0, 52850.0, 78950.0], + [40209.24, 80418.47, 40209.24, 53833.01, 80418.47], + [41146.11, 82292.22, 41146.11, 55087.32, 82292.22], + [42088.36, 84176.71, 42088.36, 56348.82, 84176.71], + [43047.97, 86095.94, 43047.97, 57633.57, 86095.94], + [43999.33, 87998.66, 43999.33, 58907.27, 87998.66], + [44927.72, 89855.43, 44927.72, 60150.22, 89855.43], + [45926.0, 91851.0, 45926.0, 61476.0, 91851.0]], + "valid_values": {"min": "PT_brk1", "max": "PT_brk3"}, + "invalid_minmsg": "for PT_brk1", + "invalid_maxmsg": "for PT_brk3", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_rt3": { - "value": [ - { - "year": 2013, - "value": 0.25 - }, - { - "year": 2014, - "value": 0.25 - }, - { - "year": 2015, - "value": 0.25 - }, - { - "year": 2016, - "value": 0.25 - }, - { - "year": 2017, - "value": 0.25 - }, - { - "year": 2018, - "value": 0.22 - }, - { - "year": 2019, - "value": 0.22 - }, - { - "year": 2020, - "value": 0.22 - }, - { - "year": 2021, - "value": 0.22 - }, - { - "year": 2022, - "value": 0.22 - }, - { - "year": 2023, - "value": 0.22 - }, - { - "year": 2024, - "value": 0.22 - }, - { - "year": 2025, - "value": 0.22 - }, - { - "year": 2026, - "value": 0.25 - } - ], - "title": "Pass-through income tax rate 3", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Pass-through income tax rate 3", + "description": "The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.22, + 0.22, + 0.22, + 0.22, + 0.22, + 0.22, + 0.22, + 0.22, + 0.25], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_brk3": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 87850.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 146400.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 73200.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 125450.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 146400.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 89350.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 148850.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 74425.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 127550.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 148850.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 90750.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 151200.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 75600.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 129600.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 151200.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 91150.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 151900.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 75950.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 130150.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 151900.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 91900.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 153100.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 76550.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 131200.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 153100.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 82500.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 165000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 82500.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 82500.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 165000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 84348.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 168696.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 84348.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 84348.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 168696.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 85916.87 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 171833.75 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 85916.87 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 85916.87 - }, - { - "year": 2020, - "MARS": "widow", - "value": 171833.75 - }, - { - "year": 2021, - "MARS": "single", - "value": 87918.74 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 175837.47 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 87918.74 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 87918.74 - }, - { - "year": 2021, - "MARS": "widow", - "value": 175837.47 - }, - { - "year": 2022, - "MARS": "single", - "value": 89932.07 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 179864.15 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 89932.07 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 89932.07 - }, - { - "year": 2022, - "MARS": "widow", - "value": 179864.15 - }, - { - "year": 2023, - "MARS": "single", - "value": 91982.53 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 183965.05 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 91982.53 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 91982.53 - }, - { - "year": 2023, - "MARS": "widow", - "value": 183965.05 - }, - { - "year": 2024, - "MARS": "single", - "value": 94015.34 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 188030.68 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 94015.34 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 94015.34 - }, - { - "year": 2024, - "MARS": "widow", - "value": 188030.68 - }, - { - "year": 2025, - "MARS": "single", - "value": 95999.06 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 191998.13 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 95999.06 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 95999.06 - }, - { - "year": 2025, - "MARS": "widow", - "value": 191998.13 - }, - { - "year": 2026, - "MARS": "single", - "value": 111214.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 185275.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 92638.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 158773.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 185275.0 - } - ], - "title": "Pass-through income tax bracket (upper threshold) 3", - "type": "float", - "validators": { - "range": { - "min": "PT_brk2", - "max": "PT_brk4" - } - }, + "long_name": "Pass-through income tax bracket (upper threshold) 3", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.", "section_1": "Personal Income", "section_2": "Pass-Through", + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[87850.00, 146400.00, 73200.00, 125450.00, 146400.00], + [89350.00, 148850.00, 74425.00, 127550.00, 148850.00], + [90750.00, 151200.00, 75600.00, 129600.00, 151200.00], + [91150.00, 151900.00, 75950.00, 130150.00, 151900.00], + [91900.00, 153100.00, 76550.00, 131200.00, 153100.00], + [82500.0, 165000.0, 82500.0, 82500.0, 165000.0], + [84200.0, 168400.0, 84200.0, 84200.0, 168400.0], + [85766.12, 171532.24, 85766.12, 85766.12, 171532.24], + [87764.47, 175528.94, 87764.47, 87764.47, 175528.94], + [89774.28, 179548.55, 89774.28, 89774.28, 179548.55], + [91821.13, 183642.26, 91821.13, 91821.13, 183642.26], + [93850.38, 187700.75, 93850.38, 93850.38, 187700.75], + [95830.62, 191661.24, 95830.62, 95830.62, 191661.24], + [111214.0, 185275.0, 92638.0, 158773.0, 185275.0]], + "valid_values": {"min": "PT_brk2", "max": "PT_brk4"}, + "invalid_minmsg": "for PT_brk2", + "invalid_maxmsg": "for PT_brk4", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_rt4": { - "value": [ - { - "year": 2013, - "value": 0.28 - }, - { - "year": 2014, - "value": 0.28 - }, - { - "year": 2015, - "value": 0.28 - }, - { - "year": 2016, - "value": 0.28 - }, - { - "year": 2017, - "value": 0.28 - }, - { - "year": 2018, - "value": 0.24 - }, - { - "year": 2019, - "value": 0.24 - }, - { - "year": 2020, - "value": 0.24 - }, - { - "year": 2021, - "value": 0.24 - }, - { - "year": 2022, - "value": 0.24 - }, - { - "year": 2023, - "value": 0.24 - }, - { - "year": 2024, - "value": 0.24 - }, - { - "year": 2025, - "value": 0.24 - }, - { - "year": 2026, - "value": 0.28 - } - ], - "title": "Pass-through income tax rate 4", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Pass-through income tax rate 4", + "description": "The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.28, + 0.28, + 0.28, + 0.28, + 0.28, + 0.24, + 0.24, + 0.24, + 0.24, + 0.24, + 0.24, + 0.24, + 0.24, + 0.28], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_brk4": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 183250.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 223050.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 111525.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 203150.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 223050.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 186350.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 226850.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 113425.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 206600.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 226850.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 189300.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 230450.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 115225.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 209850.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 230450.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 190150.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 231450.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 115725.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 210800.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 231450.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 191650.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 233350.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 116675.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 212500.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 233350.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 157500.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 315000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 157500.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 157500.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 315000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 161028.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 322056.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 161028.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 161028.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 322056.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 164023.12 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 328046.24 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 164023.12 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 164023.12 - }, - { - "year": 2020, - "MARS": "widow", - "value": 328046.24 - }, - { - "year": 2021, - "MARS": "single", - "value": 167844.86 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 335689.72 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 167844.86 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 167844.86 - }, - { - "year": 2021, - "MARS": "widow", - "value": 335689.72 - }, - { - "year": 2022, - "MARS": "single", - "value": 171688.51 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 343377.01 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 171688.51 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 171688.51 - }, - { - "year": 2022, - "MARS": "widow", - "value": 343377.01 - }, - { - "year": 2023, - "MARS": "single", - "value": 175603.0 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 351206.01 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 175603.0 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 175603.0 - }, - { - "year": 2023, - "MARS": "widow", - "value": 351206.01 - }, - { - "year": 2024, - "MARS": "single", - "value": 179483.83 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 358967.66 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 179483.83 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 179483.83 - }, - { - "year": 2024, - "MARS": "widow", - "value": 358967.66 - }, - { - "year": 2025, - "MARS": "single", - "value": 183270.94 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 366541.88 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 183270.94 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 183270.94 - }, - { - "year": 2025, - "MARS": "widow", - "value": 366541.88 - }, - { - "year": 2026, - "MARS": "single", - "value": 231927.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 282391.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 141195.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 257159.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 282391.0 - } - ], - "title": "Pass-through income tax bracket (upper threshold) 4", - "type": "float", - "validators": { - "range": { - "min": "PT_brk3", - "max": "PT_brk5" - } - }, + "long_name": "Pass-through income tax bracket (upper threshold) 4", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.", "section_1": "Personal Income", "section_2": "Pass-Through", + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[183250.00, 223050.00, 111525.00, 203150.00, 223050.00], + [186350.00, 226850.00, 113425.00, 206600.00, 226850.00], + [189300.00, 230450.00, 115225.00, 209850.00, 230450.00], + [190150.00, 231450.00, 115725.00, 210800.00, 231450.00], + [191650.00, 233350.00, 116675.00, 212500.00, 233350.00], + [157500.0, 315000.0, 157500.0, 157500.0, 315000.0], + [160725.0, 321450.0, 160725.0, 160700.0, 321450.0], + [163714.48, 327428.97, 163714.48, 163689.02, 327428.97], + [167529.03, 335058.07, 167529.03, 167502.97, 335058.07], + [171365.45, 342730.89, 171365.45, 171338.79, 342730.89], + [175272.58, 350545.16, 175272.58, 175245.32, 350545.16], + [179146.1, 358292.21, 179146.1, 179118.24, 358292.21], + [182926.09, 365852.17, 182926.09, 182897.63, 365852.17], + [231927.0, 282391.0, 141195.0, 257159.0, 282391.0]], + "valid_values": {"min": "PT_brk3", "max": "PT_brk5"}, + "invalid_minmsg": "for PT_brk3", + "invalid_maxmsg": "for PT_brk5", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_rt5": { - "value": [ - { - "year": 2013, - "value": 0.33 - }, - { - "year": 2014, - "value": 0.33 - }, - { - "year": 2015, - "value": 0.33 - }, - { - "year": 2016, - "value": 0.33 - }, - { - "year": 2017, - "value": 0.33 - }, - { - "year": 2018, - "value": 0.32 - }, - { - "year": 2019, - "value": 0.32 - }, - { - "year": 2020, - "value": 0.32 - }, - { - "year": 2021, - "value": 0.32 - }, - { - "year": 2022, - "value": 0.32 - }, - { - "year": 2023, - "value": 0.32 - }, - { - "year": 2024, - "value": 0.32 - }, - { - "year": 2025, - "value": 0.32 - }, - { - "year": 2026, - "value": 0.33 - } - ], - "title": "Pass-through income tax rate 5", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Pass-through income tax rate 5", + "description": "The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.33, + 0.33, + 0.33, + 0.33, + 0.33, + 0.32, + 0.32, + 0.32, + 0.32, + 0.32, + 0.32, + 0.32, + 0.32, + 0.33], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_brk5": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 398350.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 398350.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 199175.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 398350.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 398350.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 405100.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 405100.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 202550.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 405100.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 405100.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 411500.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 411500.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 205750.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 411500.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 411500.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 413350.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 413350.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 206675.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 413350.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 413350.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 416700.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 416700.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 208350.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 416700.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 416700.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 204480.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 408960.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 204480.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 204480.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 408960.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 208283.33 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 416566.66 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 208283.33 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 208283.33 - }, - { - "year": 2020, - "MARS": "widow", - "value": 416566.66 - }, - { - "year": 2021, - "MARS": "single", - "value": 213136.33 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 426272.66 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 213136.33 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 213136.33 - }, - { - "year": 2021, - "MARS": "widow", - "value": 426272.66 - }, - { - "year": 2022, - "MARS": "single", - "value": 218017.15 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 436034.3 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 218017.15 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 218017.15 - }, - { - "year": 2022, - "MARS": "widow", - "value": 436034.3 - }, - { - "year": 2023, - "MARS": "single", - "value": 222987.94 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 445975.89 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 222987.94 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 222987.94 - }, - { - "year": 2023, - "MARS": "widow", - "value": 445975.89 - }, - { - "year": 2024, - "MARS": "single", - "value": 227915.98 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 455831.95 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 227915.98 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 227915.98 - }, - { - "year": 2024, - "MARS": "widow", - "value": 455831.95 - }, - { - "year": 2025, - "MARS": "single", - "value": 232725.0 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 465450.01 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 232725.0 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 232725.0 - }, - { - "year": 2025, - "MARS": "widow", - "value": 465450.01 - }, - { - "year": 2026, - "MARS": "single", - "value": 504273.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 504273.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 252137.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 504273.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 504273.0 - } - ], - "title": "Pass-through income tax bracket (upper threshold) 5", - "type": "float", - "validators": { - "range": { - "min": "PT_brk4", - "max": "PT_brk6" - } - }, + "long_name": "Pass-through income tax bracket (upper threshold) 5", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.", "section_1": "Personal Income", "section_2": "Pass-Through", + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[398350.00, 398350.00, 199175.00, 398350.00, 398350.00], + [405100.00, 405100.00, 202550.00, 405100.00, 405100.00], + [411500.00, 411500.00, 205750.00, 411500.00, 411500.00], + [413350.00, 413350.00, 206675.00, 413350.00, 413350.00], + [416700.00, 416700.00, 208350.00, 416700.00, 416700.00], + [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], + [204100.0, 408200.0, 204100.0, 204100.0, 408200.0], + [207896.26, 415792.52, 207896.26, 207896.26, 415792.52], + [212740.24, 425480.49, 212740.24, 212740.24, 425480.49], + [217611.99, 435223.99, 217611.99, 217611.99, 435223.99], + [222573.55, 445147.1, 222573.55, 222573.55, 445147.1], + [227492.42, 454984.85, 227492.42, 227492.42, 454984.85], + [232292.51, 464585.03, 232292.51, 232292.51, 464585.03], + [504273.0, 504273.0, 252137.0, 504273.0, 504273.0]], + "valid_values": {"min": "PT_brk4", "max": "PT_brk6"}, + "invalid_minmsg": "for PT_brk4", + "invalid_maxmsg": "for PT_brk6", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_rt6": { - "value": [ - { - "year": 2013, - "value": 0.35 - }, - { - "year": 2014, - "value": 0.35 - }, - { - "year": 2015, - "value": 0.35 - }, - { - "year": 2016, - "value": 0.35 - }, - { - "year": 2017, - "value": 0.35 - }, - { - "year": 2018, - "value": 0.35 - }, - { - "year": 2019, - "value": 0.35 - }, - { - "year": 2020, - "value": 0.35 - }, - { - "year": 2021, - "value": 0.35 - }, - { - "year": 2022, - "value": 0.35 - }, - { - "year": 2023, - "value": 0.35 - }, - { - "year": 2024, - "value": 0.35 - }, - { - "year": 2025, - "value": 0.35 - }, - { - "year": 2026, - "value": 0.35 - } - ], - "title": "Pass-through income tax rate 6", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Pass-through income tax rate 6", + "description": "The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35, + 0.35], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_brk6": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 400000.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 450000.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 225000.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 425000.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 450000.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 406750.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 457600.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 228800.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 432200.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 457600.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 413200.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 464850.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 232425.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 439000.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 464850.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 415050.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 466950.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 233475.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 441000.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 466950.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 418400.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 470700.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 235350.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 444550.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 470700.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 500000.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 600000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 300000.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 500000.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 600000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 511200.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 613440.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 306720.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 511200.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 613440.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 520708.32 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 624849.98 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 312424.99 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 520708.32 - }, - { - "year": 2020, - "MARS": "widow", - "value": 624849.98 - }, - { - "year": 2021, - "MARS": "single", - "value": 532840.82 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 639408.99 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 319704.49 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 532840.82 - }, - { - "year": 2021, - "MARS": "widow", - "value": 639408.99 - }, - { - "year": 2022, - "MARS": "single", - "value": 545042.88 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 654051.45 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 327025.73 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 545042.88 - }, - { - "year": 2022, - "MARS": "widow", - "value": 654051.45 - }, - { - "year": 2023, - "MARS": "single", - "value": 557469.86 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 668963.83 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 334481.91 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 557469.86 - }, - { - "year": 2023, - "MARS": "widow", - "value": 668963.83 - }, - { - "year": 2024, - "MARS": "single", - "value": 569789.94 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 683747.93 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 341873.96 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 569789.94 - }, - { - "year": 2024, - "MARS": "widow", - "value": 683747.93 - }, - { - "year": 2025, - "MARS": "single", - "value": 581812.51 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 698175.01 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 349087.5 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 581812.51 - }, - { - "year": 2025, - "MARS": "widow", - "value": 698175.01 - }, - { - "year": 2026, - "MARS": "single", - "value": 506331.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 569622.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 284811.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 537976.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 569622.0 - } - ], - "title": "Pass-through income tax bracket (upper threshold) 6", - "type": "float", - "validators": { - "range": { - "min": "PT_brk5", - "max": "PT_brk7" - } - }, + "long_name": "Pass-through income tax bracket (upper threshold) 6", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.", "section_1": "Personal Income", "section_2": "Pass-Through", + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[400000.00, 450000.00, 225000.00, 425000.00, 450000.00], + [406750.00, 457600.00, 228800.00, 432200.00, 457600.00], + [413200.00, 464850.00, 232425.00, 439000.00, 464850.00], + [415050.00, 466950.00, 233475.00, 441000.00, 466950.00], + [418400.00, 470700.00, 235350.00, 444550.00, 470700.00], + [500000.0, 600000.0, 300000.0, 500000.0, 600000.0], + [510300.0, 612350.0, 306175.0, 510300.0, 612350.0], + [519791.58, 623739.71, 311869.86, 519791.58, 623739.71], + [531902.72, 638272.85, 319136.42, 531902.72, 638272.85], + [544083.3, 652889.29, 326444.65, 544083.3, 652889.29], + [556488.4, 667775.17, 333887.58, 556488.4, 667775.17], + [568786.79, 682533.0, 341266.5, 568786.79, 682533.0], + [580788.19, 696934.45, 348467.22, 580788.19, 696934.45], + [506331.0, 569622.0, 284811.0, 537976.0, 569622.0]], + "valid_values": {"min": "PT_brk5", "max": "PT_brk7"}, + "invalid_minmsg": "for PT_brk5", + "invalid_maxmsg": "for PT_brk7", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_rt7": { - "value": [ - { - "year": 2013, - "value": 0.396 - }, - { - "year": 2014, - "value": 0.396 - }, - { - "year": 2015, - "value": 0.396 - }, - { - "year": 2016, - "value": 0.396 - }, - { - "year": 2017, - "value": 0.396 - }, - { - "year": 2018, - "value": 0.37 - }, - { - "year": 2019, - "value": 0.37 - }, - { - "year": 2020, - "value": 0.37 - }, - { - "year": 2021, - "value": 0.37 - }, - { - "year": 2022, - "value": 0.37 - }, - { - "year": 2023, - "value": 0.37 - }, - { - "year": 2024, - "value": 0.37 - }, - { - "year": 2025, - "value": 0.37 - }, - { - "year": 2026, - "value": 0.396 - } - ], - "title": "Pass-through income tax rate 7", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Pass-through income tax rate 7", + "description": "The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.", - "notes": "" - }, + "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.396, + 0.396, + 0.396, + 0.396, + 0.396, + 0.37, + 0.37, + 0.37, + 0.37, + 0.37, + 0.37, + 0.37, + 0.37, + 0.396], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_brk7": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Extra pass-through income tax bracket", - "type": "float", - "validators": { - "range": { - "min": "PT_brk6", - "max": 9e+99 - } - }, + "long_name": "Extra pass-through income tax bracket", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 6 is taxed at tax rate 7. Default value is essentially infinity.", "section_1": "Personal Income", "section_2": "Pass-Through", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 6 is taxed at tax rate 7. Default value is essentially infinity.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": "PT_brk6", "max": 9e99}, + "invalid_minmsg": "for PT_brk6", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_rt8": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Extra pass-through income tax rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Extra pass-through income tax rate", + "description": "The extra tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations above the tax bracket 7.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "The extra tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations above the tax bracket 7.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [1.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_EligibleRate_active": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Share of active business income eligible for PT rate schedule", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Share of active business income eligible for PT rate schedule", + "description": "Eligibility rate of active business income for separate pass-through rates.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "Eligibility rate of active business income for separate pass-through rates.", - "notes": "Active business income defined as e00900 + e26270" - }, + "irs_ref": "", + "notes": "Active business income defined as e00900 + e26270", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [1.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_EligibleRate_passive": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Share of passive business income eligible for PT rate schedule", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Share of passive business income eligible for PT rate schedule", + "description": "Eligibility rate of passive business income for mseparate pass-through rates.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "Eligibility rate of passive business income for mseparate pass-through rates.", - "notes": "Passive business income defined as e02000 - e26270" - }, + "irs_ref": "", + "notes": "Passive business income defined as e02000 - e26270", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "PT_wages_active_income": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Wages included in (positive) active business income eligible for PT rates", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Wages included in (positive) active business income eligible for PT rates", + "description": "Whether active business income eligibility base for PT schedule for includes wages.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "Whether active business income eligibility base for PT schedule for includes wages.", - "notes": "Only applies if active business income is positive" - }, + "irs_ref": "", + "notes": "Only applies if active business income is positive", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": false, "cps": false} + }, + "PT_top_stacking": { - "value": [ - { - "year": 2013, - "value": true - } - ], - "title": "PT taxable income stacked on top of regular taxable income", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "PT taxable income stacked on top of regular taxable income", + "description": "Whether taxable income eligible for PT rate schedule is stacked on top of regular taxable income.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "Whether taxable income eligible for PT rate schedule is stacked on top of regular taxable income.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [true], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_qbid_rt": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.2 - }, - { - "year": 2019, - "value": 0.2 - }, - { - "year": 2020, - "value": 0.2 - }, - { - "year": 2021, - "value": 0.2 - }, - { - "year": 2022, - "value": 0.2 - }, - { - "year": 2023, - "value": 0.2 - }, - { - "year": 2024, - "value": 0.2 - }, - { - "year": 2025, - "value": 0.2 - }, - { - "year": 2026, - "value": 0.0 - } - ], - "title": "Pass-through qualified business income deduction rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Pass-through qualified business income deduction rate", + "description": "Fraction of pass-through business income that may be excluded from taxable income.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "Fraction of pass-through business income that may be excluded from taxable income.", - "notes": "Applies to e00900 + e26270" - }, + "irs_ref": "Form 8995-A", + "notes": "Applies to e00900 + e26270", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_qbid_taxinc_thd": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 157500.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 315000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 157500.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 157500.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 315000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 161028.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 322056.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 161028.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 161028.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 322056.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 164023.12 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 328046.24 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 164023.12 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 164023.12 - }, - { - "year": 2020, - "MARS": "widow", - "value": 328046.24 - }, - { - "year": 2021, - "MARS": "single", - "value": 167844.86 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 335689.72 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 167844.86 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 167844.86 - }, - { - "year": 2021, - "MARS": "widow", - "value": 335689.72 - }, - { - "year": 2022, - "MARS": "single", - "value": 171688.51 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 343377.01 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 171688.51 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 171688.51 - }, - { - "year": 2022, - "MARS": "widow", - "value": 343377.01 - }, - { - "year": 2023, - "MARS": "single", - "value": 175603.0 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 351206.01 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 175603.0 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 175603.0 - }, - { - "year": 2023, - "MARS": "widow", - "value": 351206.01 - }, - { - "year": 2024, - "MARS": "single", - "value": 179483.83 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 358967.66 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 179483.83 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 179483.83 - }, - { - "year": 2024, - "MARS": "widow", - "value": 358967.66 - }, - { - "year": 2025, - "MARS": "single", - "value": 183270.94 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 366541.88 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 183270.94 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 183270.94 - }, - { - "year": 2025, - "MARS": "widow", - "value": 366541.88 - }, - { - "year": 2026, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 0.0 - } - ], - "title": "Lower threshold of pre-QBID taxable income", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Lower threshold of pre-QBID taxable income", + "description": "Pre-QBID taxable income above this lower threshold implies the QBID amount begins to be limited.", "section_1": "Personal Income", "section_2": "Pass-Through", + "irs_ref": "Form 8995-A, Line 3, in-line", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "Pre-QBID taxable income above this lower threshold implies the QBID amount begins to be limited.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [157500.0, 315000.0, 157500.0, 157500.0, 315000.0], + [160700.0, 321400.0, 160725.0, 160700.0, 321400.0], + [163689.02, 327378.04, 163714.48, 163689.02, 327378.04], + [167502.97, 335005.95, 167529.03, 167502.97, 335005.95], + [171338.79, 342677.58, 171365.45, 171338.79, 342677.58], + [175245.32, 350490.63, 175272.58, 175245.32, 350490.63], + [179118.24, 358236.48, 179146.1, 179118.24, 358236.48], + [182897.63, 365795.27, 182926.09, 182897.63, 365795.27], + [0.0, 0.0, 0.0, 0.0, 0.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_qbid_taxinc_gap": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 1.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 1.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 1.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 1.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 1.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 1.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 1.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 1.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 1.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 1.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 1.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 1.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 1.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 1.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 1.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 1.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 1.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 1.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 1.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 1.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 1.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 1.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 1.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 1.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 1.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 100000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 100000.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2020, - "MARS": "widow", - "value": 100000.0 - }, - { - "year": 2021, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2021, - "MARS": "widow", - "value": 100000.0 - }, - { - "year": 2022, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2022, - "MARS": "widow", - "value": 100000.0 - }, - { - "year": 2023, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2023, - "MARS": "widow", - "value": 100000.0 - }, - { - "year": 2024, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2024, - "MARS": "widow", - "value": 100000.0 - }, - { - "year": 2025, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2025, - "MARS": "widow", - "value": 100000.0 - }, - { - "year": 2026, - "MARS": "single", - "value": 1.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 1.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 1.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 1.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 1.0 - } - ], - "title": "Dollar gap between upper and lower threshold of pre-QBID taxable income", - "type": "float", - "validators": { - "range": { - "min": 1, - "max": 9e+99 - } - }, + "long_name": "Dollar gap between upper and lower threshold of pre-QBID taxable income", + "description": "Pre-QBID taxable income above this upper threshold implies the QBID amount is even more limited.", "section_1": "Personal Income", "section_2": "Pass-Through", + "irs_ref": "Form 8995-A", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": false, - "description": "Pre-QBID taxable income above this upper threshold implies the QBID amount is even more limited.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[1.0, 1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0, 1.0], + [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], + [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], + [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], + [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], + [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], + [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], + [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], + [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], + [1.0, 1.0, 1.0, 1.0, 1.0]], + "valid_values": {"min": 1, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "PT_qbid_w2_wages_rt": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.5 - }, - { - "year": 2019, - "value": 0.5 - }, - { - "year": 2020, - "value": 0.5 - }, - { - "year": 2021, - "value": 0.5 - }, - { - "year": 2022, - "value": 0.5 - }, - { - "year": 2023, - "value": 0.5 - }, - { - "year": 2024, - "value": 0.5 - }, - { - "year": 2025, - "value": 0.5 - }, - { - "year": 2026, - "value": 0.0 - } - ], - "title": "QBID cap rate on pass-through business W-2 wages paid", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "QBID cap rate on pass-through business W-2 wages paid", + "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds.", - "notes": "" - }, + "irs_ref": "Form 8995-A", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": false, "cps": false} + }, + "PT_qbid_alt_w2_wages_rt": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.25 - }, - { - "year": 2019, - "value": 0.25 - }, - { - "year": 2020, - "value": 0.25 - }, - { - "year": 2021, - "value": 0.25 - }, - { - "year": 2022, - "value": 0.25 - }, - { - "year": 2023, - "value": 0.25 - }, - { - "year": 2024, - "value": 0.25 - }, - { - "year": 2025, - "value": 0.25 - }, - { - "year": 2026, - "value": 0.0 - } - ], - "title": "Alternative QBID cap rate on pass-through business W-2 wages paid", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Alternative QBID cap rate on pass-through business W-2 wages paid", + "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business plus some fraction of business property if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business plus some fraction of business property if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", - "notes": "" - }, + "irs_ref": "Form 8995-A", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": false, "cps": false} + }, + "PT_qbid_alt_property_rt": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.025 - }, - { - "year": 2019, - "value": 0.025 - }, - { - "year": 2020, - "value": 0.025 - }, - { - "year": 2021, - "value": 0.025 - }, - { - "year": 2022, - "value": 0.025 - }, - { - "year": 2023, - "value": 0.025 - }, - { - "year": 2024, - "value": 0.025 - }, - { - "year": 2025, - "value": 0.025 - }, - { - "year": 2026, - "value": 0.0 - } - ], - "title": "Alternative QBID cap rate on pass-through business property owned", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Alternative QBID cap rate on pass-through business property owned", + "description": "QBID is capped at this fraction of business property owned plus some fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", "section_1": "Personal Income", "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "description": "QBID is capped at this fraction of business property owned plus some fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", - "notes": "" - }, + "irs_ref": "Form 8995-A", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.025, + 0.025, + 0.025, + 0.025, + 0.025, + 0.025, + 0.025, + 0.025, + 0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": false, "cps": false} + }, + "AMT_em": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 51900.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 80800.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 40400.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 51900.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 80800.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 52800.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 82100.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 41050.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 52800.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 82100.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 53600.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 83400.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 41700.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 53600.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 83400.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 53900.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 83800.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 41900.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 53900.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 83800.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 54300.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 84500.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 42250.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 54300.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 84500.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 70300.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 109400.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 54700.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 70300.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 109400.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 71874.72 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 111850.56 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 55925.28 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 71874.72 - }, - { - "year": 2019, - "MARS": "widow", - "value": 111850.56 - }, - { - "year": 2020, - "MARS": "single", - "value": 73211.59 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 113930.98 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 56965.49 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 73211.59 - }, - { - "year": 2020, - "MARS": "widow", - "value": 113930.98 - }, - { - "year": 2021, - "MARS": "single", - "value": 74917.42 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 116585.57 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 58292.79 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 74917.42 - }, - { - "year": 2021, - "MARS": "widow", - "value": 116585.57 - }, - { - "year": 2022, - "MARS": "single", - "value": 76633.03 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 119255.38 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 59627.69 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 76633.03 - }, - { - "year": 2022, - "MARS": "widow", - "value": 119255.38 - }, - { - "year": 2023, - "MARS": "single", - "value": 78380.26 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 121974.4 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 60987.2 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 78380.26 - }, - { - "year": 2023, - "MARS": "widow", - "value": 121974.4 - }, - { - "year": 2024, - "MARS": "single", - "value": 80112.47 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 124670.04 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 62335.02 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 80112.47 - }, - { - "year": 2024, - "MARS": "widow", - "value": 124670.04 - }, - { - "year": 2025, - "MARS": "single", - "value": 81802.84 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 127300.58 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 63650.29 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 81802.84 - }, - { - "year": 2025, - "MARS": "widow", - "value": 127300.58 - }, - { - "year": 2026, - "MARS": "single", - "value": 65712.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 102258.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 51129.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 65712.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 102258.0 - } - ], - "title": "AMT exemption amount", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "AMT exemption amount", + "description": "The amount of AMT taxable income exempted from AMT.", "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", + "section_3": "Exemption", + "irs_ref": "Form 1040 (Schedule 2), line 45, instruction (Worksheet).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "The amount of AMT taxable income exempted from AMT.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[51900.00, 80800.00, 40400.00, 51900.00, 80800.00], + [52800.00, 82100.00, 41050.00, 52800.00, 82100.00], + [53600.00, 83400.00, 41700.00, 53600.00, 83400.00], + [53900.00, 83800.00, 41900.00, 53900.00, 83800.00], + [54300.00, 84500.00, 42250.00, 54300.00, 84500.00], + [70300.0, 109400.0, 54700.0, 70300.0, 109400.0], + [71700.0, 111700.0, 55850.0, 71700.0, 111700.0], + [73033.62, 113777.62, 56888.81, 73033.62, 113777.62], + [74735.3, 116428.64, 58214.32, 74735.3, 116428.64], + [76446.74, 119094.85, 59547.43, 76446.74, 119094.85], + [78189.73, 121810.22, 60905.11, 78189.73, 121810.22], + [79917.72, 124502.22, 62251.11, 79917.72, 124502.22], + [81603.98, 127129.22, 63564.61, 81603.98, 127129.22], + [65712.0, 102258.0, 51129.0, 65712.0, 102258.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_prt": { - "value": [ - { - "year": 2013, - "value": 0.25 - } - ], - "title": "AMT exemption phaseout rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "AMT exemption phaseout rate", + "description": "AMT exemption will decrease at this rate for each dollar of AMT taxable income exceeding AMT phaseout start.", "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "indexable": false, - "indexed": false, - "description": "AMT exemption will decrease at this rate for each dollar of AMT taxable income exceeding AMT phaseout start.", - "notes": "" - }, + "section_3": "Exemption", + "irs_ref": "Form 1040 (Schedule 2), line 45, instruction (Worksheet).", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.25], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_em_ps": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 115400.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 153900.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 76950.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 115400.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 153900.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 117300.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 156500.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 78250.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 117300.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 156500.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 119200.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 158900.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 79450.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 119200.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 158900.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 119700.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 159700.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 79850.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 119700.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 159700.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 120700.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 160900.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 80450.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 120700.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 160900.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 500000.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 1000000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 500000.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 500000.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 1000000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 511200.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 1022400.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 511200.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 511200.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 1022400.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 520708.32 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 1041416.64 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 520708.32 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 520708.32 - }, - { - "year": 2020, - "MARS": "widow", - "value": 1041416.64 - }, - { - "year": 2021, - "MARS": "single", - "value": 532840.82 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 1065681.65 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 532840.82 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 532840.82 - }, - { - "year": 2021, - "MARS": "widow", - "value": 1065681.65 - }, - { - "year": 2022, - "MARS": "single", - "value": 545042.88 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 1090085.76 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 545042.88 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 545042.88 - }, - { - "year": 2022, - "MARS": "widow", - "value": 1090085.76 - }, - { - "year": 2023, - "MARS": "single", - "value": 557469.86 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 1114939.71 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 557469.86 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 557469.86 - }, - { - "year": 2023, - "MARS": "widow", - "value": 1114939.71 - }, - { - "year": 2024, - "MARS": "single", - "value": 569789.94 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 1139579.88 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 569789.94 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 569789.94 - }, - { - "year": 2024, - "MARS": "widow", - "value": 1139579.88 - }, - { - "year": 2025, - "MARS": "single", - "value": 581812.51 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 1163625.02 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 581812.51 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 581812.51 - }, - { - "year": 2025, - "MARS": "widow", - "value": 1163625.02 - }, - { - "year": 2026, - "MARS": "single", - "value": 146066.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 194715.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 97357.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 146066.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 194715.0 - } - ], - "title": "AMT exemption phaseout start", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "AMT exemption phaseout start", + "description": "AMT exemption starts to decrease when AMT taxable income goes beyond this threshold.", "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", + "section_3": "Exemption", + "irs_ref": "Form 1040 (Schedule 2), line 45, instruction (Worksheet).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "AMT exemption starts to decrease when AMT taxable income goes beyond this threshold.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[115400.00, 153900.00, 76950.00, 115400.00, 153900.00], + [117300.00, 156500.00, 78250.00, 117300.00, 156500.00], + [119200.00, 158900.00, 79450.00, 119200.00, 158900.00], + [119700.00, 159700.00, 79850.00, 119700.00, 159700.00], + [120700.00, 160900.00, 80450.00, 120700.00, 160900.00], + [500000.0, 1000000.0, 500000.0, 500000.0, 1000000.0], + [510300.0, 1020600.0, 510300.0, 510300.0, 1020600.0], + [519791.58, 1039583.16, 519791.58, 519791.58, 1039583.16], + [531902.72, 1063805.45, 531902.72, 531902.72, 1063805.45], + [544083.3, 1088166.59, 544083.3, 544083.3, 1088166.59], + [556488.4, 1112976.79, 556488.4, 556488.4, 1112976.79], + [568786.79, 1137573.58, 568786.79, 568786.79, 1137573.58], + [580788.19, 1161576.38, 580788.19, 580788.19, 1161576.38], + [146066.0, 194715.0, 97357.0, 146066.0, 194715.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_child_em": { - "value": [ - { - "year": 2013, - "value": 7150.0 - }, - { - "year": 2014, - "value": 7250.0 - }, - { - "year": 2015, - "value": 7400.0 - }, - { - "year": 2016, - "value": 7400.0 - }, - { - "year": 2017, - "value": 7500.0 - }, - { - "year": 2018, - "value": 7600.0 - } - ], - "title": "Child AMT exemption additional income base", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Child AMT exemption additional income base", + "description": "The child's AMT exemption is capped by this amount plus the child's earned income.", "section_1": "", "section_2": "", + "irs_ref": "Form 6251, line 5, instruction.", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The child's AMT exemption is capped by this amount plus the child's earned income.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [7150.0, + 7250.0, + 7400.0, + 7400.0, + 7500.0, + 7600.0, + 0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_child_em_c_age": { - "value": [ - { - "year": 2013, - "value": 18 - } - ], - "title": "Age ceiling for special AMT exemption", - "type": "int", - "validators": { - "range": { - "min": 0, - "max": 30 - } - }, + "long_name": "Age ceiling for special AMT exemption", + "description": "Individuals under this age must use the child AMT exemption rules.", "section_1": "", "section_2": "", - "indexable": false, - "indexed": false, - "description": "Individuals under this age must use the child AMT exemption rules.", - "notes": "" - }, + "irs_ref": "Form 6251, line 5, instruction.", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "integer", + "value": [18], + "valid_values": {"min": 0, "max": 30}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_rt1": { - "value": [ - { - "year": 2013, - "value": 0.26 - } - ], - "title": "AMT rate 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "AMT rate 1", + "description": "The tax rate applied to the portion of AMT taxable income below the surtax threshold, AMT bracket 1.", "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "indexable": false, - "indexed": false, - "description": "The tax rate applied to the portion of AMT taxable income below the surtax threshold, AMT bracket 1.", - "notes": "" - }, + "section_3": "Tax rates", + "irs_ref": "Form 6251, line 7, in-line. ", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.26], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_brk1": { - "value": [ - { - "year": 2013, - "value": 179500.0 - }, - { - "year": 2014, - "value": 182500.0 - }, - { - "year": 2015, - "value": 185400.0 - }, - { - "year": 2016, - "value": 186300.0 - }, - { - "year": 2017, - "value": 187800.0 - }, - { - "year": 2018, - "value": 191100.0 - } - ], - "title": "AMT bracket 1 (upper threshold)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "AMT bracket 1 (upper threshold)", + "description": "AMT taxable income below this is subject to AMT rate 1 and above it is subject to AMT rate 1 + the additional AMT rate.", "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", + "section_3": "Tax rates", + "irs_ref": "Form 6251, line 7, instruction.", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "AMT taxable income below this is subject to AMT rate 1 and above it is subject to AMT rate 1 + the additional AMT rate.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [179500.0, + 182500.0, + 185400.0, + 186300.0, + 187800.0, + 191100.0, + 194800.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_rt2": { - "value": [ - { - "year": 2013, - "value": 0.02 - } - ], - "title": "Additional AMT rate for AMT taxable income above AMT bracket 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Additional AMT rate for AMT taxable income above AMT bracket 1", + "description": "The additional tax rate applied to the portion of AMT income above the AMT bracket 1.", "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "indexable": false, - "indexed": false, - "description": "The additional tax rate applied to the portion of AMT income above the AMT bracket 1.", - "notes": "This is the additional tax rate (on top of AMT rate 1) for AMT income above AMT bracket 1." - }, + "section_3": "Tax rates", + "irs_ref": "Form 6251, line 7, in-line. ", + "notes": "This is the additional tax rate (on top of AMT rate 1) for AMT income above AMT bracket 1.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.02], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AMT_em_pe": { - "value": [ - { - "year": 2013, - "value": 238550.0 - }, - { - "year": 2014, - "value": 242450.0 - }, - { - "year": 2015, - "value": 246250.0 - }, - { - "year": 2016, - "value": 247450.0 - }, - { - "year": 2017, - "value": 249450.0 - }, - { - "year": 2018, - "value": 718800.0 - }, - { - "year": 2019, - "value": 734901.12 - }, - { - "year": 2020, - "value": 748570.28 - }, - { - "year": 2021, - "value": 766011.97 - }, - { - "year": 2022, - "value": 783553.64 - }, - { - "year": 2023, - "value": 801418.67 - }, - { - "year": 2024, - "value": 819130.02 - }, - { - "year": 2025, - "value": 836413.66 - }, - { - "year": 2026, - "value": 301874.0 - } - ], - "title": "AMT exemption phaseout ending AMT taxable income for Married filing Separately", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "AMT exemption phaseout ending AMT taxable income for Married filing Separately", + "description": "The AMT exemption is entirely disallowed beyond this AMT taxable income level for individuals who are married but filing separately.", "section_1": "", "section_2": "", + "irs_ref": "Form 6251, line 4, in-line.", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": true, - "description": "The AMT exemption is entirely disallowed beyond this AMT taxable income level for individuals who are married but filing separately.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [238550.0, + 242450.0, + 246250.0, + 247450.0, + 249450.0, + 718800.0, + 733700.0, + 747346.82, + 764760.0, + 782273.0, + 800108.83, + 817791.23, + 835046.63, + 301874.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "CDCC_c": { - "value": [ - { - "year": 2013, - "value": 3000.0 - } - ], - "title": "Maximum child & dependent care credit per dependent", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 3000 - } - }, + "long_name": "Maximum child & dependent care credit per dependent", + "description": "The maximum amount of credit allowed for each qualifying dependent.", "section_1": "Nonrefundable Credits", "section_2": "Child And Dependent Care", + "irs_ref": "Form 2441, line 3, in-line.", + "notes": "", + "value_yrs": [2013], "indexable": true, "indexed": false, - "description": "The maximum amount of credit allowed for each qualifying dependent.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [3000.0], + "valid_values": {"min": 0, "max": 3000}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CDCC_ps": { - "value": [ - { - "year": 2013, - "value": 15000.0 - } - ], - "title": "Child & dependent care credit phaseout start", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Child & dependent care credit phaseout start", + "description": "For taxpayers with AGI over this amount, the credit is reduced by one percentage point each $2000 of AGI over this amount.", "section_1": "Nonrefundable Credits", "section_2": "Child And Dependent Care", + "notes": "", + "value_yrs": [2013], "indexable": true, "indexed": false, - "description": "For taxpayers with AGI over this amount, the credit is reduced by one percentage point each $2000 of AGI over this amount.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [15000.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CDCC_crt": { - "value": [ - { - "year": 2013, - "value": 35.0 - } - ], - "title": "Child & dependent care credit phaseout percentage rate ceiling", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 100 - } - }, + "long_name": "Child & dependent care credit phaseout percentage rate ceiling", + "description": "The maximum percentage rate in the AGI phaseout; this percentage rate decreases as AGI rises above the CDCC_ps level.", "section_1": "Nonrefundable Credits", "section_2": "Child And Dependent Care", - "indexable": false, - "indexed": false, - "description": "The maximum percentage rate in the AGI phaseout; this percentage rate decreases as AGI rises above the CDCC_ps level.", - "notes": "" - }, + "irs_ref": "Form 2241, line 8, in-line.", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [35.0], + "valid_values": {"min": 0, "max": 100}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CTC_c": { - "value": [ - { - "year": 2013, - "value": 1000.0 - }, - { - "year": 2014, - "value": 1000.0 - }, - { - "year": 2015, - "value": 1000.0 - }, - { - "year": 2016, - "value": 1000.0 - }, - { - "year": 2017, - "value": 1000.0 - }, - { - "year": 2018, - "value": 2000.0 - }, - { - "year": 2019, - "value": 2000.0 - }, - { - "year": 2020, - "value": 2000.0 - }, - { - "year": 2021, - "value": 2000.0 - }, - { - "year": 2022, - "value": 2000.0 - }, - { - "year": 2023, - "value": 2000.0 - }, - { - "year": 2024, - "value": 2000.0 - }, - { - "year": 2025, - "value": 2000.0 - }, - { - "year": 2026, - "value": 1000.0 - } - ], - "title": "Maximum nonrefundable child tax credit per child", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Maximum nonrefundable child tax credit per child", + "description": "The maximum nonrefundable credit allowed for each child.", "section_1": "Child/Dependent Credits", "section_2": "Child Tax Credit", + "irs_ref": "Form 1040, line 12, worksheet, line 1.", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": false, - "description": "The maximum nonrefundable credit allowed for each child.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [1000.0, + 1000.0, + 1000.0, + 1000.0, + 1000.0, + 2000.0, + 2000.0, + 2000.0, + 2000.0, + 2000.0, + 2000.0, + 2000.0, + 2000.0, + 1000.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CTC_c_under5_bonus": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Bonus child tax credit maximum for qualifying children under five", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Bonus child tax credit maximum for qualifying children under five", + "description": "The maximum amount of child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", "section_1": "Child/Dependent Credits", "section_2": "Child Tax Credit", + "irs_ref": "", + "notes": "", + "value_yrs": [2013], "indexable": true, "indexed": false, - "description": "The maximum amount of child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CTC_ps": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 75000.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 110000.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 55000.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 75000.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 75000.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 75000.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 110000.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 55000.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 75000.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 75000.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 75000.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 110000.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 55000.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 75000.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 75000.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 75000.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 110000.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 55000.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 75000.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 75000.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 75000.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 110000.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 55000.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 75000.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 75000.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2020, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2021, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2021, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2022, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2022, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2023, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2023, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2024, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2024, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2025, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2025, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2026, - "MARS": "single", - "value": 75000.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 110000.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 55000.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 75000.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 75000.0 - } - ], - "title": "Child tax credit phaseout MAGI start", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Child tax credit phaseout MAGI start", + "description": "Child tax credit begins to decrease when MAGI is above this level; read descriptions of the dependent credit amounts for how they phase out when MAGI is above this level.", "section_1": "Child/Dependent Credits", "section_2": "Child Tax Credit", + "irs_ref": "Form 1040, line 12, worksheet, line 5.", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": false, - "description": "Child tax credit begins to decrease when MAGI is above this level; read descriptions of the dependent credit amounts for how they phase out when MAGI is above this level.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[75000.0, 110000.0, 55000.0, 75000.0, 75000.0], + [75000.0, 110000.0, 55000.0, 75000.0, 75000.0], + [75000.0, 110000.0, 55000.0, 75000.0, 75000.0], + [75000.0, 110000.0, 55000.0, 75000.0, 75000.0], + [75000.0, 110000.0, 55000.0, 75000.0, 75000.0], + [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], + [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], + [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], + [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], + [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], + [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], + [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], + [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], + [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CTC_prt": { - "value": [ - { - "year": 2013, - "value": 0.05 - } - ], - "title": "Child and dependent tax credit phaseout rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Child and dependent tax credit phaseout rate", + "description": "The amount of the credit starts to decrease at this rate if MAGI is higher than child tax credit phaseout start.", "section_1": "Child/Dependent Credits", "section_2": "Child Tax Credit", - "indexable": false, - "indexed": false, - "description": "The amount of the credit starts to decrease at this rate if MAGI is higher than child tax credit phaseout start.", - "notes": "" - }, + "irs_ref": "Form 1040, line 12, instruction (child tax credit worksheet, line 7)", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.05], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ACTC_c": { - "value": [ - { - "year": 2013, - "value": 1000.0 - }, - { - "year": 2014, - "value": 1000.0 - }, - { - "year": 2015, - "value": 1000.0 - }, - { - "year": 2016, - "value": 1000.0 - }, - { - "year": 2017, - "value": 1000.0 - }, - { - "year": 2018, - "value": 1400.0 - }, - { - "year": 2019, - "value": 1400.0 - }, - { - "year": 2020, - "value": 1400.0 - }, - { - "year": 2021, - "value": 1400.0 - }, - { - "year": 2022, - "value": 1500.0 - }, - { - "year": 2023, - "value": 1500.0 - }, - { - "year": 2024, - "value": 1500.0 - }, - { - "year": 2025, - "value": 1600.0 - }, - { - "year": 2026, - "value": 1000.0 - } - ], - "title": "Maximum refundable additional child tax credit", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": "CTC_c" - } - }, + "long_name": "Maximum refundable additional child tax credit", + "description": "This refundable credit is applied to child dependents and phases out exactly like the CTC amount.", "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", + "irs_ref": "Form 1040, line 18b, Schedule 8812", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": false, - "description": "This refundable credit is applied to child dependents and phases out exactly like the CTC amount.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [1000.0, + 1000.0, + 1000.0, + 1000.0, + 1000.0, + 1400.0, + 1400.0, + 1400.0, + 1400.0, + 1500.0, + 1500.0, + 1500.0, + 1600.0, + 1000.0], + "valid_values": {"min": 0, "max": "CTC_c"}, + "invalid_minmsg": "", + "invalid_maxmsg": "for CTC_c", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ODC_c": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 500.0 - }, - { - "year": 2019, - "value": 500.0 - }, - { - "year": 2020, - "value": 500.0 - }, - { - "year": 2021, - "value": 500.0 - }, - { - "year": 2022, - "value": 500.0 - }, - { - "year": 2023, - "value": 500.0 - }, - { - "year": 2024, - "value": 500.0 - }, - { - "year": 2025, - "value": 500.0 - }, - { - "year": 2026, - "value": 0.0 - } - ], - "title": "Maximum nonrefundable other-dependent credit", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Maximum nonrefundable other-dependent credit", + "description": "This nonrefundable credit is applied to non-child dependents and phases out along with the CTC amount.", "section_1": "Child/Dependent Credits", "section_2": "Other Dependent Tax Credit", + "irs_ref": "Form 1040, line 12, instruction (child tax credit worksheet, line 2)", + "notes": "Became current-law policy with passage of TCJA", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": false, - "description": "This nonrefundable credit is applied to non-child dependents and phases out along with the CTC amount.", - "notes": "Became current-law policy with passage of TCJA" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "NIIT_thd": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 250000.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 125000.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 250000.0 - } - ], - "title": "Net Investment Income Tax modified AGI threshold", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Net Investment Income Tax modified AGI threshold", + "description": "If modified AGI is more than this threshold, filing unit is subject to the Net Investment Income Tax.", "section_1": "Other Taxes", "section_2": "Net Investment Income Tax", + "irs_ref": "Form 8960, line 14, instructions. ", + "notes": "", + "value_yrs": [2013], "indexable": true, "indexed": false, - "description": "If modified AGI is more than this threshold, filing unit is subject to the Net Investment Income Tax.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[200000.0, 250000.0, 125000.0, 200000.0, 250000.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "NIIT_PT_taxed": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Whether or not partnership and S-corp income is in NIIT base", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Whether or not partnership and S-corp income is in NIIT base", + "description": "false ==> partnership and S-corp income excluded from NIIT base; true ==> partnership and S-corp income is in NIIT base.", "section_1": "Other Taxes", "section_2": "Net Investment Income Tax", - "indexable": false, - "indexed": false, - "description": "false ==> partnership and S-corp income excluded from NIIT base; true ==> partnership and S-corp income is in NIIT base.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "NIIT_rt": { - "value": [ - { - "year": 2013, - "value": 0.038 - } - ], - "title": "Net Investment Income Tax rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Net Investment Income Tax rate", + "description": "If modified AGI exceeds NIIT_thd, all net investment income is taxed at this rate.", "section_1": "Other Taxes", "section_2": "Net Investment Income Tax", - "indexable": false, - "indexed": false, - "description": "If modified AGI exceeds NIIT_thd, all net investment income is taxed at this rate.", - "notes": "" - }, + "irs_ref": "Form 8960, line 21, in-line. ", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.038], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "EITC_c": { - "value": [ - { - "year": 2013, - "EIC": "0kids", - "value": 487.0 - }, - { - "year": 2013, - "EIC": "1kid", - "value": 3250.0 - }, - { - "year": 2013, - "EIC": "2kids", - "value": 5372.0 - }, - { - "year": 2013, - "EIC": "3+kids", - "value": 6044.0 - }, - { - "year": 2014, - "EIC": "0kids", - "value": 496.0 - }, - { - "year": 2014, - "EIC": "1kid", - "value": 3305.0 - }, - { - "year": 2014, - "EIC": "2kids", - "value": 5460.0 - }, - { - "year": 2014, - "EIC": "3+kids", - "value": 6143.0 - }, - { - "year": 2015, - "EIC": "0kids", - "value": 503.0 - }, - { - "year": 2015, - "EIC": "1kid", - "value": 3359.0 - }, - { - "year": 2015, - "EIC": "2kids", - "value": 5548.0 - }, - { - "year": 2015, - "EIC": "3+kids", - "value": 6242.0 - }, - { - "year": 2016, - "EIC": "0kids", - "value": 506.0 - }, - { - "year": 2016, - "EIC": "1kid", - "value": 3373.0 - }, - { - "year": 2016, - "EIC": "2kids", - "value": 5572.0 - }, - { - "year": 2016, - "EIC": "3+kids", - "value": 6269.0 - }, - { - "year": 2017, - "EIC": "0kids", - "value": 510.0 - }, - { - "year": 2017, - "EIC": "1kid", - "value": 3400.0 - }, - { - "year": 2017, - "EIC": "2kids", - "value": 5616.0 - }, - { - "year": 2017, - "EIC": "3+kids", - "value": 6318.0 - }, - { - "year": 2018, - "EIC": "0kids", - "value": 519.0 - }, - { - "year": 2018, - "EIC": "1kid", - "value": 3461.0 - }, - { - "year": 2018, - "EIC": "2kids", - "value": 5716.0 - }, - { - "year": 2018, - "EIC": "3+kids", - "value": 6431.0 - } - ], - "title": "Maximum earned income credit", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Maximum earned income credit", + "description": "This is the maximum amount of earned income credit taxpayers are eligible for; it depends on how many kids they have.", "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", + "irs_ref": "Form 1040, line 17, instruction (table).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "This is the maximum amount of earned income credit taxpayers are eligible for; it depends on how many kids they have.", - "notes": "" - }, + "vi_name": "EIC", + "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], + "value_type": "real", + "value": [[487.0, 3250.0, 5372.0, 6044.0], + [496.0, 3305.0, 5460.0, 6143.0], + [503.0, 3359.0, 5548.0, 6242.0], + [506.0, 3373.0, 5572.0, 6269.0], + [510.0, 3400.0, 5616.0, 6318.0], + [519.0, 3461.0, 5716.0, 6431.0], + [529.0, 3526.0, 5828.0, 6557.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "EITC_rt": { - "value": [ - { - "year": 2013, - "EIC": "0kids", - "value": 0.0765 - }, - { - "year": 2013, - "EIC": "1kid", - "value": 0.34 - }, - { - "year": 2013, - "EIC": "2kids", - "value": 0.4 - }, - { - "year": 2013, - "EIC": "3+kids", - "value": 0.45 - } - ], - "title": "Earned income credit phasein rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Earned income credit phasein rate", + "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum earned income credit.", "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, - "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum earned income credit.", - "notes": "" - }, + "irs_ref": "Form 1040, line 17, calculation (table: Max_EIC/Max_EIC_base_income).", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "EIC", + "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], + "value_type": "real", + "value": [[0.0765, 0.3400, 0.4000, 0.4500]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "EITC_basic_frac": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.0 - } - ], - "title": "Fraction of maximum earned income credit paid at zero earnings", - "type": "float", - "validators": { - "range": { - "min": 0.0, - "max": 1.0 - } - }, + "long_name": "Fraction of maximum earned income credit paid at zero earnings", + "description": "This fraction of EITC_c is always paid as a credit and one minus this fraction is applied to the phasein rate, EITC_rt. This fraction is zero under current law.", "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, - "description": "This fraction of EITC_c is always paid as a credit and one minus this fraction is applied to the phasein rate, EITC_rt. This fraction is zero under current law.", - "notes": "" - }, + "irs_ref": "Form 1040, line 17, instruction (table).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0], + "valid_values": {"min": 0.0, "max": 1.0}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "EITC_prt": { - "value": [ - { - "year": 2013, - "EIC": "0kids", - "value": 0.0765 - }, - { - "year": 2013, - "EIC": "1kid", - "value": 0.1598 - }, - { - "year": 2013, - "EIC": "2kids", - "value": 0.2106 - }, - { - "year": 2013, - "EIC": "3+kids", - "value": 0.2106 - } - ], - "title": "Earned income credit phaseout rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Earned income credit phaseout rate", + "description": "Earned income credit begins to decrease at the this rate when AGI is higher than earned income credit phaseout start AGI.", "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, - "description": "Earned income credit begins to decrease at the this rate when AGI is higher than earned income credit phaseout start AGI.", - "notes": "" - }, + "irs_ref": "Form 1040, line 17, calculation (table: Max_EIC_base_income/Phaseout_Base).", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "EIC", + "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], + "value_type": "real", + "value": [[0.0765, 0.1598, 0.2106, 0.2106]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "EITC_ps": { - "value": [ - { - "year": 2013, - "EIC": "0kids", - "value": 7970.0 - }, - { - "year": 2013, - "EIC": "1kid", - "value": 17530.0 - }, - { - "year": 2013, - "EIC": "2kids", - "value": 17530.0 - }, - { - "year": 2013, - "EIC": "3+kids", - "value": 17530.0 - }, - { - "year": 2014, - "EIC": "0kids", - "value": 8110.0 - }, - { - "year": 2014, - "EIC": "1kid", - "value": 17830.0 - }, - { - "year": 2014, - "EIC": "2kids", - "value": 17830.0 - }, - { - "year": 2014, - "EIC": "3+kids", - "value": 17830.0 - }, - { - "year": 2015, - "EIC": "0kids", - "value": 8250.0 - }, - { - "year": 2015, - "EIC": "1kid", - "value": 18150.0 - }, - { - "year": 2015, - "EIC": "2kids", - "value": 18150.0 - }, - { - "year": 2015, - "EIC": "3+kids", - "value": 18150.0 - }, - { - "year": 2016, - "EIC": "0kids", - "value": 8270.0 - }, - { - "year": 2016, - "EIC": "1kid", - "value": 18190.0 - }, - { - "year": 2016, - "EIC": "2kids", - "value": 18190.0 - }, - { - "year": 2016, - "EIC": "3+kids", - "value": 18190.0 - }, - { - "year": 2017, - "EIC": "0kids", - "value": 8340.0 - }, - { - "year": 2017, - "EIC": "1kid", - "value": 18340.0 - }, - { - "year": 2017, - "EIC": "2kids", - "value": 18340.0 - }, - { - "year": 2017, - "EIC": "3+kids", - "value": 18340.0 - }, - { - "year": 2018, - "EIC": "0kids", - "value": 8490.0 - }, - { - "year": 2018, - "EIC": "1kid", - "value": 18660.0 - }, - { - "year": 2018, - "EIC": "2kids", - "value": 18660.0 - }, - { - "year": 2018, - "EIC": "3+kids", - "value": 18660.0 - } - ], - "title": "Earned income credit phaseout start AGI", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Earned income credit phaseout start AGI", + "description": "If AGI is higher than this threshold, the amount of EITC will start to decrease at the phaseout rate.", "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", + "irs_ref": "Form 1040, line 17, instructions.", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "If AGI is higher than this threshold, the amount of EITC will start to decrease at the phaseout rate.", - "notes": "" - }, + "vi_name": "EIC", + "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], + "value_type": "real", + "value": [[7970.0, 17530.0, 17530.0, 17530.0], + [8110.0, 17830.0, 17830.0, 17830.0], + [8250.0, 18150.0, 18150.0, 18150.0], + [8270.0, 18190.0, 18190.0, 18190.0], + [8340.0, 18340.0, 18340.0, 18340.0], + [8490.0, 18660.0, 18660.0, 18660.0], + [8650.0, 19030.0, 19030.0, 19030.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "EITC_ps_MarriedJ": { - "value": [ - { - "year": 2013, - "EIC": "0kids", - "value": 5340.0 - }, - { - "year": 2013, - "EIC": "1kid", - "value": 5340.0 - }, - { - "year": 2013, - "EIC": "2kids", - "value": 5340.0 - }, - { - "year": 2013, - "EIC": "3+kids", - "value": 5340.0 - }, - { - "year": 2014, - "EIC": "0kids", - "value": 5430.0 - }, - { - "year": 2014, - "EIC": "1kid", - "value": 5430.0 - }, - { - "year": 2014, - "EIC": "2kids", - "value": 5430.0 - }, - { - "year": 2014, - "EIC": "3+kids", - "value": 5430.0 - }, - { - "year": 2015, - "EIC": "0kids", - "value": 5500.0 - }, - { - "year": 2015, - "EIC": "1kid", - "value": 5500.0 - }, - { - "year": 2015, - "EIC": "2kids", - "value": 5500.0 - }, - { - "year": 2015, - "EIC": "3+kids", - "value": 5500.0 - }, - { - "year": 2016, - "EIC": "0kids", - "value": 5550.0 - }, - { - "year": 2016, - "EIC": "1kid", - "value": 5550.0 - }, - { - "year": 2016, - "EIC": "2kids", - "value": 5550.0 - }, - { - "year": 2016, - "EIC": "3+kids", - "value": 5550.0 - }, - { - "year": 2017, - "EIC": "0kids", - "value": 5590.0 - }, - { - "year": 2017, - "EIC": "1kid", - "value": 5590.0 - }, - { - "year": 2017, - "EIC": "2kids", - "value": 5590.0 - }, - { - "year": 2017, - "EIC": "3+kids", - "value": 5590.0 - }, - { - "year": 2018, - "EIC": "0kids", - "value": 5680.0 - }, - { - "year": 2018, - "EIC": "1kid", - "value": 5690.0 - }, - { - "year": 2018, - "EIC": "2kids", - "value": 5690.0 - }, - { - "year": 2018, - "EIC": "3+kids", - "value": 5690.0 - } - ], - "title": "Extra earned income credit phaseout start AGI for married filling jointly", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Extra earned income credit phaseout start AGI for married filling jointly", + "description": "This is the additional amount added on the regular phaseout start amount for taxpayers with filling status of married filing jointly.", "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", + "irs_ref": "Form 1040, line 17, calculation (the difference between EIC phaseout bases of married jointly filers and other filers).", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "This is the additional amount added on the regular phaseout start amount for taxpayers with filling status of married filing jointly.", - "notes": "" - }, + "vi_name": "EIC", + "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], + "value_type": "real", + "value": [[5340.0, 5340.0, 5340.0, 5340.0], + [5430.0, 5430.0, 5430.0, 5430.0], + [5500.0, 5500.0, 5500.0, 5500.0], + [5550.0, 5550.0, 5550.0, 5550.0], + [5590.0, 5590.0, 5590.0, 5590.0], + [5680.0, 5690.0, 5690.0, 5690.0], + [5800.0, 5790.0, 5790.0, 5790.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "EITC_MinEligAge": { - "value": [ - { - "year": 2013, - "value": 25 - } - ], - "title": "Minimum Age for Childless EITC Eligibility", - "type": "int", - "validators": { - "range": { - "min": 0, - "max": 125 - } - }, + "long_name": "Minimum Age for Childless EITC Eligibility", + "description": "For a childless filing unit, at least one individual's age needs to be no less than this age (but no greater than the EITC_MaxEligAge) in order to be eligible for an earned income tax credit.", "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, - "description": "For a childless filing unit, at least one individual's age needs to be no less than this age (but no greater than the EITC_MaxEligAge) in order to be eligible for an earned income tax credit.", - "notes": "" - }, + "irs_ref": "Form 1040, line 17, step 4, instructions.", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "integer", + "value": [25], + "valid_values": {"min": 0, "max": 125}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "EITC_MaxEligAge": { - "value": [ - { - "year": 2013, - "value": 64 - } - ], - "title": "Maximum Age for Childless EITC Eligibility", - "type": "int", - "validators": { - "range": { - "min": 0, - "max": 125 - } - }, + "long_name": "Maximum Age for Childless EITC Eligibility", + "description": "For a childless filing unit, at least one individual's age needs to be no greater than this age (but no less than the EITC_MinEligAge) in order to be eligible for an earned income tax credit.", "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, - "description": "For a childless filing unit, at least one individual's age needs to be no greater than this age (but no less than the EITC_MinEligAge) in order to be eligible for an earned income tax credit.", - "notes": "" - }, + "irs_ref": "Form 1040, line 17, step 4, instructions.", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "integer", + "value": [64], + "valid_values": {"min": 0, "max": 125}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "EITC_InvestIncome_c": { - "value": [ - { - "year": 2013, - "value": 3300.0 - }, - { - "year": 2014, - "value": 3350.0 - }, - { - "year": 2015, - "value": 3400.0 - }, - { - "year": 2016, - "value": 3400.0 - }, - { - "year": 2017, - "value": 3450.0 - }, - { - "year": 2018, - "value": 3500.0 - } - ], - "title": "Maximum investment income before EITC reduction", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Maximum investment income before EITC reduction", + "description": "The EITC amount is reduced when investment income exceeds this ceiling.", "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", + "irs_ref": "Form 1040, line 17, instruction(step2)", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The EITC amount is reduced when investment income exceeds this ceiling.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [3300.0, + 3350.0, + 3400.0, + 3400.0, + 3450.0, + 3500.0, + 3600.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "EITC_excess_InvestIncome_rt": { - "value": [ - { - "year": 2013, - "value": 9e+99 - } - ], - "title": "Rate of EITC reduction when investment income exceeds ceiling", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Rate of EITC reduction when investment income exceeds ceiling", + "description": "The EITC amount is reduced at this rate per dollar of investment income exceeding the ceiling.", "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, - "description": "The EITC amount is reduced at this rate per dollar of investment income exceeding the ceiling.", - "notes": "" - }, + "irs_ref": "Form 1040, line 17, instruction(step2)", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [9e99], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "EITC_indiv": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "EITC is computed for each spouse based on individual earnings", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "EITC is computed for each spouse based on individual earnings", + "description": "Current-law value is false implying EITC is filing-unit based; a value of true implies EITC is computed for each individual wage earner. The additional phaseout start for joint filers is not affected by this parameter, nor are investment income and age eligibilty rules.", "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, - "description": "Current-law value is false implying EITC is filing-unit based; a value of true implies EITC is computed for each individual wage earner. The additional phaseout start for joint filers is not affected by this parameter, nor are investment income and age eligibilty rules.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "EITC_sep_filers_elig": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Separate filers are eligibile for the EITC", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Separate filers are eligibile for the EITC", + "description": "Current-law value is false, implying ineligibility.", "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, - "description": "Current-law value is false, implying ineligibility.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "RPTC_c": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.0 - } - ], - "title": "Maximum refundable payroll tax credit", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Maximum refundable payroll tax credit", + "description": "This is the maximum amount of the refundable payroll tax credit for each taxpayer/spouse.", "section_1": "Refundable Credits", "section_2": "Refundable Payroll Tax Credit", + "irs_ref": "", + "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "This is the maximum amount of the refundable payroll tax credit for each taxpayer/spouse.", - "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt." - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "RPTC_rt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Refundable payroll tax credit phasein rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Refundable payroll tax credit phasein rate", + "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum refundable payroll tax credit, where earnings is defined as in FICA and SECA.", "section_1": "Refundable Credits", "section_2": "Refundable Payroll Tax Credit", - "indexable": false, - "indexed": false, - "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum refundable payroll tax credit, where earnings is defined as in FICA and SECA.", - "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt." - }, + "irs_ref": "", + "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "LLC_Expense_c": { - "value": [ - { - "year": 2013, - "value": 10000.0 - } - ], - "title": "Lifetime learning credit expense limit", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Lifetime learning credit expense limit", + "description": "The maximum expense eligible for lifetime learning credit, per child.", "section_1": "", "section_2": "", + "irs_ref": "Form 8863, line 11, in-line.", + "notes": "", + "value_yrs": [2013], "indexable": true, "indexed": false, - "description": "The maximum expense eligible for lifetime learning credit, per child.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [10000.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "ETC_pe_Single": { - "value": [ - { - "year": 2013, - "value": 63.0 - }, - { - "year": 2014, - "value": 64.0 - }, - { - "year": 2015, - "value": 65.0 - }, - { - "year": 2016, - "value": 65.0 - }, - { - "year": 2017, - "value": 66.0 - }, - { - "year": 2018, - "value": 67.0 - } - ], - "title": "Education tax credit phaseout ends (Single)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Education tax credit phaseout ends (Single)", + "description": "The education tax credit will be zero for those taxpayers of single filing status with modified AGI (in thousands) higher than this level.", "section_1": "", "section_2": "", + "irs_ref": "Form 8863, line 13, inline.", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The education tax credit will be zero for those taxpayers of single filing status with modified AGI (in thousands) higher than this level.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [63.0, + 64.0, + 65.0, + 65.0, + 66.0, + 67.0, + 68.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "ETC_pe_Married": { - "value": [ - { - "year": 2013, - "value": 127.0 - }, - { - "year": 2014, - "value": 128.0 - }, - { - "year": 2015, - "value": 130.0 - }, - { - "year": 2016, - "value": 131.0 - }, - { - "year": 2017, - "value": 132.0 - }, - { - "year": 2018, - "value": 134.0 - } - ], - "title": "Education tax credit phaseout ends (Married)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Education tax credit phaseout ends (Married)", + "description": "The education tax credit will be zero for those taxpayers of married filing status with modified AGI level (in thousands) higher than this level.", "section_1": "", "section_2": "", + "irs_ref": "Form 8863, line 13, inline.", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The education tax credit will be zero for those taxpayers of married filing status with modified AGI level (in thousands) higher than this level.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [127.0, + 128.0, + 130.0, + 131.0, + 132.0, + 134.0, + 136.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "ACTC_rt": { - "value": [ - { - "year": 2013, - "value": 0.15 - } - ], - "title": "Additional Child Tax Credit rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Additional Child Tax Credit rate", + "description": "This is the fraction of earnings used in calculating the ACTC, which is a partially refundable credit that supplements the CTC for some taxpayers.", "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", - "indexable": false, - "indexed": false, - "description": "This is the fraction of earnings used in calculating the ACTC, which is a partially refundable credit that supplements the CTC for some taxpayers.", - "notes": "" - }, + "irs_ref": "Form 8812, line 8, inline.", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.15], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ACTC_rt_bonus_under5family": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Bonus additional child tax credit rate for families with qualifying children under 5", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Bonus additional child tax credit rate for families with qualifying children under 5", + "description": "For families with qualifying children under 5 years old, this bonus rate is added to the fraction of earnings (additional child tax credit rate) used in calculating the ACTC.", "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", - "indexable": false, - "indexed": false, - "description": "For families with qualifying children under 5 years old, this bonus rate is added to the fraction of earnings (additional child tax credit rate) used in calculating the ACTC.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ACTC_Income_thd": { - "value": [ - { - "year": 2013, - "value": 3000.0 - }, - { - "year": 2014, - "value": 3000.0 - }, - { - "year": 2015, - "value": 3000.0 - }, - { - "year": 2016, - "value": 3000.0 - }, - { - "year": 2017, - "value": 3000.0 - }, - { - "year": 2018, - "value": 2500.0 - }, - { - "year": 2019, - "value": 2500.0 - }, - { - "year": 2020, - "value": 2500.0 - }, - { - "year": 2021, - "value": 2500.0 - }, - { - "year": 2022, - "value": 2500.0 - }, - { - "year": 2023, - "value": 2500.0 - }, - { - "year": 2024, - "value": 2500.0 - }, - { - "year": 2025, - "value": 2500.0 - }, - { - "year": 2026, - "value": 3000.0 - } - ], - "title": "Additional Child Tax Credit income threshold", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Additional Child Tax Credit income threshold", + "description": "The portion of earned income below this threshold does not count as base for the Additional Child Tax Credit.", "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", + "irs_ref": "Form 8812, line 7, in-line.", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026], "indexable": true, "indexed": false, - "description": "The portion of earned income below this threshold does not count as base for the Additional Child Tax Credit.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [3000.0, + 3000.0, + 3000.0, + 3000.0, + 3000.0, + 2500.0, + 2500.0, + 2500.0, + 2500.0, + 2500.0, + 2500.0, + 2500.0, + 2500.0, + 3000.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "ACTC_ChildNum": { - "value": [ - { - "year": 2013, - "value": 3 - } - ], - "title": "Additional Child Tax Credit minimum number of qualified children for different formula", - "type": "int", - "validators": { - "range": { - "min": 0, - "max": 99 - } - }, + "long_name": "Additional Child Tax Credit minimum number of qualified children for different formula", + "description": "Families with this number of qualified children or more may qualify for a different formula to calculate the Additional Child Tax Credit, which is a partially refundable credit that supplements the Child Tax Credit for some taxpayers.", "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", - "indexable": false, - "indexed": false, - "description": "Families with this number of qualified children or more may qualify for a different formula to calculate the Additional Child Tax Credit, which is a partially refundable credit that supplements the Child Tax Credit for some taxpayers.", - "notes": "" - }, + "irs_ref": "Form 8812, Part II. ", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "integer", + "value": [3], + "valid_values": {"min": 0, "max": 99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CTC_new_c": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "New refundable child tax credit maximum amount per child", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "New refundable child tax credit maximum amount per child", + "description": "In addition to all credits currently available for dependents, this parameter gives each qualifying child a new refundable credit with this maximum amount.", "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", + "irs_ref": "", + "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.", + "value_yrs": [2013], "indexable": true, "indexed": false, - "description": "In addition to all credits currently available for dependents, this parameter gives each qualifying child a new refundable credit with this maximum amount.", - "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit." - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CTC_new_c_under5_bonus": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Bonus new refundable child tax credit maximum for qualifying children under five", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Bonus new refundable child tax credit maximum for qualifying children under five", + "description": "The maximum amount of the new refundable child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", + "irs_ref": "", + "notes": "", + "value_yrs": [2013], "indexable": true, "indexed": false, - "description": "The maximum amount of the new refundable child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CTC_new_for_all": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Whether or not maximum amount of the new refundable child tax credit is available to all", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Whether or not maximum amount of the new refundable child tax credit is available to all", + "description": "The maximum amount of the new refundable child tax credit does not depend on AGI when true; otherwise, see CTC_new_rt.", "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "indexable": false, - "indexed": false, - "description": "The maximum amount of the new refundable child tax credit does not depend on AGI when true; otherwise, see CTC_new_rt.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CTC_new_rt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "New refundable child tax credit amount phasein rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "New refundable child tax credit amount phasein rate", + "description": "The maximum amount of the new child tax credit is increased at this rate per dollar of positive AGI until CTC_new_c times the number of qualified children is reached if CTC_new_for_all is false; if CTC_new_for_all is true, there is no AGI limitation to the maximum amount.", "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "indexable": false, - "indexed": false, - "description": "The maximum amount of the new child tax credit is increased at this rate per dollar of positive AGI until CTC_new_c times the number of qualified children is reached if CTC_new_for_all is false; if CTC_new_for_all is true, there is no AGI limitation to the maximum amount.", - "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit." - }, + "irs_ref": "", + "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CTC_new_ps": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 0.0 - } - ], - "title": "New refundable child tax credit phaseout starting AGI", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "New refundable child tax credit phaseout starting AGI", + "description": "The total amount of new child tax credit is reduced for taxpayers with AGI higher than this level.", "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The total amount of new child tax credit is reduced for taxpayers with AGI higher than this level.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CTC_new_prt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "New refundable child tax credit amount phaseout rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "New refundable child tax credit amount phaseout rate", + "description": "The total amount of the new child tax credit is reduced at this rate per dollar exceeding the phaseout starting AGI, CTC_new_ps.", "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "indexable": false, - "indexed": false, - "description": "The total amount of the new child tax credit is reduced at this rate per dollar exceeding the phaseout starting AGI, CTC_new_ps.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CTC_new_refund_limited": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "New child tax credit refund limited to a decimal fraction of payroll taxes", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "New child tax credit refund limited to a decimal fraction of payroll taxes", + "description": "Specifies whether the new child tax credit refund is limited by the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt).", "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "indexable": false, - "indexed": false, - "description": "Specifies whether the new child tax credit refund is limited by the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt).", - "notes": "Set this parameter to true to limit the refundability or false to allow full refundability for all taxpayers." - }, + "irs_ref": "", + "notes": "Set this parameter to true to limit the refundability or false to allow full refundability for all taxpayers.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CTC_new_refund_limit_payroll_rt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "New child tax credit refund limit rate (decimal fraction of payroll taxes)", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "New child tax credit refund limit rate (decimal fraction of payroll taxes)", + "description": "The fraction of payroll taxes (employee plus employer shares, but excluding all Medicare payroll taxes) that serves as a limit to the amount of new child tax credit that can be refunded.", "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "indexable": false, - "indexed": false, - "description": "The fraction of payroll taxes (employee plus employer shares, but excluding all Medicare payroll taxes) that serves as a limit to the amount of new child tax credit that can be refunded.", - "notes": "Set this parameter to zero for no refundability; set it to 9e99 for unlimited refundability for taxpayers with payroll tax liabilities." - }, + "irs_ref": "", + "notes": "Set this parameter to zero for no refundability; set it to 9e99 for unlimited refundability for taxpayers with payroll tax liabilities.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CTC_new_refund_limited_all_payroll": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "New child tax credit refund limit applies to all FICA taxes, not just OASDI", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "New child tax credit refund limit applies to all FICA taxes, not just OASDI", + "description": "Specifies whether the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt) applies to all FICA taxes (true) or just OASDI taxes (false).", "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "indexable": false, - "indexed": false, - "description": "Specifies whether the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt) applies to all FICA taxes (true) or just OASDI taxes (false).", - "notes": "If the new CTC is limited, set this parameter to true to limit the refundability to all FICA taxes or false to limit refundabiity to OASDI taxes." - }, + "irs_ref": "", + "notes": "If the new CTC is limited, set this parameter to true to limit the refundability to all FICA taxes or false to limit refundabiity to OASDI taxes.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "FST_AGI_trt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "New minimum tax; rate as a decimal fraction of AGI", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "New minimum tax; rate as a decimal fraction of AGI", + "description": "Individual income taxes and the employee share of payroll taxes are credited against this minimum tax, so the surtax is the difference between the tax rate times AGI and the credited taxes. The new minimum tax is similar to the Fair Share Tax, except that no credits are exempted from the base.", "section_1": "Surtaxes", "section_2": "New Minimum Tax", - "indexable": false, - "indexed": false, - "description": "Individual income taxes and the employee share of payroll taxes are credited against this minimum tax, so the surtax is the difference between the tax rate times AGI and the credited taxes. The new minimum tax is similar to the Fair Share Tax, except that no credits are exempted from the base.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "FST_AGI_thd_lo": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 1000000.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 1000000.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 500000.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 1000000.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 1000000.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 1000000.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 1000000.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 500000.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 1000000.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 1000000.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 1000000.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 1000000.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 500000.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 1000000.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 1000000.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 1000000.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 1000000.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 500000.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 1000000.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 1000000.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 1000000.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 1000000.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 500000.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 1000000.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 1000000.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 1000000.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 1000000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 500000.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 1000000.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 1000000.0 - } - ], - "title": "Minimum AGI needed to be subject to the new minimum tax", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": "FST_AGI_thd_hi" - } - }, + "long_name": "Minimum AGI needed to be subject to the new minimum tax", + "description": "A taxpayer is only subject to the new minimum tax if they exceed this level of AGI.", "section_1": "Surtaxes", "section_2": "New Minimum Tax", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "A taxpayer is only subject to the new minimum tax if they exceed this level of AGI.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], + [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], + [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], + [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], + [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], + [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], + [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6]], + "valid_values": {"min": 0, "max": "FST_AGI_thd_hi"}, + "invalid_minmsg": "", + "invalid_maxmsg": "for FST_AGI_thd_hi", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "FST_AGI_thd_hi": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 2000000.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 2000000.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 1000000.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 2000000.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 2000000.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 2000000.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 2000000.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 1000000.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 2000000.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 2000000.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 2000000.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 2000000.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 1000000.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 2000000.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 2000000.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 2000000.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 2000000.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 1000000.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 2000000.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 2000000.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 2000000.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 2000000.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 1000000.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 2000000.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 2000000.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 2000000.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 2000000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 1000000.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 2000000.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 2000000.0 - } - ], - "title": "AGI level at which the New Minimum Tax is fully phased in", - "type": "float", - "validators": { - "range": { - "min": "FST_AGI_thd_lo", - "max": 9e+99 - } - }, + "long_name": "AGI level at which the New Minimum Tax is fully phased in", + "description": "The new minimum tax will be fully phased in at this level of AGI. If there is no phase-in, this upper threshold should be set equal to the lower AGI threshold.", "section_1": "Surtaxes", "section_2": "New Minimum Tax", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The new minimum tax will be fully phased in at this level of AGI. If there is no phase-in, this upper threshold should be set equal to the lower AGI threshold.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], + [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], + [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], + [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], + [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], + [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], + [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6]], + "valid_values": {"min": "FST_AGI_thd_lo", "max": 9e99}, + "invalid_minmsg": "for FST_AGI_thd_lo", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AGI_surtax_trt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "New AGI surtax rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "New AGI surtax rate", + "description": "The surtax rate is applied to the portion of Adjusted Gross Income above the AGI surtax threshold.", "section_1": "Surtaxes", "section_2": "New AGI Surtax", - "indexable": false, - "indexed": false, - "description": "The surtax rate is applied to the portion of Adjusted Gross Income above the AGI surtax threshold.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "AGI_surtax_thd": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Threshold for the new AGI surtax", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Threshold for the new AGI surtax", + "description": "The aggregate gross income above this AGI surtax threshold is taxed at surtax rate on AGI.", "section_1": "Surtaxes", "section_2": "New AGI Surtax", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "The aggregate gross income above this AGI surtax threshold is taxed at surtax rate on AGI.", - "notes": "" - }, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99], + [9e99, 9e99, 9e99, 9e99, 9e99]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "LST": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Dollar amount of lump-sum tax", - "type": "float", - "validators": { - "range": { - "min": -9e+99, - "max": 9e+99 - } - }, + "long_name": "Dollar amount of lump-sum tax", + "description": "The lump-sum tax is levied on every member of a tax filing unit. The lump-sum tax is included only in combined taxes; it is not included in income or payroll taxes.", "section_1": "Surtaxes", "section_2": "Lump-Sum Tax", - "indexable": false, - "indexed": false, - "description": "The lump-sum tax is levied on every member of a tax filing unit. The lump-sum tax is included only in combined taxes; it is not included in income or payroll taxes.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": -9e99, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "UBI_u18": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.0 - } - ], - "title": "UBI benefit for those under 18", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "UBI benefit for those under 18", + "description": "UBI benefit provided to people under 18.", "section_1": "Universal Basic Income", "section_2": "UBI Benefits", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "UBI benefit provided to people under 18.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "UBI_1820": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.0 - } - ], - "title": "UBI benefit for those 18 through 20", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "UBI benefit for those 18 through 20", + "description": "UBI benefit provided to people 18-20 years of age.", "section_1": "Universal Basic Income", "section_2": "UBI Benefits", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "UBI benefit provided to people 18-20 years of age.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "UBI_21": { - "value": [ - { - "year": 2013, - "value": 0.0 - }, - { - "year": 2014, - "value": 0.0 - }, - { - "year": 2015, - "value": 0.0 - }, - { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.0 - } - ], - "title": "UBI benefit for those 21 and over", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "UBI benefit for those 21 and over", + "description": "UBI benefit provided to people 21 and over.", "section_1": "Universal Basic Income", "section_2": "UBI Benefits", + "irs_ref": "", + "notes": "", + "value_yrs": [2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019], "indexable": true, "indexed": true, - "description": "UBI benefit provided to people 21 and over.", - "notes": "" - }, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "UBI_ecrt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Fraction of UBI benefits excluded from AGI", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Fraction of UBI benefits excluded from AGI", + "description": "One minus this fraction of UBI benefits are taxable and will be added to AGI.", "section_1": "Universal Basic Income", "section_2": "UBI Taxability", - "indexable": false, - "indexed": false, - "description": "One minus this fraction of UBI benefits are taxable and will be added to AGI.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CR_RetirementSavings_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Credit for retirement savings haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Credit for retirement savings haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the retirement savings credit that can be claimed.", "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of the retirement savings credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*RetirementSavingsCredit." - }, + "irs_ref": "", + "notes": "Credit claimed will be (1-Haircut)*RetirementSavingsCredit.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "CR_ForeignTax_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Credit for foreign tax haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Credit for foreign tax haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the foreign tax credit that can be claimed.", "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of the foreign tax credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*ForeignTaxCredit." - }, + "irs_ref": "", + "notes": "Credit claimed will be (1-Haircut)*ForeignTaxCredit.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "CR_ResidentialEnergy_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Credit for residential energy haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Credit for residential energy haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the residential energy credit that can be claimed.", "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of the residential energy credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*ResidentialEnergyCredit." - }, + "irs_ref": "", + "notes": "Credit claimed will be (1-Haircut)*ResidentialEnergyCredit.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "CR_GeneralBusiness_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Credit for general business haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Credit for general business haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the general business credit that can be claimed.", "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of the general business credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*GeneralBusinessCredit." - }, + "irs_ref": "", + "notes": "Credit claimed will be (1-Haircut)*GeneralBusinessCredit.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "CR_MinimumTax_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Credit for previous year minimum tax credit haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Credit for previous year minimum tax credit haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the previous year minimum tax credit that can be claimed.", "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of the previous year minimum tax credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*PreviousYearMinimumTaxCredit." - }, + "irs_ref": "", + "notes": "Credit claimed will be (1-Haircut)*PreviousYearMinimumTaxCredit.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "CR_AmOppRefundable_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Refundable portion of the American Opportunity Credit haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Refundable portion of the American Opportunity Credit haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the refundable American Opportunity credit that can be claimed.", "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of the refundable American Opportunity credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*RefundablePortionOfAmericanOpportunityCredit." - }, + "irs_ref": "", + "notes": "Credit claimed will be (1-Haircut)*RefundablePortionOfAmericanOpportunityCredit.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "CR_AmOppNonRefundable_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Nonrefundable portion of the American Opportunity Credit haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Nonrefundable portion of the American Opportunity Credit haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the nonrefundable American Opportunity credit that can be claimed.", "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of the nonrefundable American Opportunity credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*NonRefundablePortionOfAmericanOpportunityCredit." - }, + "irs_ref": "", + "notes": "Credit claimed will be (1-Haircut)*NonRefundablePortionOfAmericanOpportunityCredit.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "CR_SchR_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Schedule R Credit haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Schedule R Credit haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of Schedule R credit that can be claimed.", "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of Schedule R credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*ScheduleRCredit" - }, + "irs_ref": "", + "notes": "Credit claimed will be (1-Haircut)*ScheduleRCredit", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "CR_OtherCredits_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Other Credits haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Other Credits haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of other credit that can be claimed.", "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of other credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*OtherCredits." - }, + "irs_ref": "", + "notes": "Credit claimed will be (1-Haircut)*OtherCredits.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "CR_Education_hc": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Education Credits haircut", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Education Credits haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of education credits that can be claimed.", "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction reduces the portion of education credits that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*EducationCredits." - }, + "irs_ref": "", + "notes": "Credit claimed will be (1-Haircut)*EducationCredits.", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": false} + }, + "CR_Charity_rt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Charity Credit rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Charity Credit rate", + "description": "If greater than zero, this decimal fraction represents the portion of total charitable contributions provided as a nonrefundable tax credit.", "section_1": "", "section_2": "", - "indexable": false, - "indexed": false, - "description": "If greater than zero, this decimal fraction represents the portion of total charitable contributions provided as a nonrefundable tax credit.", - "notes": "Credit claimed will be (rt) * (e19800 + e20100)" - }, + "irs_ref": "", + "notes": "Credit claimed will be (rt) * (e19800 + e20100)", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CR_Charity_f": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 0.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 0.0 - } - ], - "title": "Charity Credit Floor", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 9e+99 - } - }, + "long_name": "Charity Credit Floor", + "description": "Only charitable giving in excess of this dollar amount is eligible for the charity credit.", "section_1": "", "section_2": "", - "indexable": false, - "indexed": false, - "description": "Only charitable giving in excess of this dollar amount is eligible for the charity credit.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "MARS", + "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], + "value_type": "real", + "value": [[0.0, 0.0, 0.0, 0.0, 0.0]], + "valid_values": {"min": 0, "max": 9e99}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "CR_Charity_frt": { - "value": [ - { - "year": 2013, - "value": 0.0 - } - ], - "title": "Charity Credit Floor Rate", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, + "long_name": "Charity Credit Floor Rate", + "description": "Only charitable giving in excess of this decimal fraction of AGI is eligible for the charity credit.", "section_1": "", "section_2": "", - "indexable": false, - "indexed": false, - "description": "Only charitable giving in excess of this decimal fraction of AGI is eligible for the charity credit.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "real", + "value": [0.0], + "valid_values": {"min": 0, "max": 1}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "BEN_ssi_repeal": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "SSI benefit repeal switch", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "SSI benefit repeal switch", + "description": "SSI benefits can be repealed by switching this parameter to true.", "section_1": "Benefits", "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, - "description": "SSI benefits can be repealed by switching this parameter to true.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": false, "cps": true} + }, + "BEN_housing_repeal": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Housing benefit repeal switch", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Housing benefit repeal switch", + "description": "Housing benefits can be repealed by switching this parameter to true.", "section_1": "Benefits", "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, - "description": "Housing benefits can be repealed by switching this parameter to true.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": false, "cps": true} + }, + "BEN_snap_repeal": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "SNAP benefit repeal switch", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "SNAP benefit repeal switch", + "description": "SNAP benefits can be repealed by switching this parameter to true.", "section_1": "Benefits", "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, - "description": "SNAP benefits can be repealed by switching this parameter to true.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": false, "cps": true} + }, + "BEN_tanf_repeal": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "TANF benefit repeal switch", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "TANF benefit repeal switch", + "description": "TANF benefits can be repealed by switching this parameter to true.", "section_1": "Benefits", "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, - "description": "TANF benefits can be repealed by switching this parameter to true.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": false, "cps": true} + }, + "BEN_vet_repeal": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Veterans benefit repeal switch", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Veterans benefit repeal switch", + "description": "Veterans benefits can be repealed by switching this parameter to true.", "section_1": "Benefits", "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, - "description": "Veterans benefits can be repealed by switching this parameter to true.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": false, "cps": true} + }, + "BEN_wic_repeal": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "WIC benefit repeal switch", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "WIC benefit repeal switch", + "description": "WIC benefits can be repealed by switching this parameter to true.", "section_1": "Benefits", "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, - "description": "WIC benefits can be repealed by switching this parameter to true.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": false, "cps": true} + }, + "BEN_mcare_repeal": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Medicare benefit repeal switch", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Medicare benefit repeal switch", + "description": "Medicare benefits can be repealed by switching this parameter to true.", "section_1": "Benefits", "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, - "description": "Medicare benefits can be repealed by switching this parameter to true.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": false, "cps": true} + }, + "BEN_mcaid_repeal": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Medicaid benefit repeal switch", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Medicaid benefit repeal switch", + "description": "Medicaid benefits can be repealed by switching this parameter to true.", "section_1": "Benefits", "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, - "description": "Medicaid benefits can be repealed by switching this parameter to true.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": false, "cps": true} + }, + "BEN_oasdi_repeal": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Social Security benefit repeal switch", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Social Security benefit repeal switch", + "description": "Social Security benefits (e02400) can be repealed by switching this parameter to true.", "section_1": "Benefits", "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, - "description": "Social Security benefits (e02400) can be repealed by switching this parameter to true.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "BEN_ui_repeal": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Unemployment insurance benefit repeal switch", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Unemployment insurance benefit repeal switch", + "description": "Unemployment insurance benefits (e02300) can be repealed by switching this parameter to true.", "section_1": "Benefits", "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, - "description": "Unemployment insurance benefits (e02300) can be repealed by switching this parameter to true.", - "notes": "" - }, + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": true, "cps": true} + }, + "BEN_other_repeal": { - "value": [ - { - "year": 2013, - "value": false - } - ], - "title": "Other benefit repeal switch", - "type": "bool", - "validators": { - "range": { - "min": false, - "max": true - } - }, + "long_name": "Other benefit repeal switch", + "description": "Other benefits can be repealed by switching this parameter to true.", "section_1": "Benefits", "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, - "description": "Other benefits can be repealed by switching this parameter to true.", - "notes": "" + "irs_ref": "", + "notes": "", + "value_yrs": [2013], + "indexable": false, + "indexed": false, + "vi_name": "", + "vi_vals": [], + "value_type": "boolean", + "value": [false], + "valid_values": {"min": false, "max": true}, + "invalid_minmsg": "", + "invalid_maxmsg": "", + "invalid_action": "stop", + "compatible_data": {"puf": false, "cps": true} } -} \ No newline at end of file +} From 90406016fc5c15f21550bf7acf0abcd06ccac4e7 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 29 Feb 2020 12:51:56 -0500 Subject: [PATCH 17/64] Comment out code for testing _expand_array since it is tested in ParamTools --- taxcalc/tests/test_policy.py | 88 ++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index 3c26f888a..92c30d866 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -224,50 +224,50 @@ def test_multi_year_reform(): # TODO: this seems like a test of _expand_array which is # already tested within paramtools # confirm that parameters have current-law values - assert np.allclose(getattr(pol, '_EITC_c'), - Policy._expand_array( - np.array([[487, 3250, 5372, 6044], - [496, 3305, 5460, 6143], - [503, 3359, 5548, 6242], - [506, 3373, 5572, 6269], - [510, 3400, 5616, 6318], - [519, 3461, 5716, 6431], - [529, 3526, 5828, 6557]], - dtype=np.float64), - 'real', - inflate=True, - inflation_rates=iratelist, - num_years=nyrs), - atol=0.01, rtol=0.0) - assert np.allclose(getattr(pol, '_STD_Dep'), - Policy._expand_array( - np.array([1000, 1000, 1050, 1050, 1050, 1050, 1100], - dtype=np.float64), - 'real', - inflate=True, - inflation_rates=iratelist, - num_years=nyrs), - atol=0.01, rtol=0.0) - assert np.allclose(getattr(pol, '_CTC_c'), - Policy._expand_array( - np.array([1000] * 5 + [2000] * 8 + [1000], - dtype=np.float64), - 'real', - inflate=False, - inflation_rates=iratelist, - num_years=nyrs), - atol=0.01, rtol=0.0) - # this parameter uses a different indexing rate - assert np.allclose(getattr(pol, '_SS_Earnings_c'), - Policy._expand_array( - np.array([113700, 117000, 118500, 118500, 127200, - 128400, 132900], - dtype=np.float64), - 'real', - inflate=True, - inflation_rates=wratelist, - num_years=nyrs), - atol=0.01, rtol=0.0) + # assert np.allclose(getattr(pol, '_EITC_c'), + # Policy._expand_array( + # np.array([[487, 3250, 5372, 6044], + # [496, 3305, 5460, 6143], + # [503, 3359, 5548, 6242], + # [506, 3373, 5572, 6269], + # [510, 3400, 5616, 6318], + # [519, 3461, 5716, 6431], + # [529, 3526, 5828, 6557]], + # dtype=np.float64), + # 'real', + # inflate=True, + # inflation_rates=iratelist, + # num_years=nyrs), + # atol=0.01, rtol=0.0) + # assert np.allclose(getattr(pol, '_STD_Dep'), + # Policy._expand_array( + # np.array([1000, 1000, 1050, 1050, 1050, 1050, 1100], + # dtype=np.float64), + # 'real', + # inflate=True, + # inflation_rates=iratelist, + # num_years=nyrs), + # atol=0.01, rtol=0.0) + # assert np.allclose(getattr(pol, '_CTC_c'), + # Policy._expand_array( + # np.array([1000] * 5 + [2000] * 8 + [1000], + # dtype=np.float64), + # 'real', + # inflate=False, + # inflation_rates=iratelist, + # num_years=nyrs), + # atol=0.01, rtol=0.0) + # # this parameter uses a different indexing rate + # assert np.allclose(getattr(pol, '_SS_Earnings_c'), + # Policy._expand_array( + # np.array([113700, 117000, 118500, 118500, 127200, + # 128400, 132900], + # dtype=np.float64), + # 'real', + # inflate=True, + # inflation_rates=wratelist, + # num_years=nyrs), + # atol=0.01, rtol=0.0) # specify multi-year reform using a param:year:value-fomatted dictionary reform = { 'SS_Earnings_c': {2016: 300000, From d5a4e81aab8683391d236567a9d07859c9c078b4 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 29 Feb 2020 13:14:03 -0500 Subject: [PATCH 18/64] Fix cpi offset bug reported in #2381 --- taxcalc/parameters.py | 2 +- taxcalc/tests/test_policy.py | 20 +++++++++----------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index a1f0718eb..2e8ebb3c8 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -153,7 +153,7 @@ def adjust(self, params_or_path, **kwargs): cpi_min_year = min(cpi_adj["CPI_offset"], key=lambda vo: vo["year"]) # apply new CPI_offset values to inflation rates rate_adjustment_vals = filter( - lambda vo: vo["year"] >= cpi_min_year["value"], + lambda vo: vo["year"] >= cpi_min_year["year"], self._data["CPI_offset"]["value"] ) for cpi_vo in rate_adjustment_vals: diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index 92c30d866..a032d8bce 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -948,17 +948,15 @@ def test_cpi_offset_affect_on_prior_years(): p2.implement_reform(reform) start_year = p1.start_year - p1_rates = np.array(p1.inflation_rates()) - p2_rates = np.array(p2.inflation_rates()) - + p1_rates = p1.inflation_rates() + p2_rates = p2.inflation_rates() # Inflation rates prior to 2022 are the same. - np.testing.assert_allclose( - p1_rates[:2022 - start_year], - p2_rates[:2022 - start_year] - ) + for year in range(start_year, 2022): + assert p1_rates[year] == p2_rates[year], ( + f"Difference in year {year}: {p1_rates[year] - p2_rates[year]}" + ) # Inflation rate in 2022 was updated. - np.testing.assert_allclose( - p1_rates[2022 - start_year], - p2_rates[2022 - start_year] - (-0.005) - ) + assert p1_rates[2022] == p2_rates[2022] - (-0.005), ( + f"Difference in year 2022: {p1_rates[2022] - p2_rates[2022]}" + ) From 9afeb46040755e6fd3ad15601401772660df6e2a Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 29 Feb 2020 15:12:59 -0500 Subject: [PATCH 19/64] Update tests for 2017 law and tcja round trip. Also try to handle removed/renamed parameters --- taxcalc/parameters.py | 10 ++++++++- taxcalc/policy.py | 3 ++- taxcalc/tests/test_reforms.py | 38 +++++++++++++++++++---------------- 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 2e8ebb3c8..ddb0ab4d3 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -68,6 +68,8 @@ class Parameters(paramtools.Parameters): label_to_extend = "year" uses_extend_func = True + REMOVED_PARAMS = None + REDEFINED_PARAMS = None WAGE_INDEXED_PARAMS = () # Legacy class attrs @@ -380,8 +382,14 @@ def _update(self, revision, ignore_warnings, raise_errors): None ) if param not in self._data and param.split("-indexed")[0] not in self._data: + if self.REMOVED_PARAMS and param in self.REMOVED_PARAMS: + msg = self.REMOVED_PARAMS[param] + elif self.REDEFINED_PARAMS and param in self.REDEFINED_PARAMS: + msg = self.REDEFINED_PARAMS[param] + else: + msg = f"Parameter {param} does not exist." raise paramtools.ValidationError( - {"errors": {"schema": f"Parameter {param} does not exist."}}, + {"errors": {"schema": msg}}, None ) if param.endswith("-indexed"): diff --git a/taxcalc/policy.py b/taxcalc/policy.py index 7f36f4772..70dfbb0c6 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -66,8 +66,9 @@ class instance: Policy } # (2) specify which Policy parameters have been redefined recently REDEFINED_PARAMS = { + # TODO: TODO: should this be removed now? # TODO: remove the CTC_c name:message pair sometime later in 2019 - '_CTC_c': 'CTC_c was redefined in release 1.0.0' + # '_CTC_c': 'CTC_c was redefined in release 1.0.0' } # (3) specify which Policy parameters are wage (rather than price) indexed WAGE_INDEXED_PARAMS = ['SS_Earnings_c', 'SS_Earnings_thd'] diff --git a/taxcalc/tests/test_reforms.py b/taxcalc/tests/test_reforms.py index 347def3ad..4e12e4d87 100644 --- a/taxcalc/tests/test_reforms.py +++ b/taxcalc/tests/test_reforms.py @@ -27,12 +27,13 @@ def test_2017_law_reform(tests_path): with open(reform_file, 'r') as rfile: rtext = rfile.read() pol.implement_reform(Policy.read_json_reform(rtext)) + # TODO: I'm unclear on how to handle the undefined warning behavior + # since the parameter is still defined in the JSON. # eventually activate: assert not clp.parameter_warnings - ctc_c_warning = 'CTC_c was redefined in release 1.0.0\n' - assert pol.parameter_warnings == ctc_c_warning - assert not pol.parameter_errors + # ctc_c_warning = 'CTC_c was redefined in release 1.0.0\n' + # assert pol.parameter_warnings == ctc_c_warning pol.set_year(2018) - pre_mdata = pol.metadata() + pre_mdata = dict(pol.items()) # check some policy parameter values against expected values under 2017 law pre_expect = { # relation '<' implies asserting that actual < expect @@ -61,11 +62,11 @@ def test_2017_law_reform(tests_path): assert isinstance(pre_expect, dict) assert set(pre_expect.keys()).issubset(set(pre_mdata.keys())) for name in pre_expect: - aval = pre_mdata[name]['value'] - if isinstance(aval, list): - act = aval[0] # comparing only first item in a vector parameter + aval = pre_mdata[name] + if aval.ndim == 2: + act = aval[0][0] # comparing only first item in a vector parameter else: - act = aval + act = aval[0] exp = pre_expect[name]['value'] if pre_expect[name]['relation'] == '<': assert act < exp, '{} a={} !< e={}'.format(name, act, exp) @@ -91,26 +92,29 @@ def test_round_trip_tcja_reform(tests_path): # create clp metadata dictionary for current-law policy in fyear pol = Policy() pol.set_year(fyear) - clp_mdata = pol.metadata() + clp_mdata = dict(pol.items()) # create rtr metadata dictionary for round-trip reform in fyear pol = Policy() reform_file = os.path.join(tests_path, '..', 'reforms', '2017_law.json') with open(reform_file, 'r') as rfile: rtext = rfile.read() pol.implement_reform(Policy.read_json_reform(rtext)) + + # TODO: see comments in test_2017_law_reform # eventually activate: assert not clp.parameter_warnings - ctc_c_warning = 'CTC_c was redefined in release 1.0.0\n' - assert pol.parameter_warnings == ctc_c_warning - assert not pol.parameter_errors + # ctc_c_warning = 'CTC_c was redefined in release 1.0.0\n' + # assert pol.parameter_warnings == ctc_c_warning + assert not pol.errors reform_file = os.path.join(tests_path, '..', 'reforms', 'TCJA.json') with open(reform_file, 'r') as rfile: rtext = rfile.read() pol.implement_reform(Policy.read_json_reform(rtext)) + # TODO: # eventually activate: assert not clp.parameter_warnings - assert pol.parameter_warnings == ctc_c_warning - assert not pol.parameter_errors + # assert pol.parameter_warnings == ctc_c_warning + assert not pol.errors pol.set_year(fyear) - rtr_mdata = pol.metadata() + rtr_mdata = dict(pol.items()) # compare fyear policy parameter values assert clp_mdata.keys() == rtr_mdata.keys() fail_dump = False @@ -120,8 +124,8 @@ def test_round_trip_tcja_reform(tests_path): fail_params = list() msg = '\nRound-trip-reform and current-law-policy param values differ for:' for pname in clp_mdata.keys(): - rtr_val = rtr_mdata[pname]['value'] - clp_val = clp_mdata[pname]['value'] + rtr_val = rtr_mdata[pname] + clp_val = clp_mdata[pname] if not np.allclose(rtr_val, clp_val): fail_params.append(pname) msg += '\n {} in {} : rtr={} clp={}'.format( From c0a3e8160f914bc92887ecd6dc30f671dd2b16b1 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 29 Feb 2020 15:13:23 -0500 Subject: [PATCH 20/64] Re-write paramtools versions of json files --- taxcalc/consumption.json | 393 +- taxcalc/growdiff.json | 682 +- taxcalc/policy_current_law.json | 25899 +++++++++++++++++++++++------- 3 files changed, 20820 insertions(+), 6154 deletions(-) diff --git a/taxcalc/consumption.json b/taxcalc/consumption.json index 616d8cfaa..9ee073f9d 100644 --- a/taxcalc/consumption.json +++ b/taxcalc/consumption.json @@ -1,112 +1,285 @@ { - "MPC_e17500": { - "long_name": "Marginal propensity to consume medical expenses", - "description": "Defined as dollar change in medical-expense consumption divided by dollar change in income. Typical value is in [0,1] range.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": 0, "max": 1} - }, - - "MPC_e18400": { - "start_year": 2013, - "long_name": "Marginal propensity to consume state-and-local taxes", - "description": "Defined as dollar change in state-and-local-taxes consumption divided by dollar change in income. Typical value is in [0,1] range.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": 0, "max": 1} - }, - - "MPC_e19800": { - "start_year": 2013, - "long_name": "Marginal propensity to consume charity cash contributions", - "description": "Defined as dollar change in charity-cash-contribution consumption divided by dollar change in income. Typical value is in [0,1] range.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": 0, "max": 1} - }, - - "MPC_e20400": { - "start_year": 2013, - "long_name": "Marginal propensity to consume miscellaneous deduction expenses", - "description": "Defined as dollar change in miscellaneous-deduction-expense consumption divided by dollar change in income. Typical value is in [0,1] range.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": 0, "max": 1} - }, - - "BEN_housing_value": { - "long_name": "Consumption value of housing benefits", - "description": "Consumption value per dollar of housing benefits, all of which are in-kind benefits.", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 1} - }, - - "BEN_snap_value": { - "long_name": "Consumption value of SNAP benefits", - "description": "Consumption value per dollar of SNAP benefits, all of which are in-kind benefits.", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 1} - }, - - "BEN_tanf_value": { - "long_name": "Consumption value of TANF benefits", - "description": "Consumption value per dollar of TANF benefits, some of which are cash benefits and some of which are in-kind benefits.", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 1} - }, - - "BEN_vet_value": { - "long_name": "Consumption value of veterans benefits", - "description": "Consumption value per dollar of veterans benefits, some of which are in-kind benefits (only about 48% are cash benefits).", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 2} - }, - - "BEN_wic_value": { - "long_name": "Consumption value of WIC benefits", - "description": "Consumption value per dollar of WIC benefits, all of which are in-kind benefits.", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 1} - }, - - "BEN_mcare_value": { - "long_name": "Consumption value of Medicare benefits", - "description": "Consumption value per dollar of Medicare benefits, all of which are in-kind benefits.", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 2} - }, - - "BEN_mcaid_value": { - "long_name": "Consumption value of Medicaid benefits", - "description": "Consumption value per dollar of Medicaid benefits, all of which are in-kind benefits.", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 2} - }, - - "BEN_other_value": { - "long_name": "Consumption value of other benefits", - "description": "Consumption value per dollar of other benefits, some of which are in-kind benefits (somewhere between 52% and 76% are in-kind benefits).", - "value_type": "real", - "value_yrs": [2013], - "value": [1.0], - "valid_values": {"min": 0, "max": 1} - } + "schema": { + "labels": { + "year": { + "type": "int", + "validators": { + "range": { + "min": 2013, + "max": 2029 + } + } + }, + "MARS": { + "type": "str", + "validators": { + "choice": { + "choices": [ + "single", + "mjoint", + "mseparate", + "headhh", + "widow" + ] + } + } + }, + "idedtype": { + "type": "str", + "validators": { + "choice": { + "choices": [ + "med", + "sltx", + "retx", + "cas", + "misc", + "int", + "char" + ] + } + } + }, + "EIC": { + "type": "str", + "validators": { + "choice": { + "choices": [ + "0kids", + "1kid", + "2kids", + "3+kids" + ] + } + } + } + }, + "additional_members": { + "section_1": { + "type": "str" + }, + "section_2": { + "type": "str" + }, + "start_year": { + "type": "int" + }, + "indexable": { + "type": "bool" + }, + "indexed": { + "type": "bool" + }, + "compatible_data": { + "type": "compatible_data" + } + } + }, + "MPC_e17500": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Marginal propensity to consume medical expenses", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, + "description": "Defined as dollar change in medical-expense consumption divided by dollar change in income. Typical value is in [0,1] range." + }, + "MPC_e18400": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Marginal propensity to consume state-and-local taxes", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, + "start_year": 2013, + "description": "Defined as dollar change in state-and-local-taxes consumption divided by dollar change in income. Typical value is in [0,1] range." + }, + "MPC_e19800": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Marginal propensity to consume charity cash contributions", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, + "start_year": 2013, + "description": "Defined as dollar change in charity-cash-contribution consumption divided by dollar change in income. Typical value is in [0,1] range." + }, + "MPC_e20400": { + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Marginal propensity to consume miscellaneous deduction expenses", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, + "start_year": 2013, + "description": "Defined as dollar change in miscellaneous-deduction-expense consumption divided by dollar change in income. Typical value is in [0,1] range." + }, + "BEN_housing_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of housing benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, + "description": "Consumption value per dollar of housing benefits, all of which are in-kind benefits." + }, + "BEN_snap_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of SNAP benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, + "description": "Consumption value per dollar of SNAP benefits, all of which are in-kind benefits." + }, + "BEN_tanf_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of TANF benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, + "description": "Consumption value per dollar of TANF benefits, some of which are cash benefits and some of which are in-kind benefits." + }, + "BEN_vet_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of veterans benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 2 + } + }, + "description": "Consumption value per dollar of veterans benefits, some of which are in-kind benefits (only about 48% are cash benefits)." + }, + "BEN_wic_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of WIC benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, + "description": "Consumption value per dollar of WIC benefits, all of which are in-kind benefits." + }, + "BEN_mcare_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of Medicare benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 2 + } + }, + "description": "Consumption value per dollar of Medicare benefits, all of which are in-kind benefits." + }, + "BEN_mcaid_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of Medicaid benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 2 + } + }, + "description": "Consumption value per dollar of Medicaid benefits, all of which are in-kind benefits." + }, + "BEN_other_value": { + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Consumption value of other benefits", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, + "description": "Consumption value per dollar of other benefits, some of which are in-kind benefits (somewhere between 52% and 76% are in-kind benefits)." + } } \ No newline at end of file diff --git a/taxcalc/growdiff.json b/taxcalc/growdiff.json index ac2c290fe..e2f569a1c 100644 --- a/taxcalc/growdiff.json +++ b/taxcalc/growdiff.json @@ -1,233 +1,503 @@ { + "schema": { + "labels": { + "year": { + "type": "int", + "validators": { + "range": { + "min": 2013, + "max": 2029 + } + } + }, + "MARS": { + "type": "str", + "validators": { + "choice": { + "choices": [ + "single", + "mjoint", + "mseparate", + "headhh", + "widow" + ] + } + } + }, + "idedtype": { + "type": "str", + "validators": { + "choice": { + "choices": [ + "med", + "sltx", + "retx", + "cas", + "misc", + "int", + "char" + ] + } + } + }, + "EIC": { + "type": "str", + "validators": { + "choice": { + "choices": [ + "0kids", + "1kid", + "2kids", + "3+kids" + ] + } + } + } + }, + "additional_members": { + "section_1": { + "type": "str" + }, + "section_2": { + "type": "str" + }, + "start_year": { + "type": "int" + }, + "indexable": { + "type": "bool" + }, + "indexed": { + "type": "bool" + }, + "compatible_data": { + "type": "compatible_data" + } + } + }, "ABOOK": { - "long_name": "ABOOK additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABOOK extrapolates input variables: e07300 and e07400.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABOOK additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ABOOK extrapolates input variables: e07300 and e07400." + }, "ACGNS": { - "long_name": "ACGNS additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ACGNS extrapolates input variables: e01200, p22250, p23250, e24515 and e24518.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ACGNS additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ACGNS extrapolates input variables: e01200, p22250, p23250, e24515 and e24518." + }, "ACPIM": { - "long_name": "ACPIM additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ACPIM extrapolates input variables: e03270, e03290 and e17500.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ACPIM additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ACPIM extrapolates input variables: e03270, e03290 and e17500." + }, "ACPIU": { - "long_name": "ACPIU additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ACPIU is the price inflation rate used to inflate many policy parameters. Note that non-zero values of this parameter will not affect historically known values of policy parameters.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ACPIU additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ACPIU is the price inflation rate used to inflate many policy parameters. Note that non-zero values of this parameter will not affect historically known values of policy parameters." + }, "ADIVS": { - "long_name": "ADIVS additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ADIVS extrapolates input variables: e00600 and e00650.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ADIVS additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ADIVS extrapolates input variables: e00600 and e00650." + }, "AINTS": { - "long_name": "AINTS additive difference from default projection", - "description": "Default projection is in growfactors.csv file. AINTS extrapolates input variables: e00300 and e00400.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "AINTS additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. AINTS extrapolates input variables: e00300 and e00400." + }, "AIPD": { - "long_name": "AIPD additive difference from default projection", - "description": "Default projection is in growfactors.csv file. AIPD extrapolates input variables: e19200.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "AIPD additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. AIPD extrapolates input variables: e19200." + }, "ASCHCI": { - "long_name": "ASCHCI additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ASCHCI extrapolates input variables: e00900, e00900p and e00900s when they are positive.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ASCHCI additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ASCHCI extrapolates input variables: e00900, e00900p and e00900s when they are positive." + }, "ASCHCL": { - "long_name": "ASCHCL additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ASCHCL extrapolates input variables: e00900, e00900p and e00900s when they are negative.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ASCHCL additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ASCHCL extrapolates input variables: e00900, e00900p and e00900s when they are negative." + }, "ASCHEI": { - "long_name": "ASCHEI additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ASCHEI extrapolates input variables: e02000 when positive, and e26270, k1bx14p, k1bx14s and e27200 for all values.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ASCHEI additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ASCHEI extrapolates input variables: e02000 when positive, and e26270, k1bx14p, k1bx14s and e27200 for all values." + }, "ASCHEL": { - "long_name": "ASCHEL additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ASCHEL extrapolates input variable: e02000 when negative.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ASCHEL additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ASCHEL extrapolates input variable: e02000 when negative." + }, "ASCHF": { - "long_name": "ASCHF additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ASCHF extrapolates input variables: e02100, e02100p and e02100s.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ASCHF additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ASCHF extrapolates input variables: e02100, e02100p and e02100s." + }, "ASOCSEC": { - "long_name": "ASOCSEC additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ASOCSEC extrapolates input variable: e02400.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ASOCSEC additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ASOCSEC extrapolates input variable: e02400." + }, "ATXPY": { - "long_name": "ATXPY additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ATXPY extrapolates input variables: e00700, e00800, e01400, e01500, e01700, e03150, e03210, e03220, e03230, e03300, e03400, e03500, e07240, e07260, p08000, e09700, e09800, e09900, e11200, e18400, e18500, e19800, e20100, e20400, g20500, e07600, e32800, e58990, e62900, e87530, e87521 and cmbtp.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ATXPY additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ATXPY extrapolates input variables: e00700, e00800, e01400, e01500, e01700, e03150, e03210, e03220, e03230, e03300, e03400, e03500, e07240, e07260, p08000, e09700, e09800, e09900, e11200, e18400, e18500, e19800, e20100, e20400, g20500, e07600, e32800, e58990, e62900, e87530, e87521 and cmbtp." + }, "AUCOMP": { - "long_name": "AUCOMP additive difference from default projection", - "description": "Default projection is in growfactors.csv file. AUCOMP extrapolates input variable: e02300.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "AUCOMP additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. AUCOMP extrapolates input variable: e02300." + }, "AWAGE": { - "long_name": "AWAGE additive difference from default projection", - "description": "Default projection is in growfactors.csv file. AWAGE extrapolates input variables: e00200, e00200p and e00200s. Also, AWAGE is the wage growth rate used to inflate the OASDI maximum taxable earnings policy parameter, _SS_Earnings_c. Note that non-zero values of this parameter will not affect historically known values of _SS_Earnings_c.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "AWAGE additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. AWAGE extrapolates input variables: e00200, e00200p and e00200s. Also, AWAGE is the wage growth rate used to inflate the OASDI maximum taxable earnings policy parameter, _SS_Earnings_c. Note that non-zero values of this parameter will not affect historically known values of _SS_Earnings_c." + }, "ABENOTHER": { - "long_name": "ABENOTHER additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENOTHER extrapolates input variable other_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENOTHER additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ABENOTHER extrapolates input variable other_ben." + }, "ABENMCARE": { - "long_name": "ABENMCARE additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENMCARE extrapolates input variable mcare_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENMCARE additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ABENMCARE extrapolates input variable mcare_ben." + }, "ABENMCAID": { - "long_name": "ABENMCAID additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENMCAID extrapolates input variable mcaid_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENMCAID additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ABENMCAID extrapolates input variable mcaid_ben." + }, "ABENSSI": { - "long_name": "ABENSSI additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENSSI extrapolates input variable ssi_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENSSI additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ABENSSI extrapolates input variable ssi_ben." + }, "ABENSNAP": { - "long_name": "ABENSNAP additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENSNAP extrapolates input variable snap_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENSNAP additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ABENSNAP extrapolates input variable snap_ben." + }, "ABENWIC": { - "long_name": "ABENWIC additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENWIC extrapolates input variable wic_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENWIC additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ABENWIC extrapolates input variable wic_ben." + }, "ABENHOUSING": { - "long_name": "ABENHOUSING additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENHOUSING extrapolates input variable housing_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENHOUSING additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ABENHOUSING extrapolates input variable housing_ben." + }, "ABENTANF": { - "long_name": "ABENTANF additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENTANF extrapolates input variable tanf_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} - }, - + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENTANF additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ABENTANF extrapolates input variable tanf_ben." + }, "ABENVET": { - "long_name": "ABENVET additive difference from default projection", - "description": "Default projection is in growfactors.csv file. ABENVET extrapolates input variable vet_ben.", - "value_type": "real", - "value_yrs": [2013], - "value": [0.0], - "valid_values": {"min": -10, "max": 10} + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "ABENVET additive difference from default projection", + "type": "float", + "validators": { + "range": { + "min": -10, + "max": 10 + } + }, + "description": "Default projection is in growfactors.csv file. ABENVET extrapolates input variable vet_ben." } - -} +} \ No newline at end of file diff --git a/taxcalc/policy_current_law.json b/taxcalc/policy_current_law.json index 2c5093289..69ccdf56f 100644 --- a/taxcalc/policy_current_law.json +++ b/taxcalc/policy_current_law.json @@ -1,6675 +1,20898 @@ { + "schema": { + "labels": { + "year": { + "type": "int", + "validators": { + "range": { + "min": 2013, + "max": 2029 + } + } + }, + "MARS": { + "type": "str", + "validators": { + "choice": { + "choices": [ + "single", + "mjoint", + "mseparate", + "headhh", + "widow" + ] + } + } + }, + "idedtype": { + "type": "str", + "validators": { + "choice": { + "choices": [ + "med", + "sltx", + "retx", + "cas", + "misc", + "int", + "char" + ] + } + } + }, + "EIC": { + "type": "str", + "validators": { + "choice": { + "choices": [ + "0kids", + "1kid", + "2kids", + "3+kids" + ] + } + } + } + }, + "additional_members": { + "section_1": { + "type": "str" + }, + "section_2": { + "type": "str" + }, + "start_year": { + "type": "int" + }, + "indexable": { + "type": "bool" + }, + "indexed": { + "type": "bool" + }, + "compatible_data": { + "type": "compatible_data" + } + } + }, "CPI_offset": { - "long_name": "Decimal offset ADDED to unchained CPI to get parameter indexing rate", - "description": "Values are zero before 2017; reforms that introduce indexing with chained CPI would have values around -0.0025 beginning in the year before the first year policy parameters will have values computed with chained CPI.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": -0.0025 + } + ], + "title": "Decimal offset ADDED to unchained CPI to get parameter indexing rate", + "type": "float", + "validators": { + "range": { + "min": -0.005, + "max": 0.005 + } + }, "section_1": "Parameter Indexing", "section_2": "Offsets", - "irs_ref": "", - "notes": "See April 2013 CBO report entitled 'What Would Be the Effect on the Deficit of Using the Chained CPI to Index Benefit Programs and the Tax Code?', which includes this: 'The chained CPI grows more slowly than the traditional CPI does: an average of about 0.25 percentage points more slowly per year over the past decade.' ", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - -0.0025], - "valid_values": {"min": -0.005, "max": 0.005}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Values are zero before 2017; reforms that introduce indexing with chained CPI would have values around -0.0025 beginning in the year before the first year policy parameters will have values computed with chained CPI.", + "notes": "See April 2013 CBO report entitled 'What Would Be the Effect on the Deficit of Using the Chained CPI to Index Benefit Programs and the Tax Code?', which includes this: 'The chained CPI grows more slowly than the traditional CPI does: an average of about 0.25 percentage points more slowly per year over the past decade.' " + }, "FICA_ss_trt": { - "long_name": "Social Security payroll tax rate", - "description": "Social Security FICA rate, including both employer and employee.", + "value": [ + { + "year": 2013, + "value": 0.124 + } + ], + "title": "Social Security payroll tax rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Payroll Taxes", "section_2": "Social Security FICA", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.124], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Social Security FICA rate, including both employer and employee.", + "notes": "" + }, "SS_Earnings_c": { - "long_name": "Maximum taxable earnings (MTE) for Social Security", - "description": "Individual earnings below this amount are subjected to Social Security (OASDI) payroll tax.", + "value": [ + { + "year": 2013, + "value": 113700.0 + }, + { + "year": 2014, + "value": 117000.0 + }, + { + "year": 2015, + "value": 118500.0 + }, + { + "year": 2016, + "value": 118500.0 + }, + { + "year": 2017, + "value": 127200.0 + }, + { + "year": 2018, + "value": 128400.0 + }, + { + "year": 2019, + "value": 132900.0 + } + ], + "title": "Maximum taxable earnings (MTE) for Social Security", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Payroll Taxes", "section_2": "Social Security FICA", - "irs_ref": "W-2, Box 4, instructions", - "notes": "This parameter is indexed by the rate of growth in average wages, not by the price inflation rate.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [113700.0, - 117000.0, - 118500.0, - 118500.0, - 127200.0, - 128400.0, - 132900.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Individual earnings below this amount are subjected to Social Security (OASDI) payroll tax.", + "notes": "This parameter is indexed by the rate of growth in average wages, not by the price inflation rate." + }, "SS_Earnings_thd": { - "long_name": "Additional Taxable Earnings Threshold for Social Security", - "description": "Individual earnings above this threshold are subjected to Social Security (OASDI) payroll tax, in addition to earnings below the maximum taxable earnings threshold.", + "value": [ + { + "year": 2013, + "value": 9e+99 + } + ], + "title": "Additional Taxable Earnings Threshold for Social Security", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Payroll Taxes", "section_2": "Social Security FICA", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [9e99], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Individual earnings above this threshold are subjected to Social Security (OASDI) payroll tax, in addition to earnings below the maximum taxable earnings threshold.", + "notes": "" + }, "FICA_mc_trt": { - "long_name": "Medicare payroll tax rate", - "description": "Medicare FICA rate, including both employer and employee.", + "value": [ + { + "year": 2013, + "value": 0.029 + } + ], + "title": "Medicare payroll tax rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Payroll Taxes", "section_2": "Medicare FICA", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.029], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Medicare FICA rate, including both employer and employee.", + "notes": "" + }, "AMEDT_ec": { - "long_name": "Additional Medicare tax earnings exclusion", - "description": "The Additional Medicare Tax rate, AMEDT_rt, applies to all earnings in excess of this excluded amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 250000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 125000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 200000.0 + } + ], + "title": "Additional Medicare tax earnings exclusion", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Payroll Taxes", "section_2": "Additional Medicare FICA", - "irs_ref": "Form 8959, line 5, in-line. ", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[200000.0, 250000.0, 125000.0, 200000.0, 200000.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The Additional Medicare Tax rate, AMEDT_rt, applies to all earnings in excess of this excluded amount.", + "notes": "" + }, "AMEDT_rt": { - "long_name": "Additional Medicare tax rate", - "description": "This is the rate applied to the portion of Medicare wages, RRTA compensation and self-employment income exceeding the Additional Medicare Tax earning exclusion.", + "value": [ + { + "year": 2013, + "value": 0.009 + } + ], + "title": "Additional Medicare tax rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Payroll Taxes", "section_2": "Additional Medicare FICA", - "irs_ref": "Form 8959, line 7, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.009], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This is the rate applied to the portion of Medicare wages, RRTA compensation and self-employment income exceeding the Additional Medicare Tax earning exclusion.", + "notes": "" + }, "SS_thd50": { - "long_name": "Threshold for Social Security benefit taxability 1", - "description": "The first threshold for Social Security benefit taxability: if taxpayers have provisional income greater than this threshold, up to 50% of their Social Security benefit will be subject to tax under current law.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 25000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 32000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 25000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 25000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 25000.0 + } + ], + "title": "Threshold for Social Security benefit taxability 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "SS_thd85" + } + }, "section_1": "Social Security Taxability", "section_2": "Threshold For Social Security Benefit Taxability 1", - "irs_ref": "Form 1040, line 5a&b, calculation (Worksheet, line 8)", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[25000.0, 32000.0, 25000.0, 25000.0, 25000.0]], - "valid_values": {"min": 0, "max": "SS_thd85"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for SS_thd85", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The first threshold for Social Security benefit taxability: if taxpayers have provisional income greater than this threshold, up to 50% of their Social Security benefit will be subject to tax under current law.", + "notes": "" + }, "SS_percentage1": { - "long_name": "Social Security taxable income decimal fraction 1", - "description": "Under current law if their provisional income is above the first threshold for Social Security taxability but below the second threshold, taxpayers need to apply this fraction to both the excess of their provisional income over the first threshold and their Social Security benefits, and then include the smaller one in their AGI.", + "value": [ + { + "year": 2013, + "value": 0.5 + } + ], + "title": "Social Security taxable income decimal fraction 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 1040, line 5b, instructions (Social Security Worksheets, line 2 & 13)", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.5], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Under current law if their provisional income is above the first threshold for Social Security taxability but below the second threshold, taxpayers need to apply this fraction to both the excess of their provisional income over the first threshold and their Social Security benefits, and then include the smaller one in their AGI.", + "notes": "" + }, "SS_thd85": { - "long_name": "Threshold for Social Security benefit taxability 2", - "description": "The second threshold for Social Security taxability: if taxpayers have provisional income greater than this threshold, up to 85% of their Social Security benefit will be subject to tax under current law.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 34000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 44000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 34000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 34000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 34000.0 + } + ], + "title": "Threshold for Social Security benefit taxability 2", + "type": "float", + "validators": { + "range": { + "min": "SS_thd50", + "max": 9e+99 + } + }, "section_1": "Social Security Taxability", "section_2": "Threshold For Social Security Benefit Taxability 2", - "irs_ref": "Form 1040, line 5a&b, calculation (Worksheet, add line 10 values to line 8).", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[34000.0, 44000.0, 34000.0, 34000.0, 34000.0]], - "valid_values": {"min": "SS_thd50", "max": 9e99}, - "invalid_minmsg": "for SS_thd50", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The second threshold for Social Security taxability: if taxpayers have provisional income greater than this threshold, up to 85% of their Social Security benefit will be subject to tax under current law.", + "notes": "" + }, "SS_percentage2": { - "long_name": "Social Security taxable income decimal fraction 2", - "description": "Under current law if their provisional income is above the second threshold for Social Security taxability, taxpayers need to apply this fraction to both the excess of their provisional income over the second threshold and their social security benefits, and then include the smaller one in their AGI.", + "value": [ + { + "year": 2013, + "value": 0.85 + } + ], + "title": "Social Security taxable income decimal fraction 2", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 1040, line 5b, instructions (Social Security Worksheets, line 15)", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.85], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Under current law if their provisional income is above the second threshold for Social Security taxability, taxpayers need to apply this fraction to both the excess of their provisional income over the second threshold and their social security benefits, and then include the smaller one in their AGI.", + "notes": "" + }, "ALD_StudentLoan_hc": { - "long_name": "Adjustment for student loan interest haircut", - "description": "This decimal fraction can be applied to limit the student loan interest adjustment allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Adjustment for student loan interest haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 1), line 33", - "notes": "The final adjustment amount will be (1-Haircut)*StudentLoanInterest.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This decimal fraction can be applied to limit the student loan interest adjustment allowed.", + "notes": "The final adjustment amount will be (1-Haircut)*StudentLoanInterest." + }, "ALD_SelfEmploymentTax_hc": { - "long_name": "Adjustment for self-employment tax haircut", - "description": "This decimal fraction, if greater than zero, reduces the employer equivalent portion of self-employment adjustment.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Adjustment for self-employment tax haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 4), line 57", - "notes": "The final adjustment amount would be (1-Haircut)*SelfEmploymentTaxAdjustment.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This decimal fraction, if greater than zero, reduces the employer equivalent portion of self-employment adjustment.", + "notes": "The final adjustment amount would be (1-Haircut)*SelfEmploymentTaxAdjustment." + }, "ALD_SelfEmp_HealthIns_hc": { - "long_name": "Adjustment for self employed health insurance haircut", - "description": "This decimal fraction, if greater than zero, reduces the health insurance adjustment for self-employed taxpayers.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Adjustment for self employed health insurance haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 4), line 61", - "notes": "The final adjustment amount would be (1-Haircut)*SelfEmployedHealthInsuranceAdjustment.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This decimal fraction, if greater than zero, reduces the health insurance adjustment for self-employed taxpayers.", + "notes": "The final adjustment amount would be (1-Haircut)*SelfEmployedHealthInsuranceAdjustment." + }, "ALD_KEOGH_SEP_hc": { - "long_name": "Adjustment for contributions to either KEOGH or SEP plan haircut", - "description": "Under current law, contributions to Keogh or SEP plans can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Adjustment for contributions to either KEOGH or SEP plan haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 1), line 28", - "notes": "The final adjustment amount is (1-Haircut)*KEOGH_SEP_Contributinos.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Under current law, contributions to Keogh or SEP plans can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", + "notes": "The final adjustment amount is (1-Haircut)*KEOGH_SEP_Contributinos." + }, "ALD_EarlyWithdraw_hc": { - "long_name": "Adjustment for early withdrawal penalty haircut", - "description": "Under current law, early withdraw penalty can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Adjustment for early withdrawal penalty haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 1), line 30", - "notes": "The final adjustment amount is (1-Haircut)*EarlyWithdrawPenalty.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "Under current law, early withdraw penalty can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", + "notes": "The final adjustment amount is (1-Haircut)*EarlyWithdrawPenalty." + }, "ALD_AlimonyPaid_hc": { - "long_name": "Adjustment for alimony-paid haircut", - "description": "Under pre-TCJA law, the full amount of alimony paid is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 1.0 + }, + { + "year": 2020, + "value": 1.0 + }, + { + "year": 2021, + "value": 1.0 + }, + { + "year": 2022, + "value": 1.0 + }, + { + "year": 2023, + "value": 1.0 + }, + { + "year": 2024, + "value": 1.0 + }, + { + "year": 2025, + "value": 1.0 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Adjustment for alimony-paid haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 1), line 31", - "notes": "The final adjustment amount would be (1-Haircut)*AlimonyPaid.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "Under pre-TCJA law, the full amount of alimony paid is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", + "notes": "The final adjustment amount would be (1-Haircut)*AlimonyPaid." + }, "ALD_AlimonyReceived_hc": { - "long_name": "Adjustment for alimony-received haircut", - "description": "Under pre-TCJA law, none of alimony received is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", + "value": [ + { + "year": 2013, + "value": 1.0 + }, + { + "year": 2014, + "value": 1.0 + }, + { + "year": 2015, + "value": 1.0 + }, + { + "year": 2016, + "value": 1.0 + }, + { + "year": 2017, + "value": 1.0 + }, + { + "year": 2018, + "value": 1.0 + }, + { + "year": 2019, + "value": 0.0 + }, + { + "year": 2020, + "value": 0.0 + }, + { + "year": 2021, + "value": 0.0 + }, + { + "year": 2022, + "value": 0.0 + }, + { + "year": 2023, + "value": 0.0 + }, + { + "year": 2024, + "value": 0.0 + }, + { + "year": 2025, + "value": 0.0 + }, + { + "year": 2026, + "value": 1.0 + } + ], + "title": "Adjustment for alimony-received haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "Form 1040 (Schedule 1), line 11 (new with TCJA)", - "notes": "The final adjustment amount would be (1-Haircut)*AlimonyReceived.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Under pre-TCJA law, none of alimony received is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", + "notes": "The final adjustment amount would be (1-Haircut)*AlimonyReceived." + }, "ALD_EducatorExpenses_hc": { - "long_name": "Deduction for educator expenses haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of educator expenses that can be deducted from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Deduction for educator expenses haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "", - "notes": "The final adjustment amount would be (1-Haircut)*EducatorExpenses.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "If greater than zero, this decimal fraction reduces the portion of educator expenses that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*EducatorExpenses." + }, "ALD_HSADeduction_hc": { - "long_name": "Deduction for HSA deduction haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of a taxpayer's HSA deduction that can be deducted from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Deduction for HSA deduction haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "", - "notes": "The final adjustment amount would be (1-Haircut)*HSA_Deduction.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "If greater than zero, this decimal fraction reduces the portion of a taxpayer's HSA deduction that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*HSA_Deduction." + }, "ALD_IRAContributions_hc": { - "long_name": "Deduction for IRA contributions haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of IRA contributions that can be deducted from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Deduction for IRA contributions haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "", - "notes": "The final adjustment amount would be (1-Haircut)*IRA_Contribution.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "If greater than zero, this decimal fraction reduces the portion of IRA contributions that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*IRA_Contribution." + }, "ALD_DomesticProduction_hc": { - "long_name": "Deduction for domestic production activity haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of domestic production activity that can be deducted from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 1.0 + }, + { + "year": 2019, + "value": 1.0 + }, + { + "year": 2020, + "value": 1.0 + }, + { + "year": 2021, + "value": 1.0 + }, + { + "year": 2022, + "value": 1.0 + }, + { + "year": 2023, + "value": 1.0 + }, + { + "year": 2024, + "value": 1.0 + }, + { + "year": 2025, + "value": 1.0 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Deduction for domestic production activity haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "", - "notes": "The final adjustment amount would be (1-Haircut)*DomesticProductionActivity.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "If greater than zero, this decimal fraction reduces the portion of domestic production activity that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*DomesticProductionActivity." + }, "ALD_Tuition_hc": { - "long_name": "Deduction for tuition and fees haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of tuition and fees that can be deducted from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 1.0 + }, + { + "year": 2019, + "value": 1.0 + } + ], + "title": "Deduction for tuition and fees haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Adjustment Haircuts", - "irs_ref": "", - "notes": "The final adjustment amount would be (1-Haircut)*TuitionFees.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "If greater than zero, this decimal fraction reduces the portion of tuition and fees that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*TuitionFees." + }, "ALD_InvInc_ec_rt": { - "long_name": "Investment income exclusion rate haircut", - "description": "Decimal fraction of investment income base that can be excluded from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Investment income exclusion rate haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Exclusions", - "irs_ref": "Form 1040, line 2a", - "notes": "The final taxable investment income will be (1-_ALD_InvInc_ec_rt)*investment_income_base. Even though the excluded portion of investment income is not included in AGI, it still is included in investment income used to calculate the Net Investment Income Tax and Earned Income Tax Credit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Decimal fraction of investment income base that can be excluded from AGI.", + "notes": "The final taxable investment income will be (1-_ALD_InvInc_ec_rt)*investment_income_base. Even though the excluded portion of investment income is not included in AGI, it still is included in investment income used to calculate the Net Investment Income Tax and Earned Income Tax Credit." + }, "ALD_Dependents_hc": { - "long_name": "Deduction for childcare costs haircut", - "description": "This decimal fraction, if greater than zero, reduces the portion of childcare costs that can be deducted from AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Deduction for childcare costs haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Above The Line Deductions", "section_2": "Child And Elderly Care", - "irs_ref": "", - "notes": "The final adjustment would be (1-Haircut)*AverageChildcareCosts.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This decimal fraction, if greater than zero, reduces the portion of childcare costs that can be deducted from AGI.", + "notes": "The final adjustment would be (1-Haircut)*AverageChildcareCosts." + }, "ALD_Dependents_Child_c": { - "long_name": "National average childcare costs: ceiling for available childcare deduction.", - "description": "The weighted average of childcare costs in the US. 7165 is the weighted average from the 'Child Care in America: 2016 State Fact Sheets'.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 0.0 + } + ], + "title": "National average childcare costs: ceiling for available childcare deduction.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Above The Line Deductions", "section_2": "Child And Elderly Care", - "irs_ref": "", - "notes": "This is a weighted average of childcare costs in each state", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The weighted average of childcare costs in the US. 7165 is the weighted average from the 'Child Care in America: 2016 State Fact Sheets'.", + "notes": "This is a weighted average of childcare costs in each state" + }, "ALD_Dependents_Elder_c": { - "long_name": "Ceiling for elderly care deduction proposed in Trump's tax plan", - "description": "A taxpayer can take an above the line deduction up to this amount if they have an elderly dependent. The Trump 2016 campaign proposal was for $5000.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 0.0 + } + ], + "title": "Ceiling for elderly care deduction proposed in Trump's tax plan", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Above The Line Deductions", "section_2": "Child And Elderly Care", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "A taxpayer can take an above the line deduction up to this amount if they have an elderly dependent. The Trump 2016 campaign proposal was for $5000.", + "notes": "" + }, "ALD_Dependents_thd": { - "long_name": "Maximum level of income to qualify for the dependent care deduction", - "description": "A taxpayer can only claim the dependent care deduction if their total income is below this level. The Trump 2016 campaign proposal was for 250000 single, 500000 joint, 250000 separate, 500000 head of household].", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Maximum level of income to qualify for the dependent care deduction", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Above The Line Deductions", "section_2": "Child And Elderly Care", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "A taxpayer can only claim the dependent care deduction if their total income is below this level. The Trump 2016 campaign proposal was for 250000 single, 500000 joint, 250000 separate, 500000 head of household].", + "notes": "" + }, "ALD_BusinessLosses_c": { - "long_name": "Maximum amount of business losses deductible", - "description": "Business losses in excess of this amount may not be deducted from AGI.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 250000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 250000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 250000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 500000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 255000.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 510000.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 255000.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 255000.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 510000.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 259743.0 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 519486.0 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 259743.0 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 259743.0 + }, + { + "year": 2020, + "MARS": "widow", + "value": 519486.0 + }, + { + "year": 2021, + "MARS": "single", + "value": 265795.01 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 531590.02 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 265795.01 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 265795.01 + }, + { + "year": 2021, + "MARS": "widow", + "value": 531590.02 + }, + { + "year": 2022, + "MARS": "single", + "value": 271881.72 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 543763.44 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 271881.72 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 271881.72 + }, + { + "year": 2022, + "MARS": "widow", + "value": 543763.44 + }, + { + "year": 2023, + "MARS": "single", + "value": 278080.62 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 556161.24 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 278080.62 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 278080.62 + }, + { + "year": 2023, + "MARS": "widow", + "value": 556161.24 + }, + { + "year": 2024, + "MARS": "single", + "value": 284226.2 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 568452.41 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 284226.2 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 284226.2 + }, + { + "year": 2024, + "MARS": "widow", + "value": 568452.41 + }, + { + "year": 2025, + "MARS": "single", + "value": 290223.38 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 580446.75 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 290223.38 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 290223.38 + }, + { + "year": 2025, + "MARS": "widow", + "value": 580446.75 + }, + { + "year": 2026, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Maximum amount of business losses deductible", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Above The Line Deductions", "section_2": "Misc. Exclusions", - "irs_ref": "Form 461, line 15, in-line", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [250000.0, 500000.0, 250000.0, 250000.0, 500000.0], - [255000.0, 510000.0, 255000.0, 255000.0, 510000.0], - [259743.0, 519486.0, 259743.0, 259743.0, 519486.0], - [265795.01, 531590.02, 265795.01, 265795.01, 531590.02], - [271881.72, 543763.44, 271881.72, 271881.72, 543763.44], - [278080.62, 556161.24, 278080.62, 278080.62, 556161.24], - [284226.2, 568452.41, 284226.2, 284226.2, 568452.41], - [290223.38, 580446.75, 290223.38, 290223.38, 580446.75], - [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Business losses in excess of this amount may not be deducted from AGI.", + "notes": "" + }, "II_em": { - "long_name": "Personal and dependent exemption amount", - "description": "Subtracted from AGI in the calculation of taxable income, per taxpayer and dependent.", + "value": [ + { + "year": 2013, + "value": 3900.0 + }, + { + "year": 2014, + "value": 3950.0 + }, + { + "year": 2015, + "value": 4000.0 + }, + { + "year": 2016, + "value": 4050.0 + }, + { + "year": 2017, + "value": 4050.0 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 0.0 + }, + { + "year": 2020, + "value": 0.0 + }, + { + "year": 2021, + "value": 0.0 + }, + { + "year": 2022, + "value": 0.0 + }, + { + "year": 2023, + "value": 0.0 + }, + { + "year": 2024, + "value": 0.0 + }, + { + "year": 2025, + "value": 0.0 + }, + { + "year": 2026, + "value": 4901.0 + } + ], + "title": "Personal and dependent exemption amount", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Personal Exemptions", "section_2": "Personal And Dependent Exemption Amount", - "irs_ref": "Form 1040, line 42. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [3900.00, - 3950.00, - 4000.00, - 4050.00, - 4050.00, - 0.00, - 0.00, - 0.00, - 0.00, - 0.00, - 0.00, - 0.00, - 0.00, - 4901.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Subtracted from AGI in the calculation of taxable income, per taxpayer and dependent.", + "notes": "" + }, "II_em_ps": { - "long_name": "Personal exemption phaseout starting income", - "description": "If taxpayers' AGI is above this level, their personal exemption will start to decrease at the personal exemption phaseout rate (PEP provision).", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 250000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 300000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 150000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 275000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 300000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 254200.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 305050.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 152525.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 279650.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 305050.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 258250.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 309900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 154950.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 284040.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 309900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 259400.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 311300.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 155650.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 285350.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 311300.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 261500.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 313800.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 156900.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 287650.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 313800.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Personal exemption phaseout starting income", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 1040, line 42, instruction (Worksheet).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[250000.0, 300000.0, 150000.0, 275000.0, 300000.0], - [254200.0, 305050.0, 152525.0, 279650.0, 305050.0], - [258250.0, 309900.0, 154950.0, 284040.0, 309900.0], - [259400.0, 311300.0, 155650.0, 285350.0, 311300.0], - [261500.0, 313800.0, 156900.0, 287650.0, 313800.0], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "If taxpayers' AGI is above this level, their personal exemption will start to decrease at the personal exemption phaseout rate (PEP provision).", + "notes": "" + }, "II_prt": { - "long_name": "Personal exemption phaseout rate", - "description": "Personal exemption amount will decrease by this rate for each dollar of AGI exceeding exemption phaseout start.", + "value": [ + { + "year": 2013, + "value": 0.02 + } + ], + "title": "Personal exemption phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Exemptions", "section_2": "Personal Exemption Phaseout Rate", - "irs_ref": "Form 1040, line 42, instruction (Worksheet).", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.02], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Personal exemption amount will decrease by this rate for each dollar of AGI exceeding exemption phaseout start.", + "notes": "" + }, "II_no_em_nu18": { - "long_name": "Repeal personal exemptions for dependents under age 18", - "description": "Total personal exemptions will be decreased by the number of dependents under the age of 18.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Repeal personal exemptions for dependents under age 18", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Personal Exemptions", "section_2": "Repeal for Dependents Under Age 18", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Total personal exemptions will be decreased by the number of dependents under the age of 18.", + "notes": "" + }, "STD": { - "long_name": "Standard deduction amount", - "description": "Amount filing unit can use as a standard deduction.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 6100.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 12200.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 6100.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 8950.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 12200.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 6200.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 12400.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 6200.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9100.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 12400.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 6300.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 12600.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 6300.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9250.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 12600.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 6300.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 12600.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 6300.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9300.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 12600.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 6350.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 12700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 6350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9350.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 12700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 12000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 24000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 12000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 18000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 24000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 12200.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 24400.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 12200.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 18350.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 24400.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 12426.92 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 24853.84 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 12426.92 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 18691.31 + }, + { + "year": 2020, + "MARS": "widow", + "value": 24853.84 + }, + { + "year": 2021, + "MARS": "single", + "value": 12716.47 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 25432.93 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 12716.47 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 19126.82 + }, + { + "year": 2021, + "MARS": "widow", + "value": 25432.93 + }, + { + "year": 2022, + "MARS": "single", + "value": 13007.67 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 26015.35 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 13007.67 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 19564.82 + }, + { + "year": 2022, + "MARS": "widow", + "value": 26015.35 + }, + { + "year": 2023, + "MARS": "single", + "value": 13304.25 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 26608.5 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 13304.25 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 20010.9 + }, + { + "year": 2023, + "MARS": "widow", + "value": 26608.5 + }, + { + "year": 2024, + "MARS": "single", + "value": 13598.27 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 27196.55 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 13598.27 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 20453.14 + }, + { + "year": 2024, + "MARS": "widow", + "value": 27196.55 + }, + { + "year": 2025, + "MARS": "single", + "value": 13885.2 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 27770.39 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 13885.2 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 20884.7 + }, + { + "year": 2025, + "MARS": "widow", + "value": 27770.39 + }, + { + "year": 2026, + "MARS": "single", + "value": 7685.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 15369.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 7685.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 11315.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 15369.0 + } + ], + "title": "Standard deduction amount", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Standard Deduction", "section_2": "Standard Deduction Amount", - "irs_ref": "Form 1040, line 8, instructions. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[6100.00, 12200.00, 6100.00, 8950.00, 12200.00], - [6200.00, 12400.00, 6200.00, 9100.00, 12400.00], - [6300.00, 12600.00, 6300.00, 9250.00, 12600.00], - [6300.00, 12600.00, 6300.00, 9300.00, 12600.00], - [6350.00, 12700.00, 6350.00, 9350.00, 12700.00], - [12000.0, 24000.0, 12000.0, 18000.0, 24000.0], - [12200.0, 24400.0, 12200.0, 18350.0, 24400.0], - [12426.92, 24853.84, 12426.92, 18691.31, 24853.84], - [12716.47, 25432.93, 12716.47, 19126.82, 25432.93], - [13007.67, 26015.35, 13007.67, 19564.82, 26015.35], - [13304.25, 26608.5, 13304.25, 20010.9, 26608.5], - [13598.27, 27196.55, 13598.27, 20453.14, 27196.55], - [13885.2, 27770.39, 13885.2, 20884.7, 27770.39], - [7685.0, 15369.0, 7685.0, 11315.0, 15369.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Amount filing unit can use as a standard deduction.", + "notes": "" + }, "STD_Dep": { - "long_name": "Standard deduction for dependents", - "description": "This is the maximum standard deduction for dependents.", + "value": [ + { + "year": 2013, + "value": 1000.0 + }, + { + "year": 2014, + "value": 1000.0 + }, + { + "year": 2015, + "value": 1050.0 + }, + { + "year": 2016, + "value": 1050.0 + }, + { + "year": 2017, + "value": 1050.0 + }, + { + "year": 2018, + "value": 1050.0 + }, + { + "year": 2019, + "value": 1100.0 + } + ], + "title": "Standard deduction for dependents", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 1040, line 8, instructions. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1000.0, - 1000.0, - 1050.0, - 1050.0, - 1050.0, - 1050.0, - 1100.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This is the maximum standard deduction for dependents.", + "notes": "" + }, "STD_Aged": { - "long_name": "Additional standard deduction for blind and aged", - "description": "To get the standard deduction for aged or blind individuals, taxpayers need to add this value to regular standard deduction.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 1500.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 1200.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 1200.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 1500.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 1500.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 1550.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 1200.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 1200.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 1550.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 1550.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 1550.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 1250.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 1250.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 1550.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 1550.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 1550.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 1250.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 1250.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 1550.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 1550.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 1550.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 1250.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 1250.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 1550.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 1550.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 1600.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 1300.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 1300.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 1600.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 1300.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 1650.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 1300.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 1300.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 1650.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 1300.0 + } + ], + "title": "Additional standard deduction for blind and aged", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Standard Deduction", "section_2": "Additional Standard Deduction For Blind And Aged", - "irs_ref": "Form 1040, line 8, calculation (the difference of the two tables given in the instruction).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[1500.0, 1200.0, 1200.0, 1500.0, 1500.0], - [1550.0, 1200.0, 1200.0, 1550.0, 1550.0], - [1550.0, 1250.0, 1250.0, 1550.0, 1550.0], - [1550.0, 1250.0, 1250.0, 1550.0, 1550.0], - [1550.0, 1250.0, 1250.0, 1550.0, 1550.0], - [1600.0, 1300.0, 1300.0, 1600.0, 1300.0], - [1650.0, 1300.0, 1300.0, 1650.0, 1300.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "To get the standard deduction for aged or blind individuals, taxpayers need to add this value to regular standard deduction.", + "notes": "" + }, "STD_allow_charity_ded_nonitemizers": { - "long_name": "Allow standard deduction filers to take the charitable contributions deduction", - "description": "Extends the charitable contributions deduction to taxpayers who take the standard deduction. The same ceilings, floor, and haircuts applied to itemized deduction for charitable contributions also apply here.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Allow standard deduction filers to take the charitable contributions deduction", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "", "section_2": "", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Extends the charitable contributions deduction to taxpayers who take the standard deduction. The same ceilings, floor, and haircuts applied to itemized deduction for charitable contributions also apply here.", + "notes": "" + }, "II_credit": { - "long_name": "Personal refundable credit maximum amount", - "description": "This credit amount is fully refundable and is phased out based on AGI. It is available to tax units who would otherwise not file.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Personal refundable credit maximum amount", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Personal Refundable Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This credit amount is fully refundable and is phased out based on AGI. It is available to tax units who would otherwise not file.", + "notes": "" + }, "II_credit_ps": { - "long_name": "Personal refundable credit phaseout start", - "description": "The personal refundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Personal refundable credit phaseout start", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Personal Refundable Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The personal refundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", + "notes": "" + }, "II_credit_prt": { - "long_name": "Personal refundable credit phaseout rate", - "description": "The personal refundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_ps threshold.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Personal refundable credit phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Refundable Credits", "section_2": "Personal Refundable Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The personal refundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_ps threshold.", + "notes": "" + }, "II_credit_nr": { - "long_name": "Personal nonrefundable credit maximum amount", - "description": "This credit amount is not refundable and is phased out based on AGI.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Personal nonrefundable credit maximum amount", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Personal Nonrefundable Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This credit amount is not refundable and is phased out based on AGI.", + "notes": "" + }, "II_credit_nr_ps": { - "long_name": "Personal nonrefundable credit phaseout start", - "description": "The personal nonrefundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Personal nonrefundable credit phaseout start", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Personal Nonrefundable Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The personal nonrefundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", + "notes": "" + }, "II_credit_nr_prt": { - "long_name": "Personal nonrefundable credit phaseout rate", - "description": "The personal nonrefundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_nr_ps threshold.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Personal nonrefundable credit phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Personal Nonrefundable Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The personal nonrefundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_nr_ps threshold.", + "notes": "" + }, "ID_Medical_frt": { - "long_name": "Floor (as a decimal fraction of AGI) for deductible medical expenses.", - "description": "Taxpayers are eligible to deduct the portion of their medical expenses exceeding this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 0.1 + }, + { + "year": 2014, + "value": 0.1 + }, + { + "year": 2015, + "value": 0.1 + }, + { + "year": 2016, + "value": 0.1 + }, + { + "year": 2017, + "value": 0.075 + }, + { + "year": 2018, + "value": 0.075 + }, + { + "year": 2019, + "value": 0.075 + } + ], + "title": "Floor (as a decimal fraction of AGI) for deductible medical expenses.", + "type": "float", + "validators": { + "range": { + "min": 0.075, + "max": 0.1, + "level": "warn" + } + }, "section_1": "Itemized Deductions", "section_2": "Medical Expenses", - "irs_ref": "Form 1040 Schedule A, line 3, in-line. ", - "notes": "When using PUF data, lowering this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.100, - 0.100, - 0.100, - 0.100, - 0.075, - 0.075, - 0.075], - "valid_values": {"min": 0.075, "max": 0.100}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "warn", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Taxpayers are eligible to deduct the portion of their medical expenses exceeding this fraction of AGI.", + "notes": "When using PUF data, lowering this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor." + }, "ID_Medical_frt_add4aged": { - "long_name": "Addon floor (as a decimal fraction of AGI) for deductible medical expenses for elderly filing units.", - "description": "Elderly taxpayers have this fraction added to the value of the regular floor rate for deductible medical expenses. This fraction was -0.025 from 2013 to 2016, but that was temporary and it changed to zero beginning in 2017.", + "value": [ + { + "year": 2013, + "value": -0.025 + }, + { + "year": 2014, + "value": -0.025 + }, + { + "year": 2015, + "value": -0.025 + }, + { + "year": 2016, + "value": -0.025 + }, + { + "year": 2017, + "value": 0.0 + } + ], + "title": "Addon floor (as a decimal fraction of AGI) for deductible medical expenses for elderly filing units.", + "type": "float", + "validators": { + "range": { + "min": -0.025, + "max": 0.0, + "level": "warn" + } + }, "section_1": "Itemized Deductions", "section_2": "Medical Expenses", - "irs_ref": "Form 1040 Schedule A, line 3, in-line. ", - "notes": "When using PUF data, changing this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [-0.025, - -0.025, - -0.025, - -0.025, - 0.0], - "valid_values": {"min": -0.025, "max": 0.0}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "warn", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Elderly taxpayers have this fraction added to the value of the regular floor rate for deductible medical expenses. This fraction was -0.025 from 2013 to 2016, but that was temporary and it changed to zero beginning in 2017.", + "notes": "When using PUF data, changing this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor." + }, "ID_Medical_hc": { - "long_name": "Medical expense deduction haircut", - "description": "This decimal fraction can be applied to limit the amount of medical expense deduction allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Medical expense deduction haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Medical Expenses", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This decimal fraction can be applied to limit the amount of medical expense deduction allowed.", + "notes": "" + }, "ID_Medical_c": { - "long_name": "Ceiling on the amount of medical expense deduction allowed (dollars)", - "description": "The amount of medical expense deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of medical expense deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Medical Expenses", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The amount of medical expense deduction is limited to this dollar amount.", + "notes": "" + }, "ID_StateLocalTax_hc": { - "long_name": "State and local income and sales taxes deduction haircut.", - "description": "This decimal fraction reduces the state and local income and sales tax deduction.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "State and local income and sales taxes deduction haircut.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "State And Local Income And Sales Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This decimal fraction reduces the state and local income and sales tax deduction.", + "notes": "" + }, "ID_StateLocalTax_crt": { - "long_name": "Ceiling (as a decimal fraction of AGI) for the combination of all state and local income and sales tax deductions.", - "description": "The total deduction for state and local taxes is capped at this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 9e+99 + } + ], + "title": "Ceiling (as a decimal fraction of AGI) for the combination of all state and local income and sales tax deductions.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "State And Local Income And Sales Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [9e99], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The total deduction for state and local taxes is capped at this fraction of AGI.", + "notes": "" + }, "ID_StateLocalTax_c": { - "long_name": "Ceiling on the amount of state and local income and sales taxes deduction allowed (dollars)", - "description": "The amount of state and local income and sales taxes deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of state and local income and sales taxes deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "State And Local Income And Sales Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The amount of state and local income and sales taxes deduction is limited to this dollar amount.", + "notes": "" + }, "ID_RealEstate_hc": { - "long_name": "State, local, and foreign real estate taxes deduction haircut.", - "description": "This decimal fraction reduces real estate taxes paid eligible to deduct in itemized deduction.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "State, local, and foreign real estate taxes deduction haircut.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "State, Local, And Foreign Real Estate Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This decimal fraction reduces real estate taxes paid eligible to deduct in itemized deduction.", + "notes": "" + }, "ID_RealEstate_crt": { - "long_name": "Ceiling (as a decimal fraction of AGI) for the combination of all state, local, and foreign real estate tax deductions.", - "description": "The total deduction for all real estate taxes is capped at this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 9e+99 + } + ], + "title": "Ceiling (as a decimal fraction of AGI) for the combination of all state, local, and foreign real estate tax deductions.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "State, Local, And Foreign Real Estate Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [9e99], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The total deduction for all real estate taxes is capped at this fraction of AGI.", + "notes": "" + }, "ID_RealEstate_c": { - "long_name": "Ceiling on the amount of state, local, and foreign real estate taxes deduction allowed (dollars)", - "description": "The amount of real estate taxes deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of state, local, and foreign real estate taxes deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "State, Local, And Foreign Real Estate Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The amount of real estate taxes deduction is limited to this dollar amount.", + "notes": "" + }, "ID_AllTaxes_hc": { - "long_name": "State and local income, sales, and real estate tax deduction haircut.", - "description": "This decimal fraction reduces all state and local taxes paid eligible to deduct in itemized deduction.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "State and local income, sales, and real estate tax deduction haircut.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "State And Local Taxes And Real Estate Taxes", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This decimal fraction reduces all state and local taxes paid eligible to deduct in itemized deduction.", + "notes": "" + }, "ID_AllTaxes_c": { - "long_name": "Ceiling on the amount of state and local income, sales and real estate tax deductions allowed (dollars)", - "description": "The amount of state and local income, sales and real estate tax deductions is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 10000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 10000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 5000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 10000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 10000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 10000.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 10000.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 5000.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 10000.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 10000.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 10000.0 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 10000.0 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 5000.0 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 10000.0 + }, + { + "year": 2020, + "MARS": "widow", + "value": 10000.0 + }, + { + "year": 2021, + "MARS": "single", + "value": 10000.0 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 10000.0 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 5000.0 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 10000.0 + }, + { + "year": 2021, + "MARS": "widow", + "value": 10000.0 + }, + { + "year": 2022, + "MARS": "single", + "value": 10000.0 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 10000.0 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 5000.0 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 10000.0 + }, + { + "year": 2022, + "MARS": "widow", + "value": 10000.0 + }, + { + "year": 2023, + "MARS": "single", + "value": 10000.0 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 10000.0 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 5000.0 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 10000.0 + }, + { + "year": 2023, + "MARS": "widow", + "value": 10000.0 + }, + { + "year": 2024, + "MARS": "single", + "value": 10000.0 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 10000.0 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 5000.0 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 10000.0 + }, + { + "year": 2024, + "MARS": "widow", + "value": 10000.0 + }, + { + "year": 2025, + "MARS": "single", + "value": 10000.0 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 10000.0 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 5000.0 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 10000.0 + }, + { + "year": 2025, + "MARS": "widow", + "value": 10000.0 + }, + { + "year": 2026, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of state and local income, sales and real estate tax deductions allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "State And Local Taxes And Real Estate Taxes", - "irs_ref": "Form 1040 Schedule A, line 5e, in-line.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], - [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], - [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], - [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], - [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], - [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], - [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], - [10000.0, 10000.0, 5000.0, 10000.0, 10000.0], - [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The amount of state and local income, sales and real estate tax deductions is limited to this dollar amount.", + "notes": "" + }, "ID_InterestPaid_hc": { - "long_name": "Interest paid deduction haircut", - "description": "This decimal fraction can be applied to limit the amount of interest paid deduction allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Interest paid deduction haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Interest Paid", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This decimal fraction can be applied to limit the amount of interest paid deduction allowed.", + "notes": "" + }, "ID_InterestPaid_c": { - "long_name": "Ceiling on the amount of interest paid deduction allowed (dollars)", - "description": "The amount of interest paid deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of interest paid deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Interest Paid", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The amount of interest paid deduction is limited to this dollar amount.", + "notes": "" + }, "ID_Charity_crt_all": { - "long_name": "Ceiling (as a decimal fraction of AGI) for all charitable contribution deductions", - "description": "The total deduction for charity is capped at this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 0.5 + }, + { + "year": 2014, + "value": 0.5 + }, + { + "year": 2015, + "value": 0.5 + }, + { + "year": 2016, + "value": 0.5 + }, + { + "year": 2017, + "value": 0.5 + }, + { + "year": 2018, + "value": 0.6 + }, + { + "year": 2019, + "value": 0.6 + }, + { + "year": 2020, + "value": 0.6 + }, + { + "year": 2021, + "value": 0.6 + }, + { + "year": 2022, + "value": 0.6 + }, + { + "year": 2023, + "value": 0.6 + }, + { + "year": 2024, + "value": 0.6 + }, + { + "year": 2025, + "value": 0.6 + }, + { + "year": 2026, + "value": 0.5 + } + ], + "title": "Ceiling (as a decimal fraction of AGI) for all charitable contribution deductions", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 0.6, + "level": "warn" + } + }, "section_1": "Itemized Deductions", "section_2": "Charity", - "irs_ref": "Pub. 526, Limits on Deductions: 50% Limit Organizations. ", - "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.6, - 0.6, - 0.6, - 0.6, - 0.6, - 0.6, - 0.6, - 0.6, - 0.5], - "valid_values": {"min": 0, "max": 0.6}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "warn", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The total deduction for charity is capped at this fraction of AGI.", + "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped." + }, "ID_Charity_crt_noncash": { - "long_name": "Ceiling (as a decimal fraction of AGI) for noncash charitable contribution deductions", - "description": "The deduction for noncash charity contributions is capped at this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 0.3 + } + ], + "title": "Ceiling (as a decimal fraction of AGI) for noncash charitable contribution deductions", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 0.3, + "level": "warn" + } + }, "section_1": "Itemized Deductions", "section_2": "Charity", - "irs_ref": "Pub 526, Limits on Deductions: Special 30% Limit for Capital Gain Property. ", - "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.3], - "valid_values": {"min": 0, "max": 0.3}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "warn", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The deduction for noncash charity contributions is capped at this fraction of AGI.", + "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped." + }, "ID_Charity_frt": { - "long_name": "Floor (as a decimal fraction of AGI) for deductible charitable contributions.", - "description": "Taxpayers are eligible to deduct the portion of their charitable expense exceeding this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Floor (as a decimal fraction of AGI) for deductible charitable contributions.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Charity", - "irs_ref": "", - "notes": "This parameter allows for implementation of Option 52 from https://www.cbo.gov/sites/default/files/cbofiles/attachments/49638-BudgetOptions.pdf.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Taxpayers are eligible to deduct the portion of their charitable expense exceeding this fraction of AGI.", + "notes": "This parameter allows for implementation of Option 52 from https://www.cbo.gov/sites/default/files/cbofiles/attachments/49638-BudgetOptions.pdf." + }, "ID_Charity_hc": { - "long_name": "Charity expense deduction haircut", - "description": "This decimal fraction can be applied to limit the amount of charity expense deduction allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Charity expense deduction haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Charity", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This decimal fraction can be applied to limit the amount of charity expense deduction allowed.", + "notes": "" + }, "ID_Charity_c": { - "long_name": "Ceiling on the amount of charity expense deduction allowed (dollars)", - "description": "The amount of charity expense deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of charity expense deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Charity", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The amount of charity expense deduction is limited to this dollar amount.", + "notes": "" + }, "ID_Charity_f": { - "long_name": "Floor on the amount of charity expense deduction allowed (dollars)", - "description": "Only charitable giving in excess of this dollar amount is eligible for a deduction.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Floor on the amount of charity expense deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Charity", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Only charitable giving in excess of this dollar amount is eligible for a deduction.", + "notes": "" + }, "ID_Casualty_frt": { - "long_name": "Floor (as a decimal fraction of AGI) for deductible casualty loss.", - "description": "Taxpayers are eligible to deduct the portion of their gross casualty losses exceeding this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 0.1 + } + ], + "title": "Floor (as a decimal fraction of AGI) for deductible casualty loss.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Casualty", - "irs_ref": "Form 4684, line 17, in-line.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.1], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "Taxpayers are eligible to deduct the portion of their gross casualty losses exceeding this fraction of AGI.", + "notes": "" + }, "ID_Casualty_hc": { - "long_name": "Casualty expense deduction haircut", - "description": "This decimal fraction can be applied to limit the amount of casualty expense deduction allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 1.0 + }, + { + "year": 2019, + "value": 1.0 + }, + { + "year": 2020, + "value": 1.0 + }, + { + "year": 2021, + "value": 1.0 + }, + { + "year": 2022, + "value": 1.0 + }, + { + "year": 2023, + "value": 1.0 + }, + { + "year": 2024, + "value": 1.0 + }, + { + "year": 2025, + "value": 1.0 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Casualty expense deduction haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Casualty", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "This decimal fraction can be applied to limit the amount of casualty expense deduction allowed.", + "notes": "" + }, "ID_Casualty_c": { - "long_name": "Ceiling on the amount of casualty expense deduction allowed (dollars)", - "description": "The amount of casualty expense deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of casualty expense deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Casualty", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "The amount of casualty expense deduction is limited to this dollar amount.", + "notes": "" + }, "ID_Miscellaneous_frt": { - "long_name": "Floor (as a decimal fraction of AGI) for deductible miscellaneous expenses.", - "description": "Taxpayers are eligible to deduct the portion of their miscellaneous expense exceeding this fraction of AGI.", + "value": [ + { + "year": 2013, + "value": 0.02 + } + ], + "title": "Floor (as a decimal fraction of AGI) for deductible miscellaneous expenses.", + "type": "float", + "validators": { + "range": { + "min": 0.02, + "max": 1, + "level": "warn" + } + }, "section_1": "Itemized Deductions", "section_2": "Miscellaneous", - "irs_ref": "Form 1040 Schedule A, line 16, instructions. ", - "notes": "When using PUF data, lowering this parameter value may produce unexpected results because in PUF data the variable e20400 is zero below the floor.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.02], - "valid_values": {"min": 0.02, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "warn", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Taxpayers are eligible to deduct the portion of their miscellaneous expense exceeding this fraction of AGI.", + "notes": "When using PUF data, lowering this parameter value may produce unexpected results because in PUF data the variable e20400 is zero below the floor." + }, "ID_Miscellaneous_hc": { - "long_name": "Miscellaneous expense deduction haircut", - "description": "This decimal fraction can be applied to limit the amount of miscellaneous expense deduction allowed.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 1.0 + }, + { + "year": 2019, + "value": 1.0 + }, + { + "year": 2020, + "value": 1.0 + }, + { + "year": 2021, + "value": 1.0 + }, + { + "year": 2022, + "value": 1.0 + }, + { + "year": 2023, + "value": 1.0 + }, + { + "year": 2024, + "value": 1.0 + }, + { + "year": 2025, + "value": 1.0 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Miscellaneous expense deduction haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Miscellaneous", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This decimal fraction can be applied to limit the amount of miscellaneous expense deduction allowed.", + "notes": "" + }, "ID_Miscellaneous_c": { - "long_name": "Ceiling on the amount of miscellaneous expense deduction allowed (dollars)", - "description": "The amount of miscellaneous expense deduction is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of miscellaneous expense deduction allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Miscellaneous", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The amount of miscellaneous expense deduction is limited to this dollar amount.", + "notes": "" + }, "ID_ps": { - "long_name": "Itemized deduction phaseout AGI start (Pease provision)", - "description": "The itemized deductions will be reduced for taxpayers with AGI higher than this level.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 250000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 300000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 150000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 275000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 300000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 254200.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 305050.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 152525.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 279650.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 305050.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 258250.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 309900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 154950.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 284050.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 309900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 259400.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 311300.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 155650.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 285350.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 311300.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 261500.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 313800.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 156900.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 287650.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 313800.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "single", + "value": 316457.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 379748.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 189874.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 348102.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 379748.0 + } + ], + "title": "Itemized deduction phaseout AGI start (Pease provision)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Itemized Deduction Limitation", - "irs_ref": "Form 1040 Schedule A, line 29, instructions.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[250000.0, 300000.0, 150000.0, 275000.0, 300000.0], - [254200.0, 305050.0, 152525.0, 279650.0, 305050.0], - [258250.0, 309900.0, 154950.0, 284050.0, 309900.0], - [259400.0, 311300.0, 155650.0, 285350.0, 311300.0], - [261500.0, 313800.0, 156900.0, 287650.0, 313800.0], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [316457.0, 379748.0, 189874.0, 348102.0, 379748.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The itemized deductions will be reduced for taxpayers with AGI higher than this level.", + "notes": "" + }, "ID_prt": { - "long_name": "Itemized deduction phaseout rate (Pease provision)", - "description": "Taxpayers will not be eligible to deduct the full amount of itemized deduction if their AGI is above the phaseout start. The deductible portion would be decreased at this rate for each dollar exceeding the start.", + "value": [ + { + "year": 2013, + "value": 0.03 + }, + { + "year": 2014, + "value": 0.03 + }, + { + "year": 2015, + "value": 0.03 + }, + { + "year": 2016, + "value": 0.03 + }, + { + "year": 2017, + "value": 0.03 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 0.0 + }, + { + "year": 2020, + "value": 0.0 + }, + { + "year": 2021, + "value": 0.0 + }, + { + "year": 2022, + "value": 0.0 + }, + { + "year": 2023, + "value": 0.0 + }, + { + "year": 2024, + "value": 0.0 + }, + { + "year": 2025, + "value": 0.0 + }, + { + "year": 2026, + "value": 0.03 + } + ], + "title": "Itemized deduction phaseout rate (Pease provision)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Itemized Deduction Limitation", - "irs_ref": "Schedule A, line 29, instructions. ", - "notes": "This phaseout rate cannot be lower than 0.03 for each dollar, due to limited data on non-itemizers.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.03, - 0.03, - 0.03, - 0.03, - 0.03, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.03], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Taxpayers will not be eligible to deduct the full amount of itemized deduction if their AGI is above the phaseout start. The deductible portion would be decreased at this rate for each dollar exceeding the start.", + "notes": "This phaseout rate cannot be lower than 0.03 for each dollar, due to limited data on non-itemizers." + }, "ID_crt": { - "long_name": "Itemized deduction maximum phaseout as a decimal fraction of total itemized deductions (Pease provision)", - "description": "The phaseout amount is capped at this fraction of the original total deduction.", + "value": [ + { + "year": 2013, + "value": 0.8 + }, + { + "year": 2014, + "value": 0.8 + }, + { + "year": 2015, + "value": 0.8 + }, + { + "year": 2016, + "value": 0.8 + }, + { + "year": 2017, + "value": 0.8 + }, + { + "year": 2018, + "value": 1.0 + }, + { + "year": 2019, + "value": 1.0 + }, + { + "year": 2020, + "value": 1.0 + }, + { + "year": 2021, + "value": 1.0 + }, + { + "year": 2022, + "value": 1.0 + }, + { + "year": 2023, + "value": 1.0 + }, + { + "year": 2024, + "value": 1.0 + }, + { + "year": 2025, + "value": 1.0 + }, + { + "year": 2026, + "value": 0.8 + } + ], + "title": "Itemized deduction maximum phaseout as a decimal fraction of total itemized deductions (Pease provision)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Itemized Deduction Limitation", - "irs_ref": "Form 1040 Schedule A, line 17, instructions. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.8, - 0.8, - 0.8, - 0.8, - 0.8, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.8], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The phaseout amount is capped at this fraction of the original total deduction.", + "notes": "" + }, "ID_BenefitSurtax_trt": { - "long_name": "Surtax rate on the benefits from specified itemized deductions", - "description": "The benefit from specified itemized deductions exceeding the credit is taxed at this rate. A surtax rate of 1 strictly limits the benefit from specified itemized deductions to the specified credit. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Surtax rate on the benefits from specified itemized deductions", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The benefit from specified itemized deductions exceeding the credit is taxed at this rate. A surtax rate of 1 strictly limits the benefit from specified itemized deductions to the specified credit. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", + "notes": "" + }, "ID_BenefitSurtax_crt": { - "long_name": "Credit on itemized deduction benefit surtax (decimal fraction of AGI)", - "description": "The surtax on specified itemized deductions applies to benefits in excess of this fraction of AGI. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Credit on itemized deduction benefit surtax (decimal fraction of AGI)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The surtax on specified itemized deductions applies to benefits in excess of this fraction of AGI. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", + "notes": "" + }, "ID_BenefitSurtax_em": { - "long_name": "Exemption for itemized deduction benefit surtax (dollar AGI threshold)", - "description": "This amount is subtracted from itemized deduction benefits in the calculation of the itemized deduction benefit surtax. With ID_BenefitSurtax_crt set to 0.0 and ID_BenefitSurtax_trt set to 1.0, this amount serves as a dollar limit on the value of itemized deductions.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Exemption for itemized deduction benefit surtax (dollar AGI threshold)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This amount is subtracted from itemized deduction benefits in the calculation of the itemized deduction benefit surtax. With ID_BenefitSurtax_crt set to 0.0 and ID_BenefitSurtax_trt set to 1.0, this amount serves as a dollar limit on the value of itemized deductions.", + "notes": "" + }, "ID_BenefitSurtax_Switch": { - "long_name": "Deductions subject to the surtax on itemized deduction benefits", - "description": "The surtax on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "value": [ + { + "year": 2013, + "idedtype": "med", + "value": true + }, + { + "year": 2013, + "idedtype": "sltx", + "value": true + }, + { + "year": 2013, + "idedtype": "retx", + "value": true + }, + { + "year": 2013, + "idedtype": "cas", + "value": true + }, + { + "year": 2013, + "idedtype": "misc", + "value": true + }, + { + "year": 2013, + "idedtype": "int", + "value": true + }, + { + "year": 2013, + "idedtype": "char", + "value": true + } + ], + "title": "Deductions subject to the surtax on itemized deduction benefits", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Itemized Deductions", "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "idedtype", - "vi_vals": ["med", "sltx", "retx", "cas", "misc", "int", "char"], - "value_type": "boolean", - "value": [[true, true, true, true, true, true, true]], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The surtax on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "notes": "" + }, "ID_BenefitCap_rt": { - "long_name": "Ceiling on the benefits from itemized deductions; decimal fraction of total deductible expenses", - "description": "The benefit from specified itemized deductions is capped at this percent of the total deductible expenses.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Ceiling on the benefits from itemized deductions; decimal fraction of total deductible expenses", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Itemized Deductions", "section_2": "Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The benefit from specified itemized deductions is capped at this percent of the total deductible expenses.", + "notes": "" + }, "ID_BenefitCap_Switch": { - "long_name": "Deductions subject to the cap on itemized deduction benefits", - "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "value": [ + { + "year": 2013, + "idedtype": "med", + "value": true + }, + { + "year": 2013, + "idedtype": "sltx", + "value": true + }, + { + "year": 2013, + "idedtype": "retx", + "value": true + }, + { + "year": 2013, + "idedtype": "cas", + "value": true + }, + { + "year": 2013, + "idedtype": "misc", + "value": true + }, + { + "year": 2013, + "idedtype": "int", + "value": true + }, + { + "year": 2013, + "idedtype": "char", + "value": true + } + ], + "title": "Deductions subject to the cap on itemized deduction benefits", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Itemized Deductions", "section_2": "Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "idedtype", - "vi_vals": ["med", "sltx", "retx", "cas", "misc", "int", "char"], - "value_type": "boolean", - "value": [[true, true, true, true, true, true, true]], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "notes": "" + }, "ID_c": { - "long_name": "Ceiling on the amount of itemized deductions allowed (dollars)", - "description": "The amount of itemized deductions is limited to this dollar amount.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Ceiling on the amount of itemized deductions allowed (dollars)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The amount of itemized deductions is limited to this dollar amount.", + "notes": "" + }, "ID_AmountCap_rt": { - "long_name": "Ceiling on the gross amount of itemized deductions allowed; decimal fraction of AGI", - "description": "The gross allowable amount of specified itemized deductions is capped at this percent of AGI.", + "value": [ + { + "year": 2013, + "value": 9e+99 + } + ], + "title": "Ceiling on the gross amount of itemized deductions allowed; decimal fraction of AGI", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Itemized Deductions", "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [9e99], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The gross allowable amount of specified itemized deductions is capped at this percent of AGI.", + "notes": "" + }, "ID_AmountCap_Switch": { - "long_name": "Deductions subject to the cap on itemized deduction benefits", - "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "value": [ + { + "year": 2013, + "idedtype": "med", + "value": true + }, + { + "year": 2013, + "idedtype": "sltx", + "value": true + }, + { + "year": 2013, + "idedtype": "retx", + "value": true + }, + { + "year": 2013, + "idedtype": "cas", + "value": true + }, + { + "year": 2013, + "idedtype": "misc", + "value": true + }, + { + "year": 2013, + "idedtype": "int", + "value": true + }, + { + "year": 2013, + "idedtype": "char", + "value": true + } + ], + "title": "Deductions subject to the cap on itemized deduction benefits", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Itemized Deductions", "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "idedtype", - "vi_vals": ["med", "sltx", "retx", "cas", "misc", "int", "char"], - "value_type": "boolean", - "value": [[true, true, true, true, true, true, true]], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "notes": "" + }, "CG_rt1": { - "long_name": "Long term capital gain and qualified dividends (regular/non-AMT) rate 1", - "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 1 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 1040 Schedule D tax worksheet, line 20, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 1 are taxed at this rate.", + "notes": "" + }, "CG_brk1": { - "long_name": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 1", - "description": "The gains and dividends (stacked on top of regular income) below this are taxed at capital gain rate 1.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 72500.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 48600.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 72500.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 73800.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 49400.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 73800.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 74900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 50200.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 74900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 75300.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 50400.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 75300.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 75900.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 50800.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 75900.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 38600.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 77200.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 38600.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 51700.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 77200.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 39375.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 78750.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 39375.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 52750.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 78750.0 + } + ], + "title": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "CG_brk2" + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 1040 Schedule D tax worksheet, line 15, in-line. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[36250.0, 72500.0, 36250.0, 48600.0, 72500.0], - [36900.0, 73800.0, 36900.0, 49400.0, 73800.0], - [37450.0, 74900.0, 37450.0, 50200.0, 74900.0], - [37650.0, 75300.0, 37650.0, 50400.0, 75300.0], - [37950.0, 75900.0, 37950.0, 50800.0, 75900.0], - [38600.0, 77200.0, 38600.0, 51700.0, 77200.0], - [39375.0, 78750.0, 39375.0, 52750.0, 78750.0]], - "valid_values": {"min": 0, "max": "CG_brk2"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for CG_brk2", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The gains and dividends (stacked on top of regular income) below this are taxed at capital gain rate 1.", + "notes": "" + }, "CG_rt2": { - "long_name": "Long term capital gain and qualified dividends (regular/non-AMT) rate 2", - "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 2 and above threshold 1 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 0.15 + } + ], + "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 2", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 1040 Schedule D tax worksheet, line 29, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.15], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 2 and above threshold 1 are taxed at this rate.", + "notes": "" + }, "CG_brk2": { - "long_name": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 2", - "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 1 are taxed at capital gain rate 2.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 400000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 450000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 225000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 425000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 450000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 406750.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 457600.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 228800.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 432200.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 457600.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 413200.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 464850.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 232425.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 439000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 464850.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 415050.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 466950.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 233475.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 441000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 466950.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 418400.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 470700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 235350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 444550.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 470700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 425800.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 479000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 239500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 452400.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 479000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 434550.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 488850.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 244425.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 461700.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 488850.0 + } + ], + "title": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 2", + "type": "float", + "validators": { + "range": { + "min": "CG_brk1", + "max": "CG_brk3" + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 1040 Schedule D tax worksheet, line 24, in-line. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[400000.0, 450000.0, 225000.0, 425000.0, 450000.0], - [406750.0, 457600.0, 228800.0, 432200.0, 457600.0], - [413200.0, 464850.0, 232425.0, 439000.0, 464850.0], - [415050.0, 466950.0, 233475.0, 441000.0, 466950.0], - [418400.0, 470700.0, 235350.0, 444550.0, 470700.0], - [425800.0, 479000.0, 239500.0, 452400.0, 479000.0], - [434550.0, 488850.0, 244425.0, 461700.0, 488850.0]], - "valid_values": {"min": "CG_brk1", "max": "CG_brk3"}, - "invalid_minmsg": "for CG_brk1", - "invalid_maxmsg": "for CG_brk3", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 1 are taxed at capital gain rate 2.", + "notes": "" + }, "CG_rt3": { - "long_name": "Long term capital gain and qualified dividends (regular/non-AMT) rate 3", - "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 2 and below threshold 3 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 0.2 + } + ], + "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 3", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 1040 Schedule D tax worksheet, line 32, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.20], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 2 and below threshold 3 are taxed at this rate.", + "notes": "" + }, "CG_brk3": { - "long_name": "Top of long-term capital gains and qualified dividend tax (regular/non-AMT) bracket 3", - "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 2 are taxed at the capital gain rate 3; above this they are taxed at capital gain rate 4. Default value is essentially infinity.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Top of long-term capital gains and qualified dividend tax (regular/non-AMT) bracket 3", + "type": "float", + "validators": { + "range": { + "min": "CG_brk2", + "max": 9e+99 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 1040 Schedule D tax worksheet, line 24, in-line. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": "CG_brk2", "max": 9e99}, - "invalid_minmsg": "for CG_brk2", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 2 are taxed at the capital gain rate 3; above this they are taxed at capital gain rate 4. Default value is essentially infinity.", + "notes": "" + }, "CG_rt4": { - "long_name": "Long term capital gain and qualified dividends (regular/non-AMT) rate 4", - "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 4", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", + "notes": "" + }, "AMT_CG_rt1": { - "long_name": "Long term capital gain and qualified dividends (AMT) rate 1", - "description": "Capital gain and qualified dividends (stacked on top of regular income) below threshold 1 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Long term capital gain and qualified dividends (AMT) rate 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 6251, line 47, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Capital gain and qualified dividends (stacked on top of regular income) below threshold 1 are taxed at this rate.", + "notes": "" + }, "AMT_CG_brk1": { - "long_name": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 1", - "description": "The gains and dividends, stacked last, of AMT taxable income below this are taxed at AMT capital gain rate 1.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 72500.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 48600.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 72500.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 73800.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 49400.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 73800.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 74900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 50200.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 74900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 75300.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 50400.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 75300.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 75900.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 50800.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 75900.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 38600.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 77200.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 38600.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 51700.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 77200.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 39375.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 78750.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 39375.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 52750.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 78750.0 + } + ], + "title": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "AMT_CG_brk2" + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 6251, line 19, in-line. ", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[36250.0, 72500.0, 36250.0, 48600.0, 72500.0], - [36900.0, 73800.0, 36900.0, 49400.0, 73800.0], - [37450.0, 74900.0, 37450.0, 50200.0, 74900.0], - [37650.0, 75300.0, 37650.0, 50400.0, 75300.0], - [37950.0, 75900.0, 37950.0, 50800.0, 75900.0], - [38600.0, 77200.0, 38600.0, 51700.0, 77200.0], - [39375.0, 78750.0, 39375.0, 52750.0, 78750.0]], - "valid_values": {"min": 0, "max": "AMT_CG_brk2"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for AMT_CG_brk2", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The gains and dividends, stacked last, of AMT taxable income below this are taxed at AMT capital gain rate 1.", + "notes": "" + }, "AMT_CG_rt2": { - "long_name": "Long term capital gain and qualified dividends (AMT) rate 2", + "value": [ + { + "year": 2013, + "value": 0.15 + } + ], + "title": "Long term capital gain and qualified dividends (AMT) rate 2", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, "description": "Capital gain and qualified dividend (stacked on top of regular income) below threshold 2 and above threshold 1 are taxed at this rate.", - "irs_ref": "Form 6251, line 31, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.15], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "notes": "" + }, "AMT_CG_brk2": { - "long_name": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 2", - "description": "The gains and dividends, stacked last, of AMT taxable income below this threshold and above bracket 1 are taxed at AMT capital gain rate 2.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 400000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 450000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 225000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 425000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 450000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 406750.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 457600.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 228800.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 432200.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 457600.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 413200.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 464850.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 232425.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 439000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 464850.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 415050.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 466950.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 233475.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 441000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 466950.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 418400.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 470700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 235350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 444550.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 470700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 425800.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 479000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 239500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 452400.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 479000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 434550.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 488850.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 244425.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 461700.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 488850.0 + } + ], + "title": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 2", + "type": "float", + "validators": { + "range": { + "min": "AMT_CG_brk1", + "max": "AMT_CG_brk3" + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "notes": "", - "irs_ref": "Form 6251, line 25, in-line. ", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[400000.0, 450000.0, 225000.0, 425000.0, 450000.0], - [406750.0, 457600.0, 228800.0, 432200.0, 457600.0], - [413200.0, 464850.0, 232425.0, 439000.0, 464850.0], - [415050.0, 466950.0, 233475.0, 441000.0, 466950.0], - [418400.0, 470700.0, 235350.0, 444550.0, 470700.0], - [425800.0, 479000.0, 239500.0, 452400.0, 479000.0], - [434550.0, 488850.0, 244425.0, 461700.0, 488850.0]], - "valid_values": {"min": "AMT_CG_brk1", "max": "AMT_CG_brk3"}, - "invalid_minmsg": "for AMT_CG_brk1", - "invalid_maxmsg": "for AMT_CG_brk3", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The gains and dividends, stacked last, of AMT taxable income below this threshold and above bracket 1 are taxed at AMT capital gain rate 2.", + "notes": "" + }, "AMT_CG_rt3": { - "long_name": "Long term capital gain and qualified dividends (AMT) rate 3", - "description": "The capital gain and qualified dividend (stacked on top of regular income) above threshold 2 and below threshold 3 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 0.2 + } + ], + "title": "Long term capital gain and qualified dividends (AMT) rate 3", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "Form 6251, line 34, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.20], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The capital gain and qualified dividend (stacked on top of regular income) above threshold 2 and below threshold 3 are taxed at this rate.", + "notes": "" + }, "AMT_CG_brk3": { - "long_name": "Long term capital gain and qualified dividends (AMT) threshold 3", - "description": "The gains and dividends, stacked last, of AMT taxable income below this and above bracket 2 are taxed at capital gain rate 3; above thisthey are taxed at AMT capital gain rate 4. Default value is essentially infinity.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Long term capital gain and qualified dividends (AMT) threshold 3", + "type": "float", + "validators": { + "range": { + "min": "AMT_CG_brk2", + "max": 9e+99 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": "AMT_CG_brk2", "max": 9e99}, - "invalid_minmsg": "for AMT_CG_brk2", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The gains and dividends, stacked last, of AMT taxable income below this and above bracket 2 are taxed at capital gain rate 3; above thisthey are taxed at AMT capital gain rate 4. Default value is essentially infinity.", + "notes": "" + }, "AMT_CG_rt4": { - "long_name": "Long term capital gain and qualified dividends (AMT) rate 4", - "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Long term capital gain and qualified dividends (AMT) rate 4", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", + "notes": "" + }, "CG_nodiff": { - "long_name": "Long term capital gains and qualified dividends taxed no differently than regular taxable income", - "description": "Specifies whether or not long term capital gains and qualified dividends are taxed like regular taxable income.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Long term capital gains and qualified dividends taxed no differently than regular taxable income", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", - "irs_ref": "Current-law value is zero implying different tax treatment in Schedule D and AMT; a value of one implies same tax treatment in both regular and alternative minimum tax rules, but the same treatment can differ for regular and AMT.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Specifies whether or not long term capital gains and qualified dividends are taxed like regular taxable income.", + "notes": "" + }, "CG_ec": { - "long_name": "Dollar amount of all capital gains and qualified dividends that are excluded from AGI.", - "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 0.0 + } + ], + "title": "Dollar amount of all capital gains and qualified dividends that are excluded from AGI.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income.", + "notes": "" + }, "CG_reinvest_ec_rt": { - "long_name": "Fraction of all capital gains and qualified dividends in excess of the dollar exclusion that are excluded from AGI.", - "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income. To limit the exclusion to capital gains and dividends invested within one year, set to statutory exclusion rate times the fraction of capital gains and qualified dividends in excess of the exclusion that are assumed to be reinvested within the year.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Fraction of all capital gains and qualified dividends in excess of the dollar exclusion that are excluded from AGI.", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Capital Gains And Dividends", "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income. To limit the exclusion to capital gains and dividends invested within one year, set to statutory exclusion rate times the fraction of capital gains and qualified dividends in excess of the exclusion that are assumed to be reinvested within the year.", + "notes": "" + }, "II_rt1": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 1", - "description": "The lowest tax rate, applied to the portion of taxable income below tax bracket 1.", + "value": [ + { + "year": 2013, + "value": 0.1 + }, + { + "year": 2014, + "value": 0.1 + }, + { + "year": 2015, + "value": 0.1 + }, + { + "year": 2016, + "value": 0.1 + }, + { + "year": 2017, + "value": 0.1 + }, + { + "year": 2018, + "value": 0.1 + }, + { + "year": 2019, + "value": 0.1 + }, + { + "year": 2020, + "value": 0.1 + }, + { + "year": 2021, + "value": 0.1 + }, + { + "year": 2022, + "value": 0.1 + }, + { + "year": 2023, + "value": 0.1 + }, + { + "year": 2024, + "value": 0.1 + }, + { + "year": 2025, + "value": 0.1 + }, + { + "year": 2026, + "value": 0.1 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The lowest tax rate, applied to the portion of taxable income below tax bracket 1.", + "notes": "" + }, "II_brk1": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1", - "description": "Taxable income below this threshold is taxed at tax rate 1.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 8925.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 17850.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 8925.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 12750.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 17850.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 9075.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 18150.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9075.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 12950.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 18150.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 9225.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 18450.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9225.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 13150.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 18450.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 9275.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 18550.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9275.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 13250.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 18550.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 9325.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 18650.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9325.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 13350.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 18650.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 9525.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 19050.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9525.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 13600.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 19050.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 9700.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 19400.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9700.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 13850.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 19400.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 9880.42 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 19760.84 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 9880.42 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 14107.61 + }, + { + "year": 2020, + "MARS": "widow", + "value": 19760.84 + }, + { + "year": 2021, + "MARS": "single", + "value": 10110.63 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 20221.27 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 10110.63 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 14436.32 + }, + { + "year": 2021, + "MARS": "widow", + "value": 20221.27 + }, + { + "year": 2022, + "MARS": "single", + "value": 10342.17 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 20684.33 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 10342.17 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 14766.91 + }, + { + "year": 2022, + "MARS": "widow", + "value": 20684.33 + }, + { + "year": 2023, + "MARS": "single", + "value": 10577.97 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 21155.94 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 10577.97 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 15103.59 + }, + { + "year": 2023, + "MARS": "widow", + "value": 21155.94 + }, + { + "year": 2024, + "MARS": "single", + "value": 10811.74 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 21623.48 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 10811.74 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 15437.38 + }, + { + "year": 2024, + "MARS": "widow", + "value": 21623.48 + }, + { + "year": 2025, + "MARS": "single", + "value": 11039.87 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 22079.74 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 11039.87 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 15763.11 + }, + { + "year": 2025, + "MARS": "widow", + "value": 22079.74 + }, + { + "year": 2026, + "MARS": "single", + "value": 11285.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 22569.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 11285.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 16156.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 22569.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "II_brk2" + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 44, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[8925.00, 17850.00, 8925.00, 12750.00, 17850.00], - [9075.00, 18150.00, 9075.00, 12950.00, 18150.00], - [9225.00, 18450.00, 9225.00, 13150.00, 18450.00], - [9275.00, 18550.00, 9275.00, 13250.00, 18550.00], - [9325.00, 18650.00, 9325.00, 13350.00, 18650.00], - [9525.0, 19050.0, 9525.0, 13600.0, 19050.0], - [9700.0, 19400.0, 9700.0, 13850.0, 19400.0], - [9880.42, 19760.84, 9880.42, 14107.61, 19760.84], - [10110.63, 20221.27, 10110.63, 14436.32, 20221.27], - [10342.17, 20684.33, 10342.17, 14766.91, 20684.33], - [10577.97, 21155.94, 10577.97, 15103.59, 21155.94], - [10811.74, 21623.48, 10811.74, 15437.38, 21623.48], - [11039.87, 22079.74, 11039.87, 15763.11, 22079.74], - [11285.0, 22569.0, 11285.0, 16156.0, 22569.0]], - "valid_values": {"min": 0, "max": "II_brk2"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for II_brk2", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Taxable income below this threshold is taxed at tax rate 1.", + "notes": "" + }, "II_rt2": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 2", - "description": "The second lowest tax rate, applied to the portion of taxable income below tax bracket 2 and above tax bracket 1.", + "value": [ + { + "year": 2013, + "value": 0.15 + }, + { + "year": 2014, + "value": 0.15 + }, + { + "year": 2015, + "value": 0.15 + }, + { + "year": 2016, + "value": 0.15 + }, + { + "year": 2017, + "value": 0.15 + }, + { + "year": 2018, + "value": 0.12 + }, + { + "year": 2019, + "value": 0.12 + }, + { + "year": 2020, + "value": 0.12 + }, + { + "year": 2021, + "value": 0.12 + }, + { + "year": 2022, + "value": 0.12 + }, + { + "year": 2023, + "value": 0.12 + }, + { + "year": 2024, + "value": 0.12 + }, + { + "year": 2025, + "value": 0.12 + }, + { + "year": 2026, + "value": 0.15 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 2", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.15, - 0.15, - 0.15, - 0.15, - 0.15, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.15], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The second lowest tax rate, applied to the portion of taxable income below tax bracket 2 and above tax bracket 1.", + "notes": "" + }, "II_brk2": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2", - "description": "Income below this threshold and above tax bracket 1 is taxed at tax rate 2.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 72500.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 48600.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 72500.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 73800.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 49400.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 73800.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 74900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 50200.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 74900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 75300.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 50400.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 75300.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 75900.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 50800.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 75900.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 38700.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 77400.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 38700.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 51800.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 77400.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 39475.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 78950.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 39475.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 52850.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 78950.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 40209.24 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 80418.47 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 40209.24 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 53833.01 + }, + { + "year": 2020, + "MARS": "widow", + "value": 80418.47 + }, + { + "year": 2021, + "MARS": "single", + "value": 41146.11 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 82292.22 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 41146.11 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 55087.32 + }, + { + "year": 2021, + "MARS": "widow", + "value": 82292.22 + }, + { + "year": 2022, + "MARS": "single", + "value": 42088.36 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 84176.71 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 42088.36 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 56348.82 + }, + { + "year": 2022, + "MARS": "widow", + "value": 84176.71 + }, + { + "year": 2023, + "MARS": "single", + "value": 43047.97 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 86095.94 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 43047.97 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 57633.57 + }, + { + "year": 2023, + "MARS": "widow", + "value": 86095.94 + }, + { + "year": 2024, + "MARS": "single", + "value": 43999.33 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 87998.66 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 43999.33 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 58907.27 + }, + { + "year": 2024, + "MARS": "widow", + "value": 87998.66 + }, + { + "year": 2025, + "MARS": "single", + "value": 44927.72 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 89855.43 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 44927.72 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 60150.22 + }, + { + "year": 2025, + "MARS": "widow", + "value": 89855.43 + }, + { + "year": 2026, + "MARS": "single", + "value": 45926.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 91851.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 45926.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 61476.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 91851.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2", + "type": "float", + "validators": { + "range": { + "min": "II_brk1", + "max": "II_brk3" + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[36250.00, 72500.00, 36250.00, 48600.00, 72500.00], - [36900.00, 73800.00, 36900.00, 49400.00, 73800.00], - [37450.00, 74900.00, 37450.00, 50200.00, 74900.00], - [37650.00, 75300.00, 37650.00, 50400.00, 75300.00], - [37950.00, 75900.00, 37950.00, 50800.00, 75900.00], - [38700.0, 77400.0, 38700.0, 51800.0, 77400.0], - [39475.0, 78950.0, 39475.0, 52850.0, 78950.0], - [40209.24, 80418.47, 40209.24, 53833.01, 80418.47], - [41146.11, 82292.22, 41146.11, 55087.32, 82292.22], - [42088.36, 84176.71, 42088.36, 56348.82, 84176.71], - [43047.97, 86095.94, 43047.97, 57633.57, 86095.94], - [43999.33, 87998.66, 43999.33, 58907.27, 87998.66], - [44927.72, 89855.43, 44927.72, 60150.22, 89855.43], - [45926.0, 91851.0, 45926.0, 61476.0, 91851.0]], - "valid_values": {"min": "II_brk1", "max": "II_brk3"}, - "invalid_minmsg": "for II_brk1", - "invalid_maxmsg": "for II_brk3", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income below this threshold and above tax bracket 1 is taxed at tax rate 2.", + "notes": "" + }, "II_rt3": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 3", - "description": "The third lowest tax rate, applied to the portion of taxable income below tax bracket 3 and above tax bracket 2.", + "value": [ + { + "year": 2013, + "value": 0.25 + }, + { + "year": 2014, + "value": 0.25 + }, + { + "year": 2015, + "value": 0.25 + }, + { + "year": 2016, + "value": 0.25 + }, + { + "year": 2017, + "value": 0.25 + }, + { + "year": 2018, + "value": 0.22 + }, + { + "year": 2019, + "value": 0.22 + }, + { + "year": 2020, + "value": 0.22 + }, + { + "year": 2021, + "value": 0.22 + }, + { + "year": 2022, + "value": 0.22 + }, + { + "year": 2023, + "value": 0.22 + }, + { + "year": 2024, + "value": 0.22 + }, + { + "year": 2025, + "value": 0.22 + }, + { + "year": 2026, + "value": 0.25 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 3", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.25, - 0.25, - 0.25, - 0.25, - 0.25, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.25], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The third lowest tax rate, applied to the portion of taxable income below tax bracket 3 and above tax bracket 2.", + "notes": "" + }, "II_brk3": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3", - "description": "Income below this threshold and above tax bracket 2 is taxed at tax rate 3.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 87850.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 146400.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 73200.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 125450.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 146400.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 89350.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 148850.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 74425.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 127550.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 148850.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 90750.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 151200.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 75600.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 129600.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 151200.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 91150.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 151900.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 75950.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 130150.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 151900.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 91900.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 153100.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 76550.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 131200.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 153100.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 82500.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 165000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 82500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 82500.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 165000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 84200.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 168400.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 84200.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 84200.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 168400.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 85766.12 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 171532.24 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 85766.12 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 85766.12 + }, + { + "year": 2020, + "MARS": "widow", + "value": 171532.24 + }, + { + "year": 2021, + "MARS": "single", + "value": 87764.47 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 175528.94 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 87764.47 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 87764.47 + }, + { + "year": 2021, + "MARS": "widow", + "value": 175528.94 + }, + { + "year": 2022, + "MARS": "single", + "value": 89774.28 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 179548.55 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 89774.28 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 89774.28 + }, + { + "year": 2022, + "MARS": "widow", + "value": 179548.55 + }, + { + "year": 2023, + "MARS": "single", + "value": 91821.13 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 183642.26 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 91821.13 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 91821.13 + }, + { + "year": 2023, + "MARS": "widow", + "value": 183642.26 + }, + { + "year": 2024, + "MARS": "single", + "value": 93850.38 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 187700.75 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 93850.38 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 93850.38 + }, + { + "year": 2024, + "MARS": "widow", + "value": 187700.75 + }, + { + "year": 2025, + "MARS": "single", + "value": 95830.62 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 191661.24 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 95830.62 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 95830.62 + }, + { + "year": 2025, + "MARS": "widow", + "value": 191661.24 + }, + { + "year": 2026, + "MARS": "single", + "value": 111214.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 185275.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 92638.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 158773.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 185275.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3", + "type": "float", + "validators": { + "range": { + "min": "II_brk2", + "max": "II_brk4" + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[87850.00, 146400.00, 73200.00, 125450.00, 146400.00], - [89350.00, 148850.00, 74425.00, 127550.00, 148850.00], - [90750.00, 151200.00, 75600.00, 129600.00, 151200.00], - [91150.00, 151900.00, 75950.00, 130150.00, 151900.00], - [91900.00, 153100.00, 76550.00, 131200.00, 153100.00], - [82500.0, 165000.0, 82500.0, 82500.0, 165000.0], - [84200.0, 168400.0, 84200.0, 84200.0, 168400.0], - [85766.12, 171532.24, 85766.12, 85766.12, 171532.24], - [87764.47, 175528.94, 87764.47, 87764.47, 175528.94], - [89774.28, 179548.55, 89774.28, 89774.28, 179548.55], - [91821.13, 183642.26, 91821.13, 91821.13, 183642.26], - [93850.38, 187700.75, 93850.38, 93850.38, 187700.75], - [95830.62, 191661.24, 95830.62, 95830.62, 191661.24], - [111214.0, 185275.0, 92638.0, 158773.0, 185275.0]], - "valid_values": {"min": "II_brk2", "max": "II_brk4"}, - "invalid_minmsg": "for II_brk2", - "invalid_maxmsg": "for II_brk4", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income below this threshold and above tax bracket 2 is taxed at tax rate 3.", + "notes": "" + }, "II_rt4": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 4", - "description": "The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.", + "value": [ + { + "year": 2013, + "value": 0.28 + }, + { + "year": 2014, + "value": 0.28 + }, + { + "year": 2015, + "value": 0.28 + }, + { + "year": 2016, + "value": 0.28 + }, + { + "year": 2017, + "value": 0.28 + }, + { + "year": 2018, + "value": 0.24 + }, + { + "year": 2019, + "value": 0.24 + }, + { + "year": 2020, + "value": 0.24 + }, + { + "year": 2021, + "value": 0.24 + }, + { + "year": 2022, + "value": 0.24 + }, + { + "year": 2023, + "value": 0.24 + }, + { + "year": 2024, + "value": 0.24 + }, + { + "year": 2025, + "value": 0.24 + }, + { + "year": 2026, + "value": 0.28 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 4", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.28, - 0.28, - 0.28, - 0.28, - 0.28, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.28], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.", + "notes": "" + }, "II_brk4": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4", - "description": "Income below this threshold and above tax bracket 3 is taxed at tax rate 4.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 183250.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 223050.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 111525.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 203150.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 223050.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 186350.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 226850.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 113425.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 206600.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 226850.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 189300.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 230450.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 115225.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 209850.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 230450.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 190150.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 231450.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 115725.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 210800.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 231450.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 191650.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 233350.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 116675.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 212500.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 233350.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 315000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 315000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 160725.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 321450.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 160725.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 160700.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 321450.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 163714.48 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 327428.97 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 163714.48 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 163689.02 + }, + { + "year": 2020, + "MARS": "widow", + "value": 327428.97 + }, + { + "year": 2021, + "MARS": "single", + "value": 167529.03 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 335058.07 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 167529.03 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 167502.97 + }, + { + "year": 2021, + "MARS": "widow", + "value": 335058.07 + }, + { + "year": 2022, + "MARS": "single", + "value": 171365.45 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 342730.89 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 171365.45 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 171338.79 + }, + { + "year": 2022, + "MARS": "widow", + "value": 342730.89 + }, + { + "year": 2023, + "MARS": "single", + "value": 175272.58 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 350545.16 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 175272.58 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 175245.32 + }, + { + "year": 2023, + "MARS": "widow", + "value": 350545.16 + }, + { + "year": 2024, + "MARS": "single", + "value": 179146.1 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 358292.21 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 179146.1 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 179118.24 + }, + { + "year": 2024, + "MARS": "widow", + "value": 358292.21 + }, + { + "year": 2025, + "MARS": "single", + "value": 182926.09 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 365852.17 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 182926.09 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 182897.63 + }, + { + "year": 2025, + "MARS": "widow", + "value": 365852.17 + }, + { + "year": 2026, + "MARS": "single", + "value": 231927.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 282391.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 141195.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 257159.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 282391.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4", + "type": "float", + "validators": { + "range": { + "min": "II_brk3", + "max": "II_brk5" + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Tax Rate Schedules).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[183250.00, 223050.00, 111525.00, 203150.00, 223050.00], - [186350.00, 226850.00, 113425.00, 206600.00, 226850.00], - [189300.00, 230450.00, 115225.00, 209850.00, 230450.00], - [190150.00, 231450.00, 115725.00, 210800.00, 231450.00], - [191650.00, 233350.00, 116675.00, 212500.00, 233350.00], - [157500.0, 315000.0, 157500.0, 157500.0, 315000.0], - [160725.0, 321450.0, 160725.0, 160700.0, 321450.0], - [163714.48, 327428.97, 163714.48, 163689.02, 327428.97], - [167529.03, 335058.07, 167529.03, 167502.97, 335058.07], - [171365.45, 342730.89, 171365.45, 171338.79, 342730.89], - [175272.58, 350545.16, 175272.58, 175245.32, 350545.16], - [179146.1, 358292.21, 179146.1, 179118.24, 358292.21], - [182926.09, 365852.17, 182926.09, 182897.63, 365852.17], - [231927.0, 282391.0, 141195.0, 257159.0, 282391.0]], - "valid_values": {"min": "II_brk3", "max": "II_brk5"}, - "invalid_minmsg": "for II_brk3", - "invalid_maxmsg": "for II_brk5", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income below this threshold and above tax bracket 3 is taxed at tax rate 4.", + "notes": "" + }, "II_rt5": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 5", - "description": "The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.", + "value": [ + { + "year": 2013, + "value": 0.33 + }, + { + "year": 2014, + "value": 0.33 + }, + { + "year": 2015, + "value": 0.33 + }, + { + "year": 2016, + "value": 0.33 + }, + { + "year": 2017, + "value": 0.33 + }, + { + "year": 2018, + "value": 0.32 + }, + { + "year": 2019, + "value": 0.32 + }, + { + "year": 2020, + "value": 0.32 + }, + { + "year": 2021, + "value": 0.32 + }, + { + "year": 2022, + "value": 0.32 + }, + { + "year": 2023, + "value": 0.32 + }, + { + "year": 2024, + "value": 0.32 + }, + { + "year": 2025, + "value": 0.32 + }, + { + "year": 2026, + "value": 0.33 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 5", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.33, - 0.33, - 0.33, - 0.33, - 0.33, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.33], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.", + "notes": "" + }, "II_brk5": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5", - "description": "Income below this threshold and above tax bracket 4 is taxed at tax rate 5.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 398350.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 398350.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 199175.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 398350.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 398350.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 405100.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 405100.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 202550.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 405100.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 405100.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 411500.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 411500.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 205750.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 411500.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 411500.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 206675.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 413350.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 416700.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 416700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 208350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 416700.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 416700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 204100.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 408200.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 204100.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 204100.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 408200.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 207896.26 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 415792.52 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 207896.26 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 207896.26 + }, + { + "year": 2020, + "MARS": "widow", + "value": 415792.52 + }, + { + "year": 2021, + "MARS": "single", + "value": 212740.24 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 425480.49 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 212740.24 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 212740.24 + }, + { + "year": 2021, + "MARS": "widow", + "value": 425480.49 + }, + { + "year": 2022, + "MARS": "single", + "value": 217611.99 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 435223.99 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 217611.99 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 217611.99 + }, + { + "year": 2022, + "MARS": "widow", + "value": 435223.99 + }, + { + "year": 2023, + "MARS": "single", + "value": 222573.55 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 445147.1 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 222573.55 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 222573.55 + }, + { + "year": 2023, + "MARS": "widow", + "value": 445147.1 + }, + { + "year": 2024, + "MARS": "single", + "value": 227492.42 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 454984.85 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 227492.42 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 227492.42 + }, + { + "year": 2024, + "MARS": "widow", + "value": 454984.85 + }, + { + "year": 2025, + "MARS": "single", + "value": 232292.51 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 464585.03 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 232292.51 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 232292.51 + }, + { + "year": 2025, + "MARS": "widow", + "value": 464585.03 + }, + { + "year": 2026, + "MARS": "single", + "value": 504273.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 504273.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 252137.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 504273.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 504273.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5", + "type": "float", + "validators": { + "range": { + "min": "II_brk4", + "max": "II_brk6" + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[398350.00, 398350.00, 199175.00, 398350.00, 398350.00], - [405100.00, 405100.00, 202550.00, 405100.00, 405100.00], - [411500.00, 411500.00, 205750.00, 411500.00, 411500.00], - [413350.00, 413350.00, 206675.00, 413350.00, 413350.00], - [416700.00, 416700.00, 208350.00, 416700.00, 416700.00], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [204100.0, 408200.0, 204100.0, 204100.0, 408200.0], - [207896.26, 415792.52, 207896.26, 207896.26, 415792.52], - [212740.24, 425480.49, 212740.24, 212740.24, 425480.49], - [217611.99, 435223.99, 217611.99, 217611.99, 435223.99], - [222573.55, 445147.1, 222573.55, 222573.55, 445147.1], - [227492.42, 454984.85, 227492.42, 227492.42, 454984.85], - [232292.51, 464585.03, 232292.51, 232292.51, 464585.03], - [504273.0, 504273.0, 252137.0, 504273.0, 504273.0]], - "valid_values": {"min": "II_brk4", "max": "II_brk6"}, - "invalid_minmsg": "for II_brk4", - "invalid_maxmsg": "for II_brk6", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income below this threshold and above tax bracket 4 is taxed at tax rate 5.", + "notes": "" + }, "II_rt6": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 6", - "description": "The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.", + "value": [ + { + "year": 2013, + "value": 0.35 + }, + { + "year": 2014, + "value": 0.35 + }, + { + "year": 2015, + "value": 0.35 + }, + { + "year": 2016, + "value": 0.35 + }, + { + "year": 2017, + "value": 0.35 + }, + { + "year": 2018, + "value": 0.35 + }, + { + "year": 2019, + "value": 0.35 + }, + { + "year": 2020, + "value": 0.35 + }, + { + "year": 2021, + "value": 0.35 + }, + { + "year": 2022, + "value": 0.35 + }, + { + "year": 2023, + "value": 0.35 + }, + { + "year": 2024, + "value": 0.35 + }, + { + "year": 2025, + "value": 0.35 + }, + { + "year": 2026, + "value": 0.35 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 6", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.", + "notes": "" + }, "II_brk6": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket 6", - "description": "Income below this threshold and above tax bracket 5 is taxed at tax rate 6.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 400000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 450000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 225000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 425000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 450000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 406750.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 457600.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 228800.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 432200.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 457600.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 413200.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 464850.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 232425.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 439000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 464850.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 415050.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 466950.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 233475.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 441000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 466950.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 418400.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 470700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 235350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 444550.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 470700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 600000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 300000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 600000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 510300.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 612350.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 306175.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 510300.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 612350.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 519791.58 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 623739.71 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 311869.86 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 519791.58 + }, + { + "year": 2020, + "MARS": "widow", + "value": 623739.71 + }, + { + "year": 2021, + "MARS": "single", + "value": 531902.72 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 638272.85 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 319136.42 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 531902.72 + }, + { + "year": 2021, + "MARS": "widow", + "value": 638272.85 + }, + { + "year": 2022, + "MARS": "single", + "value": 544083.3 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 652889.29 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 326444.65 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 544083.3 + }, + { + "year": 2022, + "MARS": "widow", + "value": 652889.29 + }, + { + "year": 2023, + "MARS": "single", + "value": 556488.4 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 667775.17 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 333887.58 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 556488.4 + }, + { + "year": 2023, + "MARS": "widow", + "value": 667775.17 + }, + { + "year": 2024, + "MARS": "single", + "value": 568786.79 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 682533.0 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 341266.5 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 568786.79 + }, + { + "year": 2024, + "MARS": "widow", + "value": 682533.0 + }, + { + "year": 2025, + "MARS": "single", + "value": 580788.19 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 696934.45 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 348467.22 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 580788.19 + }, + { + "year": 2025, + "MARS": "widow", + "value": 696934.45 + }, + { + "year": 2026, + "MARS": "single", + "value": 506331.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 569622.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 284811.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 537976.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 569622.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 6", + "type": "float", + "validators": { + "range": { + "min": "II_brk5", + "max": "II_brk7" + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[400000.00, 450000.00, 225000.00, 425000.00, 450000.00], - [406750.00, 457600.00, 228800.00, 432200.00, 457600.00], - [413200.00, 464850.00, 232425.00, 439000.00, 464850.00], - [415050.00, 466950.00, 233475.00, 441000.00, 466950.00], - [418400.00, 470700.00, 235350.00, 444550.00, 470700.00], - [500000.0, 600000.0, 300000.0, 500000.0, 600000.0], - [510300.0, 612350.0, 306175.0, 510300.0, 612350.0], - [519791.58, 623739.71, 311869.86, 519791.58, 623739.71], - [531902.72, 638272.85, 319136.42, 531902.72, 638272.85], - [544083.3, 652889.29, 326444.65, 544083.3, 652889.29], - [556488.4, 667775.17, 333887.58, 556488.4, 667775.17], - [568786.79, 682533.0, 341266.5, 568786.79, 682533.0], - [580788.19, 696934.45, 348467.22, 580788.19, 696934.45], - [506331.0, 569622.0, 284811.0, 537976.0, 569622.0]], - "valid_values": {"min": "II_brk5", "max": "II_brk7"}, - "invalid_minmsg": "for II_brk5", - "invalid_maxmsg": "for II_brk7", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income below this threshold and above tax bracket 5 is taxed at tax rate 6.", + "notes": "" + }, "II_rt7": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 7", - "description": "The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.", + "value": [ + { + "year": 2013, + "value": 0.396 + }, + { + "year": 2014, + "value": 0.396 + }, + { + "year": 2015, + "value": 0.396 + }, + { + "year": 2016, + "value": 0.396 + }, + { + "year": 2017, + "value": 0.396 + }, + { + "year": 2018, + "value": 0.37 + }, + { + "year": 2019, + "value": 0.37 + }, + { + "year": 2020, + "value": 0.37 + }, + { + "year": 2021, + "value": 0.37 + }, + { + "year": 2022, + "value": 0.37 + }, + { + "year": 2023, + "value": 0.37 + }, + { + "year": 2024, + "value": 0.37 + }, + { + "year": 2025, + "value": 0.37 + }, + { + "year": 2026, + "value": 0.396 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 7", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.396, - 0.396, - 0.396, - 0.396, - 0.396, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.396], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.", + "notes": "" + }, "II_brk7": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax bracket 7", - "description": "Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 7", + "type": "float", + "validators": { + "range": { + "min": "II_brk6", + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": "II_brk6", "max": 9e99}, - "invalid_minmsg": "for II_brk6", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.", + "notes": "" + }, "II_rt8": { - "long_name": "Personal income (regular/non-AMT/non-pass-through) tax rate 8", - "description": "The tax rate applied to the portion of taxable income above tax bracket 7.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 8", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Regular: Non-AMT, Non-Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The tax rate applied to the portion of taxable income above tax bracket 7.", + "notes": "" + }, "PT_rt1": { - "long_name": "Pass-through income tax rate 1", - "description": "The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.", + "value": [ + { + "year": 2013, + "value": 0.1 + }, + { + "year": 2014, + "value": 0.1 + }, + { + "year": 2015, + "value": 0.1 + }, + { + "year": 2016, + "value": 0.1 + }, + { + "year": 2017, + "value": 0.1 + }, + { + "year": 2018, + "value": 0.1 + }, + { + "year": 2019, + "value": 0.1 + }, + { + "year": 2020, + "value": 0.1 + }, + { + "year": 2021, + "value": 0.1 + }, + { + "year": 2022, + "value": 0.1 + }, + { + "year": 2023, + "value": 0.1 + }, + { + "year": 2024, + "value": 0.1 + }, + { + "year": 2025, + "value": 0.1 + }, + { + "year": 2026, + "value": 0.1 + } + ], + "title": "Pass-through income tax rate 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10, - 0.10], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.", + "notes": "" + }, "PT_brk1": { - "long_name": "Pass-through income tax bracket (upper threshold) 1", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 8925.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 17850.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 8925.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 12750.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 17850.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 9075.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 18150.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9075.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 12950.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 18150.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 9225.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 18450.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9225.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 13150.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 18450.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 9275.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 18550.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9275.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 13250.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 18550.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 9325.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 18650.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9325.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 13350.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 18650.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 9525.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 19050.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9525.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 13600.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 19050.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 9700.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 19400.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9700.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 13850.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 19400.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 9880.42 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 19760.84 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 9880.42 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 14107.61 + }, + { + "year": 2020, + "MARS": "widow", + "value": 19760.84 + }, + { + "year": 2021, + "MARS": "single", + "value": 10110.63 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 20221.27 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 10110.63 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 14436.32 + }, + { + "year": 2021, + "MARS": "widow", + "value": 20221.27 + }, + { + "year": 2022, + "MARS": "single", + "value": 10342.17 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 20684.33 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 10342.17 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 14766.91 + }, + { + "year": 2022, + "MARS": "widow", + "value": 20684.33 + }, + { + "year": 2023, + "MARS": "single", + "value": 10577.97 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 21155.94 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 10577.97 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 15103.59 + }, + { + "year": 2023, + "MARS": "widow", + "value": 21155.94 + }, + { + "year": 2024, + "MARS": "single", + "value": 10811.74 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 21623.48 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 10811.74 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 15437.38 + }, + { + "year": 2024, + "MARS": "widow", + "value": 21623.48 + }, + { + "year": 2025, + "MARS": "single", + "value": 11039.87 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 22079.74 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 11039.87 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 15763.11 + }, + { + "year": 2025, + "MARS": "widow", + "value": 22079.74 + }, + { + "year": 2026, + "MARS": "single", + "value": 11285.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 22569.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 11285.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 16156.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 22569.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "PT_brk2" + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[8925.00, 17850.00, 8925.00, 12750.00, 17850.00], - [9075.00, 18150.00, 9075.00, 12950.00, 18150.00], - [9225.00, 18450.00, 9225.00, 13150.00, 18450.00], - [9275.00, 18550.00, 9275.00, 13250.00, 18550.00], - [9325.00, 18650.00, 9325.00, 13350.00, 18650.00], - [9525.0, 19050.0, 9525.0, 13600.0, 19050.0], - [9700.0, 19400.0, 9700.0, 13850.0, 19400.0], - [9880.42, 19760.84, 9880.42, 14107.61, 19760.84], - [10110.63, 20221.27, 10110.63, 14436.32, 20221.27], - [10342.17, 20684.33, 10342.17, 14766.91, 20684.33], - [10577.97, 21155.94, 10577.97, 15103.59, 21155.94], - [10811.74, 21623.48, 10811.74, 15437.38, 21623.48], - [11039.87, 22079.74, 11039.87, 15763.11, 22079.74], - [11285.0, 22569.0, 11285.0, 16156.0, 22569.0]], - "valid_values": {"min": 0, "max": "PT_brk2"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for PT_brk2", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.", + "notes": "" + }, "PT_rt2": { - "long_name": "Pass-through income tax rate 2", - "description": "The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.", + "value": [ + { + "year": 2013, + "value": 0.15 + }, + { + "year": 2014, + "value": 0.15 + }, + { + "year": 2015, + "value": 0.15 + }, + { + "year": 2016, + "value": 0.15 + }, + { + "year": 2017, + "value": 0.15 + }, + { + "year": 2018, + "value": 0.12 + }, + { + "year": 2019, + "value": 0.12 + }, + { + "year": 2020, + "value": 0.12 + }, + { + "year": 2021, + "value": 0.12 + }, + { + "year": 2022, + "value": 0.12 + }, + { + "year": 2023, + "value": 0.12 + }, + { + "year": 2024, + "value": 0.12 + }, + { + "year": 2025, + "value": 0.12 + }, + { + "year": 2026, + "value": 0.15 + } + ], + "title": "Pass-through income tax rate 2", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.15, - 0.15, - 0.15, - 0.15, - 0.15, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.12, - 0.15], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.", + "notes": "" + }, "PT_brk2": { - "long_name": "Pass-through income tax bracket (upper threshold) 2", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 72500.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 36250.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 48600.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 72500.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 73800.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 36900.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 49400.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 73800.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 74900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 37450.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 50200.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 74900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 75300.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 37650.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 50400.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 75300.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 75900.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 37950.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 50800.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 75900.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 38700.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 77400.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 38700.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 51800.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 77400.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 39475.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 78950.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 39475.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 52850.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 78950.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 40209.24 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 80418.47 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 40209.24 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 53833.01 + }, + { + "year": 2020, + "MARS": "widow", + "value": 80418.47 + }, + { + "year": 2021, + "MARS": "single", + "value": 41146.11 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 82292.22 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 41146.11 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 55087.32 + }, + { + "year": 2021, + "MARS": "widow", + "value": 82292.22 + }, + { + "year": 2022, + "MARS": "single", + "value": 42088.36 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 84176.71 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 42088.36 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 56348.82 + }, + { + "year": 2022, + "MARS": "widow", + "value": 84176.71 + }, + { + "year": 2023, + "MARS": "single", + "value": 43047.97 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 86095.94 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 43047.97 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 57633.57 + }, + { + "year": 2023, + "MARS": "widow", + "value": 86095.94 + }, + { + "year": 2024, + "MARS": "single", + "value": 43999.33 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 87998.66 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 43999.33 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 58907.27 + }, + { + "year": 2024, + "MARS": "widow", + "value": 87998.66 + }, + { + "year": 2025, + "MARS": "single", + "value": 44927.72 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 89855.43 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 44927.72 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 60150.22 + }, + { + "year": 2025, + "MARS": "widow", + "value": 89855.43 + }, + { + "year": 2026, + "MARS": "single", + "value": 45926.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 91851.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 45926.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 61476.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 91851.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 2", + "type": "float", + "validators": { + "range": { + "min": "PT_brk1", + "max": "PT_brk3" + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[36250.00, 72500.00, 36250.00, 48600.00, 72500.00], - [36900.00, 73800.00, 36900.00, 49400.00, 73800.00], - [37450.00, 74900.00, 37450.00, 50200.00, 74900.00], - [37650.00, 75300.00, 37650.00, 50400.00, 75300.00], - [37950.00, 75900.00, 37950.00, 50800.00, 75900.00], - [38700.0, 77400.0, 38700.0, 51800.0, 77400.0], - [39475.0, 78950.0, 39475.0, 52850.0, 78950.0], - [40209.24, 80418.47, 40209.24, 53833.01, 80418.47], - [41146.11, 82292.22, 41146.11, 55087.32, 82292.22], - [42088.36, 84176.71, 42088.36, 56348.82, 84176.71], - [43047.97, 86095.94, 43047.97, 57633.57, 86095.94], - [43999.33, 87998.66, 43999.33, 58907.27, 87998.66], - [44927.72, 89855.43, 44927.72, 60150.22, 89855.43], - [45926.0, 91851.0, 45926.0, 61476.0, 91851.0]], - "valid_values": {"min": "PT_brk1", "max": "PT_brk3"}, - "invalid_minmsg": "for PT_brk1", - "invalid_maxmsg": "for PT_brk3", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.", + "notes": "" + }, "PT_rt3": { - "long_name": "Pass-through income tax rate 3", - "description": "The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.", + "value": [ + { + "year": 2013, + "value": 0.25 + }, + { + "year": 2014, + "value": 0.25 + }, + { + "year": 2015, + "value": 0.25 + }, + { + "year": 2016, + "value": 0.25 + }, + { + "year": 2017, + "value": 0.25 + }, + { + "year": 2018, + "value": 0.22 + }, + { + "year": 2019, + "value": 0.22 + }, + { + "year": 2020, + "value": 0.22 + }, + { + "year": 2021, + "value": 0.22 + }, + { + "year": 2022, + "value": 0.22 + }, + { + "year": 2023, + "value": 0.22 + }, + { + "year": 2024, + "value": 0.22 + }, + { + "year": 2025, + "value": 0.22 + }, + { + "year": 2026, + "value": 0.25 + } + ], + "title": "Pass-through income tax rate 3", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.25, - 0.25, - 0.25, - 0.25, - 0.25, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.22, - 0.25], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.", + "notes": "" + }, "PT_brk3": { - "long_name": "Pass-through income tax bracket (upper threshold) 3", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 87850.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 146400.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 73200.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 125450.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 146400.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 89350.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 148850.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 74425.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 127550.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 148850.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 90750.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 151200.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 75600.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 129600.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 151200.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 91150.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 151900.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 75950.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 130150.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 151900.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 91900.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 153100.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 76550.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 131200.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 153100.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 82500.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 165000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 82500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 82500.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 165000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 84200.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 168400.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 84200.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 84200.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 168400.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 85766.12 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 171532.24 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 85766.12 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 85766.12 + }, + { + "year": 2020, + "MARS": "widow", + "value": 171532.24 + }, + { + "year": 2021, + "MARS": "single", + "value": 87764.47 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 175528.94 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 87764.47 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 87764.47 + }, + { + "year": 2021, + "MARS": "widow", + "value": 175528.94 + }, + { + "year": 2022, + "MARS": "single", + "value": 89774.28 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 179548.55 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 89774.28 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 89774.28 + }, + { + "year": 2022, + "MARS": "widow", + "value": 179548.55 + }, + { + "year": 2023, + "MARS": "single", + "value": 91821.13 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 183642.26 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 91821.13 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 91821.13 + }, + { + "year": 2023, + "MARS": "widow", + "value": 183642.26 + }, + { + "year": 2024, + "MARS": "single", + "value": 93850.38 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 187700.75 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 93850.38 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 93850.38 + }, + { + "year": 2024, + "MARS": "widow", + "value": 187700.75 + }, + { + "year": 2025, + "MARS": "single", + "value": 95830.62 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 191661.24 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 95830.62 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 95830.62 + }, + { + "year": 2025, + "MARS": "widow", + "value": 191661.24 + }, + { + "year": 2026, + "MARS": "single", + "value": 111214.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 185275.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 92638.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 158773.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 185275.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 3", + "type": "float", + "validators": { + "range": { + "min": "PT_brk2", + "max": "PT_brk4" + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[87850.00, 146400.00, 73200.00, 125450.00, 146400.00], - [89350.00, 148850.00, 74425.00, 127550.00, 148850.00], - [90750.00, 151200.00, 75600.00, 129600.00, 151200.00], - [91150.00, 151900.00, 75950.00, 130150.00, 151900.00], - [91900.00, 153100.00, 76550.00, 131200.00, 153100.00], - [82500.0, 165000.0, 82500.0, 82500.0, 165000.0], - [84200.0, 168400.0, 84200.0, 84200.0, 168400.0], - [85766.12, 171532.24, 85766.12, 85766.12, 171532.24], - [87764.47, 175528.94, 87764.47, 87764.47, 175528.94], - [89774.28, 179548.55, 89774.28, 89774.28, 179548.55], - [91821.13, 183642.26, 91821.13, 91821.13, 183642.26], - [93850.38, 187700.75, 93850.38, 93850.38, 187700.75], - [95830.62, 191661.24, 95830.62, 95830.62, 191661.24], - [111214.0, 185275.0, 92638.0, 158773.0, 185275.0]], - "valid_values": {"min": "PT_brk2", "max": "PT_brk4"}, - "invalid_minmsg": "for PT_brk2", - "invalid_maxmsg": "for PT_brk4", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.", + "notes": "" + }, "PT_rt4": { - "long_name": "Pass-through income tax rate 4", - "description": "The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.", + "value": [ + { + "year": 2013, + "value": 0.28 + }, + { + "year": 2014, + "value": 0.28 + }, + { + "year": 2015, + "value": 0.28 + }, + { + "year": 2016, + "value": 0.28 + }, + { + "year": 2017, + "value": 0.28 + }, + { + "year": 2018, + "value": 0.24 + }, + { + "year": 2019, + "value": 0.24 + }, + { + "year": 2020, + "value": 0.24 + }, + { + "year": 2021, + "value": 0.24 + }, + { + "year": 2022, + "value": 0.24 + }, + { + "year": 2023, + "value": 0.24 + }, + { + "year": 2024, + "value": 0.24 + }, + { + "year": 2025, + "value": 0.24 + }, + { + "year": 2026, + "value": 0.28 + } + ], + "title": "Pass-through income tax rate 4", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.28, - 0.28, - 0.28, - 0.28, - 0.28, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.24, - 0.28], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.", + "notes": "" + }, "PT_brk4": { - "long_name": "Pass-through income tax bracket (upper threshold) 4", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 183250.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 223050.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 111525.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 203150.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 223050.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 186350.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 226850.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 113425.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 206600.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 226850.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 189300.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 230450.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 115225.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 209850.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 230450.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 190150.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 231450.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 115725.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 210800.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 231450.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 191650.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 233350.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 116675.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 212500.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 233350.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 315000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 315000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 160725.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 321450.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 160725.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 160700.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 321450.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 163714.48 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 327428.97 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 163714.48 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 163689.02 + }, + { + "year": 2020, + "MARS": "widow", + "value": 327428.97 + }, + { + "year": 2021, + "MARS": "single", + "value": 167529.03 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 335058.07 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 167529.03 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 167502.97 + }, + { + "year": 2021, + "MARS": "widow", + "value": 335058.07 + }, + { + "year": 2022, + "MARS": "single", + "value": 171365.45 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 342730.89 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 171365.45 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 171338.79 + }, + { + "year": 2022, + "MARS": "widow", + "value": 342730.89 + }, + { + "year": 2023, + "MARS": "single", + "value": 175272.58 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 350545.16 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 175272.58 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 175245.32 + }, + { + "year": 2023, + "MARS": "widow", + "value": 350545.16 + }, + { + "year": 2024, + "MARS": "single", + "value": 179146.1 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 358292.21 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 179146.1 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 179118.24 + }, + { + "year": 2024, + "MARS": "widow", + "value": 358292.21 + }, + { + "year": 2025, + "MARS": "single", + "value": 182926.09 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 365852.17 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 182926.09 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 182897.63 + }, + { + "year": 2025, + "MARS": "widow", + "value": 365852.17 + }, + { + "year": 2026, + "MARS": "single", + "value": 231927.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 282391.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 141195.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 257159.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 282391.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 4", + "type": "float", + "validators": { + "range": { + "min": "PT_brk3", + "max": "PT_brk5" + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[183250.00, 223050.00, 111525.00, 203150.00, 223050.00], - [186350.00, 226850.00, 113425.00, 206600.00, 226850.00], - [189300.00, 230450.00, 115225.00, 209850.00, 230450.00], - [190150.00, 231450.00, 115725.00, 210800.00, 231450.00], - [191650.00, 233350.00, 116675.00, 212500.00, 233350.00], - [157500.0, 315000.0, 157500.0, 157500.0, 315000.0], - [160725.0, 321450.0, 160725.0, 160700.0, 321450.0], - [163714.48, 327428.97, 163714.48, 163689.02, 327428.97], - [167529.03, 335058.07, 167529.03, 167502.97, 335058.07], - [171365.45, 342730.89, 171365.45, 171338.79, 342730.89], - [175272.58, 350545.16, 175272.58, 175245.32, 350545.16], - [179146.1, 358292.21, 179146.1, 179118.24, 358292.21], - [182926.09, 365852.17, 182926.09, 182897.63, 365852.17], - [231927.0, 282391.0, 141195.0, 257159.0, 282391.0]], - "valid_values": {"min": "PT_brk3", "max": "PT_brk5"}, - "invalid_minmsg": "for PT_brk3", - "invalid_maxmsg": "for PT_brk5", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.", + "notes": "" + }, "PT_rt5": { - "long_name": "Pass-through income tax rate 5", - "description": "The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.", + "value": [ + { + "year": 2013, + "value": 0.33 + }, + { + "year": 2014, + "value": 0.33 + }, + { + "year": 2015, + "value": 0.33 + }, + { + "year": 2016, + "value": 0.33 + }, + { + "year": 2017, + "value": 0.33 + }, + { + "year": 2018, + "value": 0.32 + }, + { + "year": 2019, + "value": 0.32 + }, + { + "year": 2020, + "value": 0.32 + }, + { + "year": 2021, + "value": 0.32 + }, + { + "year": 2022, + "value": 0.32 + }, + { + "year": 2023, + "value": 0.32 + }, + { + "year": 2024, + "value": 0.32 + }, + { + "year": 2025, + "value": 0.32 + }, + { + "year": 2026, + "value": 0.33 + } + ], + "title": "Pass-through income tax rate 5", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.33, - 0.33, - 0.33, - 0.33, - 0.33, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.32, - 0.33], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - - "PT_brk5": { - "long_name": "Pass-through income tax bracket (upper threshold) 5", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.", + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.", + "notes": "" + }, + "PT_brk5": { + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 398350.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 398350.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 199175.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 398350.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 398350.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 405100.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 405100.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 202550.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 405100.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 405100.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 411500.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 411500.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 205750.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 411500.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 411500.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 206675.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 413350.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 416700.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 416700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 208350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 416700.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 416700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 204100.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 408200.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 204100.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 204100.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 408200.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 207896.26 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 415792.52 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 207896.26 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 207896.26 + }, + { + "year": 2020, + "MARS": "widow", + "value": 415792.52 + }, + { + "year": 2021, + "MARS": "single", + "value": 212740.24 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 425480.49 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 212740.24 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 212740.24 + }, + { + "year": 2021, + "MARS": "widow", + "value": 425480.49 + }, + { + "year": 2022, + "MARS": "single", + "value": 217611.99 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 435223.99 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 217611.99 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 217611.99 + }, + { + "year": 2022, + "MARS": "widow", + "value": 435223.99 + }, + { + "year": 2023, + "MARS": "single", + "value": 222573.55 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 445147.1 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 222573.55 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 222573.55 + }, + { + "year": 2023, + "MARS": "widow", + "value": 445147.1 + }, + { + "year": 2024, + "MARS": "single", + "value": 227492.42 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 454984.85 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 227492.42 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 227492.42 + }, + { + "year": 2024, + "MARS": "widow", + "value": 454984.85 + }, + { + "year": 2025, + "MARS": "single", + "value": 232292.51 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 464585.03 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 232292.51 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 232292.51 + }, + { + "year": 2025, + "MARS": "widow", + "value": 464585.03 + }, + { + "year": 2026, + "MARS": "single", + "value": 504273.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 504273.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 252137.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 504273.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 504273.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 5", + "type": "float", + "validators": { + "range": { + "min": "PT_brk4", + "max": "PT_brk6" + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[398350.00, 398350.00, 199175.00, 398350.00, 398350.00], - [405100.00, 405100.00, 202550.00, 405100.00, 405100.00], - [411500.00, 411500.00, 205750.00, 411500.00, 411500.00], - [413350.00, 413350.00, 206675.00, 413350.00, 413350.00], - [416700.00, 416700.00, 208350.00, 416700.00, 416700.00], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [204100.0, 408200.0, 204100.0, 204100.0, 408200.0], - [207896.26, 415792.52, 207896.26, 207896.26, 415792.52], - [212740.24, 425480.49, 212740.24, 212740.24, 425480.49], - [217611.99, 435223.99, 217611.99, 217611.99, 435223.99], - [222573.55, 445147.1, 222573.55, 222573.55, 445147.1], - [227492.42, 454984.85, 227492.42, 227492.42, 454984.85], - [232292.51, 464585.03, 232292.51, 232292.51, 464585.03], - [504273.0, 504273.0, 252137.0, 504273.0, 504273.0]], - "valid_values": {"min": "PT_brk4", "max": "PT_brk6"}, - "invalid_minmsg": "for PT_brk4", - "invalid_maxmsg": "for PT_brk6", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.", + "notes": "" + }, "PT_rt6": { - "long_name": "Pass-through income tax rate 6", - "description": "The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.", + "value": [ + { + "year": 2013, + "value": 0.35 + }, + { + "year": 2014, + "value": 0.35 + }, + { + "year": 2015, + "value": 0.35 + }, + { + "year": 2016, + "value": 0.35 + }, + { + "year": 2017, + "value": 0.35 + }, + { + "year": 2018, + "value": 0.35 + }, + { + "year": 2019, + "value": 0.35 + }, + { + "year": 2020, + "value": 0.35 + }, + { + "year": 2021, + "value": 0.35 + }, + { + "year": 2022, + "value": 0.35 + }, + { + "year": 2023, + "value": 0.35 + }, + { + "year": 2024, + "value": 0.35 + }, + { + "year": 2025, + "value": 0.35 + }, + { + "year": 2026, + "value": 0.35 + } + ], + "title": "Pass-through income tax rate 6", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35, - 0.35], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.", + "notes": "" + }, "PT_brk6": { - "long_name": "Pass-through income tax bracket (upper threshold) 6", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 400000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 450000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 225000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 425000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 450000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 406750.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 457600.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 228800.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 432200.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 457600.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 413200.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 464850.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 232425.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 439000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 464850.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 415050.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 466950.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 233475.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 441000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 466950.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 418400.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 470700.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 235350.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 444550.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 470700.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 600000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 300000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 600000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 510300.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 612350.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 306175.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 510300.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 612350.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 519791.58 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 623739.71 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 311869.86 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 519791.58 + }, + { + "year": 2020, + "MARS": "widow", + "value": 623739.71 + }, + { + "year": 2021, + "MARS": "single", + "value": 531902.72 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 638272.85 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 319136.42 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 531902.72 + }, + { + "year": 2021, + "MARS": "widow", + "value": 638272.85 + }, + { + "year": 2022, + "MARS": "single", + "value": 544083.3 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 652889.29 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 326444.65 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 544083.3 + }, + { + "year": 2022, + "MARS": "widow", + "value": 652889.29 + }, + { + "year": 2023, + "MARS": "single", + "value": 556488.4 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 667775.17 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 333887.58 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 556488.4 + }, + { + "year": 2023, + "MARS": "widow", + "value": 667775.17 + }, + { + "year": 2024, + "MARS": "single", + "value": 568786.79 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 682533.0 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 341266.5 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 568786.79 + }, + { + "year": 2024, + "MARS": "widow", + "value": 682533.0 + }, + { + "year": 2025, + "MARS": "single", + "value": 580788.19 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 696934.45 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 348467.22 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 580788.19 + }, + { + "year": 2025, + "MARS": "widow", + "value": 696934.45 + }, + { + "year": 2026, + "MARS": "single", + "value": 506331.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 569622.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 284811.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 537976.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 569622.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 6", + "type": "float", + "validators": { + "range": { + "min": "PT_brk5", + "max": "PT_brk7" + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[400000.00, 450000.00, 225000.00, 425000.00, 450000.00], - [406750.00, 457600.00, 228800.00, 432200.00, 457600.00], - [413200.00, 464850.00, 232425.00, 439000.00, 464850.00], - [415050.00, 466950.00, 233475.00, 441000.00, 466950.00], - [418400.00, 470700.00, 235350.00, 444550.00, 470700.00], - [500000.0, 600000.0, 300000.0, 500000.0, 600000.0], - [510300.0, 612350.0, 306175.0, 510300.0, 612350.0], - [519791.58, 623739.71, 311869.86, 519791.58, 623739.71], - [531902.72, 638272.85, 319136.42, 531902.72, 638272.85], - [544083.3, 652889.29, 326444.65, 544083.3, 652889.29], - [556488.4, 667775.17, 333887.58, 556488.4, 667775.17], - [568786.79, 682533.0, 341266.5, 568786.79, 682533.0], - [580788.19, 696934.45, 348467.22, 580788.19, 696934.45], - [506331.0, 569622.0, 284811.0, 537976.0, 569622.0]], - "valid_values": {"min": "PT_brk5", "max": "PT_brk7"}, - "invalid_minmsg": "for PT_brk5", - "invalid_maxmsg": "for PT_brk7", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.", + "notes": "" + }, "PT_rt7": { - "long_name": "Pass-through income tax rate 7", - "description": "The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.", + "value": [ + { + "year": 2013, + "value": 0.396 + }, + { + "year": 2014, + "value": 0.396 + }, + { + "year": 2015, + "value": 0.396 + }, + { + "year": 2016, + "value": 0.396 + }, + { + "year": 2017, + "value": 0.396 + }, + { + "year": 2018, + "value": 0.37 + }, + { + "year": 2019, + "value": 0.37 + }, + { + "year": 2020, + "value": 0.37 + }, + { + "year": 2021, + "value": 0.37 + }, + { + "year": 2022, + "value": 0.37 + }, + { + "year": 2023, + "value": 0.37 + }, + { + "year": 2024, + "value": 0.37 + }, + { + "year": 2025, + "value": 0.37 + }, + { + "year": 2026, + "value": 0.396 + } + ], + "title": "Pass-through income tax rate 7", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 1040, line 11, instruction (Schedule XYZ)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.396, - 0.396, - 0.396, - 0.396, - 0.396, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.37, - 0.396], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.", + "notes": "" + }, "PT_brk7": { - "long_name": "Extra pass-through income tax bracket", - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 6 is taxed at tax rate 7. Default value is essentially infinity.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2020, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2021, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2022, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2023, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2024, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2025, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2026, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Extra pass-through income tax bracket", + "type": "float", + "validators": { + "range": { + "min": "PT_brk6", + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": "PT_brk6", "max": 9e99}, - "invalid_minmsg": "for PT_brk6", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 6 is taxed at tax rate 7. Default value is essentially infinity.", + "notes": "" + }, "PT_rt8": { - "long_name": "Extra pass-through income tax rate", - "description": "The extra tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations above the tax bracket 7.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Extra pass-through income tax rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The extra tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations above the tax bracket 7.", + "notes": "" + }, "PT_EligibleRate_active": { - "long_name": "Share of active business income eligible for PT rate schedule", - "description": "Eligibility rate of active business income for separate pass-through rates.", + "value": [ + { + "year": 2013, + "value": 1.0 + } + ], + "title": "Share of active business income eligible for PT rate schedule", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "", - "notes": "Active business income defined as e00900 + e26270", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Eligibility rate of active business income for separate pass-through rates.", + "notes": "Active business income defined as e00900 + e26270" + }, "PT_EligibleRate_passive": { - "long_name": "Share of passive business income eligible for PT rate schedule", - "description": "Eligibility rate of passive business income for mseparate pass-through rates.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Share of passive business income eligible for PT rate schedule", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "", - "notes": "Passive business income defined as e02000 - e26270", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "Eligibility rate of passive business income for mseparate pass-through rates.", + "notes": "Passive business income defined as e02000 - e26270" + }, "PT_wages_active_income": { - "long_name": "Wages included in (positive) active business income eligible for PT rates", - "description": "Whether active business income eligibility base for PT schedule for includes wages.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Wages included in (positive) active business income eligible for PT rates", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "", - "notes": "Only applies if active business income is positive", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": false, + "cps": false + }, + "description": "Whether active business income eligibility base for PT schedule for includes wages.", + "notes": "Only applies if active business income is positive" + }, "PT_top_stacking": { - "long_name": "PT taxable income stacked on top of regular taxable income", - "description": "Whether taxable income eligible for PT rate schedule is stacked on top of regular taxable income.", + "value": [ + { + "year": 2013, + "value": true + } + ], + "title": "PT taxable income stacked on top of regular taxable income", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [true], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Whether taxable income eligible for PT rate schedule is stacked on top of regular taxable income.", + "notes": "" + }, "PT_qbid_rt": { - "long_name": "Pass-through qualified business income deduction rate", - "description": "Fraction of pass-through business income that may be excluded from taxable income.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.2 + }, + { + "year": 2019, + "value": 0.2 + }, + { + "year": 2020, + "value": 0.2 + }, + { + "year": 2021, + "value": 0.2 + }, + { + "year": 2022, + "value": 0.2 + }, + { + "year": 2023, + "value": 0.2 + }, + { + "year": 2024, + "value": 0.2 + }, + { + "year": 2025, + "value": 0.2 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Pass-through qualified business income deduction rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 8995-A", - "notes": "Applies to e00900 + e26270", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Fraction of pass-through business income that may be excluded from taxable income.", + "notes": "Applies to e00900 + e26270" + }, "PT_qbid_taxinc_thd": { - "long_name": "Lower threshold of pre-QBID taxable income", - "description": "Pre-QBID taxable income above this lower threshold implies the QBID amount begins to be limited.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 315000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 315000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 160700.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 321400.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 160725.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 160700.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 321400.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 163689.02 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 327378.04 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 163714.48 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 163689.02 + }, + { + "year": 2020, + "MARS": "widow", + "value": 327378.04 + }, + { + "year": 2021, + "MARS": "single", + "value": 167502.97 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 335005.95 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 167529.03 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 167502.97 + }, + { + "year": 2021, + "MARS": "widow", + "value": 335005.95 + }, + { + "year": 2022, + "MARS": "single", + "value": 171338.79 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 342677.58 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 171365.45 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 171338.79 + }, + { + "year": 2022, + "MARS": "widow", + "value": 342677.58 + }, + { + "year": 2023, + "MARS": "single", + "value": 175245.32 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 350490.63 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 175272.58 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 175245.32 + }, + { + "year": 2023, + "MARS": "widow", + "value": 350490.63 + }, + { + "year": 2024, + "MARS": "single", + "value": 179118.24 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 358236.48 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 179146.1 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 179118.24 + }, + { + "year": 2024, + "MARS": "widow", + "value": 358236.48 + }, + { + "year": 2025, + "MARS": "single", + "value": 182897.63 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 365795.27 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 182926.09 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 182897.63 + }, + { + "year": 2025, + "MARS": "widow", + "value": 365795.27 + }, + { + "year": 2026, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Lower threshold of pre-QBID taxable income", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 8995-A, Line 3, in-line", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [157500.0, 315000.0, 157500.0, 157500.0, 315000.0], - [160700.0, 321400.0, 160725.0, 160700.0, 321400.0], - [163689.02, 327378.04, 163714.48, 163689.02, 327378.04], - [167502.97, 335005.95, 167529.03, 167502.97, 335005.95], - [171338.79, 342677.58, 171365.45, 171338.79, 342677.58], - [175245.32, 350490.63, 175272.58, 175245.32, 350490.63], - [179118.24, 358236.48, 179146.1, 179118.24, 358236.48], - [182897.63, 365795.27, 182926.09, 182897.63, 365795.27], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Pre-QBID taxable income above this lower threshold implies the QBID amount begins to be limited.", + "notes": "" + }, "PT_qbid_taxinc_gap": { - "long_name": "Dollar gap between upper and lower threshold of pre-QBID taxable income", - "description": "Pre-QBID taxable income above this upper threshold implies the QBID amount is even more limited.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 1.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 1.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 1.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 1.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 1.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 1.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 1.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 1.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 1.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 1.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 1.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 1.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 1.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 1.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 1.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 1.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 1.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 1.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 1.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 1.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 1.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 1.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 1.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 1.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 1.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2020, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2021, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2021, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2022, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2022, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2023, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2023, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2024, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2024, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2025, + "MARS": "single", + "value": 50000.0 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 100000.0 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 50000.0 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 50000.0 + }, + { + "year": 2025, + "MARS": "widow", + "value": 100000.0 + }, + { + "year": 2026, + "MARS": "single", + "value": 1.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 1.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 1.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 1.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 1.0 + } + ], + "title": "Dollar gap between upper and lower threshold of pre-QBID taxable income", + "type": "float", + "validators": { + "range": { + "min": 1, + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 8995-A", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[1.0, 1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0, 1.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [50000.0, 100000.0, 50000.0, 50000.0, 100000.0], - [1.0, 1.0, 1.0, 1.0, 1.0]], - "valid_values": {"min": 1, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Pre-QBID taxable income above this upper threshold implies the QBID amount is even more limited.", + "notes": "" + }, "PT_qbid_w2_wages_rt": { - "long_name": "QBID cap rate on pass-through business W-2 wages paid", - "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.5 + }, + { + "year": 2019, + "value": 0.5 + }, + { + "year": 2020, + "value": 0.5 + }, + { + "year": 2021, + "value": 0.5 + }, + { + "year": 2022, + "value": 0.5 + }, + { + "year": 2023, + "value": 0.5 + }, + { + "year": 2024, + "value": 0.5 + }, + { + "year": 2025, + "value": 0.5 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "QBID cap rate on pass-through business W-2 wages paid", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 8995-A", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": false, + "cps": false + }, + "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds.", + "notes": "" + }, "PT_qbid_alt_w2_wages_rt": { - "long_name": "Alternative QBID cap rate on pass-through business W-2 wages paid", - "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business plus some fraction of business property if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.25 + }, + { + "year": 2019, + "value": 0.25 + }, + { + "year": 2020, + "value": 0.25 + }, + { + "year": 2021, + "value": 0.25 + }, + { + "year": 2022, + "value": 0.25 + }, + { + "year": 2023, + "value": 0.25 + }, + { + "year": 2024, + "value": 0.25 + }, + { + "year": 2025, + "value": 0.25 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Alternative QBID cap rate on pass-through business W-2 wages paid", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 8995-A", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.25, - 0.25, - 0.25, - 0.25, - 0.25, - 0.25, - 0.25, - 0.25, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": false, + "cps": false + }, + "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business plus some fraction of business property if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", + "notes": "" + }, "PT_qbid_alt_property_rt": { - "long_name": "Alternative QBID cap rate on pass-through business property owned", - "description": "QBID is capped at this fraction of business property owned plus some fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.025 + }, + { + "year": 2019, + "value": 0.025 + }, + { + "year": 2020, + "value": 0.025 + }, + { + "year": 2021, + "value": 0.025 + }, + { + "year": 2022, + "value": 0.025 + }, + { + "year": 2023, + "value": 0.025 + }, + { + "year": 2024, + "value": 0.025 + }, + { + "year": 2025, + "value": 0.025 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Alternative QBID cap rate on pass-through business property owned", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Pass-Through", - "irs_ref": "Form 8995-A", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.025, - 0.025, - 0.025, - 0.025, - 0.025, - 0.025, - 0.025, - 0.025, - 0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": false, + "cps": false + }, + "description": "QBID is capped at this fraction of business property owned plus some fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", + "notes": "" + }, "AMT_em": { - "long_name": "AMT exemption amount", - "description": "The amount of AMT taxable income exempted from AMT.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 51900.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 80800.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 40400.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 51900.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 80800.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 52800.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 82100.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 41050.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 52800.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 82100.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 53600.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 83400.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 41700.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 53600.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 83400.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 53900.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 83800.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 41900.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 53900.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 83800.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 54300.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 84500.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 42250.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 54300.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 84500.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 70300.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 109400.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 54700.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 70300.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 109400.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 71700.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 111700.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 55850.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 71700.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 111700.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 73033.62 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 113777.62 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 56888.81 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 73033.62 + }, + { + "year": 2020, + "MARS": "widow", + "value": 113777.62 + }, + { + "year": 2021, + "MARS": "single", + "value": 74735.3 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 116428.64 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 58214.32 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 74735.3 + }, + { + "year": 2021, + "MARS": "widow", + "value": 116428.64 + }, + { + "year": 2022, + "MARS": "single", + "value": 76446.74 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 119094.85 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 59547.43 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 76446.74 + }, + { + "year": 2022, + "MARS": "widow", + "value": 119094.85 + }, + { + "year": 2023, + "MARS": "single", + "value": 78189.73 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 121810.22 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 60905.11 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 78189.73 + }, + { + "year": 2023, + "MARS": "widow", + "value": 121810.22 + }, + { + "year": 2024, + "MARS": "single", + "value": 79917.72 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 124502.22 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 62251.11 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 79917.72 + }, + { + "year": 2024, + "MARS": "widow", + "value": 124502.22 + }, + { + "year": 2025, + "MARS": "single", + "value": 81603.98 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 127129.22 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 63564.61 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 81603.98 + }, + { + "year": 2025, + "MARS": "widow", + "value": 127129.22 + }, + { + "year": 2026, + "MARS": "single", + "value": 65712.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 102258.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 51129.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 65712.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 102258.0 + } + ], + "title": "AMT exemption amount", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "section_3": "Exemption", - "irs_ref": "Form 1040 (Schedule 2), line 45, instruction (Worksheet).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[51900.00, 80800.00, 40400.00, 51900.00, 80800.00], - [52800.00, 82100.00, 41050.00, 52800.00, 82100.00], - [53600.00, 83400.00, 41700.00, 53600.00, 83400.00], - [53900.00, 83800.00, 41900.00, 53900.00, 83800.00], - [54300.00, 84500.00, 42250.00, 54300.00, 84500.00], - [70300.0, 109400.0, 54700.0, 70300.0, 109400.0], - [71700.0, 111700.0, 55850.0, 71700.0, 111700.0], - [73033.62, 113777.62, 56888.81, 73033.62, 113777.62], - [74735.3, 116428.64, 58214.32, 74735.3, 116428.64], - [76446.74, 119094.85, 59547.43, 76446.74, 119094.85], - [78189.73, 121810.22, 60905.11, 78189.73, 121810.22], - [79917.72, 124502.22, 62251.11, 79917.72, 124502.22], - [81603.98, 127129.22, 63564.61, 81603.98, 127129.22], - [65712.0, 102258.0, 51129.0, 65712.0, 102258.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The amount of AMT taxable income exempted from AMT.", + "notes": "" + }, "AMT_prt": { - "long_name": "AMT exemption phaseout rate", - "description": "AMT exemption will decrease at this rate for each dollar of AMT taxable income exceeding AMT phaseout start.", + "value": [ + { + "year": 2013, + "value": 0.25 + } + ], + "title": "AMT exemption phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "section_3": "Exemption", - "irs_ref": "Form 1040 (Schedule 2), line 45, instruction (Worksheet).", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.25], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "AMT exemption will decrease at this rate for each dollar of AMT taxable income exceeding AMT phaseout start.", + "notes": "" + }, "AMT_em_ps": { - "long_name": "AMT exemption phaseout start", - "description": "AMT exemption starts to decrease when AMT taxable income goes beyond this threshold.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 115400.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 153900.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 76950.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 115400.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 153900.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 117300.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 156500.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 78250.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 117300.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 156500.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 119200.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 158900.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 79450.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 119200.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 158900.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 119700.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 159700.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 79850.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 119700.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 159700.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 120700.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 160900.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 80450.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 120700.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 160900.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 1000000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 510300.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 1020600.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 510300.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 510300.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 1020600.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 519791.58 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 1039583.16 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 519791.58 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 519791.58 + }, + { + "year": 2020, + "MARS": "widow", + "value": 1039583.16 + }, + { + "year": 2021, + "MARS": "single", + "value": 531902.72 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 1063805.45 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 531902.72 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 531902.72 + }, + { + "year": 2021, + "MARS": "widow", + "value": 1063805.45 + }, + { + "year": 2022, + "MARS": "single", + "value": 544083.3 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 1088166.59 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 544083.3 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 544083.3 + }, + { + "year": 2022, + "MARS": "widow", + "value": 1088166.59 + }, + { + "year": 2023, + "MARS": "single", + "value": 556488.4 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 1112976.79 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 556488.4 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 556488.4 + }, + { + "year": 2023, + "MARS": "widow", + "value": 1112976.79 + }, + { + "year": 2024, + "MARS": "single", + "value": 568786.79 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 1137573.58 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 568786.79 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 568786.79 + }, + { + "year": 2024, + "MARS": "widow", + "value": 1137573.58 + }, + { + "year": 2025, + "MARS": "single", + "value": 580788.19 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 1161576.38 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 580788.19 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 580788.19 + }, + { + "year": 2025, + "MARS": "widow", + "value": 1161576.38 + }, + { + "year": 2026, + "MARS": "single", + "value": 146066.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 194715.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 97357.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 146066.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 194715.0 + } + ], + "title": "AMT exemption phaseout start", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "section_3": "Exemption", - "irs_ref": "Form 1040 (Schedule 2), line 45, instruction (Worksheet).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[115400.00, 153900.00, 76950.00, 115400.00, 153900.00], - [117300.00, 156500.00, 78250.00, 117300.00, 156500.00], - [119200.00, 158900.00, 79450.00, 119200.00, 158900.00], - [119700.00, 159700.00, 79850.00, 119700.00, 159700.00], - [120700.00, 160900.00, 80450.00, 120700.00, 160900.00], - [500000.0, 1000000.0, 500000.0, 500000.0, 1000000.0], - [510300.0, 1020600.0, 510300.0, 510300.0, 1020600.0], - [519791.58, 1039583.16, 519791.58, 519791.58, 1039583.16], - [531902.72, 1063805.45, 531902.72, 531902.72, 1063805.45], - [544083.3, 1088166.59, 544083.3, 544083.3, 1088166.59], - [556488.4, 1112976.79, 556488.4, 556488.4, 1112976.79], - [568786.79, 1137573.58, 568786.79, 568786.79, 1137573.58], - [580788.19, 1161576.38, 580788.19, 580788.19, 1161576.38], - [146066.0, 194715.0, 97357.0, 146066.0, 194715.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "AMT exemption starts to decrease when AMT taxable income goes beyond this threshold.", + "notes": "" + }, "AMT_child_em": { - "long_name": "Child AMT exemption additional income base", - "description": "The child's AMT exemption is capped by this amount plus the child's earned income.", + "value": [ + { + "year": 2013, + "value": 7150.0 + }, + { + "year": 2014, + "value": 7250.0 + }, + { + "year": 2015, + "value": 7400.0 + }, + { + "year": 2016, + "value": 7400.0 + }, + { + "year": 2017, + "value": 7500.0 + }, + { + "year": 2018, + "value": 7600.0 + }, + { + "year": 2019, + "value": 0.0 + } + ], + "title": "Child AMT exemption additional income base", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 6251, line 5, instruction.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [7150.0, - 7250.0, - 7400.0, - 7400.0, - 7500.0, - 7600.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The child's AMT exemption is capped by this amount plus the child's earned income.", + "notes": "" + }, "AMT_child_em_c_age": { - "long_name": "Age ceiling for special AMT exemption", - "description": "Individuals under this age must use the child AMT exemption rules.", + "value": [ + { + "year": 2013, + "value": 18 + } + ], + "title": "Age ceiling for special AMT exemption", + "type": "int", + "validators": { + "range": { + "min": 0, + "max": 30 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 6251, line 5, instruction.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "integer", - "value": [18], - "valid_values": {"min": 0, "max": 30}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Individuals under this age must use the child AMT exemption rules.", + "notes": "" + }, "AMT_rt1": { - "long_name": "AMT rate 1", - "description": "The tax rate applied to the portion of AMT taxable income below the surtax threshold, AMT bracket 1.", + "value": [ + { + "year": 2013, + "value": 0.26 + } + ], + "title": "AMT rate 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "section_3": "Tax rates", - "irs_ref": "Form 6251, line 7, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.26], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The tax rate applied to the portion of AMT taxable income below the surtax threshold, AMT bracket 1.", + "notes": "" + }, "AMT_brk1": { - "long_name": "AMT bracket 1 (upper threshold)", - "description": "AMT taxable income below this is subject to AMT rate 1 and above it is subject to AMT rate 1 + the additional AMT rate.", + "value": [ + { + "year": 2013, + "value": 179500.0 + }, + { + "year": 2014, + "value": 182500.0 + }, + { + "year": 2015, + "value": 185400.0 + }, + { + "year": 2016, + "value": 186300.0 + }, + { + "year": 2017, + "value": 187800.0 + }, + { + "year": 2018, + "value": 191100.0 + }, + { + "year": 2019, + "value": 194800.0 + } + ], + "title": "AMT bracket 1 (upper threshold)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "section_3": "Tax rates", - "irs_ref": "Form 6251, line 7, instruction.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [179500.0, - 182500.0, - 185400.0, - 186300.0, - 187800.0, - 191100.0, - 194800.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "AMT taxable income below this is subject to AMT rate 1 and above it is subject to AMT rate 1 + the additional AMT rate.", + "notes": "" + }, "AMT_rt2": { - "long_name": "Additional AMT rate for AMT taxable income above AMT bracket 1", - "description": "The additional tax rate applied to the portion of AMT income above the AMT bracket 1.", + "value": [ + { + "year": 2013, + "value": 0.02 + } + ], + "title": "Additional AMT rate for AMT taxable income above AMT bracket 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Personal Income", "section_2": "Alternative Minimum Tax", - "section_3": "Tax rates", - "irs_ref": "Form 6251, line 7, in-line. ", - "notes": "This is the additional tax rate (on top of AMT rate 1) for AMT income above AMT bracket 1.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.02], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The additional tax rate applied to the portion of AMT income above the AMT bracket 1.", + "notes": "This is the additional tax rate (on top of AMT rate 1) for AMT income above AMT bracket 1." + }, "AMT_em_pe": { - "long_name": "AMT exemption phaseout ending AMT taxable income for Married filing Separately", - "description": "The AMT exemption is entirely disallowed beyond this AMT taxable income level for individuals who are married but filing separately.", + "value": [ + { + "year": 2013, + "value": 238550.0 + }, + { + "year": 2014, + "value": 242450.0 + }, + { + "year": 2015, + "value": 246250.0 + }, + { + "year": 2016, + "value": 247450.0 + }, + { + "year": 2017, + "value": 249450.0 + }, + { + "year": 2018, + "value": 718800.0 + }, + { + "year": 2019, + "value": 733700.0 + }, + { + "year": 2020, + "value": 747346.82 + }, + { + "year": 2021, + "value": 764760.0 + }, + { + "year": 2022, + "value": 782273.0 + }, + { + "year": 2023, + "value": 800108.83 + }, + { + "year": 2024, + "value": 817791.23 + }, + { + "year": 2025, + "value": 835046.63 + }, + { + "year": 2026, + "value": 301874.0 + } + ], + "title": "AMT exemption phaseout ending AMT taxable income for Married filing Separately", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 6251, line 4, in-line.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [238550.0, - 242450.0, - 246250.0, - 247450.0, - 249450.0, - 718800.0, - 733700.0, - 747346.82, - 764760.0, - 782273.0, - 800108.83, - 817791.23, - 835046.63, - 301874.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "The AMT exemption is entirely disallowed beyond this AMT taxable income level for individuals who are married but filing separately.", + "notes": "" + }, "CDCC_c": { - "long_name": "Maximum child & dependent care credit per dependent", - "description": "The maximum amount of credit allowed for each qualifying dependent.", + "value": [ + { + "year": 2013, + "value": 3000.0 + } + ], + "title": "Maximum child & dependent care credit per dependent", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 3000 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Child And Dependent Care", - "irs_ref": "Form 2441, line 3, in-line.", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [3000.0], - "valid_values": {"min": 0, "max": 3000}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The maximum amount of credit allowed for each qualifying dependent.", + "notes": "" + }, "CDCC_ps": { - "long_name": "Child & dependent care credit phaseout start", - "description": "For taxpayers with AGI over this amount, the credit is reduced by one percentage point each $2000 of AGI over this amount.", + "value": [ + { + "year": 2013, + "value": 15000.0 + } + ], + "title": "Child & dependent care credit phaseout start", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Child And Dependent Care", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [15000.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "For taxpayers with AGI over this amount, the credit is reduced by one percentage point each $2000 of AGI over this amount.", + "notes": "" + }, "CDCC_crt": { - "long_name": "Child & dependent care credit phaseout percentage rate ceiling", - "description": "The maximum percentage rate in the AGI phaseout; this percentage rate decreases as AGI rises above the CDCC_ps level.", + "value": [ + { + "year": 2013, + "value": 35.0 + } + ], + "title": "Child & dependent care credit phaseout percentage rate ceiling", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 100 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Child And Dependent Care", - "irs_ref": "Form 2241, line 8, in-line.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [35.0], - "valid_values": {"min": 0, "max": 100}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The maximum percentage rate in the AGI phaseout; this percentage rate decreases as AGI rises above the CDCC_ps level.", + "notes": "" + }, "CTC_c": { - "long_name": "Maximum nonrefundable child tax credit per child", - "description": "The maximum nonrefundable credit allowed for each child.", + "value": [ + { + "year": 2013, + "value": 1000.0 + }, + { + "year": 2014, + "value": 1000.0 + }, + { + "year": 2015, + "value": 1000.0 + }, + { + "year": 2016, + "value": 1000.0 + }, + { + "year": 2017, + "value": 1000.0 + }, + { + "year": 2018, + "value": 2000.0 + }, + { + "year": 2019, + "value": 2000.0 + }, + { + "year": 2020, + "value": 2000.0 + }, + { + "year": 2021, + "value": 2000.0 + }, + { + "year": 2022, + "value": 2000.0 + }, + { + "year": 2023, + "value": 2000.0 + }, + { + "year": 2024, + "value": 2000.0 + }, + { + "year": 2025, + "value": 2000.0 + }, + { + "year": 2026, + "value": 1000.0 + } + ], + "title": "Maximum nonrefundable child tax credit per child", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Child Tax Credit", - "irs_ref": "Form 1040, line 12, worksheet, line 1.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1000.0, - 1000.0, - 1000.0, - 1000.0, - 1000.0, - 2000.0, - 2000.0, - 2000.0, - 2000.0, - 2000.0, - 2000.0, - 2000.0, - 2000.0, - 1000.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The maximum nonrefundable credit allowed for each child.", + "notes": "" + }, "CTC_c_under5_bonus": { - "long_name": "Bonus child tax credit maximum for qualifying children under five", - "description": "The maximum amount of child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Bonus child tax credit maximum for qualifying children under five", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Child Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The maximum amount of child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", + "notes": "" + }, "CTC_ps": { - "long_name": "Child tax credit phaseout MAGI start", - "description": "Child tax credit begins to decrease when MAGI is above this level; read descriptions of the dependent credit amounts for how they phase out when MAGI is above this level.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 75000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 110000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 55000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 75000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 75000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 75000.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 110000.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 55000.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 75000.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 75000.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 75000.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 110000.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 55000.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 75000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 75000.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 75000.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 110000.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 55000.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 75000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 75000.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 75000.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 110000.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 55000.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 75000.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 75000.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2020, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2020, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2020, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2020, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2020, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2021, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2021, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2021, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2021, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2021, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2022, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2022, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2022, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2022, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2022, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2023, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2023, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2023, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2023, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2023, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2024, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2024, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2024, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2024, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2024, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2025, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2025, + "MARS": "mjoint", + "value": 400000.0 + }, + { + "year": 2025, + "MARS": "mseparate", + "value": 200000.0 + }, + { + "year": 2025, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2025, + "MARS": "widow", + "value": 400000.0 + }, + { + "year": 2026, + "MARS": "single", + "value": 75000.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 110000.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 55000.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 75000.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 75000.0 + } + ], + "title": "Child tax credit phaseout MAGI start", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Child Tax Credit", - "irs_ref": "Form 1040, line 12, worksheet, line 5.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[75000.0, 110000.0, 55000.0, 75000.0, 75000.0], - [75000.0, 110000.0, 55000.0, 75000.0, 75000.0], - [75000.0, 110000.0, 55000.0, 75000.0, 75000.0], - [75000.0, 110000.0, 55000.0, 75000.0, 75000.0], - [75000.0, 110000.0, 55000.0, 75000.0, 75000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [200000.0, 400000.0, 200000.0, 200000.0, 400000.0], - [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Child tax credit begins to decrease when MAGI is above this level; read descriptions of the dependent credit amounts for how they phase out when MAGI is above this level.", + "notes": "" + }, "CTC_prt": { - "long_name": "Child and dependent tax credit phaseout rate", - "description": "The amount of the credit starts to decrease at this rate if MAGI is higher than child tax credit phaseout start.", + "value": [ + { + "year": 2013, + "value": 0.05 + } + ], + "title": "Child and dependent tax credit phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Child Tax Credit", - "irs_ref": "Form 1040, line 12, instruction (child tax credit worksheet, line 7)", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.05], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The amount of the credit starts to decrease at this rate if MAGI is higher than child tax credit phaseout start.", + "notes": "" + }, "ACTC_c": { - "long_name": "Maximum refundable additional child tax credit", - "description": "This refundable credit is applied to child dependents and phases out exactly like the CTC amount.", + "value": [ + { + "year": 2013, + "value": 1000.0 + }, + { + "year": 2014, + "value": 1000.0 + }, + { + "year": 2015, + "value": 1000.0 + }, + { + "year": 2016, + "value": 1000.0 + }, + { + "year": 2017, + "value": 1000.0 + }, + { + "year": 2018, + "value": 1400.0 + }, + { + "year": 2019, + "value": 1400.0 + }, + { + "year": 2020, + "value": 1400.0 + }, + { + "year": 2021, + "value": 1400.0 + }, + { + "year": 2022, + "value": 1500.0 + }, + { + "year": 2023, + "value": 1500.0 + }, + { + "year": 2024, + "value": 1500.0 + }, + { + "year": 2025, + "value": 1600.0 + }, + { + "year": 2026, + "value": 1000.0 + } + ], + "title": "Maximum refundable additional child tax credit", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "CTC_c" + } + }, "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", - "irs_ref": "Form 1040, line 18b, Schedule 8812", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [1000.0, - 1000.0, - 1000.0, - 1000.0, - 1000.0, - 1400.0, - 1400.0, - 1400.0, - 1400.0, - 1500.0, - 1500.0, - 1500.0, - 1600.0, - 1000.0], - "valid_values": {"min": 0, "max": "CTC_c"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for CTC_c", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This refundable credit is applied to child dependents and phases out exactly like the CTC amount.", + "notes": "" + }, "ODC_c": { - "long_name": "Maximum nonrefundable other-dependent credit", - "description": "This nonrefundable credit is applied to non-child dependents and phases out along with the CTC amount.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 500.0 + }, + { + "year": 2019, + "value": 500.0 + }, + { + "year": 2020, + "value": 500.0 + }, + { + "year": 2021, + "value": 500.0 + }, + { + "year": 2022, + "value": 500.0 + }, + { + "year": 2023, + "value": 500.0 + }, + { + "year": 2024, + "value": 500.0 + }, + { + "year": 2025, + "value": 500.0 + }, + { + "year": 2026, + "value": 0.0 + } + ], + "title": "Maximum nonrefundable other-dependent credit", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Other Dependent Tax Credit", - "irs_ref": "Form 1040, line 12, instruction (child tax credit worksheet, line 2)", - "notes": "Became current-law policy with passage of TCJA", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 500.0, - 500.0, - 500.0, - 500.0, - 500.0, - 500.0, - 500.0, - 500.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This nonrefundable credit is applied to non-child dependents and phases out along with the CTC amount.", + "notes": "Became current-law policy with passage of TCJA" + }, "NIIT_thd": { - "long_name": "Net Investment Income Tax modified AGI threshold", - "description": "If modified AGI is more than this threshold, filing unit is subject to the Net Investment Income Tax.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 200000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 250000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 125000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 200000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 250000.0 + } + ], + "title": "Net Investment Income Tax modified AGI threshold", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Other Taxes", "section_2": "Net Investment Income Tax", - "irs_ref": "Form 8960, line 14, instructions. ", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[200000.0, 250000.0, 125000.0, 200000.0, 250000.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "If modified AGI is more than this threshold, filing unit is subject to the Net Investment Income Tax.", + "notes": "" + }, "NIIT_PT_taxed": { - "long_name": "Whether or not partnership and S-corp income is in NIIT base", - "description": "false ==> partnership and S-corp income excluded from NIIT base; true ==> partnership and S-corp income is in NIIT base.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Whether or not partnership and S-corp income is in NIIT base", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Other Taxes", "section_2": "Net Investment Income Tax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "false ==> partnership and S-corp income excluded from NIIT base; true ==> partnership and S-corp income is in NIIT base.", + "notes": "" + }, "NIIT_rt": { - "long_name": "Net Investment Income Tax rate", - "description": "If modified AGI exceeds NIIT_thd, all net investment income is taxed at this rate.", + "value": [ + { + "year": 2013, + "value": 0.038 + } + ], + "title": "Net Investment Income Tax rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Other Taxes", "section_2": "Net Investment Income Tax", - "irs_ref": "Form 8960, line 21, in-line. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.038], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "If modified AGI exceeds NIIT_thd, all net investment income is taxed at this rate.", + "notes": "" + }, "EITC_c": { - "long_name": "Maximum earned income credit", - "description": "This is the maximum amount of earned income credit taxpayers are eligible for; it depends on how many kids they have.", + "value": [ + { + "year": 2013, + "EIC": "0kids", + "value": 487.0 + }, + { + "year": 2013, + "EIC": "1kid", + "value": 3250.0 + }, + { + "year": 2013, + "EIC": "2kids", + "value": 5372.0 + }, + { + "year": 2013, + "EIC": "3+kids", + "value": 6044.0 + }, + { + "year": 2014, + "EIC": "0kids", + "value": 496.0 + }, + { + "year": 2014, + "EIC": "1kid", + "value": 3305.0 + }, + { + "year": 2014, + "EIC": "2kids", + "value": 5460.0 + }, + { + "year": 2014, + "EIC": "3+kids", + "value": 6143.0 + }, + { + "year": 2015, + "EIC": "0kids", + "value": 503.0 + }, + { + "year": 2015, + "EIC": "1kid", + "value": 3359.0 + }, + { + "year": 2015, + "EIC": "2kids", + "value": 5548.0 + }, + { + "year": 2015, + "EIC": "3+kids", + "value": 6242.0 + }, + { + "year": 2016, + "EIC": "0kids", + "value": 506.0 + }, + { + "year": 2016, + "EIC": "1kid", + "value": 3373.0 + }, + { + "year": 2016, + "EIC": "2kids", + "value": 5572.0 + }, + { + "year": 2016, + "EIC": "3+kids", + "value": 6269.0 + }, + { + "year": 2017, + "EIC": "0kids", + "value": 510.0 + }, + { + "year": 2017, + "EIC": "1kid", + "value": 3400.0 + }, + { + "year": 2017, + "EIC": "2kids", + "value": 5616.0 + }, + { + "year": 2017, + "EIC": "3+kids", + "value": 6318.0 + }, + { + "year": 2018, + "EIC": "0kids", + "value": 519.0 + }, + { + "year": 2018, + "EIC": "1kid", + "value": 3461.0 + }, + { + "year": 2018, + "EIC": "2kids", + "value": 5716.0 + }, + { + "year": 2018, + "EIC": "3+kids", + "value": 6431.0 + }, + { + "year": 2019, + "EIC": "0kids", + "value": 529.0 + }, + { + "year": 2019, + "EIC": "1kid", + "value": 3526.0 + }, + { + "year": 2019, + "EIC": "2kids", + "value": 5828.0 + }, + { + "year": 2019, + "EIC": "3+kids", + "value": 6557.0 + } + ], + "title": "Maximum earned income credit", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, instruction (table).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "EIC", - "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], - "value_type": "real", - "value": [[487.0, 3250.0, 5372.0, 6044.0], - [496.0, 3305.0, 5460.0, 6143.0], - [503.0, 3359.0, 5548.0, 6242.0], - [506.0, 3373.0, 5572.0, 6269.0], - [510.0, 3400.0, 5616.0, 6318.0], - [519.0, 3461.0, 5716.0, 6431.0], - [529.0, 3526.0, 5828.0, 6557.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This is the maximum amount of earned income credit taxpayers are eligible for; it depends on how many kids they have.", + "notes": "" + }, "EITC_rt": { - "long_name": "Earned income credit phasein rate", - "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum earned income credit.", + "value": [ + { + "year": 2013, + "EIC": "0kids", + "value": 0.0765 + }, + { + "year": 2013, + "EIC": "1kid", + "value": 0.34 + }, + { + "year": 2013, + "EIC": "2kids", + "value": 0.4 + }, + { + "year": 2013, + "EIC": "3+kids", + "value": 0.45 + } + ], + "title": "Earned income credit phasein rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, calculation (table: Max_EIC/Max_EIC_base_income).", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "EIC", - "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], - "value_type": "real", - "value": [[0.0765, 0.3400, 0.4000, 0.4500]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum earned income credit.", + "notes": "" + }, "EITC_basic_frac": { - "long_name": "Fraction of maximum earned income credit paid at zero earnings", - "description": "This fraction of EITC_c is always paid as a credit and one minus this fraction is applied to the phasein rate, EITC_rt. This fraction is zero under current law.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 0.0 + } + ], + "title": "Fraction of maximum earned income credit paid at zero earnings", + "type": "float", + "validators": { + "range": { + "min": 0.0, + "max": 1.0 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, instruction (table).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0.0, "max": 1.0}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This fraction of EITC_c is always paid as a credit and one minus this fraction is applied to the phasein rate, EITC_rt. This fraction is zero under current law.", + "notes": "" + }, "EITC_prt": { - "long_name": "Earned income credit phaseout rate", - "description": "Earned income credit begins to decrease at the this rate when AGI is higher than earned income credit phaseout start AGI.", + "value": [ + { + "year": 2013, + "EIC": "0kids", + "value": 0.0765 + }, + { + "year": 2013, + "EIC": "1kid", + "value": 0.1598 + }, + { + "year": 2013, + "EIC": "2kids", + "value": 0.2106 + }, + { + "year": 2013, + "EIC": "3+kids", + "value": 0.2106 + } + ], + "title": "Earned income credit phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, calculation (table: Max_EIC_base_income/Phaseout_Base).", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "EIC", - "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], - "value_type": "real", - "value": [[0.0765, 0.1598, 0.2106, 0.2106]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Earned income credit begins to decrease at the this rate when AGI is higher than earned income credit phaseout start AGI.", + "notes": "" + }, "EITC_ps": { - "long_name": "Earned income credit phaseout start AGI", - "description": "If AGI is higher than this threshold, the amount of EITC will start to decrease at the phaseout rate.", + "value": [ + { + "year": 2013, + "EIC": "0kids", + "value": 7970.0 + }, + { + "year": 2013, + "EIC": "1kid", + "value": 17530.0 + }, + { + "year": 2013, + "EIC": "2kids", + "value": 17530.0 + }, + { + "year": 2013, + "EIC": "3+kids", + "value": 17530.0 + }, + { + "year": 2014, + "EIC": "0kids", + "value": 8110.0 + }, + { + "year": 2014, + "EIC": "1kid", + "value": 17830.0 + }, + { + "year": 2014, + "EIC": "2kids", + "value": 17830.0 + }, + { + "year": 2014, + "EIC": "3+kids", + "value": 17830.0 + }, + { + "year": 2015, + "EIC": "0kids", + "value": 8250.0 + }, + { + "year": 2015, + "EIC": "1kid", + "value": 18150.0 + }, + { + "year": 2015, + "EIC": "2kids", + "value": 18150.0 + }, + { + "year": 2015, + "EIC": "3+kids", + "value": 18150.0 + }, + { + "year": 2016, + "EIC": "0kids", + "value": 8270.0 + }, + { + "year": 2016, + "EIC": "1kid", + "value": 18190.0 + }, + { + "year": 2016, + "EIC": "2kids", + "value": 18190.0 + }, + { + "year": 2016, + "EIC": "3+kids", + "value": 18190.0 + }, + { + "year": 2017, + "EIC": "0kids", + "value": 8340.0 + }, + { + "year": 2017, + "EIC": "1kid", + "value": 18340.0 + }, + { + "year": 2017, + "EIC": "2kids", + "value": 18340.0 + }, + { + "year": 2017, + "EIC": "3+kids", + "value": 18340.0 + }, + { + "year": 2018, + "EIC": "0kids", + "value": 8490.0 + }, + { + "year": 2018, + "EIC": "1kid", + "value": 18660.0 + }, + { + "year": 2018, + "EIC": "2kids", + "value": 18660.0 + }, + { + "year": 2018, + "EIC": "3+kids", + "value": 18660.0 + }, + { + "year": 2019, + "EIC": "0kids", + "value": 8650.0 + }, + { + "year": 2019, + "EIC": "1kid", + "value": 19030.0 + }, + { + "year": 2019, + "EIC": "2kids", + "value": 19030.0 + }, + { + "year": 2019, + "EIC": "3+kids", + "value": 19030.0 + } + ], + "title": "Earned income credit phaseout start AGI", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, instructions.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "EIC", - "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], - "value_type": "real", - "value": [[7970.0, 17530.0, 17530.0, 17530.0], - [8110.0, 17830.0, 17830.0, 17830.0], - [8250.0, 18150.0, 18150.0, 18150.0], - [8270.0, 18190.0, 18190.0, 18190.0], - [8340.0, 18340.0, 18340.0, 18340.0], - [8490.0, 18660.0, 18660.0, 18660.0], - [8650.0, 19030.0, 19030.0, 19030.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "If AGI is higher than this threshold, the amount of EITC will start to decrease at the phaseout rate.", + "notes": "" + }, "EITC_ps_MarriedJ": { - "long_name": "Extra earned income credit phaseout start AGI for married filling jointly", - "description": "This is the additional amount added on the regular phaseout start amount for taxpayers with filling status of married filing jointly.", + "value": [ + { + "year": 2013, + "EIC": "0kids", + "value": 5340.0 + }, + { + "year": 2013, + "EIC": "1kid", + "value": 5340.0 + }, + { + "year": 2013, + "EIC": "2kids", + "value": 5340.0 + }, + { + "year": 2013, + "EIC": "3+kids", + "value": 5340.0 + }, + { + "year": 2014, + "EIC": "0kids", + "value": 5430.0 + }, + { + "year": 2014, + "EIC": "1kid", + "value": 5430.0 + }, + { + "year": 2014, + "EIC": "2kids", + "value": 5430.0 + }, + { + "year": 2014, + "EIC": "3+kids", + "value": 5430.0 + }, + { + "year": 2015, + "EIC": "0kids", + "value": 5500.0 + }, + { + "year": 2015, + "EIC": "1kid", + "value": 5500.0 + }, + { + "year": 2015, + "EIC": "2kids", + "value": 5500.0 + }, + { + "year": 2015, + "EIC": "3+kids", + "value": 5500.0 + }, + { + "year": 2016, + "EIC": "0kids", + "value": 5550.0 + }, + { + "year": 2016, + "EIC": "1kid", + "value": 5550.0 + }, + { + "year": 2016, + "EIC": "2kids", + "value": 5550.0 + }, + { + "year": 2016, + "EIC": "3+kids", + "value": 5550.0 + }, + { + "year": 2017, + "EIC": "0kids", + "value": 5590.0 + }, + { + "year": 2017, + "EIC": "1kid", + "value": 5590.0 + }, + { + "year": 2017, + "EIC": "2kids", + "value": 5590.0 + }, + { + "year": 2017, + "EIC": "3+kids", + "value": 5590.0 + }, + { + "year": 2018, + "EIC": "0kids", + "value": 5680.0 + }, + { + "year": 2018, + "EIC": "1kid", + "value": 5690.0 + }, + { + "year": 2018, + "EIC": "2kids", + "value": 5690.0 + }, + { + "year": 2018, + "EIC": "3+kids", + "value": 5690.0 + }, + { + "year": 2019, + "EIC": "0kids", + "value": 5800.0 + }, + { + "year": 2019, + "EIC": "1kid", + "value": 5790.0 + }, + { + "year": 2019, + "EIC": "2kids", + "value": 5790.0 + }, + { + "year": 2019, + "EIC": "3+kids", + "value": 5790.0 + } + ], + "title": "Extra earned income credit phaseout start AGI for married filling jointly", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, calculation (the difference between EIC phaseout bases of married jointly filers and other filers).", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "EIC", - "vi_vals": ["0kids", "1kid", "2kids", "3+kids"], - "value_type": "real", - "value": [[5340.0, 5340.0, 5340.0, 5340.0], - [5430.0, 5430.0, 5430.0, 5430.0], - [5500.0, 5500.0, 5500.0, 5500.0], - [5550.0, 5550.0, 5550.0, 5550.0], - [5590.0, 5590.0, 5590.0, 5590.0], - [5680.0, 5690.0, 5690.0, 5690.0], - [5800.0, 5790.0, 5790.0, 5790.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This is the additional amount added on the regular phaseout start amount for taxpayers with filling status of married filing jointly.", + "notes": "" + }, "EITC_MinEligAge": { - "long_name": "Minimum Age for Childless EITC Eligibility", - "description": "For a childless filing unit, at least one individual's age needs to be no less than this age (but no greater than the EITC_MaxEligAge) in order to be eligible for an earned income tax credit.", + "value": [ + { + "year": 2013, + "value": 25 + } + ], + "title": "Minimum Age for Childless EITC Eligibility", + "type": "int", + "validators": { + "range": { + "min": 0, + "max": 125 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, step 4, instructions.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "integer", - "value": [25], - "valid_values": {"min": 0, "max": 125}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "For a childless filing unit, at least one individual's age needs to be no less than this age (but no greater than the EITC_MaxEligAge) in order to be eligible for an earned income tax credit.", + "notes": "" + }, "EITC_MaxEligAge": { - "long_name": "Maximum Age for Childless EITC Eligibility", - "description": "For a childless filing unit, at least one individual's age needs to be no greater than this age (but no less than the EITC_MinEligAge) in order to be eligible for an earned income tax credit.", + "value": [ + { + "year": 2013, + "value": 64 + } + ], + "title": "Maximum Age for Childless EITC Eligibility", + "type": "int", + "validators": { + "range": { + "min": 0, + "max": 125 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, step 4, instructions.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "integer", - "value": [64], - "valid_values": {"min": 0, "max": 125}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "For a childless filing unit, at least one individual's age needs to be no greater than this age (but no less than the EITC_MinEligAge) in order to be eligible for an earned income tax credit.", + "notes": "" + }, "EITC_InvestIncome_c": { - "long_name": "Maximum investment income before EITC reduction", - "description": "The EITC amount is reduced when investment income exceeds this ceiling.", + "value": [ + { + "year": 2013, + "value": 3300.0 + }, + { + "year": 2014, + "value": 3350.0 + }, + { + "year": 2015, + "value": 3400.0 + }, + { + "year": 2016, + "value": 3400.0 + }, + { + "year": 2017, + "value": 3450.0 + }, + { + "year": 2018, + "value": 3500.0 + }, + { + "year": 2019, + "value": 3600.0 + } + ], + "title": "Maximum investment income before EITC reduction", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, instruction(step2)", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [3300.0, - 3350.0, - 3400.0, - 3400.0, - 3450.0, - 3500.0, - 3600.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The EITC amount is reduced when investment income exceeds this ceiling.", + "notes": "" + }, "EITC_excess_InvestIncome_rt": { - "long_name": "Rate of EITC reduction when investment income exceeds ceiling", - "description": "The EITC amount is reduced at this rate per dollar of investment income exceeding the ceiling.", + "value": [ + { + "year": 2013, + "value": 9e+99 + } + ], + "title": "Rate of EITC reduction when investment income exceeds ceiling", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "Form 1040, line 17, instruction(step2)", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [9e99], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The EITC amount is reduced at this rate per dollar of investment income exceeding the ceiling.", + "notes": "" + }, "EITC_indiv": { - "long_name": "EITC is computed for each spouse based on individual earnings", - "description": "Current-law value is false implying EITC is filing-unit based; a value of true implies EITC is computed for each individual wage earner. The additional phaseout start for joint filers is not affected by this parameter, nor are investment income and age eligibilty rules.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "EITC is computed for each spouse based on individual earnings", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Current-law value is false implying EITC is filing-unit based; a value of true implies EITC is computed for each individual wage earner. The additional phaseout start for joint filers is not affected by this parameter, nor are investment income and age eligibilty rules.", + "notes": "" + }, "EITC_sep_filers_elig": { - "long_name": "Separate filers are eligibile for the EITC", - "description": "Current-law value is false, implying ineligibility.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Separate filers are eligibile for the EITC", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Refundable Credits", "section_2": "Earned Income Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "Current-law value is false, implying ineligibility.", + "notes": "" + }, "RPTC_c": { - "long_name": "Maximum refundable payroll tax credit", - "description": "This is the maximum amount of the refundable payroll tax credit for each taxpayer/spouse.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 0.0 + } + ], + "title": "Maximum refundable payroll tax credit", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Refundable Payroll Tax Credit", - "irs_ref": "", - "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This is the maximum amount of the refundable payroll tax credit for each taxpayer/spouse.", + "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt." + }, "RPTC_rt": { - "long_name": "Refundable payroll tax credit phasein rate", - "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum refundable payroll tax credit, where earnings is defined as in FICA and SECA.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Refundable payroll tax credit phasein rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "Refundable Payroll Tax Credit", - "irs_ref": "", - "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum refundable payroll tax credit, where earnings is defined as in FICA and SECA.", + "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt." + }, "LLC_Expense_c": { - "long_name": "Lifetime learning credit expense limit", - "description": "The maximum expense eligible for lifetime learning credit, per child.", + "value": [ + { + "year": 2013, + "value": 10000.0 + } + ], + "title": "Lifetime learning credit expense limit", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 8863, line 11, in-line.", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [10000.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "The maximum expense eligible for lifetime learning credit, per child.", + "notes": "" + }, "ETC_pe_Single": { - "long_name": "Education tax credit phaseout ends (Single)", - "description": "The education tax credit will be zero for those taxpayers of single filing status with modified AGI (in thousands) higher than this level.", + "value": [ + { + "year": 2013, + "value": 63.0 + }, + { + "year": 2014, + "value": 64.0 + }, + { + "year": 2015, + "value": 65.0 + }, + { + "year": 2016, + "value": 65.0 + }, + { + "year": 2017, + "value": 66.0 + }, + { + "year": 2018, + "value": 67.0 + }, + { + "year": 2019, + "value": 68.0 + } + ], + "title": "Education tax credit phaseout ends (Single)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 8863, line 13, inline.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [63.0, - 64.0, - 65.0, - 65.0, - 66.0, - 67.0, - 68.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "The education tax credit will be zero for those taxpayers of single filing status with modified AGI (in thousands) higher than this level.", + "notes": "" + }, "ETC_pe_Married": { - "long_name": "Education tax credit phaseout ends (Married)", - "description": "The education tax credit will be zero for those taxpayers of married filing status with modified AGI level (in thousands) higher than this level.", + "value": [ + { + "year": 2013, + "value": 127.0 + }, + { + "year": 2014, + "value": 128.0 + }, + { + "year": 2015, + "value": 130.0 + }, + { + "year": 2016, + "value": 131.0 + }, + { + "year": 2017, + "value": 132.0 + }, + { + "year": 2018, + "value": 134.0 + }, + { + "year": 2019, + "value": 136.0 + } + ], + "title": "Education tax credit phaseout ends (Married)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "Form 8863, line 13, inline.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [127.0, - 128.0, - 130.0, - 131.0, - 132.0, - 134.0, - 136.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "The education tax credit will be zero for those taxpayers of married filing status with modified AGI level (in thousands) higher than this level.", + "notes": "" + }, "ACTC_rt": { - "long_name": "Additional Child Tax Credit rate", - "description": "This is the fraction of earnings used in calculating the ACTC, which is a partially refundable credit that supplements the CTC for some taxpayers.", + "value": [ + { + "year": 2013, + "value": 0.15 + } + ], + "title": "Additional Child Tax Credit rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", - "irs_ref": "Form 8812, line 8, inline.", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.15], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "This is the fraction of earnings used in calculating the ACTC, which is a partially refundable credit that supplements the CTC for some taxpayers.", + "notes": "" + }, "ACTC_rt_bonus_under5family": { - "long_name": "Bonus additional child tax credit rate for families with qualifying children under 5", - "description": "For families with qualifying children under 5 years old, this bonus rate is added to the fraction of earnings (additional child tax credit rate) used in calculating the ACTC.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Bonus additional child tax credit rate for families with qualifying children under 5", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "For families with qualifying children under 5 years old, this bonus rate is added to the fraction of earnings (additional child tax credit rate) used in calculating the ACTC.", + "notes": "" + }, "ACTC_Income_thd": { - "long_name": "Additional Child Tax Credit income threshold", - "description": "The portion of earned income below this threshold does not count as base for the Additional Child Tax Credit.", + "value": [ + { + "year": 2013, + "value": 3000.0 + }, + { + "year": 2014, + "value": 3000.0 + }, + { + "year": 2015, + "value": 3000.0 + }, + { + "year": 2016, + "value": 3000.0 + }, + { + "year": 2017, + "value": 3000.0 + }, + { + "year": 2018, + "value": 2500.0 + }, + { + "year": 2019, + "value": 2500.0 + }, + { + "year": 2020, + "value": 2500.0 + }, + { + "year": 2021, + "value": 2500.0 + }, + { + "year": 2022, + "value": 2500.0 + }, + { + "year": 2023, + "value": 2500.0 + }, + { + "year": 2024, + "value": 2500.0 + }, + { + "year": 2025, + "value": 2500.0 + }, + { + "year": 2026, + "value": 3000.0 + } + ], + "title": "Additional Child Tax Credit income threshold", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", - "irs_ref": "Form 8812, line 7, in-line.", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [3000.0, - 3000.0, - 3000.0, - 3000.0, - 3000.0, - 2500.0, - 2500.0, - 2500.0, - 2500.0, - 2500.0, - 2500.0, - 2500.0, - 2500.0, - 3000.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The portion of earned income below this threshold does not count as base for the Additional Child Tax Credit.", + "notes": "" + }, "ACTC_ChildNum": { - "long_name": "Additional Child Tax Credit minimum number of qualified children for different formula", - "description": "Families with this number of qualified children or more may qualify for a different formula to calculate the Additional Child Tax Credit, which is a partially refundable credit that supplements the Child Tax Credit for some taxpayers.", + "value": [ + { + "year": 2013, + "value": 3 + } + ], + "title": "Additional Child Tax Credit minimum number of qualified children for different formula", + "type": "int", + "validators": { + "range": { + "min": 0, + "max": 99 + } + }, "section_1": "Child/Dependent Credits", "section_2": "Additional Child Tax Credit", - "irs_ref": "Form 8812, Part II. ", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "integer", - "value": [3], - "valid_values": {"min": 0, "max": 99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Families with this number of qualified children or more may qualify for a different formula to calculate the Additional Child Tax Credit, which is a partially refundable credit that supplements the Child Tax Credit for some taxpayers.", + "notes": "" + }, "CTC_new_c": { - "long_name": "New refundable child tax credit maximum amount per child", - "description": "In addition to all credits currently available for dependents, this parameter gives each qualifying child a new refundable credit with this maximum amount.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "New refundable child tax credit maximum amount per child", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "In addition to all credits currently available for dependents, this parameter gives each qualifying child a new refundable credit with this maximum amount.", + "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit." + }, "CTC_new_c_under5_bonus": { - "long_name": "Bonus new refundable child tax credit maximum for qualifying children under five", - "description": "The maximum amount of the new refundable child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Bonus new refundable child tax credit maximum for qualifying children under five", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], "indexable": true, "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The maximum amount of the new refundable child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", + "notes": "" + }, "CTC_new_for_all": { - "long_name": "Whether or not maximum amount of the new refundable child tax credit is available to all", - "description": "The maximum amount of the new refundable child tax credit does not depend on AGI when true; otherwise, see CTC_new_rt.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Whether or not maximum amount of the new refundable child tax credit is available to all", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The maximum amount of the new refundable child tax credit does not depend on AGI when true; otherwise, see CTC_new_rt.", + "notes": "" + }, "CTC_new_rt": { - "long_name": "New refundable child tax credit amount phasein rate", - "description": "The maximum amount of the new child tax credit is increased at this rate per dollar of positive AGI until CTC_new_c times the number of qualified children is reached if CTC_new_for_all is false; if CTC_new_for_all is true, there is no AGI limitation to the maximum amount.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "New refundable child tax credit amount phasein rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The maximum amount of the new child tax credit is increased at this rate per dollar of positive AGI until CTC_new_c times the number of qualified children is reached if CTC_new_for_all is false; if CTC_new_for_all is true, there is no AGI limitation to the maximum amount.", + "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit." + }, "CTC_new_ps": { - "long_name": "New refundable child tax credit phaseout starting AGI", - "description": "The total amount of new child tax credit is reduced for taxpayers with AGI higher than this level.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "New refundable child tax credit phaseout starting AGI", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The total amount of new child tax credit is reduced for taxpayers with AGI higher than this level.", + "notes": "" + }, "CTC_new_prt": { - "long_name": "New refundable child tax credit amount phaseout rate", - "description": "The total amount of the new child tax credit is reduced at this rate per dollar exceeding the phaseout starting AGI, CTC_new_ps.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "New refundable child tax credit amount phaseout rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The total amount of the new child tax credit is reduced at this rate per dollar exceeding the phaseout starting AGI, CTC_new_ps.", + "notes": "" + }, "CTC_new_refund_limited": { - "long_name": "New child tax credit refund limited to a decimal fraction of payroll taxes", - "description": "Specifies whether the new child tax credit refund is limited by the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt).", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "New child tax credit refund limited to a decimal fraction of payroll taxes", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "Set this parameter to true to limit the refundability or false to allow full refundability for all taxpayers.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Specifies whether the new child tax credit refund is limited by the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt).", + "notes": "Set this parameter to true to limit the refundability or false to allow full refundability for all taxpayers." + }, "CTC_new_refund_limit_payroll_rt": { - "long_name": "New child tax credit refund limit rate (decimal fraction of payroll taxes)", - "description": "The fraction of payroll taxes (employee plus employer shares, but excluding all Medicare payroll taxes) that serves as a limit to the amount of new child tax credit that can be refunded.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "New child tax credit refund limit rate (decimal fraction of payroll taxes)", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "Set this parameter to zero for no refundability; set it to 9e99 for unlimited refundability for taxpayers with payroll tax liabilities.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The fraction of payroll taxes (employee plus employer shares, but excluding all Medicare payroll taxes) that serves as a limit to the amount of new child tax credit that can be refunded.", + "notes": "Set this parameter to zero for no refundability; set it to 9e99 for unlimited refundability for taxpayers with payroll tax liabilities." + }, "CTC_new_refund_limited_all_payroll": { - "long_name": "New child tax credit refund limit applies to all FICA taxes, not just OASDI", - "description": "Specifies whether the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt) applies to all FICA taxes (true) or just OASDI taxes (false).", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "New child tax credit refund limit applies to all FICA taxes, not just OASDI", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Refundable Credits", "section_2": "New Refundable Child Tax Credit", - "irs_ref": "", - "notes": "If the new CTC is limited, set this parameter to true to limit the refundability to all FICA taxes or false to limit refundabiity to OASDI taxes.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Specifies whether the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt) applies to all FICA taxes (true) or just OASDI taxes (false).", + "notes": "If the new CTC is limited, set this parameter to true to limit the refundability to all FICA taxes or false to limit refundabiity to OASDI taxes." + }, "FST_AGI_trt": { - "long_name": "New minimum tax; rate as a decimal fraction of AGI", - "description": "Individual income taxes and the employee share of payroll taxes are credited against this minimum tax, so the surtax is the difference between the tax rate times AGI and the credited taxes. The new minimum tax is similar to the Fair Share Tax, except that no credits are exempted from the base.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "New minimum tax; rate as a decimal fraction of AGI", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Surtaxes", "section_2": "New Minimum Tax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Individual income taxes and the employee share of payroll taxes are credited against this minimum tax, so the surtax is the difference between the tax rate times AGI and the credited taxes. The new minimum tax is similar to the Fair Share Tax, except that no credits are exempted from the base.", + "notes": "" + }, "FST_AGI_thd_lo": { - "long_name": "Minimum AGI needed to be subject to the new minimum tax", - "description": "A taxpayer is only subject to the new minimum tax if they exceed this level of AGI.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 1000000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 1000000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 1000000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 1000000.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 1000000.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 1000000.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 1000000.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 1000000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 1000000.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 1000000.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 1000000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 1000000.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 1000000.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 1000000.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 1000000.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 1000000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 1000000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 1000000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 1000000.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 1000000.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 500000.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 1000000.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 1000000.0 + } + ], + "title": "Minimum AGI needed to be subject to the new minimum tax", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "FST_AGI_thd_hi" + } + }, "section_1": "Surtaxes", "section_2": "New Minimum Tax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], - [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], - [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], - [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], - [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], - [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6], - [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6]], - "valid_values": {"min": 0, "max": "FST_AGI_thd_hi"}, - "invalid_minmsg": "", - "invalid_maxmsg": "for FST_AGI_thd_hi", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "A taxpayer is only subject to the new minimum tax if they exceed this level of AGI.", + "notes": "" + }, "FST_AGI_thd_hi": { - "long_name": "AGI level at which the New Minimum Tax is fully phased in", - "description": "The new minimum tax will be fully phased in at this level of AGI. If there is no phase-in, this upper threshold should be set equal to the lower AGI threshold.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 2000000.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 2000000.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 1000000.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 2000000.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 2000000.0 + }, + { + "year": 2014, + "MARS": "single", + "value": 2000000.0 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 2000000.0 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 1000000.0 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 2000000.0 + }, + { + "year": 2014, + "MARS": "widow", + "value": 2000000.0 + }, + { + "year": 2015, + "MARS": "single", + "value": 2000000.0 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 2000000.0 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 1000000.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 2000000.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 2000000.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 2000000.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 2000000.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 1000000.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 2000000.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 2000000.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 2000000.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 2000000.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 1000000.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 2000000.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 2000000.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 2000000.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 2000000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 1000000.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 2000000.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 2000000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 2000000.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 2000000.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 1000000.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 2000000.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 2000000.0 + } + ], + "title": "AGI level at which the New Minimum Tax is fully phased in", + "type": "float", + "validators": { + "range": { + "min": "FST_AGI_thd_lo", + "max": 9e+99 + } + }, "section_1": "Surtaxes", "section_2": "New Minimum Tax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], - [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], - [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], - [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], - [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], - [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6], - [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6]], - "valid_values": {"min": "FST_AGI_thd_lo", "max": 9e99}, - "invalid_minmsg": "for FST_AGI_thd_lo", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The new minimum tax will be fully phased in at this level of AGI. If there is no phase-in, this upper threshold should be set equal to the lower AGI threshold.", + "notes": "" + }, "AGI_surtax_trt": { - "long_name": "New AGI surtax rate", - "description": "The surtax rate is applied to the portion of Adjusted Gross Income above the AGI surtax threshold.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "New AGI surtax rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Surtaxes", "section_2": "New AGI Surtax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The surtax rate is applied to the portion of Adjusted Gross Income above the AGI surtax threshold.", + "notes": "" + }, "AGI_surtax_thd": { - "long_name": "Threshold for the new AGI surtax", - "description": "The aggregate gross income above this AGI surtax threshold is taxed at surtax rate on AGI.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2013, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2014, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2015, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2016, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2017, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2018, + "MARS": "widow", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "single", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 9e+99 + }, + { + "year": 2019, + "MARS": "widow", + "value": 9e+99 + } + ], + "title": "Threshold for the new AGI surtax", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Surtaxes", "section_2": "New AGI Surtax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99], - [9e99, 9e99, 9e99, 9e99, 9e99]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The aggregate gross income above this AGI surtax threshold is taxed at surtax rate on AGI.", + "notes": "" + }, "LST": { - "long_name": "Dollar amount of lump-sum tax", - "description": "The lump-sum tax is levied on every member of a tax filing unit. The lump-sum tax is included only in combined taxes; it is not included in income or payroll taxes.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Dollar amount of lump-sum tax", + "type": "float", + "validators": { + "range": { + "min": -9e+99, + "max": 9e+99 + } + }, "section_1": "Surtaxes", "section_2": "Lump-Sum Tax", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": -9e99, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The lump-sum tax is levied on every member of a tax filing unit. The lump-sum tax is included only in combined taxes; it is not included in income or payroll taxes.", + "notes": "" + }, "UBI_u18": { - "long_name": "UBI benefit for those under 18", - "description": "UBI benefit provided to people under 18.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 0.0 + } + ], + "title": "UBI benefit for those under 18", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Universal Basic Income", "section_2": "UBI Benefits", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "UBI benefit provided to people under 18.", + "notes": "" + }, "UBI_1820": { - "long_name": "UBI benefit for those 18 through 20", - "description": "UBI benefit provided to people 18-20 years of age.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 0.0 + } + ], + "title": "UBI benefit for those 18 through 20", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Universal Basic Income", "section_2": "UBI Benefits", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "UBI benefit provided to people 18-20 years of age.", + "notes": "" + }, "UBI_21": { - "long_name": "UBI benefit for those 21 and over", - "description": "UBI benefit provided to people 21 and over.", + "value": [ + { + "year": 2013, + "value": 0.0 + }, + { + "year": 2014, + "value": 0.0 + }, + { + "year": 2015, + "value": 0.0 + }, + { + "year": 2016, + "value": 0.0 + }, + { + "year": 2017, + "value": 0.0 + }, + { + "year": 2018, + "value": 0.0 + }, + { + "year": 2019, + "value": 0.0 + } + ], + "title": "UBI benefit for those 21 and over", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "Universal Basic Income", "section_2": "UBI Benefits", - "irs_ref": "", - "notes": "", - "value_yrs": [2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019], "indexable": true, "indexed": true, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "UBI benefit provided to people 21 and over.", + "notes": "" + }, "UBI_ecrt": { - "long_name": "Fraction of UBI benefits excluded from AGI", - "description": "One minus this fraction of UBI benefits are taxable and will be added to AGI.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Fraction of UBI benefits excluded from AGI", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Universal Basic Income", "section_2": "UBI Taxability", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "One minus this fraction of UBI benefits are taxable and will be added to AGI.", + "notes": "" + }, "CR_RetirementSavings_hc": { - "long_name": "Credit for retirement savings haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the retirement savings credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Credit for retirement savings haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*RetirementSavingsCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "If greater than zero, this decimal fraction reduces the portion of the retirement savings credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*RetirementSavingsCredit." + }, "CR_ForeignTax_hc": { - "long_name": "Credit for foreign tax haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the foreign tax credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Credit for foreign tax haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*ForeignTaxCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "If greater than zero, this decimal fraction reduces the portion of the foreign tax credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*ForeignTaxCredit." + }, "CR_ResidentialEnergy_hc": { - "long_name": "Credit for residential energy haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the residential energy credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Credit for residential energy haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*ResidentialEnergyCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "If greater than zero, this decimal fraction reduces the portion of the residential energy credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*ResidentialEnergyCredit." + }, "CR_GeneralBusiness_hc": { - "long_name": "Credit for general business haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the general business credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Credit for general business haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*GeneralBusinessCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "If greater than zero, this decimal fraction reduces the portion of the general business credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*GeneralBusinessCredit." + }, "CR_MinimumTax_hc": { - "long_name": "Credit for previous year minimum tax credit haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the previous year minimum tax credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Credit for previous year minimum tax credit haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*PreviousYearMinimumTaxCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "If greater than zero, this decimal fraction reduces the portion of the previous year minimum tax credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*PreviousYearMinimumTaxCredit." + }, "CR_AmOppRefundable_hc": { - "long_name": "Refundable portion of the American Opportunity Credit haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the refundable American Opportunity credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Refundable portion of the American Opportunity Credit haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*RefundablePortionOfAmericanOpportunityCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "If greater than zero, this decimal fraction reduces the portion of the refundable American Opportunity credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*RefundablePortionOfAmericanOpportunityCredit." + }, "CR_AmOppNonRefundable_hc": { - "long_name": "Nonrefundable portion of the American Opportunity Credit haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of the nonrefundable American Opportunity credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Nonrefundable portion of the American Opportunity Credit haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*NonRefundablePortionOfAmericanOpportunityCredit.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "If greater than zero, this decimal fraction reduces the portion of the nonrefundable American Opportunity credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*NonRefundablePortionOfAmericanOpportunityCredit." + }, "CR_SchR_hc": { - "long_name": "Schedule R Credit haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of Schedule R credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Schedule R Credit haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*ScheduleRCredit", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "If greater than zero, this decimal fraction reduces the portion of Schedule R credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*ScheduleRCredit" + }, "CR_OtherCredits_hc": { - "long_name": "Other Credits haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of other credit that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Other Credits haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*OtherCredits.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "If greater than zero, this decimal fraction reduces the portion of other credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*OtherCredits." + }, "CR_Education_hc": { - "long_name": "Education Credits haircut", - "description": "If greater than zero, this decimal fraction reduces the portion of education credits that can be claimed.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Education Credits haircut", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "Nonrefundable Credits", "section_2": "Misc. Credit Limits", - "irs_ref": "", - "notes": "Credit claimed will be (1-Haircut)*EducationCredits.", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": false} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": false + }, + "description": "If greater than zero, this decimal fraction reduces the portion of education credits that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*EducationCredits." + }, "CR_Charity_rt": { - "long_name": "Charity Credit rate", - "description": "If greater than zero, this decimal fraction represents the portion of total charitable contributions provided as a nonrefundable tax credit.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Charity Credit rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "", "section_2": "", - "irs_ref": "", - "notes": "Credit claimed will be (rt) * (e19800 + e20100)", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "If greater than zero, this decimal fraction represents the portion of total charitable contributions provided as a nonrefundable tax credit.", + "notes": "Credit claimed will be (rt) * (e19800 + e20100)" + }, "CR_Charity_f": { - "long_name": "Charity Credit Floor", - "description": "Only charitable giving in excess of this dollar amount is eligible for the charity credit.", + "value": [ + { + "year": 2013, + "MARS": "single", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mjoint", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "mseparate", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "headhh", + "value": 0.0 + }, + { + "year": 2013, + "MARS": "widow", + "value": 0.0 + } + ], + "title": "Charity Credit Floor", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 9e+99 + } + }, "section_1": "", "section_2": "", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "MARS", - "vi_vals": ["single", "mjoint", "mseparate", "headhh", "widow"], - "value_type": "real", - "value": [[0.0, 0.0, 0.0, 0.0, 0.0]], - "valid_values": {"min": 0, "max": 9e99}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Only charitable giving in excess of this dollar amount is eligible for the charity credit.", + "notes": "" + }, "CR_Charity_frt": { - "long_name": "Charity Credit Floor Rate", - "description": "Only charitable giving in excess of this decimal fraction of AGI is eligible for the charity credit.", + "value": [ + { + "year": 2013, + "value": 0.0 + } + ], + "title": "Charity Credit Floor Rate", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, "section_1": "", "section_2": "", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "real", - "value": [0.0], - "valid_values": {"min": 0, "max": 1}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Only charitable giving in excess of this decimal fraction of AGI is eligible for the charity credit.", + "notes": "" + }, "BEN_ssi_repeal": { - "long_name": "SSI benefit repeal switch", - "description": "SSI benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "SSI benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": false, + "cps": true + }, + "description": "SSI benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_housing_repeal": { - "long_name": "Housing benefit repeal switch", - "description": "Housing benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Housing benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": false, + "cps": true + }, + "description": "Housing benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_snap_repeal": { - "long_name": "SNAP benefit repeal switch", - "description": "SNAP benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "SNAP benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": false, + "cps": true + }, + "description": "SNAP benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_tanf_repeal": { - "long_name": "TANF benefit repeal switch", - "description": "TANF benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "TANF benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": false, + "cps": true + }, + "description": "TANF benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_vet_repeal": { - "long_name": "Veterans benefit repeal switch", - "description": "Veterans benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Veterans benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": false, + "cps": true + }, + "description": "Veterans benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_wic_repeal": { - "long_name": "WIC benefit repeal switch", - "description": "WIC benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "WIC benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": false, + "cps": true + }, + "description": "WIC benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_mcare_repeal": { - "long_name": "Medicare benefit repeal switch", - "description": "Medicare benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Medicare benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": false, + "cps": true + }, + "description": "Medicare benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_mcaid_repeal": { - "long_name": "Medicaid benefit repeal switch", - "description": "Medicaid benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Medicaid benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": false, + "cps": true + }, + "description": "Medicaid benefits can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_oasdi_repeal": { - "long_name": "Social Security benefit repeal switch", - "description": "Social Security benefits (e02400) can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Social Security benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Social Security benefits (e02400) can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_ui_repeal": { - "long_name": "Unemployment insurance benefit repeal switch", - "description": "Unemployment insurance benefits (e02300) can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Unemployment insurance benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": true, "cps": true} - }, - + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Unemployment insurance benefits (e02300) can be repealed by switching this parameter to true.", + "notes": "" + }, "BEN_other_repeal": { - "long_name": "Other benefit repeal switch", - "description": "Other benefits can be repealed by switching this parameter to true.", + "value": [ + { + "year": 2013, + "value": false + } + ], + "title": "Other benefit repeal switch", + "type": "bool", + "validators": { + "range": { + "min": false, + "max": true + } + }, "section_1": "Benefits", "section_2": "Benefit Repeal", - "irs_ref": "", - "notes": "", - "value_yrs": [2013], - "indexable": false, - "indexed": false, - "vi_name": "", - "vi_vals": [], - "value_type": "boolean", - "value": [false], - "valid_values": {"min": false, "max": true}, - "invalid_minmsg": "", - "invalid_maxmsg": "", - "invalid_action": "stop", - "compatible_data": {"puf": false, "cps": true} + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": false, + "cps": true + }, + "description": "Other benefits can be repealed by switching this parameter to true.", + "notes": "" } -} +} \ No newline at end of file From 98e3fe5abc522d8920f3ba3d783fdcaa984cfa8b Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 29 Feb 2020 15:20:18 -0500 Subject: [PATCH 21/64] Update pt version and add to packages test --- environment.yml | 2 +- taxcalc/tests/test_4package.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/environment.yml b/environment.yml index 0936113a2..d9af31702 100644 --- a/environment.yml +++ b/environment.yml @@ -14,4 +14,4 @@ dependencies: - pycodestyle - pylint - coverage -- "paramtools>=0.10.0" +- "paramtools>=0.11.1" diff --git a/taxcalc/tests/test_4package.py b/taxcalc/tests/test_4package.py index edd121311..80dd789ea 100644 --- a/taxcalc/tests/test_4package.py +++ b/taxcalc/tests/test_4package.py @@ -36,7 +36,8 @@ def test_for_consistency(tests_path): 'pytest-xdist', 'pycodestyle', 'pylint', - 'coverage' + 'coverage', + "paramtools>=0.11.1" ]) # read conda.recipe/meta.yaml requirements meta_file = os.path.join(tests_path, '..', '..', From 6b00c6173e99617585242dcf632a3d2414d1b678 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Wed, 4 Mar 2020 10:36:37 -0500 Subject: [PATCH 22/64] Fix a whole bunch of codestyle errors --- taxcalc/calculator.py | 20 +++-- taxcalc/parameters.py | 132 ++++++++++++++++++++++--------- taxcalc/policy.py | 22 ++++-- taxcalc/tests/test_parameters.py | 15 ++-- taxcalc/tests/test_policy.py | 10 ++- 5 files changed, 140 insertions(+), 59 deletions(-) diff --git a/taxcalc/calculator.py b/taxcalc/calculator.py index d407d1f07..9de9eb514 100644 --- a/taxcalc/calculator.py +++ b/taxcalc/calculator.py @@ -286,7 +286,7 @@ def policy_param(self, param_name, param_value=None): if param_name.startswith("_"): return val else: - return val[0] # drop down a dimension. + return val[0] # drop down a dimension. setattr(self.__policy, param_name, param_value) return None @@ -1175,8 +1175,12 @@ def lines(text, num_indent_spaces, max_line_length=77): for pname in baseline.keys(): upda_value = getattr(updated, pname) base_value = getattr(baseline, pname) - if ((isinstance(upda_value, np.ndarray) and np.allclose(upda_value, base_value)) or - (not isinstance(upda_value, np.ndarray) and upda_value != base_value)): + if ( + (isinstance(upda_value, np.ndarray) and + np.allclose(upda_value, base_value)) or + (not isinstance(upda_value, np.ndarray) and + upda_value != base_value) + ): params_with_diff.append(pname) if params_with_diff: mdata_base = baseline.specification(meta_data=True) @@ -1202,9 +1206,13 @@ def lines(text, num_indent_spaces, max_line_length=77): label = _label break if label: - label_values = baseline._stateless_label_grid[label] - label_values = [str(item) for item in label_values] - doc += ' ' * (4 + len(pname)) + '{}\n'.format(label_values) + lv = baseline._stateless_label_grid[label] + lv = [ + str(item) for item in lv + ] + doc += ' ' * ( + 4 + len(pname) + ) + '{}\n'.format(lv) # ... write param-name line name = mdata_base[pname]['title'] for line in lines('name: ' + name, 6): diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index ddb0ab4d3..7342e4b59 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -81,8 +81,15 @@ class Parameters(paramtools.Parameters): def __init__(self, *args, start_year=None, **kwargs): self._wage_growth_rates = None self._inflation_rates = None - if self.defaults is None and self.DEFAULTS_FILE_PATH is not None and self.DEFAULTS_FILE_NAME: - self.defaults = os.path.join(self.DEFAULTS_FILE_PATH, self.DEFAULTS_FILE_NAME) + if ( + self.defaults is None and + self.DEFAULTS_FILE_PATH is not None and + self.DEFAULTS_FILE_NAME + ): + self.defaults = os.path.join( + self.DEFAULTS_FILE_PATH, + self.DEFAULTS_FILE_NAME + ) super().__init__(*args, **kwargs) self._init_values = { param: data["value"] @@ -124,13 +131,15 @@ def adjust(self, params_or_path, **kwargs): parameters. Notable side-effects: - - All values of indexed parameters, including default values, are wiped out after - the first year in which the "CPI_offset" is changed. This is only necessary because - Tax-Calculator hard-codes inflated values. If Tax-Calculator only hard-coded values - that were changed for non-inflation related reasons, then this would not be - necessary for default values. - - All values of a parameter whose indexed status is adjusted are wiped out after the - year in which the value is adjusted for the same hard-coding reason. + - All values of indexed parameters, including default values, are + wiped out after the first year in which the "CPI_offset" is + changed. This is only necessary because Tax-Calculator + hard-codes inflated values. If Tax-Calculator only hard-coded + values that were changed for non-inflation related reasons, + then this would not be necessary for default values. + - All values of a parameter whose indexed status is adjusted are + wiped out after the year in which the value is adjusted for the + same hard-coding reason. """ min_year = min(self._stateless_label_grid["year"]) @@ -149,10 +158,18 @@ def adjust(self, params_or_path, **kwargs): needs_reset = [] if params.get("CPI_offset") is not None: # get first year CPI_offset is adjusted - cpi_adj = super().adjust({"CPI_offset": params["CPI_offset"]}, **kwargs) + cpi_adj = super().adjust( + { + "CPI_offset": params["CPI_offset"] + }, + **kwargs + ) # turn off extend now that CPI_offset has been updated. self.label_to_extend = None - cpi_min_year = min(cpi_adj["CPI_offset"], key=lambda vo: vo["year"]) + cpi_min_year = min( + cpi_adj["CPI_offset"], + key=lambda vo: vo["year"] + ) # apply new CPI_offset values to inflation rates rate_adjustment_vals = filter( lambda vo: vo["year"] >= cpi_min_year["year"], @@ -172,7 +189,9 @@ def adjust(self, params_or_path, **kwargs): # TODO: disting. btw wage and price? if self._data[param].get("indexed", False): gt = self.select_gt(param, True, year=cpi_min_year["year"]) - to_delete[param] = list([dict(vo, **{"value": None}) for vo in gt]) + to_delete[param] = list( + [dict(vo, **{"value": None}) for vo in gt] + ) to_adjust[param] = select_lt( self._init_values[param], True, @@ -195,9 +214,13 @@ def adjust(self, params_or_path, **kwargs): continue if self._data[param].get("indexed", False): # TODO: see above gt = self.select_gt(param, True, year=last_known_year) - to_delete[param] = list([dict(vo, **{"value": None}) for vo in gt]) + to_delete[param] = list( + [dict(vo, **{"value": None}) for vo in gt] + ) to_adjust[param] = select_lt( - self._init_values[param], True, {"year": last_known_year + 1} + self._init_values[param], + True, + {"year": last_known_year + 1} ) needs_reset.append(param) @@ -213,10 +236,9 @@ def adjust(self, params_or_path, **kwargs): if param.endswith("-indexed"): base_param = param.split("-indexed")[0] if not self._data[base_param].get("indexable", None): + msg = f"Parameter {base_param} is not indexable." raise paramtools.ValidationError( - { - "errors": {base_param: f"Parameter {base_param} is not indexable."} - }, + {"errors": {base_param: msg}}, labels=None ) index_affected = index_affected | {param, base_param} @@ -235,15 +257,27 @@ def adjust(self, params_or_path, **kwargs): if base_param in params: min_index_change_year = min(to_index.keys()) vos = select_lt( - params[base_param], False, {"year": min_index_change_year} + params[base_param], + False, + {"year": min_index_change_year} ) if vos: - min_adj_year = min(vos, key=lambda vo: vo["year"])["year"] - gt = self.select_gt(base_param, True, year=min_adj_year) + min_adj_year = min( + vos, + key=lambda vo: vo["year"] + )["year"] + gt = self.select_gt( + base_param, + True, + year=min_adj_year + ) super().adjust( { base_param: list( - [dict(vo, **{"value": None}) for vo in gt] + [ + dict(vo, **{"value": None}) + for vo in gt + ] ) } ) @@ -258,26 +292,36 @@ def adjust(self, params_or_path, **kwargs): for year in sorted(to_index): indexed_val = to_index[year] - # get and delete all default values after year where indexed status changed. + # get and delete all default values after year where + # indexed status changed. gte = self.select_gt(base_param, True, year=year) super().adjust( - {base_param: list([dict(vo, **{"value": None}) for vo in gte])} + { + base_param: list( + [ + dict(vo, **{"value": None}) + for vo in gte + ] + ) + } ) - # 2.b extend values for this parameter to the year where the indexed - # status changes. + # 2.b extend values for this parameter to the year where + # the indexed status changes. if year > min_year: self.extend( params=[base_param], label_to_extend="year", - label_to_extend_values=list(range(min_year, year + 1)), + label_to_extend_values=list( + range(min_year, year + 1) + ), ) # 2.c set indexed status. self._data[base_param]["indexed"] = indexed_val - # 2.d adjust with values greater than or equal to current year - # in params + # 2.d adjust with values greater than or equal to current + # year in params if base_param in params: vos = paramtools.select_gt( params[base_param], False, {"year": year - 1} @@ -294,7 +338,8 @@ def adjust(self, params_or_path, **kwargs): # filter out "-indexed" params nonindexed_params = { - param: val for param, val in params.items() if param not in index_affected + param: val for param, val in params.items() + if param not in index_affected } needs_reset = set(needs_reset) - set(nonindexed_params.keys()) @@ -306,7 +351,10 @@ def adjust(self, params_or_path, **kwargs): # 4. Add indexing params back for return to user. adj.update( - {param: val for param, val in params.items() if param in index_affected} + { + param: val for param, val in params.items() + if param in index_affected + } ) return adj @@ -377,11 +425,15 @@ def _update(self, revision, ignore_warnings, raise_errors): cur_state = dict(self.view_state()) for param, val in revision.items(): if not isinstance(param, str): + msg = f"Parameter {param} is not a string." raise paramtools.ValidationError( - {"errors": {"schema": f"Parameter {param} is not a string."}}, + {"errors": {"schema": msg}}, None ) - if param not in self._data and param.split("-indexed")[0] not in self._data: + if ( + param not in self._data and + param.split("-indexed")[0] not in self._data + ): if self.REMOVED_PARAMS and param in self.REMOVED_PARAMS: msg = self.REMOVED_PARAMS[param] elif self.REDEFINED_PARAMS and param in self.REDEFINED_PARAMS: @@ -411,15 +463,20 @@ def _update(self, revision, ignore_warnings, raise_errors): try: yearval = self.from_array(param, yearval) except IndexError: - msg = f"Pameter {param} does not have the correct array dimensions for year {year}." + msg = ( + f"Pameter {param} does not have the correct " + f"array dimensions for year {year}." + ) raise paramtools.ValidationError( {"errors": {"schema": msg}}, None ) new_params[param] += yearval else: - msg = (f"Parameter {param} must be a year:value dictionary " - f"if you are not using the new adjust method.") + msg = ( + f"Parameter {param} must be a year:value dictionary " + f"if you are not using the new adjust method." + ) raise paramtools.ValidationError( {"errors": {"schema": msg}}, None @@ -552,7 +609,10 @@ def __getattr__(self, attr): Allows the user to get the value of a parameter over all years, not just the ones that are active. """ - if attr.startswith("_") and attr[1:] in super().__getattribute__("_data"): + if ( + attr.startswith("_") and + attr[1:] in super().__getattribute__("_data") + ): state = dict(self.view_state()) self.clear_state() value = getattr(self, attr[1:]) diff --git a/taxcalc/policy.py b/taxcalc/policy.py index 70dfbb0c6..7b8be34a7 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -87,7 +87,6 @@ def __init__(self, gfactors=None, only_reading_defaults=False, **kwargs): super().__init__(**kwargs) - @staticmethod def read_json_reform(obj): """ @@ -105,17 +104,24 @@ def implement_reform(self, reform, may also use the adjust method with ParamTools styled reforms. """ # need to do conversion: - return self._update(reform, ignore_warnings=ignore_warnings, raise_errors=raise_errors) + return self._update( + reform, + ignore_warnings=ignore_warnings, + raise_errors=raise_errors + ) @staticmethod def parameter_list(): """ Returns list of parameter names in the policy_current_law.json file. """ - path = os.path.join(Policy.DEFAULTS_FILE_PATH, Policy.DEFAULTS_FILE_NAME) + path = os.path.join( + Policy.DEFAULTS_FILE_PATH, + Policy.DEFAULTS_FILE_NAME + ) with open(path) as f: defaults = json.loads(f.read()) # pylint: disable=protected-access - return [k for k in defaults if k!= "schema"] + return [k for k in defaults if k != "schema"] def set_rates(self): """Initialize taxcalc indexing data.""" @@ -130,10 +136,14 @@ def set_rates(self): self._inflation_rates = { 2013 + ix: np.round(rate + cpi_offset[2013 + ix], 4) - for ix, rate in enumerate(self._gfactors.price_inflation_rates(2013, 2029)) + for ix, rate in enumerate( + self._gfactors.price_inflation_rates(2013, 2029) + ) } self._wage_growth_rates = { 2013 + ix: rate - for ix, rate in enumerate(self._gfactors.wage_growth_rates(2013, 2029)) + for ix, rate in enumerate( + self._gfactors.wage_growth_rates(2013, 2029) + ) } diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index 334455cb1..c84a4617b 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -25,12 +25,12 @@ # Params class, which is defined in the test_params_class function. -PARAMS_JSON = json.dumps( -{ +PARAMS_JSON = json.dumps({ "schema": { "labels": { "year": { - "type": "int", "validators": {"range": {"min": 2001, "max": 2010}} + "type": "int", + "validators": {"range": {"min": 2001, "max": 2010}} } }, "operators": { @@ -68,7 +68,6 @@ }) - @pytest.fixture(scope='module', name='params_json_file') def fixture_params_json_file(): """ @@ -128,8 +127,8 @@ def update_params(self, revision, assert prms.start_year == 2001 assert prms.current_year == 2001 assert prms.end_year == 2010 - assert prms.inflation_rates() == None - assert prms.wage_growth_rates() == None + assert prms.inflation_rates() is None + assert prms.wage_growth_rates() is None prms.set_year(2010) assert prms.current_year == 2010 with pytest.raises(paramtools.ValidationError): @@ -174,7 +173,8 @@ def test_json_file_contents(tests_path, fname): 'STD', 'II_em', 'AMT_em', 'AMT_em_ps', 'AMT_em_pe', 'ID_ps', 'ID_AllTaxes_c'] - long_known_years = set(range(first_year, 2026 + 1)) # for TCJA-reverting long_params + # for TCJA-reverting long_params + long_known_years = set(range(first_year, 2026 + 1)) # check elements in each parameter sub-dictionary failures = '' with open(os.path.join(tests_path, "..", fname)) as f: @@ -277,7 +277,6 @@ def test_parameters_mentioned(tests_path, jfname, pfname): # following tests access private methods, so pylint: disable=protected-access - def test_read_json_revision(): """ Check _read_json_revision logic. diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index a032d8bce..1f4958c92 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -241,8 +241,9 @@ def test_multi_year_reform(): # atol=0.01, rtol=0.0) # assert np.allclose(getattr(pol, '_STD_Dep'), # Policy._expand_array( - # np.array([1000, 1000, 1050, 1050, 1050, 1050, 1100], - # dtype=np.float64), + # np.array( + # [1000, 1000, 1050, 1050, 1050, 1050, 1100], + # dtype=np.float64), # 'real', # inflate=True, # inflation_rates=iratelist, @@ -864,6 +865,7 @@ def test_reform_with_out_of_range_error(): pol.implement_reform(reform, raise_errors=False) assert pol.parameter_errors + def test_reform_with_warning(): """ Try to use warned out-of-range parameter value in reform. @@ -878,13 +880,14 @@ def test_reform_with_warning(): # pol.implement_reform(reform) # assert pol.parameter_warnings with pytest.raises(paramtools.ValidationError): - pol.implement_reform(reform) + pol.implement_reform(reform) pol = Policy() pol.implement_reform(reform, ignore_warnings=True) pol.set_state(year=2020) assert pol.ID_Medical_frt == np.array([0.05]) + def test_reform_with_scalar_vector_errors(): """ Test catching scalar-vector confusion. @@ -902,6 +905,7 @@ def test_reform_with_scalar_vector_errors(): # policy2.implement_reform(reform2) policy2.implement_reform(reform2) + def test_index_offset_reform(): """ Test a reform that includes both a change in CPI_offset and a change in From d282f5aac27a8e8a97751182b993a4c6a2a9b9ee Mon Sep 17 00:00:00 2001 From: hdoupe Date: Wed, 4 Mar 2020 10:49:57 -0500 Subject: [PATCH 23/64] Fix code-style --- taxcalc/parameters.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 7342e4b59..909185c75 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -207,9 +207,9 @@ def adjust(self, params_or_path, **kwargs): last_known_year = max(cpi_min_year["year"], self.LAST_KNOWN_YEAR) for param in self._data: if ( - param in params - or param == "CPI_offset" - or param in self.WAGE_INDEXED_PARAMS + param in params or + param == "CPI_offset" or + param in self.WAGE_INDEXED_PARAMS ): continue if self._data[param].get("indexed", False): # TODO: see above From 59c90ede1c61b9a0da4ceea8b8ffddc78c4eeb5d Mon Sep 17 00:00:00 2001 From: hdoupe Date: Wed, 4 Mar 2020 19:04:50 -0500 Subject: [PATCH 24/64] Set up data in initialize method --- taxcalc/consumption.py | 7 ++-- taxcalc/growdiff.py | 5 +++ taxcalc/parameters.py | 60 ++++++++++++++++++++------------ taxcalc/policy.py | 17 ++++++--- taxcalc/tests/test_parameters.py | 3 +- 5 files changed, 61 insertions(+), 31 deletions(-) diff --git a/taxcalc/consumption.py b/taxcalc/consumption.py index 1aa182812..c7dfeb5a9 100644 --- a/taxcalc/consumption.py +++ b/taxcalc/consumption.py @@ -32,9 +32,10 @@ class instance: Consumption DEFAULTS_FILE_NAME = 'consumption.json' DEFAULTS_FILE_PATH = os.path.abspath(os.path.dirname(__file__)) - def __init__(self, **kwargs): - super().__init__(**kwargs) - self.set_state(year=self.JSON_START_YEAR) + def __init__(self): + super().__init__() + self.initialize(Consumption.JSON_START_YEAR, + Consumption.DEFAULT_NUM_YEARS) @staticmethod def read_json_update(obj): diff --git a/taxcalc/growdiff.py b/taxcalc/growdiff.py index d3334960a..8fc1f6925 100644 --- a/taxcalc/growdiff.py +++ b/taxcalc/growdiff.py @@ -31,6 +31,11 @@ class instance: GrowDiff DEFAULTS_FILE_NAME = 'growdiff.json' DEFAULTS_FILE_PATH = os.path.abspath(os.path.dirname(__file__)) + def __init__(self): + super().__init__() + self.initialize(GrowDiff.JSON_START_YEAR, + GrowDiff.DEFAULT_NUM_YEARS) + @staticmethod def read_json_update(obj, topkey): """ diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 909185c75..6397c18b6 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -78,26 +78,8 @@ class Parameters(paramtools.Parameters): JSON_START_YEAR = None LAST_KNOWN_YEAR = None - def __init__(self, *args, start_year=None, **kwargs): - self._wage_growth_rates = None - self._inflation_rates = None - if ( - self.defaults is None and - self.DEFAULTS_FILE_PATH is not None and - self.DEFAULTS_FILE_NAME - ): - self.defaults = os.path.join( - self.DEFAULTS_FILE_PATH, - self.DEFAULTS_FILE_NAME - ) - super().__init__(*args, **kwargs) - self._init_values = { - param: data["value"] - for param, data in self.read_params(self.defaults).items() - if param != "schema" - } - if start_year or self.JSON_START_YEAR: - self.set_state(year=start_year or self.JSON_START_YEAR) + def __init__(self, *args, **kwargs): + pass def adjust(self, params_or_path, **kwargs): """ @@ -182,7 +164,7 @@ def adjust(self, params_or_path, **kwargs): to_delete = {} to_adjust = {} for param in params: - if param == "CPI_offset" or param in self.WAGE_INDEXED_PARAMS: + if param == "CPI_offset" or param in self._wage_indexed: continue if param.endswith("-indexed"): param = param.split("-indexed")[0] @@ -204,7 +186,7 @@ def adjust(self, params_or_path, **kwargs): # 1.b for all others these are years after last_known_year to_delete = {} to_adjust = {} - last_known_year = max(cpi_min_year["year"], self.LAST_KNOWN_YEAR) + last_known_year = max(cpi_min_year["year"], self._last_known_year) for param in self._data: if ( param in params or @@ -389,6 +371,40 @@ def inflation_rates(self): return self._inflation_rates # alias methods below + def initialize(self, start_year, num_years, last_known_year=None, + removed=None, redefined=None, wage_indexed=None): + self._wage_growth_rates = None + self._inflation_rates = None + if ( + self.defaults is None and + self.DEFAULTS_FILE_PATH is not None and + self.DEFAULTS_FILE_NAME + ): + self.defaults = os.path.join( + self.DEFAULTS_FILE_PATH, + self.DEFAULTS_FILE_NAME + ) + + if last_known_year is None: + self._last_known_year = start_year + else: + assert last_known_year >= start_year + assert last_known_year <= self.LAST_BUDGET_YEAR + self._last_known_year = last_known_year + + self._removed_params = removed or self.REMOVED_PARAMS + self._redefined_params = redefined or self.REDEFINED_PARAMS + + self._wage_indexed = wage_indexed or self.WAGE_INDEXED_PARAMS + + super().__init__() + self._init_values = { + param: data["value"] + for param, data in self.read_params(self.defaults).items() + if param != "schema" + } + if start_year or self.JSON_START_YEAR: + self.set_state(year=start_year or self.JSON_START_YEAR) def _update(self, revision, ignore_warnings, raise_errors): """ diff --git a/taxcalc/policy.py b/taxcalc/policy.py index 7b8be34a7..4af9d6e98 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -73,10 +73,9 @@ class instance: Policy # (3) specify which Policy parameters are wage (rather than price) indexed WAGE_INDEXED_PARAMS = ['SS_Earnings_c', 'SS_Earnings_thd'] - def __init__(self, gfactors=None, only_reading_defaults=False, **kwargs): + def __init__(self, gfactors=None, only_reading_defaults=False): # put JSON contents of DEFAULTS_FILE_NAME into self._vals dictionary - if only_reading_defaults: - return + super().__init__() # handle gfactors argument if gfactors is None: self._gfactors = GrowFactors() @@ -84,8 +83,16 @@ def __init__(self, gfactors=None, only_reading_defaults=False, **kwargs): self._gfactors = gfactors else: raise ValueError('gfactors is not None or a GrowFactors instance') - - super().__init__(**kwargs) + # read default parameters and initialize + syr = Policy.JSON_START_YEAR + lyr = Policy.LAST_BUDGET_YEAR + nyrs = Policy.DEFAULT_NUM_YEARS + self._inflation_rates = self._gfactors.price_inflation_rates(syr, lyr) + self._wage_growth_rates = self._gfactors.wage_growth_rates(syr, lyr) + self.initialize(syr, nyrs, Policy.LAST_KNOWN_YEAR, + Policy.REMOVED_PARAMS, + Policy.REDEFINED_PARAMS, + Policy.WAGE_INDEXED_PARAMS) @staticmethod def read_json_reform(obj): diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index c84a4617b..0e5173efb 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -111,7 +111,8 @@ class Params(Parameters): NUM_YEARS = LAST_YEAR - START_YEAR + 1 def __init__(self): - super().__init__(start_year=Params.START_YEAR) + super().__init__() + self.initialize(Params.START_YEAR, Params.NUM_YEARS) def update_params(self, revision, ignore_warnings=False, raise_errors=True): From 98204124f5338a4ed1042696da39c279296cd491 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Wed, 4 Mar 2020 19:07:11 -0500 Subject: [PATCH 25/64] Add start year to initial state to prevent extra set_state call --- taxcalc/parameters.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 6397c18b6..8cd862249 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -397,14 +397,16 @@ def initialize(self, start_year, num_years, last_known_year=None, self._wage_indexed = wage_indexed or self.WAGE_INDEXED_PARAMS - super().__init__() + if start_year or self.JSON_START_YEAR: + initial_state = {"year": start_year or self.JSON_START_YEAR} + else: + initial_state = None + super().__init__(initial_state=initial_state) self._init_values = { param: data["value"] for param, data in self.read_params(self.defaults).items() if param != "schema" } - if start_year or self.JSON_START_YEAR: - self.set_state(year=start_year or self.JSON_START_YEAR) def _update(self, revision, ignore_warnings, raise_errors): """ From 395af1c8c0b5986b3c0d2b167a649c7c1454b6cc Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 21 Mar 2020 13:25:49 -0400 Subject: [PATCH 26/64] Revert inflation_rates and wage_growth_rates back to lists to preserve api - adds optional year argument to inflation_rates and wage_growth_rates methods to make it easier to grab the rate for a given year. --- taxcalc/parameters.py | 22 +++++++++++---------- taxcalc/policy.py | 20 +++++++++---------- taxcalc/tests/test_calculator.py | 4 ++-- taxcalc/tests/test_parameters.py | 4 ++-- taxcalc/tests/test_policy.py | 34 +++++++++++++++++--------------- 5 files changed, 43 insertions(+), 41 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 8cd862249..577d010ff 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -158,7 +158,8 @@ def adjust(self, params_or_path, **kwargs): self._data["CPI_offset"]["value"] ) for cpi_vo in rate_adjustment_vals: - self._inflation_rates[cpi_vo["year"]] += cpi_vo["value"] + self._inflation_rates[cpi_vo["year"] - self.start_year] += \ + cpi_vo["value"] # 1. delete all unknown values. # 1.a for revision these are years specified after cpi_min_year to_delete = {} @@ -350,9 +351,9 @@ def get_index_rate(self, param, label_to_extend_val): if not self._inflation_rates or not self._wage_growth_rates: self.set_rates() if param in self.WAGE_INDEXED_PARAMS: - return self._wage_growth_rates[label_to_extend_val] + return self.wage_growth_rates(year=label_to_extend_val) else: - return self._inflation_rates[label_to_extend_val] + return self.inflation_rates(year=label_to_extend_val) def set_rates(self): """ @@ -361,14 +362,15 @@ def set_rates(self): """ raise NotImplementedError() - # TODO: It seems like less trouble to keep wage_growth_rates - # and inflaiton_rates as attributes instead of methods that - # access a private variable. - def wage_growth_rates(self): - return self._wage_growth_rates + def wage_growth_rates(self, year=None): + if year is not None: + return self._wage_growth_rates[year - self.start_year] + return self._wage_growth_rates or [] - def inflation_rates(self): - return self._inflation_rates + def inflation_rates(self, year=None): + if year is not None: + return self._inflation_rates[year - self.start_year] + return self._inflation_rates or [] # alias methods below def initialize(self, start_year, num_years, last_known_year=None, diff --git a/taxcalc/policy.py b/taxcalc/policy.py index 4af9d6e98..f9268a132 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -87,8 +87,8 @@ def __init__(self, gfactors=None, only_reading_defaults=False): syr = Policy.JSON_START_YEAR lyr = Policy.LAST_BUDGET_YEAR nyrs = Policy.DEFAULT_NUM_YEARS - self._inflation_rates = self._gfactors.price_inflation_rates(syr, lyr) - self._wage_growth_rates = self._gfactors.wage_growth_rates(syr, lyr) + self._inflation_rates = None + self._wage_growth_rates = None self.initialize(syr, nyrs, Policy.LAST_KNOWN_YEAR, Policy.REMOVED_PARAMS, Policy.REDEFINED_PARAMS, @@ -141,16 +141,14 @@ def set_rates(self): if not self._gfactors: self._gfactors = GrowFactors() - self._inflation_rates = { - 2013 + ix: np.round(rate + cpi_offset[2013 + ix], 4) + self._inflation_rates = [ + np.round(rate + cpi_offset[2013 + ix], 4) for ix, rate in enumerate( self._gfactors.price_inflation_rates(2013, 2029) ) - } + ] - self._wage_growth_rates = { - 2013 + ix: rate - for ix, rate in enumerate( - self._gfactors.wage_growth_rates(2013, 2029) - ) - } + self._wage_growth_rates = [ + rate + for rate in self._gfactors.wage_growth_rates(2013, 2029) + ] diff --git a/taxcalc/tests/test_calculator.py b/taxcalc/tests/test_calculator.py index 85376f98e..446a7bcf6 100644 --- a/taxcalc/tests/test_calculator.py +++ b/taxcalc/tests/test_calculator.py @@ -234,8 +234,8 @@ def test_make_calculator_increment_years_first(cps_subsample): # compare expected policy parameter values with those embedded in calc irates = pol.inflation_rates() syr = Policy.JSON_START_YEAR - irate2015 = irates[2015] - irate2016 = irates[2016] + irate2015 = irates[2015 - syr] + irate2016 = irates[2016 - syr] std6 = std5 * (1.0 + irate2015) std7 = std6 * (1.0 + irate2016) exp_STD_Aged = np.array([[1500, 1200, 1200, 1500, 1500], diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index 0e5173efb..8e82cf44d 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -128,8 +128,8 @@ def update_params(self, revision, assert prms.start_year == 2001 assert prms.current_year == 2001 assert prms.end_year == 2010 - assert prms.inflation_rates() is None - assert prms.wage_growth_rates() is None + assert prms.inflation_rates() == list() + assert prms.wage_growth_rates() == list() prms.set_year(2010) assert prms.current_year == 2010 with pytest.raises(paramtools.ValidationError): diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index 1f4958c92..9bc3bc83b 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -164,8 +164,8 @@ def test_constant_inflation_rate_with_reform(): # extract price inflation rates pirates = pol.inflation_rates() syr = Policy.JSON_START_YEAR - irate_b = pirates[ryr - 2] - irate_a = pirates[ryr] + irate_b = pirates[ryr - 2 - syr] + irate_a = pirates[ryr - syr] # check implied inflation rate just before reform grate = float(pol._II_em[ryr - 1 - syr]) / float(pol._II_em[ryr - 2 - syr]) assert round(grate - 1.0, 4) == round(irate_b, 4) @@ -191,9 +191,9 @@ def test_variable_inflation_rate_with_reform(): assert pol.current_year == 2020 # extract price inflation rates pirates = pol.inflation_rates() - irate2018 = pirates[2018] - irate2020 = pirates[2020] - irate2021 = pirates[2021] + irate2018 = pirates[2018 - syr] + irate2020 = pirates[2020 - syr] + irate2021 = pirates[2021 - syr] # check implied inflation rate between 2018 and 2019 (before the reform) grate = float(pol._II_em[2019 - syr]) / float(pol._II_em[2018 - syr]) assert round(grate - 1.0, 5) == round(irate2018, 5) @@ -216,11 +216,11 @@ def test_multi_year_reform(): iratelist = pol.inflation_rates() ifactor = {} for i in range(0, nyrs): - ifactor[syr + i] = 1.0 + iratelist[syr + i] + ifactor[syr + i] = 1.0 + iratelist[i] wratelist = pol.wage_growth_rates() wfactor = {} for i in range(0, nyrs): - wfactor[syr + i] = 1.0 + wratelist[syr + i] + wfactor[syr + i] = 1.0 + wratelist[i] # TODO: this seems like a test of _expand_array which is # already tested within paramtools # confirm that parameters have current-law values @@ -952,15 +952,17 @@ def test_cpi_offset_affect_on_prior_years(): p2.implement_reform(reform) start_year = p1.start_year - p1_rates = p1.inflation_rates() - p2_rates = p2.inflation_rates() + p1_rates = np.array(p1.inflation_rates()) + p2_rates = np.array(p2.inflation_rates()) + # Inflation rates prior to 2022 are the same. - for year in range(start_year, 2022): - assert p1_rates[year] == p2_rates[year], ( - f"Difference in year {year}: {p1_rates[year] - p2_rates[year]}" - ) + np.testing.assert_allclose( + p1_rates[:2022 - start_year], + p2_rates[:2022 - start_year] + ) # Inflation rate in 2022 was updated. - assert p1_rates[2022] == p2_rates[2022] - (-0.005), ( - f"Difference in year 2022: {p1_rates[2022] - p2_rates[2022]}" - ) + np.testing.assert_allclose( + p1_rates[2022 - start_year], + p2_rates[2022 - start_year] - (-0.005) + ) From 5bbf7ac130f13210de15ce0e70d1441c354d9bbb Mon Sep 17 00:00:00 2001 From: hdoupe Date: Thu, 9 Apr 2020 14:35:47 -0400 Subject: [PATCH 27/64] Updates for paramtools 0.12.0 --- taxcalc/parameters.py | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 577d010ff..e60aed7d0 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -4,7 +4,8 @@ from collections import defaultdict import marshmallow as ma -import paramtools +import paramtools as pt +from paramtools.select import select_lt import numpy as np import requests @@ -12,14 +13,6 @@ from taxcalc.utils import json_to_dict -def lt_func(x, y) -> bool: - return all(x < item for item in y) - - -def select_lt(value_objects, exact_match, labels, tree=None): - return paramtools.select(value_objects, exact_match, lt_func, labels, tree) - - class CompatibleDataSchema(ma.Schema): """ Schema for Compatible data object @@ -32,7 +25,13 @@ class CompatibleDataSchema(ma.Schema): cps = ma.fields.Boolean() -class Parameters(paramtools.Parameters): +pt.register_custom_type( + "compatible_data", + ma.fields.Nested(CompatibleDataSchema()) +) + + +class Parameters(pt.Parameters): """ Base Parameters class that wraps ParamTools, providing parameter indexing for tax policy in the @@ -53,7 +52,7 @@ class Parameters(paramtools.Parameters): underscore before the variable name (e.g. EITC_c vs _EITC_c). - Note: Like all paramtools.Parameters classes + Note: Like all pt.Parameters classes the values of attributes corresponding to a parameter value on this class are ephemeral and the only way to make permanent changes @@ -61,8 +60,6 @@ class Parameters(paramtools.Parameters): or adjust methods. """ - field_map = {"compatible_data": ma.fields.Nested(CompatibleDataSchema())} - defaults = None array_first = True label_to_extend = "year" @@ -220,7 +217,7 @@ def adjust(self, params_or_path, **kwargs): base_param = param.split("-indexed")[0] if not self._data[base_param].get("indexable", None): msg = f"Parameter {base_param} is not indexable." - raise paramtools.ValidationError( + raise pt.ValidationError( {"errors": {base_param: msg}}, labels=None ) @@ -306,7 +303,7 @@ def adjust(self, params_or_path, **kwargs): # 2.d adjust with values greater than or equal to current # year in params if base_param in params: - vos = paramtools.select_gt( + vos = pt.select_gt( params[base_param], False, {"year": year - 1} ) super().adjust({base_param: vos}, **kwargs) @@ -436,7 +433,7 @@ def _update(self, revision, ignore_warnings, raise_errors): """ if not isinstance(revision, dict): - raise paramtools.ValidationError( + raise pt.ValidationError( {"errors": {"schema": "Revision must be a dictionary."}}, None ) @@ -446,7 +443,7 @@ def _update(self, revision, ignore_warnings, raise_errors): for param, val in revision.items(): if not isinstance(param, str): msg = f"Parameter {param} is not a string." - raise paramtools.ValidationError( + raise pt.ValidationError( {"errors": {"schema": msg}}, None ) @@ -460,7 +457,7 @@ def _update(self, revision, ignore_warnings, raise_errors): msg = self.REDEFINED_PARAMS[param] else: msg = f"Parameter {param} does not exist." - raise paramtools.ValidationError( + raise pt.ValidationError( {"errors": {"schema": msg}}, None ) @@ -487,7 +484,7 @@ def _update(self, revision, ignore_warnings, raise_errors): f"Pameter {param} does not have the correct " f"array dimensions for year {year}." ) - raise paramtools.ValidationError( + raise pt.ValidationError( {"errors": {"schema": msg}}, None ) @@ -497,7 +494,7 @@ def _update(self, revision, ignore_warnings, raise_errors): f"Parameter {param} must be a year:value dictionary " f"if you are not using the new adjust method." ) - raise paramtools.ValidationError( + raise pt.ValidationError( {"errors": {"schema": msg}}, None ) From 55f6e636ccd4ca4601d97d9051e32314d1950e9e Mon Sep 17 00:00:00 2001 From: hdoupe Date: Thu, 9 Apr 2020 18:08:10 -0400 Subject: [PATCH 28/64] Add tests for parameter index status/cpi offset interactions --- taxcalc/tests/test_policy.py | 458 +++++++++++++++++++++++++++++++++++ 1 file changed, 458 insertions(+) diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index 9bc3bc83b..78e850d26 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -7,6 +7,7 @@ # # pylint: disable=too-many-lines +import copy import os import json import numpy as np @@ -16,6 +17,27 @@ from taxcalc import Policy +def cmp_policy_objs(pol1, pol2, year_range=None, exclude=None): + """ + Compare parameter values two policy objects. + + year_range: years over which to compare values. + exclude: list of parameters to exclude from comparison. + """ + if year_range is not None: + pol1.set_state(year=list(year_range)) + pol2.set_state(year=list(year_range)) + else: + pol1.clear_state() + pol2.clear_state() + for param in pol1._data: + if exclude and param in exclude: + continue + v1 = getattr(pol1, param) + v2 = getattr(pol2, param) + np.testing.assert_allclose(v1, v2) + + def test_incorrect_class_instantiation(): """ Test incorrect instantiation of Policy class object. @@ -966,3 +988,439 @@ def test_cpi_offset_affect_on_prior_years(): p1_rates[2022 - start_year], p2_rates[2022 - start_year] - (-0.005) ) + + +class TestAdjust: + """ + Test update and indexing rules as defined in the Parameters docstring. + + Each test implements a Tax-Calculator style reform and a ParamTools styled + reform, checks that the updated values are equal, and then, tests that + values were extended and indexed (or not indexed) correctly. + """ + + def test_simple_adj(self): + """ + Test updating a 2D parameter that is indexed to inflation. + """ + pol1 = Policy() + pol1.implement_reform( + { + "EITC_c": { + 2020: [10000, 10001, 10002, 10003], + 2023: [20000, 20001, 20002, 20003], + } + } + ) + + pol2 = Policy() + pol2.adjust( + { + "EITC_c": [ + {"year": 2020, "EIC": "0kids", "value": 10000}, + {"year": 2020, "EIC": "1kid", "value": 10001}, + {"year": 2020, "EIC": "2kids", "value": 10002}, + {"year": 2020, "EIC": "3+kids", "value": 10003}, + {"year": 2023, "EIC": "0kids", "value": 20000}, + {"year": 2023, "EIC": "1kid", "value": 20001}, + {"year": 2023, "EIC": "2kids", "value": 20002}, + {"year": 2023, "EIC": "3+kids", "value": 20003}, + ] + } + ) + cmp_policy_objs(pol1, pol2) + + pol0 = Policy() + pol0.set_year(2019) + pol2.set_year(2019) + + assert np.allclose(pol0.EITC_c, pol2.EITC_c) + + pol2.set_state(year=[2020, 2021, 2022, 2023, 2024]) + val2020 = np.array([[10000, 10001, 10002, 10003]]) + val2023 = np.array([[20000, 20001, 20002, 20003]]) + + exp = np.vstack([ + val2020, + val2020 * (1 + pol2.inflation_rates(year=2020)), + val2020 * ( + (1 + pol2.inflation_rates(year=2020)) * + (1 + pol2.inflation_rates(year=2021)) + ), + val2023, + val2023 * (1 + pol2.inflation_rates(year=2023)), + ]).round(2) + np.testing.assert_allclose(pol2.EITC_c, exp) + + def test_adj_without_index_1(self): + """ + Test update indexed parameter after turning off its + indexed status. + """ + pol1 = Policy() + pol1.implement_reform( + { + "EITC_c": { + 2020: [10000, 10001, 10002, 10003], + 2023: [20000, 20001, 20002, 20003], + }, + "EITC_c-indexed": {2019: False}, + } + ) + + pol2 = Policy() + pol2.adjust( + { + "EITC_c": [ + {"year": 2020, "EIC": "0kids", "value": 10000}, + {"year": 2020, "EIC": "1kid", "value": 10001}, + {"year": 2020, "EIC": "2kids", "value": 10002}, + {"year": 2020, "EIC": "3+kids", "value": 10003}, + {"year": 2023, "EIC": "0kids", "value": 20000}, + {"year": 2023, "EIC": "1kid", "value": 20001}, + {"year": 2023, "EIC": "2kids", "value": 20002}, + {"year": 2023, "EIC": "3+kids", "value": 20003}, + ], + "EITC_c-indexed": [{"year": 2019, "value": False}], + } + ) + cmp_policy_objs(pol1, pol2) + + pol0 = Policy() + pol0.set_year(2019) + pol2.set_year(2019) + + assert np.allclose(pol0.EITC_c, pol2.EITC_c) + + pol2.set_state(year=[2020, 2021, 2022, 2023, 2024]) + + val2020 = np.array([[10000, 10001, 10002, 10003]]) + val2023 = np.array([[20000, 20001, 20002, 20003]]) + + exp = np.vstack([ + val2020, + val2020, + val2020, + val2023, + val2023, + ]).round(2) + np.testing.assert_allclose(pol2.EITC_c, exp) + + def test_adj_without_index_2(self): + """ + Test updating an indexed parameter, making it unindexed, + and then adjusting it again. + """ + pol1 = Policy() + pol1.implement_reform( + { + "EITC_c": { + 2020: [10000, 10001, 10002, 10003], + 2023: [20000, 20001, 20002, 20003], + }, + "EITC_c-indexed": {2022: False}, + } + ) + + pol2 = Policy() + pol2.adjust( + { + "EITC_c": [ + {"year": 2020, "EIC": "0kids", "value": 10000}, + {"year": 2020, "EIC": "1kid", "value": 10001}, + {"year": 2020, "EIC": "2kids", "value": 10002}, + {"year": 2020, "EIC": "3+kids", "value": 10003}, + {"year": 2023, "EIC": "0kids", "value": 20000}, + {"year": 2023, "EIC": "1kid", "value": 20001}, + {"year": 2023, "EIC": "2kids", "value": 20002}, + {"year": 2023, "EIC": "3+kids", "value": 20003}, + ], + "EITC_c-indexed": [{"year": 2022, "value": False}], + } + ) + cmp_policy_objs(pol1, pol2) + + pol0 = Policy() + pol0.set_year(2019) + pol2.set_year(2019) + + assert np.allclose(pol0.EITC_c, pol2.EITC_c) + + pol2.set_state(year=[2020, 2021, 2022, 2023, 2024]) + + val2020 = np.array([[10000, 10001, 10002, 10003]]) + val2023 = np.array([[20000, 20001, 20002, 20003]]) + + exp = np.vstack([ + val2020, + val2020 * (1 + pol2.inflation_rates(year=2020)), + val2020 * ( + (1 + pol2.inflation_rates(year=2020)) * + (1 + pol2.inflation_rates(year=2021)) + ), + val2023, + val2023, + ]).round(2) + np.testing.assert_allclose(pol2.EITC_c, exp) + + def test_activate_index(self): + """ + Test changing a non-indexed parameter to an indexed parameter. + """ + pol1 = Policy() + pol1.implement_reform({ + "CTC_c": {2022: 1005}, + "CTC_c-indexed": {2022: True} + }) + + pol2 = Policy() + pol2.adjust( + { + "CTC_c": [{"year": 2022, "value": 1005}], + "CTC_c-indexed": [{"year": 2022, "value": True}], + } + ) + cmp_policy_objs(pol1, pol2) + + pol0 = Policy() + pol0.set_year(year=2021) + pol2.set_state(year=[2021, 2022, 2023]) + exp = np.array([ + pol0.CTC_c[0], + 1005, + 1005 * (1 + pol2.inflation_rates(year=2022)) + ]).round(2) + + np.testing.assert_allclose(pol2.CTC_c, exp) + + def test_apply_cpi_offset(self): + """ + Test applying the CPI_offset parameter without any other parameters. + """ + pol1 = Policy() + pol1.implement_reform({"CPI_offset": {2021: -0.001}}) + + pol2 = Policy() + pol2.adjust({"CPI_offset": [{"year": 2021, "value": -0.001}]}) + + cmp_policy_objs(pol1, pol2) + + pol0 = Policy() + + init_rates = pol0.inflation_rates() + new_rates = pol2.inflation_rates() + + start_ix = 2021 - pol2.start_year + + exp_rates = copy.deepcopy(new_rates) + exp_rates[start_ix:] -= pol2._CPI_offset[start_ix:] + np.testing.assert_allclose(init_rates, exp_rates) + + # make sure values prior to 2021 were not affected. + cmp_policy_objs(pol0, pol2, year_range=range(pol2.start_year, 2021)) + + pol2.set_state(year=[2021, 2022]) + np.testing.assert_equal( + (pol2.EITC_c[1] / pol2.EITC_c[0] - 1).round(4), + pol0.inflation_rates(year=2021) + (-0.001), + ) + + def test_multiple_cpi_swaps(self): + """ + Test changing a parameter's indexed status multiple times. + """ + pol1 = Policy() + pol1.implement_reform( + { + "II_em": {2016: 6000, 2018: 7500, 2020: 9000}, + "II_em-indexed": {2016: False, 2018: True}, + } + ) + + pol2 = Policy() + pol2.adjust( + { + "II_em": [ + {"year": 2016, "value": 6000}, + {"year": 2018, "value": 7500}, + {"year": 2020, "value": 9000}, + ], + "II_em-indexed": [ + {"year": 2016, "value": False}, + {"year": 2018, "value": True}, + ], + } + ) + + cmp_policy_objs(pol1, pol2) + + # check inflation is not applied. + pol2.set_state(year=[2016, 2017]) + np.testing.assert_equal( + pol2.II_em[0], pol2.II_em[1] + ) + + # check inflation rate is applied. + pol2.set_state(year=[2018, 2019]) + np.testing.assert_equal( + (pol2.II_em[1] / pol2.II_em[0] - 1).round(4), + pol2.inflation_rates(year=2018), + ) + + # check inflation rate applied for rest of window. + window = list(range(2020, pol2.end_year + 1)) + pol2.set_state(year=window) + np.testing.assert_equal( + (pol2.II_em[1:] / pol2.II_em[:-1] - 1).round(4), + [pol2.inflation_rates(year=year) for year in window[:-1]], + ) + + def test_multiple_cpi_swaps2(self): + """ + Test changing the indexed status of multiple parameters multiple + times. + """ + pol1 = Policy() + pol1.implement_reform( + { + "II_em": {2016: 6000, 2018: 7500, 2020: 9000}, + "II_em-indexed": {2016: False, 2018: True}, + "SS_Earnings_c": {2016: 300000, 2018: 500000}, + "SS_Earnings_c-indexed": {2017: False, 2019: True}, + "AMT_em-indexed": {2017: False, 2020: True}, + } + ) + + pol2 = Policy() + pol2.adjust( + { + "SS_Earnings_c": [ + {"year": 2016, "value": 300000}, + {"year": 2018, "value": 500000}, + ], + "SS_Earnings_c-indexed": [ + {"year": 2017, "value": False}, + {"year": 2019, "value": True}, + ], + "AMT_em-indexed": [ + {"year": 2017, "value": False}, + {"year": 2020, "value": True}, + ], + "II_em": [ + {"year": 2016, "value": 6000}, + {"year": 2018, "value": 7500}, + {"year": 2020, "value": 9000}, + ], + "II_em-indexed": [ + {"year": 2016, "value": False}, + {"year": 2018, "value": True}, + ], + } + ) + + cmp_policy_objs(pol1, pol2) + + # Test SS_Earnings_c + # check inflation is still applied from 2016 to 2017. + pol2.set_state(year=[2016, 2017]) + np.testing.assert_equal( + (pol2.SS_Earnings_c[1] / pol2.SS_Earnings_c[0] - 1).round(4), + pol2.wage_growth_rates(year=2016), + ) + + # check inflation rate is not applied after adjustment in 2018. + pol2.set_state(year=[2018, 2019]) + np.testing.assert_equal( + pol2.SS_Earnings_c[0], pol2.SS_Earnings_c[1] + ) + + # check inflation rate applied for rest of window. + window = list(range(2019, pol2.end_year + 1)) + pol2.set_state(year=window) + np.testing.assert_equal( + (pol2.SS_Earnings_c[1:] / pol2.SS_Earnings_c[:-1] - 1).round(4), + [pol2.wage_growth_rates(year=year) for year in window[:-1]], + ) + + # Test AMT + # pol2.set_state(year=[2016, 2017]) + # np.testing.assert_equal( + # (pol2.AMT_em[1] / pol2.AMT_em[0] - 1).round(4), + # pol2.inflation_rates(year=2016), + # ) + + # Check values for 2017 through 2020 are equal. + pol2.set_state(year=[2017, 2018, 2019, 2020]) + for i in (1, 2, 3): + np.testing.assert_equal( + pol2.AMT_em[0], pol2.AMT_em[i] + ) + + # check inflation rate applied for rest of window. + window = list(range(2020, pol2.end_year + 1)) + pol2.set_state(year=window) + # repeat inflation rates accross matrix so they can be compared to the + # rates derived from AMT_em, a 5 * N matrix. + exp_rates = [pol2.inflation_rates(year=year) for year in window[:-1]] + exp_rates = np.tile([exp_rates], (5, 1)).transpose() + np.testing.assert_equal( + (pol2.AMT_em[1:] / pol2.AMT_em[:-1] - 1).round(4), + exp_rates, + ) + + # Test II_em + # check inflation is not applied. + pol2.set_state(year=[2016, 2017]) + np.testing.assert_equal( + pol2.II_em[0], pol2.II_em[1] + ) + + # check inflation rate is applied. + pol2.set_state(year=[2018, 2019]) + np.testing.assert_equal( + (pol2.II_em[1] / pol2.II_em[0] - 1).round(4), + pol2.inflation_rates(year=2018), + ) + + # check inflation rate applied for rest of window. + window = list(range(2020, pol2.end_year + 1)) + pol2.set_state(year=window) + np.testing.assert_equal( + (pol2.II_em[1:] / pol2.II_em[:-1] - 1).round(4), + [pol2.inflation_rates(year=year) for year in window[:-1]], + ) + + def test_adj_CPI_offset_and_index_status(self): + """ + Test changing CPI_offset and another parameter simultaneously. + """ + pol1 = Policy() + pol1.implement_reform({ + "CTC_c-indexed": {2020: True}, + "CPI_offset": {2020: -0.005}}, + ) + + pol2 = Policy() + pol2.adjust( + { + "CPI_offset": [{"year": 2020, "value": -0.005}], + "CTC_c-indexed": [{"year": 2020, "value": True}], + } + ) + + cmp_policy_objs(pol1, pol2) + + # Check no difference prior to 2020 + pol0 = Policy() + cmp_policy_objs( + pol0, + pol2, + year_range=range(pol2.start_year, 2020 + 1), + exclude=["CPI_offset"] + ) + + pol2.set_state(year=[2021, 2022]) + np.testing.assert_equal( + (pol2.CTC_c[1] / pol2.CTC_c[0] - 1).round(4), + pol0.inflation_rates(year=2021) + (-0.005), + ) From d950421ead00bcb50c427499897ad30b0b46999e Mon Sep 17 00:00:00 2001 From: hdoupe Date: Fri, 10 Apr 2020 19:41:00 -0400 Subject: [PATCH 29/64] First pass back through adjust method to fix typos, clarify and simplify code --- taxcalc/parameters.py | 116 +++++++++++++++++------------------------- taxcalc/policy.py | 5 +- 2 files changed, 48 insertions(+), 73 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index e60aed7d0..3a613f9d5 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -94,14 +94,14 @@ def adjust(self, params_or_path, **kwargs): parameters in the adjustment, they will be included in the final adjustment call (unless their indexed status is changed). 2. If the "indexed" status is updated for any parameter: - a. if a parameter has values that are being adjusted before - the indexed status is adjusted, update those parameters fist. - b. extend the values of that parameter to the year in which + a. If a parameter has values that are being adjusted before + the indexed status is adjusted, update those parameters first. + b. Extend the values of that parameter to the year in which the status is changed. - c. change the the indexed status for the parameter. - d. update parameter values in adjustment that are adjusted after + c. Change the the indexed status for the parameter. + d. Update parameter values in adjustment that are adjusted after the year in which the indexed status changes. - e. using the new "-indexed" status, extend the values of that + e. Using the new "-indexed" status, extend the values of that parameter through the remaining years or until the -indexed status changes again. 3. Update all parameters that are not indexing related, i.e. they are @@ -122,8 +122,8 @@ def adjust(self, params_or_path, **kwargs): """ min_year = min(self._stateless_label_grid["year"]) - # turn off extra ops during the intermediary adjustments so that - # expensive and unnecessary operations are not changed. + # Temporarily turn off extra ops during the intermediary adjustments + # so that expensive and unnecessary operations are not run. label_to_extend = self.label_to_extend array_first = self.array_first self.array_first = False @@ -132,11 +132,11 @@ def adjust(self, params_or_path, **kwargs): # Check if CPI_offset is adjusted. If so, reset values of all indexed # parameters after year where CPI_offset is changed. If CPI_offset is - # changed multiple times, then the reset year is the year in which the - # CPI_offset is first changed. + # changed multiple times, then reset values after the first year in + # which the CPI_offset is changed. needs_reset = [] if params.get("CPI_offset") is not None: - # get first year CPI_offset is adjusted + # Update CPI_offset with new value. cpi_adj = super().adjust( { "CPI_offset": params["CPI_offset"] @@ -145,14 +145,13 @@ def adjust(self, params_or_path, **kwargs): ) # turn off extend now that CPI_offset has been updated. self.label_to_extend = None + # Get first year in which CPI_offset is changed. cpi_min_year = min( - cpi_adj["CPI_offset"], - key=lambda vo: vo["year"] + cpi_adj["CPI_offset"], key=lambda vo: vo["year"] ) - # apply new CPI_offset values to inflation rates - rate_adjustment_vals = filter( - lambda vo: vo["year"] >= cpi_min_year["year"], - self._data["CPI_offset"]["value"] + # Apply new CPI_offset values to inflation rates + rate_adjustment_vals = self.select_gt( + "CPI_offset", True, year=cpi_min_year["year"] - 1 ) for cpi_vo in rate_adjustment_vals: self._inflation_rates[cpi_vo["year"] - self.start_year] += \ @@ -160,30 +159,21 @@ def adjust(self, params_or_path, **kwargs): # 1. delete all unknown values. # 1.a for revision these are years specified after cpi_min_year to_delete = {} - to_adjust = {} for param in params: if param == "CPI_offset" or param in self._wage_indexed: continue if param.endswith("-indexed"): param = param.split("-indexed")[0] - # TODO: disting. btw wage and price? if self._data[param].get("indexed", False): gt = self.select_gt(param, True, year=cpi_min_year["year"]) - to_delete[param] = list( - [dict(vo, **{"value": None}) for vo in gt] - ) - to_adjust[param] = select_lt( - self._init_values[param], - True, - {"year": cpi_min_year["year"] + 1}, - ) + to_delete[param] = [ + dict(vo, **{"value": None}) for vo in gt + ] needs_reset.append(param) super().adjust(to_delete, **kwargs) - super().adjust(to_adjust, **kwargs) # 1.b for all others these are years after last_known_year to_delete = {} - to_adjust = {} last_known_year = max(cpi_min_year["year"], self._last_known_year) for param in self._data: if ( @@ -192,24 +182,18 @@ def adjust(self, params_or_path, **kwargs): param in self.WAGE_INDEXED_PARAMS ): continue - if self._data[param].get("indexed", False): # TODO: see above + if self._data[param].get("indexed", False): gt = self.select_gt(param, True, year=last_known_year) - to_delete[param] = list( - [dict(vo, **{"value": None}) for vo in gt] - ) - to_adjust[param] = select_lt( - self._init_values[param], - True, - {"year": last_known_year + 1} - ) + to_delete[param] = [ + dict(vo, **{"value": None}) for vo in gt + ] needs_reset.append(param) super().adjust(to_delete, **kwargs) - super().adjust(to_adjust, **kwargs) self.extend(label_to_extend="year") - # 2. handle -indexed parameters + # 2. Handle -indexed parameters. self.label_to_extend = None index_affected = set([]) for param, values in params.items(): @@ -221,21 +205,21 @@ def adjust(self, params_or_path, **kwargs): {"errors": {base_param: msg}}, labels=None ) - index_affected = index_affected | {param, base_param} - to_index = {} + index_affected |= {param, base_param} + indexed_changes = {} if isinstance(values, bool): - to_index[min_year] = values + indexed_changes[min_year] = values elif isinstance(values, list): for vo in values: - to_index[vo.get("year", min_year)] = vo["value"] + indexed_changes[vo.get("year", min_year)] = vo["value"] else: raise Exception( "Index adjustment parameter must be a boolean or list." ) - # 2.a adjust values less than first year in which index status - # was changed + # 2.a Adjust values less than first year in which index status + # was changed. if base_param in params: - min_index_change_year = min(to_index.keys()) + min_index_change_year = min(indexed_changes.keys()) vos = select_lt( params[base_param], False, @@ -253,12 +237,9 @@ def adjust(self, params_or_path, **kwargs): ) super().adjust( { - base_param: list( - [ - dict(vo, **{"value": None}) - for vo in gt - ] - ) + base_param: [ + dict(vo, **{"value": None}) for vo in gt + ] } ) super().adjust({base_param: vos}, **kwargs) @@ -270,23 +251,20 @@ def adjust(self, params_or_path, **kwargs): ), ) - for year in sorted(to_index): - indexed_val = to_index[year] - # get and delete all default values after year where + for year in sorted(indexed_changes): + indexed_val = indexed_changes[year] + # Get and delete all default values after year where # indexed status changed. gte = self.select_gt(base_param, True, year=year) super().adjust( { - base_param: list( - [ - dict(vo, **{"value": None}) - for vo in gte - ] - ) + base_param: [ + dict(vo, **{"value": None}) for vo in gte + ] } ) - # 2.b extend values for this parameter to the year where + # 2.b Extend values for this parameter to the year where # the indexed status changes. if year > min_year: self.extend( @@ -297,10 +275,10 @@ def adjust(self, params_or_path, **kwargs): ), ) - # 2.c set indexed status. + # 2.c Set indexed status. self._data[base_param]["indexed"] = indexed_val - # 2.d adjust with values greater than or equal to current + # 2.d Adjust with values greater than or equal to current # year in params if base_param in params: vos = pt.select_gt( @@ -308,15 +286,15 @@ def adjust(self, params_or_path, **kwargs): ) super().adjust({base_param: vos}, **kwargs) - # 2.e extend values throuh remaining years. + # 2.e Extend values through remaining years. self.extend(params=[base_param], label_to_extend="year") needs_reset.append(base_param) - # re-instate actions. + # Re-instate ops. self.label_to_extend = label_to_extend self.array_first = array_first - # filter out "-indexed" params + # Filter out "-indexed" params. nonindexed_params = { param: val for param, val in params.items() if param not in index_affected @@ -402,7 +380,7 @@ def initialize(self, start_year, num_years, last_known_year=None, initial_state = None super().__init__(initial_state=initial_state) self._init_values = { - param: data["value"] + param: copy.deepcopy(data["value"]) for param, data in self.read_params(self.defaults).items() if param != "schema" } diff --git a/taxcalc/policy.py b/taxcalc/policy.py index f9268a132..55fb6e59c 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -148,7 +148,4 @@ def set_rates(self): ) ] - self._wage_growth_rates = [ - rate - for rate in self._gfactors.wage_growth_rates(2013, 2029) - ] + self._wage_growth_rates = self._gfactors.wage_growth_rates(2013, 2029) From 86880ab361fb0db8a98792ce6d0873a52d72e4f2 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Fri, 10 Apr 2020 19:45:58 -0400 Subject: [PATCH 30/64] Update parameter docs --- docs/make_uguide.py | 73 ++++++++++++++++++------------- docs/uguide.html | 104 ++++++++++++++++++++++---------------------- 2 files changed, 95 insertions(+), 82 deletions(-) diff --git a/docs/make_uguide.py b/docs/make_uguide.py index da69b7360..e73b9fe0d 100644 --- a/docs/make_uguide.py +++ b/docs/make_uguide.py @@ -77,9 +77,9 @@ def policy_param_text(pname, param): 'Not in Tax-Brain webapp') txt += '
tc Name: {}'.format(pname) if sec1: - txt += '
TB Name: {}'.format(param['long_name']) + txt += '
TB Name: {}'.format(param['title']) else: - txt += '
Long Name: {}'.format(param['long_name']) + txt += '
Long Name: {}'.format(param['title']) txt += '
Description: {}'.format(param['description']) if param.get('notes', ''): txt += '
Notes: {}'.format(param['notes']) @@ -104,27 +104,28 @@ def policy_param_text(pname, param): txt += 'True' else: txt += 'False' - txt += '
Value Type: {}'.format(param['value_type']) + txt += '
Value Type: {}'.format(param['type']) txt += '
Known Values:' - if param.get('vi_vals', []): - cols = ', '.join(param['vi_vals']) - txt += '
   for: [{}]'.format(cols) - for cyr, val in zip(param['value_yrs'], param['value']): - final_cyr = cyr - final_val = val - txt += '
{}: {}'.format(cyr, val) - if not param['indexed']: - fcyr = int(final_cyr) - if fcyr < Policy.LAST_KNOWN_YEAR: - # extrapolate final_val thru Policy.LAST_KNOWN_YEAR if not indexed - for cyr in range(fcyr + 1, Policy.LAST_KNOWN_YEAR + 1): - txt += '
{}: {}'.format(cyr, final_val) + for vo in param["value"]: + labels = " ".join( + f"{label}={value}" for label, value in vo.items() + if label not in ("year", "value") + ) + txt += f"
{vo['year']}: {vo['value']} {labels}" + # if not param['indexed']: + # fcyr = int(final_cyr) + # if fcyr < Policy.LAST_KNOWN_YEAR: + # # extrapolate final_val thru Policy.LAST_KNOWN_YEAR if not indexed + # for cyr in range(fcyr + 1, Policy.LAST_KNOWN_YEAR + 1): + # txt += '
{}: {}'.format(cyr, final_val) txt += '
Valid Range:' - minval = param['valid_values']['min'] - maxval = param['valid_values']['max'] - txt += ' min = {} and max = {}'.format(minval, maxval) - invalid_action = param.get('invalid_action', 'stop') - txt += '
Out-of-Range Action: {}'.format(invalid_action) + validators = param.get("validators", None) + if validators: + minval = validators['range']['min'] + maxval = validators['range']['max'] + txt += ' min = {} and max = {}'.format(minval, maxval) + invalid_action = validators["range"].get('level', 'error') + txt += '
Out-of-Range Action: {}'.format(invalid_action) txt += '

' return txt @@ -144,6 +145,8 @@ def policy_params(path, text): section = OrderedDict() using_other_params_section = False for pname in params: + if pname == "schema": + continue param = params[pname] sec1_sec2 = '{}{}{}'.format(param['section_1'], concat_str, @@ -161,6 +164,8 @@ def policy_params(path, text): sec2 = split_list[1] ptext = '' for pname in params: + if pname == "schema": + continue param = params[pname] if sec1 == param['section_1'] and sec2 == param['section_2']: ptext += policy_param_text(pname, param) @@ -233,9 +238,9 @@ def assumption_param_text(pname, ptype, param): ptype.capitalize()) txt += '
tc Name: {}'.format(pname) if sec1: - txt += '
TB Name: {}'.format(param['long_name']) + txt += '
TB Name: {}'.format(param['title']) else: - txt += '
Long Name: {}'.format(param['long_name']) + txt += '
Long Name: {}'.format(param['title']) txt += '
Description: {}'.format(param['description']) if param.get('notes', ''): txt += '
Notes: {}'.format(param['notes']) @@ -243,14 +248,20 @@ def assumption_param_text(pname, ptype, param): if param.get('vi_vals', []): cols = ', '.join(param['vi_vals']) txt += '
   for: [{}]'.format(cols) - for cyr, val in zip(param['value_yrs'], param['value']): - txt += '
{}: {}'.format(cyr, val) + for vo in param["value"]: + labels = " ".join( + f"{label}={value}" for label, value in vo.items() + if label not in ("year", "value") + ) + txt += f"
{vo['year']}: {vo['value']} {labels}" txt += '
Valid Range:' - minval = param['valid_values']['min'] - maxval = param['valid_values']['max'] - txt += ' min = {} and max = {}'.format(minval, maxval) - invalid_action = param.get('invalid_action', 'stop') - txt += '
Out-of-Range Action: {}'.format(invalid_action) + validators = param.get("validators", None) + if validators: + minval = validators['range']['min'] + maxval = validators['range']['max'] + txt += ' min = {} and max = {}'.format(minval, maxval) + invalid_action = validators["range"].get('level', 'error') + txt += '
Out-of-Range Action: {}'.format(invalid_action) txt += '

' return txt @@ -267,6 +278,8 @@ def assumption_params(ptype, path, text): # construct parameter text for each param ptext = '' for pname in params: + if pname == "schema": + continue param = params[pname] ptext += assumption_param_text(pname, ptype, param) # integrate parameter text into text diff --git a/docs/uguide.html b/docs/uguide.html index f5ee62ccf..8a9c9ad12 100644 --- a/docs/uguide.html +++ b/docs/uguide.html @@ -867,137 +867,137 @@

3. Policy Parameters

3a. Parameter Indexing

-

Parameter Indexing — Offsets
tc Name: CPI_offset
TB Name: Decimal offset ADDED to unchained CPI to get parameter indexing rate
Description: Values are zero before 2017; reforms that introduce indexing with chained CPI would have values around -0.0025 beginning in the year before the first year policy parameters will have values computed with chained CPI.
Notes: See April 2013 CBO report entitled 'What Would Be the Effect on the Deficit of Using the Chained CPI to Index Benefit Programs and the Tax Code?', which includes this: 'The chained CPI grows more slowly than the traditional CPI does: an average of about 0.25 percentage points more slowly per year over the past decade.'
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: -0.0025
2018: -0.0025
2019: -0.0025
Valid Range: min = -0.005 and max = 0.005
Out-of-Range Action: stop

+

Parameter Indexing — Offsets
tc Name: CPI_offset
TB Name: Decimal offset ADDED to unchained CPI to get parameter indexing rate
Description: Values are zero before 2017; reforms that introduce indexing with chained CPI would have values around -0.0025 beginning in the year before the first year policy parameters will have values computed with chained CPI.
Notes: See April 2013 CBO report entitled 'What Would Be the Effect on the Deficit of Using the Chained CPI to Index Benefit Programs and the Tax Code?', which includes this: 'The chained CPI grows more slowly than the traditional CPI does: an average of about 0.25 percentage points more slowly per year over the past decade.'
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: -0.0025
Valid Range: min = -0.005 and max = 0.005
Out-of-Range Action: error

3b. Payroll Taxes

-

Payroll Taxes — Social Security FICA
tc Name: FICA_ss_trt
TB Name: Social Security payroll tax rate
Description: Social Security FICA rate, including both employer and employee.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.124
2014: 0.124
2015: 0.124
2016: 0.124
2017: 0.124
2018: 0.124
2019: 0.124
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Payroll Taxes — Social Security FICA
tc Name: SS_Earnings_c
TB Name: Maximum taxable earnings (MTE) for Social Security
Description: Individual earnings below this amount are subjected to Social Security (OASDI) payroll tax.
Notes: This parameter is indexed by the rate of growth in average wages, not by the price inflation rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 113700.0
2014: 117000.0
2015: 118500.0
2016: 118500.0
2017: 127200.0
2018: 128400.0
2019: 132900.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Payroll Taxes — Social Security FICA
tc Name: SS_Earnings_thd
TB Name: Additional Taxable Earnings Threshold for Social Security
Description: Individual earnings above this threshold are subjected to Social Security (OASDI) payroll tax, in addition to earnings below the maximum taxable earnings threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 9e+99
2014: 9e+99
2015: 9e+99
2016: 9e+99
2017: 9e+99
2018: 9e+99
2019: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Payroll Taxes — Social Security FICA
tc Name: FICA_ss_trt
TB Name: Social Security payroll tax rate
Description: Social Security FICA rate, including both employer and employee.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.124
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Payroll Taxes — Social Security FICA
tc Name: SS_Earnings_c
TB Name: Maximum taxable earnings (MTE) for Social Security
Description: Individual earnings below this amount are subjected to Social Security (OASDI) payroll tax.
Notes: This parameter is indexed by the rate of growth in average wages, not by the price inflation rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 113700.0
2014: 117000.0
2015: 118500.0
2016: 118500.0
2017: 127200.0
2018: 128400.0
2019: 132900.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Payroll Taxes — Social Security FICA
tc Name: SS_Earnings_thd
TB Name: Additional Taxable Earnings Threshold for Social Security
Description: Individual earnings above this threshold are subjected to Social Security (OASDI) payroll tax, in addition to earnings below the maximum taxable earnings threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Payroll Taxes — Medicare FICA
tc Name: FICA_mc_trt
TB Name: Medicare payroll tax rate
Description: Medicare FICA rate, including both employer and employee.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.029
2014: 0.029
2015: 0.029
2016: 0.029
2017: 0.029
2018: 0.029
2019: 0.029
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Payroll Taxes — Medicare FICA
tc Name: FICA_mc_trt
TB Name: Medicare payroll tax rate
Description: Medicare FICA rate, including both employer and employee.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.029
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Payroll Taxes — Additional Medicare FICA
tc Name: AMEDT_ec
TB Name: Additional Medicare tax earnings exclusion
Description: The Additional Medicare Tax rate, AMEDT_rt, applies to all earnings in excess of this excluded amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
2014: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
2015: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
2016: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
2017: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
2018: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
2019: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Payroll Taxes — Additional Medicare FICA
tc Name: AMEDT_rt
TB Name: Additional Medicare tax rate
Description: This is the rate applied to the portion of Medicare wages, RRTA compensation and self-employment income exceeding the Additional Medicare Tax earning exclusion.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.009
2014: 0.009
2015: 0.009
2016: 0.009
2017: 0.009
2018: 0.009
2019: 0.009
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Payroll Taxes — Additional Medicare FICA
tc Name: AMEDT_ec
TB Name: Additional Medicare tax earnings exclusion
Description: The Additional Medicare Tax rate, AMEDT_rt, applies to all earnings in excess of this excluded amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 200000.0 MARS=single
2013: 250000.0 MARS=mjoint
2013: 125000.0 MARS=mseparate
2013: 200000.0 MARS=headhh
2013: 200000.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Payroll Taxes — Additional Medicare FICA
tc Name: AMEDT_rt
TB Name: Additional Medicare tax rate
Description: This is the rate applied to the portion of Medicare wages, RRTA compensation and self-employment income exceeding the Additional Medicare Tax earning exclusion.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.009
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

3c. Social Security Taxability

-

Social Security Taxability — Threshold For Social Security Benefit Taxability 1
tc Name: SS_thd50
TB Name: Threshold for Social Security benefit taxability 1
Description: The first threshold for Social Security benefit taxability: if taxpayers have provisional income greater than this threshold, up to 50% of their Social Security benefit will be subject to tax under current law.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
2014: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
2015: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
2016: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
2017: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
2018: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
2019: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
Valid Range: min = 0 and max = SS_thd85
Out-of-Range Action: stop

+

Social Security Taxability — Threshold For Social Security Benefit Taxability 1
tc Name: SS_thd50
TB Name: Threshold for Social Security benefit taxability 1
Description: The first threshold for Social Security benefit taxability: if taxpayers have provisional income greater than this threshold, up to 50% of their Social Security benefit will be subject to tax under current law.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 25000.0 MARS=single
2013: 32000.0 MARS=mjoint
2013: 25000.0 MARS=mseparate
2013: 25000.0 MARS=headhh
2013: 25000.0 MARS=widow
Valid Range: min = 0 and max = SS_thd85
Out-of-Range Action: error

-

Social Security Taxability — Threshold For Social Security Benefit Taxability 2
tc Name: SS_thd85
TB Name: Threshold for Social Security benefit taxability 2
Description: The second threshold for Social Security taxability: if taxpayers have provisional income greater than this threshold, up to 85% of their Social Security benefit will be subject to tax under current law.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
2014: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
2015: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
2016: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
2017: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
2018: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
2019: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
Valid Range: min = SS_thd50 and max = 9e+99
Out-of-Range Action: stop

+

Social Security Taxability — Threshold For Social Security Benefit Taxability 2
tc Name: SS_thd85
TB Name: Threshold for Social Security benefit taxability 2
Description: The second threshold for Social Security taxability: if taxpayers have provisional income greater than this threshold, up to 85% of their Social Security benefit will be subject to tax under current law.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 34000.0 MARS=single
2013: 44000.0 MARS=mjoint
2013: 34000.0 MARS=mseparate
2013: 34000.0 MARS=headhh
2013: 34000.0 MARS=widow
Valid Range: min = SS_thd50 and max = 9e+99
Out-of-Range Action: error

3d. Above The Line Deductions

-

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_StudentLoan_hc
TB Name: Adjustment for student loan interest haircut
Description: This decimal fraction can be applied to limit the student loan interest adjustment allowed.
Notes: The final adjustment amount will be (1-Haircut)*StudentLoanInterest.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_SelfEmploymentTax_hc
TB Name: Adjustment for self-employment tax haircut
Description: This decimal fraction, if greater than zero, reduces the employer equivalent portion of self-employment adjustment.
Notes: The final adjustment amount would be (1-Haircut)*SelfEmploymentTaxAdjustment.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_SelfEmp_HealthIns_hc
TB Name: Adjustment for self employed health insurance haircut
Description: This decimal fraction, if greater than zero, reduces the health insurance adjustment for self-employed taxpayers.
Notes: The final adjustment amount would be (1-Haircut)*SelfEmployedHealthInsuranceAdjustment.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_KEOGH_SEP_hc
TB Name: Adjustment for contributions to either KEOGH or SEP plan haircut
Description: Under current law, contributions to Keogh or SEP plans can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.
Notes: The final adjustment amount is (1-Haircut)*KEOGH_SEP_Contributinos.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_EarlyWithdraw_hc
TB Name: Adjustment for early withdrawal penalty haircut
Description: Under current law, early withdraw penalty can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.
Notes: The final adjustment amount is (1-Haircut)*EarlyWithdrawPenalty.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_AlimonyPaid_hc
TB Name: Adjustment for alimony-paid haircut
Description: Under pre-TCJA law, the full amount of alimony paid is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.
Notes: The final adjustment amount would be (1-Haircut)*AlimonyPaid.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_AlimonyReceived_hc
TB Name: Adjustment for alimony-received haircut
Description: Under pre-TCJA law, none of alimony received is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.
Notes: The final adjustment amount would be (1-Haircut)*AlimonyReceived.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 0.0
2020: 0.0
2021: 0.0
2022: 0.0
2023: 0.0
2024: 0.0
2025: 0.0
2026: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_EducatorExpenses_hc
TB Name: Deduction for educator expenses haircut
Description: If greater than zero, this decimal fraction reduces the portion of educator expenses that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*EducatorExpenses.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_HSADeduction_hc
TB Name: Deduction for HSA deduction haircut
Description: If greater than zero, this decimal fraction reduces the portion of a taxpayer's HSA deduction that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*HSA_Deduction.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_IRAContributions_hc
TB Name: Deduction for IRA contributions haircut
Description: If greater than zero, this decimal fraction reduces the portion of IRA contributions that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*IRA_Contribution.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_DomesticProduction_hc
TB Name: Deduction for domestic production activity haircut
Description: If greater than zero, this decimal fraction reduces the portion of domestic production activity that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*DomesticProductionActivity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_Tuition_hc
TB Name: Deduction for tuition and fees haircut
Description: If greater than zero, this decimal fraction reduces the portion of tuition and fees that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*TuitionFees.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_StudentLoan_hc
TB Name: Adjustment for student loan interest haircut
Description: This decimal fraction can be applied to limit the student loan interest adjustment allowed.
Notes: The final adjustment amount will be (1-Haircut)*StudentLoanInterest.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_SelfEmploymentTax_hc
TB Name: Adjustment for self-employment tax haircut
Description: This decimal fraction, if greater than zero, reduces the employer equivalent portion of self-employment adjustment.
Notes: The final adjustment amount would be (1-Haircut)*SelfEmploymentTaxAdjustment.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_SelfEmp_HealthIns_hc
TB Name: Adjustment for self employed health insurance haircut
Description: This decimal fraction, if greater than zero, reduces the health insurance adjustment for self-employed taxpayers.
Notes: The final adjustment amount would be (1-Haircut)*SelfEmployedHealthInsuranceAdjustment.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_KEOGH_SEP_hc
TB Name: Adjustment for contributions to either KEOGH or SEP plan haircut
Description: Under current law, contributions to Keogh or SEP plans can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.
Notes: The final adjustment amount is (1-Haircut)*KEOGH_SEP_Contributinos.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_EarlyWithdraw_hc
TB Name: Adjustment for early withdrawal penalty haircut
Description: Under current law, early withdraw penalty can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.
Notes: The final adjustment amount is (1-Haircut)*EarlyWithdrawPenalty.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_AlimonyPaid_hc
TB Name: Adjustment for alimony-paid haircut
Description: Under pre-TCJA law, the full amount of alimony paid is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.
Notes: The final adjustment amount would be (1-Haircut)*AlimonyPaid.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_AlimonyReceived_hc
TB Name: Adjustment for alimony-received haircut
Description: Under pre-TCJA law, none of alimony received is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.
Notes: The final adjustment amount would be (1-Haircut)*AlimonyReceived.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 0.0
2020: 0.0
2021: 0.0
2022: 0.0
2023: 0.0
2024: 0.0
2025: 0.0
2026: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_EducatorExpenses_hc
TB Name: Deduction for educator expenses haircut
Description: If greater than zero, this decimal fraction reduces the portion of educator expenses that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*EducatorExpenses.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_HSADeduction_hc
TB Name: Deduction for HSA deduction haircut
Description: If greater than zero, this decimal fraction reduces the portion of a taxpayer's HSA deduction that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*HSA_Deduction.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_IRAContributions_hc
TB Name: Deduction for IRA contributions haircut
Description: If greater than zero, this decimal fraction reduces the portion of IRA contributions that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*IRA_Contribution.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_DomesticProduction_hc
TB Name: Deduction for domestic production activity haircut
Description: If greater than zero, this decimal fraction reduces the portion of domestic production activity that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*DomesticProductionActivity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_Tuition_hc
TB Name: Deduction for tuition and fees haircut
Description: If greater than zero, this decimal fraction reduces the portion of tuition and fees that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*TuitionFees.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Above The Line Deductions — Misc. Exclusions
tc Name: ALD_InvInc_ec_rt
TB Name: Investment income exclusion rate haircut
Description: Decimal fraction of investment income base that can be excluded from AGI.
Notes: The final taxable investment income will be (1-_ALD_InvInc_ec_rt)*investment_income_base. Even though the excluded portion of investment income is not included in AGI, it still is included in investment income used to calculate the Net Investment Income Tax and Earned Income Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Above The Line Deductions — Misc. Exclusions
tc Name: ALD_BusinessLosses_c
TB Name: Maximum amount of business losses deductible
Description: Business losses in excess of this amount may not be deducted from AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [250000.0, 500000.0, 250000.0, 250000.0, 500000.0]
2019: [255000.0, 510000.0, 255000.0, 255000.0, 510000.0]
2020: [259743.0, 519486.0, 259743.0, 259743.0, 519486.0]
2021: [265795.01, 531590.02, 265795.01, 265795.01, 531590.02]
2022: [271881.72, 543763.44, 271881.72, 271881.72, 543763.44]
2023: [278080.62, 556161.24, 278080.62, 278080.62, 556161.24]
2024: [284226.2, 568452.41, 284226.2, 284226.2, 568452.41]
2025: [290223.38, 580446.75, 290223.38, 290223.38, 580446.75]
2026: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Above The Line Deductions — Misc. Exclusions
tc Name: ALD_InvInc_ec_rt
TB Name: Investment income exclusion rate haircut
Description: Decimal fraction of investment income base that can be excluded from AGI.
Notes: The final taxable investment income will be (1-_ALD_InvInc_ec_rt)*investment_income_base. Even though the excluded portion of investment income is not included in AGI, it still is included in investment income used to calculate the Net Investment Income Tax and Earned Income Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Exclusions
tc Name: ALD_BusinessLosses_c
TB Name: Maximum amount of business losses deductible
Description: Business losses in excess of this amount may not be deducted from AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 250000.0 MARS=single
2018: 500000.0 MARS=mjoint
2018: 250000.0 MARS=mseparate
2018: 250000.0 MARS=headhh
2018: 500000.0 MARS=widow
2019: 255000.0 MARS=single
2019: 510000.0 MARS=mjoint
2019: 255000.0 MARS=mseparate
2019: 255000.0 MARS=headhh
2019: 510000.0 MARS=widow
2020: 259743.0 MARS=single
2020: 519486.0 MARS=mjoint
2020: 259743.0 MARS=mseparate
2020: 259743.0 MARS=headhh
2020: 519486.0 MARS=widow
2021: 265795.01 MARS=single
2021: 531590.02 MARS=mjoint
2021: 265795.01 MARS=mseparate
2021: 265795.01 MARS=headhh
2021: 531590.02 MARS=widow
2022: 271881.72 MARS=single
2022: 543763.44 MARS=mjoint
2022: 271881.72 MARS=mseparate
2022: 271881.72 MARS=headhh
2022: 543763.44 MARS=widow
2023: 278080.62 MARS=single
2023: 556161.24 MARS=mjoint
2023: 278080.62 MARS=mseparate
2023: 278080.62 MARS=headhh
2023: 556161.24 MARS=widow
2024: 284226.2 MARS=single
2024: 568452.41 MARS=mjoint
2024: 284226.2 MARS=mseparate
2024: 284226.2 MARS=headhh
2024: 568452.41 MARS=widow
2025: 290223.38 MARS=single
2025: 580446.75 MARS=mjoint
2025: 290223.38 MARS=mseparate
2025: 290223.38 MARS=headhh
2025: 580446.75 MARS=widow
2026: 9e+99 MARS=single
2026: 9e+99 MARS=mjoint
2026: 9e+99 MARS=mseparate
2026: 9e+99 MARS=headhh
2026: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_hc
TB Name: Deduction for childcare costs haircut
Description: This decimal fraction, if greater than zero, reduces the portion of childcare costs that can be deducted from AGI.
Notes: The final adjustment would be (1-Haircut)*AverageChildcareCosts.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_Child_c
TB Name: National average childcare costs: ceiling for available childcare deduction.
Description: The weighted average of childcare costs in the US. 7165 is the weighted average from the 'Child Care in America: 2016 State Fact Sheets'.
Notes: This is a weighted average of childcare costs in each state
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_Elder_c
TB Name: Ceiling for elderly care deduction proposed in Trump's tax plan
Description: A taxpayer can take an above the line deduction up to this amount if they have an elderly dependent. The Trump 2016 campaign proposal was for $5000.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_thd
TB Name: Maximum level of income to qualify for the dependent care deduction
Description: A taxpayer can only claim the dependent care deduction if their total income is below this level. The Trump 2016 campaign proposal was for 250000 single, 500000 joint, 250000 separate, 500000 head of household].
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_hc
TB Name: Deduction for childcare costs haircut
Description: This decimal fraction, if greater than zero, reduces the portion of childcare costs that can be deducted from AGI.
Notes: The final adjustment would be (1-Haircut)*AverageChildcareCosts.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_Child_c
TB Name: National average childcare costs: ceiling for available childcare deduction.
Description: The weighted average of childcare costs in the US. 7165 is the weighted average from the 'Child Care in America: 2016 State Fact Sheets'.
Notes: This is a weighted average of childcare costs in each state
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_Elder_c
TB Name: Ceiling for elderly care deduction proposed in Trump's tax plan
Description: A taxpayer can take an above the line deduction up to this amount if they have an elderly dependent. The Trump 2016 campaign proposal was for $5000.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_thd
TB Name: Maximum level of income to qualify for the dependent care deduction
Description: A taxpayer can only claim the dependent care deduction if their total income is below this level. The Trump 2016 campaign proposal was for 250000 single, 500000 joint, 250000 separate, 500000 head of household].
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

3e. Personal Exemptions

-

Personal Exemptions — Personal And Dependent Exemption Amount
tc Name: II_em
TB Name: Personal and dependent exemption amount
Description: Subtracted from AGI in the calculation of taxable income, per taxpayer and dependent.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 3900.0
2014: 3950.0
2015: 4000.0
2016: 4050.0
2017: 4050.0
2018: 0.0
2019: 0.0
2020: 0.0
2021: 0.0
2022: 0.0
2023: 0.0
2024: 0.0
2025: 0.0
2026: 4901.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Personal Exemptions — Personal And Dependent Exemption Amount
tc Name: II_em
TB Name: Personal and dependent exemption amount
Description: Subtracted from AGI in the calculation of taxable income, per taxpayer and dependent.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 3900.0
2014: 3950.0
2015: 4000.0
2016: 4050.0
2017: 4050.0
2018: 0.0
2019: 0.0
2020: 0.0
2021: 0.0
2022: 0.0
2023: 0.0
2024: 0.0
2025: 0.0
2026: 4901.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Personal Exemptions — Personal Exemption Phaseout Rate
tc Name: II_prt
TB Name: Personal exemption phaseout rate
Description: Personal exemption amount will decrease by this rate for each dollar of AGI exceeding exemption phaseout start.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.02
2014: 0.02
2015: 0.02
2016: 0.02
2017: 0.02
2018: 0.02
2019: 0.02
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Personal Exemptions — Personal Exemption Phaseout Rate
tc Name: II_prt
TB Name: Personal exemption phaseout rate
Description: Personal exemption amount will decrease by this rate for each dollar of AGI exceeding exemption phaseout start.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.02
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Personal Exemptions — Repeal for Dependents Under Age 18
tc Name: II_no_em_nu18
TB Name: Repeal personal exemptions for dependents under age 18
Description: Total personal exemptions will be decreased by the number of dependents under the age of 18.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

+

Personal Exemptions — Repeal for Dependents Under Age 18
tc Name: II_no_em_nu18
TB Name: Repeal personal exemptions for dependents under age 18
Description: Total personal exemptions will be decreased by the number of dependents under the age of 18.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

3f. Standard Deduction

-

Standard Deduction — Standard Deduction Amount
tc Name: STD
TB Name: Standard deduction amount
Description: Amount filing unit can use as a standard deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [6100.0, 12200.0, 6100.0, 8950.0, 12200.0]
2014: [6200.0, 12400.0, 6200.0, 9100.0, 12400.0]
2015: [6300.0, 12600.0, 6300.0, 9250.0, 12600.0]
2016: [6300.0, 12600.0, 6300.0, 9300.0, 12600.0]
2017: [6350.0, 12700.0, 6350.0, 9350.0, 12700.0]
2018: [12000.0, 24000.0, 12000.0, 18000.0, 24000.0]
2019: [12200.0, 24400.0, 12200.0, 18350.0, 24400.0]
2020: [12426.92, 24853.84, 12426.92, 18691.31, 24853.84]
2021: [12716.47, 25432.93, 12716.47, 19126.82, 25432.93]
2022: [13007.67, 26015.35, 13007.67, 19564.82, 26015.35]
2023: [13304.25, 26608.5, 13304.25, 20010.9, 26608.5]
2024: [13598.27, 27196.55, 13598.27, 20453.14, 27196.55]
2025: [13885.2, 27770.39, 13885.2, 20884.7, 27770.39]
2026: [7685.0, 15369.0, 7685.0, 11315.0, 15369.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Standard Deduction — Standard Deduction Amount
tc Name: STD
TB Name: Standard deduction amount
Description: Amount filing unit can use as a standard deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 6100.0 MARS=single
2013: 12200.0 MARS=mjoint
2013: 6100.0 MARS=mseparate
2013: 8950.0 MARS=headhh
2013: 12200.0 MARS=widow
2014: 6200.0 MARS=single
2014: 12400.0 MARS=mjoint
2014: 6200.0 MARS=mseparate
2014: 9100.0 MARS=headhh
2014: 12400.0 MARS=widow
2015: 6300.0 MARS=single
2015: 12600.0 MARS=mjoint
2015: 6300.0 MARS=mseparate
2015: 9250.0 MARS=headhh
2015: 12600.0 MARS=widow
2016: 6300.0 MARS=single
2016: 12600.0 MARS=mjoint
2016: 6300.0 MARS=mseparate
2016: 9300.0 MARS=headhh
2016: 12600.0 MARS=widow
2017: 6350.0 MARS=single
2017: 12700.0 MARS=mjoint
2017: 6350.0 MARS=mseparate
2017: 9350.0 MARS=headhh
2017: 12700.0 MARS=widow
2018: 12000.0 MARS=single
2018: 24000.0 MARS=mjoint
2018: 12000.0 MARS=mseparate
2018: 18000.0 MARS=headhh
2018: 24000.0 MARS=widow
2019: 12200.0 MARS=single
2019: 24400.0 MARS=mjoint
2019: 12200.0 MARS=mseparate
2019: 18350.0 MARS=headhh
2019: 24400.0 MARS=widow
2020: 12426.92 MARS=single
2020: 24853.84 MARS=mjoint
2020: 12426.92 MARS=mseparate
2020: 18691.31 MARS=headhh
2020: 24853.84 MARS=widow
2021: 12716.47 MARS=single
2021: 25432.93 MARS=mjoint
2021: 12716.47 MARS=mseparate
2021: 19126.82 MARS=headhh
2021: 25432.93 MARS=widow
2022: 13007.67 MARS=single
2022: 26015.35 MARS=mjoint
2022: 13007.67 MARS=mseparate
2022: 19564.82 MARS=headhh
2022: 26015.35 MARS=widow
2023: 13304.25 MARS=single
2023: 26608.5 MARS=mjoint
2023: 13304.25 MARS=mseparate
2023: 20010.9 MARS=headhh
2023: 26608.5 MARS=widow
2024: 13598.27 MARS=single
2024: 27196.55 MARS=mjoint
2024: 13598.27 MARS=mseparate
2024: 20453.14 MARS=headhh
2024: 27196.55 MARS=widow
2025: 13885.2 MARS=single
2025: 27770.39 MARS=mjoint
2025: 13885.2 MARS=mseparate
2025: 20884.7 MARS=headhh
2025: 27770.39 MARS=widow
2026: 7685.0 MARS=single
2026: 15369.0 MARS=mjoint
2026: 7685.0 MARS=mseparate
2026: 11315.0 MARS=headhh
2026: 15369.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Standard Deduction — Additional Standard Deduction For Blind And Aged
tc Name: STD_Aged
TB Name: Additional standard deduction for blind and aged
Description: To get the standard deduction for aged or blind individuals, taxpayers need to add this value to regular standard deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [1500.0, 1200.0, 1200.0, 1500.0, 1500.0]
2014: [1550.0, 1200.0, 1200.0, 1550.0, 1550.0]
2015: [1550.0, 1250.0, 1250.0, 1550.0, 1550.0]
2016: [1550.0, 1250.0, 1250.0, 1550.0, 1550.0]
2017: [1550.0, 1250.0, 1250.0, 1550.0, 1550.0]
2018: [1600.0, 1300.0, 1300.0, 1600.0, 1300.0]
2019: [1650.0, 1300.0, 1300.0, 1650.0, 1300.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Standard Deduction — Additional Standard Deduction For Blind And Aged
tc Name: STD_Aged
TB Name: Additional standard deduction for blind and aged
Description: To get the standard deduction for aged or blind individuals, taxpayers need to add this value to regular standard deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 1500.0 MARS=single
2013: 1200.0 MARS=mjoint
2013: 1200.0 MARS=mseparate
2013: 1500.0 MARS=headhh
2013: 1500.0 MARS=widow
2014: 1550.0 MARS=single
2014: 1200.0 MARS=mjoint
2014: 1200.0 MARS=mseparate
2014: 1550.0 MARS=headhh
2014: 1550.0 MARS=widow
2015: 1550.0 MARS=single
2015: 1250.0 MARS=mjoint
2015: 1250.0 MARS=mseparate
2015: 1550.0 MARS=headhh
2015: 1550.0 MARS=widow
2016: 1550.0 MARS=single
2016: 1250.0 MARS=mjoint
2016: 1250.0 MARS=mseparate
2016: 1550.0 MARS=headhh
2016: 1550.0 MARS=widow
2017: 1550.0 MARS=single
2017: 1250.0 MARS=mjoint
2017: 1250.0 MARS=mseparate
2017: 1550.0 MARS=headhh
2017: 1550.0 MARS=widow
2018: 1600.0 MARS=single
2018: 1300.0 MARS=mjoint
2018: 1300.0 MARS=mseparate
2018: 1600.0 MARS=headhh
2018: 1300.0 MARS=widow
2019: 1650.0 MARS=single
2019: 1300.0 MARS=mjoint
2019: 1300.0 MARS=mseparate
2019: 1650.0 MARS=headhh
2019: 1300.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

3g. Nonrefundable Credits

-

Nonrefundable Credits — Child And Dependent Care
tc Name: CDCC_c
TB Name: Maximum child & dependent care credit per dependent
Description: The maximum amount of credit allowed for each qualifying dependent.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 3000.0
2014: 3000.0
2015: 3000.0
2016: 3000.0
2017: 3000.0
2018: 3000.0
2019: 3000.0
Valid Range: min = 0 and max = 3000
Out-of-Range Action: stop

Nonrefundable Credits — Child And Dependent Care
tc Name: CDCC_ps
TB Name: Child & dependent care credit phaseout start
Description: For taxpayers with AGI over this amount, the credit is reduced by one percentage point each $2000 of AGI over this amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 15000.0
2014: 15000.0
2015: 15000.0
2016: 15000.0
2017: 15000.0
2018: 15000.0
2019: 15000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Nonrefundable Credits — Child And Dependent Care
tc Name: CDCC_crt
TB Name: Child & dependent care credit phaseout percentage rate ceiling
Description: The maximum percentage rate in the AGI phaseout; this percentage rate decreases as AGI rises above the CDCC_ps level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 35.0
2014: 35.0
2015: 35.0
2016: 35.0
2017: 35.0
2018: 35.0
2019: 35.0
Valid Range: min = 0 and max = 100
Out-of-Range Action: stop

+

Nonrefundable Credits — Child And Dependent Care
tc Name: CDCC_c
TB Name: Maximum child & dependent care credit per dependent
Description: The maximum amount of credit allowed for each qualifying dependent.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 3000.0
Valid Range: min = 0 and max = 3000
Out-of-Range Action: error

Nonrefundable Credits — Child And Dependent Care
tc Name: CDCC_ps
TB Name: Child & dependent care credit phaseout start
Description: For taxpayers with AGI over this amount, the credit is reduced by one percentage point each $2000 of AGI over this amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 15000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Nonrefundable Credits — Child And Dependent Care
tc Name: CDCC_crt
TB Name: Child & dependent care credit phaseout percentage rate ceiling
Description: The maximum percentage rate in the AGI phaseout; this percentage rate decreases as AGI rises above the CDCC_ps level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 35.0
Valid Range: min = 0 and max = 100
Out-of-Range Action: error

-

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_RetirementSavings_hc
TB Name: Credit for retirement savings haircut
Description: If greater than zero, this decimal fraction reduces the portion of the retirement savings credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*RetirementSavingsCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_ForeignTax_hc
TB Name: Credit for foreign tax haircut
Description: If greater than zero, this decimal fraction reduces the portion of the foreign tax credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*ForeignTaxCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_ResidentialEnergy_hc
TB Name: Credit for residential energy haircut
Description: If greater than zero, this decimal fraction reduces the portion of the residential energy credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*ResidentialEnergyCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_GeneralBusiness_hc
TB Name: Credit for general business haircut
Description: If greater than zero, this decimal fraction reduces the portion of the general business credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*GeneralBusinessCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_MinimumTax_hc
TB Name: Credit for previous year minimum tax credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of the previous year minimum tax credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*PreviousYearMinimumTaxCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_AmOppRefundable_hc
TB Name: Refundable portion of the American Opportunity Credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of the refundable American Opportunity credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*RefundablePortionOfAmericanOpportunityCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_AmOppNonRefundable_hc
TB Name: Nonrefundable portion of the American Opportunity Credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of the nonrefundable American Opportunity credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*NonRefundablePortionOfAmericanOpportunityCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_SchR_hc
TB Name: Schedule R Credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of Schedule R credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*ScheduleRCredit
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_OtherCredits_hc
TB Name: Other Credits haircut
Description: If greater than zero, this decimal fraction reduces the portion of other credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*OtherCredits.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_Education_hc
TB Name: Education Credits haircut
Description: If greater than zero, this decimal fraction reduces the portion of education credits that can be claimed.
Notes: Credit claimed will be (1-Haircut)*EducationCredits.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_RetirementSavings_hc
TB Name: Credit for retirement savings haircut
Description: If greater than zero, this decimal fraction reduces the portion of the retirement savings credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*RetirementSavingsCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_ForeignTax_hc
TB Name: Credit for foreign tax haircut
Description: If greater than zero, this decimal fraction reduces the portion of the foreign tax credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*ForeignTaxCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_ResidentialEnergy_hc
TB Name: Credit for residential energy haircut
Description: If greater than zero, this decimal fraction reduces the portion of the residential energy credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*ResidentialEnergyCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_GeneralBusiness_hc
TB Name: Credit for general business haircut
Description: If greater than zero, this decimal fraction reduces the portion of the general business credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*GeneralBusinessCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_MinimumTax_hc
TB Name: Credit for previous year minimum tax credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of the previous year minimum tax credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*PreviousYearMinimumTaxCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_AmOppRefundable_hc
TB Name: Refundable portion of the American Opportunity Credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of the refundable American Opportunity credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*RefundablePortionOfAmericanOpportunityCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_AmOppNonRefundable_hc
TB Name: Nonrefundable portion of the American Opportunity Credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of the nonrefundable American Opportunity credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*NonRefundablePortionOfAmericanOpportunityCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_SchR_hc
TB Name: Schedule R Credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of Schedule R credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*ScheduleRCredit
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_OtherCredits_hc
TB Name: Other Credits haircut
Description: If greater than zero, this decimal fraction reduces the portion of other credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*OtherCredits.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_Education_hc
TB Name: Education Credits haircut
Description: If greater than zero, this decimal fraction reduces the portion of education credits that can be claimed.
Notes: Credit claimed will be (1-Haircut)*EducationCredits.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Nonrefundable Credits — Personal Nonrefundable Credit
tc Name: II_credit_nr
TB Name: Personal nonrefundable credit maximum amount
Description: This credit amount is not refundable and is phased out based on AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Nonrefundable Credits — Personal Nonrefundable Credit
tc Name: II_credit_nr_ps
TB Name: Personal nonrefundable credit phaseout start
Description: The personal nonrefundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Nonrefundable Credits — Personal Nonrefundable Credit
tc Name: II_credit_nr_prt
TB Name: Personal nonrefundable credit phaseout rate
Description: The personal nonrefundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_nr_ps threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Nonrefundable Credits — Personal Nonrefundable Credit
tc Name: II_credit_nr
TB Name: Personal nonrefundable credit maximum amount
Description: This credit amount is not refundable and is phased out based on AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 0.0 MARS=single
2018: 0.0 MARS=mjoint
2018: 0.0 MARS=mseparate
2018: 0.0 MARS=headhh
2018: 0.0 MARS=widow
2019: 0.0 MARS=single
2019: 0.0 MARS=mjoint
2019: 0.0 MARS=mseparate
2019: 0.0 MARS=headhh
2019: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Nonrefundable Credits — Personal Nonrefundable Credit
tc Name: II_credit_nr_ps
TB Name: Personal nonrefundable credit phaseout start
Description: The personal nonrefundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 0.0 MARS=single
2018: 0.0 MARS=mjoint
2018: 0.0 MARS=mseparate
2018: 0.0 MARS=headhh
2018: 0.0 MARS=widow
2019: 0.0 MARS=single
2019: 0.0 MARS=mjoint
2019: 0.0 MARS=mseparate
2019: 0.0 MARS=headhh
2019: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Nonrefundable Credits — Personal Nonrefundable Credit
tc Name: II_credit_nr_prt
TB Name: Personal nonrefundable credit phaseout rate
Description: The personal nonrefundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_nr_ps threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

3h. Child/Dependent Credits

-

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_c
TB Name: Maximum nonrefundable child tax credit per child
Description: The maximum nonrefundable credit allowed for each child.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 1000.0
2014: 1000.0
2015: 1000.0
2016: 1000.0
2017: 1000.0
2018: 2000.0
2019: 2000.0
2020: 2000.0
2021: 2000.0
2022: 2000.0
2023: 2000.0
2024: 2000.0
2025: 2000.0
2026: 1000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_c_under5_bonus
TB Name: Bonus child tax credit maximum for qualifying children under five
Description: The maximum amount of child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_ps
TB Name: Child tax credit phaseout MAGI start
Description: Child tax credit begins to decrease when MAGI is above this level; read descriptions of the dependent credit amounts for how they phase out when MAGI is above this level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]
2014: [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]
2015: [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]
2016: [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]
2017: [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]
2018: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2019: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2020: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2021: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2022: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2023: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2024: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2025: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2026: [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_prt
TB Name: Child and dependent tax credit phaseout rate
Description: The amount of the credit starts to decrease at this rate if MAGI is higher than child tax credit phaseout start.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.05
2014: 0.05
2015: 0.05
2016: 0.05
2017: 0.05
2018: 0.05
2019: 0.05
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_c
TB Name: Maximum nonrefundable child tax credit per child
Description: The maximum nonrefundable credit allowed for each child.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1000.0
2014: 1000.0
2015: 1000.0
2016: 1000.0
2017: 1000.0
2018: 2000.0
2019: 2000.0
2020: 2000.0
2021: 2000.0
2022: 2000.0
2023: 2000.0
2024: 2000.0
2025: 2000.0
2026: 1000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_c_under5_bonus
TB Name: Bonus child tax credit maximum for qualifying children under five
Description: The maximum amount of child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_ps
TB Name: Child tax credit phaseout MAGI start
Description: Child tax credit begins to decrease when MAGI is above this level; read descriptions of the dependent credit amounts for how they phase out when MAGI is above this level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 75000.0 MARS=single
2013: 110000.0 MARS=mjoint
2013: 55000.0 MARS=mseparate
2013: 75000.0 MARS=headhh
2013: 75000.0 MARS=widow
2014: 75000.0 MARS=single
2014: 110000.0 MARS=mjoint
2014: 55000.0 MARS=mseparate
2014: 75000.0 MARS=headhh
2014: 75000.0 MARS=widow
2015: 75000.0 MARS=single
2015: 110000.0 MARS=mjoint
2015: 55000.0 MARS=mseparate
2015: 75000.0 MARS=headhh
2015: 75000.0 MARS=widow
2016: 75000.0 MARS=single
2016: 110000.0 MARS=mjoint
2016: 55000.0 MARS=mseparate
2016: 75000.0 MARS=headhh
2016: 75000.0 MARS=widow
2017: 75000.0 MARS=single
2017: 110000.0 MARS=mjoint
2017: 55000.0 MARS=mseparate
2017: 75000.0 MARS=headhh
2017: 75000.0 MARS=widow
2018: 200000.0 MARS=single
2018: 400000.0 MARS=mjoint
2018: 200000.0 MARS=mseparate
2018: 200000.0 MARS=headhh
2018: 400000.0 MARS=widow
2019: 200000.0 MARS=single
2019: 400000.0 MARS=mjoint
2019: 200000.0 MARS=mseparate
2019: 200000.0 MARS=headhh
2019: 400000.0 MARS=widow
2020: 200000.0 MARS=single
2020: 400000.0 MARS=mjoint
2020: 200000.0 MARS=mseparate
2020: 200000.0 MARS=headhh
2020: 400000.0 MARS=widow
2021: 200000.0 MARS=single
2021: 400000.0 MARS=mjoint
2021: 200000.0 MARS=mseparate
2021: 200000.0 MARS=headhh
2021: 400000.0 MARS=widow
2022: 200000.0 MARS=single
2022: 400000.0 MARS=mjoint
2022: 200000.0 MARS=mseparate
2022: 200000.0 MARS=headhh
2022: 400000.0 MARS=widow
2023: 200000.0 MARS=single
2023: 400000.0 MARS=mjoint
2023: 200000.0 MARS=mseparate
2023: 200000.0 MARS=headhh
2023: 400000.0 MARS=widow
2024: 200000.0 MARS=single
2024: 400000.0 MARS=mjoint
2024: 200000.0 MARS=mseparate
2024: 200000.0 MARS=headhh
2024: 400000.0 MARS=widow
2025: 200000.0 MARS=single
2025: 400000.0 MARS=mjoint
2025: 200000.0 MARS=mseparate
2025: 200000.0 MARS=headhh
2025: 400000.0 MARS=widow
2026: 75000.0 MARS=single
2026: 110000.0 MARS=mjoint
2026: 55000.0 MARS=mseparate
2026: 75000.0 MARS=headhh
2026: 75000.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_prt
TB Name: Child and dependent tax credit phaseout rate
Description: The amount of the credit starts to decrease at this rate if MAGI is higher than child tax credit phaseout start.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.05
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_c
TB Name: Maximum refundable additional child tax credit
Description: This refundable credit is applied to child dependents and phases out exactly like the CTC amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 1000.0
2014: 1000.0
2015: 1000.0
2016: 1000.0
2017: 1000.0
2018: 1400.0
2019: 1400.0
2020: 1400.0
2021: 1400.0
2022: 1500.0
2023: 1500.0
2024: 1500.0
2025: 1600.0
2026: 1000.0
Valid Range: min = 0 and max = CTC_c
Out-of-Range Action: stop

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_rt
TB Name: Additional Child Tax Credit rate
Description: This is the fraction of earnings used in calculating the ACTC, which is a partially refundable credit that supplements the CTC for some taxpayers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.15
2019: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_rt_bonus_under5family
TB Name: Bonus additional child tax credit rate for families with qualifying children under 5
Description: For families with qualifying children under 5 years old, this bonus rate is added to the fraction of earnings (additional child tax credit rate) used in calculating the ACTC.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_Income_thd
TB Name: Additional Child Tax Credit income threshold
Description: The portion of earned income below this threshold does not count as base for the Additional Child Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 3000.0
2014: 3000.0
2015: 3000.0
2016: 3000.0
2017: 3000.0
2018: 2500.0
2019: 2500.0
2020: 2500.0
2021: 2500.0
2022: 2500.0
2023: 2500.0
2024: 2500.0
2025: 2500.0
2026: 3000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_ChildNum
TB Name: Additional Child Tax Credit minimum number of qualified children for different formula
Description: Families with this number of qualified children or more may qualify for a different formula to calculate the Additional Child Tax Credit, which is a partially refundable credit that supplements the Child Tax Credit for some taxpayers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: integer
Known Values:
2013: 3
2014: 3
2015: 3
2016: 3
2017: 3
2018: 3
2019: 3
Valid Range: min = 0 and max = 99
Out-of-Range Action: stop

+

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_c
TB Name: Maximum refundable additional child tax credit
Description: This refundable credit is applied to child dependents and phases out exactly like the CTC amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1000.0
2014: 1000.0
2015: 1000.0
2016: 1000.0
2017: 1000.0
2018: 1400.0
2019: 1400.0
2020: 1400.0
2021: 1400.0
2022: 1500.0
2023: 1500.0
2024: 1500.0
2025: 1600.0
2026: 1000.0
Valid Range: min = 0 and max = CTC_c
Out-of-Range Action: error

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_rt
TB Name: Additional Child Tax Credit rate
Description: This is the fraction of earnings used in calculating the ACTC, which is a partially refundable credit that supplements the CTC for some taxpayers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_rt_bonus_under5family
TB Name: Bonus additional child tax credit rate for families with qualifying children under 5
Description: For families with qualifying children under 5 years old, this bonus rate is added to the fraction of earnings (additional child tax credit rate) used in calculating the ACTC.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_Income_thd
TB Name: Additional Child Tax Credit income threshold
Description: The portion of earned income below this threshold does not count as base for the Additional Child Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 3000.0
2014: 3000.0
2015: 3000.0
2016: 3000.0
2017: 3000.0
2018: 2500.0
2019: 2500.0
2020: 2500.0
2021: 2500.0
2022: 2500.0
2023: 2500.0
2024: 2500.0
2025: 2500.0
2026: 3000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_ChildNum
TB Name: Additional Child Tax Credit minimum number of qualified children for different formula
Description: Families with this number of qualified children or more may qualify for a different formula to calculate the Additional Child Tax Credit, which is a partially refundable credit that supplements the Child Tax Credit for some taxpayers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: int
Known Values:
2013: 3
Valid Range: min = 0 and max = 99
Out-of-Range Action: error

-

Child/Dependent Credits — Other Dependent Tax Credit
tc Name: ODC_c
TB Name: Maximum nonrefundable other-dependent credit
Description: This nonrefundable credit is applied to non-child dependents and phases out along with the CTC amount.
Notes: Became current-law policy with passage of TCJA
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 500.0
2019: 500.0
2020: 500.0
2021: 500.0
2022: 500.0
2023: 500.0
2024: 500.0
2025: 500.0
2026: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Child/Dependent Credits — Other Dependent Tax Credit
tc Name: ODC_c
TB Name: Maximum nonrefundable other-dependent credit
Description: This nonrefundable credit is applied to non-child dependents and phases out along with the CTC amount.
Notes: Became current-law policy with passage of TCJA
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 500.0
2019: 500.0
2020: 500.0
2021: 500.0
2022: 500.0
2023: 500.0
2024: 500.0
2025: 500.0
2026: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

3i. Itemized Deductions

-

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_frt
TB Name: Floor (as a decimal fraction of AGI) for deductible medical expenses.
Description: Taxpayers are eligible to deduct the portion of their medical expenses exceeding this fraction of AGI.
Notes: When using PUF data, lowering this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.075
2018: 0.075
2019: 0.075
Valid Range: min = 0.075 and max = 0.1
Out-of-Range Action: warn

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_frt_add4aged
TB Name: Addon floor (as a decimal fraction of AGI) for deductible medical expenses for elderly filing units.
Description: Elderly taxpayers have this fraction added to the value of the regular floor rate for deductible medical expenses. This fraction was -0.025 from 2013 to 2016, but that was temporary and it changed to zero beginning in 2017.
Notes: When using PUF data, changing this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: -0.025
2014: -0.025
2015: -0.025
2016: -0.025
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = -0.025 and max = 0.0
Out-of-Range Action: warn

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_hc
TB Name: Medical expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of medical expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_c
TB Name: Ceiling on the amount of medical expense deduction allowed (dollars)
Description: The amount of medical expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_frt
TB Name: Floor (as a decimal fraction of AGI) for deductible medical expenses.
Description: Taxpayers are eligible to deduct the portion of their medical expenses exceeding this fraction of AGI.
Notes: When using PUF data, lowering this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.075
2018: 0.075
2019: 0.075
Valid Range: min = 0.075 and max = 0.1
Out-of-Range Action: warn

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_frt_add4aged
TB Name: Addon floor (as a decimal fraction of AGI) for deductible medical expenses for elderly filing units.
Description: Elderly taxpayers have this fraction added to the value of the regular floor rate for deductible medical expenses. This fraction was -0.025 from 2013 to 2016, but that was temporary and it changed to zero beginning in 2017.
Notes: When using PUF data, changing this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: -0.025
2014: -0.025
2015: -0.025
2016: -0.025
2017: 0.0
Valid Range: min = -0.025 and max = 0.0
Out-of-Range Action: warn

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_hc
TB Name: Medical expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of medical expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_c
TB Name: Ceiling on the amount of medical expense deduction allowed (dollars)
Description: The amount of medical expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — State And Local Income And Sales Taxes
tc Name: ID_StateLocalTax_hc
TB Name: State and local income and sales taxes deduction haircut.
Description: This decimal fraction reduces the state and local income and sales tax deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — State And Local Income And Sales Taxes
tc Name: ID_StateLocalTax_crt
TB Name: Ceiling (as a decimal fraction of AGI) for the combination of all state and local income and sales tax deductions.
Description: The total deduction for state and local taxes is capped at this fraction of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 9e+99
2014: 9e+99
2015: 9e+99
2016: 9e+99
2017: 9e+99
2018: 9e+99
2019: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Itemized Deductions — State And Local Income And Sales Taxes
tc Name: ID_StateLocalTax_c
TB Name: Ceiling on the amount of state and local income and sales taxes deduction allowed (dollars)
Description: The amount of state and local income and sales taxes deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Itemized Deductions — State And Local Income And Sales Taxes
tc Name: ID_StateLocalTax_hc
TB Name: State and local income and sales taxes deduction haircut.
Description: This decimal fraction reduces the state and local income and sales tax deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — State And Local Income And Sales Taxes
tc Name: ID_StateLocalTax_crt
TB Name: Ceiling (as a decimal fraction of AGI) for the combination of all state and local income and sales tax deductions.
Description: The total deduction for state and local taxes is capped at this fraction of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — State And Local Income And Sales Taxes
tc Name: ID_StateLocalTax_c
TB Name: Ceiling on the amount of state and local income and sales taxes deduction allowed (dollars)
Description: The amount of state and local income and sales taxes deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — State, Local, And Foreign Real Estate Taxes
tc Name: ID_RealEstate_hc
TB Name: State, local, and foreign real estate taxes deduction haircut.
Description: This decimal fraction reduces real estate taxes paid eligible to deduct in itemized deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — State, Local, And Foreign Real Estate Taxes
tc Name: ID_RealEstate_crt
TB Name: Ceiling (as a decimal fraction of AGI) for the combination of all state, local, and foreign real estate tax deductions.
Description: The total deduction for all real estate taxes is capped at this fraction of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 9e+99
2014: 9e+99
2015: 9e+99
2016: 9e+99
2017: 9e+99
2018: 9e+99
2019: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Itemized Deductions — State, Local, And Foreign Real Estate Taxes
tc Name: ID_RealEstate_c
TB Name: Ceiling on the amount of state, local, and foreign real estate taxes deduction allowed (dollars)
Description: The amount of real estate taxes deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Itemized Deductions — State, Local, And Foreign Real Estate Taxes
tc Name: ID_RealEstate_hc
TB Name: State, local, and foreign real estate taxes deduction haircut.
Description: This decimal fraction reduces real estate taxes paid eligible to deduct in itemized deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — State, Local, And Foreign Real Estate Taxes
tc Name: ID_RealEstate_crt
TB Name: Ceiling (as a decimal fraction of AGI) for the combination of all state, local, and foreign real estate tax deductions.
Description: The total deduction for all real estate taxes is capped at this fraction of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — State, Local, And Foreign Real Estate Taxes
tc Name: ID_RealEstate_c
TB Name: Ceiling on the amount of state, local, and foreign real estate taxes deduction allowed (dollars)
Description: The amount of real estate taxes deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — State And Local Taxes And Real Estate Taxes
tc Name: ID_AllTaxes_hc
TB Name: State and local income, sales, and real estate tax deduction haircut.
Description: This decimal fraction reduces all state and local taxes paid eligible to deduct in itemized deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — State And Local Taxes And Real Estate Taxes
tc Name: ID_AllTaxes_c
TB Name: Ceiling on the amount of state and local income, sales and real estate tax deductions allowed (dollars)
Description: The amount of state and local income, sales and real estate tax deductions is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2019: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2020: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2021: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2022: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2023: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2024: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2025: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2026: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Itemized Deductions — State And Local Taxes And Real Estate Taxes
tc Name: ID_AllTaxes_hc
TB Name: State and local income, sales, and real estate tax deduction haircut.
Description: This decimal fraction reduces all state and local taxes paid eligible to deduct in itemized deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — State And Local Taxes And Real Estate Taxes
tc Name: ID_AllTaxes_c
TB Name: Ceiling on the amount of state and local income, sales and real estate tax deductions allowed (dollars)
Description: The amount of state and local income, sales and real estate tax deductions is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 10000.0 MARS=single
2018: 10000.0 MARS=mjoint
2018: 5000.0 MARS=mseparate
2018: 10000.0 MARS=headhh
2018: 10000.0 MARS=widow
2019: 10000.0 MARS=single
2019: 10000.0 MARS=mjoint
2019: 5000.0 MARS=mseparate
2019: 10000.0 MARS=headhh
2019: 10000.0 MARS=widow
2020: 10000.0 MARS=single
2020: 10000.0 MARS=mjoint
2020: 5000.0 MARS=mseparate
2020: 10000.0 MARS=headhh
2020: 10000.0 MARS=widow
2021: 10000.0 MARS=single
2021: 10000.0 MARS=mjoint
2021: 5000.0 MARS=mseparate
2021: 10000.0 MARS=headhh
2021: 10000.0 MARS=widow
2022: 10000.0 MARS=single
2022: 10000.0 MARS=mjoint
2022: 5000.0 MARS=mseparate
2022: 10000.0 MARS=headhh
2022: 10000.0 MARS=widow
2023: 10000.0 MARS=single
2023: 10000.0 MARS=mjoint
2023: 5000.0 MARS=mseparate
2023: 10000.0 MARS=headhh
2023: 10000.0 MARS=widow
2024: 10000.0 MARS=single
2024: 10000.0 MARS=mjoint
2024: 5000.0 MARS=mseparate
2024: 10000.0 MARS=headhh
2024: 10000.0 MARS=widow
2025: 10000.0 MARS=single
2025: 10000.0 MARS=mjoint
2025: 5000.0 MARS=mseparate
2025: 10000.0 MARS=headhh
2025: 10000.0 MARS=widow
2026: 9e+99 MARS=single
2026: 9e+99 MARS=mjoint
2026: 9e+99 MARS=mseparate
2026: 9e+99 MARS=headhh
2026: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — Interest Paid
tc Name: ID_InterestPaid_hc
TB Name: Interest paid deduction haircut
Description: This decimal fraction can be applied to limit the amount of interest paid deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — Interest Paid
tc Name: ID_InterestPaid_c
TB Name: Ceiling on the amount of interest paid deduction allowed (dollars)
Description: The amount of interest paid deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Itemized Deductions — Interest Paid
tc Name: ID_InterestPaid_hc
TB Name: Interest paid deduction haircut
Description: This decimal fraction can be applied to limit the amount of interest paid deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Interest Paid
tc Name: ID_InterestPaid_c
TB Name: Ceiling on the amount of interest paid deduction allowed (dollars)
Description: The amount of interest paid deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — Charity
tc Name: ID_Charity_crt_all
TB Name: Ceiling (as a decimal fraction of AGI) for all charitable contribution deductions
Description: The total deduction for charity is capped at this fraction of AGI.
Notes: When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.5
2014: 0.5
2015: 0.5
2016: 0.5
2017: 0.5
2018: 0.6
2019: 0.6
2020: 0.6
2021: 0.6
2022: 0.6
2023: 0.6
2024: 0.6
2025: 0.6
2026: 0.5
Valid Range: min = 0 and max = 0.6
Out-of-Range Action: warn

Itemized Deductions — Charity
tc Name: ID_Charity_crt_noncash
TB Name: Ceiling (as a decimal fraction of AGI) for noncash charitable contribution deductions
Description: The deduction for noncash charity contributions is capped at this fraction of AGI.
Notes: When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.3
2014: 0.3
2015: 0.3
2016: 0.3
2017: 0.3
2018: 0.3
2019: 0.3
Valid Range: min = 0 and max = 0.3
Out-of-Range Action: warn

Itemized Deductions — Charity
tc Name: ID_Charity_frt
TB Name: Floor (as a decimal fraction of AGI) for deductible charitable contributions.
Description: Taxpayers are eligible to deduct the portion of their charitable expense exceeding this fraction of AGI.
Notes: This parameter allows for implementation of Option 52 from https://www.cbo.gov/sites/default/files/cbofiles/attachments/49638-BudgetOptions.pdf.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — Charity
tc Name: ID_Charity_hc
TB Name: Charity expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of charity expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — Charity
tc Name: ID_Charity_c
TB Name: Ceiling on the amount of charity expense deduction allowed (dollars)
Description: The amount of charity expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Itemized Deductions — Charity
tc Name: ID_Charity_f
TB Name: Floor on the amount of charity expense deduction allowed (dollars)
Description: Only charitable giving in excess of this dollar amount is eligible for a deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Itemized Deductions — Charity
tc Name: ID_Charity_crt_all
TB Name: Ceiling (as a decimal fraction of AGI) for all charitable contribution deductions
Description: The total deduction for charity is capped at this fraction of AGI.
Notes: When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.5
2014: 0.5
2015: 0.5
2016: 0.5
2017: 0.5
2018: 0.6
2019: 0.6
2020: 0.6
2021: 0.6
2022: 0.6
2023: 0.6
2024: 0.6
2025: 0.6
2026: 0.5
Valid Range: min = 0 and max = 0.6
Out-of-Range Action: warn

Itemized Deductions — Charity
tc Name: ID_Charity_crt_noncash
TB Name: Ceiling (as a decimal fraction of AGI) for noncash charitable contribution deductions
Description: The deduction for noncash charity contributions is capped at this fraction of AGI.
Notes: When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.3
Valid Range: min = 0 and max = 0.3
Out-of-Range Action: warn

Itemized Deductions — Charity
tc Name: ID_Charity_frt
TB Name: Floor (as a decimal fraction of AGI) for deductible charitable contributions.
Description: Taxpayers are eligible to deduct the portion of their charitable expense exceeding this fraction of AGI.
Notes: This parameter allows for implementation of Option 52 from https://www.cbo.gov/sites/default/files/cbofiles/attachments/49638-BudgetOptions.pdf.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Charity
tc Name: ID_Charity_hc
TB Name: Charity expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of charity expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Charity
tc Name: ID_Charity_c
TB Name: Ceiling on the amount of charity expense deduction allowed (dollars)
Description: The amount of charity expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Charity
tc Name: ID_Charity_f
TB Name: Floor on the amount of charity expense deduction allowed (dollars)
Description: Only charitable giving in excess of this dollar amount is eligible for a deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — Casualty
tc Name: ID_Casualty_frt
TB Name: Floor (as a decimal fraction of AGI) for deductible casualty loss.
Description: Taxpayers are eligible to deduct the portion of their gross casualty losses exceeding this fraction of AGI.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.1
2018: 0.1
2019: 0.1
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — Casualty
tc Name: ID_Casualty_hc
TB Name: Casualty expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of casualty expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — Casualty
tc Name: ID_Casualty_c
TB Name: Ceiling on the amount of casualty expense deduction allowed (dollars)
Description: The amount of casualty expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Itemized Deductions — Casualty
tc Name: ID_Casualty_frt
TB Name: Floor (as a decimal fraction of AGI) for deductible casualty loss.
Description: Taxpayers are eligible to deduct the portion of their gross casualty losses exceeding this fraction of AGI.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.1
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Casualty
tc Name: ID_Casualty_hc
TB Name: Casualty expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of casualty expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Casualty
tc Name: ID_Casualty_c
TB Name: Ceiling on the amount of casualty expense deduction allowed (dollars)
Description: The amount of casualty expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — Miscellaneous
tc Name: ID_Miscellaneous_frt
TB Name: Floor (as a decimal fraction of AGI) for deductible miscellaneous expenses.
Description: Taxpayers are eligible to deduct the portion of their miscellaneous expense exceeding this fraction of AGI.
Notes: When using PUF data, lowering this parameter value may produce unexpected results because in PUF data the variable e20400 is zero below the floor.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.02
2014: 0.02
2015: 0.02
2016: 0.02
2017: 0.02
2018: 0.02
2019: 0.02
Valid Range: min = 0.02 and max = 1
Out-of-Range Action: warn

Itemized Deductions — Miscellaneous
tc Name: ID_Miscellaneous_hc
TB Name: Miscellaneous expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of miscellaneous expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — Miscellaneous
tc Name: ID_Miscellaneous_c
TB Name: Ceiling on the amount of miscellaneous expense deduction allowed (dollars)
Description: The amount of miscellaneous expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Itemized Deductions — Miscellaneous
tc Name: ID_Miscellaneous_frt
TB Name: Floor (as a decimal fraction of AGI) for deductible miscellaneous expenses.
Description: Taxpayers are eligible to deduct the portion of their miscellaneous expense exceeding this fraction of AGI.
Notes: When using PUF data, lowering this parameter value may produce unexpected results because in PUF data the variable e20400 is zero below the floor.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.02
Valid Range: min = 0.02 and max = 1
Out-of-Range Action: warn

Itemized Deductions — Miscellaneous
tc Name: ID_Miscellaneous_hc
TB Name: Miscellaneous expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of miscellaneous expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Miscellaneous
tc Name: ID_Miscellaneous_c
TB Name: Ceiling on the amount of miscellaneous expense deduction allowed (dollars)
Description: The amount of miscellaneous expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — Itemized Deduction Limitation
tc Name: ID_ps
TB Name: Itemized deduction phaseout AGI start (Pease provision)
Description: The itemized deductions will be reduced for taxpayers with AGI higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [250000.0, 300000.0, 150000.0, 275000.0, 300000.0]
2014: [254200.0, 305050.0, 152525.0, 279650.0, 305050.0]
2015: [258250.0, 309900.0, 154950.0, 284050.0, 309900.0]
2016: [259400.0, 311300.0, 155650.0, 285350.0, 311300.0]
2017: [261500.0, 313800.0, 156900.0, 287650.0, 313800.0]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2020: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2021: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2022: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2023: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2024: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2025: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2026: [316457.0, 379748.0, 189874.0, 348102.0, 379748.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Itemized Deductions — Itemized Deduction Limitation
tc Name: ID_prt
TB Name: Itemized deduction phaseout rate (Pease provision)
Description: Taxpayers will not be eligible to deduct the full amount of itemized deduction if their AGI is above the phaseout start. The deductible portion would be decreased at this rate for each dollar exceeding the start.
Notes: This phaseout rate cannot be lower than 0.03 for each dollar, due to limited data on non-itemizers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.03
2014: 0.03
2015: 0.03
2016: 0.03
2017: 0.03
2018: 0.0
2019: 0.0
2020: 0.0
2021: 0.0
2022: 0.0
2023: 0.0
2024: 0.0
2025: 0.0
2026: 0.03
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — Itemized Deduction Limitation
tc Name: ID_crt
TB Name: Itemized deduction maximum phaseout as a decimal fraction of total itemized deductions (Pease provision)
Description: The phaseout amount is capped at this fraction of the original total deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.8
2014: 0.8
2015: 0.8
2016: 0.8
2017: 0.8
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.8
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Itemized Deductions — Itemized Deduction Limitation
tc Name: ID_ps
TB Name: Itemized deduction phaseout AGI start (Pease provision)
Description: The itemized deductions will be reduced for taxpayers with AGI higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 250000.0 MARS=single
2013: 300000.0 MARS=mjoint
2013: 150000.0 MARS=mseparate
2013: 275000.0 MARS=headhh
2013: 300000.0 MARS=widow
2014: 254200.0 MARS=single
2014: 305050.0 MARS=mjoint
2014: 152525.0 MARS=mseparate
2014: 279650.0 MARS=headhh
2014: 305050.0 MARS=widow
2015: 258250.0 MARS=single
2015: 309900.0 MARS=mjoint
2015: 154950.0 MARS=mseparate
2015: 284050.0 MARS=headhh
2015: 309900.0 MARS=widow
2016: 259400.0 MARS=single
2016: 311300.0 MARS=mjoint
2016: 155650.0 MARS=mseparate
2016: 285350.0 MARS=headhh
2016: 311300.0 MARS=widow
2017: 261500.0 MARS=single
2017: 313800.0 MARS=mjoint
2017: 156900.0 MARS=mseparate
2017: 287650.0 MARS=headhh
2017: 313800.0 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
2020: 9e+99 MARS=single
2020: 9e+99 MARS=mjoint
2020: 9e+99 MARS=mseparate
2020: 9e+99 MARS=headhh
2020: 9e+99 MARS=widow
2021: 9e+99 MARS=single
2021: 9e+99 MARS=mjoint
2021: 9e+99 MARS=mseparate
2021: 9e+99 MARS=headhh
2021: 9e+99 MARS=widow
2022: 9e+99 MARS=single
2022: 9e+99 MARS=mjoint
2022: 9e+99 MARS=mseparate
2022: 9e+99 MARS=headhh
2022: 9e+99 MARS=widow
2023: 9e+99 MARS=single
2023: 9e+99 MARS=mjoint
2023: 9e+99 MARS=mseparate
2023: 9e+99 MARS=headhh
2023: 9e+99 MARS=widow
2024: 9e+99 MARS=single
2024: 9e+99 MARS=mjoint
2024: 9e+99 MARS=mseparate
2024: 9e+99 MARS=headhh
2024: 9e+99 MARS=widow
2025: 9e+99 MARS=single
2025: 9e+99 MARS=mjoint
2025: 9e+99 MARS=mseparate
2025: 9e+99 MARS=headhh
2025: 9e+99 MARS=widow
2026: 316457.0 MARS=single
2026: 379748.0 MARS=mjoint
2026: 189874.0 MARS=mseparate
2026: 348102.0 MARS=headhh
2026: 379748.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Itemized Deduction Limitation
tc Name: ID_prt
TB Name: Itemized deduction phaseout rate (Pease provision)
Description: Taxpayers will not be eligible to deduct the full amount of itemized deduction if their AGI is above the phaseout start. The deductible portion would be decreased at this rate for each dollar exceeding the start.
Notes: This phaseout rate cannot be lower than 0.03 for each dollar, due to limited data on non-itemizers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.03
2014: 0.03
2015: 0.03
2016: 0.03
2017: 0.03
2018: 0.0
2019: 0.0
2020: 0.0
2021: 0.0
2022: 0.0
2023: 0.0
2024: 0.0
2025: 0.0
2026: 0.03
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Itemized Deduction Limitation
tc Name: ID_crt
TB Name: Itemized deduction maximum phaseout as a decimal fraction of total itemized deductions (Pease provision)
Description: The phaseout amount is capped at this fraction of the original total deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.8
2014: 0.8
2015: 0.8
2016: 0.8
2017: 0.8
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.8
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_trt
TB Name: Surtax rate on the benefits from specified itemized deductions
Description: The benefit from specified itemized deductions exceeding the credit is taxed at this rate. A surtax rate of 1 strictly limits the benefit from specified itemized deductions to the specified credit. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_crt
TB Name: Credit on itemized deduction benefit surtax (decimal fraction of AGI)
Description: The surtax on specified itemized deductions applies to benefits in excess of this fraction of AGI. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_em
TB Name: Exemption for itemized deduction benefit surtax (dollar AGI threshold)
Description: This amount is subtracted from itemized deduction benefits in the calculation of the itemized deduction benefit surtax. With ID_BenefitSurtax_crt set to 0.0 and ID_BenefitSurtax_trt set to 1.0, this amount serves as a dollar limit on the value of itemized deductions.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_Switch
TB Name: Deductions subject to the surtax on itemized deduction benefits
Description: The surtax on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
   for: [med, sltx, retx, cas, misc, int, char]
2013: [True, True, True, True, True, True, True]
2014: [True, True, True, True, True, True, True]
2015: [True, True, True, True, True, True, True]
2016: [True, True, True, True, True, True, True]
2017: [True, True, True, True, True, True, True]
2018: [True, True, True, True, True, True, True]
2019: [True, True, True, True, True, True, True]
Valid Range: min = False and max = True
Out-of-Range Action: stop

+

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_trt
TB Name: Surtax rate on the benefits from specified itemized deductions
Description: The benefit from specified itemized deductions exceeding the credit is taxed at this rate. A surtax rate of 1 strictly limits the benefit from specified itemized deductions to the specified credit. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_crt
TB Name: Credit on itemized deduction benefit surtax (decimal fraction of AGI)
Description: The surtax on specified itemized deductions applies to benefits in excess of this fraction of AGI. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_em
TB Name: Exemption for itemized deduction benefit surtax (dollar AGI threshold)
Description: This amount is subtracted from itemized deduction benefits in the calculation of the itemized deduction benefit surtax. With ID_BenefitSurtax_crt set to 0.0 and ID_BenefitSurtax_trt set to 1.0, this amount serves as a dollar limit on the value of itemized deductions.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 0.0 MARS=single
2018: 0.0 MARS=mjoint
2018: 0.0 MARS=mseparate
2018: 0.0 MARS=headhh
2018: 0.0 MARS=widow
2019: 0.0 MARS=single
2019: 0.0 MARS=mjoint
2019: 0.0 MARS=mseparate
2019: 0.0 MARS=headhh
2019: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_Switch
TB Name: Deductions subject to the surtax on itemized deduction benefits
Description: The surtax on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: True idedtype=med
2013: True idedtype=sltx
2013: True idedtype=retx
2013: True idedtype=cas
2013: True idedtype=misc
2013: True idedtype=int
2013: True idedtype=char
Valid Range: min = False and max = True
Out-of-Range Action: error

-

Itemized Deductions — Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses
tc Name: ID_BenefitCap_rt
TB Name: Ceiling on the benefits from itemized deductions; decimal fraction of total deductible expenses
Description: The benefit from specified itemized deductions is capped at this percent of the total deductible expenses.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Itemized Deductions — Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses
tc Name: ID_BenefitCap_Switch
TB Name: Deductions subject to the cap on itemized deduction benefits
Description: The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
   for: [med, sltx, retx, cas, misc, int, char]
2013: [True, True, True, True, True, True, True]
2014: [True, True, True, True, True, True, True]
2015: [True, True, True, True, True, True, True]
2016: [True, True, True, True, True, True, True]
2017: [True, True, True, True, True, True, True]
2018: [True, True, True, True, True, True, True]
2019: [True, True, True, True, True, True, True]
Valid Range: min = False and max = True
Out-of-Range Action: stop

+

Itemized Deductions — Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses
tc Name: ID_BenefitCap_rt
TB Name: Ceiling on the benefits from itemized deductions; decimal fraction of total deductible expenses
Description: The benefit from specified itemized deductions is capped at this percent of the total deductible expenses.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses
tc Name: ID_BenefitCap_Switch
TB Name: Deductions subject to the cap on itemized deduction benefits
Description: The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: True idedtype=med
2013: True idedtype=sltx
2013: True idedtype=retx
2013: True idedtype=cas
2013: True idedtype=misc
2013: True idedtype=int
2013: True idedtype=char
Valid Range: min = False and max = True
Out-of-Range Action: error

-

Itemized Deductions — Ceiling On The Amount Of Itemized Deductions Allowed
tc Name: ID_c
TB Name: Ceiling on the amount of itemized deductions allowed (dollars)
Description: The amount of itemized deductions is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Itemized Deductions — Ceiling On The Amount Of Itemized Deductions Allowed
tc Name: ID_AmountCap_rt
TB Name: Ceiling on the gross amount of itemized deductions allowed; decimal fraction of AGI
Description: The gross allowable amount of specified itemized deductions is capped at this percent of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 9e+99
2014: 9e+99
2015: 9e+99
2016: 9e+99
2017: 9e+99
2018: 9e+99
2019: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Itemized Deductions — Ceiling On The Amount Of Itemized Deductions Allowed
tc Name: ID_AmountCap_Switch
TB Name: Deductions subject to the cap on itemized deduction benefits
Description: The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
   for: [med, sltx, retx, cas, misc, int, char]
2013: [True, True, True, True, True, True, True]
2014: [True, True, True, True, True, True, True]
2015: [True, True, True, True, True, True, True]
2016: [True, True, True, True, True, True, True]
2017: [True, True, True, True, True, True, True]
2018: [True, True, True, True, True, True, True]
2019: [True, True, True, True, True, True, True]
Valid Range: min = False and max = True
Out-of-Range Action: stop

+

Itemized Deductions — Ceiling On The Amount Of Itemized Deductions Allowed
tc Name: ID_c
TB Name: Ceiling on the amount of itemized deductions allowed (dollars)
Description: The amount of itemized deductions is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Ceiling On The Amount Of Itemized Deductions Allowed
tc Name: ID_AmountCap_rt
TB Name: Ceiling on the gross amount of itemized deductions allowed; decimal fraction of AGI
Description: The gross allowable amount of specified itemized deductions is capped at this percent of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Ceiling On The Amount Of Itemized Deductions Allowed
tc Name: ID_AmountCap_Switch
TB Name: Deductions subject to the cap on itemized deduction benefits
Description: The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: True idedtype=med
2013: True idedtype=sltx
2013: True idedtype=retx
2013: True idedtype=cas
2013: True idedtype=misc
2013: True idedtype=int
2013: True idedtype=char
Valid Range: min = False and max = True
Out-of-Range Action: error

3j. Capital Gains And Dividends

-

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt1
TB Name: Long term capital gain and qualified dividends (regular/non-AMT) rate 1
Description: The capital gain and dividends (stacked on top of regular income) that are below threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_brk1
TB Name: Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 1
Description: The gains and dividends (stacked on top of regular income) below this are taxed at capital gain rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [36250.0, 72500.0, 36250.0, 48600.0, 72500.0]
2014: [36900.0, 73800.0, 36900.0, 49400.0, 73800.0]
2015: [37450.0, 74900.0, 37450.0, 50200.0, 74900.0]
2016: [37650.0, 75300.0, 37650.0, 50400.0, 75300.0]
2017: [37950.0, 75900.0, 37950.0, 50800.0, 75900.0]
2018: [38600.0, 77200.0, 38600.0, 51700.0, 77200.0]
2019: [39375.0, 78750.0, 39375.0, 52750.0, 78750.0]
Valid Range: min = 0 and max = CG_brk2
Out-of-Range Action: stop

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt2
TB Name: Long term capital gain and qualified dividends (regular/non-AMT) rate 2
Description: The capital gain and dividends (stacked on top of regular income) that are below threshold 2 and above threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.15
2019: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_brk2
TB Name: Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 2
Description: The gains and dividends (stacked on top of regular income) below this and above top of bracket 1 are taxed at capital gain rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [400000.0, 450000.0, 225000.0, 425000.0, 450000.0]
2014: [406750.0, 457600.0, 228800.0, 432200.0, 457600.0]
2015: [413200.0, 464850.0, 232425.0, 439000.0, 464850.0]
2016: [415050.0, 466950.0, 233475.0, 441000.0, 466950.0]
2017: [418400.0, 470700.0, 235350.0, 444550.0, 470700.0]
2018: [425800.0, 479000.0, 239500.0, 452400.0, 479000.0]
2019: [434550.0, 488850.0, 244425.0, 461700.0, 488850.0]
Valid Range: min = CG_brk1 and max = CG_brk3
Out-of-Range Action: stop

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt3
TB Name: Long term capital gain and qualified dividends (regular/non-AMT) rate 3
Description: The capital gain and dividends (stacked on top of regular income) that are above threshold 2 and below threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.2
2014: 0.2
2015: 0.2
2016: 0.2
2017: 0.2
2018: 0.2
2019: 0.2
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_brk3
TB Name: Top of long-term capital gains and qualified dividend tax (regular/non-AMT) bracket 3
Description: The gains and dividends (stacked on top of regular income) below this and above top of bracket 2 are taxed at the capital gain rate 3; above this they are taxed at capital gain rate 4. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = CG_brk2 and max = 9e+99
Out-of-Range Action: stop

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt4
TB Name: Long term capital gain and qualified dividends (regular/non-AMT) rate 4
Description: The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt1
TB Name: Long term capital gain and qualified dividends (regular/non-AMT) rate 1
Description: The capital gain and dividends (stacked on top of regular income) that are below threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_brk1
TB Name: Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 1
Description: The gains and dividends (stacked on top of regular income) below this are taxed at capital gain rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 36250.0 MARS=single
2013: 72500.0 MARS=mjoint
2013: 36250.0 MARS=mseparate
2013: 48600.0 MARS=headhh
2013: 72500.0 MARS=widow
2014: 36900.0 MARS=single
2014: 73800.0 MARS=mjoint
2014: 36900.0 MARS=mseparate
2014: 49400.0 MARS=headhh
2014: 73800.0 MARS=widow
2015: 37450.0 MARS=single
2015: 74900.0 MARS=mjoint
2015: 37450.0 MARS=mseparate
2015: 50200.0 MARS=headhh
2015: 74900.0 MARS=widow
2016: 37650.0 MARS=single
2016: 75300.0 MARS=mjoint
2016: 37650.0 MARS=mseparate
2016: 50400.0 MARS=headhh
2016: 75300.0 MARS=widow
2017: 37950.0 MARS=single
2017: 75900.0 MARS=mjoint
2017: 37950.0 MARS=mseparate
2017: 50800.0 MARS=headhh
2017: 75900.0 MARS=widow
2018: 38600.0 MARS=single
2018: 77200.0 MARS=mjoint
2018: 38600.0 MARS=mseparate
2018: 51700.0 MARS=headhh
2018: 77200.0 MARS=widow
2019: 39375.0 MARS=single
2019: 78750.0 MARS=mjoint
2019: 39375.0 MARS=mseparate
2019: 52750.0 MARS=headhh
2019: 78750.0 MARS=widow
Valid Range: min = 0 and max = CG_brk2
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt2
TB Name: Long term capital gain and qualified dividends (regular/non-AMT) rate 2
Description: The capital gain and dividends (stacked on top of regular income) that are below threshold 2 and above threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_brk2
TB Name: Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 2
Description: The gains and dividends (stacked on top of regular income) below this and above top of bracket 1 are taxed at capital gain rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 400000.0 MARS=single
2013: 450000.0 MARS=mjoint
2013: 225000.0 MARS=mseparate
2013: 425000.0 MARS=headhh
2013: 450000.0 MARS=widow
2014: 406750.0 MARS=single
2014: 457600.0 MARS=mjoint
2014: 228800.0 MARS=mseparate
2014: 432200.0 MARS=headhh
2014: 457600.0 MARS=widow
2015: 413200.0 MARS=single
2015: 464850.0 MARS=mjoint
2015: 232425.0 MARS=mseparate
2015: 439000.0 MARS=headhh
2015: 464850.0 MARS=widow
2016: 415050.0 MARS=single
2016: 466950.0 MARS=mjoint
2016: 233475.0 MARS=mseparate
2016: 441000.0 MARS=headhh
2016: 466950.0 MARS=widow
2017: 418400.0 MARS=single
2017: 470700.0 MARS=mjoint
2017: 235350.0 MARS=mseparate
2017: 444550.0 MARS=headhh
2017: 470700.0 MARS=widow
2018: 425800.0 MARS=single
2018: 479000.0 MARS=mjoint
2018: 239500.0 MARS=mseparate
2018: 452400.0 MARS=headhh
2018: 479000.0 MARS=widow
2019: 434550.0 MARS=single
2019: 488850.0 MARS=mjoint
2019: 244425.0 MARS=mseparate
2019: 461700.0 MARS=headhh
2019: 488850.0 MARS=widow
Valid Range: min = CG_brk1 and max = CG_brk3
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt3
TB Name: Long term capital gain and qualified dividends (regular/non-AMT) rate 3
Description: The capital gain and dividends (stacked on top of regular income) that are above threshold 2 and below threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.2
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_brk3
TB Name: Top of long-term capital gains and qualified dividend tax (regular/non-AMT) bracket 3
Description: The gains and dividends (stacked on top of regular income) below this and above top of bracket 2 are taxed at the capital gain rate 3; above this they are taxed at capital gain rate 4. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = CG_brk2 and max = 9e+99
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt4
TB Name: Long term capital gain and qualified dividends (regular/non-AMT) rate 4
Description: The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt1
TB Name: Long term capital gain and qualified dividends (AMT) rate 1
Description: Capital gain and qualified dividends (stacked on top of regular income) below threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_brk1
TB Name: Top of long-term capital gains and qualified dividends (AMT) tax bracket 1
Description: The gains and dividends, stacked last, of AMT taxable income below this are taxed at AMT capital gain rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [36250.0, 72500.0, 36250.0, 48600.0, 72500.0]
2014: [36900.0, 73800.0, 36900.0, 49400.0, 73800.0]
2015: [37450.0, 74900.0, 37450.0, 50200.0, 74900.0]
2016: [37650.0, 75300.0, 37650.0, 50400.0, 75300.0]
2017: [37950.0, 75900.0, 37950.0, 50800.0, 75900.0]
2018: [38600.0, 77200.0, 38600.0, 51700.0, 77200.0]
2019: [39375.0, 78750.0, 39375.0, 52750.0, 78750.0]
Valid Range: min = 0 and max = AMT_CG_brk2
Out-of-Range Action: stop

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt2
TB Name: Long term capital gain and qualified dividends (AMT) rate 2
Description: Capital gain and qualified dividend (stacked on top of regular income) below threshold 2 and above threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.15
2019: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_brk2
TB Name: Top of long-term capital gains and qualified dividends (AMT) tax bracket 2
Description: The gains and dividends, stacked last, of AMT taxable income below this threshold and above bracket 1 are taxed at AMT capital gain rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [400000.0, 450000.0, 225000.0, 425000.0, 450000.0]
2014: [406750.0, 457600.0, 228800.0, 432200.0, 457600.0]
2015: [413200.0, 464850.0, 232425.0, 439000.0, 464850.0]
2016: [415050.0, 466950.0, 233475.0, 441000.0, 466950.0]
2017: [418400.0, 470700.0, 235350.0, 444550.0, 470700.0]
2018: [425800.0, 479000.0, 239500.0, 452400.0, 479000.0]
2019: [434550.0, 488850.0, 244425.0, 461700.0, 488850.0]
Valid Range: min = AMT_CG_brk1 and max = AMT_CG_brk3
Out-of-Range Action: stop

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt3
TB Name: Long term capital gain and qualified dividends (AMT) rate 3
Description: The capital gain and qualified dividend (stacked on top of regular income) above threshold 2 and below threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.2
2014: 0.2
2015: 0.2
2016: 0.2
2017: 0.2
2018: 0.2
2019: 0.2
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_brk3
TB Name: Long term capital gain and qualified dividends (AMT) threshold 3
Description: The gains and dividends, stacked last, of AMT taxable income below this and above bracket 2 are taxed at capital gain rate 3; above thisthey are taxed at AMT capital gain rate 4. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = AMT_CG_brk2 and max = 9e+99
Out-of-Range Action: stop

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt4
TB Name: Long term capital gain and qualified dividends (AMT) rate 4
Description: The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt1
TB Name: Long term capital gain and qualified dividends (AMT) rate 1
Description: Capital gain and qualified dividends (stacked on top of regular income) below threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_brk1
TB Name: Top of long-term capital gains and qualified dividends (AMT) tax bracket 1
Description: The gains and dividends, stacked last, of AMT taxable income below this are taxed at AMT capital gain rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 36250.0 MARS=single
2013: 72500.0 MARS=mjoint
2013: 36250.0 MARS=mseparate
2013: 48600.0 MARS=headhh
2013: 72500.0 MARS=widow
2014: 36900.0 MARS=single
2014: 73800.0 MARS=mjoint
2014: 36900.0 MARS=mseparate
2014: 49400.0 MARS=headhh
2014: 73800.0 MARS=widow
2015: 37450.0 MARS=single
2015: 74900.0 MARS=mjoint
2015: 37450.0 MARS=mseparate
2015: 50200.0 MARS=headhh
2015: 74900.0 MARS=widow
2016: 37650.0 MARS=single
2016: 75300.0 MARS=mjoint
2016: 37650.0 MARS=mseparate
2016: 50400.0 MARS=headhh
2016: 75300.0 MARS=widow
2017: 37950.0 MARS=single
2017: 75900.0 MARS=mjoint
2017: 37950.0 MARS=mseparate
2017: 50800.0 MARS=headhh
2017: 75900.0 MARS=widow
2018: 38600.0 MARS=single
2018: 77200.0 MARS=mjoint
2018: 38600.0 MARS=mseparate
2018: 51700.0 MARS=headhh
2018: 77200.0 MARS=widow
2019: 39375.0 MARS=single
2019: 78750.0 MARS=mjoint
2019: 39375.0 MARS=mseparate
2019: 52750.0 MARS=headhh
2019: 78750.0 MARS=widow
Valid Range: min = 0 and max = AMT_CG_brk2
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt2
TB Name: Long term capital gain and qualified dividends (AMT) rate 2
Description: Capital gain and qualified dividend (stacked on top of regular income) below threshold 2 and above threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_brk2
TB Name: Top of long-term capital gains and qualified dividends (AMT) tax bracket 2
Description: The gains and dividends, stacked last, of AMT taxable income below this threshold and above bracket 1 are taxed at AMT capital gain rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 400000.0 MARS=single
2013: 450000.0 MARS=mjoint
2013: 225000.0 MARS=mseparate
2013: 425000.0 MARS=headhh
2013: 450000.0 MARS=widow
2014: 406750.0 MARS=single
2014: 457600.0 MARS=mjoint
2014: 228800.0 MARS=mseparate
2014: 432200.0 MARS=headhh
2014: 457600.0 MARS=widow
2015: 413200.0 MARS=single
2015: 464850.0 MARS=mjoint
2015: 232425.0 MARS=mseparate
2015: 439000.0 MARS=headhh
2015: 464850.0 MARS=widow
2016: 415050.0 MARS=single
2016: 466950.0 MARS=mjoint
2016: 233475.0 MARS=mseparate
2016: 441000.0 MARS=headhh
2016: 466950.0 MARS=widow
2017: 418400.0 MARS=single
2017: 470700.0 MARS=mjoint
2017: 235350.0 MARS=mseparate
2017: 444550.0 MARS=headhh
2017: 470700.0 MARS=widow
2018: 425800.0 MARS=single
2018: 479000.0 MARS=mjoint
2018: 239500.0 MARS=mseparate
2018: 452400.0 MARS=headhh
2018: 479000.0 MARS=widow
2019: 434550.0 MARS=single
2019: 488850.0 MARS=mjoint
2019: 244425.0 MARS=mseparate
2019: 461700.0 MARS=headhh
2019: 488850.0 MARS=widow
Valid Range: min = AMT_CG_brk1 and max = AMT_CG_brk3
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt3
TB Name: Long term capital gain and qualified dividends (AMT) rate 3
Description: The capital gain and qualified dividend (stacked on top of regular income) above threshold 2 and below threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.2
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_brk3
TB Name: Long term capital gain and qualified dividends (AMT) threshold 3
Description: The gains and dividends, stacked last, of AMT taxable income below this and above bracket 2 are taxed at capital gain rate 3; above thisthey are taxed at AMT capital gain rate 4. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = AMT_CG_brk2 and max = 9e+99
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt4
TB Name: Long term capital gain and qualified dividends (AMT) rate 4
Description: The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Capital Gains And Dividends — Tax All Capital Gains And Dividends The Same As Regular Taxable Income
tc Name: CG_nodiff
TB Name: Long term capital gains and qualified dividends taxed no differently than regular taxable income
Description: Specifies whether or not long term capital gains and qualified dividends are taxed like regular taxable income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Capital Gains And Dividends — Tax All Capital Gains And Dividends The Same As Regular Taxable Income
tc Name: CG_ec
TB Name: Dollar amount of all capital gains and qualified dividends that are excluded from AGI.
Description: Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Capital Gains And Dividends — Tax All Capital Gains And Dividends The Same As Regular Taxable Income
tc Name: CG_reinvest_ec_rt
TB Name: Fraction of all capital gains and qualified dividends in excess of the dollar exclusion that are excluded from AGI.
Description: Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income. To limit the exclusion to capital gains and dividends invested within one year, set to statutory exclusion rate times the fraction of capital gains and qualified dividends in excess of the exclusion that are assumed to be reinvested within the year.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Capital Gains And Dividends — Tax All Capital Gains And Dividends The Same As Regular Taxable Income
tc Name: CG_nodiff
TB Name: Long term capital gains and qualified dividends taxed no differently than regular taxable income
Description: Specifies whether or not long term capital gains and qualified dividends are taxed like regular taxable income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Capital Gains And Dividends — Tax All Capital Gains And Dividends The Same As Regular Taxable Income
tc Name: CG_ec
TB Name: Dollar amount of all capital gains and qualified dividends that are excluded from AGI.
Description: Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Capital Gains And Dividends — Tax All Capital Gains And Dividends The Same As Regular Taxable Income
tc Name: CG_reinvest_ec_rt
TB Name: Fraction of all capital gains and qualified dividends in excess of the dollar exclusion that are excluded from AGI.
Description: Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income. To limit the exclusion to capital gains and dividends invested within one year, set to statutory exclusion rate times the fraction of capital gains and qualified dividends in excess of the exclusion that are assumed to be reinvested within the year.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

3k. Personal Income

-

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt1
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 1
Description: The lowest tax rate, applied to the portion of taxable income below tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.1
2018: 0.1
2019: 0.1
2020: 0.1
2021: 0.1
2022: 0.1
2023: 0.1
2024: 0.1
2025: 0.1
2026: 0.1
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk1
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1
Description: Taxable income below this threshold is taxed at tax rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [8925.0, 17850.0, 8925.0, 12750.0, 17850.0]
2014: [9075.0, 18150.0, 9075.0, 12950.0, 18150.0]
2015: [9225.0, 18450.0, 9225.0, 13150.0, 18450.0]
2016: [9275.0, 18550.0, 9275.0, 13250.0, 18550.0]
2017: [9325.0, 18650.0, 9325.0, 13350.0, 18650.0]
2018: [9525.0, 19050.0, 9525.0, 13600.0, 19050.0]
2019: [9700.0, 19400.0, 9700.0, 13850.0, 19400.0]
2020: [9880.42, 19760.84, 9880.42, 14107.61, 19760.84]
2021: [10110.63, 20221.27, 10110.63, 14436.32, 20221.27]
2022: [10342.17, 20684.33, 10342.17, 14766.91, 20684.33]
2023: [10577.97, 21155.94, 10577.97, 15103.59, 21155.94]
2024: [10811.74, 21623.48, 10811.74, 15437.38, 21623.48]
2025: [11039.87, 22079.74, 11039.87, 15763.11, 22079.74]
2026: [11285.0, 22569.0, 11285.0, 16156.0, 22569.0]
Valid Range: min = 0 and max = II_brk2
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt2
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 2
Description: The second lowest tax rate, applied to the portion of taxable income below tax bracket 2 and above tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.12
2019: 0.12
2020: 0.12
2021: 0.12
2022: 0.12
2023: 0.12
2024: 0.12
2025: 0.12
2026: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk2
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2
Description: Income below this threshold and above tax bracket 1 is taxed at tax rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [36250.0, 72500.0, 36250.0, 48600.0, 72500.0]
2014: [36900.0, 73800.0, 36900.0, 49400.0, 73800.0]
2015: [37450.0, 74900.0, 37450.0, 50200.0, 74900.0]
2016: [37650.0, 75300.0, 37650.0, 50400.0, 75300.0]
2017: [37950.0, 75900.0, 37950.0, 50800.0, 75900.0]
2018: [38700.0, 77400.0, 38700.0, 51800.0, 77400.0]
2019: [39475.0, 78950.0, 39475.0, 52850.0, 78950.0]
2020: [40209.24, 80418.47, 40209.24, 53833.01, 80418.47]
2021: [41146.11, 82292.22, 41146.11, 55087.32, 82292.22]
2022: [42088.36, 84176.71, 42088.36, 56348.82, 84176.71]
2023: [43047.97, 86095.94, 43047.97, 57633.57, 86095.94]
2024: [43999.33, 87998.66, 43999.33, 58907.27, 87998.66]
2025: [44927.72, 89855.43, 44927.72, 60150.22, 89855.43]
2026: [45926.0, 91851.0, 45926.0, 61476.0, 91851.0]
Valid Range: min = II_brk1 and max = II_brk3
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt3
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 3
Description: The third lowest tax rate, applied to the portion of taxable income below tax bracket 3 and above tax bracket 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.25
2014: 0.25
2015: 0.25
2016: 0.25
2017: 0.25
2018: 0.22
2019: 0.22
2020: 0.22
2021: 0.22
2022: 0.22
2023: 0.22
2024: 0.22
2025: 0.22
2026: 0.25
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk3
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3
Description: Income below this threshold and above tax bracket 2 is taxed at tax rate 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [87850.0, 146400.0, 73200.0, 125450.0, 146400.0]
2014: [89350.0, 148850.0, 74425.0, 127550.0, 148850.0]
2015: [90750.0, 151200.0, 75600.0, 129600.0, 151200.0]
2016: [91150.0, 151900.0, 75950.0, 130150.0, 151900.0]
2017: [91900.0, 153100.0, 76550.0, 131200.0, 153100.0]
2018: [82500.0, 165000.0, 82500.0, 82500.0, 165000.0]
2019: [84200.0, 168400.0, 84200.0, 84200.0, 168400.0]
2020: [85766.12, 171532.24, 85766.12, 85766.12, 171532.24]
2021: [87764.47, 175528.94, 87764.47, 87764.47, 175528.94]
2022: [89774.28, 179548.55, 89774.28, 89774.28, 179548.55]
2023: [91821.13, 183642.26, 91821.13, 91821.13, 183642.26]
2024: [93850.38, 187700.75, 93850.38, 93850.38, 187700.75]
2025: [95830.62, 191661.24, 95830.62, 95830.62, 191661.24]
2026: [111214.0, 185275.0, 92638.0, 158773.0, 185275.0]
Valid Range: min = II_brk2 and max = II_brk4
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt4
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 4
Description: The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.28
2014: 0.28
2015: 0.28
2016: 0.28
2017: 0.28
2018: 0.24
2019: 0.24
2020: 0.24
2021: 0.24
2022: 0.24
2023: 0.24
2024: 0.24
2025: 0.24
2026: 0.28
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk4
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4
Description: Income below this threshold and above tax bracket 3 is taxed at tax rate 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [183250.0, 223050.0, 111525.0, 203150.0, 223050.0]
2014: [186350.0, 226850.0, 113425.0, 206600.0, 226850.0]
2015: [189300.0, 230450.0, 115225.0, 209850.0, 230450.0]
2016: [190150.0, 231450.0, 115725.0, 210800.0, 231450.0]
2017: [191650.0, 233350.0, 116675.0, 212500.0, 233350.0]
2018: [157500.0, 315000.0, 157500.0, 157500.0, 315000.0]
2019: [160725.0, 321450.0, 160725.0, 160700.0, 321450.0]
2020: [163714.48, 327428.97, 163714.48, 163689.02, 327428.97]
2021: [167529.03, 335058.07, 167529.03, 167502.97, 335058.07]
2022: [171365.45, 342730.89, 171365.45, 171338.79, 342730.89]
2023: [175272.58, 350545.16, 175272.58, 175245.32, 350545.16]
2024: [179146.1, 358292.21, 179146.1, 179118.24, 358292.21]
2025: [182926.09, 365852.17, 182926.09, 182897.63, 365852.17]
2026: [231927.0, 282391.0, 141195.0, 257159.0, 282391.0]
Valid Range: min = II_brk3 and max = II_brk5
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt5
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 5
Description: The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.33
2014: 0.33
2015: 0.33
2016: 0.33
2017: 0.33
2018: 0.32
2019: 0.32
2020: 0.32
2021: 0.32
2022: 0.32
2023: 0.32
2024: 0.32
2025: 0.32
2026: 0.33
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk5
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5
Description: Income below this threshold and above tax bracket 4 is taxed at tax rate 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [398350.0, 398350.0, 199175.0, 398350.0, 398350.0]
2014: [405100.0, 405100.0, 202550.0, 405100.0, 405100.0]
2015: [411500.0, 411500.0, 205750.0, 411500.0, 411500.0]
2016: [413350.0, 413350.0, 206675.0, 413350.0, 413350.0]
2017: [416700.0, 416700.0, 208350.0, 416700.0, 416700.0]
2018: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2019: [204100.0, 408200.0, 204100.0, 204100.0, 408200.0]
2020: [207896.26, 415792.52, 207896.26, 207896.26, 415792.52]
2021: [212740.24, 425480.49, 212740.24, 212740.24, 425480.49]
2022: [217611.99, 435223.99, 217611.99, 217611.99, 435223.99]
2023: [222573.55, 445147.1, 222573.55, 222573.55, 445147.1]
2024: [227492.42, 454984.85, 227492.42, 227492.42, 454984.85]
2025: [232292.51, 464585.03, 232292.51, 232292.51, 464585.03]
2026: [504273.0, 504273.0, 252137.0, 504273.0, 504273.0]
Valid Range: min = II_brk4 and max = II_brk6
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt6
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 6
Description: The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.35
2014: 0.35
2015: 0.35
2016: 0.35
2017: 0.35
2018: 0.35
2019: 0.35
2020: 0.35
2021: 0.35
2022: 0.35
2023: 0.35
2024: 0.35
2025: 0.35
2026: 0.35
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk6
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket 6
Description: Income below this threshold and above tax bracket 5 is taxed at tax rate 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [400000.0, 450000.0, 225000.0, 425000.0, 450000.0]
2014: [406750.0, 457600.0, 228800.0, 432200.0, 457600.0]
2015: [413200.0, 464850.0, 232425.0, 439000.0, 464850.0]
2016: [415050.0, 466950.0, 233475.0, 441000.0, 466950.0]
2017: [418400.0, 470700.0, 235350.0, 444550.0, 470700.0]
2018: [500000.0, 600000.0, 300000.0, 500000.0, 600000.0]
2019: [510300.0, 612350.0, 306175.0, 510300.0, 612350.0]
2020: [519791.58, 623739.71, 311869.86, 519791.58, 623739.71]
2021: [531902.72, 638272.85, 319136.42, 531902.72, 638272.85]
2022: [544083.3, 652889.29, 326444.65, 544083.3, 652889.29]
2023: [556488.4, 667775.17, 333887.58, 556488.4, 667775.17]
2024: [568786.79, 682533.0, 341266.5, 568786.79, 682533.0]
2025: [580788.19, 696934.45, 348467.22, 580788.19, 696934.45]
2026: [506331.0, 569622.0, 284811.0, 537976.0, 569622.0]
Valid Range: min = II_brk5 and max = II_brk7
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt7
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 7
Description: The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.396
2014: 0.396
2015: 0.396
2016: 0.396
2017: 0.396
2018: 0.37
2019: 0.37
2020: 0.37
2021: 0.37
2022: 0.37
2023: 0.37
2024: 0.37
2025: 0.37
2026: 0.396
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk7
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket 7
Description: Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2020: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2021: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2022: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2023: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2024: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2025: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2026: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = II_brk6 and max = 9e+99
Out-of-Range Action: stop

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt8
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 8
Description: The tax rate applied to the portion of taxable income above tax bracket 7.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt1
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 1
Description: The lowest tax rate, applied to the portion of taxable income below tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.1
2018: 0.1
2019: 0.1
2020: 0.1
2021: 0.1
2022: 0.1
2023: 0.1
2024: 0.1
2025: 0.1
2026: 0.1
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk1
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1
Description: Taxable income below this threshold is taxed at tax rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 8925.0 MARS=single
2013: 17850.0 MARS=mjoint
2013: 8925.0 MARS=mseparate
2013: 12750.0 MARS=headhh
2013: 17850.0 MARS=widow
2014: 9075.0 MARS=single
2014: 18150.0 MARS=mjoint
2014: 9075.0 MARS=mseparate
2014: 12950.0 MARS=headhh
2014: 18150.0 MARS=widow
2015: 9225.0 MARS=single
2015: 18450.0 MARS=mjoint
2015: 9225.0 MARS=mseparate
2015: 13150.0 MARS=headhh
2015: 18450.0 MARS=widow
2016: 9275.0 MARS=single
2016: 18550.0 MARS=mjoint
2016: 9275.0 MARS=mseparate
2016: 13250.0 MARS=headhh
2016: 18550.0 MARS=widow
2017: 9325.0 MARS=single
2017: 18650.0 MARS=mjoint
2017: 9325.0 MARS=mseparate
2017: 13350.0 MARS=headhh
2017: 18650.0 MARS=widow
2018: 9525.0 MARS=single
2018: 19050.0 MARS=mjoint
2018: 9525.0 MARS=mseparate
2018: 13600.0 MARS=headhh
2018: 19050.0 MARS=widow
2019: 9700.0 MARS=single
2019: 19400.0 MARS=mjoint
2019: 9700.0 MARS=mseparate
2019: 13850.0 MARS=headhh
2019: 19400.0 MARS=widow
2020: 9880.42 MARS=single
2020: 19760.84 MARS=mjoint
2020: 9880.42 MARS=mseparate
2020: 14107.61 MARS=headhh
2020: 19760.84 MARS=widow
2021: 10110.63 MARS=single
2021: 20221.27 MARS=mjoint
2021: 10110.63 MARS=mseparate
2021: 14436.32 MARS=headhh
2021: 20221.27 MARS=widow
2022: 10342.17 MARS=single
2022: 20684.33 MARS=mjoint
2022: 10342.17 MARS=mseparate
2022: 14766.91 MARS=headhh
2022: 20684.33 MARS=widow
2023: 10577.97 MARS=single
2023: 21155.94 MARS=mjoint
2023: 10577.97 MARS=mseparate
2023: 15103.59 MARS=headhh
2023: 21155.94 MARS=widow
2024: 10811.74 MARS=single
2024: 21623.48 MARS=mjoint
2024: 10811.74 MARS=mseparate
2024: 15437.38 MARS=headhh
2024: 21623.48 MARS=widow
2025: 11039.87 MARS=single
2025: 22079.74 MARS=mjoint
2025: 11039.87 MARS=mseparate
2025: 15763.11 MARS=headhh
2025: 22079.74 MARS=widow
2026: 11285.0 MARS=single
2026: 22569.0 MARS=mjoint
2026: 11285.0 MARS=mseparate
2026: 16156.0 MARS=headhh
2026: 22569.0 MARS=widow
Valid Range: min = 0 and max = II_brk2
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt2
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 2
Description: The second lowest tax rate, applied to the portion of taxable income below tax bracket 2 and above tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.12
2019: 0.12
2020: 0.12
2021: 0.12
2022: 0.12
2023: 0.12
2024: 0.12
2025: 0.12
2026: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk2
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2
Description: Income below this threshold and above tax bracket 1 is taxed at tax rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 36250.0 MARS=single
2013: 72500.0 MARS=mjoint
2013: 36250.0 MARS=mseparate
2013: 48600.0 MARS=headhh
2013: 72500.0 MARS=widow
2014: 36900.0 MARS=single
2014: 73800.0 MARS=mjoint
2014: 36900.0 MARS=mseparate
2014: 49400.0 MARS=headhh
2014: 73800.0 MARS=widow
2015: 37450.0 MARS=single
2015: 74900.0 MARS=mjoint
2015: 37450.0 MARS=mseparate
2015: 50200.0 MARS=headhh
2015: 74900.0 MARS=widow
2016: 37650.0 MARS=single
2016: 75300.0 MARS=mjoint
2016: 37650.0 MARS=mseparate
2016: 50400.0 MARS=headhh
2016: 75300.0 MARS=widow
2017: 37950.0 MARS=single
2017: 75900.0 MARS=mjoint
2017: 37950.0 MARS=mseparate
2017: 50800.0 MARS=headhh
2017: 75900.0 MARS=widow
2018: 38700.0 MARS=single
2018: 77400.0 MARS=mjoint
2018: 38700.0 MARS=mseparate
2018: 51800.0 MARS=headhh
2018: 77400.0 MARS=widow
2019: 39475.0 MARS=single
2019: 78950.0 MARS=mjoint
2019: 39475.0 MARS=mseparate
2019: 52850.0 MARS=headhh
2019: 78950.0 MARS=widow
2020: 40209.24 MARS=single
2020: 80418.47 MARS=mjoint
2020: 40209.24 MARS=mseparate
2020: 53833.01 MARS=headhh
2020: 80418.47 MARS=widow
2021: 41146.11 MARS=single
2021: 82292.22 MARS=mjoint
2021: 41146.11 MARS=mseparate
2021: 55087.32 MARS=headhh
2021: 82292.22 MARS=widow
2022: 42088.36 MARS=single
2022: 84176.71 MARS=mjoint
2022: 42088.36 MARS=mseparate
2022: 56348.82 MARS=headhh
2022: 84176.71 MARS=widow
2023: 43047.97 MARS=single
2023: 86095.94 MARS=mjoint
2023: 43047.97 MARS=mseparate
2023: 57633.57 MARS=headhh
2023: 86095.94 MARS=widow
2024: 43999.33 MARS=single
2024: 87998.66 MARS=mjoint
2024: 43999.33 MARS=mseparate
2024: 58907.27 MARS=headhh
2024: 87998.66 MARS=widow
2025: 44927.72 MARS=single
2025: 89855.43 MARS=mjoint
2025: 44927.72 MARS=mseparate
2025: 60150.22 MARS=headhh
2025: 89855.43 MARS=widow
2026: 45926.0 MARS=single
2026: 91851.0 MARS=mjoint
2026: 45926.0 MARS=mseparate
2026: 61476.0 MARS=headhh
2026: 91851.0 MARS=widow
Valid Range: min = II_brk1 and max = II_brk3
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt3
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 3
Description: The third lowest tax rate, applied to the portion of taxable income below tax bracket 3 and above tax bracket 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.25
2014: 0.25
2015: 0.25
2016: 0.25
2017: 0.25
2018: 0.22
2019: 0.22
2020: 0.22
2021: 0.22
2022: 0.22
2023: 0.22
2024: 0.22
2025: 0.22
2026: 0.25
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk3
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3
Description: Income below this threshold and above tax bracket 2 is taxed at tax rate 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 87850.0 MARS=single
2013: 146400.0 MARS=mjoint
2013: 73200.0 MARS=mseparate
2013: 125450.0 MARS=headhh
2013: 146400.0 MARS=widow
2014: 89350.0 MARS=single
2014: 148850.0 MARS=mjoint
2014: 74425.0 MARS=mseparate
2014: 127550.0 MARS=headhh
2014: 148850.0 MARS=widow
2015: 90750.0 MARS=single
2015: 151200.0 MARS=mjoint
2015: 75600.0 MARS=mseparate
2015: 129600.0 MARS=headhh
2015: 151200.0 MARS=widow
2016: 91150.0 MARS=single
2016: 151900.0 MARS=mjoint
2016: 75950.0 MARS=mseparate
2016: 130150.0 MARS=headhh
2016: 151900.0 MARS=widow
2017: 91900.0 MARS=single
2017: 153100.0 MARS=mjoint
2017: 76550.0 MARS=mseparate
2017: 131200.0 MARS=headhh
2017: 153100.0 MARS=widow
2018: 82500.0 MARS=single
2018: 165000.0 MARS=mjoint
2018: 82500.0 MARS=mseparate
2018: 82500.0 MARS=headhh
2018: 165000.0 MARS=widow
2019: 84200.0 MARS=single
2019: 168400.0 MARS=mjoint
2019: 84200.0 MARS=mseparate
2019: 84200.0 MARS=headhh
2019: 168400.0 MARS=widow
2020: 85766.12 MARS=single
2020: 171532.24 MARS=mjoint
2020: 85766.12 MARS=mseparate
2020: 85766.12 MARS=headhh
2020: 171532.24 MARS=widow
2021: 87764.47 MARS=single
2021: 175528.94 MARS=mjoint
2021: 87764.47 MARS=mseparate
2021: 87764.47 MARS=headhh
2021: 175528.94 MARS=widow
2022: 89774.28 MARS=single
2022: 179548.55 MARS=mjoint
2022: 89774.28 MARS=mseparate
2022: 89774.28 MARS=headhh
2022: 179548.55 MARS=widow
2023: 91821.13 MARS=single
2023: 183642.26 MARS=mjoint
2023: 91821.13 MARS=mseparate
2023: 91821.13 MARS=headhh
2023: 183642.26 MARS=widow
2024: 93850.38 MARS=single
2024: 187700.75 MARS=mjoint
2024: 93850.38 MARS=mseparate
2024: 93850.38 MARS=headhh
2024: 187700.75 MARS=widow
2025: 95830.62 MARS=single
2025: 191661.24 MARS=mjoint
2025: 95830.62 MARS=mseparate
2025: 95830.62 MARS=headhh
2025: 191661.24 MARS=widow
2026: 111214.0 MARS=single
2026: 185275.0 MARS=mjoint
2026: 92638.0 MARS=mseparate
2026: 158773.0 MARS=headhh
2026: 185275.0 MARS=widow
Valid Range: min = II_brk2 and max = II_brk4
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt4
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 4
Description: The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.28
2014: 0.28
2015: 0.28
2016: 0.28
2017: 0.28
2018: 0.24
2019: 0.24
2020: 0.24
2021: 0.24
2022: 0.24
2023: 0.24
2024: 0.24
2025: 0.24
2026: 0.28
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk4
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4
Description: Income below this threshold and above tax bracket 3 is taxed at tax rate 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 183250.0 MARS=single
2013: 223050.0 MARS=mjoint
2013: 111525.0 MARS=mseparate
2013: 203150.0 MARS=headhh
2013: 223050.0 MARS=widow
2014: 186350.0 MARS=single
2014: 226850.0 MARS=mjoint
2014: 113425.0 MARS=mseparate
2014: 206600.0 MARS=headhh
2014: 226850.0 MARS=widow
2015: 189300.0 MARS=single
2015: 230450.0 MARS=mjoint
2015: 115225.0 MARS=mseparate
2015: 209850.0 MARS=headhh
2015: 230450.0 MARS=widow
2016: 190150.0 MARS=single
2016: 231450.0 MARS=mjoint
2016: 115725.0 MARS=mseparate
2016: 210800.0 MARS=headhh
2016: 231450.0 MARS=widow
2017: 191650.0 MARS=single
2017: 233350.0 MARS=mjoint
2017: 116675.0 MARS=mseparate
2017: 212500.0 MARS=headhh
2017: 233350.0 MARS=widow
2018: 157500.0 MARS=single
2018: 315000.0 MARS=mjoint
2018: 157500.0 MARS=mseparate
2018: 157500.0 MARS=headhh
2018: 315000.0 MARS=widow
2019: 160725.0 MARS=single
2019: 321450.0 MARS=mjoint
2019: 160725.0 MARS=mseparate
2019: 160700.0 MARS=headhh
2019: 321450.0 MARS=widow
2020: 163714.48 MARS=single
2020: 327428.97 MARS=mjoint
2020: 163714.48 MARS=mseparate
2020: 163689.02 MARS=headhh
2020: 327428.97 MARS=widow
2021: 167529.03 MARS=single
2021: 335058.07 MARS=mjoint
2021: 167529.03 MARS=mseparate
2021: 167502.97 MARS=headhh
2021: 335058.07 MARS=widow
2022: 171365.45 MARS=single
2022: 342730.89 MARS=mjoint
2022: 171365.45 MARS=mseparate
2022: 171338.79 MARS=headhh
2022: 342730.89 MARS=widow
2023: 175272.58 MARS=single
2023: 350545.16 MARS=mjoint
2023: 175272.58 MARS=mseparate
2023: 175245.32 MARS=headhh
2023: 350545.16 MARS=widow
2024: 179146.1 MARS=single
2024: 358292.21 MARS=mjoint
2024: 179146.1 MARS=mseparate
2024: 179118.24 MARS=headhh
2024: 358292.21 MARS=widow
2025: 182926.09 MARS=single
2025: 365852.17 MARS=mjoint
2025: 182926.09 MARS=mseparate
2025: 182897.63 MARS=headhh
2025: 365852.17 MARS=widow
2026: 231927.0 MARS=single
2026: 282391.0 MARS=mjoint
2026: 141195.0 MARS=mseparate
2026: 257159.0 MARS=headhh
2026: 282391.0 MARS=widow
Valid Range: min = II_brk3 and max = II_brk5
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt5
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 5
Description: The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.33
2014: 0.33
2015: 0.33
2016: 0.33
2017: 0.33
2018: 0.32
2019: 0.32
2020: 0.32
2021: 0.32
2022: 0.32
2023: 0.32
2024: 0.32
2025: 0.32
2026: 0.33
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk5
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5
Description: Income below this threshold and above tax bracket 4 is taxed at tax rate 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 398350.0 MARS=single
2013: 398350.0 MARS=mjoint
2013: 199175.0 MARS=mseparate
2013: 398350.0 MARS=headhh
2013: 398350.0 MARS=widow
2014: 405100.0 MARS=single
2014: 405100.0 MARS=mjoint
2014: 202550.0 MARS=mseparate
2014: 405100.0 MARS=headhh
2014: 405100.0 MARS=widow
2015: 411500.0 MARS=single
2015: 411500.0 MARS=mjoint
2015: 205750.0 MARS=mseparate
2015: 411500.0 MARS=headhh
2015: 411500.0 MARS=widow
2016: 413350.0 MARS=single
2016: 413350.0 MARS=mjoint
2016: 206675.0 MARS=mseparate
2016: 413350.0 MARS=headhh
2016: 413350.0 MARS=widow
2017: 416700.0 MARS=single
2017: 416700.0 MARS=mjoint
2017: 208350.0 MARS=mseparate
2017: 416700.0 MARS=headhh
2017: 416700.0 MARS=widow
2018: 200000.0 MARS=single
2018: 400000.0 MARS=mjoint
2018: 200000.0 MARS=mseparate
2018: 200000.0 MARS=headhh
2018: 400000.0 MARS=widow
2019: 204100.0 MARS=single
2019: 408200.0 MARS=mjoint
2019: 204100.0 MARS=mseparate
2019: 204100.0 MARS=headhh
2019: 408200.0 MARS=widow
2020: 207896.26 MARS=single
2020: 415792.52 MARS=mjoint
2020: 207896.26 MARS=mseparate
2020: 207896.26 MARS=headhh
2020: 415792.52 MARS=widow
2021: 212740.24 MARS=single
2021: 425480.49 MARS=mjoint
2021: 212740.24 MARS=mseparate
2021: 212740.24 MARS=headhh
2021: 425480.49 MARS=widow
2022: 217611.99 MARS=single
2022: 435223.99 MARS=mjoint
2022: 217611.99 MARS=mseparate
2022: 217611.99 MARS=headhh
2022: 435223.99 MARS=widow
2023: 222573.55 MARS=single
2023: 445147.1 MARS=mjoint
2023: 222573.55 MARS=mseparate
2023: 222573.55 MARS=headhh
2023: 445147.1 MARS=widow
2024: 227492.42 MARS=single
2024: 454984.85 MARS=mjoint
2024: 227492.42 MARS=mseparate
2024: 227492.42 MARS=headhh
2024: 454984.85 MARS=widow
2025: 232292.51 MARS=single
2025: 464585.03 MARS=mjoint
2025: 232292.51 MARS=mseparate
2025: 232292.51 MARS=headhh
2025: 464585.03 MARS=widow
2026: 504273.0 MARS=single
2026: 504273.0 MARS=mjoint
2026: 252137.0 MARS=mseparate
2026: 504273.0 MARS=headhh
2026: 504273.0 MARS=widow
Valid Range: min = II_brk4 and max = II_brk6
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt6
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 6
Description: The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.35
2014: 0.35
2015: 0.35
2016: 0.35
2017: 0.35
2018: 0.35
2019: 0.35
2020: 0.35
2021: 0.35
2022: 0.35
2023: 0.35
2024: 0.35
2025: 0.35
2026: 0.35
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk6
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket 6
Description: Income below this threshold and above tax bracket 5 is taxed at tax rate 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 400000.0 MARS=single
2013: 450000.0 MARS=mjoint
2013: 225000.0 MARS=mseparate
2013: 425000.0 MARS=headhh
2013: 450000.0 MARS=widow
2014: 406750.0 MARS=single
2014: 457600.0 MARS=mjoint
2014: 228800.0 MARS=mseparate
2014: 432200.0 MARS=headhh
2014: 457600.0 MARS=widow
2015: 413200.0 MARS=single
2015: 464850.0 MARS=mjoint
2015: 232425.0 MARS=mseparate
2015: 439000.0 MARS=headhh
2015: 464850.0 MARS=widow
2016: 415050.0 MARS=single
2016: 466950.0 MARS=mjoint
2016: 233475.0 MARS=mseparate
2016: 441000.0 MARS=headhh
2016: 466950.0 MARS=widow
2017: 418400.0 MARS=single
2017: 470700.0 MARS=mjoint
2017: 235350.0 MARS=mseparate
2017: 444550.0 MARS=headhh
2017: 470700.0 MARS=widow
2018: 500000.0 MARS=single
2018: 600000.0 MARS=mjoint
2018: 300000.0 MARS=mseparate
2018: 500000.0 MARS=headhh
2018: 600000.0 MARS=widow
2019: 510300.0 MARS=single
2019: 612350.0 MARS=mjoint
2019: 306175.0 MARS=mseparate
2019: 510300.0 MARS=headhh
2019: 612350.0 MARS=widow
2020: 519791.58 MARS=single
2020: 623739.71 MARS=mjoint
2020: 311869.86 MARS=mseparate
2020: 519791.58 MARS=headhh
2020: 623739.71 MARS=widow
2021: 531902.72 MARS=single
2021: 638272.85 MARS=mjoint
2021: 319136.42 MARS=mseparate
2021: 531902.72 MARS=headhh
2021: 638272.85 MARS=widow
2022: 544083.3 MARS=single
2022: 652889.29 MARS=mjoint
2022: 326444.65 MARS=mseparate
2022: 544083.3 MARS=headhh
2022: 652889.29 MARS=widow
2023: 556488.4 MARS=single
2023: 667775.17 MARS=mjoint
2023: 333887.58 MARS=mseparate
2023: 556488.4 MARS=headhh
2023: 667775.17 MARS=widow
2024: 568786.79 MARS=single
2024: 682533.0 MARS=mjoint
2024: 341266.5 MARS=mseparate
2024: 568786.79 MARS=headhh
2024: 682533.0 MARS=widow
2025: 580788.19 MARS=single
2025: 696934.45 MARS=mjoint
2025: 348467.22 MARS=mseparate
2025: 580788.19 MARS=headhh
2025: 696934.45 MARS=widow
2026: 506331.0 MARS=single
2026: 569622.0 MARS=mjoint
2026: 284811.0 MARS=mseparate
2026: 537976.0 MARS=headhh
2026: 569622.0 MARS=widow
Valid Range: min = II_brk5 and max = II_brk7
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt7
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 7
Description: The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.396
2014: 0.396
2015: 0.396
2016: 0.396
2017: 0.396
2018: 0.37
2019: 0.37
2020: 0.37
2021: 0.37
2022: 0.37
2023: 0.37
2024: 0.37
2025: 0.37
2026: 0.396
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk7
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket 7
Description: Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
2020: 9e+99 MARS=single
2020: 9e+99 MARS=mjoint
2020: 9e+99 MARS=mseparate
2020: 9e+99 MARS=headhh
2020: 9e+99 MARS=widow
2021: 9e+99 MARS=single
2021: 9e+99 MARS=mjoint
2021: 9e+99 MARS=mseparate
2021: 9e+99 MARS=headhh
2021: 9e+99 MARS=widow
2022: 9e+99 MARS=single
2022: 9e+99 MARS=mjoint
2022: 9e+99 MARS=mseparate
2022: 9e+99 MARS=headhh
2022: 9e+99 MARS=widow
2023: 9e+99 MARS=single
2023: 9e+99 MARS=mjoint
2023: 9e+99 MARS=mseparate
2023: 9e+99 MARS=headhh
2023: 9e+99 MARS=widow
2024: 9e+99 MARS=single
2024: 9e+99 MARS=mjoint
2024: 9e+99 MARS=mseparate
2024: 9e+99 MARS=headhh
2024: 9e+99 MARS=widow
2025: 9e+99 MARS=single
2025: 9e+99 MARS=mjoint
2025: 9e+99 MARS=mseparate
2025: 9e+99 MARS=headhh
2025: 9e+99 MARS=widow
2026: 9e+99 MARS=single
2026: 9e+99 MARS=mjoint
2026: 9e+99 MARS=mseparate
2026: 9e+99 MARS=headhh
2026: 9e+99 MARS=widow
Valid Range: min = II_brk6 and max = 9e+99
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt8
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 8
Description: The tax rate applied to the portion of taxable income above tax bracket 7.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Personal Income — Pass-Through
tc Name: PT_rt1
TB Name: Pass-through income tax rate 1
Description: The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.1
2018: 0.1
2019: 0.1
2020: 0.1
2021: 0.1
2022: 0.1
2023: 0.1
2024: 0.1
2025: 0.1
2026: 0.1
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_brk1
TB Name: Pass-through income tax bracket (upper threshold) 1
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [8925.0, 17850.0, 8925.0, 12750.0, 17850.0]
2014: [9075.0, 18150.0, 9075.0, 12950.0, 18150.0]
2015: [9225.0, 18450.0, 9225.0, 13150.0, 18450.0]
2016: [9275.0, 18550.0, 9275.0, 13250.0, 18550.0]
2017: [9325.0, 18650.0, 9325.0, 13350.0, 18650.0]
2018: [9525.0, 19050.0, 9525.0, 13600.0, 19050.0]
2019: [9700.0, 19400.0, 9700.0, 13850.0, 19400.0]
2020: [9880.42, 19760.84, 9880.42, 14107.61, 19760.84]
2021: [10110.63, 20221.27, 10110.63, 14436.32, 20221.27]
2022: [10342.17, 20684.33, 10342.17, 14766.91, 20684.33]
2023: [10577.97, 21155.94, 10577.97, 15103.59, 21155.94]
2024: [10811.74, 21623.48, 10811.74, 15437.38, 21623.48]
2025: [11039.87, 22079.74, 11039.87, 15763.11, 22079.74]
2026: [11285.0, 22569.0, 11285.0, 16156.0, 22569.0]
Valid Range: min = 0 and max = PT_brk2
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_rt2
TB Name: Pass-through income tax rate 2
Description: The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.12
2019: 0.12
2020: 0.12
2021: 0.12
2022: 0.12
2023: 0.12
2024: 0.12
2025: 0.12
2026: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_brk2
TB Name: Pass-through income tax bracket (upper threshold) 2
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [36250.0, 72500.0, 36250.0, 48600.0, 72500.0]
2014: [36900.0, 73800.0, 36900.0, 49400.0, 73800.0]
2015: [37450.0, 74900.0, 37450.0, 50200.0, 74900.0]
2016: [37650.0, 75300.0, 37650.0, 50400.0, 75300.0]
2017: [37950.0, 75900.0, 37950.0, 50800.0, 75900.0]
2018: [38700.0, 77400.0, 38700.0, 51800.0, 77400.0]
2019: [39475.0, 78950.0, 39475.0, 52850.0, 78950.0]
2020: [40209.24, 80418.47, 40209.24, 53833.01, 80418.47]
2021: [41146.11, 82292.22, 41146.11, 55087.32, 82292.22]
2022: [42088.36, 84176.71, 42088.36, 56348.82, 84176.71]
2023: [43047.97, 86095.94, 43047.97, 57633.57, 86095.94]
2024: [43999.33, 87998.66, 43999.33, 58907.27, 87998.66]
2025: [44927.72, 89855.43, 44927.72, 60150.22, 89855.43]
2026: [45926.0, 91851.0, 45926.0, 61476.0, 91851.0]
Valid Range: min = PT_brk1 and max = PT_brk3
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_rt3
TB Name: Pass-through income tax rate 3
Description: The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.25
2014: 0.25
2015: 0.25
2016: 0.25
2017: 0.25
2018: 0.22
2019: 0.22
2020: 0.22
2021: 0.22
2022: 0.22
2023: 0.22
2024: 0.22
2025: 0.22
2026: 0.25
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_brk3
TB Name: Pass-through income tax bracket (upper threshold) 3
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [87850.0, 146400.0, 73200.0, 125450.0, 146400.0]
2014: [89350.0, 148850.0, 74425.0, 127550.0, 148850.0]
2015: [90750.0, 151200.0, 75600.0, 129600.0, 151200.0]
2016: [91150.0, 151900.0, 75950.0, 130150.0, 151900.0]
2017: [91900.0, 153100.0, 76550.0, 131200.0, 153100.0]
2018: [82500.0, 165000.0, 82500.0, 82500.0, 165000.0]
2019: [84200.0, 168400.0, 84200.0, 84200.0, 168400.0]
2020: [85766.12, 171532.24, 85766.12, 85766.12, 171532.24]
2021: [87764.47, 175528.94, 87764.47, 87764.47, 175528.94]
2022: [89774.28, 179548.55, 89774.28, 89774.28, 179548.55]
2023: [91821.13, 183642.26, 91821.13, 91821.13, 183642.26]
2024: [93850.38, 187700.75, 93850.38, 93850.38, 187700.75]
2025: [95830.62, 191661.24, 95830.62, 95830.62, 191661.24]
2026: [111214.0, 185275.0, 92638.0, 158773.0, 185275.0]
Valid Range: min = PT_brk2 and max = PT_brk4
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_rt4
TB Name: Pass-through income tax rate 4
Description: The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.28
2014: 0.28
2015: 0.28
2016: 0.28
2017: 0.28
2018: 0.24
2019: 0.24
2020: 0.24
2021: 0.24
2022: 0.24
2023: 0.24
2024: 0.24
2025: 0.24
2026: 0.28
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_brk4
TB Name: Pass-through income tax bracket (upper threshold) 4
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [183250.0, 223050.0, 111525.0, 203150.0, 223050.0]
2014: [186350.0, 226850.0, 113425.0, 206600.0, 226850.0]
2015: [189300.0, 230450.0, 115225.0, 209850.0, 230450.0]
2016: [190150.0, 231450.0, 115725.0, 210800.0, 231450.0]
2017: [191650.0, 233350.0, 116675.0, 212500.0, 233350.0]
2018: [157500.0, 315000.0, 157500.0, 157500.0, 315000.0]
2019: [160725.0, 321450.0, 160725.0, 160700.0, 321450.0]
2020: [163714.48, 327428.97, 163714.48, 163689.02, 327428.97]
2021: [167529.03, 335058.07, 167529.03, 167502.97, 335058.07]
2022: [171365.45, 342730.89, 171365.45, 171338.79, 342730.89]
2023: [175272.58, 350545.16, 175272.58, 175245.32, 350545.16]
2024: [179146.1, 358292.21, 179146.1, 179118.24, 358292.21]
2025: [182926.09, 365852.17, 182926.09, 182897.63, 365852.17]
2026: [231927.0, 282391.0, 141195.0, 257159.0, 282391.0]
Valid Range: min = PT_brk3 and max = PT_brk5
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_rt5
TB Name: Pass-through income tax rate 5
Description: The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.33
2014: 0.33
2015: 0.33
2016: 0.33
2017: 0.33
2018: 0.32
2019: 0.32
2020: 0.32
2021: 0.32
2022: 0.32
2023: 0.32
2024: 0.32
2025: 0.32
2026: 0.33
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_brk5
TB Name: Pass-through income tax bracket (upper threshold) 5
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [398350.0, 398350.0, 199175.0, 398350.0, 398350.0]
2014: [405100.0, 405100.0, 202550.0, 405100.0, 405100.0]
2015: [411500.0, 411500.0, 205750.0, 411500.0, 411500.0]
2016: [413350.0, 413350.0, 206675.0, 413350.0, 413350.0]
2017: [416700.0, 416700.0, 208350.0, 416700.0, 416700.0]
2018: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2019: [204100.0, 408200.0, 204100.0, 204100.0, 408200.0]
2020: [207896.26, 415792.52, 207896.26, 207896.26, 415792.52]
2021: [212740.24, 425480.49, 212740.24, 212740.24, 425480.49]
2022: [217611.99, 435223.99, 217611.99, 217611.99, 435223.99]
2023: [222573.55, 445147.1, 222573.55, 222573.55, 445147.1]
2024: [227492.42, 454984.85, 227492.42, 227492.42, 454984.85]
2025: [232292.51, 464585.03, 232292.51, 232292.51, 464585.03]
2026: [504273.0, 504273.0, 252137.0, 504273.0, 504273.0]
Valid Range: min = PT_brk4 and max = PT_brk6
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_rt6
TB Name: Pass-through income tax rate 6
Description: The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.35
2014: 0.35
2015: 0.35
2016: 0.35
2017: 0.35
2018: 0.35
2019: 0.35
2020: 0.35
2021: 0.35
2022: 0.35
2023: 0.35
2024: 0.35
2025: 0.35
2026: 0.35
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_brk6
TB Name: Pass-through income tax bracket (upper threshold) 6
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [400000.0, 450000.0, 225000.0, 425000.0, 450000.0]
2014: [406750.0, 457600.0, 228800.0, 432200.0, 457600.0]
2015: [413200.0, 464850.0, 232425.0, 439000.0, 464850.0]
2016: [415050.0, 466950.0, 233475.0, 441000.0, 466950.0]
2017: [418400.0, 470700.0, 235350.0, 444550.0, 470700.0]
2018: [500000.0, 600000.0, 300000.0, 500000.0, 600000.0]
2019: [510300.0, 612350.0, 306175.0, 510300.0, 612350.0]
2020: [519791.58, 623739.71, 311869.86, 519791.58, 623739.71]
2021: [531902.72, 638272.85, 319136.42, 531902.72, 638272.85]
2022: [544083.3, 652889.29, 326444.65, 544083.3, 652889.29]
2023: [556488.4, 667775.17, 333887.58, 556488.4, 667775.17]
2024: [568786.79, 682533.0, 341266.5, 568786.79, 682533.0]
2025: [580788.19, 696934.45, 348467.22, 580788.19, 696934.45]
2026: [506331.0, 569622.0, 284811.0, 537976.0, 569622.0]
Valid Range: min = PT_brk5 and max = PT_brk7
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_rt7
TB Name: Pass-through income tax rate 7
Description: The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.396
2014: 0.396
2015: 0.396
2016: 0.396
2017: 0.396
2018: 0.37
2019: 0.37
2020: 0.37
2021: 0.37
2022: 0.37
2023: 0.37
2024: 0.37
2025: 0.37
2026: 0.396
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_brk7
TB Name: Extra pass-through income tax bracket
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 6 is taxed at tax rate 7. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2020: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2021: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2022: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2023: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2024: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2025: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2026: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = PT_brk6 and max = 9e+99
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_rt8
TB Name: Extra pass-through income tax rate
Description: The extra tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations above the tax bracket 7.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_EligibleRate_active
TB Name: Share of active business income eligible for PT rate schedule
Description: Eligibility rate of active business income for separate pass-through rates.
Notes: Active business income defined as e00900 + e26270
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_EligibleRate_passive
TB Name: Share of passive business income eligible for PT rate schedule
Description: Eligibility rate of passive business income for mseparate pass-through rates.
Notes: Passive business income defined as e02000 - e26270
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_wages_active_income
TB Name: Wages included in (positive) active business income eligible for PT rates
Description: Whether active business income eligibility base for PT schedule for includes wages.
Notes: Only applies if active business income is positive
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_top_stacking
TB Name: PT taxable income stacked on top of regular taxable income
Description: Whether taxable income eligible for PT rate schedule is stacked on top of regular taxable income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: True
2014: True
2015: True
2016: True
2017: True
2018: True
2019: True
Valid Range: min = False and max = True
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_qbid_rt
TB Name: Pass-through qualified business income deduction rate
Description: Fraction of pass-through business income that may be excluded from taxable income.
Notes: Applies to e00900 + e26270
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.2
2019: 0.2
2020: 0.2
2021: 0.2
2022: 0.2
2023: 0.2
2024: 0.2
2025: 0.2
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_qbid_taxinc_thd
TB Name: Lower threshold of pre-QBID taxable income
Description: Pre-QBID taxable income above this lower threshold implies the QBID amount begins to be limited.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [157500.0, 315000.0, 157500.0, 157500.0, 315000.0]
2019: [160700.0, 321400.0, 160725.0, 160700.0, 321400.0]
2020: [163689.02, 327378.04, 163714.48, 163689.02, 327378.04]
2021: [167502.97, 335005.95, 167529.03, 167502.97, 335005.95]
2022: [171338.79, 342677.58, 171365.45, 171338.79, 342677.58]
2023: [175245.32, 350490.63, 175272.58, 175245.32, 350490.63]
2024: [179118.24, 358236.48, 179146.1, 179118.24, 358236.48]
2025: [182897.63, 365795.27, 182926.09, 182897.63, 365795.27]
2026: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_qbid_taxinc_gap
TB Name: Dollar gap between upper and lower threshold of pre-QBID taxable income
Description: Pre-QBID taxable income above this upper threshold implies the QBID amount is even more limited.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [1.0, 1.0, 1.0, 1.0, 1.0]
2014: [1.0, 1.0, 1.0, 1.0, 1.0]
2015: [1.0, 1.0, 1.0, 1.0, 1.0]
2016: [1.0, 1.0, 1.0, 1.0, 1.0]
2017: [1.0, 1.0, 1.0, 1.0, 1.0]
2018: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2019: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2020: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2021: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2022: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2023: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2024: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2025: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2026: [1.0, 1.0, 1.0, 1.0, 1.0]
Valid Range: min = 1 and max = 9e+99
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_qbid_w2_wages_rt
TB Name: QBID cap rate on pass-through business W-2 wages paid
Description: QBID is capped at this fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds.
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.5
2019: 0.5
2020: 0.5
2021: 0.5
2022: 0.5
2023: 0.5
2024: 0.5
2025: 0.5
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_qbid_alt_w2_wages_rt
TB Name: Alternative QBID cap rate on pass-through business W-2 wages paid
Description: QBID is capped at this fraction of W-2 wages paid by the pass-through business plus some fraction of business property if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.25
2019: 0.25
2020: 0.25
2021: 0.25
2022: 0.25
2023: 0.25
2024: 0.25
2025: 0.25
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Pass-Through
tc Name: PT_qbid_alt_property_rt
TB Name: Alternative QBID cap rate on pass-through business property owned
Description: QBID is capped at this fraction of business property owned plus some fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.025
2019: 0.025
2020: 0.025
2021: 0.025
2022: 0.025
2023: 0.025
2024: 0.025
2025: 0.025
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Personal Income — Pass-Through
tc Name: PT_rt1
TB Name: Pass-through income tax rate 1
Description: The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.1
2018: 0.1
2019: 0.1
2020: 0.1
2021: 0.1
2022: 0.1
2023: 0.1
2024: 0.1
2025: 0.1
2026: 0.1
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk1
TB Name: Pass-through income tax bracket (upper threshold) 1
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 8925.0 MARS=single
2013: 17850.0 MARS=mjoint
2013: 8925.0 MARS=mseparate
2013: 12750.0 MARS=headhh
2013: 17850.0 MARS=widow
2014: 9075.0 MARS=single
2014: 18150.0 MARS=mjoint
2014: 9075.0 MARS=mseparate
2014: 12950.0 MARS=headhh
2014: 18150.0 MARS=widow
2015: 9225.0 MARS=single
2015: 18450.0 MARS=mjoint
2015: 9225.0 MARS=mseparate
2015: 13150.0 MARS=headhh
2015: 18450.0 MARS=widow
2016: 9275.0 MARS=single
2016: 18550.0 MARS=mjoint
2016: 9275.0 MARS=mseparate
2016: 13250.0 MARS=headhh
2016: 18550.0 MARS=widow
2017: 9325.0 MARS=single
2017: 18650.0 MARS=mjoint
2017: 9325.0 MARS=mseparate
2017: 13350.0 MARS=headhh
2017: 18650.0 MARS=widow
2018: 9525.0 MARS=single
2018: 19050.0 MARS=mjoint
2018: 9525.0 MARS=mseparate
2018: 13600.0 MARS=headhh
2018: 19050.0 MARS=widow
2019: 9700.0 MARS=single
2019: 19400.0 MARS=mjoint
2019: 9700.0 MARS=mseparate
2019: 13850.0 MARS=headhh
2019: 19400.0 MARS=widow
2020: 9880.42 MARS=single
2020: 19760.84 MARS=mjoint
2020: 9880.42 MARS=mseparate
2020: 14107.61 MARS=headhh
2020: 19760.84 MARS=widow
2021: 10110.63 MARS=single
2021: 20221.27 MARS=mjoint
2021: 10110.63 MARS=mseparate
2021: 14436.32 MARS=headhh
2021: 20221.27 MARS=widow
2022: 10342.17 MARS=single
2022: 20684.33 MARS=mjoint
2022: 10342.17 MARS=mseparate
2022: 14766.91 MARS=headhh
2022: 20684.33 MARS=widow
2023: 10577.97 MARS=single
2023: 21155.94 MARS=mjoint
2023: 10577.97 MARS=mseparate
2023: 15103.59 MARS=headhh
2023: 21155.94 MARS=widow
2024: 10811.74 MARS=single
2024: 21623.48 MARS=mjoint
2024: 10811.74 MARS=mseparate
2024: 15437.38 MARS=headhh
2024: 21623.48 MARS=widow
2025: 11039.87 MARS=single
2025: 22079.74 MARS=mjoint
2025: 11039.87 MARS=mseparate
2025: 15763.11 MARS=headhh
2025: 22079.74 MARS=widow
2026: 11285.0 MARS=single
2026: 22569.0 MARS=mjoint
2026: 11285.0 MARS=mseparate
2026: 16156.0 MARS=headhh
2026: 22569.0 MARS=widow
Valid Range: min = 0 and max = PT_brk2
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt2
TB Name: Pass-through income tax rate 2
Description: The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.12
2019: 0.12
2020: 0.12
2021: 0.12
2022: 0.12
2023: 0.12
2024: 0.12
2025: 0.12
2026: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk2
TB Name: Pass-through income tax bracket (upper threshold) 2
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 36250.0 MARS=single
2013: 72500.0 MARS=mjoint
2013: 36250.0 MARS=mseparate
2013: 48600.0 MARS=headhh
2013: 72500.0 MARS=widow
2014: 36900.0 MARS=single
2014: 73800.0 MARS=mjoint
2014: 36900.0 MARS=mseparate
2014: 49400.0 MARS=headhh
2014: 73800.0 MARS=widow
2015: 37450.0 MARS=single
2015: 74900.0 MARS=mjoint
2015: 37450.0 MARS=mseparate
2015: 50200.0 MARS=headhh
2015: 74900.0 MARS=widow
2016: 37650.0 MARS=single
2016: 75300.0 MARS=mjoint
2016: 37650.0 MARS=mseparate
2016: 50400.0 MARS=headhh
2016: 75300.0 MARS=widow
2017: 37950.0 MARS=single
2017: 75900.0 MARS=mjoint
2017: 37950.0 MARS=mseparate
2017: 50800.0 MARS=headhh
2017: 75900.0 MARS=widow
2018: 38700.0 MARS=single
2018: 77400.0 MARS=mjoint
2018: 38700.0 MARS=mseparate
2018: 51800.0 MARS=headhh
2018: 77400.0 MARS=widow
2019: 39475.0 MARS=single
2019: 78950.0 MARS=mjoint
2019: 39475.0 MARS=mseparate
2019: 52850.0 MARS=headhh
2019: 78950.0 MARS=widow
2020: 40209.24 MARS=single
2020: 80418.47 MARS=mjoint
2020: 40209.24 MARS=mseparate
2020: 53833.01 MARS=headhh
2020: 80418.47 MARS=widow
2021: 41146.11 MARS=single
2021: 82292.22 MARS=mjoint
2021: 41146.11 MARS=mseparate
2021: 55087.32 MARS=headhh
2021: 82292.22 MARS=widow
2022: 42088.36 MARS=single
2022: 84176.71 MARS=mjoint
2022: 42088.36 MARS=mseparate
2022: 56348.82 MARS=headhh
2022: 84176.71 MARS=widow
2023: 43047.97 MARS=single
2023: 86095.94 MARS=mjoint
2023: 43047.97 MARS=mseparate
2023: 57633.57 MARS=headhh
2023: 86095.94 MARS=widow
2024: 43999.33 MARS=single
2024: 87998.66 MARS=mjoint
2024: 43999.33 MARS=mseparate
2024: 58907.27 MARS=headhh
2024: 87998.66 MARS=widow
2025: 44927.72 MARS=single
2025: 89855.43 MARS=mjoint
2025: 44927.72 MARS=mseparate
2025: 60150.22 MARS=headhh
2025: 89855.43 MARS=widow
2026: 45926.0 MARS=single
2026: 91851.0 MARS=mjoint
2026: 45926.0 MARS=mseparate
2026: 61476.0 MARS=headhh
2026: 91851.0 MARS=widow
Valid Range: min = PT_brk1 and max = PT_brk3
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt3
TB Name: Pass-through income tax rate 3
Description: The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.25
2014: 0.25
2015: 0.25
2016: 0.25
2017: 0.25
2018: 0.22
2019: 0.22
2020: 0.22
2021: 0.22
2022: 0.22
2023: 0.22
2024: 0.22
2025: 0.22
2026: 0.25
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk3
TB Name: Pass-through income tax bracket (upper threshold) 3
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 87850.0 MARS=single
2013: 146400.0 MARS=mjoint
2013: 73200.0 MARS=mseparate
2013: 125450.0 MARS=headhh
2013: 146400.0 MARS=widow
2014: 89350.0 MARS=single
2014: 148850.0 MARS=mjoint
2014: 74425.0 MARS=mseparate
2014: 127550.0 MARS=headhh
2014: 148850.0 MARS=widow
2015: 90750.0 MARS=single
2015: 151200.0 MARS=mjoint
2015: 75600.0 MARS=mseparate
2015: 129600.0 MARS=headhh
2015: 151200.0 MARS=widow
2016: 91150.0 MARS=single
2016: 151900.0 MARS=mjoint
2016: 75950.0 MARS=mseparate
2016: 130150.0 MARS=headhh
2016: 151900.0 MARS=widow
2017: 91900.0 MARS=single
2017: 153100.0 MARS=mjoint
2017: 76550.0 MARS=mseparate
2017: 131200.0 MARS=headhh
2017: 153100.0 MARS=widow
2018: 82500.0 MARS=single
2018: 165000.0 MARS=mjoint
2018: 82500.0 MARS=mseparate
2018: 82500.0 MARS=headhh
2018: 165000.0 MARS=widow
2019: 84200.0 MARS=single
2019: 168400.0 MARS=mjoint
2019: 84200.0 MARS=mseparate
2019: 84200.0 MARS=headhh
2019: 168400.0 MARS=widow
2020: 85766.12 MARS=single
2020: 171532.24 MARS=mjoint
2020: 85766.12 MARS=mseparate
2020: 85766.12 MARS=headhh
2020: 171532.24 MARS=widow
2021: 87764.47 MARS=single
2021: 175528.94 MARS=mjoint
2021: 87764.47 MARS=mseparate
2021: 87764.47 MARS=headhh
2021: 175528.94 MARS=widow
2022: 89774.28 MARS=single
2022: 179548.55 MARS=mjoint
2022: 89774.28 MARS=mseparate
2022: 89774.28 MARS=headhh
2022: 179548.55 MARS=widow
2023: 91821.13 MARS=single
2023: 183642.26 MARS=mjoint
2023: 91821.13 MARS=mseparate
2023: 91821.13 MARS=headhh
2023: 183642.26 MARS=widow
2024: 93850.38 MARS=single
2024: 187700.75 MARS=mjoint
2024: 93850.38 MARS=mseparate
2024: 93850.38 MARS=headhh
2024: 187700.75 MARS=widow
2025: 95830.62 MARS=single
2025: 191661.24 MARS=mjoint
2025: 95830.62 MARS=mseparate
2025: 95830.62 MARS=headhh
2025: 191661.24 MARS=widow
2026: 111214.0 MARS=single
2026: 185275.0 MARS=mjoint
2026: 92638.0 MARS=mseparate
2026: 158773.0 MARS=headhh
2026: 185275.0 MARS=widow
Valid Range: min = PT_brk2 and max = PT_brk4
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt4
TB Name: Pass-through income tax rate 4
Description: The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.28
2014: 0.28
2015: 0.28
2016: 0.28
2017: 0.28
2018: 0.24
2019: 0.24
2020: 0.24
2021: 0.24
2022: 0.24
2023: 0.24
2024: 0.24
2025: 0.24
2026: 0.28
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk4
TB Name: Pass-through income tax bracket (upper threshold) 4
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 183250.0 MARS=single
2013: 223050.0 MARS=mjoint
2013: 111525.0 MARS=mseparate
2013: 203150.0 MARS=headhh
2013: 223050.0 MARS=widow
2014: 186350.0 MARS=single
2014: 226850.0 MARS=mjoint
2014: 113425.0 MARS=mseparate
2014: 206600.0 MARS=headhh
2014: 226850.0 MARS=widow
2015: 189300.0 MARS=single
2015: 230450.0 MARS=mjoint
2015: 115225.0 MARS=mseparate
2015: 209850.0 MARS=headhh
2015: 230450.0 MARS=widow
2016: 190150.0 MARS=single
2016: 231450.0 MARS=mjoint
2016: 115725.0 MARS=mseparate
2016: 210800.0 MARS=headhh
2016: 231450.0 MARS=widow
2017: 191650.0 MARS=single
2017: 233350.0 MARS=mjoint
2017: 116675.0 MARS=mseparate
2017: 212500.0 MARS=headhh
2017: 233350.0 MARS=widow
2018: 157500.0 MARS=single
2018: 315000.0 MARS=mjoint
2018: 157500.0 MARS=mseparate
2018: 157500.0 MARS=headhh
2018: 315000.0 MARS=widow
2019: 160725.0 MARS=single
2019: 321450.0 MARS=mjoint
2019: 160725.0 MARS=mseparate
2019: 160700.0 MARS=headhh
2019: 321450.0 MARS=widow
2020: 163714.48 MARS=single
2020: 327428.97 MARS=mjoint
2020: 163714.48 MARS=mseparate
2020: 163689.02 MARS=headhh
2020: 327428.97 MARS=widow
2021: 167529.03 MARS=single
2021: 335058.07 MARS=mjoint
2021: 167529.03 MARS=mseparate
2021: 167502.97 MARS=headhh
2021: 335058.07 MARS=widow
2022: 171365.45 MARS=single
2022: 342730.89 MARS=mjoint
2022: 171365.45 MARS=mseparate
2022: 171338.79 MARS=headhh
2022: 342730.89 MARS=widow
2023: 175272.58 MARS=single
2023: 350545.16 MARS=mjoint
2023: 175272.58 MARS=mseparate
2023: 175245.32 MARS=headhh
2023: 350545.16 MARS=widow
2024: 179146.1 MARS=single
2024: 358292.21 MARS=mjoint
2024: 179146.1 MARS=mseparate
2024: 179118.24 MARS=headhh
2024: 358292.21 MARS=widow
2025: 182926.09 MARS=single
2025: 365852.17 MARS=mjoint
2025: 182926.09 MARS=mseparate
2025: 182897.63 MARS=headhh
2025: 365852.17 MARS=widow
2026: 231927.0 MARS=single
2026: 282391.0 MARS=mjoint
2026: 141195.0 MARS=mseparate
2026: 257159.0 MARS=headhh
2026: 282391.0 MARS=widow
Valid Range: min = PT_brk3 and max = PT_brk5
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt5
TB Name: Pass-through income tax rate 5
Description: The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.33
2014: 0.33
2015: 0.33
2016: 0.33
2017: 0.33
2018: 0.32
2019: 0.32
2020: 0.32
2021: 0.32
2022: 0.32
2023: 0.32
2024: 0.32
2025: 0.32
2026: 0.33
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk5
TB Name: Pass-through income tax bracket (upper threshold) 5
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 398350.0 MARS=single
2013: 398350.0 MARS=mjoint
2013: 199175.0 MARS=mseparate
2013: 398350.0 MARS=headhh
2013: 398350.0 MARS=widow
2014: 405100.0 MARS=single
2014: 405100.0 MARS=mjoint
2014: 202550.0 MARS=mseparate
2014: 405100.0 MARS=headhh
2014: 405100.0 MARS=widow
2015: 411500.0 MARS=single
2015: 411500.0 MARS=mjoint
2015: 205750.0 MARS=mseparate
2015: 411500.0 MARS=headhh
2015: 411500.0 MARS=widow
2016: 413350.0 MARS=single
2016: 413350.0 MARS=mjoint
2016: 206675.0 MARS=mseparate
2016: 413350.0 MARS=headhh
2016: 413350.0 MARS=widow
2017: 416700.0 MARS=single
2017: 416700.0 MARS=mjoint
2017: 208350.0 MARS=mseparate
2017: 416700.0 MARS=headhh
2017: 416700.0 MARS=widow
2018: 200000.0 MARS=single
2018: 400000.0 MARS=mjoint
2018: 200000.0 MARS=mseparate
2018: 200000.0 MARS=headhh
2018: 400000.0 MARS=widow
2019: 204100.0 MARS=single
2019: 408200.0 MARS=mjoint
2019: 204100.0 MARS=mseparate
2019: 204100.0 MARS=headhh
2019: 408200.0 MARS=widow
2020: 207896.26 MARS=single
2020: 415792.52 MARS=mjoint
2020: 207896.26 MARS=mseparate
2020: 207896.26 MARS=headhh
2020: 415792.52 MARS=widow
2021: 212740.24 MARS=single
2021: 425480.49 MARS=mjoint
2021: 212740.24 MARS=mseparate
2021: 212740.24 MARS=headhh
2021: 425480.49 MARS=widow
2022: 217611.99 MARS=single
2022: 435223.99 MARS=mjoint
2022: 217611.99 MARS=mseparate
2022: 217611.99 MARS=headhh
2022: 435223.99 MARS=widow
2023: 222573.55 MARS=single
2023: 445147.1 MARS=mjoint
2023: 222573.55 MARS=mseparate
2023: 222573.55 MARS=headhh
2023: 445147.1 MARS=widow
2024: 227492.42 MARS=single
2024: 454984.85 MARS=mjoint
2024: 227492.42 MARS=mseparate
2024: 227492.42 MARS=headhh
2024: 454984.85 MARS=widow
2025: 232292.51 MARS=single
2025: 464585.03 MARS=mjoint
2025: 232292.51 MARS=mseparate
2025: 232292.51 MARS=headhh
2025: 464585.03 MARS=widow
2026: 504273.0 MARS=single
2026: 504273.0 MARS=mjoint
2026: 252137.0 MARS=mseparate
2026: 504273.0 MARS=headhh
2026: 504273.0 MARS=widow
Valid Range: min = PT_brk4 and max = PT_brk6
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt6
TB Name: Pass-through income tax rate 6
Description: The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.35
2014: 0.35
2015: 0.35
2016: 0.35
2017: 0.35
2018: 0.35
2019: 0.35
2020: 0.35
2021: 0.35
2022: 0.35
2023: 0.35
2024: 0.35
2025: 0.35
2026: 0.35
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk6
TB Name: Pass-through income tax bracket (upper threshold) 6
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 400000.0 MARS=single
2013: 450000.0 MARS=mjoint
2013: 225000.0 MARS=mseparate
2013: 425000.0 MARS=headhh
2013: 450000.0 MARS=widow
2014: 406750.0 MARS=single
2014: 457600.0 MARS=mjoint
2014: 228800.0 MARS=mseparate
2014: 432200.0 MARS=headhh
2014: 457600.0 MARS=widow
2015: 413200.0 MARS=single
2015: 464850.0 MARS=mjoint
2015: 232425.0 MARS=mseparate
2015: 439000.0 MARS=headhh
2015: 464850.0 MARS=widow
2016: 415050.0 MARS=single
2016: 466950.0 MARS=mjoint
2016: 233475.0 MARS=mseparate
2016: 441000.0 MARS=headhh
2016: 466950.0 MARS=widow
2017: 418400.0 MARS=single
2017: 470700.0 MARS=mjoint
2017: 235350.0 MARS=mseparate
2017: 444550.0 MARS=headhh
2017: 470700.0 MARS=widow
2018: 500000.0 MARS=single
2018: 600000.0 MARS=mjoint
2018: 300000.0 MARS=mseparate
2018: 500000.0 MARS=headhh
2018: 600000.0 MARS=widow
2019: 510300.0 MARS=single
2019: 612350.0 MARS=mjoint
2019: 306175.0 MARS=mseparate
2019: 510300.0 MARS=headhh
2019: 612350.0 MARS=widow
2020: 519791.58 MARS=single
2020: 623739.71 MARS=mjoint
2020: 311869.86 MARS=mseparate
2020: 519791.58 MARS=headhh
2020: 623739.71 MARS=widow
2021: 531902.72 MARS=single
2021: 638272.85 MARS=mjoint
2021: 319136.42 MARS=mseparate
2021: 531902.72 MARS=headhh
2021: 638272.85 MARS=widow
2022: 544083.3 MARS=single
2022: 652889.29 MARS=mjoint
2022: 326444.65 MARS=mseparate
2022: 544083.3 MARS=headhh
2022: 652889.29 MARS=widow
2023: 556488.4 MARS=single
2023: 667775.17 MARS=mjoint
2023: 333887.58 MARS=mseparate
2023: 556488.4 MARS=headhh
2023: 667775.17 MARS=widow
2024: 568786.79 MARS=single
2024: 682533.0 MARS=mjoint
2024: 341266.5 MARS=mseparate
2024: 568786.79 MARS=headhh
2024: 682533.0 MARS=widow
2025: 580788.19 MARS=single
2025: 696934.45 MARS=mjoint
2025: 348467.22 MARS=mseparate
2025: 580788.19 MARS=headhh
2025: 696934.45 MARS=widow
2026: 506331.0 MARS=single
2026: 569622.0 MARS=mjoint
2026: 284811.0 MARS=mseparate
2026: 537976.0 MARS=headhh
2026: 569622.0 MARS=widow
Valid Range: min = PT_brk5 and max = PT_brk7
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt7
TB Name: Pass-through income tax rate 7
Description: The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.396
2014: 0.396
2015: 0.396
2016: 0.396
2017: 0.396
2018: 0.37
2019: 0.37
2020: 0.37
2021: 0.37
2022: 0.37
2023: 0.37
2024: 0.37
2025: 0.37
2026: 0.396
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk7
TB Name: Extra pass-through income tax bracket
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 6 is taxed at tax rate 7. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
2020: 9e+99 MARS=single
2020: 9e+99 MARS=mjoint
2020: 9e+99 MARS=mseparate
2020: 9e+99 MARS=headhh
2020: 9e+99 MARS=widow
2021: 9e+99 MARS=single
2021: 9e+99 MARS=mjoint
2021: 9e+99 MARS=mseparate
2021: 9e+99 MARS=headhh
2021: 9e+99 MARS=widow
2022: 9e+99 MARS=single
2022: 9e+99 MARS=mjoint
2022: 9e+99 MARS=mseparate
2022: 9e+99 MARS=headhh
2022: 9e+99 MARS=widow
2023: 9e+99 MARS=single
2023: 9e+99 MARS=mjoint
2023: 9e+99 MARS=mseparate
2023: 9e+99 MARS=headhh
2023: 9e+99 MARS=widow
2024: 9e+99 MARS=single
2024: 9e+99 MARS=mjoint
2024: 9e+99 MARS=mseparate
2024: 9e+99 MARS=headhh
2024: 9e+99 MARS=widow
2025: 9e+99 MARS=single
2025: 9e+99 MARS=mjoint
2025: 9e+99 MARS=mseparate
2025: 9e+99 MARS=headhh
2025: 9e+99 MARS=widow
2026: 9e+99 MARS=single
2026: 9e+99 MARS=mjoint
2026: 9e+99 MARS=mseparate
2026: 9e+99 MARS=headhh
2026: 9e+99 MARS=widow
Valid Range: min = PT_brk6 and max = 9e+99
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt8
TB Name: Extra pass-through income tax rate
Description: The extra tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations above the tax bracket 7.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_EligibleRate_active
TB Name: Share of active business income eligible for PT rate schedule
Description: Eligibility rate of active business income for separate pass-through rates.
Notes: Active business income defined as e00900 + e26270
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_EligibleRate_passive
TB Name: Share of passive business income eligible for PT rate schedule
Description: Eligibility rate of passive business income for mseparate pass-through rates.
Notes: Passive business income defined as e02000 - e26270
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_wages_active_income
TB Name: Wages included in (positive) active business income eligible for PT rates
Description: Whether active business income eligibility base for PT schedule for includes wages.
Notes: Only applies if active business income is positive
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_top_stacking
TB Name: PT taxable income stacked on top of regular taxable income
Description: Whether taxable income eligible for PT rate schedule is stacked on top of regular taxable income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: True
Valid Range: min = False and max = True
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_rt
TB Name: Pass-through qualified business income deduction rate
Description: Fraction of pass-through business income that may be excluded from taxable income.
Notes: Applies to e00900 + e26270
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.2
2019: 0.2
2020: 0.2
2021: 0.2
2022: 0.2
2023: 0.2
2024: 0.2
2025: 0.2
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_taxinc_thd
TB Name: Lower threshold of pre-QBID taxable income
Description: Pre-QBID taxable income above this lower threshold implies the QBID amount begins to be limited.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 157500.0 MARS=single
2018: 315000.0 MARS=mjoint
2018: 157500.0 MARS=mseparate
2018: 157500.0 MARS=headhh
2018: 315000.0 MARS=widow
2019: 160700.0 MARS=single
2019: 321400.0 MARS=mjoint
2019: 160725.0 MARS=mseparate
2019: 160700.0 MARS=headhh
2019: 321400.0 MARS=widow
2020: 163689.02 MARS=single
2020: 327378.04 MARS=mjoint
2020: 163714.48 MARS=mseparate
2020: 163689.02 MARS=headhh
2020: 327378.04 MARS=widow
2021: 167502.97 MARS=single
2021: 335005.95 MARS=mjoint
2021: 167529.03 MARS=mseparate
2021: 167502.97 MARS=headhh
2021: 335005.95 MARS=widow
2022: 171338.79 MARS=single
2022: 342677.58 MARS=mjoint
2022: 171365.45 MARS=mseparate
2022: 171338.79 MARS=headhh
2022: 342677.58 MARS=widow
2023: 175245.32 MARS=single
2023: 350490.63 MARS=mjoint
2023: 175272.58 MARS=mseparate
2023: 175245.32 MARS=headhh
2023: 350490.63 MARS=widow
2024: 179118.24 MARS=single
2024: 358236.48 MARS=mjoint
2024: 179146.1 MARS=mseparate
2024: 179118.24 MARS=headhh
2024: 358236.48 MARS=widow
2025: 182897.63 MARS=single
2025: 365795.27 MARS=mjoint
2025: 182926.09 MARS=mseparate
2025: 182897.63 MARS=headhh
2025: 365795.27 MARS=widow
2026: 0.0 MARS=single
2026: 0.0 MARS=mjoint
2026: 0.0 MARS=mseparate
2026: 0.0 MARS=headhh
2026: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_taxinc_gap
TB Name: Dollar gap between upper and lower threshold of pre-QBID taxable income
Description: Pre-QBID taxable income above this upper threshold implies the QBID amount is even more limited.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0 MARS=single
2013: 1.0 MARS=mjoint
2013: 1.0 MARS=mseparate
2013: 1.0 MARS=headhh
2013: 1.0 MARS=widow
2014: 1.0 MARS=single
2014: 1.0 MARS=mjoint
2014: 1.0 MARS=mseparate
2014: 1.0 MARS=headhh
2014: 1.0 MARS=widow
2015: 1.0 MARS=single
2015: 1.0 MARS=mjoint
2015: 1.0 MARS=mseparate
2015: 1.0 MARS=headhh
2015: 1.0 MARS=widow
2016: 1.0 MARS=single
2016: 1.0 MARS=mjoint
2016: 1.0 MARS=mseparate
2016: 1.0 MARS=headhh
2016: 1.0 MARS=widow
2017: 1.0 MARS=single
2017: 1.0 MARS=mjoint
2017: 1.0 MARS=mseparate
2017: 1.0 MARS=headhh
2017: 1.0 MARS=widow
2018: 50000.0 MARS=single
2018: 100000.0 MARS=mjoint
2018: 50000.0 MARS=mseparate
2018: 50000.0 MARS=headhh
2018: 100000.0 MARS=widow
2019: 50000.0 MARS=single
2019: 100000.0 MARS=mjoint
2019: 50000.0 MARS=mseparate
2019: 50000.0 MARS=headhh
2019: 100000.0 MARS=widow
2020: 50000.0 MARS=single
2020: 100000.0 MARS=mjoint
2020: 50000.0 MARS=mseparate
2020: 50000.0 MARS=headhh
2020: 100000.0 MARS=widow
2021: 50000.0 MARS=single
2021: 100000.0 MARS=mjoint
2021: 50000.0 MARS=mseparate
2021: 50000.0 MARS=headhh
2021: 100000.0 MARS=widow
2022: 50000.0 MARS=single
2022: 100000.0 MARS=mjoint
2022: 50000.0 MARS=mseparate
2022: 50000.0 MARS=headhh
2022: 100000.0 MARS=widow
2023: 50000.0 MARS=single
2023: 100000.0 MARS=mjoint
2023: 50000.0 MARS=mseparate
2023: 50000.0 MARS=headhh
2023: 100000.0 MARS=widow
2024: 50000.0 MARS=single
2024: 100000.0 MARS=mjoint
2024: 50000.0 MARS=mseparate
2024: 50000.0 MARS=headhh
2024: 100000.0 MARS=widow
2025: 50000.0 MARS=single
2025: 100000.0 MARS=mjoint
2025: 50000.0 MARS=mseparate
2025: 50000.0 MARS=headhh
2025: 100000.0 MARS=widow
2026: 1.0 MARS=single
2026: 1.0 MARS=mjoint
2026: 1.0 MARS=mseparate
2026: 1.0 MARS=headhh
2026: 1.0 MARS=widow
Valid Range: min = 1 and max = 9e+99
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_w2_wages_rt
TB Name: QBID cap rate on pass-through business W-2 wages paid
Description: QBID is capped at this fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds.
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.5
2019: 0.5
2020: 0.5
2021: 0.5
2022: 0.5
2023: 0.5
2024: 0.5
2025: 0.5
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_alt_w2_wages_rt
TB Name: Alternative QBID cap rate on pass-through business W-2 wages paid
Description: QBID is capped at this fraction of W-2 wages paid by the pass-through business plus some fraction of business property if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.25
2019: 0.25
2020: 0.25
2021: 0.25
2022: 0.25
2023: 0.25
2024: 0.25
2025: 0.25
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_alt_property_rt
TB Name: Alternative QBID cap rate on pass-through business property owned
Description: QBID is capped at this fraction of business property owned plus some fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.025
2019: 0.025
2020: 0.025
2021: 0.025
2022: 0.025
2023: 0.025
2024: 0.025
2025: 0.025
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Personal Income — Alternative Minimum Tax
tc Name: AMT_em
TB Name: AMT exemption amount
Description: The amount of AMT taxable income exempted from AMT.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [51900.0, 80800.0, 40400.0, 51900.0, 80800.0]
2014: [52800.0, 82100.0, 41050.0, 52800.0, 82100.0]
2015: [53600.0, 83400.0, 41700.0, 53600.0, 83400.0]
2016: [53900.0, 83800.0, 41900.0, 53900.0, 83800.0]
2017: [54300.0, 84500.0, 42250.0, 54300.0, 84500.0]
2018: [70300.0, 109400.0, 54700.0, 70300.0, 109400.0]
2019: [71700.0, 111700.0, 55850.0, 71700.0, 111700.0]
2020: [73033.62, 113777.62, 56888.81, 73033.62, 113777.62]
2021: [74735.3, 116428.64, 58214.32, 74735.3, 116428.64]
2022: [76446.74, 119094.85, 59547.43, 76446.74, 119094.85]
2023: [78189.73, 121810.22, 60905.11, 78189.73, 121810.22]
2024: [79917.72, 124502.22, 62251.11, 79917.72, 124502.22]
2025: [81603.98, 127129.22, 63564.61, 81603.98, 127129.22]
2026: [65712.0, 102258.0, 51129.0, 65712.0, 102258.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Personal Income — Alternative Minimum Tax
tc Name: AMT_prt
TB Name: AMT exemption phaseout rate
Description: AMT exemption will decrease at this rate for each dollar of AMT taxable income exceeding AMT phaseout start.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.25
2014: 0.25
2015: 0.25
2016: 0.25
2017: 0.25
2018: 0.25
2019: 0.25
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Alternative Minimum Tax
tc Name: AMT_em_ps
TB Name: AMT exemption phaseout start
Description: AMT exemption starts to decrease when AMT taxable income goes beyond this threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [115400.0, 153900.0, 76950.0, 115400.0, 153900.0]
2014: [117300.0, 156500.0, 78250.0, 117300.0, 156500.0]
2015: [119200.0, 158900.0, 79450.0, 119200.0, 158900.0]
2016: [119700.0, 159700.0, 79850.0, 119700.0, 159700.0]
2017: [120700.0, 160900.0, 80450.0, 120700.0, 160900.0]
2018: [500000.0, 1000000.0, 500000.0, 500000.0, 1000000.0]
2019: [510300.0, 1020600.0, 510300.0, 510300.0, 1020600.0]
2020: [519791.58, 1039583.16, 519791.58, 519791.58, 1039583.16]
2021: [531902.72, 1063805.45, 531902.72, 531902.72, 1063805.45]
2022: [544083.3, 1088166.59, 544083.3, 544083.3, 1088166.59]
2023: [556488.4, 1112976.79, 556488.4, 556488.4, 1112976.79]
2024: [568786.79, 1137573.58, 568786.79, 568786.79, 1137573.58]
2025: [580788.19, 1161576.38, 580788.19, 580788.19, 1161576.38]
2026: [146066.0, 194715.0, 97357.0, 146066.0, 194715.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Personal Income — Alternative Minimum Tax
tc Name: AMT_rt1
TB Name: AMT rate 1
Description: The tax rate applied to the portion of AMT taxable income below the surtax threshold, AMT bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.26
2014: 0.26
2015: 0.26
2016: 0.26
2017: 0.26
2018: 0.26
2019: 0.26
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Personal Income — Alternative Minimum Tax
tc Name: AMT_brk1
TB Name: AMT bracket 1 (upper threshold)
Description: AMT taxable income below this is subject to AMT rate 1 and above it is subject to AMT rate 1 + the additional AMT rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 179500.0
2014: 182500.0
2015: 185400.0
2016: 186300.0
2017: 187800.0
2018: 191100.0
2019: 194800.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Personal Income — Alternative Minimum Tax
tc Name: AMT_rt2
TB Name: Additional AMT rate for AMT taxable income above AMT bracket 1
Description: The additional tax rate applied to the portion of AMT income above the AMT bracket 1.
Notes: This is the additional tax rate (on top of AMT rate 1) for AMT income above AMT bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.02
2014: 0.02
2015: 0.02
2016: 0.02
2017: 0.02
2018: 0.02
2019: 0.02
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Personal Income — Alternative Minimum Tax
tc Name: AMT_em
TB Name: AMT exemption amount
Description: The amount of AMT taxable income exempted from AMT.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 51900.0 MARS=single
2013: 80800.0 MARS=mjoint
2013: 40400.0 MARS=mseparate
2013: 51900.0 MARS=headhh
2013: 80800.0 MARS=widow
2014: 52800.0 MARS=single
2014: 82100.0 MARS=mjoint
2014: 41050.0 MARS=mseparate
2014: 52800.0 MARS=headhh
2014: 82100.0 MARS=widow
2015: 53600.0 MARS=single
2015: 83400.0 MARS=mjoint
2015: 41700.0 MARS=mseparate
2015: 53600.0 MARS=headhh
2015: 83400.0 MARS=widow
2016: 53900.0 MARS=single
2016: 83800.0 MARS=mjoint
2016: 41900.0 MARS=mseparate
2016: 53900.0 MARS=headhh
2016: 83800.0 MARS=widow
2017: 54300.0 MARS=single
2017: 84500.0 MARS=mjoint
2017: 42250.0 MARS=mseparate
2017: 54300.0 MARS=headhh
2017: 84500.0 MARS=widow
2018: 70300.0 MARS=single
2018: 109400.0 MARS=mjoint
2018: 54700.0 MARS=mseparate
2018: 70300.0 MARS=headhh
2018: 109400.0 MARS=widow
2019: 71700.0 MARS=single
2019: 111700.0 MARS=mjoint
2019: 55850.0 MARS=mseparate
2019: 71700.0 MARS=headhh
2019: 111700.0 MARS=widow
2020: 73033.62 MARS=single
2020: 113777.62 MARS=mjoint
2020: 56888.81 MARS=mseparate
2020: 73033.62 MARS=headhh
2020: 113777.62 MARS=widow
2021: 74735.3 MARS=single
2021: 116428.64 MARS=mjoint
2021: 58214.32 MARS=mseparate
2021: 74735.3 MARS=headhh
2021: 116428.64 MARS=widow
2022: 76446.74 MARS=single
2022: 119094.85 MARS=mjoint
2022: 59547.43 MARS=mseparate
2022: 76446.74 MARS=headhh
2022: 119094.85 MARS=widow
2023: 78189.73 MARS=single
2023: 121810.22 MARS=mjoint
2023: 60905.11 MARS=mseparate
2023: 78189.73 MARS=headhh
2023: 121810.22 MARS=widow
2024: 79917.72 MARS=single
2024: 124502.22 MARS=mjoint
2024: 62251.11 MARS=mseparate
2024: 79917.72 MARS=headhh
2024: 124502.22 MARS=widow
2025: 81603.98 MARS=single
2025: 127129.22 MARS=mjoint
2025: 63564.61 MARS=mseparate
2025: 81603.98 MARS=headhh
2025: 127129.22 MARS=widow
2026: 65712.0 MARS=single
2026: 102258.0 MARS=mjoint
2026: 51129.0 MARS=mseparate
2026: 65712.0 MARS=headhh
2026: 102258.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_prt
TB Name: AMT exemption phaseout rate
Description: AMT exemption will decrease at this rate for each dollar of AMT taxable income exceeding AMT phaseout start.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.25
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_em_ps
TB Name: AMT exemption phaseout start
Description: AMT exemption starts to decrease when AMT taxable income goes beyond this threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 115400.0 MARS=single
2013: 153900.0 MARS=mjoint
2013: 76950.0 MARS=mseparate
2013: 115400.0 MARS=headhh
2013: 153900.0 MARS=widow
2014: 117300.0 MARS=single
2014: 156500.0 MARS=mjoint
2014: 78250.0 MARS=mseparate
2014: 117300.0 MARS=headhh
2014: 156500.0 MARS=widow
2015: 119200.0 MARS=single
2015: 158900.0 MARS=mjoint
2015: 79450.0 MARS=mseparate
2015: 119200.0 MARS=headhh
2015: 158900.0 MARS=widow
2016: 119700.0 MARS=single
2016: 159700.0 MARS=mjoint
2016: 79850.0 MARS=mseparate
2016: 119700.0 MARS=headhh
2016: 159700.0 MARS=widow
2017: 120700.0 MARS=single
2017: 160900.0 MARS=mjoint
2017: 80450.0 MARS=mseparate
2017: 120700.0 MARS=headhh
2017: 160900.0 MARS=widow
2018: 500000.0 MARS=single
2018: 1000000.0 MARS=mjoint
2018: 500000.0 MARS=mseparate
2018: 500000.0 MARS=headhh
2018: 1000000.0 MARS=widow
2019: 510300.0 MARS=single
2019: 1020600.0 MARS=mjoint
2019: 510300.0 MARS=mseparate
2019: 510300.0 MARS=headhh
2019: 1020600.0 MARS=widow
2020: 519791.58 MARS=single
2020: 1039583.16 MARS=mjoint
2020: 519791.58 MARS=mseparate
2020: 519791.58 MARS=headhh
2020: 1039583.16 MARS=widow
2021: 531902.72 MARS=single
2021: 1063805.45 MARS=mjoint
2021: 531902.72 MARS=mseparate
2021: 531902.72 MARS=headhh
2021: 1063805.45 MARS=widow
2022: 544083.3 MARS=single
2022: 1088166.59 MARS=mjoint
2022: 544083.3 MARS=mseparate
2022: 544083.3 MARS=headhh
2022: 1088166.59 MARS=widow
2023: 556488.4 MARS=single
2023: 1112976.79 MARS=mjoint
2023: 556488.4 MARS=mseparate
2023: 556488.4 MARS=headhh
2023: 1112976.79 MARS=widow
2024: 568786.79 MARS=single
2024: 1137573.58 MARS=mjoint
2024: 568786.79 MARS=mseparate
2024: 568786.79 MARS=headhh
2024: 1137573.58 MARS=widow
2025: 580788.19 MARS=single
2025: 1161576.38 MARS=mjoint
2025: 580788.19 MARS=mseparate
2025: 580788.19 MARS=headhh
2025: 1161576.38 MARS=widow
2026: 146066.0 MARS=single
2026: 194715.0 MARS=mjoint
2026: 97357.0 MARS=mseparate
2026: 146066.0 MARS=headhh
2026: 194715.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_rt1
TB Name: AMT rate 1
Description: The tax rate applied to the portion of AMT taxable income below the surtax threshold, AMT bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.26
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_brk1
TB Name: AMT bracket 1 (upper threshold)
Description: AMT taxable income below this is subject to AMT rate 1 and above it is subject to AMT rate 1 + the additional AMT rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 179500.0
2014: 182500.0
2015: 185400.0
2016: 186300.0
2017: 187800.0
2018: 191100.0
2019: 194800.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_rt2
TB Name: Additional AMT rate for AMT taxable income above AMT bracket 1
Description: The additional tax rate applied to the portion of AMT income above the AMT bracket 1.
Notes: This is the additional tax rate (on top of AMT rate 1) for AMT income above AMT bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.02
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

3l. Other Taxes

-

Other Taxes — Net Investment Income Tax
tc Name: NIIT_thd
TB Name: Net Investment Income Tax modified AGI threshold
Description: If modified AGI is more than this threshold, filing unit is subject to the Net Investment Income Tax.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
2014: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
2015: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
2016: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
2017: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
2018: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
2019: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Other Taxes — Net Investment Income Tax
tc Name: NIIT_PT_taxed
TB Name: Whether or not partnership and S-corp income is in NIIT base
Description: false ==> partnership and S-corp income excluded from NIIT base; true ==> partnership and S-corp income is in NIIT base.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Other Taxes — Net Investment Income Tax
tc Name: NIIT_rt
TB Name: Net Investment Income Tax rate
Description: If modified AGI exceeds NIIT_thd, all net investment income is taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.038
2014: 0.038
2015: 0.038
2016: 0.038
2017: 0.038
2018: 0.038
2019: 0.038
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Other Taxes — Net Investment Income Tax
tc Name: NIIT_thd
TB Name: Net Investment Income Tax modified AGI threshold
Description: If modified AGI is more than this threshold, filing unit is subject to the Net Investment Income Tax.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 200000.0 MARS=single
2013: 250000.0 MARS=mjoint
2013: 125000.0 MARS=mseparate
2013: 200000.0 MARS=headhh
2013: 250000.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Taxes — Net Investment Income Tax
tc Name: NIIT_PT_taxed
TB Name: Whether or not partnership and S-corp income is in NIIT base
Description: false ==> partnership and S-corp income excluded from NIIT base; true ==> partnership and S-corp income is in NIIT base.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Other Taxes — Net Investment Income Tax
tc Name: NIIT_rt
TB Name: Net Investment Income Tax rate
Description: If modified AGI exceeds NIIT_thd, all net investment income is taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.038
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

3m. Refundable Credits

-

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_c
TB Name: Maximum earned income credit
Description: This is the maximum amount of earned income credit taxpayers are eligible for; it depends on how many kids they have.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [0kids, 1kid, 2kids, 3+kids]
2013: [487.0, 3250.0, 5372.0, 6044.0]
2014: [496.0, 3305.0, 5460.0, 6143.0]
2015: [503.0, 3359.0, 5548.0, 6242.0]
2016: [506.0, 3373.0, 5572.0, 6269.0]
2017: [510.0, 3400.0, 5616.0, 6318.0]
2018: [519.0, 3461.0, 5716.0, 6431.0]
2019: [529.0, 3526.0, 5828.0, 6557.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_rt
TB Name: Earned income credit phasein rate
Description: Pre-phaseout credit is minimum of this rate times earnings and the maximum earned income credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
   for: [0kids, 1kid, 2kids, 3+kids]
2013: [0.0765, 0.34, 0.4, 0.45]
2014: [0.0765, 0.34, 0.4, 0.45]
2015: [0.0765, 0.34, 0.4, 0.45]
2016: [0.0765, 0.34, 0.4, 0.45]
2017: [0.0765, 0.34, 0.4, 0.45]
2018: [0.0765, 0.34, 0.4, 0.45]
2019: [0.0765, 0.34, 0.4, 0.45]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_basic_frac
TB Name: Fraction of maximum earned income credit paid at zero earnings
Description: This fraction of EITC_c is always paid as a credit and one minus this fraction is applied to the phasein rate, EITC_rt. This fraction is zero under current law.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0.0 and max = 1.0
Out-of-Range Action: stop

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_prt
TB Name: Earned income credit phaseout rate
Description: Earned income credit begins to decrease at the this rate when AGI is higher than earned income credit phaseout start AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
   for: [0kids, 1kid, 2kids, 3+kids]
2013: [0.0765, 0.1598, 0.2106, 0.2106]
2014: [0.0765, 0.1598, 0.2106, 0.2106]
2015: [0.0765, 0.1598, 0.2106, 0.2106]
2016: [0.0765, 0.1598, 0.2106, 0.2106]
2017: [0.0765, 0.1598, 0.2106, 0.2106]
2018: [0.0765, 0.1598, 0.2106, 0.2106]
2019: [0.0765, 0.1598, 0.2106, 0.2106]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_ps
TB Name: Earned income credit phaseout start AGI
Description: If AGI is higher than this threshold, the amount of EITC will start to decrease at the phaseout rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [0kids, 1kid, 2kids, 3+kids]
2013: [7970.0, 17530.0, 17530.0, 17530.0]
2014: [8110.0, 17830.0, 17830.0, 17830.0]
2015: [8250.0, 18150.0, 18150.0, 18150.0]
2016: [8270.0, 18190.0, 18190.0, 18190.0]
2017: [8340.0, 18340.0, 18340.0, 18340.0]
2018: [8490.0, 18660.0, 18660.0, 18660.0]
2019: [8650.0, 19030.0, 19030.0, 19030.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_ps_MarriedJ
TB Name: Extra earned income credit phaseout start AGI for married filling jointly
Description: This is the additional amount added on the regular phaseout start amount for taxpayers with filling status of married filing jointly.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [0kids, 1kid, 2kids, 3+kids]
2013: [5340.0, 5340.0, 5340.0, 5340.0]
2014: [5430.0, 5430.0, 5430.0, 5430.0]
2015: [5500.0, 5500.0, 5500.0, 5500.0]
2016: [5550.0, 5550.0, 5550.0, 5550.0]
2017: [5590.0, 5590.0, 5590.0, 5590.0]
2018: [5680.0, 5690.0, 5690.0, 5690.0]
2019: [5800.0, 5790.0, 5790.0, 5790.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_MinEligAge
TB Name: Minimum Age for Childless EITC Eligibility
Description: For a childless filing unit, at least one individual's age needs to be no less than this age (but no greater than the EITC_MaxEligAge) in order to be eligible for an earned income tax credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: integer
Known Values:
2013: 25
2014: 25
2015: 25
2016: 25
2017: 25
2018: 25
2019: 25
Valid Range: min = 0 and max = 125
Out-of-Range Action: stop

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_MaxEligAge
TB Name: Maximum Age for Childless EITC Eligibility
Description: For a childless filing unit, at least one individual's age needs to be no greater than this age (but no less than the EITC_MinEligAge) in order to be eligible for an earned income tax credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: integer
Known Values:
2013: 64
2014: 64
2015: 64
2016: 64
2017: 64
2018: 64
2019: 64
Valid Range: min = 0 and max = 125
Out-of-Range Action: stop

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_InvestIncome_c
TB Name: Maximum investment income before EITC reduction
Description: The EITC amount is reduced when investment income exceeds this ceiling.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 3300.0
2014: 3350.0
2015: 3400.0
2016: 3400.0
2017: 3450.0
2018: 3500.0
2019: 3600.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_excess_InvestIncome_rt
TB Name: Rate of EITC reduction when investment income exceeds ceiling
Description: The EITC amount is reduced at this rate per dollar of investment income exceeding the ceiling.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 9e+99
2014: 9e+99
2015: 9e+99
2016: 9e+99
2017: 9e+99
2018: 9e+99
2019: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_indiv
TB Name: EITC is computed for each spouse based on individual earnings
Description: Current-law value is false implying EITC is filing-unit based; a value of true implies EITC is computed for each individual wage earner. The additional phaseout start for joint filers is not affected by this parameter, nor are investment income and age eligibilty rules.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_sep_filers_elig
TB Name: Separate filers are eligibile for the EITC
Description: Current-law value is false, implying ineligibility.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

+

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_c
TB Name: Maximum earned income credit
Description: This is the maximum amount of earned income credit taxpayers are eligible for; it depends on how many kids they have.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 487.0 EIC=0kids
2013: 3250.0 EIC=1kid
2013: 5372.0 EIC=2kids
2013: 6044.0 EIC=3+kids
2014: 496.0 EIC=0kids
2014: 3305.0 EIC=1kid
2014: 5460.0 EIC=2kids
2014: 6143.0 EIC=3+kids
2015: 503.0 EIC=0kids
2015: 3359.0 EIC=1kid
2015: 5548.0 EIC=2kids
2015: 6242.0 EIC=3+kids
2016: 506.0 EIC=0kids
2016: 3373.0 EIC=1kid
2016: 5572.0 EIC=2kids
2016: 6269.0 EIC=3+kids
2017: 510.0 EIC=0kids
2017: 3400.0 EIC=1kid
2017: 5616.0 EIC=2kids
2017: 6318.0 EIC=3+kids
2018: 519.0 EIC=0kids
2018: 3461.0 EIC=1kid
2018: 5716.0 EIC=2kids
2018: 6431.0 EIC=3+kids
2019: 529.0 EIC=0kids
2019: 3526.0 EIC=1kid
2019: 5828.0 EIC=2kids
2019: 6557.0 EIC=3+kids
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_rt
TB Name: Earned income credit phasein rate
Description: Pre-phaseout credit is minimum of this rate times earnings and the maximum earned income credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0765 EIC=0kids
2013: 0.34 EIC=1kid
2013: 0.4 EIC=2kids
2013: 0.45 EIC=3+kids
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_basic_frac
TB Name: Fraction of maximum earned income credit paid at zero earnings
Description: This fraction of EITC_c is always paid as a credit and one minus this fraction is applied to the phasein rate, EITC_rt. This fraction is zero under current law.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0.0 and max = 1.0
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_prt
TB Name: Earned income credit phaseout rate
Description: Earned income credit begins to decrease at the this rate when AGI is higher than earned income credit phaseout start AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0765 EIC=0kids
2013: 0.1598 EIC=1kid
2013: 0.2106 EIC=2kids
2013: 0.2106 EIC=3+kids
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_ps
TB Name: Earned income credit phaseout start AGI
Description: If AGI is higher than this threshold, the amount of EITC will start to decrease at the phaseout rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 7970.0 EIC=0kids
2013: 17530.0 EIC=1kid
2013: 17530.0 EIC=2kids
2013: 17530.0 EIC=3+kids
2014: 8110.0 EIC=0kids
2014: 17830.0 EIC=1kid
2014: 17830.0 EIC=2kids
2014: 17830.0 EIC=3+kids
2015: 8250.0 EIC=0kids
2015: 18150.0 EIC=1kid
2015: 18150.0 EIC=2kids
2015: 18150.0 EIC=3+kids
2016: 8270.0 EIC=0kids
2016: 18190.0 EIC=1kid
2016: 18190.0 EIC=2kids
2016: 18190.0 EIC=3+kids
2017: 8340.0 EIC=0kids
2017: 18340.0 EIC=1kid
2017: 18340.0 EIC=2kids
2017: 18340.0 EIC=3+kids
2018: 8490.0 EIC=0kids
2018: 18660.0 EIC=1kid
2018: 18660.0 EIC=2kids
2018: 18660.0 EIC=3+kids
2019: 8650.0 EIC=0kids
2019: 19030.0 EIC=1kid
2019: 19030.0 EIC=2kids
2019: 19030.0 EIC=3+kids
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_ps_MarriedJ
TB Name: Extra earned income credit phaseout start AGI for married filling jointly
Description: This is the additional amount added on the regular phaseout start amount for taxpayers with filling status of married filing jointly.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 5340.0 EIC=0kids
2013: 5340.0 EIC=1kid
2013: 5340.0 EIC=2kids
2013: 5340.0 EIC=3+kids
2014: 5430.0 EIC=0kids
2014: 5430.0 EIC=1kid
2014: 5430.0 EIC=2kids
2014: 5430.0 EIC=3+kids
2015: 5500.0 EIC=0kids
2015: 5500.0 EIC=1kid
2015: 5500.0 EIC=2kids
2015: 5500.0 EIC=3+kids
2016: 5550.0 EIC=0kids
2016: 5550.0 EIC=1kid
2016: 5550.0 EIC=2kids
2016: 5550.0 EIC=3+kids
2017: 5590.0 EIC=0kids
2017: 5590.0 EIC=1kid
2017: 5590.0 EIC=2kids
2017: 5590.0 EIC=3+kids
2018: 5680.0 EIC=0kids
2018: 5690.0 EIC=1kid
2018: 5690.0 EIC=2kids
2018: 5690.0 EIC=3+kids
2019: 5800.0 EIC=0kids
2019: 5790.0 EIC=1kid
2019: 5790.0 EIC=2kids
2019: 5790.0 EIC=3+kids
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_MinEligAge
TB Name: Minimum Age for Childless EITC Eligibility
Description: For a childless filing unit, at least one individual's age needs to be no less than this age (but no greater than the EITC_MaxEligAge) in order to be eligible for an earned income tax credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: int
Known Values:
2013: 25
Valid Range: min = 0 and max = 125
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_MaxEligAge
TB Name: Maximum Age for Childless EITC Eligibility
Description: For a childless filing unit, at least one individual's age needs to be no greater than this age (but no less than the EITC_MinEligAge) in order to be eligible for an earned income tax credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: int
Known Values:
2013: 64
Valid Range: min = 0 and max = 125
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_InvestIncome_c
TB Name: Maximum investment income before EITC reduction
Description: The EITC amount is reduced when investment income exceeds this ceiling.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 3300.0
2014: 3350.0
2015: 3400.0
2016: 3400.0
2017: 3450.0
2018: 3500.0
2019: 3600.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_excess_InvestIncome_rt
TB Name: Rate of EITC reduction when investment income exceeds ceiling
Description: The EITC amount is reduced at this rate per dollar of investment income exceeding the ceiling.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_indiv
TB Name: EITC is computed for each spouse based on individual earnings
Description: Current-law value is false implying EITC is filing-unit based; a value of true implies EITC is computed for each individual wage earner. The additional phaseout start for joint filers is not affected by this parameter, nor are investment income and age eligibilty rules.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_sep_filers_elig
TB Name: Separate filers are eligibile for the EITC
Description: Current-law value is false, implying ineligibility.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

-

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_c
TB Name: New refundable child tax credit maximum amount per child
Description: In addition to all credits currently available for dependents, this parameter gives each qualifying child a new refundable credit with this maximum amount.
Notes: Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_c_under5_bonus
TB Name: Bonus new refundable child tax credit maximum for qualifying children under five
Description: The maximum amount of the new refundable child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_for_all
TB Name: Whether or not maximum amount of the new refundable child tax credit is available to all
Description: The maximum amount of the new refundable child tax credit does not depend on AGI when true; otherwise, see CTC_new_rt.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_rt
TB Name: New refundable child tax credit amount phasein rate
Description: The maximum amount of the new child tax credit is increased at this rate per dollar of positive AGI until CTC_new_c times the number of qualified children is reached if CTC_new_for_all is false; if CTC_new_for_all is true, there is no AGI limitation to the maximum amount.
Notes: Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_ps
TB Name: New refundable child tax credit phaseout starting AGI
Description: The total amount of new child tax credit is reduced for taxpayers with AGI higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_prt
TB Name: New refundable child tax credit amount phaseout rate
Description: The total amount of the new child tax credit is reduced at this rate per dollar exceeding the phaseout starting AGI, CTC_new_ps.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_refund_limited
TB Name: New child tax credit refund limited to a decimal fraction of payroll taxes
Description: Specifies whether the new child tax credit refund is limited by the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt).
Notes: Set this parameter to true to limit the refundability or false to allow full refundability for all taxpayers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_refund_limit_payroll_rt
TB Name: New child tax credit refund limit rate (decimal fraction of payroll taxes)
Description: The fraction of payroll taxes (employee plus employer shares, but excluding all Medicare payroll taxes) that serves as a limit to the amount of new child tax credit that can be refunded.
Notes: Set this parameter to zero for no refundability; set it to 9e99 for unlimited refundability for taxpayers with payroll tax liabilities.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_refund_limited_all_payroll
TB Name: New child tax credit refund limit applies to all FICA taxes, not just OASDI
Description: Specifies whether the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt) applies to all FICA taxes (true) or just OASDI taxes (false).
Notes: If the new CTC is limited, set this parameter to true to limit the refundability to all FICA taxes or false to limit refundabiity to OASDI taxes.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

+

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_c
TB Name: New refundable child tax credit maximum amount per child
Description: In addition to all credits currently available for dependents, this parameter gives each qualifying child a new refundable credit with this maximum amount.
Notes: Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_c_under5_bonus
TB Name: Bonus new refundable child tax credit maximum for qualifying children under five
Description: The maximum amount of the new refundable child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_for_all
TB Name: Whether or not maximum amount of the new refundable child tax credit is available to all
Description: The maximum amount of the new refundable child tax credit does not depend on AGI when true; otherwise, see CTC_new_rt.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_rt
TB Name: New refundable child tax credit amount phasein rate
Description: The maximum amount of the new child tax credit is increased at this rate per dollar of positive AGI until CTC_new_c times the number of qualified children is reached if CTC_new_for_all is false; if CTC_new_for_all is true, there is no AGI limitation to the maximum amount.
Notes: Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_ps
TB Name: New refundable child tax credit phaseout starting AGI
Description: The total amount of new child tax credit is reduced for taxpayers with AGI higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 0.0 MARS=single
2018: 0.0 MARS=mjoint
2018: 0.0 MARS=mseparate
2018: 0.0 MARS=headhh
2018: 0.0 MARS=widow
2019: 0.0 MARS=single
2019: 0.0 MARS=mjoint
2019: 0.0 MARS=mseparate
2019: 0.0 MARS=headhh
2019: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_prt
TB Name: New refundable child tax credit amount phaseout rate
Description: The total amount of the new child tax credit is reduced at this rate per dollar exceeding the phaseout starting AGI, CTC_new_ps.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_refund_limited
TB Name: New child tax credit refund limited to a decimal fraction of payroll taxes
Description: Specifies whether the new child tax credit refund is limited by the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt).
Notes: Set this parameter to true to limit the refundability or false to allow full refundability for all taxpayers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_refund_limit_payroll_rt
TB Name: New child tax credit refund limit rate (decimal fraction of payroll taxes)
Description: The fraction of payroll taxes (employee plus employer shares, but excluding all Medicare payroll taxes) that serves as a limit to the amount of new child tax credit that can be refunded.
Notes: Set this parameter to zero for no refundability; set it to 9e99 for unlimited refundability for taxpayers with payroll tax liabilities.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_refund_limited_all_payroll
TB Name: New child tax credit refund limit applies to all FICA taxes, not just OASDI
Description: Specifies whether the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt) applies to all FICA taxes (true) or just OASDI taxes (false).
Notes: If the new CTC is limited, set this parameter to true to limit the refundability to all FICA taxes or false to limit refundabiity to OASDI taxes.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

-

Refundable Credits — Personal Refundable Credit
tc Name: II_credit
TB Name: Personal refundable credit maximum amount
Description: This credit amount is fully refundable and is phased out based on AGI. It is available to tax units who would otherwise not file.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — Personal Refundable Credit
tc Name: II_credit_ps
TB Name: Personal refundable credit phaseout start
Description: The personal refundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — Personal Refundable Credit
tc Name: II_credit_prt
TB Name: Personal refundable credit phaseout rate
Description: The personal refundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_ps threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Refundable Credits — Personal Refundable Credit
tc Name: II_credit
TB Name: Personal refundable credit maximum amount
Description: This credit amount is fully refundable and is phased out based on AGI. It is available to tax units who would otherwise not file.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 0.0 MARS=single
2018: 0.0 MARS=mjoint
2018: 0.0 MARS=mseparate
2018: 0.0 MARS=headhh
2018: 0.0 MARS=widow
2019: 0.0 MARS=single
2019: 0.0 MARS=mjoint
2019: 0.0 MARS=mseparate
2019: 0.0 MARS=headhh
2019: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Personal Refundable Credit
tc Name: II_credit_ps
TB Name: Personal refundable credit phaseout start
Description: The personal refundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 0.0 MARS=single
2018: 0.0 MARS=mjoint
2018: 0.0 MARS=mseparate
2018: 0.0 MARS=headhh
2018: 0.0 MARS=widow
2019: 0.0 MARS=single
2019: 0.0 MARS=mjoint
2019: 0.0 MARS=mseparate
2019: 0.0 MARS=headhh
2019: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Personal Refundable Credit
tc Name: II_credit_prt
TB Name: Personal refundable credit phaseout rate
Description: The personal refundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_ps threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Refundable Credits — Refundable Payroll Tax Credit
tc Name: RPTC_c
TB Name: Maximum refundable payroll tax credit
Description: This is the maximum amount of the refundable payroll tax credit for each taxpayer/spouse.
Notes: Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Refundable Credits — Refundable Payroll Tax Credit
tc Name: RPTC_rt
TB Name: Refundable payroll tax credit phasein rate
Description: Pre-phaseout credit is minimum of this rate times earnings and the maximum refundable payroll tax credit, where earnings is defined as in FICA and SECA.
Notes: Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Refundable Credits — Refundable Payroll Tax Credit
tc Name: RPTC_c
TB Name: Maximum refundable payroll tax credit
Description: This is the maximum amount of the refundable payroll tax credit for each taxpayer/spouse.
Notes: Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Refundable Payroll Tax Credit
tc Name: RPTC_rt
TB Name: Refundable payroll tax credit phasein rate
Description: Pre-phaseout credit is minimum of this rate times earnings and the maximum refundable payroll tax credit, where earnings is defined as in FICA and SECA.
Notes: Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

3n. Surtaxes

-

Surtaxes — New Minimum Tax
tc Name: FST_AGI_trt
TB Name: New minimum tax; rate as a decimal fraction of AGI
Description: Individual income taxes and the employee share of payroll taxes are credited against this minimum tax, so the surtax is the difference between the tax rate times AGI and the credited taxes. The new minimum tax is similar to the Fair Share Tax, except that no credits are exempted from the base.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Surtaxes — New Minimum Tax
tc Name: FST_AGI_thd_lo
TB Name: Minimum AGI needed to be subject to the new minimum tax
Description: A taxpayer is only subject to the new minimum tax if they exceed this level of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
2014: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
2015: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
2016: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
2017: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
2018: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
2019: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
Valid Range: min = 0 and max = FST_AGI_thd_hi
Out-of-Range Action: stop

Surtaxes — New Minimum Tax
tc Name: FST_AGI_thd_hi
TB Name: AGI level at which the New Minimum Tax is fully phased in
Description: The new minimum tax will be fully phased in at this level of AGI. If there is no phase-in, this upper threshold should be set equal to the lower AGI threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
2014: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
2015: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
2016: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
2017: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
2018: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
2019: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
Valid Range: min = FST_AGI_thd_lo and max = 9e+99
Out-of-Range Action: stop

+

Surtaxes — New Minimum Tax
tc Name: FST_AGI_trt
TB Name: New minimum tax; rate as a decimal fraction of AGI
Description: Individual income taxes and the employee share of payroll taxes are credited against this minimum tax, so the surtax is the difference between the tax rate times AGI and the credited taxes. The new minimum tax is similar to the Fair Share Tax, except that no credits are exempted from the base.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Surtaxes — New Minimum Tax
tc Name: FST_AGI_thd_lo
TB Name: Minimum AGI needed to be subject to the new minimum tax
Description: A taxpayer is only subject to the new minimum tax if they exceed this level of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 1000000.0 MARS=single
2013: 1000000.0 MARS=mjoint
2013: 500000.0 MARS=mseparate
2013: 1000000.0 MARS=headhh
2013: 1000000.0 MARS=widow
2014: 1000000.0 MARS=single
2014: 1000000.0 MARS=mjoint
2014: 500000.0 MARS=mseparate
2014: 1000000.0 MARS=headhh
2014: 1000000.0 MARS=widow
2015: 1000000.0 MARS=single
2015: 1000000.0 MARS=mjoint
2015: 500000.0 MARS=mseparate
2015: 1000000.0 MARS=headhh
2015: 1000000.0 MARS=widow
2016: 1000000.0 MARS=single
2016: 1000000.0 MARS=mjoint
2016: 500000.0 MARS=mseparate
2016: 1000000.0 MARS=headhh
2016: 1000000.0 MARS=widow
2017: 1000000.0 MARS=single
2017: 1000000.0 MARS=mjoint
2017: 500000.0 MARS=mseparate
2017: 1000000.0 MARS=headhh
2017: 1000000.0 MARS=widow
2018: 1000000.0 MARS=single
2018: 1000000.0 MARS=mjoint
2018: 500000.0 MARS=mseparate
2018: 1000000.0 MARS=headhh
2018: 1000000.0 MARS=widow
2019: 1000000.0 MARS=single
2019: 1000000.0 MARS=mjoint
2019: 500000.0 MARS=mseparate
2019: 1000000.0 MARS=headhh
2019: 1000000.0 MARS=widow
Valid Range: min = 0 and max = FST_AGI_thd_hi
Out-of-Range Action: error

Surtaxes — New Minimum Tax
tc Name: FST_AGI_thd_hi
TB Name: AGI level at which the New Minimum Tax is fully phased in
Description: The new minimum tax will be fully phased in at this level of AGI. If there is no phase-in, this upper threshold should be set equal to the lower AGI threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 2000000.0 MARS=single
2013: 2000000.0 MARS=mjoint
2013: 1000000.0 MARS=mseparate
2013: 2000000.0 MARS=headhh
2013: 2000000.0 MARS=widow
2014: 2000000.0 MARS=single
2014: 2000000.0 MARS=mjoint
2014: 1000000.0 MARS=mseparate
2014: 2000000.0 MARS=headhh
2014: 2000000.0 MARS=widow
2015: 2000000.0 MARS=single
2015: 2000000.0 MARS=mjoint
2015: 1000000.0 MARS=mseparate
2015: 2000000.0 MARS=headhh
2015: 2000000.0 MARS=widow
2016: 2000000.0 MARS=single
2016: 2000000.0 MARS=mjoint
2016: 1000000.0 MARS=mseparate
2016: 2000000.0 MARS=headhh
2016: 2000000.0 MARS=widow
2017: 2000000.0 MARS=single
2017: 2000000.0 MARS=mjoint
2017: 1000000.0 MARS=mseparate
2017: 2000000.0 MARS=headhh
2017: 2000000.0 MARS=widow
2018: 2000000.0 MARS=single
2018: 2000000.0 MARS=mjoint
2018: 1000000.0 MARS=mseparate
2018: 2000000.0 MARS=headhh
2018: 2000000.0 MARS=widow
2019: 2000000.0 MARS=single
2019: 2000000.0 MARS=mjoint
2019: 1000000.0 MARS=mseparate
2019: 2000000.0 MARS=headhh
2019: 2000000.0 MARS=widow
Valid Range: min = FST_AGI_thd_lo and max = 9e+99
Out-of-Range Action: error

-

Surtaxes — New AGI Surtax
tc Name: AGI_surtax_trt
TB Name: New AGI surtax rate
Description: The surtax rate is applied to the portion of Adjusted Gross Income above the AGI surtax threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Surtaxes — New AGI Surtax
tc Name: AGI_surtax_thd
TB Name: Threshold for the new AGI surtax
Description: The aggregate gross income above this AGI surtax threshold is taxed at surtax rate on AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Surtaxes — New AGI Surtax
tc Name: AGI_surtax_trt
TB Name: New AGI surtax rate
Description: The surtax rate is applied to the portion of Adjusted Gross Income above the AGI surtax threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Surtaxes — New AGI Surtax
tc Name: AGI_surtax_thd
TB Name: Threshold for the new AGI surtax
Description: The aggregate gross income above this AGI surtax threshold is taxed at surtax rate on AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Surtaxes — Lump-Sum Tax
tc Name: LST
TB Name: Dollar amount of lump-sum tax
Description: The lump-sum tax is levied on every member of a tax filing unit. The lump-sum tax is included only in combined taxes; it is not included in income or payroll taxes.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = -9e+99 and max = 9e+99
Out-of-Range Action: stop

+

Surtaxes — Lump-Sum Tax
tc Name: LST
TB Name: Dollar amount of lump-sum tax
Description: The lump-sum tax is levied on every member of a tax filing unit. The lump-sum tax is included only in combined taxes; it is not included in income or payroll taxes.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = -9e+99 and max = 9e+99
Out-of-Range Action: error

3o. Universal Basic Income

-

Universal Basic Income — UBI Benefits
tc Name: UBI_u18
TB Name: UBI benefit for those under 18
Description: UBI benefit provided to people under 18.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Universal Basic Income — UBI Benefits
tc Name: UBI_1820
TB Name: UBI benefit for those 18 through 20
Description: UBI benefit provided to people 18-20 years of age.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Universal Basic Income — UBI Benefits
tc Name: UBI_21
TB Name: UBI benefit for those 21 and over
Description: UBI benefit provided to people 21 and over.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

+

Universal Basic Income — UBI Benefits
tc Name: UBI_u18
TB Name: UBI benefit for those under 18
Description: UBI benefit provided to people under 18.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Universal Basic Income — UBI Benefits
tc Name: UBI_1820
TB Name: UBI benefit for those 18 through 20
Description: UBI benefit provided to people 18-20 years of age.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Universal Basic Income — UBI Benefits
tc Name: UBI_21
TB Name: UBI benefit for those 21 and over
Description: UBI benefit provided to people 21 and over.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Universal Basic Income — UBI Taxability
tc Name: UBI_ecrt
TB Name: Fraction of UBI benefits excluded from AGI
Description: One minus this fraction of UBI benefits are taxable and will be added to AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Universal Basic Income — UBI Taxability
tc Name: UBI_ecrt
TB Name: Fraction of UBI benefits excluded from AGI
Description: One minus this fraction of UBI benefits are taxable and will be added to AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

3p. Benefits

-

Benefits — Benefit Repeal
tc Name: BEN_ssi_repeal
TB Name: SSI benefit repeal switch
Description: SSI benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Benefits — Benefit Repeal
tc Name: BEN_housing_repeal
TB Name: Housing benefit repeal switch
Description: Housing benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Benefits — Benefit Repeal
tc Name: BEN_snap_repeal
TB Name: SNAP benefit repeal switch
Description: SNAP benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Benefits — Benefit Repeal
tc Name: BEN_tanf_repeal
TB Name: TANF benefit repeal switch
Description: TANF benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Benefits — Benefit Repeal
tc Name: BEN_vet_repeal
TB Name: Veterans benefit repeal switch
Description: Veterans benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Benefits — Benefit Repeal
tc Name: BEN_wic_repeal
TB Name: WIC benefit repeal switch
Description: WIC benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Benefits — Benefit Repeal
tc Name: BEN_mcare_repeal
TB Name: Medicare benefit repeal switch
Description: Medicare benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Benefits — Benefit Repeal
tc Name: BEN_mcaid_repeal
TB Name: Medicaid benefit repeal switch
Description: Medicaid benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Benefits — Benefit Repeal
tc Name: BEN_oasdi_repeal
TB Name: Social Security benefit repeal switch
Description: Social Security benefits (e02400) can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Benefits — Benefit Repeal
tc Name: BEN_ui_repeal
TB Name: Unemployment insurance benefit repeal switch
Description: Unemployment insurance benefits (e02300) can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Benefits — Benefit Repeal
tc Name: BEN_other_repeal
TB Name: Other benefit repeal switch
Description: Other benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

+

Benefits — Benefit Repeal
tc Name: BEN_ssi_repeal
TB Name: SSI benefit repeal switch
Description: SSI benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_housing_repeal
TB Name: Housing benefit repeal switch
Description: Housing benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_snap_repeal
TB Name: SNAP benefit repeal switch
Description: SNAP benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_tanf_repeal
TB Name: TANF benefit repeal switch
Description: TANF benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_vet_repeal
TB Name: Veterans benefit repeal switch
Description: Veterans benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_wic_repeal
TB Name: WIC benefit repeal switch
Description: WIC benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_mcare_repeal
TB Name: Medicare benefit repeal switch
Description: Medicare benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_mcaid_repeal
TB Name: Medicaid benefit repeal switch
Description: Medicaid benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_oasdi_repeal
TB Name: Social Security benefit repeal switch
Description: Social Security benefits (e02400) can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_ui_repeal
TB Name: Unemployment insurance benefit repeal switch
Description: Unemployment insurance benefits (e02300) can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_other_repeal
TB Name: Other benefit repeal switch
Description: Other benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

3q. Other Parameters

-

Other Parameters — Not in Tax-Brain webapp
tc Name: SS_percentage1
Long Name: Social Security taxable income decimal fraction 1
Description: Under current law if their provisional income is above the first threshold for Social Security taxability but below the second threshold, taxpayers need to apply this fraction to both the excess of their provisional income over the first threshold and their Social Security benefits, and then include the smaller one in their AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.5
2014: 0.5
2015: 0.5
2016: 0.5
2017: 0.5
2018: 0.5
2019: 0.5
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Other Parameters — Not in Tax-Brain webapp
tc Name: SS_percentage2
Long Name: Social Security taxable income decimal fraction 2
Description: Under current law if their provisional income is above the second threshold for Social Security taxability, taxpayers need to apply this fraction to both the excess of their provisional income over the second threshold and their social security benefits, and then include the smaller one in their AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.85
2014: 0.85
2015: 0.85
2016: 0.85
2017: 0.85
2018: 0.85
2019: 0.85
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Other Parameters — Not in Tax-Brain webapp
tc Name: II_em_ps
Long Name: Personal exemption phaseout starting income
Description: If taxpayers' AGI is above this level, their personal exemption will start to decrease at the personal exemption phaseout rate (PEP provision).
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [250000.0, 300000.0, 150000.0, 275000.0, 300000.0]
2014: [254200.0, 305050.0, 152525.0, 279650.0, 305050.0]
2015: [258250.0, 309900.0, 154950.0, 284040.0, 309900.0]
2016: [259400.0, 311300.0, 155650.0, 285350.0, 311300.0]
2017: [261500.0, 313800.0, 156900.0, 287650.0, 313800.0]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Other Parameters — Not in Tax-Brain webapp
tc Name: STD_Dep
Long Name: Standard deduction for dependents
Description: This is the maximum standard deduction for dependents.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 1000.0
2014: 1000.0
2015: 1050.0
2016: 1050.0
2017: 1050.0
2018: 1050.0
2019: 1100.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Other Parameters — Not in Tax-Brain webapp
tc Name: STD_allow_charity_ded_nonitemizers
Long Name: Allow standard deduction filers to take the charitable contributions deduction
Description: Extends the charitable contributions deduction to taxpayers who take the standard deduction. The same ceilings, floor, and haircuts applied to itemized deduction for charitable contributions also apply here.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: boolean
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: stop

Other Parameters — Not in Tax-Brain webapp
tc Name: AMT_child_em
Long Name: Child AMT exemption additional income base
Description: The child's AMT exemption is capped by this amount plus the child's earned income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 7150.0
2014: 7250.0
2015: 7400.0
2016: 7400.0
2017: 7500.0
2018: 7600.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Other Parameters — Not in Tax-Brain webapp
tc Name: AMT_child_em_c_age
Long Name: Age ceiling for special AMT exemption
Description: Individuals under this age must use the child AMT exemption rules.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: integer
Known Values:
2013: 18
2014: 18
2015: 18
2016: 18
2017: 18
2018: 18
2019: 18
Valid Range: min = 0 and max = 30
Out-of-Range Action: stop

Other Parameters — Not in Tax-Brain webapp
tc Name: AMT_em_pe
Long Name: AMT exemption phaseout ending AMT taxable income for Married filing Separately
Description: The AMT exemption is entirely disallowed beyond this AMT taxable income level for individuals who are married but filing separately.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 238550.0
2014: 242450.0
2015: 246250.0
2016: 247450.0
2017: 249450.0
2018: 718800.0
2019: 733700.0
2020: 747346.82
2021: 764760.0
2022: 782273.0
2023: 800108.83
2024: 817791.23
2025: 835046.63
2026: 301874.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Other Parameters — Not in Tax-Brain webapp
tc Name: LLC_Expense_c
Long Name: Lifetime learning credit expense limit
Description: The maximum expense eligible for lifetime learning credit, per child.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 10000.0
2014: 10000.0
2015: 10000.0
2016: 10000.0
2017: 10000.0
2018: 10000.0
2019: 10000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Other Parameters — Not in Tax-Brain webapp
tc Name: ETC_pe_Single
Long Name: Education tax credit phaseout ends (Single)
Description: The education tax credit will be zero for those taxpayers of single filing status with modified AGI (in thousands) higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 63.0
2014: 64.0
2015: 65.0
2016: 65.0
2017: 66.0
2018: 67.0
2019: 68.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Other Parameters — Not in Tax-Brain webapp
tc Name: ETC_pe_Married
Long Name: Education tax credit phaseout ends (Married)
Description: The education tax credit will be zero for those taxpayers of married filing status with modified AGI level (in thousands) higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: real
Known Values:
2013: 127.0
2014: 128.0
2015: 130.0
2016: 131.0
2017: 132.0
2018: 134.0
2019: 136.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Other Parameters — Not in Tax-Brain webapp
tc Name: CR_Charity_rt
Long Name: Charity Credit rate
Description: If greater than zero, this decimal fraction represents the portion of total charitable contributions provided as a nonrefundable tax credit.
Notes: Credit claimed will be (rt) * (e19800 + e20100)
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Other Parameters — Not in Tax-Brain webapp
tc Name: CR_Charity_f
Long Name: Charity Credit Floor
Description: Only charitable giving in excess of this dollar amount is eligible for the charity credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: stop

Other Parameters — Not in Tax-Brain webapp
tc Name: CR_Charity_frt
Long Name: Charity Credit Floor Rate
Description: Only charitable giving in excess of this decimal fraction of AGI is eligible for the charity credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: real
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Other Parameters — Not in Tax-Brain webapp
tc Name: SS_percentage1
Long Name: Social Security taxable income decimal fraction 1
Description: Under current law if their provisional income is above the first threshold for Social Security taxability but below the second threshold, taxpayers need to apply this fraction to both the excess of their provisional income over the first threshold and their Social Security benefits, and then include the smaller one in their AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.5
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: SS_percentage2
Long Name: Social Security taxable income decimal fraction 2
Description: Under current law if their provisional income is above the second threshold for Social Security taxability, taxpayers need to apply this fraction to both the excess of their provisional income over the second threshold and their social security benefits, and then include the smaller one in their AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.85
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: II_em_ps
Long Name: Personal exemption phaseout starting income
Description: If taxpayers' AGI is above this level, their personal exemption will start to decrease at the personal exemption phaseout rate (PEP provision).
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 250000.0 MARS=single
2013: 300000.0 MARS=mjoint
2013: 150000.0 MARS=mseparate
2013: 275000.0 MARS=headhh
2013: 300000.0 MARS=widow
2014: 254200.0 MARS=single
2014: 305050.0 MARS=mjoint
2014: 152525.0 MARS=mseparate
2014: 279650.0 MARS=headhh
2014: 305050.0 MARS=widow
2015: 258250.0 MARS=single
2015: 309900.0 MARS=mjoint
2015: 154950.0 MARS=mseparate
2015: 284040.0 MARS=headhh
2015: 309900.0 MARS=widow
2016: 259400.0 MARS=single
2016: 311300.0 MARS=mjoint
2016: 155650.0 MARS=mseparate
2016: 285350.0 MARS=headhh
2016: 311300.0 MARS=widow
2017: 261500.0 MARS=single
2017: 313800.0 MARS=mjoint
2017: 156900.0 MARS=mseparate
2017: 287650.0 MARS=headhh
2017: 313800.0 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: STD_Dep
Long Name: Standard deduction for dependents
Description: This is the maximum standard deduction for dependents.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 1000.0
2014: 1000.0
2015: 1050.0
2016: 1050.0
2017: 1050.0
2018: 1050.0
2019: 1100.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: STD_allow_charity_ded_nonitemizers
Long Name: Allow standard deduction filers to take the charitable contributions deduction
Description: Extends the charitable contributions deduction to taxpayers who take the standard deduction. The same ceilings, floor, and haircuts applied to itemized deduction for charitable contributions also apply here.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: AMT_child_em
Long Name: Child AMT exemption additional income base
Description: The child's AMT exemption is capped by this amount plus the child's earned income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 7150.0
2014: 7250.0
2015: 7400.0
2016: 7400.0
2017: 7500.0
2018: 7600.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: AMT_child_em_c_age
Long Name: Age ceiling for special AMT exemption
Description: Individuals under this age must use the child AMT exemption rules.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: int
Known Values:
2013: 18
Valid Range: min = 0 and max = 30
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: AMT_em_pe
Long Name: AMT exemption phaseout ending AMT taxable income for Married filing Separately
Description: The AMT exemption is entirely disallowed beyond this AMT taxable income level for individuals who are married but filing separately.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 238550.0
2014: 242450.0
2015: 246250.0
2016: 247450.0
2017: 249450.0
2018: 718800.0
2019: 733700.0
2020: 747346.82
2021: 764760.0
2022: 782273.0
2023: 800108.83
2024: 817791.23
2025: 835046.63
2026: 301874.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: LLC_Expense_c
Long Name: Lifetime learning credit expense limit
Description: The maximum expense eligible for lifetime learning credit, per child.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 10000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: ETC_pe_Single
Long Name: Education tax credit phaseout ends (Single)
Description: The education tax credit will be zero for those taxpayers of single filing status with modified AGI (in thousands) higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 63.0
2014: 64.0
2015: 65.0
2016: 65.0
2017: 66.0
2018: 67.0
2019: 68.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: ETC_pe_Married
Long Name: Education tax credit phaseout ends (Married)
Description: The education tax credit will be zero for those taxpayers of married filing status with modified AGI level (in thousands) higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 127.0
2014: 128.0
2015: 130.0
2016: 131.0
2017: 132.0
2018: 134.0
2019: 136.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: CR_Charity_rt
Long Name: Charity Credit rate
Description: If greater than zero, this decimal fraction represents the portion of total charitable contributions provided as a nonrefundable tax credit.
Notes: Credit claimed will be (rt) * (e19800 + e20100)
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: CR_Charity_f
Long Name: Charity Credit Floor
Description: Only charitable giving in excess of this dollar amount is eligible for the charity credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: CR_Charity_frt
Long Name: Charity Credit Floor Rate
Description: Only charitable giving in excess of this decimal fraction of AGI is eligible for the charity credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

4. Input Variables

@@ -1051,11 +1051,11 @@

6. Assumption Parameters

6a. Growdiff Parameters

-

Assumption Parameter — Growdiff
tc Name: ABOOK
Long Name: ABOOK additive difference from default projection
Description: Default projection is in growfactors.csv file. ABOOK extrapolates input variables: e07300 and e07400.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ACGNS
Long Name: ACGNS additive difference from default projection
Description: Default projection is in growfactors.csv file. ACGNS extrapolates input variables: e01200, p22250, p23250, e24515 and e24518.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ACPIM
Long Name: ACPIM additive difference from default projection
Description: Default projection is in growfactors.csv file. ACPIM extrapolates input variables: e03270, e03290 and e17500.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ACPIU
Long Name: ACPIU additive difference from default projection
Description: Default projection is in growfactors.csv file. ACPIU is the price inflation rate used to inflate many policy parameters. Note that non-zero values of this parameter will not affect historically known values of policy parameters.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ADIVS
Long Name: ADIVS additive difference from default projection
Description: Default projection is in growfactors.csv file. ADIVS extrapolates input variables: e00600 and e00650.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: AINTS
Long Name: AINTS additive difference from default projection
Description: Default projection is in growfactors.csv file. AINTS extrapolates input variables: e00300 and e00400.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: AIPD
Long Name: AIPD additive difference from default projection
Description: Default projection is in growfactors.csv file. AIPD extrapolates input variables: e19200.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ASCHCI
Long Name: ASCHCI additive difference from default projection
Description: Default projection is in growfactors.csv file. ASCHCI extrapolates input variables: e00900, e00900p and e00900s when they are positive.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ASCHCL
Long Name: ASCHCL additive difference from default projection
Description: Default projection is in growfactors.csv file. ASCHCL extrapolates input variables: e00900, e00900p and e00900s when they are negative.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ASCHEI
Long Name: ASCHEI additive difference from default projection
Description: Default projection is in growfactors.csv file. ASCHEI extrapolates input variables: e02000 when positive, and e26270, k1bx14p, k1bx14s and e27200 for all values.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ASCHEL
Long Name: ASCHEL additive difference from default projection
Description: Default projection is in growfactors.csv file. ASCHEL extrapolates input variable: e02000 when negative.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ASCHF
Long Name: ASCHF additive difference from default projection
Description: Default projection is in growfactors.csv file. ASCHF extrapolates input variables: e02100, e02100p and e02100s.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ASOCSEC
Long Name: ASOCSEC additive difference from default projection
Description: Default projection is in growfactors.csv file. ASOCSEC extrapolates input variable: e02400.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ATXPY
Long Name: ATXPY additive difference from default projection
Description: Default projection is in growfactors.csv file. ATXPY extrapolates input variables: e00700, e00800, e01400, e01500, e01700, e03150, e03210, e03220, e03230, e03300, e03400, e03500, e07240, e07260, p08000, e09700, e09800, e09900, e11200, e18400, e18500, e19800, e20100, e20400, g20500, e07600, e32800, e58990, e62900, e87530, e87521 and cmbtp.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: AUCOMP
Long Name: AUCOMP additive difference from default projection
Description: Default projection is in growfactors.csv file. AUCOMP extrapolates input variable: e02300.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: AWAGE
Long Name: AWAGE additive difference from default projection
Description: Default projection is in growfactors.csv file. AWAGE extrapolates input variables: e00200, e00200p and e00200s. Also, AWAGE is the wage growth rate used to inflate the OASDI maximum taxable earnings policy parameter, _SS_Earnings_c. Note that non-zero values of this parameter will not affect historically known values of _SS_Earnings_c.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ABENOTHER
Long Name: ABENOTHER additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENOTHER extrapolates input variable other_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ABENMCARE
Long Name: ABENMCARE additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENMCARE extrapolates input variable mcare_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ABENMCAID
Long Name: ABENMCAID additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENMCAID extrapolates input variable mcaid_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ABENSSI
Long Name: ABENSSI additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENSSI extrapolates input variable ssi_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ABENSNAP
Long Name: ABENSNAP additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENSNAP extrapolates input variable snap_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ABENWIC
Long Name: ABENWIC additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENWIC extrapolates input variable wic_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ABENHOUSING
Long Name: ABENHOUSING additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENHOUSING extrapolates input variable housing_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ABENTANF
Long Name: ABENTANF additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENTANF extrapolates input variable tanf_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

Assumption Parameter — Growdiff
tc Name: ABENVET
Long Name: ABENVET additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENVET extrapolates input variable vet_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: stop

+

Assumption Parameter — Growdiff
tc Name: ABOOK
Long Name: ABOOK additive difference from default projection
Description: Default projection is in growfactors.csv file. ABOOK extrapolates input variables: e07300 and e07400.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ACGNS
Long Name: ACGNS additive difference from default projection
Description: Default projection is in growfactors.csv file. ACGNS extrapolates input variables: e01200, p22250, p23250, e24515 and e24518.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ACPIM
Long Name: ACPIM additive difference from default projection
Description: Default projection is in growfactors.csv file. ACPIM extrapolates input variables: e03270, e03290 and e17500.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ACPIU
Long Name: ACPIU additive difference from default projection
Description: Default projection is in growfactors.csv file. ACPIU is the price inflation rate used to inflate many policy parameters. Note that non-zero values of this parameter will not affect historically known values of policy parameters.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ADIVS
Long Name: ADIVS additive difference from default projection
Description: Default projection is in growfactors.csv file. ADIVS extrapolates input variables: e00600 and e00650.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: AINTS
Long Name: AINTS additive difference from default projection
Description: Default projection is in growfactors.csv file. AINTS extrapolates input variables: e00300 and e00400.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: AIPD
Long Name: AIPD additive difference from default projection
Description: Default projection is in growfactors.csv file. AIPD extrapolates input variables: e19200.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ASCHCI
Long Name: ASCHCI additive difference from default projection
Description: Default projection is in growfactors.csv file. ASCHCI extrapolates input variables: e00900, e00900p and e00900s when they are positive.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ASCHCL
Long Name: ASCHCL additive difference from default projection
Description: Default projection is in growfactors.csv file. ASCHCL extrapolates input variables: e00900, e00900p and e00900s when they are negative.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ASCHEI
Long Name: ASCHEI additive difference from default projection
Description: Default projection is in growfactors.csv file. ASCHEI extrapolates input variables: e02000 when positive, and e26270, k1bx14p, k1bx14s and e27200 for all values.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ASCHEL
Long Name: ASCHEL additive difference from default projection
Description: Default projection is in growfactors.csv file. ASCHEL extrapolates input variable: e02000 when negative.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ASCHF
Long Name: ASCHF additive difference from default projection
Description: Default projection is in growfactors.csv file. ASCHF extrapolates input variables: e02100, e02100p and e02100s.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ASOCSEC
Long Name: ASOCSEC additive difference from default projection
Description: Default projection is in growfactors.csv file. ASOCSEC extrapolates input variable: e02400.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ATXPY
Long Name: ATXPY additive difference from default projection
Description: Default projection is in growfactors.csv file. ATXPY extrapolates input variables: e00700, e00800, e01400, e01500, e01700, e03150, e03210, e03220, e03230, e03300, e03400, e03500, e07240, e07260, p08000, e09700, e09800, e09900, e11200, e18400, e18500, e19800, e20100, e20400, g20500, e07600, e32800, e58990, e62900, e87530, e87521 and cmbtp.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: AUCOMP
Long Name: AUCOMP additive difference from default projection
Description: Default projection is in growfactors.csv file. AUCOMP extrapolates input variable: e02300.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: AWAGE
Long Name: AWAGE additive difference from default projection
Description: Default projection is in growfactors.csv file. AWAGE extrapolates input variables: e00200, e00200p and e00200s. Also, AWAGE is the wage growth rate used to inflate the OASDI maximum taxable earnings policy parameter, _SS_Earnings_c. Note that non-zero values of this parameter will not affect historically known values of _SS_Earnings_c.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ABENOTHER
Long Name: ABENOTHER additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENOTHER extrapolates input variable other_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ABENMCARE
Long Name: ABENMCARE additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENMCARE extrapolates input variable mcare_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ABENMCAID
Long Name: ABENMCAID additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENMCAID extrapolates input variable mcaid_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ABENSSI
Long Name: ABENSSI additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENSSI extrapolates input variable ssi_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ABENSNAP
Long Name: ABENSNAP additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENSNAP extrapolates input variable snap_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ABENWIC
Long Name: ABENWIC additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENWIC extrapolates input variable wic_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ABENHOUSING
Long Name: ABENHOUSING additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENHOUSING extrapolates input variable housing_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ABENTANF
Long Name: ABENTANF additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENTANF extrapolates input variable tanf_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

Assumption Parameter — Growdiff
tc Name: ABENVET
Long Name: ABENVET additive difference from default projection
Description: Default projection is in growfactors.csv file. ABENVET extrapolates input variable vet_ben.
Default Value:
2013: 0.0
Valid Range: min = -10 and max = 10
Out-of-Range Action: error

6b. Consumption Parameters

-

Assumption Parameter — Consumption
tc Name: MPC_e17500
Long Name: Marginal propensity to consume medical expenses
Description: Defined as dollar change in medical-expense consumption divided by dollar change in income. Typical value is in [0,1] range.
Default Value:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Assumption Parameter — Consumption
tc Name: MPC_e18400
Long Name: Marginal propensity to consume state-and-local taxes
Description: Defined as dollar change in state-and-local-taxes consumption divided by dollar change in income. Typical value is in [0,1] range.
Default Value:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Assumption Parameter — Consumption
tc Name: MPC_e19800
Long Name: Marginal propensity to consume charity cash contributions
Description: Defined as dollar change in charity-cash-contribution consumption divided by dollar change in income. Typical value is in [0,1] range.
Default Value:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Assumption Parameter — Consumption
tc Name: MPC_e20400
Long Name: Marginal propensity to consume miscellaneous deduction expenses
Description: Defined as dollar change in miscellaneous-deduction-expense consumption divided by dollar change in income. Typical value is in [0,1] range.
Default Value:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Assumption Parameter — Consumption
tc Name: BEN_housing_value
Long Name: Consumption value of housing benefits
Description: Consumption value per dollar of housing benefits, all of which are in-kind benefits.
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Assumption Parameter — Consumption
tc Name: BEN_snap_value
Long Name: Consumption value of SNAP benefits
Description: Consumption value per dollar of SNAP benefits, all of which are in-kind benefits.
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Assumption Parameter — Consumption
tc Name: BEN_tanf_value
Long Name: Consumption value of TANF benefits
Description: Consumption value per dollar of TANF benefits, some of which are cash benefits and some of which are in-kind benefits.
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Assumption Parameter — Consumption
tc Name: BEN_vet_value
Long Name: Consumption value of veterans benefits
Description: Consumption value per dollar of veterans benefits, some of which are in-kind benefits (only about 48% are cash benefits).
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 2
Out-of-Range Action: stop

Assumption Parameter — Consumption
tc Name: BEN_wic_value
Long Name: Consumption value of WIC benefits
Description: Consumption value per dollar of WIC benefits, all of which are in-kind benefits.
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

Assumption Parameter — Consumption
tc Name: BEN_mcare_value
Long Name: Consumption value of Medicare benefits
Description: Consumption value per dollar of Medicare benefits, all of which are in-kind benefits.
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 2
Out-of-Range Action: stop

Assumption Parameter — Consumption
tc Name: BEN_mcaid_value
Long Name: Consumption value of Medicaid benefits
Description: Consumption value per dollar of Medicaid benefits, all of which are in-kind benefits.
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 2
Out-of-Range Action: stop

Assumption Parameter — Consumption
tc Name: BEN_other_value
Long Name: Consumption value of other benefits
Description: Consumption value per dollar of other benefits, some of which are in-kind benefits (somewhere between 52% and 76% are in-kind benefits).
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: stop

+

Assumption Parameter — Consumption
tc Name: MPC_e17500
Long Name: Marginal propensity to consume medical expenses
Description: Defined as dollar change in medical-expense consumption divided by dollar change in income. Typical value is in [0,1] range.
Default Value:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Assumption Parameter — Consumption
tc Name: MPC_e18400
Long Name: Marginal propensity to consume state-and-local taxes
Description: Defined as dollar change in state-and-local-taxes consumption divided by dollar change in income. Typical value is in [0,1] range.
Default Value:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Assumption Parameter — Consumption
tc Name: MPC_e19800
Long Name: Marginal propensity to consume charity cash contributions
Description: Defined as dollar change in charity-cash-contribution consumption divided by dollar change in income. Typical value is in [0,1] range.
Default Value:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Assumption Parameter — Consumption
tc Name: MPC_e20400
Long Name: Marginal propensity to consume miscellaneous deduction expenses
Description: Defined as dollar change in miscellaneous-deduction-expense consumption divided by dollar change in income. Typical value is in [0,1] range.
Default Value:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Assumption Parameter — Consumption
tc Name: BEN_housing_value
Long Name: Consumption value of housing benefits
Description: Consumption value per dollar of housing benefits, all of which are in-kind benefits.
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Assumption Parameter — Consumption
tc Name: BEN_snap_value
Long Name: Consumption value of SNAP benefits
Description: Consumption value per dollar of SNAP benefits, all of which are in-kind benefits.
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Assumption Parameter — Consumption
tc Name: BEN_tanf_value
Long Name: Consumption value of TANF benefits
Description: Consumption value per dollar of TANF benefits, some of which are cash benefits and some of which are in-kind benefits.
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Assumption Parameter — Consumption
tc Name: BEN_vet_value
Long Name: Consumption value of veterans benefits
Description: Consumption value per dollar of veterans benefits, some of which are in-kind benefits (only about 48% are cash benefits).
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 2
Out-of-Range Action: error

Assumption Parameter — Consumption
tc Name: BEN_wic_value
Long Name: Consumption value of WIC benefits
Description: Consumption value per dollar of WIC benefits, all of which are in-kind benefits.
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Assumption Parameter — Consumption
tc Name: BEN_mcare_value
Long Name: Consumption value of Medicare benefits
Description: Consumption value per dollar of Medicare benefits, all of which are in-kind benefits.
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 2
Out-of-Range Action: error

Assumption Parameter — Consumption
tc Name: BEN_mcaid_value
Long Name: Consumption value of Medicaid benefits
Description: Consumption value per dollar of Medicaid benefits, all of which are in-kind benefits.
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 2
Out-of-Range Action: error

Assumption Parameter — Consumption
tc Name: BEN_other_value
Long Name: Consumption value of other benefits
Description: Consumption value per dollar of other benefits, some of which are in-kind benefits (somewhere between 52% and 76% are in-kind benefits).
Default Value:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

From b1f96155d2b55716458d82a64782439162e7424c Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 11 Apr 2020 11:58:24 -0400 Subject: [PATCH 31/64] Update for forthcoming pt 0.13 release --- taxcalc/parameters.py | 99 ++++++++++++++++++------------------------- 1 file changed, 42 insertions(+), 57 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 3a613f9d5..63e6fae49 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -5,7 +5,6 @@ import marshmallow as ma import paramtools as pt -from paramtools.select import select_lt import numpy as np import requests @@ -120,8 +119,6 @@ def adjust(self, params_or_path, **kwargs): wiped out after the year in which the value is adjusted for the same hard-coding reason. """ - min_year = min(self._stateless_label_grid["year"]) - # Temporarily turn off extra ops during the intermediary adjustments # so that expensive and unnecessary operations are not run. label_to_extend = self.label_to_extend @@ -138,10 +135,7 @@ def adjust(self, params_or_path, **kwargs): if params.get("CPI_offset") is not None: # Update CPI_offset with new value. cpi_adj = super().adjust( - { - "CPI_offset": params["CPI_offset"] - }, - **kwargs + {"CPI_offset": params["CPI_offset"]}, **kwargs ) # turn off extend now that CPI_offset has been updated. self.label_to_extend = None @@ -150,12 +144,13 @@ def adjust(self, params_or_path, **kwargs): cpi_adj["CPI_offset"], key=lambda vo: vo["year"] ) # Apply new CPI_offset values to inflation rates - rate_adjustment_vals = self.select_gt( - "CPI_offset", True, year=cpi_min_year["year"] - 1 + rate_adjustment_vals = self.select_gte( + "CPI_offset", year=cpi_min_year["year"] ) for cpi_vo in rate_adjustment_vals: - self._inflation_rates[cpi_vo["year"] - self.start_year] += \ - cpi_vo["value"] + self._inflation_rates[ + cpi_vo["year"] - self.start_year + ] += cpi_vo["value"] # 1. delete all unknown values. # 1.a for revision these are years specified after cpi_min_year to_delete = {} @@ -165,31 +160,29 @@ def adjust(self, params_or_path, **kwargs): if param.endswith("-indexed"): param = param.split("-indexed")[0] if self._data[param].get("indexed", False): - gt = self.select_gt(param, True, year=cpi_min_year["year"]) - to_delete[param] = [ - dict(vo, **{"value": None}) for vo in gt - ] + to_delete[param] = self.select_gt( + param, year=cpi_min_year["year"] + ) needs_reset.append(param) - super().adjust(to_delete, **kwargs) + super().delete(to_delete, **kwargs) # 1.b for all others these are years after last_known_year to_delete = {} last_known_year = max(cpi_min_year["year"], self._last_known_year) for param in self._data: if ( - param in params or - param == "CPI_offset" or - param in self.WAGE_INDEXED_PARAMS + param in params + or param == "CPI_offset" + or param in self.WAGE_INDEXED_PARAMS ): continue if self._data[param].get("indexed", False): - gt = self.select_gt(param, True, year=last_known_year) - to_delete[param] = [ - dict(vo, **{"value": None}) for vo in gt - ] + to_delete[param] = self.select_gt( + param, year=last_known_year + ) needs_reset.append(param) - super().adjust(to_delete, **kwargs) + super().delete(to_delete, **kwargs) self.extend(label_to_extend="year") @@ -202,16 +195,17 @@ def adjust(self, params_or_path, **kwargs): if not self._data[base_param].get("indexable", None): msg = f"Parameter {base_param} is not indexable." raise pt.ValidationError( - {"errors": {base_param: msg}}, - labels=None + {"errors": {base_param: msg}}, labels=None ) index_affected |= {param, base_param} indexed_changes = {} if isinstance(values, bool): - indexed_changes[min_year] = values + indexed_changes[self.start_year] = values elif isinstance(values, list): for vo in values: - indexed_changes[vo.get("year", min_year)] = vo["value"] + indexed_changes[vo.get("year", self.start_year)] = vo[ + "value" + ] else: raise Exception( "Index adjustment parameter must be a boolean or list." @@ -220,26 +214,20 @@ def adjust(self, params_or_path, **kwargs): # was changed. if base_param in params: min_index_change_year = min(indexed_changes.keys()) - vos = select_lt( + vos = pt.select_lt( params[base_param], False, - {"year": min_index_change_year} + {"year": min_index_change_year}, ) if vos: - min_adj_year = min( - vos, - key=lambda vo: vo["year"] - )["year"] - gt = self.select_gt( - base_param, - True, - year=min_adj_year - ) - super().adjust( + min_adj_year = min(vos, key=lambda vo: vo["year"])[ + "year" + ] + super().delete( { - base_param: [ - dict(vo, **{"value": None}) for vo in gt - ] + base_param: self.select_gt( + base_param, year=min_adj_year + ) } ) super().adjust({base_param: vos}, **kwargs) @@ -247,7 +235,7 @@ def adjust(self, params_or_path, **kwargs): params=[base_param], label_to_extend="year", label_to_extend_values=list( - range(min_year, min_index_change_year) + range(self.start_year, min_index_change_year) ), ) @@ -255,23 +243,18 @@ def adjust(self, params_or_path, **kwargs): indexed_val = indexed_changes[year] # Get and delete all default values after year where # indexed status changed. - gte = self.select_gt(base_param, True, year=year) - super().adjust( - { - base_param: [ - dict(vo, **{"value": None}) for vo in gte - ] - } + super().delete( + {base_param: self.select_gt(base_param, year=year)} ) # 2.b Extend values for this parameter to the year where # the indexed status changes. - if year > min_year: + if year > self.start_year: self.extend( params=[base_param], label_to_extend="year", label_to_extend_values=list( - range(min_year, year + 1) + range(self.start_year, year + 1) ), ) @@ -281,8 +264,8 @@ def adjust(self, params_or_path, **kwargs): # 2.d Adjust with values greater than or equal to current # year in params if base_param in params: - vos = pt.select_gt( - params[base_param], False, {"year": year - 1} + vos = pt.select_gte( + params[base_param], False, {"year": year} ) super().adjust({base_param: vos}, **kwargs) @@ -296,7 +279,8 @@ def adjust(self, params_or_path, **kwargs): # Filter out "-indexed" params. nonindexed_params = { - param: val for param, val in params.items() + param: val + for param, val in params.items() if param not in index_affected } @@ -310,7 +294,8 @@ def adjust(self, params_or_path, **kwargs): # 4. Add indexing params back for return to user. adj.update( { - param: val for param, val in params.items() + param: val + for param, val in params.items() if param in index_affected } ) From d8a410a66edb974e0b627afcba34df63c9160ad5 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 11 Apr 2020 12:22:29 -0400 Subject: [PATCH 32/64] Add back logic for resetting to initial values to fix tcja tests --- taxcalc/parameters.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 63e6fae49..4103851a8 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -153,6 +153,7 @@ def adjust(self, params_or_path, **kwargs): ] += cpi_vo["value"] # 1. delete all unknown values. # 1.a for revision these are years specified after cpi_min_year + to_adjust = {} to_delete = {} for param in params: if param == "CPI_offset" or param in self._wage_indexed: @@ -160,13 +161,20 @@ def adjust(self, params_or_path, **kwargs): if param.endswith("-indexed"): param = param.split("-indexed")[0] if self._data[param].get("indexed", False): + to_adjust[param] = pt.select_lte( + self._init_values[param], + True, + {"year": cpi_min_year["year"]}, + ) to_delete[param] = self.select_gt( param, year=cpi_min_year["year"] ) needs_reset.append(param) super().delete(to_delete, **kwargs) + super().adjust(to_adjust, **kwargs) # 1.b for all others these are years after last_known_year + to_adjust = {} to_delete = {} last_known_year = max(cpi_min_year["year"], self._last_known_year) for param in self._data: @@ -177,12 +185,18 @@ def adjust(self, params_or_path, **kwargs): ): continue if self._data[param].get("indexed", False): + to_adjust[param] = pt.select_lte( + self._init_values[param], + True, + {"year": last_known_year} + ) to_delete[param] = self.select_gt( param, year=last_known_year ) needs_reset.append(param) super().delete(to_delete, **kwargs) + super().adjust(to_adjust, **kwargs) self.extend(label_to_extend="year") From ccafe51bea8bd5b87f481451248a0c9a03353d4c Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 11 Apr 2020 12:23:17 -0400 Subject: [PATCH 33/64] Bump paramtools dep to 0.13.0 --- environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/environment.yml b/environment.yml index d9af31702..b72d23c72 100644 --- a/environment.yml +++ b/environment.yml @@ -14,4 +14,4 @@ dependencies: - pycodestyle - pylint - coverage -- "paramtools>=0.11.1" +- "paramtools>=0.13.0" From d62928e0328c5098bf685c4ae79f3a9e3746774e Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 11 Apr 2020 12:37:25 -0400 Subject: [PATCH 34/64] Fix punctuation, use more informative variable name --- taxcalc/parameters.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 4103851a8..8953882cc 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -151,9 +151,9 @@ def adjust(self, params_or_path, **kwargs): self._inflation_rates[ cpi_vo["year"] - self.start_year ] += cpi_vo["value"] - # 1. delete all unknown values. - # 1.a for revision these are years specified after cpi_min_year - to_adjust = {} + # 1. Delete all unknown values. + # 1.a For revision, these are years specified after cpi_min_year. + init_vals = {} to_delete = {} for param in params: if param == "CPI_offset" or param in self._wage_indexed: @@ -161,7 +161,7 @@ def adjust(self, params_or_path, **kwargs): if param.endswith("-indexed"): param = param.split("-indexed")[0] if self._data[param].get("indexed", False): - to_adjust[param] = pt.select_lte( + init_vals[param] = pt.select_lte( self._init_values[param], True, {"year": cpi_min_year["year"]}, @@ -171,10 +171,10 @@ def adjust(self, params_or_path, **kwargs): ) needs_reset.append(param) super().delete(to_delete, **kwargs) - super().adjust(to_adjust, **kwargs) + super().adjust(init_vals, **kwargs) - # 1.b for all others these are years after last_known_year - to_adjust = {} + # 1.b For all others, these are years after last_known_year. + init_vals = {} to_delete = {} last_known_year = max(cpi_min_year["year"], self._last_known_year) for param in self._data: @@ -185,7 +185,7 @@ def adjust(self, params_or_path, **kwargs): ): continue if self._data[param].get("indexed", False): - to_adjust[param] = pt.select_lte( + init_vals[param] = pt.select_lte( self._init_values[param], True, {"year": last_known_year} @@ -196,7 +196,7 @@ def adjust(self, params_or_path, **kwargs): needs_reset.append(param) super().delete(to_delete, **kwargs) - super().adjust(to_adjust, **kwargs) + super().adjust(init_vals, **kwargs) self.extend(label_to_extend="year") From fd956dcd8730e7da0feed67f0bfff34554586101 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 11 Apr 2020 12:46:56 -0400 Subject: [PATCH 35/64] Clean up tests --- taxcalc/parameters.py | 3 -- taxcalc/tests/test_parameters.py | 5 --- taxcalc/tests/test_policy.py | 70 +------------------------------- 3 files changed, 1 insertion(+), 77 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 8953882cc..fc4efc7ac 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -503,13 +503,10 @@ def num_years(self): @property def parameter_warnings(self): - # TODO: taxcalc expects string errors when empty. - # TODO: paramtools doesn't do errors. return self.errors or "" @property def parameter_errors(self): - # TODO: taxcalc expects string errors when empty. return self.errors or "" @staticmethod diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index 8e82cf44d..3616c44b2 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -83,9 +83,6 @@ def fixture_params_json_file(): @pytest.mark.parametrize("revision, expect", [ ({}, ""), ({'real_param': {2004: 1.9}}, "error"), - # TODO: Should ParamTools allow ints for float - # params. Current behavior is to cast. - # ({'int_param': {2004: [3.6]}}, "raise"), ({'bool_param': {2004: [4.9]}}, "raise"), ({'str_param': {2004: [9]}}, "raise"), ({'str_param': {2004: 'nonlinear'}}, "noerror"), @@ -160,8 +157,6 @@ def test_json_file_contents(tests_path, fname): """ Check contents of JSON parameter files in Tax-Calculator/taxcalc directory. """ - # TODO: only leave checks on parameter specification, - # and leave schema checks to Paramtools first_year = Policy.JSON_START_YEAR last_known_year = Policy.LAST_KNOWN_YEAR # for indexed parameter values known_years = set(range(first_year, last_known_year + 1)) diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index 78e850d26..d81a5d9e9 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -243,54 +243,6 @@ def test_multi_year_reform(): wfactor = {} for i in range(0, nyrs): wfactor[syr + i] = 1.0 + wratelist[i] - # TODO: this seems like a test of _expand_array which is - # already tested within paramtools - # confirm that parameters have current-law values - # assert np.allclose(getattr(pol, '_EITC_c'), - # Policy._expand_array( - # np.array([[487, 3250, 5372, 6044], - # [496, 3305, 5460, 6143], - # [503, 3359, 5548, 6242], - # [506, 3373, 5572, 6269], - # [510, 3400, 5616, 6318], - # [519, 3461, 5716, 6431], - # [529, 3526, 5828, 6557]], - # dtype=np.float64), - # 'real', - # inflate=True, - # inflation_rates=iratelist, - # num_years=nyrs), - # atol=0.01, rtol=0.0) - # assert np.allclose(getattr(pol, '_STD_Dep'), - # Policy._expand_array( - # np.array( - # [1000, 1000, 1050, 1050, 1050, 1050, 1100], - # dtype=np.float64), - # 'real', - # inflate=True, - # inflation_rates=iratelist, - # num_years=nyrs), - # atol=0.01, rtol=0.0) - # assert np.allclose(getattr(pol, '_CTC_c'), - # Policy._expand_array( - # np.array([1000] * 5 + [2000] * 8 + [1000], - # dtype=np.float64), - # 'real', - # inflate=False, - # inflation_rates=iratelist, - # num_years=nyrs), - # atol=0.01, rtol=0.0) - # # this parameter uses a different indexing rate - # assert np.allclose(getattr(pol, '_SS_Earnings_c'), - # Policy._expand_array( - # np.array([113700, 117000, 118500, 118500, 127200, - # 128400, 132900], - # dtype=np.float64), - # 'real', - # inflate=True, - # inflation_rates=wratelist, - # num_years=nyrs), - # atol=0.01, rtol=0.0) # specify multi-year reform using a param:year:value-fomatted dictionary reform = { 'SS_Earnings_c': {2016: 300000, @@ -440,16 +392,6 @@ def test_policy_metadata(): clp = Policy() mdata = clp.metadata() assert mdata - # TODO: this is tested thoroughly in paramtools - # assert isinstance(mdata['STD']['value'], list) - # assert np.allclose(mdata['STD']['value'], - # [6100, 12200, 6100, 8950, 12200]) - # assert isinstance(mdata['CDCC_ps']['value'], float) - # assert mdata['CDCC_ps']['value'] == 15000 - # dump = False - # if dump: - # print(mdata) - # assert 1 == 2 def test_implement_reform_raises_on_no_year(): @@ -845,8 +787,6 @@ def test_indexing_rates_for_update(): pol = Policy() wgrates = pol.get_index_rate('_SS_Earnings_c', 2017) pirates = pol.get_index_rate('_II_em', 2017) - # TODO: get_index_rate returns a dict - # assert len(wgrates) == len(pirates) assert isinstance(wgrates, np.float64) assert isinstance(pirates, np.float64) @@ -919,12 +859,10 @@ def test_reform_with_scalar_vector_errors(): with pytest.raises(paramtools.ValidationError): policy1.implement_reform(reform1) policy2 = Policy() - # TODO: this does not throw an error because the + # This does not throw an error because the # reshape call in `_update` casts it down to the # correct number of dimensions. reform2 = {'ID_Medical_frt': {2020: [0.08]}} - # with pytest.raises(paramtools.ValidationError): - # policy2.implement_reform(reform2) policy2.implement_reform(reform2) @@ -1343,12 +1281,6 @@ def test_multiple_cpi_swaps2(self): ) # Test AMT - # pol2.set_state(year=[2016, 2017]) - # np.testing.assert_equal( - # (pol2.AMT_em[1] / pol2.AMT_em[0] - 1).round(4), - # pol2.inflation_rates(year=2016), - # ) - # Check values for 2017 through 2020 are equal. pol2.set_state(year=[2017, 2018, 2019, 2020]) for i in (1, 2, 3): From ccbcd5a8a9c89fcda9b8c5bc7057677ca305a72a Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 11 Apr 2020 12:56:03 -0400 Subject: [PATCH 36/64] Bump version in test_4package --- taxcalc/tests/test_4package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taxcalc/tests/test_4package.py b/taxcalc/tests/test_4package.py index 80dd789ea..e080b8c85 100644 --- a/taxcalc/tests/test_4package.py +++ b/taxcalc/tests/test_4package.py @@ -37,7 +37,7 @@ def test_for_consistency(tests_path): 'pycodestyle', 'pylint', 'coverage', - "paramtools>=0.11.1" + "paramtools>=0.13.0" ]) # read conda.recipe/meta.yaml requirements meta_file = os.path.join(tests_path, '..', '..', From 74f8e647f95c6fb0c91fb14cc29477502cfc6870 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 11 Apr 2020 13:55:09 -0400 Subject: [PATCH 37/64] Remove hard-coded start and end years and handle rounding in tests --- taxcalc/policy.py | 10 +++++----- taxcalc/tests/test_policy.py | 14 ++++++-------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/taxcalc/policy.py b/taxcalc/policy.py index 700749720..1f7385cdf 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -135,17 +135,17 @@ def set_rates(self): cpi_vals = [vo["value"] for vo in self._data["CPI_offset"]["value"]] # extend cpi_offset values through budget window if they # have not been extended already. - cpi_vals = cpi_vals + cpi_vals[-1:] * (2029 - 2013 + 1 - len(cpi_vals)) - cpi_offset = {(2013 + ix): val for ix, val in enumerate(cpi_vals)} + cpi_vals = cpi_vals + cpi_vals[-1:] * (self.end_year - self.start_year + 1 - len(cpi_vals)) + cpi_offset = {(self.start_year + ix): val for ix, val in enumerate(cpi_vals)} if not self._gfactors: self._gfactors = GrowFactors() self._inflation_rates = [ - np.round(rate + cpi_offset[2013 + ix], 4) + np.round(rate + cpi_offset[self.start_year + ix], 4) for ix, rate in enumerate( - self._gfactors.price_inflation_rates(2013, 2029) + self._gfactors.price_inflation_rates(self.start_year, self.end_year) ) ] - self._wage_growth_rates = self._gfactors.wage_growth_rates(2013, 2029) + self._wage_growth_rates = self._gfactors.wage_growth_rates(self.start_year, self.end_year) diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index d81a5d9e9..e481e39d7 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -981,10 +981,9 @@ def test_simple_adj(self): exp = np.vstack([ val2020, val2020 * (1 + pol2.inflation_rates(year=2020)), - val2020 * ( - (1 + pol2.inflation_rates(year=2020)) * - (1 + pol2.inflation_rates(year=2021)) - ), + ( + val2020 * (1 + pol2.inflation_rates(year=2020)) + ).round(2) * (1 + pol2.inflation_rates(year=2021)), val2023, val2023 * (1 + pol2.inflation_rates(year=2023)), ]).round(2) @@ -1092,10 +1091,9 @@ def test_adj_without_index_2(self): exp = np.vstack([ val2020, val2020 * (1 + pol2.inflation_rates(year=2020)), - val2020 * ( - (1 + pol2.inflation_rates(year=2020)) * - (1 + pol2.inflation_rates(year=2021)) - ), + ( + val2020 * (1 + pol2.inflation_rates(year=2020)) + ).round(2) * (1 + pol2.inflation_rates(year=2021)), val2023, val2023, ]).round(2) From 5cd655c368b4f36420c6fa8ad5359efd9030da83 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 11 Apr 2020 13:58:36 -0400 Subject: [PATCH 38/64] fix line-length issues --- taxcalc/policy.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/taxcalc/policy.py b/taxcalc/policy.py index 1f7385cdf..2fc37539e 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -135,8 +135,13 @@ def set_rates(self): cpi_vals = [vo["value"] for vo in self._data["CPI_offset"]["value"]] # extend cpi_offset values through budget window if they # have not been extended already. - cpi_vals = cpi_vals + cpi_vals[-1:] * (self.end_year - self.start_year + 1 - len(cpi_vals)) - cpi_offset = {(self.start_year + ix): val for ix, val in enumerate(cpi_vals)} + cpi_vals = cpi_vals + cpi_vals[-1:] * ( + self.end_year - self.start_year + 1 - len(cpi_vals) + ) + cpi_offset = { + (self.start_year + ix): val + for ix, val in enumerate(cpi_vals) + } if not self._gfactors: self._gfactors = GrowFactors() @@ -144,8 +149,12 @@ def set_rates(self): self._inflation_rates = [ np.round(rate + cpi_offset[self.start_year + ix], 4) for ix, rate in enumerate( - self._gfactors.price_inflation_rates(self.start_year, self.end_year) + self._gfactors.price_inflation_rates( + self.start_year, self.end_year + ) ) ] - self._wage_growth_rates = self._gfactors.wage_growth_rates(self.start_year, self.end_year) + self._wage_growth_rates = self._gfactors.wage_growth_rates( + self.start_year, self.end_year + ) From 74265a4a16cd92b1df0c1bec0b59dd08af7160c1 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sat, 11 Apr 2020 14:25:40 -0400 Subject: [PATCH 39/64] oh my pep8 --- taxcalc/parameters.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index fc4efc7ac..89a5c0800 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -179,9 +179,9 @@ def adjust(self, params_or_path, **kwargs): last_known_year = max(cpi_min_year["year"], self._last_known_year) for param in self._data: if ( - param in params - or param == "CPI_offset" - or param in self.WAGE_INDEXED_PARAMS + param in params or + param == "CPI_offset" or + param in self.WAGE_INDEXED_PARAMS ): continue if self._data[param].get("indexed", False): From 1bb86c4fac753e565ecede563cf1d2edcf02fd0e Mon Sep 17 00:00:00 2001 From: hdoupe Date: Mon, 13 Apr 2020 10:31:32 -0400 Subject: [PATCH 40/64] Update docstring formatting and raise pt.ValidationError instead of generic Exception --- taxcalc/parameters.py | 49 ++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 89a5c0800..42cde42a3 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -32,30 +32,23 @@ class CompatibleDataSchema(ma.Schema): class Parameters(pt.Parameters): """ - Base Parameters class that wraps ParamTools, - providing parameter indexing for tax policy in the - adjust method and backwards-compatible preserving - layer that supports Tax-Calculator's conventional - reform formatting style as well as convenience - methods like set_Year for classes operating on - this one. - - The defaults file path may be set through the - defaults class attribute variable or through - the old DEFAULTS_FILE_NAME/DEFAULTS_FILE_PATH - work flow. - - A custom getter method is implemented so that - the value of a parameter over all allowed years - can conveniently be retrieved by adding an - underscore before the variable name (e.g. - EITC_c vs _EITC_c). - - Note: Like all pt.Parameters classes - the values of attributes corresponding to a - parameter value on this class are ephemeral - and the only way to make permanent changes - to this class'sstate is through the set_state + Base Parameters class that wraps ParamTools, providing parameter indexing + for tax policy in the adjust method and backwards-compatible preserving + layer that supports Tax-Calculator's conventional reform formatting style + as well as convenience methods like set_Year for classes operating on this + one. + + The defaults file path may be set through the defaults class attribute + variable or through the old DEFAULTS_FILE_NAME/DEFAULTS_FILE_PATH work + flow. + + A custom getter method is implemented so that the value of a parameter + over all allowed years can conveniently be retrieved by adding an + underscore before the variable name (e.g. EITC_c vs _EITC_c). + + Note: Like all pt.Parameters classes the values of attributes + corresponding to a parameter value on this class are ephemeral and the only + way to make permanent changes to this class'sstate is through the set_state or adjust methods. """ @@ -221,8 +214,12 @@ def adjust(self, params_or_path, **kwargs): "value" ] else: - raise Exception( - "Index adjustment parameter must be a boolean or list." + msg = ( + "Index adjustment parameter must be a boolean or " + "list." + ) + raise pt.ValidationError( + {"errors": {base_param: msg}}, labels=None ) # 2.a Adjust values less than first year in which index status # was changed. From 7e9b4c72d235a29d2138636e1ca941914fe8759a Mon Sep 17 00:00:00 2001 From: hdoupe Date: Mon, 13 Apr 2020 11:13:59 -0400 Subject: [PATCH 41/64] Add tests for redefined parameters and indexed status parsing --- taxcalc/parameters.py | 12 ++++----- taxcalc/policy.py | 25 +++++++++---------- taxcalc/tests/test_policy.py | 48 +++++++++++++++++++++++++----------- 3 files changed, 52 insertions(+), 33 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 42cde42a3..7f2dbea1e 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -174,7 +174,7 @@ def adjust(self, params_or_path, **kwargs): if ( param in params or param == "CPI_offset" or - param in self.WAGE_INDEXED_PARAMS + param in self._wage_indexed ): continue if self._data[param].get("indexed", False): @@ -321,7 +321,7 @@ def get_index_rate(self, param, label_to_extend_val): """ if not self._inflation_rates or not self._wage_growth_rates: self.set_rates() - if param in self.WAGE_INDEXED_PARAMS: + if param in self._wage_indexed: return self.wage_growth_rates(year=label_to_extend_val) else: return self.inflation_rates(year=label_to_extend_val) @@ -425,10 +425,10 @@ def _update(self, revision, ignore_warnings, raise_errors): param not in self._data and param.split("-indexed")[0] not in self._data ): - if self.REMOVED_PARAMS and param in self.REMOVED_PARAMS: - msg = self.REMOVED_PARAMS[param] - elif self.REDEFINED_PARAMS and param in self.REDEFINED_PARAMS: - msg = self.REDEFINED_PARAMS[param] + if self._removed_params and param in self._removed_params: + msg = f"{param} {self._removed_params[param]}" + elif self._redefined_params and param in self._redefined_params: + msg = self._redefined_params[param] else: msg = f"Parameter {param} does not exist." raise pt.ValidationError( diff --git a/taxcalc/policy.py b/taxcalc/policy.py index 2fc37539e..df51d5d2e 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -47,28 +47,28 @@ class instance: Policy # (1) specify which Policy parameters have been removed or renamed REMOVED_PARAMS = { # following five parameters removed in PR 2223 merged on 2019-02-06 - '_DependentCredit_Child_c': 'is a removed parameter name', - '_DependentCredit_Nonchild_c': 'is a removed parameter name', - '_DependentCredit_before_CTC': 'is a removed parameter name', - '_FilerCredit_c': 'is a removed parameter name', - '_ALD_InvInc_ec_base_RyanBrady': 'is a removed parameter name', + 'DependentCredit_Child_c': 'is a removed parameter name', + 'DependentCredit_Nonchild_c': 'is a removed parameter name', + 'DependentCredit_before_CTC': 'is a removed parameter name', + 'FilerCredit_c': 'is a removed parameter name', + 'ALD_InvInc_ec_base_RyanBrady': 'is a removed parameter name', # TODO: following parameter renamed in PR 2292 merged on 2019-04-15 - '_cpi_offset': 'was renamed CPI_offset in release 2.0.0', + 'cpi_offset': 'was renamed CPI_offset in release 2.0.0', # TODO: following parameters renamed in PR 2345 merged on 2019-06-24 - '_PT_excl_rt': + 'PT_excl_rt': 'was renamed PT_qbid_rt in release 2.4.0', - '_PT_excl_wagelim_thd': + 'PT_excl_wagelim_thd': 'was renamed PT_qbid_taxinc_thd in release 2.4.0', - '_PT_excl_wagelim_prt': + 'PT_excl_wagelim_prt': 'was renamed PT_qbid_taxinc_gap in release 2.4.0', - '_PT_excl_wagelim_rt': + 'PT_excl_wagelim_rt': 'was renamed PT_qbid_w2_wages_rt in release 2.4.0' } # (2) specify which Policy parameters have been redefined recently REDEFINED_PARAMS = { # TODO: TODO: should this be removed now? # TODO: remove the CTC_c name:message pair sometime later in 2019 - # '_CTC_c': 'CTC_c was redefined in release 1.0.0' + # 'CTC_c': 'CTC_c was redefined in release 1.0.0' } # (3) specify which Policy parameters are wage (rather than price) indexed WAGE_INDEXED_PARAMS = ['SS_Earnings_c', 'SS_Earnings_thd'] @@ -143,8 +143,7 @@ def set_rates(self): for ix, val in enumerate(cpi_vals) } - if not self._gfactors: - self._gfactors = GrowFactors() + self._gfactors = GrowFactors() self._inflation_rates = [ np.round(rate + cpi_offset[self.start_year + ix], 4) diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index e481e39d7..c95d524bf 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -12,7 +12,7 @@ import json import numpy as np import pytest -import paramtools +import paramtools as pt # pylint: disable=import-error from taxcalc import Policy @@ -53,14 +53,14 @@ def test_correct_class_instantiation(): pol = Policy() assert pol pol.implement_reform({}) - with pytest.raises(paramtools.ValidationError): + with pytest.raises(pt.ValidationError): pol.implement_reform(list()) - with pytest.raises(paramtools.ValidationError): + with pytest.raises(pt.ValidationError): pol.implement_reform({2099: {'II_em': 99000}}) pol.set_year(2019) - with pytest.raises(paramtools.ValidationError): + with pytest.raises(pt.ValidationError): pol.implement_reform({2018: {'II_em': 99000}}) - with pytest.raises(paramtools.ValidationError): + with pytest.raises(pt.ValidationError): pol.implement_reform({2020: {'II_em': -1000}}) @@ -400,7 +400,7 @@ def test_implement_reform_raises_on_no_year(): """ reform = {'STD_Aged': [1400, 1200, 1400, 1400, 1400]} ppo = Policy() - with pytest.raises(paramtools.ValidationError): + with pytest.raises(pt.ValidationError): ppo.implement_reform(reform) @@ -410,7 +410,7 @@ def test_implement_reform_raises_on_early_year(): """ ppo = Policy() reform = {'STD_Aged': {2010: [1400, 1100, 1100, 1400, 1400]}} - with pytest.raises(paramtools.ValidationError): + with pytest.raises(pt.ValidationError): ppo.implement_reform(reform) @@ -800,23 +800,30 @@ def test_reform_with_bad_ctc_levels(): 'CTC_c': {2020: 2200}, 'ACTC_c': {2020: 2500} } - with pytest.raises(paramtools.ValidationError): + with pytest.raises(pt.ValidationError): pol.implement_reform(child_credit_reform) -def test_reform_with_removed_parameter(): +def test_reform_with_removed_parameter(monkeypatch): """ Try to use removed parameter in a reform. """ policy1 = Policy() reform1 = {'FilerCredit_c': {2020: 1000}} - with pytest.raises(paramtools.ValidationError): + with pytest.raises(pt.ValidationError): policy1.implement_reform(reform1) policy2 = Policy() reform2 = {'FilerCredit_c-indexed': {2020: True}} - with pytest.raises(paramtools.ValidationError): + with pytest.raises(pt.ValidationError): policy2.implement_reform(reform2) + redefined_msg = {"some_redefined": "some_redefined was redefined."} + monkeypatch.setattr(Policy, "REDEFINED_PARAMS", redefined_msg) + + pol = Policy() + with pytest.raises(pt.ValidationError): + pol.implement_reform({"some_redefined": "hello world"}) + def test_reform_with_out_of_range_error(): """ @@ -841,7 +848,7 @@ def test_reform_with_warning(): # pol.implement_reform(reform) # assert pol.parameter_warnings - with pytest.raises(paramtools.ValidationError): + with pytest.raises(pt.ValidationError): pol.implement_reform(reform) pol = Policy() @@ -856,7 +863,7 @@ def test_reform_with_scalar_vector_errors(): """ policy1 = Policy() reform1 = {'SS_thd85': {2020: 30000}} - with pytest.raises(paramtools.ValidationError): + with pytest.raises(pt.ValidationError): policy1.implement_reform(reform1) policy2 = Policy() # This does not throw an error because the @@ -932,7 +939,7 @@ class TestAdjust: """ Test update and indexing rules as defined in the Parameters docstring. - Each test implements a Tax-Calculator style reform and a ParamTools styled + Each test implements a Tax-Calculator style reform and a pt styled reform, checks that the updated values are equal, and then, tests that values were extended and indexed (or not indexed) correctly. """ @@ -1354,3 +1361,16 @@ def test_adj_CPI_offset_and_index_status(self): (pol2.CTC_c[1] / pol2.CTC_c[0] - 1).round(4), pol0.inflation_rates(year=2021) + (-0.005), ) + + def test_indexed_status_parsing(self): + pol1 = Policy() + + pol1.implement_reform({"EITC_c-indexed": {pol1.start_year: False}}) + + pol2 = Policy() + pol2.adjust({"EITC_c-indexed": False}) + + cmp_policy_objs(pol1, pol2) + + with pytest.raises(pt.ValidationError): + pol2.adjust({"EITC_c-indexed": 123}) From eb7282b632f2cb22754bb17b26849adfa3941ee2 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Mon, 13 Apr 2020 11:26:23 -0400 Subject: [PATCH 42/64] pep8 ur killing me --- taxcalc/parameters.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 7f2dbea1e..bb1b5291d 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -427,7 +427,9 @@ def _update(self, revision, ignore_warnings, raise_errors): ): if self._removed_params and param in self._removed_params: msg = f"{param} {self._removed_params[param]}" - elif self._redefined_params and param in self._redefined_params: + elif ( + self._redefined_params and param in self._redefined_params + ): msg = self._redefined_params[param] else: msg = f"Parameter {param} does not exist." From 39096e78846ff65e52652122cf8e6c6789cf9ee0 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Thu, 16 Apr 2020 14:11:31 -0400 Subject: [PATCH 43/64] Add back test for setting a float value to an int param --- taxcalc/tests/test_parameters.py | 1 + 1 file changed, 1 insertion(+) diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index 3c491f9b8..ea7bdca40 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -83,6 +83,7 @@ def fixture_params_json_file(): @pytest.mark.parametrize("revision, expect", [ ({}, ""), ({'real_param': {2004: 1.9}}, "error"), + ({'int_param': {2004: [3.6]}}, "raise"), ({'bool_param': {2004: [4.9]}}, "raise"), ({'str_param': {2004: [9]}}, "raise"), ({'str_param': {2004: 'nonlinear'}}, "noerror"), From a0c928bde917937bf014ad0b4ef708232b8f7f3b Mon Sep 17 00:00:00 2001 From: hdoupe Date: Fri, 17 Apr 2020 07:19:14 -0400 Subject: [PATCH 44/64] Fix validation for array parameters passed through _update --- taxcalc/parameters.py | 27 ++++++++++++++++++++------- taxcalc/tests/test_parameters.py | 18 ++++++++++++++++++ taxcalc/tests/test_policy.py | 14 +++++++++++++- 3 files changed, 51 insertions(+), 8 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index bb1b5291d..34d2536cc 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -444,27 +444,40 @@ def _update(self, revision, ignore_warnings, raise_errors): for year, yearval in val.items(): val = getattr(self, param) if isinstance(val, np.ndarray): - ndims = val.ndim + ndim = val.ndim else: - ndims = 0 + ndim = 0 yearval = np.array(yearval) - short_dims = ndims - yearval.ndim - yearval = yearval.reshape( + short_dims = ndim - yearval.ndim + reshaped = yearval.reshape( (*(1, ) * short_dims, *yearval.shape) ) self.set_state(year=year) try: - yearval = self.from_array(param, yearval) + value_objects = self.from_array(param, reshaped) + if ( + len(reshaped.shape) == 2 and + reshaped.shape[1] != val.shape[1] + ): + msg = ( + f"Parameter {param} has {reshaped.shape[1]} " + f"elements but it should have " + f"{val.shape[1]} elements." + ) + raise pt.ValidationError( + {"errors": {"schema": msg}}, + None + ) except IndexError: msg = ( - f"Pameter {param} does not have the correct " + f"Parameter {param} does not have the correct " f"array dimensions for year {year}." ) raise pt.ValidationError( {"errors": {"schema": msg}}, None ) - new_params[param] += yearval + new_params[param] += value_objects else: msg = ( f"Parameter {param} must be a year:value dictionary " diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index ea7bdca40..a8a0f3a62 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -31,6 +31,10 @@ "year": { "type": "int", "validators": {"range": {"min": 2001, "max": 2010}} + }, + "label": { + "type": "str", + "validators": {"choice": {"choices": ["label1", "label2"]}} } }, "operators": { @@ -64,6 +68,16 @@ "type": "str", "value": "linear", "validators": {"choice": {"choices": ["linear", "nonlinear", "cubic"]}} + }, + "label_param": { + "title": "Parameter that uses labels.", + "description": "", + "type": "int", + "value": [ + {"label": "label1", "year": 2001, "value": 2}, + {"label": "label2", "year": 2001, "value": 3} + ], + "validators": {"range": {"min": 0, "max": 9}} } }) @@ -84,6 +98,10 @@ def fixture_params_json_file(): ({}, ""), ({'real_param': {2004: 1.9}}, "error"), ({'int_param': {2004: [3.6]}}, "raise"), + ({"int_param": {2004: [3]}}, "raise"), + ({"label_param": {2004: [1, 2]}}, "noerror"), + ({"label_param": {2004: [[1, 2]]}}, "noerror"), + ({"label_param": {2004: [1, 2, 3]}}, "raise"), ({'bool_param': {2004: [4.9]}}, "raise"), ({'str_param': {2004: [9]}}, "raise"), ({'str_param': {2004: 'nonlinear'}}, "noerror"), diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index c95d524bf..cc9d91876 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -868,10 +868,22 @@ def test_reform_with_scalar_vector_errors(): policy2 = Policy() # This does not throw an error because the # reshape call in `_update` casts it down to the - # correct number of dimensions. + # correct number of dimensions. But the adjust + # method does thrown an error. reform2 = {'ID_Medical_frt': {2020: [0.08]}} policy2.implement_reform(reform2) + policy3 = Policy() + reform3 = {'ID_Medical_frt': [{"year": 2020, "value": [0.08]}]} + with pytest.raises(pt.ValidationError): + policy3.adjust(reform3) + + # Check that error is thrown if there are extra elements in array. + policy4 = Policy() + ref4 = {"II_brk1": {2020: [9700, 19400, 9700, 13850, 19400, 19400]}} + with pytest.raises(pt.ValidationError): + policy4.implement_reform(ref4) + def test_index_offset_reform(): """ From 7c763d4361ee7a93ef946c5fa87207f86dfaa0d1 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Fri, 17 Apr 2020 07:20:51 -0400 Subject: [PATCH 45/64] Update environment.yaml to req at least paramtools 0.13.1 --- environment.yml | 2 +- taxcalc/tests/test_4package.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/environment.yml b/environment.yml index b72d23c72..dba505bac 100644 --- a/environment.yml +++ b/environment.yml @@ -14,4 +14,4 @@ dependencies: - pycodestyle - pylint - coverage -- "paramtools>=0.13.0" +- "paramtools>=0.13.1" diff --git a/taxcalc/tests/test_4package.py b/taxcalc/tests/test_4package.py index e080b8c85..72094d944 100644 --- a/taxcalc/tests/test_4package.py +++ b/taxcalc/tests/test_4package.py @@ -37,7 +37,7 @@ def test_for_consistency(tests_path): 'pycodestyle', 'pylint', 'coverage', - "paramtools>=0.13.0" + "paramtools>=0.13.1" ]) # read conda.recipe/meta.yaml requirements meta_file = os.path.join(tests_path, '..', '..', From 419dbb86caf2629966679ca67cee12a818205ffb Mon Sep 17 00:00:00 2001 From: hdoupe Date: Fri, 17 Apr 2020 08:19:42 -0400 Subject: [PATCH 46/64] Rework array validation logic in _update --- taxcalc/parameters.py | 48 +++++++++++++++++--------------- taxcalc/tests/test_parameters.py | 3 +- taxcalc/tests/test_policy.py | 13 +++++---- 3 files changed, 36 insertions(+), 28 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 34d2536cc..4c02144a1 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -443,31 +443,35 @@ def _update(self, revision, ignore_warnings, raise_errors): elif isinstance(val, dict): for year, yearval in val.items(): val = getattr(self, param) - if isinstance(val, np.ndarray): - ndim = val.ndim - else: - ndim = 0 + if ( + self._data[param].get("type", None) == "str" and + isinstance(yearval, str) + ): + new_params[param] += [{"value": yearval}] + continue + yearval = np.array(yearval) - short_dims = ndim - yearval.ndim - reshaped = yearval.reshape( - (*(1, ) * short_dims, *yearval.shape) - ) + if ( + getattr(val, "shape", None) and + yearval.shape != val[0].shape + ): + exp_dims = val[0].shape + act_dims = yearval.shape + msg = ( + f"Parameter {param} has dimension {act_dims} " + f"but it should have dimension {exp_dims}" + ) + raise pt.ValidationError( + {"errors": {"schema": msg}}, + None + ) + self.set_state(year=year) try: - value_objects = self.from_array(param, reshaped) - if ( - len(reshaped.shape) == 2 and - reshaped.shape[1] != val.shape[1] - ): - msg = ( - f"Parameter {param} has {reshaped.shape[1]} " - f"elements but it should have " - f"{val.shape[1]} elements." - ) - raise pt.ValidationError( - {"errors": {"schema": msg}}, - None - ) + value_objects = self.from_array( + param, + yearval.reshape((1, *yearval.shape)) + ) except IndexError: msg = ( f"Parameter {param} does not have the correct " diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index a8a0f3a62..92b4cfd9d 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -100,7 +100,7 @@ def fixture_params_json_file(): ({'int_param': {2004: [3.6]}}, "raise"), ({"int_param": {2004: [3]}}, "raise"), ({"label_param": {2004: [1, 2]}}, "noerror"), - ({"label_param": {2004: [[1, 2]]}}, "noerror"), + ({"label_param": {2004: [[1, 2]]}}, "raise"), ({"label_param": {2004: [1, 2, 3]}}, "raise"), ({'bool_param': {2004: [4.9]}}, "raise"), ({'str_param': {2004: [9]}}, "raise"), @@ -108,6 +108,7 @@ def fixture_params_json_file(): ({'str_param': {2004: 'unknownvalue'}}, "error"), ({'str_param': {2004: ['nonlinear']}}, "raise"), ({'real_param': {2004: 'linear'}}, "raise"), + ({'real_param': {2004: [0.2, 0.3]}}, "raise"), ({'real_param-indexed': {2004: True}}, "raise"), ({'unknown_param-indexed': {2004: False}}, "raise") ]) diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index cc9d91876..cef0bd10d 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -865,13 +865,11 @@ def test_reform_with_scalar_vector_errors(): reform1 = {'SS_thd85': {2020: 30000}} with pytest.raises(pt.ValidationError): policy1.implement_reform(reform1) + policy2 = Policy() - # This does not throw an error because the - # reshape call in `_update` casts it down to the - # correct number of dimensions. But the adjust - # method does thrown an error. reform2 = {'ID_Medical_frt': {2020: [0.08]}} - policy2.implement_reform(reform2) + with pytest.raises(pt.ValidationError): + policy2.implement_reform(reform2) policy3 = Policy() reform3 = {'ID_Medical_frt': [{"year": 2020, "value": [0.08]}]} @@ -884,6 +882,11 @@ def test_reform_with_scalar_vector_errors(): with pytest.raises(pt.ValidationError): policy4.implement_reform(ref4) + policy5 = Policy() + ref5 = {"II_rt1": {2029: [.2, .3]}} + with pytest.raises(pt.ValidationError): + policy5.implement_reform(ref5) + def test_index_offset_reform(): """ From 65f259ecbed7b365dd08a881e633b5e92500f747 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Fri, 17 Apr 2020 08:38:26 -0400 Subject: [PATCH 47/64] Simplify array shape validation --- taxcalc/parameters.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 4c02144a1..d641df06c 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -456,11 +456,22 @@ def _update(self, revision, ignore_warnings, raise_errors): yearval.shape != val[0].shape ): exp_dims = val[0].shape - act_dims = yearval.shape - msg = ( - f"Parameter {param} has dimension {act_dims} " - f"but it should have dimension {exp_dims}" - ) + if exp_dims == tuple(): + msg = ( + f"{param} is not an array " + f"parameter." + ) + elif yearval.shape: + msg = ( + f"{param} has {yearval.shape[0]} elements " + f"but should only have {exp_dims[0]} " + f"elements." + ) + else: + msg = ( + f"{param} is an array parameter with " + f"{exp_dims[0]} elements." + ) raise pt.ValidationError( {"errors": {"schema": msg}}, None @@ -474,7 +485,7 @@ def _update(self, revision, ignore_warnings, raise_errors): ) except IndexError: msg = ( - f"Parameter {param} does not have the correct " + f"{param} does not have the correct " f"array dimensions for year {year}." ) raise pt.ValidationError( @@ -484,7 +495,7 @@ def _update(self, revision, ignore_warnings, raise_errors): new_params[param] += value_objects else: msg = ( - f"Parameter {param} must be a year:value dictionary " + f"{param} must be a year:value dictionary " f"if you are not using the new adjust method." ) raise pt.ValidationError( From 3dd32408b47000ece91fcd859ef9f64a06a9a91e Mon Sep 17 00:00:00 2001 From: hdoupe Date: Fri, 17 Apr 2020 08:52:53 -0400 Subject: [PATCH 48/64] Remove no-longer needed check for IndexError --- taxcalc/parameters.py | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index d641df06c..075eb3c8f 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -478,20 +478,10 @@ def _update(self, revision, ignore_warnings, raise_errors): ) self.set_state(year=year) - try: - value_objects = self.from_array( - param, - yearval.reshape((1, *yearval.shape)) - ) - except IndexError: - msg = ( - f"{param} does not have the correct " - f"array dimensions for year {year}." - ) - raise pt.ValidationError( - {"errors": {"schema": msg}}, - None - ) + value_objects = self.from_array( + param, + yearval.reshape((1, *yearval.shape)) + ) new_params[param] += value_objects else: msg = ( From 397265c0a91602cedf64681a96fa86fb850c0218 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Fri, 17 Apr 2020 14:17:28 -0400 Subject: [PATCH 49/64] Remove unnecessary super() calls --- taxcalc/parameters.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 075eb3c8f..4dbf0a3a1 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -163,7 +163,7 @@ def adjust(self, params_or_path, **kwargs): param, year=cpi_min_year["year"] ) needs_reset.append(param) - super().delete(to_delete, **kwargs) + self.delete(to_delete, **kwargs) super().adjust(init_vals, **kwargs) # 1.b For all others, these are years after last_known_year. @@ -188,7 +188,7 @@ def adjust(self, params_or_path, **kwargs): ) needs_reset.append(param) - super().delete(to_delete, **kwargs) + self.delete(to_delete, **kwargs) super().adjust(init_vals, **kwargs) self.extend(label_to_extend="year") @@ -234,7 +234,7 @@ def adjust(self, params_or_path, **kwargs): min_adj_year = min(vos, key=lambda vo: vo["year"])[ "year" ] - super().delete( + self.delete( { base_param: self.select_gt( base_param, year=min_adj_year @@ -254,7 +254,7 @@ def adjust(self, params_or_path, **kwargs): indexed_val = indexed_changes[year] # Get and delete all default values after year where # indexed status changed. - super().delete( + self.delete( {base_param: self.select_gt(base_param, year=year)} ) From 635b1ec6657783bbda64c48aac1a70d65eeef03f Mon Sep 17 00:00:00 2001 From: hdoupe Date: Wed, 22 Apr 2020 13:21:37 -0400 Subject: [PATCH 50/64] Revert stylistic change in test --- taxcalc/tests/test_policy.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index cef0bd10d..d87056bcd 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -528,15 +528,17 @@ def test_pop_the_cap_reform(): ppo = Policy() assert ppo.current_year == Policy.JSON_START_YEAR # confirm that MTE has current-law values in 2015 and 2016 + mte = ppo._SS_Earnings_c syr = Policy.JSON_START_YEAR - assert ppo._SS_Earnings_c[2015 - syr] == 118500 - assert ppo._SS_Earnings_c[2016 - syr] == 118500 + assert mte[2015 - syr] == 118500 + assert mte[2016 - syr] == 118500 # specify a "pop the cap" reform that eliminates MTE cap in 2016 reform = {'SS_Earnings_c': {2016: 9e99}} ppo.implement_reform(reform) - assert ppo._SS_Earnings_c[2015 - syr] == 118500 - assert ppo._SS_Earnings_c[2016 - syr] == 9e99 - assert ppo._SS_Earnings_c[ppo.end_year - syr] == 9e99 + mte = ppo._SS_Earnings_c + assert mte[2015 - syr] == 118500 + assert mte[2016 - syr] == 9e99 + assert mte[ppo.end_year - syr] == 9e99 def test_order_of_indexing_and_level_reforms(): From c2f74e281c03c6bc0e7730e4d949914d6ccdf365 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Wed, 22 Apr 2020 14:10:42 -0400 Subject: [PATCH 51/64] fix typo, thx @Peter-Metz --- taxcalc/parameters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 4dbf0a3a1..f6284b222 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -90,7 +90,7 @@ def adjust(self, params_or_path, **kwargs): the indexed status is adjusted, update those parameters first. b. Extend the values of that parameter to the year in which the status is changed. - c. Change the the indexed status for the parameter. + c. Change the indexed status for the parameter. d. Update parameter values in adjustment that are adjusted after the year in which the indexed status changes. e. Using the new "-indexed" status, extend the values of that From 22d9fcc7b07302bc8c0f95ae2662435440aab504 Mon Sep 17 00:00:00 2001 From: Peter-Metz Date: Thu, 23 Apr 2020 14:24:16 -0400 Subject: [PATCH 52/64] remove years 2020-2025 for TCJA-reverting params --- taxcalc/policy_current_law.json | 6620 +++++------------------------- taxcalc/tests/test_parameters.py | 3 +- 2 files changed, 1140 insertions(+), 5483 deletions(-) diff --git a/taxcalc/policy_current_law.json b/taxcalc/policy_current_law.json index f89b4f142..4f73eea43 100644 --- a/taxcalc/policy_current_law.json +++ b/taxcalc/policy_current_law.json @@ -624,30 +624,6 @@ "year": 2019, "value": 1.0 }, - { - "year": 2020, - "value": 1.0 - }, - { - "year": 2021, - "value": 1.0 - }, - { - "year": 2022, - "value": 1.0 - }, - { - "year": 2023, - "value": 1.0 - }, - { - "year": 2024, - "value": 1.0 - }, - { - "year": 2025, - "value": 1.0 - }, { "year": 2026, "value": 0.0 @@ -702,30 +678,6 @@ "year": 2019, "value": 0.0 }, - { - "year": 2020, - "value": 0.0 - }, - { - "year": 2021, - "value": 0.0 - }, - { - "year": 2022, - "value": 0.0 - }, - { - "year": 2023, - "value": 0.0 - }, - { - "year": 2024, - "value": 0.0 - }, - { - "year": 2025, - "value": 0.0 - }, { "year": 2026, "value": 1.0 @@ -858,30 +810,6 @@ "year": 2019, "value": 1.0 }, - { - "year": 2020, - "value": 1.0 - }, - { - "year": 2021, - "value": 1.0 - }, - { - "year": 2022, - "value": 1.0 - }, - { - "year": 2023, - "value": 1.0 - }, - { - "year": 2024, - "value": 1.0 - }, - { - "year": 2025, - "value": 1.0 - }, { "year": 2026, "value": 0.0 @@ -1332,156 +1260,6 @@ "MARS": "widow", "value": 510000.0 }, - { - "year": 2020, - "MARS": "single", - "value": 259029.0 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 518058.0 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 259029.0 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 259029.0 - }, - { - "year": 2020, - "MARS": "widow", - "value": 518058.0 - }, - { - "year": 2021, - "MARS": "single", - "value": 264675.83 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 529351.66 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 264675.83 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 264675.83 - }, - { - "year": 2021, - "MARS": "widow", - "value": 529351.66 - }, - { - "year": 2022, - "MARS": "single", - "value": 270683.97 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 541367.95 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 270683.97 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 270683.97 - }, - { - "year": 2022, - "MARS": "widow", - "value": 541367.95 - }, - { - "year": 2023, - "MARS": "single", - "value": 276936.77 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 553873.55 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 276936.77 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 276936.77 - }, - { - "year": 2023, - "MARS": "widow", - "value": 553873.55 - }, - { - "year": 2024, - "MARS": "single", - "value": 283084.77 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 566169.54 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 283084.77 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 283084.77 - }, - { - "year": 2024, - "MARS": "widow", - "value": 566169.54 - }, - { - "year": 2025, - "MARS": "single", - "value": 289199.4 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 578398.8 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 289199.4 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 289199.4 - }, - { - "year": 2025, - "MARS": "widow", - "value": 578398.8 - }, { "year": 2026, "MARS": "single", @@ -1557,30 +1335,6 @@ "year": 2019, "value": 0.0 }, - { - "year": 2020, - "value": 0.0 - }, - { - "year": 2021, - "value": 0.0 - }, - { - "year": 2022, - "value": 0.0 - }, - { - "year": 2023, - "value": 0.0 - }, - { - "year": 2024, - "value": 0.0 - }, - { - "year": 2025, - "value": 0.0 - }, { "year": 2026, "value": 4880.0 @@ -1783,177 +1537,27 @@ "value": 9e+99 }, { - "year": 2020, + "year": 2026, "MARS": "single", - "value": 9e+99 + "value": 316457.0 }, { - "year": 2020, + "year": 2026, "MARS": "mjoint", - "value": 9e+99 + "value": 379748.0 }, { - "year": 2020, + "year": 2026, "MARS": "mseparate", - "value": 9e+99 + "value": 189874.0 }, { - "year": 2020, + "year": 2026, "MARS": "headhh", - "value": 9e+99 + "value": 348102.0 }, { - "year": 2020, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "single", - "value": 316457.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 379748.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 189874.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 348102.0 - }, - { - "year": 2026, + "year": 2026, "MARS": "widow", "value": 379748.0 } @@ -2206,156 +1810,6 @@ "MARS": "widow", "value": 24400.0 }, - { - "year": 2020, - "MARS": "single", - "value": 12392.76 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 24785.52 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 12392.76 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 18639.93 - }, - { - "year": 2020, - "MARS": "widow", - "value": 24785.52 - }, - { - "year": 2021, - "MARS": "single", - "value": 12662.92 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 25325.84 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 12662.92 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 19046.28 - }, - { - "year": 2021, - "MARS": "widow", - "value": 25325.84 - }, - { - "year": 2022, - "MARS": "single", - "value": 12950.37 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 25900.74 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 12950.37 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 19478.63 - }, - { - "year": 2022, - "MARS": "widow", - "value": 25900.74 - }, - { - "year": 2023, - "MARS": "single", - "value": 13249.52 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 26499.05 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 13249.52 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 19928.59 - }, - { - "year": 2023, - "MARS": "widow", - "value": 26499.05 - }, - { - "year": 2024, - "MARS": "single", - "value": 13543.66 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 27087.33 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 13543.66 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 20371.0 - }, - { - "year": 2024, - "MARS": "widow", - "value": 27087.33 - }, - { - "year": 2025, - "MARS": "single", - "value": 13836.21 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 27672.41 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 13836.21 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 20811.02 - }, - { - "year": 2025, - "MARS": "widow", - "value": 27672.41 - }, { "year": 2026, "MARS": "single", @@ -4533,164 +3987,14 @@ "value": 10000.0 }, { - "year": 2020, + "year": 2026, "MARS": "single", - "value": 10000.0 + "value": 9e+99 }, { - "year": 2020, + "year": 2026, "MARS": "mjoint", - "value": 10000.0 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 5000.0 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 10000.0 - }, - { - "year": 2020, - "MARS": "widow", - "value": 10000.0 - }, - { - "year": 2021, - "MARS": "single", - "value": 10000.0 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 10000.0 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 5000.0 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 10000.0 - }, - { - "year": 2021, - "MARS": "widow", - "value": 10000.0 - }, - { - "year": 2022, - "MARS": "single", - "value": 10000.0 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 10000.0 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 5000.0 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 10000.0 - }, - { - "year": 2022, - "MARS": "widow", - "value": 10000.0 - }, - { - "year": 2023, - "MARS": "single", - "value": 10000.0 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 10000.0 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 5000.0 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 10000.0 - }, - { - "year": 2023, - "MARS": "widow", - "value": 10000.0 - }, - { - "year": 2024, - "MARS": "single", - "value": 10000.0 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 10000.0 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 5000.0 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 10000.0 - }, - { - "year": 2024, - "MARS": "widow", - "value": 10000.0 - }, - { - "year": 2025, - "MARS": "single", - "value": 10000.0 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 10000.0 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 5000.0 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 10000.0 - }, - { - "year": 2025, - "MARS": "widow", - "value": 10000.0 - }, - { - "year": 2026, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 9e+99 + "value": 9e+99 }, { "year": 2026, @@ -4980,30 +4284,6 @@ "year": 2019, "value": 0.6 }, - { - "year": 2020, - "value": 0.6 - }, - { - "year": 2021, - "value": 0.6 - }, - { - "year": 2022, - "value": 0.6 - }, - { - "year": 2023, - "value": 0.6 - }, - { - "year": 2024, - "value": 0.6 - }, - { - "year": 2025, - "value": 0.6 - }, { "year": 2026, "value": 0.5 @@ -5408,30 +4688,6 @@ "year": 2019, "value": 1.0 }, - { - "year": 2020, - "value": 1.0 - }, - { - "year": 2021, - "value": 1.0 - }, - { - "year": 2022, - "value": 1.0 - }, - { - "year": 2023, - "value": 1.0 - }, - { - "year": 2024, - "value": 1.0 - }, - { - "year": 2025, - "value": 1.0 - }, { "year": 2026, "value": 0.0 @@ -5710,30 +4966,6 @@ "year": 2019, "value": 1.0 }, - { - "year": 2020, - "value": 1.0 - }, - { - "year": 2021, - "value": 1.0 - }, - { - "year": 2022, - "value": 1.0 - }, - { - "year": 2023, - "value": 1.0 - }, - { - "year": 2024, - "value": 1.0 - }, - { - "year": 2025, - "value": 1.0 - }, { "year": 2026, "value": 0.0 @@ -6133,177 +5365,27 @@ "value": 9e+99 }, { - "year": 2020, + "year": 2026, "MARS": "single", - "value": 9e+99 + "value": 315093.0 }, { - "year": 2020, + "year": 2026, "MARS": "mjoint", - "value": 9e+99 + "value": 378112.0 }, { - "year": 2020, + "year": 2026, "MARS": "mseparate", - "value": 9e+99 + "value": 189056.0 }, { - "year": 2020, + "year": 2026, "MARS": "headhh", - "value": 9e+99 + "value": 346603.0 }, { - "year": 2020, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "single", - "value": 315093.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 378112.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 189056.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 346603.0 - }, - { - "year": 2026, + "year": 2026, "MARS": "widow", "value": 378112.0 } @@ -6357,30 +5439,6 @@ "year": 2019, "value": 0.0 }, - { - "year": 2020, - "value": 0.0 - }, - { - "year": 2021, - "value": 0.0 - }, - { - "year": 2022, - "value": 0.0 - }, - { - "year": 2023, - "value": 0.0 - }, - { - "year": 2024, - "value": 0.0 - }, - { - "year": 2025, - "value": 0.0 - }, { "year": 2026, "value": 0.03 @@ -6435,30 +5493,6 @@ "year": 2019, "value": 1.0 }, - { - "year": 2020, - "value": 1.0 - }, - { - "year": 2021, - "value": 1.0 - }, - { - "year": 2022, - "value": 1.0 - }, - { - "year": 2023, - "value": 1.0 - }, - { - "year": 2024, - "value": 1.0 - }, - { - "year": 2025, - "value": 1.0 - }, { "year": 2026, "value": 0.8 @@ -8674,30 +7708,6 @@ "year": 2019, "value": 0.1 }, - { - "year": 2020, - "value": 0.1 - }, - { - "year": 2021, - "value": 0.1 - }, - { - "year": 2022, - "value": 0.1 - }, - { - "year": 2023, - "value": 0.1 - }, - { - "year": 2024, - "value": 0.1 - }, - { - "year": 2025, - "value": 0.1 - }, { "year": 2026, "value": 0.1 @@ -8900,213 +7910,63 @@ "value": 19400.0 }, { - "year": 2020, + "year": 2026, "MARS": "single", - "value": 9853.26 + "value": 11236.0 }, { - "year": 2020, + "year": 2026, "MARS": "mjoint", - "value": 19706.52 + "value": 22472.0 }, { - "year": 2020, + "year": 2026, "MARS": "mseparate", - "value": 9853.26 + "value": 11236.0 }, { - "year": 2020, + "year": 2026, "MARS": "headhh", - "value": 14068.83 + "value": 16086.0 }, { - "year": 2020, + "year": 2026, "MARS": "widow", - "value": 19706.52 + "value": 22472.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": "II_brk2" + } + }, + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": true, + "indexed": true, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Taxable income below this threshold is taxed at tax rate 1.", + "notes": "" + }, + "II_rt2": { + "value": [ + { + "year": 2013, + "value": 0.15 }, { - "year": 2021, - "MARS": "single", - "value": 10068.06 + "year": 2014, + "value": 0.15 }, { - "year": 2021, - "MARS": "mjoint", - "value": 20136.12 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 10068.06 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 14375.53 - }, - { - "year": 2021, - "MARS": "widow", - "value": 20136.12 - }, - { - "year": 2022, - "MARS": "single", - "value": 10296.61 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 20593.21 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 10296.61 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 14701.86 - }, - { - "year": 2022, - "MARS": "widow", - "value": 20593.21 - }, - { - "year": 2023, - "MARS": "single", - "value": 10534.46 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 21068.92 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 10534.46 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 15041.47 - }, - { - "year": 2023, - "MARS": "widow", - "value": 21068.92 - }, - { - "year": 2024, - "MARS": "single", - "value": 10768.32 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 21536.65 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 10768.32 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 15375.39 - }, - { - "year": 2024, - "MARS": "widow", - "value": 21536.65 - }, - { - "year": 2025, - "MARS": "single", - "value": 11000.92 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 22001.84 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 11000.92 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 15707.5 - }, - { - "year": 2025, - "MARS": "widow", - "value": 22001.84 - }, - { - "year": 2026, - "MARS": "single", - "value": 11236.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 22472.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 11236.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 16086.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 22472.0 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": "II_brk2" - } - }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": true, - "indexed": true, - "compatible_data": { - "puf": true, - "cps": true - }, - "description": "Taxable income below this threshold is taxed at tax rate 1.", - "notes": "" - }, - "II_rt2": { - "value": [ - { - "year": 2013, - "value": 0.15 - }, - { - "year": 2014, - "value": 0.15 - }, - { - "year": 2015, - "value": 0.15 + "year": 2015, + "value": 0.15 }, { "year": 2016, @@ -9124,30 +7984,6 @@ "year": 2019, "value": 0.12 }, - { - "year": 2020, - "value": 0.12 - }, - { - "year": 2021, - "value": 0.12 - }, - { - "year": 2022, - "value": 0.12 - }, - { - "year": 2023, - "value": 0.12 - }, - { - "year": 2024, - "value": 0.12 - }, - { - "year": 2025, - "value": 0.12 - }, { "year": 2026, "value": 0.15 @@ -9350,253 +8186,79 @@ "value": 78950.0 }, { - "year": 2020, + "year": 2026, "MARS": "single", - "value": 40098.7 + "value": 45728.0 }, { - "year": 2020, + "year": 2026, "MARS": "mjoint", - "value": 80197.41 + "value": 91455.0 }, { - "year": 2020, + "year": 2026, "MARS": "mseparate", - "value": 40098.7 + "value": 45728.0 }, { - "year": 2020, + "year": 2026, "MARS": "headhh", - "value": 53685.03 + "value": 61211.0 }, { - "year": 2020, + "year": 2026, "MARS": "widow", - "value": 80197.41 - }, - { - "year": 2021, - "MARS": "single", - "value": 40972.86 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 81945.71 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 40972.86 - }, + "value": 91455.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2", + "type": "float", + "validators": { + "range": { + "min": "II_brk1", + "max": "II_brk3" + } + }, + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": true, + "indexed": true, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income below this threshold and above tax bracket 1 is taxed at tax rate 2.", + "notes": "" + }, + "II_rt3": { + "value": [ { - "year": 2021, - "MARS": "headhh", - "value": 54855.36 + "year": 2013, + "value": 0.25 }, { - "year": 2021, - "MARS": "widow", - "value": 81945.71 + "year": 2014, + "value": 0.25 }, { - "year": 2022, - "MARS": "single", - "value": 41902.94 + "year": 2015, + "value": 0.25 }, { - "year": 2022, - "MARS": "mjoint", - "value": 83805.88 + "year": 2016, + "value": 0.25 }, { - "year": 2022, - "MARS": "mseparate", - "value": 41902.94 + "year": 2017, + "value": 0.25 }, { - "year": 2022, - "MARS": "headhh", - "value": 56100.58 + "year": 2018, + "value": 0.22 }, { - "year": 2022, - "MARS": "widow", - "value": 83805.88 - }, - { - "year": 2023, - "MARS": "single", - "value": 42870.9 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 85741.8 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 42870.9 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 57396.5 - }, - { - "year": 2023, - "MARS": "widow", - "value": 85741.8 - }, - { - "year": 2024, - "MARS": "single", - "value": 43822.63 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 87645.26 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 43822.63 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 58670.71 - }, - { - "year": 2024, - "MARS": "widow", - "value": 87645.26 - }, - { - "year": 2025, - "MARS": "single", - "value": 44769.2 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 89538.4 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 44769.2 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 59937.99 - }, - { - "year": 2025, - "MARS": "widow", - "value": 89538.4 - }, - { - "year": 2026, - "MARS": "single", - "value": 45728.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 91455.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 45728.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 61211.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 91455.0 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2", - "type": "float", - "validators": { - "range": { - "min": "II_brk1", - "max": "II_brk3" - } - }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": true, - "indexed": true, - "compatible_data": { - "puf": true, - "cps": true - }, - "description": "Income below this threshold and above tax bracket 1 is taxed at tax rate 2.", - "notes": "" - }, - "II_rt3": { - "value": [ - { - "year": 2013, - "value": 0.25 - }, - { - "year": 2014, - "value": 0.25 - }, - { - "year": 2015, - "value": 0.25 - }, - { - "year": 2016, - "value": 0.25 - }, - { - "year": 2017, - "value": 0.25 - }, - { - "year": 2018, - "value": 0.22 - }, - { - "year": 2019, - "value": 0.22 - }, - { - "year": 2020, - "value": 0.22 - }, - { - "year": 2021, - "value": 0.22 - }, - { - "year": 2022, - "value": 0.22 - }, - { - "year": 2023, - "value": 0.22 - }, - { - "year": 2024, - "value": 0.22 - }, - { - "year": 2025, - "value": 0.22 + "year": 2019, + "value": 0.22 }, { "year": 2026, @@ -9800,187 +8462,313 @@ "value": 168400.0 }, { - "year": 2020, + "year": 2026, "MARS": "single", - "value": 85530.36 + "value": 110735.0 }, { - "year": 2020, + "year": 2026, "MARS": "mjoint", - "value": 171060.72 + "value": 184477.0 }, { - "year": 2020, + "year": 2026, "MARS": "mseparate", - "value": 85530.36 + "value": 92239.0 }, { - "year": 2020, + "year": 2026, "MARS": "headhh", - "value": 85530.36 + "value": 158089.0 }, { - "year": 2020, + "year": 2026, "MARS": "widow", - "value": 171060.72 + "value": 184477.0 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3", + "type": "float", + "validators": { + "range": { + "min": "II_brk2", + "max": "II_brk4" + } + }, + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": true, + "indexed": true, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income below this threshold and above tax bracket 2 is taxed at tax rate 3.", + "notes": "" + }, + "II_rt4": { + "value": [ + { + "year": 2013, + "value": 0.28 }, { - "year": 2021, - "MARS": "single", - "value": 87394.92 + "year": 2014, + "value": 0.28 }, { - "year": 2021, - "MARS": "mjoint", - "value": 174789.84 + "year": 2015, + "value": 0.28 }, { - "year": 2021, - "MARS": "mseparate", - "value": 87394.92 + "year": 2016, + "value": 0.28 }, { - "year": 2021, - "MARS": "headhh", - "value": 87394.92 + "year": 2017, + "value": 0.28 }, { - "year": 2021, - "MARS": "widow", - "value": 174789.84 + "year": 2018, + "value": 0.24 }, { - "year": 2022, + "year": 2019, + "value": 0.24 + }, + { + "year": 2026, + "value": 0.28 + } + ], + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 4", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.", + "notes": "" + }, + "II_brk4": { + "value": [ + { + "year": 2013, "MARS": "single", - "value": 89378.79 + "value": 183250.0 }, { - "year": 2022, + "year": 2013, "MARS": "mjoint", - "value": 178757.57 + "value": 223050.0 }, { - "year": 2022, + "year": 2013, "MARS": "mseparate", - "value": 89378.79 + "value": 111525.0 }, { - "year": 2022, + "year": 2013, "MARS": "headhh", - "value": 89378.79 + "value": 203150.0 }, { - "year": 2022, + "year": 2013, "MARS": "widow", - "value": 178757.57 + "value": 223050.0 }, { - "year": 2023, + "year": 2014, "MARS": "single", - "value": 91443.44 + "value": 186350.0 }, { - "year": 2023, + "year": 2014, "MARS": "mjoint", - "value": 182886.87 + "value": 226850.0 }, { - "year": 2023, + "year": 2014, "MARS": "mseparate", - "value": 91443.44 + "value": 113425.0 }, { - "year": 2023, + "year": 2014, "MARS": "headhh", - "value": 91443.44 + "value": 206600.0 }, { - "year": 2023, + "year": 2014, "MARS": "widow", - "value": 182886.87 + "value": 226850.0 }, { - "year": 2024, + "year": 2015, "MARS": "single", - "value": 93473.48 + "value": 189300.0 }, { - "year": 2024, + "year": 2015, "MARS": "mjoint", - "value": 186946.96 + "value": 230450.0 }, { - "year": 2024, + "year": 2015, "MARS": "mseparate", - "value": 93473.48 + "value": 115225.0 }, { - "year": 2024, + "year": 2015, "MARS": "headhh", - "value": 93473.48 + "value": 209850.0 }, { - "year": 2024, + "year": 2015, "MARS": "widow", - "value": 186946.96 + "value": 230450.0 }, { - "year": 2025, + "year": 2016, "MARS": "single", - "value": 95492.51 + "value": 190150.0 }, { - "year": 2025, + "year": 2016, "MARS": "mjoint", - "value": 190985.02 + "value": 231450.0 }, { - "year": 2025, + "year": 2016, "MARS": "mseparate", - "value": 95492.51 + "value": 115725.0 }, { - "year": 2025, + "year": 2016, "MARS": "headhh", - "value": 95492.51 + "value": 210800.0 }, { - "year": 2025, + "year": 2016, + "MARS": "widow", + "value": 231450.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 191650.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 233350.0 + }, + { + "year": 2017, + "MARS": "mseparate", + "value": 116675.0 + }, + { + "year": 2017, + "MARS": "headhh", + "value": 212500.0 + }, + { + "year": 2017, + "MARS": "widow", + "value": 233350.0 + }, + { + "year": 2018, + "MARS": "single", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "mjoint", + "value": 315000.0 + }, + { + "year": 2018, + "MARS": "mseparate", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "headhh", + "value": 157500.0 + }, + { + "year": 2018, + "MARS": "widow", + "value": 315000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 160725.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 321450.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 160725.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 160700.0 + }, + { + "year": 2019, "MARS": "widow", - "value": 190985.02 + "value": 321450.0 }, { "year": 2026, "MARS": "single", - "value": 110735.0 + "value": 230928.0 }, { "year": 2026, "MARS": "mjoint", - "value": 184477.0 + "value": 281174.0 }, { "year": 2026, "MARS": "mseparate", - "value": 92239.0 + "value": 140587.0 }, { "year": 2026, "MARS": "headhh", - "value": 158089.0 + "value": 256051.0 }, { "year": 2026, "MARS": "widow", - "value": 184477.0 + "value": 281174.0 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3", + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4", "type": "float", "validators": { "range": { - "min": "II_brk2", - "max": "II_brk4" + "min": "II_brk3", + "max": "II_brk5" } }, "section_1": "Personal Income", @@ -9991,69 +8779,45 @@ "puf": true, "cps": true }, - "description": "Income below this threshold and above tax bracket 2 is taxed at tax rate 3.", + "description": "Income below this threshold and above tax bracket 3 is taxed at tax rate 4.", "notes": "" }, - "II_rt4": { + "II_rt5": { "value": [ { "year": 2013, - "value": 0.28 + "value": 0.33 }, { "year": 2014, - "value": 0.28 + "value": 0.33 }, { "year": 2015, - "value": 0.28 + "value": 0.33 }, { "year": 2016, - "value": 0.28 + "value": 0.33 }, { "year": 2017, - "value": 0.28 + "value": 0.33 }, { "year": 2018, - "value": 0.24 + "value": 0.32 }, { "year": 2019, - "value": 0.24 - }, - { - "year": 2020, - "value": 0.24 - }, - { - "year": 2021, - "value": 0.24 - }, - { - "year": 2022, - "value": 0.24 - }, - { - "year": 2023, - "value": 0.24 - }, - { - "year": 2024, - "value": 0.24 - }, - { - "year": 2025, - "value": 0.24 + "value": 0.32 }, { "year": 2026, - "value": 0.28 + "value": 0.33 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 4", + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 5", "type": "float", "validators": { "range": { @@ -10069,368 +8833,218 @@ "puf": true, "cps": true }, - "description": "The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.", + "description": "The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.", "notes": "" }, - "II_brk4": { + "II_brk5": { "value": [ { "year": 2013, "MARS": "single", - "value": 183250.0 + "value": 398350.0 }, { "year": 2013, "MARS": "mjoint", - "value": 223050.0 + "value": 398350.0 }, { "year": 2013, "MARS": "mseparate", - "value": 111525.0 + "value": 199175.0 }, { "year": 2013, "MARS": "headhh", - "value": 203150.0 + "value": 398350.0 }, { "year": 2013, "MARS": "widow", - "value": 223050.0 + "value": 398350.0 }, { "year": 2014, "MARS": "single", - "value": 186350.0 + "value": 405100.0 }, { "year": 2014, "MARS": "mjoint", - "value": 226850.0 + "value": 405100.0 }, { "year": 2014, "MARS": "mseparate", - "value": 113425.0 + "value": 202550.0 }, { "year": 2014, "MARS": "headhh", - "value": 206600.0 + "value": 405100.0 }, { "year": 2014, "MARS": "widow", - "value": 226850.0 + "value": 405100.0 }, { "year": 2015, "MARS": "single", - "value": 189300.0 + "value": 411500.0 }, { "year": 2015, "MARS": "mjoint", - "value": 230450.0 + "value": 411500.0 }, { "year": 2015, "MARS": "mseparate", - "value": 115225.0 + "value": 205750.0 }, { "year": 2015, "MARS": "headhh", - "value": 209850.0 + "value": 411500.0 }, { "year": 2015, "MARS": "widow", - "value": 230450.0 + "value": 411500.0 }, { "year": 2016, "MARS": "single", - "value": 190150.0 + "value": 413350.0 }, { "year": 2016, "MARS": "mjoint", - "value": 231450.0 + "value": 413350.0 }, { "year": 2016, "MARS": "mseparate", - "value": 115725.0 + "value": 206675.0 }, { "year": 2016, "MARS": "headhh", - "value": 210800.0 + "value": 413350.0 }, { "year": 2016, "MARS": "widow", - "value": 231450.0 + "value": 413350.0 }, { "year": 2017, "MARS": "single", - "value": 191650.0 + "value": 416700.0 }, { "year": 2017, "MARS": "mjoint", - "value": 233350.0 + "value": 416700.0 }, { "year": 2017, "MARS": "mseparate", - "value": 116675.0 + "value": 208350.0 }, { "year": 2017, "MARS": "headhh", - "value": 212500.0 + "value": 416700.0 }, { "year": 2017, "MARS": "widow", - "value": 233350.0 + "value": 416700.0 }, { "year": 2018, "MARS": "single", - "value": 157500.0 + "value": 200000.0 }, { "year": 2018, "MARS": "mjoint", - "value": 315000.0 + "value": 400000.0 }, { "year": 2018, "MARS": "mseparate", - "value": 157500.0 + "value": 200000.0 }, { "year": 2018, "MARS": "headhh", - "value": 157500.0 + "value": 200000.0 }, { "year": 2018, "MARS": "widow", - "value": 315000.0 + "value": 400000.0 }, { "year": 2019, "MARS": "single", - "value": 160725.0 + "value": 204100.0 }, { "year": 2019, "MARS": "mjoint", - "value": 321450.0 + "value": 408200.0 }, { "year": 2019, "MARS": "mseparate", - "value": 160725.0 + "value": 204100.0 }, { "year": 2019, "MARS": "headhh", - "value": 160700.0 + "value": 204100.0 }, { "year": 2019, "MARS": "widow", - "value": 321450.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 163264.46 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 326528.91 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 163264.46 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 163239.06 - }, - { - "year": 2020, - "MARS": "widow", - "value": 326528.91 - }, - { - "year": 2021, - "MARS": "single", - "value": 166823.62 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 333647.24 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 166823.62 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 166797.67 - }, - { - "year": 2021, - "MARS": "widow", - "value": 333647.24 - }, - { - "year": 2022, - "MARS": "single", - "value": 170610.52 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 341221.03 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 170610.52 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 170583.98 - }, - { - "year": 2022, - "MARS": "widow", - "value": 341221.03 - }, - { - "year": 2023, - "MARS": "single", - "value": 174551.62 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 349103.24 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 174551.62 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 174524.47 - }, - { - "year": 2023, - "MARS": "widow", - "value": 349103.24 - }, - { - "year": 2024, - "MARS": "single", - "value": 178426.67 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 356853.33 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 178426.67 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 178398.91 - }, - { - "year": 2024, - "MARS": "widow", - "value": 356853.33 - }, - { - "year": 2025, - "MARS": "single", - "value": 182280.68 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 364561.36 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 182280.68 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 182252.33 - }, - { - "year": 2025, - "MARS": "widow", - "value": 364561.36 + "value": 408200.0 }, { "year": 2026, "MARS": "single", - "value": 230928.0 + "value": 502101.0 }, { "year": 2026, "MARS": "mjoint", - "value": 281174.0 + "value": 502101.0 }, { "year": 2026, "MARS": "mseparate", - "value": 140587.0 + "value": 251050.0 }, { "year": 2026, "MARS": "headhh", - "value": 256051.0 + "value": 502101.0 }, { "year": 2026, "MARS": "widow", - "value": 281174.0 + "value": 502101.0 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4", + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5", "type": "float", "validators": { "range": { - "min": "II_brk3", - "max": "II_brk5" + "min": "II_brk4", + "max": "II_brk6" } }, "section_1": "Personal Income", @@ -10441,69 +9055,45 @@ "puf": true, "cps": true }, - "description": "Income below this threshold and above tax bracket 3 is taxed at tax rate 4.", + "description": "Income below this threshold and above tax bracket 4 is taxed at tax rate 5.", "notes": "" }, - "II_rt5": { + "II_rt6": { "value": [ { "year": 2013, - "value": 0.33 + "value": 0.35 }, { "year": 2014, - "value": 0.33 + "value": 0.35 }, { "year": 2015, - "value": 0.33 + "value": 0.35 }, { "year": 2016, - "value": 0.33 + "value": 0.35 }, { "year": 2017, - "value": 0.33 + "value": 0.35 }, { "year": 2018, - "value": 0.32 + "value": 0.35 }, { "year": 2019, - "value": 0.32 - }, - { - "year": 2020, - "value": 0.32 - }, - { - "year": 2021, - "value": 0.32 - }, - { - "year": 2022, - "value": 0.32 - }, - { - "year": 2023, - "value": 0.32 - }, - { - "year": 2024, - "value": 0.32 - }, - { - "year": 2025, - "value": 0.32 + "value": 0.35 }, { "year": 2026, - "value": 0.33 + "value": 0.35 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 5", + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 6", "type": "float", "validators": { "range": { @@ -10519,368 +9109,218 @@ "puf": true, "cps": true }, - "description": "The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.", + "description": "The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.", "notes": "" }, - "II_brk5": { + "II_brk6": { "value": [ { "year": 2013, "MARS": "single", - "value": 398350.0 + "value": 400000.0 }, { "year": 2013, "MARS": "mjoint", - "value": 398350.0 + "value": 450000.0 }, { "year": 2013, "MARS": "mseparate", - "value": 199175.0 + "value": 225000.0 }, { "year": 2013, "MARS": "headhh", - "value": 398350.0 + "value": 425000.0 }, { "year": 2013, "MARS": "widow", - "value": 398350.0 + "value": 450000.0 }, { "year": 2014, "MARS": "single", - "value": 405100.0 + "value": 406750.0 }, { "year": 2014, "MARS": "mjoint", - "value": 405100.0 + "value": 457600.0 }, { "year": 2014, "MARS": "mseparate", - "value": 202550.0 + "value": 228800.0 }, { "year": 2014, "MARS": "headhh", - "value": 405100.0 + "value": 432200.0 }, { "year": 2014, "MARS": "widow", - "value": 405100.0 + "value": 457600.0 }, { "year": 2015, "MARS": "single", - "value": 411500.0 + "value": 413200.0 }, { "year": 2015, "MARS": "mjoint", - "value": 411500.0 + "value": 464850.0 }, { "year": 2015, "MARS": "mseparate", - "value": 205750.0 + "value": 232425.0 }, { "year": 2015, "MARS": "headhh", - "value": 411500.0 + "value": 439000.0 }, { "year": 2015, "MARS": "widow", - "value": 411500.0 + "value": 464850.0 }, { "year": 2016, "MARS": "single", - "value": 413350.0 + "value": 415050.0 }, { "year": 2016, "MARS": "mjoint", - "value": 413350.0 + "value": 466950.0 }, { "year": 2016, "MARS": "mseparate", - "value": 206675.0 + "value": 233475.0 }, { "year": 2016, "MARS": "headhh", - "value": 413350.0 + "value": 441000.0 }, { "year": 2016, "MARS": "widow", - "value": 413350.0 + "value": 466950.0 }, { "year": 2017, "MARS": "single", - "value": 416700.0 + "value": 418400.0 }, { "year": 2017, "MARS": "mjoint", - "value": 416700.0 + "value": 470700.0 }, { "year": 2017, "MARS": "mseparate", - "value": 208350.0 + "value": 235350.0 }, { "year": 2017, "MARS": "headhh", - "value": 416700.0 + "value": 444550.0 }, { "year": 2017, "MARS": "widow", - "value": 416700.0 + "value": 470700.0 }, { "year": 2018, "MARS": "single", - "value": 200000.0 + "value": 500000.0 }, { "year": 2018, "MARS": "mjoint", - "value": 400000.0 + "value": 600000.0 }, { "year": 2018, "MARS": "mseparate", - "value": 200000.0 + "value": 300000.0 }, { "year": 2018, "MARS": "headhh", - "value": 200000.0 + "value": 500000.0 }, { "year": 2018, "MARS": "widow", - "value": 400000.0 + "value": 600000.0 }, { "year": 2019, "MARS": "single", - "value": 204100.0 + "value": 510300.0 }, { "year": 2019, "MARS": "mjoint", - "value": 408200.0 + "value": 612350.0 }, { "year": 2019, "MARS": "mseparate", - "value": 204100.0 + "value": 306175.0 }, { "year": 2019, "MARS": "headhh", - "value": 204100.0 + "value": 510300.0 }, { "year": 2019, "MARS": "widow", - "value": 408200.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 207324.78 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 414649.56 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 207324.78 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 207324.78 - }, - { - "year": 2020, - "MARS": "widow", - "value": 414649.56 - }, - { - "year": 2021, - "MARS": "single", - "value": 211844.46 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 423688.92 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 211844.46 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 211844.46 - }, - { - "year": 2021, - "MARS": "widow", - "value": 423688.92 - }, - { - "year": 2022, - "MARS": "single", - "value": 216653.33 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 433306.66 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 216653.33 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 216653.33 - }, - { - "year": 2022, - "MARS": "widow", - "value": 433306.66 - }, - { - "year": 2023, - "MARS": "single", - "value": 221658.02 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 443316.04 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 221658.02 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 221658.02 - }, - { - "year": 2023, - "MARS": "widow", - "value": 443316.04 - }, - { - "year": 2024, - "MARS": "single", - "value": 226578.83 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 453157.66 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 226578.83 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 226578.83 - }, - { - "year": 2024, - "MARS": "widow", - "value": 453157.66 - }, - { - "year": 2025, - "MARS": "single", - "value": 231472.93 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 462945.86 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 231472.93 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 231472.93 - }, - { - "year": 2025, - "MARS": "widow", - "value": 462945.86 + "value": 612350.0 }, { "year": 2026, "MARS": "single", - "value": 502101.0 + "value": 504149.0 }, { "year": 2026, "MARS": "mjoint", - "value": 502101.0 + "value": 567168.0 }, { "year": 2026, "MARS": "mseparate", - "value": 251050.0 + "value": 283584.0 }, { "year": 2026, "MARS": "headhh", - "value": 502101.0 + "value": 535659.0 }, { "year": 2026, "MARS": "widow", - "value": 502101.0 + "value": 567168.0 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5", + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 6", "type": "float", "validators": { "range": { - "min": "II_brk4", - "max": "II_brk6" + "min": "II_brk5", + "max": "II_brk7" } }, "section_1": "Personal Income", @@ -10891,69 +9331,45 @@ "puf": true, "cps": true }, - "description": "Income below this threshold and above tax bracket 4 is taxed at tax rate 5.", + "description": "Income below this threshold and above tax bracket 5 is taxed at tax rate 6.", "notes": "" }, - "II_rt6": { + "II_rt7": { "value": [ { "year": 2013, - "value": 0.35 + "value": 0.396 }, { "year": 2014, - "value": 0.35 + "value": 0.396 }, { "year": 2015, - "value": 0.35 + "value": 0.396 }, { "year": 2016, - "value": 0.35 + "value": 0.396 }, { "year": 2017, - "value": 0.35 + "value": 0.396 }, { "year": 2018, - "value": 0.35 + "value": 0.37 }, { "year": 2019, - "value": 0.35 - }, - { - "year": 2020, - "value": 0.35 - }, - { - "year": 2021, - "value": 0.35 - }, - { - "year": 2022, - "value": 0.35 - }, - { - "year": 2023, - "value": 0.35 - }, - { - "year": 2024, - "value": 0.35 - }, - { - "year": 2025, - "value": 0.35 + "value": 0.37 }, { "year": 2026, - "value": 0.35 + "value": 0.396 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 6", + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 7", "type": "float", "validators": { "range": { @@ -10969,368 +9385,218 @@ "puf": true, "cps": true }, - "description": "The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.", + "description": "The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.", "notes": "" }, - "II_brk6": { + "II_brk7": { "value": [ { "year": 2013, "MARS": "single", - "value": 400000.0 + "value": 9e+99 }, { "year": 2013, "MARS": "mjoint", - "value": 450000.0 + "value": 9e+99 }, { "year": 2013, "MARS": "mseparate", - "value": 225000.0 + "value": 9e+99 }, { "year": 2013, "MARS": "headhh", - "value": 425000.0 + "value": 9e+99 }, { "year": 2013, "MARS": "widow", - "value": 450000.0 + "value": 9e+99 }, { "year": 2014, "MARS": "single", - "value": 406750.0 + "value": 9e+99 }, { "year": 2014, "MARS": "mjoint", - "value": 457600.0 + "value": 9e+99 }, { "year": 2014, "MARS": "mseparate", - "value": 228800.0 + "value": 9e+99 }, { "year": 2014, "MARS": "headhh", - "value": 432200.0 + "value": 9e+99 }, { "year": 2014, "MARS": "widow", - "value": 457600.0 + "value": 9e+99 }, { "year": 2015, "MARS": "single", - "value": 413200.0 + "value": 9e+99 }, { "year": 2015, "MARS": "mjoint", - "value": 464850.0 + "value": 9e+99 }, { "year": 2015, "MARS": "mseparate", - "value": 232425.0 + "value": 9e+99 }, { "year": 2015, "MARS": "headhh", - "value": 439000.0 + "value": 9e+99 }, { "year": 2015, "MARS": "widow", - "value": 464850.0 + "value": 9e+99 }, { "year": 2016, "MARS": "single", - "value": 415050.0 + "value": 9e+99 }, { "year": 2016, "MARS": "mjoint", - "value": 466950.0 + "value": 9e+99 }, { "year": 2016, "MARS": "mseparate", - "value": 233475.0 + "value": 9e+99 }, { "year": 2016, "MARS": "headhh", - "value": 441000.0 + "value": 9e+99 }, { "year": 2016, "MARS": "widow", - "value": 466950.0 + "value": 9e+99 }, { "year": 2017, "MARS": "single", - "value": 418400.0 + "value": 9e+99 }, { "year": 2017, "MARS": "mjoint", - "value": 470700.0 + "value": 9e+99 }, { "year": 2017, "MARS": "mseparate", - "value": 235350.0 + "value": 9e+99 }, { "year": 2017, "MARS": "headhh", - "value": 444550.0 + "value": 9e+99 }, { "year": 2017, "MARS": "widow", - "value": 470700.0 + "value": 9e+99 }, { "year": 2018, "MARS": "single", - "value": 500000.0 + "value": 9e+99 }, { "year": 2018, "MARS": "mjoint", - "value": 600000.0 + "value": 9e+99 }, { "year": 2018, "MARS": "mseparate", - "value": 300000.0 + "value": 9e+99 }, { "year": 2018, "MARS": "headhh", - "value": 500000.0 + "value": 9e+99 }, { "year": 2018, "MARS": "widow", - "value": 600000.0 + "value": 9e+99 }, { "year": 2019, "MARS": "single", - "value": 510300.0 + "value": 9e+99 }, { "year": 2019, "MARS": "mjoint", - "value": 612350.0 + "value": 9e+99 }, { "year": 2019, "MARS": "mseparate", - "value": 306175.0 + "value": 9e+99 }, { "year": 2019, "MARS": "headhh", - "value": 510300.0 + "value": 9e+99 }, { "year": 2019, "MARS": "widow", - "value": 612350.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 518362.74 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 622025.13 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 311012.56 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 518362.74 - }, - { - "year": 2020, - "MARS": "widow", - "value": 622025.13 - }, - { - "year": 2021, - "MARS": "single", - "value": 529663.05 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 635585.28 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 317792.64 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 529663.05 - }, - { - "year": 2021, - "MARS": "widow", - "value": 635585.28 - }, - { - "year": 2022, - "MARS": "single", - "value": 541686.4 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 650013.06 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 325006.53 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 541686.4 - }, - { - "year": 2022, - "MARS": "widow", - "value": 650013.06 - }, - { - "year": 2023, - "MARS": "single", - "value": 554199.35 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 665028.37 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 332514.18 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 554199.35 - }, - { - "year": 2023, - "MARS": "widow", - "value": 665028.37 - }, - { - "year": 2024, - "MARS": "single", - "value": 566502.58 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 679792.0 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 339896.0 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 566502.58 - }, - { - "year": 2024, - "MARS": "widow", - "value": 679792.0 - }, - { - "year": 2025, - "MARS": "single", - "value": 578739.04 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 694475.5 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 347237.75 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 578739.04 - }, - { - "year": 2025, - "MARS": "widow", - "value": 694475.5 + "value": 9e+99 }, { "year": 2026, "MARS": "single", - "value": 504149.0 + "value": 9e+99 }, { "year": 2026, "MARS": "mjoint", - "value": 567168.0 + "value": 9e+99 }, { "year": 2026, "MARS": "mseparate", - "value": 283584.0 + "value": 9e+99 }, { "year": 2026, "MARS": "headhh", - "value": 535659.0 + "value": 9e+99 }, { "year": 2026, "MARS": "widow", - "value": 567168.0 + "value": 9e+99 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 6", + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 7", "type": "float", "validators": { "range": { - "min": "II_brk5", - "max": "II_brk7" + "min": "II_brk6", + "max": 9e+99 } }, "section_1": "Personal Income", @@ -11341,69 +9607,17 @@ "puf": true, "cps": true }, - "description": "Income below this threshold and above tax bracket 5 is taxed at tax rate 6.", + "description": "Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.", "notes": "" }, - "II_rt7": { + "II_rt8": { "value": [ { "year": 2013, - "value": 0.396 - }, - { - "year": 2014, - "value": 0.396 - }, - { - "year": 2015, - "value": 0.396 - }, - { - "year": 2016, - "value": 0.396 - }, - { - "year": 2017, - "value": 0.396 - }, - { - "year": 2018, - "value": 0.37 - }, - { - "year": 2019, - "value": 0.37 - }, - { - "year": 2020, - "value": 0.37 - }, - { - "year": 2021, - "value": 0.37 - }, - { - "year": 2022, - "value": 0.37 - }, - { - "year": 2023, - "value": 0.37 - }, - { - "year": 2024, - "value": 0.37 - }, - { - "year": 2025, - "value": 0.37 - }, - { - "year": 2026, - "value": 0.396 + "value": 1.0 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 7", + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 8", "type": "float", "validators": { "range": { @@ -11419,1367 +9633,45 @@ "puf": true, "cps": true }, - "description": "The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.", + "description": "The tax rate applied to the portion of taxable income above tax bracket 7.", "notes": "" }, - "II_brk7": { + "PT_rt1": { "value": [ { "year": 2013, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 9e+99 + "value": 0.1 }, { - "year": 2013, - "MARS": "widow", - "value": 9e+99 + "year": 2014, + "value": 0.1 }, { - "year": 2014, - "MARS": "single", - "value": 9e+99 + "year": 2015, + "value": 0.1 }, { - "year": 2014, - "MARS": "mjoint", - "value": 9e+99 + "year": 2016, + "value": 0.1 }, { - "year": 2014, - "MARS": "mseparate", - "value": 9e+99 + "year": 2017, + "value": 0.1 }, { - "year": 2014, - "MARS": "headhh", - "value": 9e+99 + "year": 2018, + "value": 0.1 }, { - "year": 2014, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2015, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2016, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2017, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2018, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2019, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2020, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2021, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2022, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2023, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2024, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2025, - "MARS": "widow", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "single", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 9e+99 - }, - { - "year": 2026, - "MARS": "widow", - "value": 9e+99 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 7", - "type": "float", - "validators": { - "range": { - "min": "II_brk6", - "max": 9e+99 - } - }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": true, - "indexed": true, - "compatible_data": { - "puf": true, - "cps": true - }, - "description": "Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.", - "notes": "" - }, - "II_rt8": { - "value": [ - { - "year": 2013, - "value": 1.0 - } - ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 8", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, - "compatible_data": { - "puf": true, - "cps": true - }, - "description": "The tax rate applied to the portion of taxable income above tax bracket 7.", - "notes": "" - }, - "PT_rt1": { - "value": [ - { - "year": 2013, - "value": 0.1 - }, - { - "year": 2014, - "value": 0.1 - }, - { - "year": 2015, - "value": 0.1 - }, - { - "year": 2016, - "value": 0.1 - }, - { - "year": 2017, - "value": 0.1 - }, - { - "year": 2018, - "value": 0.1 - }, - { - "year": 2019, - "value": 0.1 - }, - { - "year": 2020, - "value": 0.1 - }, - { - "year": 2021, - "value": 0.1 - }, - { - "year": 2022, - "value": 0.1 - }, - { - "year": 2023, - "value": 0.1 - }, - { - "year": 2024, - "value": 0.1 - }, - { - "year": 2025, - "value": 0.1 - }, - { - "year": 2026, - "value": 0.1 - } - ], - "title": "Pass-through income tax rate 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "compatible_data": { - "puf": true, - "cps": true - }, - "description": "The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.", - "notes": "" - }, - "PT_brk1": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 8925.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 17850.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 8925.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 12750.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 17850.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 9075.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 18150.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 9075.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 12950.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 18150.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 9225.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 18450.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 9225.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 13150.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 18450.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 9275.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 18550.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 9275.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 13250.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 18550.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 9325.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 18650.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 9325.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 13350.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 18650.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 9525.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 19050.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 9525.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 13600.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 19050.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 9700.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 19400.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 9700.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 13850.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 19400.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 9853.26 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 19706.52 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 9853.26 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 14068.83 - }, - { - "year": 2020, - "MARS": "widow", - "value": 19706.52 - }, - { - "year": 2021, - "MARS": "single", - "value": 10068.06 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 20136.12 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 10068.06 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 14375.53 - }, - { - "year": 2021, - "MARS": "widow", - "value": 20136.12 - }, - { - "year": 2022, - "MARS": "single", - "value": 10296.61 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 20593.21 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 10296.61 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 14701.86 - }, - { - "year": 2022, - "MARS": "widow", - "value": 20593.21 - }, - { - "year": 2023, - "MARS": "single", - "value": 10534.46 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 21068.92 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 10534.46 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 15041.47 - }, - { - "year": 2023, - "MARS": "widow", - "value": 21068.92 - }, - { - "year": 2024, - "MARS": "single", - "value": 10768.32 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 21536.65 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 10768.32 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 15375.39 - }, - { - "year": 2024, - "MARS": "widow", - "value": 21536.65 - }, - { - "year": 2025, - "MARS": "single", - "value": 11000.92 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 22001.84 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 11000.92 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 15707.5 - }, - { - "year": 2025, - "MARS": "widow", - "value": 22001.84 - }, - { - "year": 2026, - "MARS": "single", - "value": 11236.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 22472.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 11236.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 16086.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 22472.0 - } - ], - "title": "Pass-through income tax bracket (upper threshold) 1", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": "PT_brk2" - } - }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": true, - "indexed": true, - "compatible_data": { - "puf": true, - "cps": true - }, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.", - "notes": "" - }, - "PT_rt2": { - "value": [ - { - "year": 2013, - "value": 0.15 - }, - { - "year": 2014, - "value": 0.15 - }, - { - "year": 2015, - "value": 0.15 - }, - { - "year": 2016, - "value": 0.15 - }, - { - "year": 2017, - "value": 0.15 - }, - { - "year": 2018, - "value": 0.12 - }, - { - "year": 2019, - "value": 0.12 - }, - { - "year": 2020, - "value": 0.12 - }, - { - "year": 2021, - "value": 0.12 - }, - { - "year": 2022, - "value": 0.12 - }, - { - "year": 2023, - "value": 0.12 - }, - { - "year": 2024, - "value": 0.12 - }, - { - "year": 2025, - "value": 0.12 - }, - { - "year": 2026, - "value": 0.15 - } - ], - "title": "Pass-through income tax rate 2", - "type": "float", - "validators": { - "range": { - "min": 0, - "max": 1 - } - }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, - "compatible_data": { - "puf": true, - "cps": true - }, - "description": "The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.", - "notes": "" - }, - "PT_brk2": { - "value": [ - { - "year": 2013, - "MARS": "single", - "value": 36250.0 - }, - { - "year": 2013, - "MARS": "mjoint", - "value": 72500.0 - }, - { - "year": 2013, - "MARS": "mseparate", - "value": 36250.0 - }, - { - "year": 2013, - "MARS": "headhh", - "value": 48600.0 - }, - { - "year": 2013, - "MARS": "widow", - "value": 72500.0 - }, - { - "year": 2014, - "MARS": "single", - "value": 36900.0 - }, - { - "year": 2014, - "MARS": "mjoint", - "value": 73800.0 - }, - { - "year": 2014, - "MARS": "mseparate", - "value": 36900.0 - }, - { - "year": 2014, - "MARS": "headhh", - "value": 49400.0 - }, - { - "year": 2014, - "MARS": "widow", - "value": 73800.0 - }, - { - "year": 2015, - "MARS": "single", - "value": 37450.0 - }, - { - "year": 2015, - "MARS": "mjoint", - "value": 74900.0 - }, - { - "year": 2015, - "MARS": "mseparate", - "value": 37450.0 - }, - { - "year": 2015, - "MARS": "headhh", - "value": 50200.0 - }, - { - "year": 2015, - "MARS": "widow", - "value": 74900.0 - }, - { - "year": 2016, - "MARS": "single", - "value": 37650.0 - }, - { - "year": 2016, - "MARS": "mjoint", - "value": 75300.0 - }, - { - "year": 2016, - "MARS": "mseparate", - "value": 37650.0 - }, - { - "year": 2016, - "MARS": "headhh", - "value": 50400.0 - }, - { - "year": 2016, - "MARS": "widow", - "value": 75300.0 - }, - { - "year": 2017, - "MARS": "single", - "value": 37950.0 - }, - { - "year": 2017, - "MARS": "mjoint", - "value": 75900.0 - }, - { - "year": 2017, - "MARS": "mseparate", - "value": 37950.0 - }, - { - "year": 2017, - "MARS": "headhh", - "value": 50800.0 - }, - { - "year": 2017, - "MARS": "widow", - "value": 75900.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 38700.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 77400.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 38700.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 51800.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 77400.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 39475.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 78950.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 39475.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 52850.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 78950.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 40098.7 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 80197.41 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 40098.7 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 53685.03 - }, - { - "year": 2020, - "MARS": "widow", - "value": 80197.41 - }, - { - "year": 2021, - "MARS": "single", - "value": 40972.86 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 81945.71 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 40972.86 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 54855.36 - }, - { - "year": 2021, - "MARS": "widow", - "value": 81945.71 - }, - { - "year": 2022, - "MARS": "single", - "value": 41902.94 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 83805.88 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 41902.94 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 56100.58 - }, - { - "year": 2022, - "MARS": "widow", - "value": 83805.88 - }, - { - "year": 2023, - "MARS": "single", - "value": 42870.9 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 85741.8 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 42870.9 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 57396.5 - }, - { - "year": 2023, - "MARS": "widow", - "value": 85741.8 - }, - { - "year": 2024, - "MARS": "single", - "value": 43822.63 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 87645.26 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 43822.63 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 58670.71 - }, - { - "year": 2024, - "MARS": "widow", - "value": 87645.26 - }, - { - "year": 2025, - "MARS": "single", - "value": 44769.2 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 89538.4 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 44769.2 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 59937.99 - }, - { - "year": 2025, - "MARS": "widow", - "value": 89538.4 - }, - { - "year": 2026, - "MARS": "single", - "value": 45728.0 - }, - { - "year": 2026, - "MARS": "mjoint", - "value": 91455.0 - }, - { - "year": 2026, - "MARS": "mseparate", - "value": 45728.0 - }, - { - "year": 2026, - "MARS": "headhh", - "value": 61211.0 - }, - { - "year": 2026, - "MARS": "widow", - "value": 91455.0 - } - ], - "title": "Pass-through income tax bracket (upper threshold) 2", - "type": "float", - "validators": { - "range": { - "min": "PT_brk1", - "max": "PT_brk3" - } - }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": true, - "indexed": true, - "compatible_data": { - "puf": true, - "cps": true - }, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.", - "notes": "" - }, - "PT_rt3": { - "value": [ - { - "year": 2013, - "value": 0.25 - }, - { - "year": 2014, - "value": 0.25 - }, - { - "year": 2015, - "value": 0.25 - }, - { - "year": 2016, - "value": 0.25 - }, - { - "year": 2017, - "value": 0.25 - }, - { - "year": 2018, - "value": 0.22 - }, - { - "year": 2019, - "value": 0.22 - }, - { - "year": 2020, - "value": 0.22 - }, - { - "year": 2021, - "value": 0.22 - }, - { - "year": 2022, - "value": 0.22 - }, - { - "year": 2023, - "value": 0.22 - }, - { - "year": 2024, - "value": 0.22 - }, - { - "year": 2025, - "value": 0.22 + "year": 2019, + "value": 0.1 }, { "year": 2026, - "value": 0.25 + "value": 0.1 } ], - "title": "Pass-through income tax rate 3", + "title": "Pass-through income tax rate 1", "type": "float", "validators": { "range": { @@ -12795,368 +9687,218 @@ "puf": true, "cps": true }, - "description": "The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.", + "description": "The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.", "notes": "" }, - "PT_brk3": { + "PT_brk1": { "value": [ { "year": 2013, "MARS": "single", - "value": 87850.0 + "value": 8925.0 }, { "year": 2013, "MARS": "mjoint", - "value": 146400.0 + "value": 17850.0 }, { "year": 2013, "MARS": "mseparate", - "value": 73200.0 + "value": 8925.0 }, { "year": 2013, "MARS": "headhh", - "value": 125450.0 + "value": 12750.0 }, { "year": 2013, "MARS": "widow", - "value": 146400.0 + "value": 17850.0 }, { "year": 2014, "MARS": "single", - "value": 89350.0 + "value": 9075.0 }, { "year": 2014, "MARS": "mjoint", - "value": 148850.0 + "value": 18150.0 }, { "year": 2014, "MARS": "mseparate", - "value": 74425.0 + "value": 9075.0 }, { "year": 2014, "MARS": "headhh", - "value": 127550.0 + "value": 12950.0 }, { "year": 2014, "MARS": "widow", - "value": 148850.0 + "value": 18150.0 }, { "year": 2015, "MARS": "single", - "value": 90750.0 + "value": 9225.0 }, { "year": 2015, "MARS": "mjoint", - "value": 151200.0 + "value": 18450.0 }, { "year": 2015, "MARS": "mseparate", - "value": 75600.0 + "value": 9225.0 }, { "year": 2015, "MARS": "headhh", - "value": 129600.0 + "value": 13150.0 }, { "year": 2015, "MARS": "widow", - "value": 151200.0 + "value": 18450.0 }, { "year": 2016, "MARS": "single", - "value": 91150.0 + "value": 9275.0 }, { "year": 2016, "MARS": "mjoint", - "value": 151900.0 + "value": 18550.0 }, { "year": 2016, "MARS": "mseparate", - "value": 75950.0 + "value": 9275.0 }, { "year": 2016, "MARS": "headhh", - "value": 130150.0 + "value": 13250.0 }, { "year": 2016, "MARS": "widow", - "value": 151900.0 + "value": 18550.0 }, { "year": 2017, "MARS": "single", - "value": 91900.0 + "value": 9325.0 }, { "year": 2017, "MARS": "mjoint", - "value": 153100.0 + "value": 18650.0 }, { "year": 2017, "MARS": "mseparate", - "value": 76550.0 + "value": 9325.0 }, { "year": 2017, "MARS": "headhh", - "value": 131200.0 + "value": 13350.0 }, { "year": 2017, "MARS": "widow", - "value": 153100.0 + "value": 18650.0 }, { "year": 2018, "MARS": "single", - "value": 82500.0 + "value": 9525.0 }, { "year": 2018, "MARS": "mjoint", - "value": 165000.0 + "value": 19050.0 }, { "year": 2018, "MARS": "mseparate", - "value": 82500.0 + "value": 9525.0 }, { "year": 2018, "MARS": "headhh", - "value": 82500.0 + "value": 13600.0 }, { "year": 2018, "MARS": "widow", - "value": 165000.0 + "value": 19050.0 }, { "year": 2019, "MARS": "single", - "value": 84200.0 + "value": 9700.0 }, { "year": 2019, "MARS": "mjoint", - "value": 168400.0 + "value": 19400.0 }, { "year": 2019, "MARS": "mseparate", - "value": 84200.0 + "value": 9700.0 }, { "year": 2019, "MARS": "headhh", - "value": 84200.0 + "value": 13850.0 }, { "year": 2019, "MARS": "widow", - "value": 168400.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 85530.36 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 171060.72 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 85530.36 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 85530.36 - }, - { - "year": 2020, - "MARS": "widow", - "value": 171060.72 - }, - { - "year": 2021, - "MARS": "single", - "value": 87394.92 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 174789.84 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 87394.92 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 87394.92 - }, - { - "year": 2021, - "MARS": "widow", - "value": 174789.84 - }, - { - "year": 2022, - "MARS": "single", - "value": 89378.79 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 178757.57 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 89378.79 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 89378.79 - }, - { - "year": 2022, - "MARS": "widow", - "value": 178757.57 - }, - { - "year": 2023, - "MARS": "single", - "value": 91443.44 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 182886.87 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 91443.44 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 91443.44 - }, - { - "year": 2023, - "MARS": "widow", - "value": 182886.87 - }, - { - "year": 2024, - "MARS": "single", - "value": 93473.48 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 186946.96 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 93473.48 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 93473.48 - }, - { - "year": 2024, - "MARS": "widow", - "value": 186946.96 - }, - { - "year": 2025, - "MARS": "single", - "value": 95492.51 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 190985.02 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 95492.51 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 95492.51 - }, - { - "year": 2025, - "MARS": "widow", - "value": 190985.02 + "value": 19400.0 }, { "year": 2026, "MARS": "single", - "value": 110735.0 + "value": 11236.0 }, { "year": 2026, "MARS": "mjoint", - "value": 184477.0 + "value": 22472.0 }, { "year": 2026, "MARS": "mseparate", - "value": 92239.0 + "value": 11236.0 }, { "year": 2026, "MARS": "headhh", - "value": 158089.0 + "value": 16086.0 }, { "year": 2026, "MARS": "widow", - "value": 184477.0 + "value": 22472.0 } ], - "title": "Pass-through income tax bracket (upper threshold) 3", + "title": "Pass-through income tax bracket (upper threshold) 1", "type": "float", "validators": { "range": { - "min": "PT_brk2", - "max": "PT_brk4" + "min": 0, + "max": "PT_brk2" } }, "section_1": "Personal Income", @@ -13167,69 +9909,45 @@ "puf": true, "cps": true }, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.", "notes": "" }, - "PT_rt4": { + "PT_rt2": { "value": [ { "year": 2013, - "value": 0.28 + "value": 0.15 }, { "year": 2014, - "value": 0.28 + "value": 0.15 }, { "year": 2015, - "value": 0.28 + "value": 0.15 }, { "year": 2016, - "value": 0.28 + "value": 0.15 }, { "year": 2017, - "value": 0.28 + "value": 0.15 }, { "year": 2018, - "value": 0.24 + "value": 0.12 }, { "year": 2019, - "value": 0.24 - }, - { - "year": 2020, - "value": 0.24 - }, - { - "year": 2021, - "value": 0.24 - }, - { - "year": 2022, - "value": 0.24 - }, - { - "year": 2023, - "value": 0.24 - }, - { - "year": 2024, - "value": 0.24 - }, - { - "year": 2025, - "value": 0.24 + "value": 0.12 }, { "year": 2026, - "value": 0.28 + "value": 0.15 } ], - "title": "Pass-through income tax rate 4", + "title": "Pass-through income tax rate 2", "type": "float", "validators": { "range": { @@ -13245,368 +9963,218 @@ "puf": true, "cps": true }, - "description": "The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.", + "description": "The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.", "notes": "" }, - "PT_brk4": { + "PT_brk2": { "value": [ { "year": 2013, "MARS": "single", - "value": 183250.0 + "value": 36250.0 }, { "year": 2013, "MARS": "mjoint", - "value": 223050.0 + "value": 72500.0 }, { "year": 2013, "MARS": "mseparate", - "value": 111525.0 + "value": 36250.0 }, { "year": 2013, "MARS": "headhh", - "value": 203150.0 + "value": 48600.0 }, { "year": 2013, "MARS": "widow", - "value": 223050.0 + "value": 72500.0 }, { "year": 2014, "MARS": "single", - "value": 186350.0 + "value": 36900.0 }, { "year": 2014, "MARS": "mjoint", - "value": 226850.0 + "value": 73800.0 }, { "year": 2014, "MARS": "mseparate", - "value": 113425.0 + "value": 36900.0 }, { "year": 2014, "MARS": "headhh", - "value": 206600.0 + "value": 49400.0 }, { "year": 2014, "MARS": "widow", - "value": 226850.0 + "value": 73800.0 }, { "year": 2015, "MARS": "single", - "value": 189300.0 + "value": 37450.0 }, { "year": 2015, "MARS": "mjoint", - "value": 230450.0 + "value": 74900.0 }, { "year": 2015, "MARS": "mseparate", - "value": 115225.0 + "value": 37450.0 }, { "year": 2015, "MARS": "headhh", - "value": 209850.0 + "value": 50200.0 }, { "year": 2015, "MARS": "widow", - "value": 230450.0 + "value": 74900.0 }, { "year": 2016, "MARS": "single", - "value": 190150.0 + "value": 37650.0 }, { "year": 2016, "MARS": "mjoint", - "value": 231450.0 + "value": 75300.0 }, { "year": 2016, "MARS": "mseparate", - "value": 115725.0 + "value": 37650.0 }, { "year": 2016, "MARS": "headhh", - "value": 210800.0 + "value": 50400.0 }, { "year": 2016, "MARS": "widow", - "value": 231450.0 + "value": 75300.0 }, { "year": 2017, "MARS": "single", - "value": 191650.0 + "value": 37950.0 }, { "year": 2017, "MARS": "mjoint", - "value": 233350.0 + "value": 75900.0 }, { "year": 2017, "MARS": "mseparate", - "value": 116675.0 + "value": 37950.0 }, { "year": 2017, "MARS": "headhh", - "value": 212500.0 + "value": 50800.0 }, { "year": 2017, "MARS": "widow", - "value": 233350.0 + "value": 75900.0 }, { "year": 2018, "MARS": "single", - "value": 157500.0 + "value": 38700.0 }, { "year": 2018, "MARS": "mjoint", - "value": 315000.0 + "value": 77400.0 }, { "year": 2018, "MARS": "mseparate", - "value": 157500.0 + "value": 38700.0 }, { "year": 2018, "MARS": "headhh", - "value": 157500.0 + "value": 51800.0 }, { "year": 2018, "MARS": "widow", - "value": 315000.0 + "value": 77400.0 }, { "year": 2019, "MARS": "single", - "value": 160725.0 + "value": 39475.0 }, { "year": 2019, "MARS": "mjoint", - "value": 321450.0 + "value": 78950.0 }, { "year": 2019, "MARS": "mseparate", - "value": 160725.0 + "value": 39475.0 }, { "year": 2019, "MARS": "headhh", - "value": 160700.0 + "value": 52850.0 }, { "year": 2019, "MARS": "widow", - "value": 321450.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 163264.46 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 326528.91 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 163264.46 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 163239.06 - }, - { - "year": 2020, - "MARS": "widow", - "value": 326528.91 - }, - { - "year": 2021, - "MARS": "single", - "value": 166823.62 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 333647.24 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 166823.62 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 166797.67 - }, - { - "year": 2021, - "MARS": "widow", - "value": 333647.24 - }, - { - "year": 2022, - "MARS": "single", - "value": 170610.52 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 341221.03 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 170610.52 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 170583.98 - }, - { - "year": 2022, - "MARS": "widow", - "value": 341221.03 - }, - { - "year": 2023, - "MARS": "single", - "value": 174551.62 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 349103.24 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 174551.62 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 174524.47 - }, - { - "year": 2023, - "MARS": "widow", - "value": 349103.24 - }, - { - "year": 2024, - "MARS": "single", - "value": 178426.67 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 356853.33 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 178426.67 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 178398.91 - }, - { - "year": 2024, - "MARS": "widow", - "value": 356853.33 - }, - { - "year": 2025, - "MARS": "single", - "value": 182280.68 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 364561.36 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 182280.68 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 182252.33 - }, - { - "year": 2025, - "MARS": "widow", - "value": 364561.36 + "value": 78950.0 }, { "year": 2026, "MARS": "single", - "value": 230928.0 + "value": 45728.0 }, { "year": 2026, "MARS": "mjoint", - "value": 281174.0 + "value": 91455.0 }, { "year": 2026, "MARS": "mseparate", - "value": 140587.0 + "value": 45728.0 }, { "year": 2026, "MARS": "headhh", - "value": 256051.0 + "value": 61211.0 }, { "year": 2026, "MARS": "widow", - "value": 281174.0 + "value": 91455.0 } ], - "title": "Pass-through income tax bracket (upper threshold) 4", + "title": "Pass-through income tax bracket (upper threshold) 2", "type": "float", "validators": { "range": { - "min": "PT_brk3", - "max": "PT_brk5" + "min": "PT_brk1", + "max": "PT_brk3" } }, "section_1": "Personal Income", @@ -13617,69 +10185,45 @@ "puf": true, "cps": true }, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.", "notes": "" }, - "PT_rt5": { + "PT_rt3": { "value": [ { "year": 2013, - "value": 0.33 + "value": 0.25 }, { "year": 2014, - "value": 0.33 + "value": 0.25 }, { "year": 2015, - "value": 0.33 + "value": 0.25 }, { "year": 2016, - "value": 0.33 + "value": 0.25 }, { "year": 2017, - "value": 0.33 + "value": 0.25 }, { "year": 2018, - "value": 0.32 + "value": 0.22 }, { "year": 2019, - "value": 0.32 - }, - { - "year": 2020, - "value": 0.32 - }, - { - "year": 2021, - "value": 0.32 - }, - { - "year": 2022, - "value": 0.32 - }, - { - "year": 2023, - "value": 0.32 - }, - { - "year": 2024, - "value": 0.32 - }, - { - "year": 2025, - "value": 0.32 + "value": 0.22 }, { "year": 2026, - "value": 0.33 + "value": 0.25 } ], - "title": "Pass-through income tax rate 5", + "title": "Pass-through income tax rate 3", "type": "float", "validators": { "range": { @@ -13695,368 +10239,218 @@ "puf": true, "cps": true }, - "description": "The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.", + "description": "The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.", "notes": "" }, - "PT_brk5": { + "PT_brk3": { "value": [ { "year": 2013, "MARS": "single", - "value": 398350.0 + "value": 87850.0 }, { "year": 2013, "MARS": "mjoint", - "value": 398350.0 + "value": 146400.0 }, { "year": 2013, "MARS": "mseparate", - "value": 199175.0 + "value": 73200.0 }, { "year": 2013, "MARS": "headhh", - "value": 398350.0 + "value": 125450.0 }, { "year": 2013, "MARS": "widow", - "value": 398350.0 + "value": 146400.0 }, { "year": 2014, "MARS": "single", - "value": 405100.0 + "value": 89350.0 }, { "year": 2014, "MARS": "mjoint", - "value": 405100.0 + "value": 148850.0 }, { "year": 2014, "MARS": "mseparate", - "value": 202550.0 + "value": 74425.0 }, { "year": 2014, "MARS": "headhh", - "value": 405100.0 + "value": 127550.0 }, { "year": 2014, "MARS": "widow", - "value": 405100.0 + "value": 148850.0 }, { "year": 2015, "MARS": "single", - "value": 411500.0 + "value": 90750.0 }, { "year": 2015, "MARS": "mjoint", - "value": 411500.0 + "value": 151200.0 }, { "year": 2015, "MARS": "mseparate", - "value": 205750.0 + "value": 75600.0 }, { "year": 2015, "MARS": "headhh", - "value": 411500.0 + "value": 129600.0 }, { "year": 2015, "MARS": "widow", - "value": 411500.0 + "value": 151200.0 }, { "year": 2016, "MARS": "single", - "value": 413350.0 + "value": 91150.0 }, { "year": 2016, "MARS": "mjoint", - "value": 413350.0 + "value": 151900.0 }, { "year": 2016, "MARS": "mseparate", - "value": 206675.0 + "value": 75950.0 }, { "year": 2016, "MARS": "headhh", - "value": 413350.0 + "value": 130150.0 }, { "year": 2016, "MARS": "widow", - "value": 413350.0 + "value": 151900.0 }, { "year": 2017, "MARS": "single", - "value": 416700.0 + "value": 91900.0 }, { "year": 2017, "MARS": "mjoint", - "value": 416700.0 + "value": 153100.0 }, { "year": 2017, "MARS": "mseparate", - "value": 208350.0 + "value": 76550.0 }, { "year": 2017, "MARS": "headhh", - "value": 416700.0 + "value": 131200.0 }, { "year": 2017, "MARS": "widow", - "value": 416700.0 + "value": 153100.0 }, { "year": 2018, "MARS": "single", - "value": 200000.0 + "value": 82500.0 }, { "year": 2018, "MARS": "mjoint", - "value": 400000.0 + "value": 165000.0 }, { "year": 2018, "MARS": "mseparate", - "value": 200000.0 + "value": 82500.0 }, { "year": 2018, "MARS": "headhh", - "value": 200000.0 + "value": 82500.0 }, { "year": 2018, "MARS": "widow", - "value": 400000.0 + "value": 165000.0 }, { "year": 2019, "MARS": "single", - "value": 204100.0 + "value": 84200.0 }, { "year": 2019, "MARS": "mjoint", - "value": 408200.0 + "value": 168400.0 }, { "year": 2019, "MARS": "mseparate", - "value": 204100.0 + "value": 84200.0 }, { "year": 2019, "MARS": "headhh", - "value": 204100.0 + "value": 84200.0 }, { "year": 2019, "MARS": "widow", - "value": 408200.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 207324.78 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 414649.56 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 207324.78 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 207324.78 - }, - { - "year": 2020, - "MARS": "widow", - "value": 414649.56 - }, - { - "year": 2021, - "MARS": "single", - "value": 211844.46 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 423688.92 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 211844.46 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 211844.46 - }, - { - "year": 2021, - "MARS": "widow", - "value": 423688.92 - }, - { - "year": 2022, - "MARS": "single", - "value": 216653.33 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 433306.66 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 216653.33 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 216653.33 - }, - { - "year": 2022, - "MARS": "widow", - "value": 433306.66 - }, - { - "year": 2023, - "MARS": "single", - "value": 221658.02 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 443316.04 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 221658.02 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 221658.02 - }, - { - "year": 2023, - "MARS": "widow", - "value": 443316.04 - }, - { - "year": 2024, - "MARS": "single", - "value": 226578.83 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 453157.66 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 226578.83 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 226578.83 - }, - { - "year": 2024, - "MARS": "widow", - "value": 453157.66 - }, - { - "year": 2025, - "MARS": "single", - "value": 231472.93 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 462945.86 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 231472.93 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 231472.93 - }, - { - "year": 2025, - "MARS": "widow", - "value": 462945.86 + "value": 168400.0 }, { "year": 2026, "MARS": "single", - "value": 502101.0 + "value": 110735.0 }, { "year": 2026, "MARS": "mjoint", - "value": 502101.0 + "value": 184477.0 }, { "year": 2026, "MARS": "mseparate", - "value": 251050.0 + "value": 92239.0 }, { "year": 2026, "MARS": "headhh", - "value": 502101.0 + "value": 158089.0 }, { "year": 2026, "MARS": "widow", - "value": 502101.0 + "value": 184477.0 } ], - "title": "Pass-through income tax bracket (upper threshold) 5", + "title": "Pass-through income tax bracket (upper threshold) 3", "type": "float", "validators": { "range": { - "min": "PT_brk4", - "max": "PT_brk6" + "min": "PT_brk2", + "max": "PT_brk4" } }, "section_1": "Personal Income", @@ -14067,69 +10461,45 @@ "puf": true, "cps": true }, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.", "notes": "" }, - "PT_rt6": { + "PT_rt4": { "value": [ { "year": 2013, - "value": 0.35 + "value": 0.28 }, { "year": 2014, - "value": 0.35 + "value": 0.28 }, { "year": 2015, - "value": 0.35 + "value": 0.28 }, { "year": 2016, - "value": 0.35 + "value": 0.28 }, { "year": 2017, - "value": 0.35 + "value": 0.28 }, { "year": 2018, - "value": 0.35 + "value": 0.24 }, { "year": 2019, - "value": 0.35 - }, - { - "year": 2020, - "value": 0.35 - }, - { - "year": 2021, - "value": 0.35 - }, - { - "year": 2022, - "value": 0.35 - }, - { - "year": 2023, - "value": 0.35 - }, - { - "year": 2024, - "value": 0.35 - }, - { - "year": 2025, - "value": 0.35 + "value": 0.24 }, { "year": 2026, - "value": 0.35 + "value": 0.28 } ], - "title": "Pass-through income tax rate 6", + "title": "Pass-through income tax rate 4", "type": "float", "validators": { "range": { @@ -14145,368 +10515,494 @@ "puf": true, "cps": true }, - "description": "The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.", + "description": "The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.", "notes": "" }, - "PT_brk6": { + "PT_brk4": { "value": [ { "year": 2013, "MARS": "single", - "value": 400000.0 + "value": 183250.0 }, { "year": 2013, "MARS": "mjoint", - "value": 450000.0 + "value": 223050.0 }, { "year": 2013, "MARS": "mseparate", - "value": 225000.0 + "value": 111525.0 }, { "year": 2013, "MARS": "headhh", - "value": 425000.0 + "value": 203150.0 }, { "year": 2013, "MARS": "widow", - "value": 450000.0 + "value": 223050.0 }, { "year": 2014, "MARS": "single", - "value": 406750.0 + "value": 186350.0 }, { "year": 2014, "MARS": "mjoint", - "value": 457600.0 + "value": 226850.0 }, { "year": 2014, "MARS": "mseparate", - "value": 228800.0 + "value": 113425.0 }, { "year": 2014, "MARS": "headhh", - "value": 432200.0 + "value": 206600.0 }, { "year": 2014, "MARS": "widow", - "value": 457600.0 + "value": 226850.0 }, { "year": 2015, "MARS": "single", - "value": 413200.0 + "value": 189300.0 }, { "year": 2015, "MARS": "mjoint", - "value": 464850.0 + "value": 230450.0 }, { "year": 2015, "MARS": "mseparate", - "value": 232425.0 + "value": 115225.0 }, { "year": 2015, "MARS": "headhh", - "value": 439000.0 + "value": 209850.0 }, { "year": 2015, "MARS": "widow", - "value": 464850.0 + "value": 230450.0 }, { "year": 2016, "MARS": "single", - "value": 415050.0 + "value": 190150.0 }, { "year": 2016, "MARS": "mjoint", - "value": 466950.0 + "value": 231450.0 }, { "year": 2016, "MARS": "mseparate", - "value": 233475.0 + "value": 115725.0 }, { "year": 2016, "MARS": "headhh", - "value": 441000.0 + "value": 210800.0 }, { "year": 2016, "MARS": "widow", - "value": 466950.0 + "value": 231450.0 }, { "year": 2017, "MARS": "single", - "value": 418400.0 + "value": 191650.0 }, { "year": 2017, "MARS": "mjoint", - "value": 470700.0 + "value": 233350.0 }, { "year": 2017, "MARS": "mseparate", - "value": 235350.0 + "value": 116675.0 }, { "year": 2017, "MARS": "headhh", - "value": 444550.0 + "value": 212500.0 }, { "year": 2017, "MARS": "widow", - "value": 470700.0 + "value": 233350.0 }, { "year": 2018, "MARS": "single", - "value": 500000.0 + "value": 157500.0 }, { "year": 2018, "MARS": "mjoint", - "value": 600000.0 + "value": 315000.0 }, { "year": 2018, "MARS": "mseparate", - "value": 300000.0 + "value": 157500.0 }, { "year": 2018, "MARS": "headhh", - "value": 500000.0 + "value": 157500.0 }, { "year": 2018, "MARS": "widow", - "value": 600000.0 + "value": 315000.0 }, { "year": 2019, "MARS": "single", - "value": 510300.0 + "value": 160725.0 }, { "year": 2019, "MARS": "mjoint", - "value": 612350.0 + "value": 321450.0 }, { "year": 2019, "MARS": "mseparate", - "value": 306175.0 + "value": 160725.0 }, { "year": 2019, "MARS": "headhh", - "value": 510300.0 + "value": 160700.0 }, { "year": 2019, "MARS": "widow", - "value": 612350.0 + "value": 321450.0 }, { - "year": 2020, + "year": 2026, "MARS": "single", - "value": 518362.74 + "value": 230928.0 }, { - "year": 2020, + "year": 2026, "MARS": "mjoint", - "value": 622025.13 + "value": 281174.0 }, { - "year": 2020, + "year": 2026, "MARS": "mseparate", - "value": 311012.56 + "value": 140587.0 }, { - "year": 2020, + "year": 2026, "MARS": "headhh", - "value": 518362.74 + "value": 256051.0 }, { - "year": 2020, + "year": 2026, "MARS": "widow", - "value": 622025.13 + "value": 281174.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 4", + "type": "float", + "validators": { + "range": { + "min": "PT_brk3", + "max": "PT_brk5" + } + }, + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": true, + "indexed": true, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.", + "notes": "" + }, + "PT_rt5": { + "value": [ + { + "year": 2013, + "value": 0.33 }, { - "year": 2021, + "year": 2014, + "value": 0.33 + }, + { + "year": 2015, + "value": 0.33 + }, + { + "year": 2016, + "value": 0.33 + }, + { + "year": 2017, + "value": 0.33 + }, + { + "year": 2018, + "value": 0.32 + }, + { + "year": 2019, + "value": 0.32 + }, + { + "year": 2026, + "value": 0.33 + } + ], + "title": "Pass-through income tax rate 5", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.", + "notes": "" + }, + "PT_brk5": { + "value": [ + { + "year": 2013, "MARS": "single", - "value": 529663.05 + "value": 398350.0 }, { - "year": 2021, + "year": 2013, "MARS": "mjoint", - "value": 635585.28 + "value": 398350.0 }, { - "year": 2021, + "year": 2013, "MARS": "mseparate", - "value": 317792.64 + "value": 199175.0 }, { - "year": 2021, + "year": 2013, "MARS": "headhh", - "value": 529663.05 + "value": 398350.0 }, { - "year": 2021, + "year": 2013, "MARS": "widow", - "value": 635585.28 + "value": 398350.0 }, { - "year": 2022, + "year": 2014, "MARS": "single", - "value": 541686.4 + "value": 405100.0 }, { - "year": 2022, + "year": 2014, "MARS": "mjoint", - "value": 650013.06 + "value": 405100.0 }, { - "year": 2022, + "year": 2014, "MARS": "mseparate", - "value": 325006.53 + "value": 202550.0 }, { - "year": 2022, + "year": 2014, "MARS": "headhh", - "value": 541686.4 + "value": 405100.0 }, { - "year": 2022, + "year": 2014, "MARS": "widow", - "value": 650013.06 + "value": 405100.0 }, { - "year": 2023, + "year": 2015, "MARS": "single", - "value": 554199.35 + "value": 411500.0 }, { - "year": 2023, + "year": 2015, "MARS": "mjoint", - "value": 665028.37 + "value": 411500.0 }, { - "year": 2023, + "year": 2015, + "MARS": "mseparate", + "value": 205750.0 + }, + { + "year": 2015, + "MARS": "headhh", + "value": 411500.0 + }, + { + "year": 2015, + "MARS": "widow", + "value": 411500.0 + }, + { + "year": 2016, + "MARS": "single", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "mjoint", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "mseparate", + "value": 206675.0 + }, + { + "year": 2016, + "MARS": "headhh", + "value": 413350.0 + }, + { + "year": 2016, + "MARS": "widow", + "value": 413350.0 + }, + { + "year": 2017, + "MARS": "single", + "value": 416700.0 + }, + { + "year": 2017, + "MARS": "mjoint", + "value": 416700.0 + }, + { + "year": 2017, "MARS": "mseparate", - "value": 332514.18 + "value": 208350.0 }, { - "year": 2023, + "year": 2017, "MARS": "headhh", - "value": 554199.35 + "value": 416700.0 }, { - "year": 2023, + "year": 2017, "MARS": "widow", - "value": 665028.37 + "value": 416700.0 }, { - "year": 2024, + "year": 2018, "MARS": "single", - "value": 566502.58 + "value": 200000.0 }, { - "year": 2024, + "year": 2018, "MARS": "mjoint", - "value": 679792.0 + "value": 400000.0 }, { - "year": 2024, + "year": 2018, "MARS": "mseparate", - "value": 339896.0 + "value": 200000.0 }, { - "year": 2024, + "year": 2018, "MARS": "headhh", - "value": 566502.58 + "value": 200000.0 }, { - "year": 2024, + "year": 2018, "MARS": "widow", - "value": 679792.0 + "value": 400000.0 }, { - "year": 2025, + "year": 2019, "MARS": "single", - "value": 578739.04 + "value": 204100.0 }, { - "year": 2025, + "year": 2019, "MARS": "mjoint", - "value": 694475.5 + "value": 408200.0 }, { - "year": 2025, + "year": 2019, "MARS": "mseparate", - "value": 347237.75 + "value": 204100.0 }, { - "year": 2025, + "year": 2019, "MARS": "headhh", - "value": 578739.04 + "value": 204100.0 }, { - "year": 2025, + "year": 2019, "MARS": "widow", - "value": 694475.5 + "value": 408200.0 }, { "year": 2026, "MARS": "single", - "value": 504149.0 + "value": 502101.0 }, { "year": 2026, "MARS": "mjoint", - "value": 567168.0 + "value": 502101.0 }, { "year": 2026, "MARS": "mseparate", - "value": 283584.0 + "value": 251050.0 }, { "year": 2026, "MARS": "headhh", - "value": 535659.0 + "value": 502101.0 }, { "year": 2026, "MARS": "widow", - "value": 567168.0 + "value": 502101.0 } ], - "title": "Pass-through income tax bracket (upper threshold) 6", + "title": "Pass-through income tax bracket (upper threshold) 5", "type": "float", "validators": { "range": { - "min": "PT_brk5", - "max": "PT_brk7" + "min": "PT_brk4", + "max": "PT_brk6" } }, "section_1": "Personal Income", @@ -14517,69 +11013,45 @@ "puf": true, "cps": true }, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.", "notes": "" }, - "PT_rt7": { + "PT_rt6": { "value": [ { "year": 2013, - "value": 0.396 + "value": 0.35 }, { "year": 2014, - "value": 0.396 + "value": 0.35 }, { "year": 2015, - "value": 0.396 + "value": 0.35 }, { "year": 2016, - "value": 0.396 + "value": 0.35 }, { "year": 2017, - "value": 0.396 + "value": 0.35 }, { "year": 2018, - "value": 0.37 + "value": 0.35 }, { "year": 2019, - "value": 0.37 - }, - { - "year": 2020, - "value": 0.37 - }, - { - "year": 2021, - "value": 0.37 - }, - { - "year": 2022, - "value": 0.37 - }, - { - "year": 2023, - "value": 0.37 - }, - { - "year": 2024, - "value": 0.37 - }, - { - "year": 2025, - "value": 0.37 + "value": 0.35 }, { "year": 2026, - "value": 0.396 + "value": 0.35 } ], - "title": "Pass-through income tax rate 7", + "title": "Pass-through income tax rate 6", "type": "float", "validators": { "range": { @@ -14595,333 +11067,459 @@ "puf": true, "cps": true }, - "description": "The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.", + "description": "The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.", "notes": "" }, - "PT_brk7": { + "PT_brk6": { "value": [ { "year": 2013, "MARS": "single", - "value": 9e+99 + "value": 400000.0 }, { "year": 2013, "MARS": "mjoint", - "value": 9e+99 + "value": 450000.0 }, { "year": 2013, "MARS": "mseparate", - "value": 9e+99 + "value": 225000.0 }, { "year": 2013, "MARS": "headhh", - "value": 9e+99 + "value": 425000.0 }, { "year": 2013, "MARS": "widow", - "value": 9e+99 + "value": 450000.0 }, { "year": 2014, "MARS": "single", - "value": 9e+99 + "value": 406750.0 }, { "year": 2014, "MARS": "mjoint", - "value": 9e+99 + "value": 457600.0 }, { "year": 2014, "MARS": "mseparate", - "value": 9e+99 + "value": 228800.0 }, { "year": 2014, "MARS": "headhh", - "value": 9e+99 + "value": 432200.0 }, { "year": 2014, "MARS": "widow", - "value": 9e+99 + "value": 457600.0 }, { "year": 2015, "MARS": "single", - "value": 9e+99 + "value": 413200.0 }, { "year": 2015, "MARS": "mjoint", - "value": 9e+99 + "value": 464850.0 }, { "year": 2015, "MARS": "mseparate", - "value": 9e+99 + "value": 232425.0 }, { "year": 2015, "MARS": "headhh", - "value": 9e+99 + "value": 439000.0 }, { "year": 2015, "MARS": "widow", - "value": 9e+99 + "value": 464850.0 }, { "year": 2016, "MARS": "single", - "value": 9e+99 + "value": 415050.0 }, { "year": 2016, "MARS": "mjoint", - "value": 9e+99 + "value": 466950.0 }, { "year": 2016, "MARS": "mseparate", - "value": 9e+99 + "value": 233475.0 }, { "year": 2016, "MARS": "headhh", - "value": 9e+99 + "value": 441000.0 }, { "year": 2016, "MARS": "widow", - "value": 9e+99 + "value": 466950.0 }, { "year": 2017, "MARS": "single", - "value": 9e+99 + "value": 418400.0 }, { "year": 2017, "MARS": "mjoint", - "value": 9e+99 + "value": 470700.0 }, { "year": 2017, "MARS": "mseparate", - "value": 9e+99 + "value": 235350.0 }, { "year": 2017, "MARS": "headhh", - "value": 9e+99 + "value": 444550.0 }, { "year": 2017, "MARS": "widow", - "value": 9e+99 + "value": 470700.0 }, { "year": 2018, "MARS": "single", - "value": 9e+99 + "value": 500000.0 }, { "year": 2018, "MARS": "mjoint", - "value": 9e+99 + "value": 600000.0 }, { "year": 2018, "MARS": "mseparate", - "value": 9e+99 + "value": 300000.0 }, { "year": 2018, "MARS": "headhh", - "value": 9e+99 + "value": 500000.0 }, { "year": 2018, "MARS": "widow", - "value": 9e+99 + "value": 600000.0 + }, + { + "year": 2019, + "MARS": "single", + "value": 510300.0 + }, + { + "year": 2019, + "MARS": "mjoint", + "value": 612350.0 + }, + { + "year": 2019, + "MARS": "mseparate", + "value": 306175.0 + }, + { + "year": 2019, + "MARS": "headhh", + "value": 510300.0 + }, + { + "year": 2019, + "MARS": "widow", + "value": 612350.0 + }, + { + "year": 2026, + "MARS": "single", + "value": 504149.0 + }, + { + "year": 2026, + "MARS": "mjoint", + "value": 567168.0 + }, + { + "year": 2026, + "MARS": "mseparate", + "value": 283584.0 + }, + { + "year": 2026, + "MARS": "headhh", + "value": 535659.0 + }, + { + "year": 2026, + "MARS": "widow", + "value": 567168.0 + } + ], + "title": "Pass-through income tax bracket (upper threshold) 6", + "type": "float", + "validators": { + "range": { + "min": "PT_brk5", + "max": "PT_brk7" + } + }, + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": true, + "indexed": true, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.", + "notes": "" + }, + "PT_rt7": { + "value": [ + { + "year": 2013, + "value": 0.396 + }, + { + "year": 2014, + "value": 0.396 + }, + { + "year": 2015, + "value": 0.396 + }, + { + "year": 2016, + "value": 0.396 + }, + { + "year": 2017, + "value": 0.396 + }, + { + "year": 2018, + "value": 0.37 }, { "year": 2019, + "value": 0.37 + }, + { + "year": 2026, + "value": 0.396 + } + ], + "title": "Pass-through income tax rate 7", + "type": "float", + "validators": { + "range": { + "min": 0, + "max": 1 + } + }, + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "compatible_data": { + "puf": true, + "cps": true + }, + "description": "The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.", + "notes": "" + }, + "PT_brk7": { + "value": [ + { + "year": 2013, "MARS": "single", "value": 9e+99 }, { - "year": 2019, + "year": 2013, "MARS": "mjoint", "value": 9e+99 }, { - "year": 2019, + "year": 2013, "MARS": "mseparate", "value": 9e+99 }, { - "year": 2019, + "year": 2013, "MARS": "headhh", "value": 9e+99 }, { - "year": 2019, + "year": 2013, "MARS": "widow", "value": 9e+99 }, { - "year": 2020, + "year": 2014, "MARS": "single", "value": 9e+99 }, { - "year": 2020, + "year": 2014, "MARS": "mjoint", "value": 9e+99 }, { - "year": 2020, + "year": 2014, "MARS": "mseparate", "value": 9e+99 }, { - "year": 2020, + "year": 2014, "MARS": "headhh", "value": 9e+99 }, { - "year": 2020, + "year": 2014, "MARS": "widow", "value": 9e+99 }, { - "year": 2021, + "year": 2015, "MARS": "single", "value": 9e+99 }, { - "year": 2021, + "year": 2015, "MARS": "mjoint", "value": 9e+99 }, { - "year": 2021, + "year": 2015, "MARS": "mseparate", "value": 9e+99 }, { - "year": 2021, + "year": 2015, "MARS": "headhh", "value": 9e+99 }, { - "year": 2021, + "year": 2015, "MARS": "widow", "value": 9e+99 }, { - "year": 2022, + "year": 2016, "MARS": "single", "value": 9e+99 }, { - "year": 2022, + "year": 2016, "MARS": "mjoint", "value": 9e+99 }, { - "year": 2022, + "year": 2016, "MARS": "mseparate", "value": 9e+99 }, { - "year": 2022, + "year": 2016, "MARS": "headhh", "value": 9e+99 }, { - "year": 2022, + "year": 2016, "MARS": "widow", "value": 9e+99 }, { - "year": 2023, + "year": 2017, "MARS": "single", "value": 9e+99 }, { - "year": 2023, + "year": 2017, "MARS": "mjoint", "value": 9e+99 }, { - "year": 2023, + "year": 2017, "MARS": "mseparate", "value": 9e+99 }, { - "year": 2023, + "year": 2017, "MARS": "headhh", "value": 9e+99 }, { - "year": 2023, + "year": 2017, "MARS": "widow", "value": 9e+99 }, { - "year": 2024, + "year": 2018, "MARS": "single", "value": 9e+99 }, { - "year": 2024, + "year": 2018, "MARS": "mjoint", "value": 9e+99 }, { - "year": 2024, + "year": 2018, "MARS": "mseparate", "value": 9e+99 }, { - "year": 2024, + "year": 2018, "MARS": "headhh", "value": 9e+99 }, { - "year": 2024, + "year": 2018, "MARS": "widow", "value": 9e+99 }, { - "year": 2025, + "year": 2019, "MARS": "single", "value": 9e+99 }, { - "year": 2025, + "year": 2019, "MARS": "mjoint", "value": 9e+99 }, { - "year": 2025, + "year": 2019, "MARS": "mseparate", "value": 9e+99 }, { - "year": 2025, + "year": 2019, "MARS": "headhh", "value": 9e+99 }, { - "year": 2025, + "year": 2019, "MARS": "widow", "value": 9e+99 }, @@ -15130,30 +11728,6 @@ "year": 2019, "value": 0.2 }, - { - "year": 2020, - "value": 0.2 - }, - { - "year": 2021, - "value": 0.2 - }, - { - "year": 2022, - "value": 0.2 - }, - { - "year": 2023, - "value": 0.2 - }, - { - "year": 2024, - "value": 0.2 - }, - { - "year": 2025, - "value": 0.2 - }, { "year": 2026, "value": 0.0 @@ -15301,209 +11875,59 @@ "value": 0.0 }, { - "year": 2017, - "MARS": "widow", - "value": 0.0 - }, - { - "year": 2018, - "MARS": "single", - "value": 157500.0 - }, - { - "year": 2018, - "MARS": "mjoint", - "value": 315000.0 - }, - { - "year": 2018, - "MARS": "mseparate", - "value": 157500.0 - }, - { - "year": 2018, - "MARS": "headhh", - "value": 157500.0 - }, - { - "year": 2018, - "MARS": "widow", - "value": 315000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 160700.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 321400.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 160725.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 160700.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 321400.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 163239.06 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 326478.12 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 163264.46 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 163239.06 - }, - { - "year": 2020, - "MARS": "widow", - "value": 326478.12 - }, - { - "year": 2021, - "MARS": "single", - "value": 166797.67 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 333595.34 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 166823.62 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 166797.67 - }, - { - "year": 2021, - "MARS": "widow", - "value": 333595.34 - }, - { - "year": 2022, - "MARS": "single", - "value": 170583.98 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 341167.96 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 170610.52 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 170583.98 - }, - { - "year": 2022, - "MARS": "widow", - "value": 341167.96 - }, - { - "year": 2023, - "MARS": "single", - "value": 174524.47 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 349048.94 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 174551.62 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 174524.47 - }, - { - "year": 2023, + "year": 2017, "MARS": "widow", - "value": 349048.94 + "value": 0.0 }, { - "year": 2024, + "year": 2018, "MARS": "single", - "value": 178398.91 + "value": 157500.0 }, { - "year": 2024, + "year": 2018, "MARS": "mjoint", - "value": 356797.82 + "value": 315000.0 }, { - "year": 2024, + "year": 2018, "MARS": "mseparate", - "value": 178426.67 + "value": 157500.0 }, { - "year": 2024, + "year": 2018, "MARS": "headhh", - "value": 178398.91 + "value": 157500.0 }, { - "year": 2024, + "year": 2018, "MARS": "widow", - "value": 356797.82 + "value": 315000.0 }, { - "year": 2025, + "year": 2019, "MARS": "single", - "value": 182252.33 + "value": 160700.0 }, { - "year": 2025, + "year": 2019, "MARS": "mjoint", - "value": 364504.66 + "value": 321400.0 }, { - "year": 2025, + "year": 2019, "MARS": "mseparate", - "value": 182280.68 + "value": 160725.0 }, { - "year": 2025, + "year": 2019, "MARS": "headhh", - "value": 182252.33 + "value": 160700.0 }, { - "year": 2025, + "year": 2019, "MARS": "widow", - "value": 364504.66 + "value": 321400.0 }, { "year": 2026, @@ -15727,156 +12151,6 @@ "MARS": "widow", "value": 100000.0 }, - { - "year": 2020, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2020, - "MARS": "widow", - "value": 100000.0 - }, - { - "year": 2021, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2021, - "MARS": "widow", - "value": 100000.0 - }, - { - "year": 2022, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2022, - "MARS": "widow", - "value": 100000.0 - }, - { - "year": 2023, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2023, - "MARS": "widow", - "value": 100000.0 - }, - { - "year": 2024, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2024, - "MARS": "widow", - "value": 100000.0 - }, - { - "year": 2025, - "MARS": "single", - "value": 50000.0 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 100000.0 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 50000.0 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 50000.0 - }, - { - "year": 2025, - "MARS": "widow", - "value": 100000.0 - }, { "year": 2026, "MARS": "single", @@ -15952,30 +12226,6 @@ "year": 2019, "value": 0.5 }, - { - "year": 2020, - "value": 0.5 - }, - { - "year": 2021, - "value": 0.5 - }, - { - "year": 2022, - "value": 0.5 - }, - { - "year": 2023, - "value": 0.5 - }, - { - "year": 2024, - "value": 0.5 - }, - { - "year": 2025, - "value": 0.5 - }, { "year": 2026, "value": 0.0 @@ -16030,30 +12280,6 @@ "year": 2019, "value": 0.25 }, - { - "year": 2020, - "value": 0.25 - }, - { - "year": 2021, - "value": 0.25 - }, - { - "year": 2022, - "value": 0.25 - }, - { - "year": 2023, - "value": 0.25 - }, - { - "year": 2024, - "value": 0.25 - }, - { - "year": 2025, - "value": 0.25 - }, { "year": 2026, "value": 0.0 @@ -16093,43 +12319,19 @@ "value": 0.0 }, { - "year": 2016, - "value": 0.0 - }, - { - "year": 2017, - "value": 0.0 - }, - { - "year": 2018, - "value": 0.025 - }, - { - "year": 2019, - "value": 0.025 - }, - { - "year": 2020, - "value": 0.025 - }, - { - "year": 2021, - "value": 0.025 - }, - { - "year": 2022, - "value": 0.025 + "year": 2016, + "value": 0.0 }, { - "year": 2023, - "value": 0.025 + "year": 2017, + "value": 0.0 }, { - "year": 2024, + "year": 2018, "value": 0.025 }, { - "year": 2025, + "year": 2019, "value": 0.025 }, { @@ -16333,156 +12535,6 @@ "MARS": "widow", "value": 111700.0 }, - { - "year": 2020, - "MARS": "single", - "value": 72832.86 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 113464.86 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 56732.43 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 72832.86 - }, - { - "year": 2020, - "MARS": "widow", - "value": 113464.86 - }, - { - "year": 2021, - "MARS": "single", - "value": 74420.62 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 115938.39 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 57969.2 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 74420.62 - }, - { - "year": 2021, - "MARS": "widow", - "value": 115938.39 - }, - { - "year": 2022, - "MARS": "single", - "value": 76109.96 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 118570.2 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 59285.1 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 76109.96 - }, - { - "year": 2022, - "MARS": "widow", - "value": 118570.2 - }, - { - "year": 2023, - "MARS": "single", - "value": 77868.1 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 121309.17 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 60654.58 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 77868.1 - }, - { - "year": 2023, - "MARS": "widow", - "value": 121309.17 - }, - { - "year": 2024, - "MARS": "single", - "value": 79596.78 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 124002.23 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 62001.12 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 79596.78 - }, - { - "year": 2024, - "MARS": "widow", - "value": 124002.23 - }, - { - "year": 2025, - "MARS": "single", - "value": 81316.07 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 126680.68 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 63340.34 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 81316.07 - }, - { - "year": 2025, - "MARS": "widow", - "value": 126680.68 - }, { "year": 2026, "MARS": "single", @@ -16704,182 +12756,32 @@ { "year": 2018, "MARS": "widow", - "value": 1000000.0 - }, - { - "year": 2019, - "MARS": "single", - "value": 510300.0 - }, - { - "year": 2019, - "MARS": "mjoint", - "value": 1020600.0 - }, - { - "year": 2019, - "MARS": "mseparate", - "value": 510300.0 - }, - { - "year": 2019, - "MARS": "headhh", - "value": 510300.0 - }, - { - "year": 2019, - "MARS": "widow", - "value": 1020600.0 - }, - { - "year": 2020, - "MARS": "single", - "value": 518362.74 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 1036725.48 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 518362.74 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 518362.74 - }, - { - "year": 2020, - "MARS": "widow", - "value": 1036725.48 - }, - { - "year": 2021, - "MARS": "single", - "value": 529663.05 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 1059326.1 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 529663.05 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 529663.05 - }, - { - "year": 2021, - "MARS": "widow", - "value": 1059326.1 - }, - { - "year": 2022, - "MARS": "single", - "value": 541686.4 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 1083372.8 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 541686.4 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 541686.4 - }, - { - "year": 2022, - "MARS": "widow", - "value": 1083372.8 - }, - { - "year": 2023, - "MARS": "single", - "value": 554199.35 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 1108398.71 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 554199.35 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 554199.35 - }, - { - "year": 2023, - "MARS": "widow", - "value": 1108398.71 - }, - { - "year": 2024, - "MARS": "single", - "value": 566502.58 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 1133005.16 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 566502.58 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 566502.58 - }, - { - "year": 2024, - "MARS": "widow", - "value": 1133005.16 + "value": 1000000.0 }, { - "year": 2025, + "year": 2019, "MARS": "single", - "value": 578739.04 + "value": 510300.0 }, { - "year": 2025, + "year": 2019, "MARS": "mjoint", - "value": 1157478.07 + "value": 1020600.0 }, { - "year": 2025, + "year": 2019, "MARS": "mseparate", - "value": 578739.04 + "value": 510300.0 }, { - "year": 2025, + "year": 2019, "MARS": "headhh", - "value": 578739.04 + "value": 510300.0 }, { - "year": 2025, + "year": 2019, "MARS": "widow", - "value": 1157478.07 + "value": 1020600.0 }, { "year": 2026, @@ -17134,30 +13036,6 @@ "year": 2019, "value": 733700.0 }, - { - "year": 2020, - "value": 745292.46 - }, - { - "year": 2021, - "value": 761539.84 - }, - { - "year": 2022, - "value": 778826.79 - }, - { - "year": 2023, - "value": 796817.69 - }, - { - "year": 2024, - "value": 814507.04 - }, - { - "year": 2025, - "value": 832100.39 - }, { "year": 2026, "value": 300574.0 @@ -17290,30 +13168,6 @@ "year": 2019, "value": 2000.0 }, - { - "year": 2020, - "value": 2000.0 - }, - { - "year": 2021, - "value": 2000.0 - }, - { - "year": 2022, - "value": 2000.0 - }, - { - "year": 2023, - "value": 2000.0 - }, - { - "year": 2024, - "value": 2000.0 - }, - { - "year": 2025, - "value": 2000.0 - }, { "year": 2026, "value": 1000.0 @@ -17541,156 +13395,6 @@ "MARS": "widow", "value": 400000.0 }, - { - "year": 2020, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2020, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2020, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2020, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2020, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2021, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2021, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2021, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2021, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2021, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2022, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2022, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2022, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2022, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2022, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2023, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2023, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2023, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2023, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2023, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2024, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2024, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2024, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2024, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2024, - "MARS": "widow", - "value": 400000.0 - }, - { - "year": 2025, - "MARS": "single", - "value": 200000.0 - }, - { - "year": 2025, - "MARS": "mjoint", - "value": 400000.0 - }, - { - "year": 2025, - "MARS": "mseparate", - "value": 200000.0 - }, - { - "year": 2025, - "MARS": "headhh", - "value": 200000.0 - }, - { - "year": 2025, - "MARS": "widow", - "value": 400000.0 - }, { "year": 2026, "MARS": "single", @@ -17870,30 +13574,6 @@ "year": 2019, "value": 500.0 }, - { - "year": 2020, - "value": 500.0 - }, - { - "year": 2021, - "value": 500.0 - }, - { - "year": 2022, - "value": 500.0 - }, - { - "year": 2023, - "value": 500.0 - }, - { - "year": 2024, - "value": 500.0 - }, - { - "year": 2025, - "value": 500.0 - }, { "year": 2026, "value": 0.0 @@ -19101,30 +14781,6 @@ "year": 2019, "value": 2500.0 }, - { - "year": 2020, - "value": 2500.0 - }, - { - "year": 2021, - "value": 2500.0 - }, - { - "year": 2022, - "value": 2500.0 - }, - { - "year": 2023, - "value": 2500.0 - }, - { - "year": 2024, - "value": 2500.0 - }, - { - "year": 2025, - "value": 2500.0 - }, { "year": 2026, "value": 3000.0 diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index 92b4cfd9d..7c53aab08 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -190,7 +190,8 @@ def test_json_file_contents(tests_path, fname): 'AMT_em', 'AMT_em_ps', 'AMT_em_pe', 'ID_ps', 'ID_AllTaxes_c'] # for TCJA-reverting long_params - long_known_years = set(range(first_year, 2026 + 1)) + long_known_years = set(range(first_year, 2019 + 1)) + long_known_years.add(2026) # check elements in each parameter sub-dictionary failures = '' with open(os.path.join(tests_path, "..", fname)) as f: From 2cdbcbfa8efd834c979f04b521c49c1debf021f7 Mon Sep 17 00:00:00 2001 From: Peter-Metz Date: Thu, 23 Apr 2020 14:27:17 -0400 Subject: [PATCH 53/64] change hardcoded var to last_known_year --- taxcalc/tests/test_parameters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index 7c53aab08..9a37bd0fc 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -190,7 +190,7 @@ def test_json_file_contents(tests_path, fname): 'AMT_em', 'AMT_em_ps', 'AMT_em_pe', 'ID_ps', 'ID_AllTaxes_c'] # for TCJA-reverting long_params - long_known_years = set(range(first_year, 2019 + 1)) + long_known_years = set(range(first_year, last_known_year + 1)) long_known_years.add(2026) # check elements in each parameter sub-dictionary failures = '' From c44dfbbe86ae2784d4585122868ffb68435cdba0 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Mon, 27 Apr 2020 19:07:52 -0400 Subject: [PATCH 54/64] Add back print_warnings argument --- taxcalc/consumption.py | 4 ++-- taxcalc/growdiff.py | 4 ++-- taxcalc/parameters.py | 39 +++++++++++++++++++++++++++++--- taxcalc/policy.py | 8 ++----- taxcalc/taxcalcio.py | 4 ++-- taxcalc/tests/test_parameters.py | 4 ++-- taxcalc/tests/test_policy.py | 21 +++++++++-------- 7 files changed, 57 insertions(+), 27 deletions(-) diff --git a/taxcalc/consumption.py b/taxcalc/consumption.py index c7dfeb5a9..0be9ea904 100644 --- a/taxcalc/consumption.py +++ b/taxcalc/consumption.py @@ -48,13 +48,13 @@ def read_json_update(obj): return Parameters._read_json_revision(obj, 'consumption') def update_consumption(self, revision, - ignore_warnings=False, raise_errors=True): + print_warnings=True, raise_errors=True): """ Update consumption default values using specified revision dictionary. See Parameters._update for argument documentation and details about the expected structure of the revision dictionary. """ - self._update(revision, ignore_warnings, raise_errors) + self._update(revision, print_warnings, raise_errors) RESPONSE_VARS = set(['e17500', 'e18400', 'e19800', 'e20400']) BENEFIT_VARS = set(['housing', 'snap', 'tanf', 'vet', 'wic', diff --git a/taxcalc/growdiff.py b/taxcalc/growdiff.py index 5a7e75022..143c0ee01 100644 --- a/taxcalc/growdiff.py +++ b/taxcalc/growdiff.py @@ -48,13 +48,13 @@ def read_json_update(obj, topkey): return Parameters._read_json_revision(obj, topkey) def update_growdiff(self, revision, - ignore_warnings=False, raise_errors=True): + print_warnings=True, raise_errors=True): """ Update growdiff default values using specified revision dictionary. See Parameters._update for argument documentation and details about the expected structure of the revision dictionary. """ - self._update(revision, ignore_warnings, raise_errors) + self._update(revision, print_warnings, raise_errors) def has_any_response(self): """ diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index f6284b222..153faffe7 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -70,7 +70,40 @@ class Parameters(pt.Parameters): def __init__(self, *args, **kwargs): pass - def adjust(self, params_or_path, **kwargs): + def adjust(self, params_or_path, print_warnings=True, **kwargs): + """ + Implements custom warning and error handling. + + If print_warnings is True, warnings are printed out and if + print_warnings is False, nothing is printed. + + ParamTools throws an error if a warning is triggered and + ignore_warnings is False. This method circumvents this behavior. + """ + if print_warnings: + _data = copy.deepcopy(self._data) + kwargs["ignore_warnings"] = False + else: + kwargs["ignore_warnings"] = True + self._warnings = {} + try: + return self.adjust_with_indexing(params_or_path, **kwargs) + except pt.ValidationError as ve: + if self.errors: + raise ve + if print_warnings: + print("WARNING:") + print(self.warnings) + kwargs["ignore_warnings"] = True + self._data = _data + _warnings = copy.deepcopy(self._warnings) + self._warnings = {} + self._errors = {} + adjustment = self.adjust_with_indexing(params_or_path, **kwargs) + self._warnings = _warnings + return adjustment + + def adjust_with_indexing(self, params_or_path, **kwargs): """ Custom adjust method that handles special indexing logic. The logic is: @@ -381,7 +414,7 @@ def initialize(self, start_year, num_years, last_known_year=None, if param != "schema" } - def _update(self, revision, ignore_warnings, raise_errors): + def _update(self, revision, print_warnings, raise_errors): """ A translation layer on top of Parameters.adjust. Projects that have historically used the `_update` method with @@ -495,7 +528,7 @@ def _update(self, revision, ignore_warnings, raise_errors): self.set_state(**cur_state) return self.adjust( new_params, - ignore_warnings=ignore_warnings, + print_warnings=print_warnings, raise_errors=raise_errors ) diff --git a/taxcalc/policy.py b/taxcalc/policy.py index df51d5d2e..8b6696e2e 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -105,17 +105,13 @@ def read_json_reform(obj): return Parameters._read_json_revision(obj, 'policy') def implement_reform(self, reform, - ignore_warnings=False, raise_errors=True): + print_warnings=True, raise_errors=True): """ Implement reform using Tax-Calculator syled reforms/adjustments. Users may also use the adjust method with ParamTools styled reforms. """ # need to do conversion: - return self._update( - reform, - ignore_warnings=ignore_warnings, - raise_errors=raise_errors - ) + return self._update(reform, print_warnings, raise_errors) @staticmethod def parameter_list(): diff --git a/taxcalc/taxcalcio.py b/taxcalc/taxcalcio.py index 55838f102..a60116e5a 100644 --- a/taxcalc/taxcalcio.py +++ b/taxcalc/taxcalcio.py @@ -266,7 +266,7 @@ def init(self, input_data, tax_year, baseline, reform, assump, base = Policy(gfactors=gfactors_base) try: base.implement_reform(basedict['policy'], - ignore_warnings=True, + print_warnings=True, raise_errors=False) self.errmsg += base.parameter_errors except paramtools.ValidationError as valerr_msg: @@ -277,7 +277,7 @@ def init(self, input_data, tax_year, baseline, reform, assump, for poldict in policydicts: try: pol.implement_reform(poldict, - ignore_warnings=True, + print_warnings=True, raise_errors=False) self.errmsg += pol.parameter_errors except paramtools.ValidationError as valerr_msg: diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index 9a37bd0fc..c7d85ce0f 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -132,11 +132,11 @@ def __init__(self): self.initialize(Params.START_YEAR, Params.NUM_YEARS) def update_params(self, revision, - ignore_warnings=False, raise_errors=True): + print_warnings=True, raise_errors=True): """ Update parameters given specified revision dictionary. """ - self._update(revision, ignore_warnings, raise_errors) + self._update(revision, print_warnings, raise_errors) # test Params class prms = Params() diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index d87056bcd..a14046b1e 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -841,20 +841,21 @@ def test_reform_with_warning(): """ Try to use warned out-of-range parameter value in reform. """ + exp_warnings = { + 'ID_Medical_frt': [ + 'ID_Medical_frt[year=2020] 0.05 < min 0.075 ' + ] + } pol = Policy() reform = {'ID_Medical_frt': {2020: 0.05}} - # TODO: breaking change. ParamTools throws an error - # if ignore_warnings is False while taxcalc simply - # printed the warnings. If ignore_warnings is True - # the warnings are not stored. - # pol.implement_reform(reform) - # assert pol.parameter_warnings - with pytest.raises(pt.ValidationError): - pol.implement_reform(reform) + pol.implement_reform(reform, print_warnings=True) + assert pol.warnings == exp_warnings + pol.set_state(year=2020) + assert pol.ID_Medical_frt == np.array([0.05]) - pol = Policy() - pol.implement_reform(reform, ignore_warnings=True) + pol.implement_reform(reform, print_warnings=False) + assert pol.warnings == {} pol.set_state(year=2020) assert pol.ID_Medical_frt == np.array([0.05]) From 5cc1c2e77ddd06b69a6861ff946a45e56ea3597f Mon Sep 17 00:00:00 2001 From: Peter-Metz Date: Thu, 30 Apr 2020 09:35:34 -0400 Subject: [PATCH 55/64] remake uguide to resemble old tax-calc format --- docs/make_uguide.py | 80 +++++++++++++++++++++++++---------- docs/uguide.html | 100 ++++++++++++++++++++++---------------------- 2 files changed, 109 insertions(+), 71 deletions(-) diff --git a/docs/make_uguide.py b/docs/make_uguide.py index e73b9fe0d..5b02e73c4 100644 --- a/docs/make_uguide.py +++ b/docs/make_uguide.py @@ -9,7 +9,7 @@ import os import sys from collections import OrderedDict -from taxcalc import Policy, json_to_dict +from taxcalc import * INPUT_FILENAME = 'uguide.htmx' @@ -20,6 +20,7 @@ TAXCALC_PATH = os.path.join(CURDIR_PATH, '..', 'taxcalc') INPUT_PATH = os.path.join(CURDIR_PATH, INPUT_FILENAME) +TCJA_PATH = os.path.join(CURDIR_PATH,'../taxcalc/reforms/TCJA.json') POLICY_PATH = os.path.join(TAXCALC_PATH, 'policy_current_law.json') IOVARS_PATH = os.path.join(TAXCALC_PATH, 'records_variables.json') CONSUMPTION_PATH = os.path.join(TAXCALC_PATH, 'consumption.json') @@ -48,8 +49,9 @@ def main(): old = '' text = text.replace(old, topbtn) + params_dict = reformat_params() # augment text variable with information from JSON files - text = policy_params(POLICY_PATH, text) + text = policy_params(POLICY_PATH, text, params_dict) text = io_variables('read', IOVARS_PATH, text) text = io_variables('calc', IOVARS_PATH, text) text = assumption_params('consumption', CONSUMPTION_PATH, text) @@ -64,11 +66,51 @@ def main(): # end of main function code -def policy_param_text(pname, param): +def reformat_params(): + """ + Translates ParamTools-style policy_current_law.json + to a dictionary that resembles the old Tax-Calculator + parameter schema + """ + # Parameters that were changed by TCJA will be extended through + # 2026 in the uguide + tcja = Policy.read_json_reform(TCJA_PATH) + + pol = Policy() + pol.clear_state() + years_short = list(range(2013, 2020)) + years_long = list(range(2013, 2027)) + pol.set_year(years_long) + params = pol.specification(serializable=True, sort_values=True) + + # Create parameter dictionary that resembles old Tax-Calculator + # paramter schema + params_dict = {} + for param in params.keys(): + if param in tcja.keys(): + years = years_long + else: + years = years_short + params_dict[param] = {} + params_dict[param]['years'] = years + list_vals2 = [] + for year in years: + list_vals1 = [] + for idx in range(0, len(params[param])): + if params[param][idx]['year'] == year: + list_vals1.append(params[param][idx]['value']) + if params[param][idx]['year'] != params[param][idx - 1]['year']: + list_vals2.append(list_vals1) + params_dict[param]['values'] = list_vals2 + return params_dict + + +def policy_param_text(pname, param, params_dict): """ Extract info from param for pname and return as HTML string. """ # pylint: disable=too-many-statements,too-many-branches + sec1 = param['section_1'] if sec1: txt = '

{} — {}'.format(sec1, param['section_2']) @@ -76,10 +118,7 @@ def policy_param_text(pname, param): txt = '

{} — {}'.format('Other Parameters', 'Not in Tax-Brain webapp') txt += '
tc Name: {}'.format(pname) - if sec1: - txt += '
TB Name: {}'.format(param['title']) - else: - txt += '
Long Name: {}'.format(param['title']) + txt += '
Title: {}'.format(param['title']) txt += '
Description: {}'.format(param['description']) if param.get('notes', ''): txt += '
Notes: {}'.format(param['notes']) @@ -106,18 +145,17 @@ def policy_param_text(pname, param): txt += 'False' txt += '
Value Type: {}'.format(param['type']) txt += '
Known Values:' - for vo in param["value"]: - labels = " ".join( - f"{label}={value}" for label, value in vo.items() - if label not in ("year", "value") - ) - txt += f"
{vo['year']}: {vo['value']} {labels}" - # if not param['indexed']: - # fcyr = int(final_cyr) - # if fcyr < Policy.LAST_KNOWN_YEAR: - # # extrapolate final_val thru Policy.LAST_KNOWN_YEAR if not indexed - # for cyr in range(fcyr + 1, Policy.LAST_KNOWN_YEAR + 1): - # txt += '
{}: {}'.format(cyr, final_val) + if len(params_dict[pname]['values'][0]) == 5: + txt += '
   for: [single, mjoint, mseparate, headhh, widow]' + elif len(params_dict[pname]['values'][0]) == 4: + txt += '
   for: [0kids, 1kid, 2kids, 3+kids]' + elif len(params_dict[pname]['values'][0]) == 7: + txt += '
   for: [med, sltx, retx, cas, misc, int, char]' + for cyr, val in zip(params_dict[pname]['years'], params_dict[pname]['values']): + if len(params_dict[pname]['values'][0]) == 1: + txt += '
{}: {}'.format(cyr, val[0]) + else: + txt += '
{}: {}'.format(cyr, val) txt += '
Valid Range:' validators = param.get("validators", None) if validators: @@ -130,7 +168,7 @@ def policy_param_text(pname, param): return txt -def policy_params(path, text): +def policy_params(path, text, params_dict): """ Read policy parameters from path, integrate them into text, and return the integrated text. @@ -168,7 +206,7 @@ def policy_params(path, text): continue param = params[pname] if sec1 == param['section_1'] and sec2 == param['section_2']: - ptext += policy_param_text(pname, param) + ptext += policy_param_text(pname, param, params_dict) # integrate parameter text into text old = ''.format(sec1_sec2) text = text.replace(old, ptext) diff --git a/docs/uguide.html b/docs/uguide.html index 248fae308..d5b9776b8 100644 --- a/docs/uguide.html +++ b/docs/uguide.html @@ -867,137 +867,137 @@

3. Policy Parameters

3a. Parameter Indexing

-

Parameter Indexing — Offsets
tc Name: CPI_offset
TB Name: Decimal offset ADDED to unchained CPI to get parameter indexing rate
Description: Values are zero before 2017; reforms that introduce indexing with chained CPI would have values around -0.0025 beginning in the year before the first year policy parameters will have values computed with chained CPI.
Notes: See April 2013 CBO report entitled 'What Would Be the Effect on the Deficit of Using the Chained CPI to Index Benefit Programs and the Tax Code?', which includes this: 'The chained CPI grows more slowly than the traditional CPI does: an average of about 0.25 percentage points more slowly per year over the past decade.'
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: -0.0025
Valid Range: min = -0.005 and max = 0.005
Out-of-Range Action: error

+

Parameter Indexing — Offsets
tc Name: CPI_offset
Title: Decimal offset ADDED to unchained CPI to get parameter indexing rate
Description: Values are zero before 2017; reforms that introduce indexing with chained CPI would have values around -0.0025 beginning in the year before the first year policy parameters will have values computed with chained CPI.
Notes: See April 2013 CBO report entitled 'What Would Be the Effect on the Deficit of Using the Chained CPI to Index Benefit Programs and the Tax Code?', which includes this: 'The chained CPI grows more slowly than the traditional CPI does: an average of about 0.25 percentage points more slowly per year over the past decade.'
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: -0.0025
2018: -0.0025
2019: -0.0025
2020: -0.0025
2021: -0.0025
2022: -0.0025
2023: -0.0025
2024: -0.0025
2025: -0.0025
2026: -0.0025
Valid Range: min = -0.005 and max = 0.005
Out-of-Range Action: error

3b. Payroll Taxes

-

Payroll Taxes — Social Security FICA
tc Name: FICA_ss_trt
TB Name: Social Security payroll tax rate
Description: Social Security FICA rate, including both employer and employee.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.124
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Payroll Taxes — Social Security FICA
tc Name: SS_Earnings_c
TB Name: Maximum taxable earnings (MTE) for Social Security
Description: Individual earnings below this amount are subjected to Social Security (OASDI) payroll tax.
Notes: This parameter is indexed by the rate of growth in average wages, not by the price inflation rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 113700.0
2014: 117000.0
2015: 118500.0
2016: 118500.0
2017: 127200.0
2018: 128400.0
2019: 132900.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Payroll Taxes — Social Security FICA
tc Name: SS_Earnings_thd
TB Name: Additional Taxable Earnings Threshold for Social Security
Description: Individual earnings above this threshold are subjected to Social Security (OASDI) payroll tax, in addition to earnings below the maximum taxable earnings threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Payroll Taxes — Social Security FICA
tc Name: FICA_ss_trt
Title: Social Security payroll tax rate
Description: Social Security FICA rate, including both employer and employee.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.124
2014: 0.124
2015: 0.124
2016: 0.124
2017: 0.124
2018: 0.124
2019: 0.124
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Payroll Taxes — Social Security FICA
tc Name: SS_Earnings_c
Title: Maximum taxable earnings (MTE) for Social Security
Description: Individual earnings below this amount are subjected to Social Security (OASDI) payroll tax.
Notes: This parameter is indexed by the rate of growth in average wages, not by the price inflation rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 113700.0
2014: 117000.0
2015: 118500.0
2016: 118500.0
2017: 127200.0
2018: 128400.0
2019: 132900.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Payroll Taxes — Social Security FICA
tc Name: SS_Earnings_thd
Title: Additional Taxable Earnings Threshold for Social Security
Description: Individual earnings above this threshold are subjected to Social Security (OASDI) payroll tax, in addition to earnings below the maximum taxable earnings threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
2014: 9e+99
2015: 9e+99
2016: 9e+99
2017: 9e+99
2018: 9e+99
2019: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Payroll Taxes — Medicare FICA
tc Name: FICA_mc_trt
TB Name: Medicare payroll tax rate
Description: Medicare FICA rate, including both employer and employee.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.029
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Payroll Taxes — Medicare FICA
tc Name: FICA_mc_trt
Title: Medicare payroll tax rate
Description: Medicare FICA rate, including both employer and employee.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.029
2014: 0.029
2015: 0.029
2016: 0.029
2017: 0.029
2018: 0.029
2019: 0.029
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Payroll Taxes — Additional Medicare FICA
tc Name: AMEDT_ec
TB Name: Additional Medicare tax earnings exclusion
Description: The Additional Medicare Tax rate, AMEDT_rt, applies to all earnings in excess of this excluded amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 200000.0 MARS=single
2013: 250000.0 MARS=mjoint
2013: 125000.0 MARS=mseparate
2013: 200000.0 MARS=headhh
2013: 200000.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Payroll Taxes — Additional Medicare FICA
tc Name: AMEDT_rt
TB Name: Additional Medicare tax rate
Description: This is the rate applied to the portion of Medicare wages, RRTA compensation and self-employment income exceeding the Additional Medicare Tax earning exclusion.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.009
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Payroll Taxes — Additional Medicare FICA
tc Name: AMEDT_ec
Title: Additional Medicare tax earnings exclusion
Description: The Additional Medicare Tax rate, AMEDT_rt, applies to all earnings in excess of this excluded amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
2014: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
2015: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
2016: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
2017: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
2018: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
2019: [200000.0, 250000.0, 125000.0, 200000.0, 200000.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Payroll Taxes — Additional Medicare FICA
tc Name: AMEDT_rt
Title: Additional Medicare tax rate
Description: This is the rate applied to the portion of Medicare wages, RRTA compensation and self-employment income exceeding the Additional Medicare Tax earning exclusion.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.009
2014: 0.009
2015: 0.009
2016: 0.009
2017: 0.009
2018: 0.009
2019: 0.009
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

3c. Social Security Taxability

-

Social Security Taxability — Threshold For Social Security Benefit Taxability 1
tc Name: SS_thd50
TB Name: Threshold for Social Security benefit taxability 1
Description: The first threshold for Social Security benefit taxability: if taxpayers have provisional income greater than this threshold, up to 50% of their Social Security benefit will be subject to tax under current law.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 25000.0 MARS=single
2013: 32000.0 MARS=mjoint
2013: 25000.0 MARS=mseparate
2013: 25000.0 MARS=headhh
2013: 25000.0 MARS=widow
Valid Range: min = 0 and max = SS_thd85
Out-of-Range Action: error

+

Social Security Taxability — Threshold For Social Security Benefit Taxability 1
tc Name: SS_thd50
Title: Threshold for Social Security benefit taxability 1
Description: The first threshold for Social Security benefit taxability: if taxpayers have provisional income greater than this threshold, up to 50% of their Social Security benefit will be subject to tax under current law.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
2014: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
2015: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
2016: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
2017: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
2018: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
2019: [25000.0, 32000.0, 25000.0, 25000.0, 25000.0]
Valid Range: min = 0 and max = SS_thd85
Out-of-Range Action: error

-

Social Security Taxability — Threshold For Social Security Benefit Taxability 2
tc Name: SS_thd85
TB Name: Threshold for Social Security benefit taxability 2
Description: The second threshold for Social Security taxability: if taxpayers have provisional income greater than this threshold, up to 85% of their Social Security benefit will be subject to tax under current law.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 34000.0 MARS=single
2013: 44000.0 MARS=mjoint
2013: 34000.0 MARS=mseparate
2013: 34000.0 MARS=headhh
2013: 34000.0 MARS=widow
Valid Range: min = SS_thd50 and max = 9e+99
Out-of-Range Action: error

+

Social Security Taxability — Threshold For Social Security Benefit Taxability 2
tc Name: SS_thd85
Title: Threshold for Social Security benefit taxability 2
Description: The second threshold for Social Security taxability: if taxpayers have provisional income greater than this threshold, up to 85% of their Social Security benefit will be subject to tax under current law.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
2014: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
2015: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
2016: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
2017: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
2018: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
2019: [34000.0, 44000.0, 34000.0, 34000.0, 34000.0]
Valid Range: min = SS_thd50 and max = 9e+99
Out-of-Range Action: error

3d. Above The Line Deductions

-

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_StudentLoan_hc
TB Name: Adjustment for student loan interest haircut
Description: This decimal fraction can be applied to limit the student loan interest adjustment allowed.
Notes: The final adjustment amount will be (1-Haircut)*StudentLoanInterest.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_SelfEmploymentTax_hc
TB Name: Adjustment for self-employment tax haircut
Description: This decimal fraction, if greater than zero, reduces the employer equivalent portion of self-employment adjustment.
Notes: The final adjustment amount would be (1-Haircut)*SelfEmploymentTaxAdjustment.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_SelfEmp_HealthIns_hc
TB Name: Adjustment for self employed health insurance haircut
Description: This decimal fraction, if greater than zero, reduces the health insurance adjustment for self-employed taxpayers.
Notes: The final adjustment amount would be (1-Haircut)*SelfEmployedHealthInsuranceAdjustment.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_KEOGH_SEP_hc
TB Name: Adjustment for contributions to either KEOGH or SEP plan haircut
Description: Under current law, contributions to Keogh or SEP plans can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.
Notes: The final adjustment amount is (1-Haircut)*KEOGH_SEP_Contributinos.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_EarlyWithdraw_hc
TB Name: Adjustment for early withdrawal penalty haircut
Description: Under current law, early withdraw penalty can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.
Notes: The final adjustment amount is (1-Haircut)*EarlyWithdrawPenalty.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_AlimonyPaid_hc
TB Name: Adjustment for alimony-paid haircut
Description: Under pre-TCJA law, the full amount of alimony paid is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.
Notes: The final adjustment amount would be (1-Haircut)*AlimonyPaid.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_AlimonyReceived_hc
TB Name: Adjustment for alimony-received haircut
Description: Under pre-TCJA law, none of alimony received is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.
Notes: The final adjustment amount would be (1-Haircut)*AlimonyReceived.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 0.0
2020: 0.0
2021: 0.0
2022: 0.0
2023: 0.0
2024: 0.0
2025: 0.0
2026: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_EducatorExpenses_hc
TB Name: Deduction for educator expenses haircut
Description: If greater than zero, this decimal fraction reduces the portion of educator expenses that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*EducatorExpenses.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_HSADeduction_hc
TB Name: Deduction for HSA deduction haircut
Description: If greater than zero, this decimal fraction reduces the portion of a taxpayer's HSA deduction that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*HSA_Deduction.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_IRAContributions_hc
TB Name: Deduction for IRA contributions haircut
Description: If greater than zero, this decimal fraction reduces the portion of IRA contributions that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*IRA_Contribution.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_DomesticProduction_hc
TB Name: Deduction for domestic production activity haircut
Description: If greater than zero, this decimal fraction reduces the portion of domestic production activity that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*DomesticProductionActivity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_Tuition_hc
TB Name: Deduction for tuition and fees haircut
Description: If greater than zero, this decimal fraction reduces the portion of tuition and fees that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*TuitionFees.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_StudentLoan_hc
Title: Adjustment for student loan interest haircut
Description: This decimal fraction can be applied to limit the student loan interest adjustment allowed.
Notes: The final adjustment amount will be (1-Haircut)*StudentLoanInterest.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_SelfEmploymentTax_hc
Title: Adjustment for self-employment tax haircut
Description: This decimal fraction, if greater than zero, reduces the employer equivalent portion of self-employment adjustment.
Notes: The final adjustment amount would be (1-Haircut)*SelfEmploymentTaxAdjustment.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_SelfEmp_HealthIns_hc
Title: Adjustment for self employed health insurance haircut
Description: This decimal fraction, if greater than zero, reduces the health insurance adjustment for self-employed taxpayers.
Notes: The final adjustment amount would be (1-Haircut)*SelfEmployedHealthInsuranceAdjustment.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_KEOGH_SEP_hc
Title: Adjustment for contributions to either KEOGH or SEP plan haircut
Description: Under current law, contributions to Keogh or SEP plans can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.
Notes: The final adjustment amount is (1-Haircut)*KEOGH_SEP_Contributinos.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_EarlyWithdraw_hc
Title: Adjustment for early withdrawal penalty haircut
Description: Under current law, early withdraw penalty can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.
Notes: The final adjustment amount is (1-Haircut)*EarlyWithdrawPenalty.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_AlimonyPaid_hc
Title: Adjustment for alimony-paid haircut
Description: Under pre-TCJA law, the full amount of alimony paid is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.
Notes: The final adjustment amount would be (1-Haircut)*AlimonyPaid.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_AlimonyReceived_hc
Title: Adjustment for alimony-received haircut
Description: Under pre-TCJA law, none of alimony received is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.
Notes: The final adjustment amount would be (1-Haircut)*AlimonyReceived.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 0.0
2020: 0.0
2021: 0.0
2022: 0.0
2023: 0.0
2024: 0.0
2025: 0.0
2026: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_EducatorExpenses_hc
Title: Deduction for educator expenses haircut
Description: If greater than zero, this decimal fraction reduces the portion of educator expenses that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*EducatorExpenses.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_HSADeduction_hc
Title: Deduction for HSA deduction haircut
Description: If greater than zero, this decimal fraction reduces the portion of a taxpayer's HSA deduction that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*HSA_Deduction.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_IRAContributions_hc
Title: Deduction for IRA contributions haircut
Description: If greater than zero, this decimal fraction reduces the portion of IRA contributions that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*IRA_Contribution.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_DomesticProduction_hc
Title: Deduction for domestic production activity haircut
Description: If greater than zero, this decimal fraction reduces the portion of domestic production activity that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*DomesticProductionActivity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Adjustment Haircuts
tc Name: ALD_Tuition_hc
Title: Deduction for tuition and fees haircut
Description: If greater than zero, this decimal fraction reduces the portion of tuition and fees that can be deducted from AGI.
Notes: The final adjustment amount would be (1-Haircut)*TuitionFees.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Above The Line Deductions — Misc. Exclusions
tc Name: ALD_InvInc_ec_rt
TB Name: Investment income exclusion rate haircut
Description: Decimal fraction of investment income base that can be excluded from AGI.
Notes: The final taxable investment income will be (1-_ALD_InvInc_ec_rt)*investment_income_base. Even though the excluded portion of investment income is not included in AGI, it still is included in investment income used to calculate the Net Investment Income Tax and Earned Income Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Exclusions
tc Name: ALD_BusinessLosses_c
TB Name: Maximum amount of business losses deductible
Description: Business losses in excess of this amount may not be deducted from AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 250000.0 MARS=single
2018: 500000.0 MARS=mjoint
2018: 250000.0 MARS=mseparate
2018: 250000.0 MARS=headhh
2018: 500000.0 MARS=widow
2019: 255000.0 MARS=single
2019: 510000.0 MARS=mjoint
2019: 255000.0 MARS=mseparate
2019: 255000.0 MARS=headhh
2019: 510000.0 MARS=widow
2020: 259029.0 MARS=single
2020: 518058.0 MARS=mjoint
2020: 259029.0 MARS=mseparate
2020: 259029.0 MARS=headhh
2020: 518058.0 MARS=widow
2021: 264675.83 MARS=single
2021: 529351.66 MARS=mjoint
2021: 264675.83 MARS=mseparate
2021: 264675.83 MARS=headhh
2021: 529351.66 MARS=widow
2022: 270683.97 MARS=single
2022: 541367.95 MARS=mjoint
2022: 270683.97 MARS=mseparate
2022: 270683.97 MARS=headhh
2022: 541367.95 MARS=widow
2023: 276936.77 MARS=single
2023: 553873.55 MARS=mjoint
2023: 276936.77 MARS=mseparate
2023: 276936.77 MARS=headhh
2023: 553873.55 MARS=widow
2024: 283084.77 MARS=single
2024: 566169.54 MARS=mjoint
2024: 283084.77 MARS=mseparate
2024: 283084.77 MARS=headhh
2024: 566169.54 MARS=widow
2025: 289199.4 MARS=single
2025: 578398.8 MARS=mjoint
2025: 289199.4 MARS=mseparate
2025: 289199.4 MARS=headhh
2025: 578398.8 MARS=widow
2026: 9e+99 MARS=single
2026: 9e+99 MARS=mjoint
2026: 9e+99 MARS=mseparate
2026: 9e+99 MARS=headhh
2026: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Above The Line Deductions — Misc. Exclusions
tc Name: ALD_InvInc_ec_rt
Title: Investment income exclusion rate haircut
Description: Decimal fraction of investment income base that can be excluded from AGI.
Notes: The final taxable investment income will be (1-_ALD_InvInc_ec_rt)*investment_income_base. Even though the excluded portion of investment income is not included in AGI, it still is included in investment income used to calculate the Net Investment Income Tax and Earned Income Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Misc. Exclusions
tc Name: ALD_BusinessLosses_c
Title: Maximum amount of business losses deductible
Description: Business losses in excess of this amount may not be deducted from AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [250000.0, 500000.0, 250000.0, 250000.0, 500000.0]
2019: [255000.0, 510000.0, 255000.0, 255000.0, 510000.0]
2020: [259029.0, 518058.0, 259029.0, 259029.0, 518058.0]
2021: [264675.83, 529351.66, 264675.83, 264675.83, 529351.66]
2022: [270683.97, 541367.94, 270683.97, 270683.97, 541367.94]
2023: [276936.77, 553873.54, 276936.77, 276936.77, 553873.54]
2024: [283084.77, 566169.53, 283084.77, 283084.77, 566169.53]
2025: [289199.4, 578398.79, 289199.4, 289199.4, 578398.79]
2026: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_hc
TB Name: Deduction for childcare costs haircut
Description: This decimal fraction, if greater than zero, reduces the portion of childcare costs that can be deducted from AGI.
Notes: The final adjustment would be (1-Haircut)*AverageChildcareCosts.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_Child_c
TB Name: National average childcare costs: ceiling for available childcare deduction.
Description: The weighted average of childcare costs in the US. 7165 is the weighted average from the 'Child Care in America: 2016 State Fact Sheets'.
Notes: This is a weighted average of childcare costs in each state
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_Elder_c
TB Name: Ceiling for elderly care deduction proposed in Trump's tax plan
Description: A taxpayer can take an above the line deduction up to this amount if they have an elderly dependent. The Trump 2016 campaign proposal was for $5000.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_thd
TB Name: Maximum level of income to qualify for the dependent care deduction
Description: A taxpayer can only claim the dependent care deduction if their total income is below this level. The Trump 2016 campaign proposal was for 250000 single, 500000 joint, 250000 separate, 500000 head of household].
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_hc
Title: Deduction for childcare costs haircut
Description: This decimal fraction, if greater than zero, reduces the portion of childcare costs that can be deducted from AGI.
Notes: The final adjustment would be (1-Haircut)*AverageChildcareCosts.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_Child_c
Title: National average childcare costs: ceiling for available childcare deduction.
Description: The weighted average of childcare costs in the US. 7165 is the weighted average from the 'Child Care in America: 2016 State Fact Sheets'.
Notes: This is a weighted average of childcare costs in each state
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_Elder_c
Title: Ceiling for elderly care deduction proposed in Trump's tax plan
Description: A taxpayer can take an above the line deduction up to this amount if they have an elderly dependent. The Trump 2016 campaign proposal was for $5000.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Above The Line Deductions — Child And Elderly Care
tc Name: ALD_Dependents_thd
Title: Maximum level of income to qualify for the dependent care deduction
Description: A taxpayer can only claim the dependent care deduction if their total income is below this level. The Trump 2016 campaign proposal was for 250000 single, 500000 joint, 250000 separate, 500000 head of household].
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

3e. Personal Exemptions

-

Personal Exemptions — Personal And Dependent Exemption Amount
tc Name: II_em
TB Name: Personal and dependent exemption amount
Description: Subtracted from AGI in the calculation of taxable income, per taxpayer and dependent.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 3900.0
2014: 3950.0
2015: 4000.0
2016: 4050.0
2017: 4050.0
2018: 0.0
2019: 0.0
2020: 0.0
2021: 0.0
2022: 0.0
2023: 0.0
2024: 0.0
2025: 0.0
2026: 4880.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Personal Exemptions — Personal And Dependent Exemption Amount
tc Name: II_em
Title: Personal and dependent exemption amount
Description: Subtracted from AGI in the calculation of taxable income, per taxpayer and dependent.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 3900.0
2014: 3950.0
2015: 4000.0
2016: 4050.0
2017: 4050.0
2018: 0.0
2019: 0.0
2020: 0.0
2021: 0.0
2022: 0.0
2023: 0.0
2024: 0.0
2025: 0.0
2026: 4880.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Personal Exemptions — Personal Exemption Phaseout Rate
tc Name: II_prt
TB Name: Personal exemption phaseout rate
Description: Personal exemption amount will decrease by this rate for each dollar of AGI exceeding exemption phaseout start.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.02
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Personal Exemptions — Personal Exemption Phaseout Rate
tc Name: II_prt
Title: Personal exemption phaseout rate
Description: Personal exemption amount will decrease by this rate for each dollar of AGI exceeding exemption phaseout start.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.02
2014: 0.02
2015: 0.02
2016: 0.02
2017: 0.02
2018: 0.02
2019: 0.02
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Personal Exemptions — Repeal for Dependents Under Age 18
tc Name: II_no_em_nu18
TB Name: Repeal personal exemptions for dependents under age 18
Description: Total personal exemptions will be decreased by the number of dependents under the age of 18.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

+

Personal Exemptions — Repeal for Dependents Under Age 18
tc Name: II_no_em_nu18
Title: Repeal personal exemptions for dependents under age 18
Description: Total personal exemptions will be decreased by the number of dependents under the age of 18.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

3f. Standard Deduction

-

Standard Deduction — Standard Deduction Amount
tc Name: STD
TB Name: Standard deduction amount
Description: Amount filing unit can use as a standard deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 6100.0 MARS=single
2013: 12200.0 MARS=mjoint
2013: 6100.0 MARS=mseparate
2013: 8950.0 MARS=headhh
2013: 12200.0 MARS=widow
2014: 6200.0 MARS=single
2014: 12400.0 MARS=mjoint
2014: 6200.0 MARS=mseparate
2014: 9100.0 MARS=headhh
2014: 12400.0 MARS=widow
2015: 6300.0 MARS=single
2015: 12600.0 MARS=mjoint
2015: 6300.0 MARS=mseparate
2015: 9250.0 MARS=headhh
2015: 12600.0 MARS=widow
2016: 6300.0 MARS=single
2016: 12600.0 MARS=mjoint
2016: 6300.0 MARS=mseparate
2016: 9300.0 MARS=headhh
2016: 12600.0 MARS=widow
2017: 6350.0 MARS=single
2017: 12700.0 MARS=mjoint
2017: 6350.0 MARS=mseparate
2017: 9350.0 MARS=headhh
2017: 12700.0 MARS=widow
2018: 12000.0 MARS=single
2018: 24000.0 MARS=mjoint
2018: 12000.0 MARS=mseparate
2018: 18000.0 MARS=headhh
2018: 24000.0 MARS=widow
2019: 12200.0 MARS=single
2019: 24400.0 MARS=mjoint
2019: 12200.0 MARS=mseparate
2019: 18350.0 MARS=headhh
2019: 24400.0 MARS=widow
2020: 12392.76 MARS=single
2020: 24785.52 MARS=mjoint
2020: 12392.76 MARS=mseparate
2020: 18639.93 MARS=headhh
2020: 24785.52 MARS=widow
2021: 12662.92 MARS=single
2021: 25325.84 MARS=mjoint
2021: 12662.92 MARS=mseparate
2021: 19046.28 MARS=headhh
2021: 25325.84 MARS=widow
2022: 12950.37 MARS=single
2022: 25900.74 MARS=mjoint
2022: 12950.37 MARS=mseparate
2022: 19478.63 MARS=headhh
2022: 25900.74 MARS=widow
2023: 13249.52 MARS=single
2023: 26499.05 MARS=mjoint
2023: 13249.52 MARS=mseparate
2023: 19928.59 MARS=headhh
2023: 26499.05 MARS=widow
2024: 13543.66 MARS=single
2024: 27087.33 MARS=mjoint
2024: 13543.66 MARS=mseparate
2024: 20371.0 MARS=headhh
2024: 27087.33 MARS=widow
2025: 13836.21 MARS=single
2025: 27672.41 MARS=mjoint
2025: 13836.21 MARS=mseparate
2025: 20811.02 MARS=headhh
2025: 27672.41 MARS=widow
2026: 7651.0 MARS=single
2026: 15303.0 MARS=mjoint
2026: 7651.0 MARS=mseparate
2026: 11266.0 MARS=headhh
2026: 15303.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Standard Deduction — Standard Deduction Amount
tc Name: STD
Title: Standard deduction amount
Description: Amount filing unit can use as a standard deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [6100.0, 12200.0, 6100.0, 8950.0, 12200.0]
2014: [6200.0, 12400.0, 6200.0, 9100.0, 12400.0]
2015: [6300.0, 12600.0, 6300.0, 9250.0, 12600.0]
2016: [6300.0, 12600.0, 6300.0, 9300.0, 12600.0]
2017: [6350.0, 12700.0, 6350.0, 9350.0, 12700.0]
2018: [12000.0, 24000.0, 12000.0, 18000.0, 24000.0]
2019: [12200.0, 24400.0, 12200.0, 18350.0, 24400.0]
2020: [12392.76, 24785.52, 12392.76, 18639.93, 24785.52]
2021: [12662.92, 25325.84, 12662.92, 19046.28, 25325.84]
2022: [12950.37, 25900.74, 12950.37, 19478.63, 25900.74]
2023: [13249.52, 26499.05, 13249.52, 19928.59, 26499.05]
2024: [13543.66, 27087.33, 13543.66, 20371.0, 27087.33]
2025: [13836.2, 27672.42, 13836.2, 20811.01, 27672.42]
2026: [7651.0, 15303.0, 7651.0, 11266.0, 15303.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Standard Deduction — Additional Standard Deduction For Blind And Aged
tc Name: STD_Aged
TB Name: Additional standard deduction for blind and aged
Description: To get the standard deduction for aged or blind individuals, taxpayers need to add this value to regular standard deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 1500.0 MARS=single
2013: 1200.0 MARS=mjoint
2013: 1200.0 MARS=mseparate
2013: 1500.0 MARS=headhh
2013: 1500.0 MARS=widow
2014: 1550.0 MARS=single
2014: 1200.0 MARS=mjoint
2014: 1200.0 MARS=mseparate
2014: 1550.0 MARS=headhh
2014: 1550.0 MARS=widow
2015: 1550.0 MARS=single
2015: 1250.0 MARS=mjoint
2015: 1250.0 MARS=mseparate
2015: 1550.0 MARS=headhh
2015: 1550.0 MARS=widow
2016: 1550.0 MARS=single
2016: 1250.0 MARS=mjoint
2016: 1250.0 MARS=mseparate
2016: 1550.0 MARS=headhh
2016: 1550.0 MARS=widow
2017: 1550.0 MARS=single
2017: 1250.0 MARS=mjoint
2017: 1250.0 MARS=mseparate
2017: 1550.0 MARS=headhh
2017: 1550.0 MARS=widow
2018: 1600.0 MARS=single
2018: 1300.0 MARS=mjoint
2018: 1300.0 MARS=mseparate
2018: 1600.0 MARS=headhh
2018: 1300.0 MARS=widow
2019: 1650.0 MARS=single
2019: 1300.0 MARS=mjoint
2019: 1300.0 MARS=mseparate
2019: 1650.0 MARS=headhh
2019: 1300.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Standard Deduction — Additional Standard Deduction For Blind And Aged
tc Name: STD_Aged
Title: Additional standard deduction for blind and aged
Description: To get the standard deduction for aged or blind individuals, taxpayers need to add this value to regular standard deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [1500.0, 1200.0, 1200.0, 1500.0, 1500.0]
2014: [1550.0, 1200.0, 1200.0, 1550.0, 1550.0]
2015: [1550.0, 1250.0, 1250.0, 1550.0, 1550.0]
2016: [1550.0, 1250.0, 1250.0, 1550.0, 1550.0]
2017: [1550.0, 1250.0, 1250.0, 1550.0, 1550.0]
2018: [1600.0, 1300.0, 1300.0, 1600.0, 1300.0]
2019: [1650.0, 1300.0, 1300.0, 1650.0, 1300.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

3g. Nonrefundable Credits

-

Nonrefundable Credits — Child And Dependent Care
tc Name: CDCC_c
TB Name: Maximum child & dependent care credit per dependent
Description: The maximum amount of credit allowed for each qualifying dependent.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 3000.0
Valid Range: min = 0 and max = 3000
Out-of-Range Action: error

Nonrefundable Credits — Child And Dependent Care
tc Name: CDCC_ps
TB Name: Child & dependent care credit phaseout start
Description: For taxpayers with AGI over this amount, the credit is reduced by one percentage point each $2000 of AGI over this amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 15000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Nonrefundable Credits — Child And Dependent Care
tc Name: CDCC_crt
TB Name: Child & dependent care credit phaseout percentage rate ceiling
Description: The maximum percentage rate in the AGI phaseout; this percentage rate decreases as AGI rises above the CDCC_ps level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 35.0
Valid Range: min = 0 and max = 100
Out-of-Range Action: error

+

Nonrefundable Credits — Child And Dependent Care
tc Name: CDCC_c
Title: Maximum child & dependent care credit per dependent
Description: The maximum amount of credit allowed for each qualifying dependent.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 3000.0
2014: 3000.0
2015: 3000.0
2016: 3000.0
2017: 3000.0
2018: 3000.0
2019: 3000.0
Valid Range: min = 0 and max = 3000
Out-of-Range Action: error

Nonrefundable Credits — Child And Dependent Care
tc Name: CDCC_ps
Title: Child & dependent care credit phaseout start
Description: For taxpayers with AGI over this amount, the credit is reduced by one percentage point each $2000 of AGI over this amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 15000.0
2014: 15000.0
2015: 15000.0
2016: 15000.0
2017: 15000.0
2018: 15000.0
2019: 15000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Nonrefundable Credits — Child And Dependent Care
tc Name: CDCC_crt
Title: Child & dependent care credit phaseout percentage rate ceiling
Description: The maximum percentage rate in the AGI phaseout; this percentage rate decreases as AGI rises above the CDCC_ps level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 35.0
2014: 35.0
2015: 35.0
2016: 35.0
2017: 35.0
2018: 35.0
2019: 35.0
Valid Range: min = 0 and max = 100
Out-of-Range Action: error

-

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_RetirementSavings_hc
TB Name: Credit for retirement savings haircut
Description: If greater than zero, this decimal fraction reduces the portion of the retirement savings credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*RetirementSavingsCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_ForeignTax_hc
TB Name: Credit for foreign tax haircut
Description: If greater than zero, this decimal fraction reduces the portion of the foreign tax credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*ForeignTaxCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_ResidentialEnergy_hc
TB Name: Credit for residential energy haircut
Description: If greater than zero, this decimal fraction reduces the portion of the residential energy credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*ResidentialEnergyCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_GeneralBusiness_hc
TB Name: Credit for general business haircut
Description: If greater than zero, this decimal fraction reduces the portion of the general business credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*GeneralBusinessCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_MinimumTax_hc
TB Name: Credit for previous year minimum tax credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of the previous year minimum tax credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*PreviousYearMinimumTaxCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_AmOppRefundable_hc
TB Name: Refundable portion of the American Opportunity Credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of the refundable American Opportunity credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*RefundablePortionOfAmericanOpportunityCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_AmOppNonRefundable_hc
TB Name: Nonrefundable portion of the American Opportunity Credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of the nonrefundable American Opportunity credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*NonRefundablePortionOfAmericanOpportunityCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_SchR_hc
TB Name: Schedule R Credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of Schedule R credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*ScheduleRCredit
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_OtherCredits_hc
TB Name: Other Credits haircut
Description: If greater than zero, this decimal fraction reduces the portion of other credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*OtherCredits.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_Education_hc
TB Name: Education Credits haircut
Description: If greater than zero, this decimal fraction reduces the portion of education credits that can be claimed.
Notes: Credit claimed will be (1-Haircut)*EducationCredits.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_RetirementSavings_hc
Title: Credit for retirement savings haircut
Description: If greater than zero, this decimal fraction reduces the portion of the retirement savings credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*RetirementSavingsCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_ForeignTax_hc
Title: Credit for foreign tax haircut
Description: If greater than zero, this decimal fraction reduces the portion of the foreign tax credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*ForeignTaxCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_ResidentialEnergy_hc
Title: Credit for residential energy haircut
Description: If greater than zero, this decimal fraction reduces the portion of the residential energy credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*ResidentialEnergyCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_GeneralBusiness_hc
Title: Credit for general business haircut
Description: If greater than zero, this decimal fraction reduces the portion of the general business credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*GeneralBusinessCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_MinimumTax_hc
Title: Credit for previous year minimum tax credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of the previous year minimum tax credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*PreviousYearMinimumTaxCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_AmOppRefundable_hc
Title: Refundable portion of the American Opportunity Credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of the refundable American Opportunity credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*RefundablePortionOfAmericanOpportunityCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_AmOppNonRefundable_hc
Title: Nonrefundable portion of the American Opportunity Credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of the nonrefundable American Opportunity credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*NonRefundablePortionOfAmericanOpportunityCredit.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_SchR_hc
Title: Schedule R Credit haircut
Description: If greater than zero, this decimal fraction reduces the portion of Schedule R credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*ScheduleRCredit
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_OtherCredits_hc
Title: Other Credits haircut
Description: If greater than zero, this decimal fraction reduces the portion of other credit that can be claimed.
Notes: Credit claimed will be (1-Haircut)*OtherCredits.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Nonrefundable Credits — Misc. Credit Limits
tc Name: CR_Education_hc
Title: Education Credits haircut
Description: If greater than zero, this decimal fraction reduces the portion of education credits that can be claimed.
Notes: Credit claimed will be (1-Haircut)*EducationCredits.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Nonrefundable Credits — Personal Nonrefundable Credit
tc Name: II_credit_nr
TB Name: Personal nonrefundable credit maximum amount
Description: This credit amount is not refundable and is phased out based on AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 0.0 MARS=single
2018: 0.0 MARS=mjoint
2018: 0.0 MARS=mseparate
2018: 0.0 MARS=headhh
2018: 0.0 MARS=widow
2019: 0.0 MARS=single
2019: 0.0 MARS=mjoint
2019: 0.0 MARS=mseparate
2019: 0.0 MARS=headhh
2019: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Nonrefundable Credits — Personal Nonrefundable Credit
tc Name: II_credit_nr_ps
TB Name: Personal nonrefundable credit phaseout start
Description: The personal nonrefundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 0.0 MARS=single
2018: 0.0 MARS=mjoint
2018: 0.0 MARS=mseparate
2018: 0.0 MARS=headhh
2018: 0.0 MARS=widow
2019: 0.0 MARS=single
2019: 0.0 MARS=mjoint
2019: 0.0 MARS=mseparate
2019: 0.0 MARS=headhh
2019: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Nonrefundable Credits — Personal Nonrefundable Credit
tc Name: II_credit_nr_prt
TB Name: Personal nonrefundable credit phaseout rate
Description: The personal nonrefundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_nr_ps threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Nonrefundable Credits — Personal Nonrefundable Credit
tc Name: II_credit_nr
Title: Personal nonrefundable credit maximum amount
Description: This credit amount is not refundable and is phased out based on AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Nonrefundable Credits — Personal Nonrefundable Credit
tc Name: II_credit_nr_ps
Title: Personal nonrefundable credit phaseout start
Description: The personal nonrefundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Nonrefundable Credits — Personal Nonrefundable Credit
tc Name: II_credit_nr_prt
Title: Personal nonrefundable credit phaseout rate
Description: The personal nonrefundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_nr_ps threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

3h. Child/Dependent Credits

-

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_c
TB Name: Maximum nonrefundable child tax credit per child
Description: The maximum nonrefundable credit allowed for each child.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1000.0
2014: 1000.0
2015: 1000.0
2016: 1000.0
2017: 1000.0
2018: 2000.0
2019: 2000.0
2020: 2000.0
2021: 2000.0
2022: 2000.0
2023: 2000.0
2024: 2000.0
2025: 2000.0
2026: 1000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_c_under5_bonus
TB Name: Bonus child tax credit maximum for qualifying children under five
Description: The maximum amount of child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_ps
TB Name: Child tax credit phaseout MAGI start
Description: Child tax credit begins to decrease when MAGI is above this level; read descriptions of the dependent credit amounts for how they phase out when MAGI is above this level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 75000.0 MARS=single
2013: 110000.0 MARS=mjoint
2013: 55000.0 MARS=mseparate
2013: 75000.0 MARS=headhh
2013: 75000.0 MARS=widow
2014: 75000.0 MARS=single
2014: 110000.0 MARS=mjoint
2014: 55000.0 MARS=mseparate
2014: 75000.0 MARS=headhh
2014: 75000.0 MARS=widow
2015: 75000.0 MARS=single
2015: 110000.0 MARS=mjoint
2015: 55000.0 MARS=mseparate
2015: 75000.0 MARS=headhh
2015: 75000.0 MARS=widow
2016: 75000.0 MARS=single
2016: 110000.0 MARS=mjoint
2016: 55000.0 MARS=mseparate
2016: 75000.0 MARS=headhh
2016: 75000.0 MARS=widow
2017: 75000.0 MARS=single
2017: 110000.0 MARS=mjoint
2017: 55000.0 MARS=mseparate
2017: 75000.0 MARS=headhh
2017: 75000.0 MARS=widow
2018: 200000.0 MARS=single
2018: 400000.0 MARS=mjoint
2018: 200000.0 MARS=mseparate
2018: 200000.0 MARS=headhh
2018: 400000.0 MARS=widow
2019: 200000.0 MARS=single
2019: 400000.0 MARS=mjoint
2019: 200000.0 MARS=mseparate
2019: 200000.0 MARS=headhh
2019: 400000.0 MARS=widow
2020: 200000.0 MARS=single
2020: 400000.0 MARS=mjoint
2020: 200000.0 MARS=mseparate
2020: 200000.0 MARS=headhh
2020: 400000.0 MARS=widow
2021: 200000.0 MARS=single
2021: 400000.0 MARS=mjoint
2021: 200000.0 MARS=mseparate
2021: 200000.0 MARS=headhh
2021: 400000.0 MARS=widow
2022: 200000.0 MARS=single
2022: 400000.0 MARS=mjoint
2022: 200000.0 MARS=mseparate
2022: 200000.0 MARS=headhh
2022: 400000.0 MARS=widow
2023: 200000.0 MARS=single
2023: 400000.0 MARS=mjoint
2023: 200000.0 MARS=mseparate
2023: 200000.0 MARS=headhh
2023: 400000.0 MARS=widow
2024: 200000.0 MARS=single
2024: 400000.0 MARS=mjoint
2024: 200000.0 MARS=mseparate
2024: 200000.0 MARS=headhh
2024: 400000.0 MARS=widow
2025: 200000.0 MARS=single
2025: 400000.0 MARS=mjoint
2025: 200000.0 MARS=mseparate
2025: 200000.0 MARS=headhh
2025: 400000.0 MARS=widow
2026: 75000.0 MARS=single
2026: 110000.0 MARS=mjoint
2026: 55000.0 MARS=mseparate
2026: 75000.0 MARS=headhh
2026: 75000.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_prt
TB Name: Child and dependent tax credit phaseout rate
Description: The amount of the credit starts to decrease at this rate if MAGI is higher than child tax credit phaseout start.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.05
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_c
Title: Maximum nonrefundable child tax credit per child
Description: The maximum nonrefundable credit allowed for each child.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1000.0
2014: 1000.0
2015: 1000.0
2016: 1000.0
2017: 1000.0
2018: 2000.0
2019: 2000.0
2020: 2000.0
2021: 2000.0
2022: 2000.0
2023: 2000.0
2024: 2000.0
2025: 2000.0
2026: 1000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_c_under5_bonus
Title: Bonus child tax credit maximum for qualifying children under five
Description: The maximum amount of child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_ps
Title: Child tax credit phaseout MAGI start
Description: Child tax credit begins to decrease when MAGI is above this level; read descriptions of the dependent credit amounts for how they phase out when MAGI is above this level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]
2014: [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]
2015: [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]
2016: [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]
2017: [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]
2018: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2019: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2020: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2021: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2022: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2023: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2024: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2025: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2026: [75000.0, 110000.0, 55000.0, 75000.0, 75000.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Child/Dependent Credits — Child Tax Credit
tc Name: CTC_prt
Title: Child and dependent tax credit phaseout rate
Description: The amount of the credit starts to decrease at this rate if MAGI is higher than child tax credit phaseout start.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.05
2014: 0.05
2015: 0.05
2016: 0.05
2017: 0.05
2018: 0.05
2019: 0.05
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_c
TB Name: Maximum refundable additional child tax credit
Description: This refundable credit is applied to child dependents and phases out exactly like the CTC amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1000.0
2014: 1000.0
2015: 1000.0
2016: 1000.0
2017: 1000.0
2018: 1400.0
2019: 1400.0
2020: 1400.0
2021: 1400.0
2022: 1500.0
2023: 1500.0
2024: 1500.0
2025: 1600.0
2026: 1000.0
Valid Range: min = 0 and max = CTC_c
Out-of-Range Action: error

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_rt
TB Name: Additional Child Tax Credit rate
Description: This is the fraction of earnings used in calculating the ACTC, which is a partially refundable credit that supplements the CTC for some taxpayers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_rt_bonus_under5family
TB Name: Bonus additional child tax credit rate for families with qualifying children under 5
Description: For families with qualifying children under 5 years old, this bonus rate is added to the fraction of earnings (additional child tax credit rate) used in calculating the ACTC.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_Income_thd
TB Name: Additional Child Tax Credit income threshold
Description: The portion of earned income below this threshold does not count as base for the Additional Child Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 3000.0
2014: 3000.0
2015: 3000.0
2016: 3000.0
2017: 3000.0
2018: 2500.0
2019: 2500.0
2020: 2500.0
2021: 2500.0
2022: 2500.0
2023: 2500.0
2024: 2500.0
2025: 2500.0
2026: 3000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_ChildNum
TB Name: Additional Child Tax Credit minimum number of qualified children for different formula
Description: Families with this number of qualified children or more may qualify for a different formula to calculate the Additional Child Tax Credit, which is a partially refundable credit that supplements the Child Tax Credit for some taxpayers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: int
Known Values:
2013: 3
Valid Range: min = 0 and max = 99
Out-of-Range Action: error

+

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_c
Title: Maximum refundable additional child tax credit
Description: This refundable credit is applied to child dependents and phases out exactly like the CTC amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1000.0
2014: 1000.0
2015: 1000.0
2016: 1000.0
2017: 1000.0
2018: 1400.0
2019: 1400.0
2020: 1400.0
2021: 1400.0
2022: 1500.0
2023: 1500.0
2024: 1500.0
2025: 1600.0
2026: 1000.0
Valid Range: min = 0 and max = CTC_c
Out-of-Range Action: error

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_rt
Title: Additional Child Tax Credit rate
Description: This is the fraction of earnings used in calculating the ACTC, which is a partially refundable credit that supplements the CTC for some taxpayers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.15
2019: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_rt_bonus_under5family
Title: Bonus additional child tax credit rate for families with qualifying children under 5
Description: For families with qualifying children under 5 years old, this bonus rate is added to the fraction of earnings (additional child tax credit rate) used in calculating the ACTC.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_Income_thd
Title: Additional Child Tax Credit income threshold
Description: The portion of earned income below this threshold does not count as base for the Additional Child Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 3000.0
2014: 3000.0
2015: 3000.0
2016: 3000.0
2017: 3000.0
2018: 2500.0
2019: 2500.0
2020: 2500.0
2021: 2500.0
2022: 2500.0
2023: 2500.0
2024: 2500.0
2025: 2500.0
2026: 3000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Child/Dependent Credits — Additional Child Tax Credit
tc Name: ACTC_ChildNum
Title: Additional Child Tax Credit minimum number of qualified children for different formula
Description: Families with this number of qualified children or more may qualify for a different formula to calculate the Additional Child Tax Credit, which is a partially refundable credit that supplements the Child Tax Credit for some taxpayers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: int
Known Values:
2013: 3
2014: 3
2015: 3
2016: 3
2017: 3
2018: 3
2019: 3
Valid Range: min = 0 and max = 99
Out-of-Range Action: error

-

Child/Dependent Credits — Other Dependent Tax Credit
tc Name: ODC_c
TB Name: Maximum nonrefundable other-dependent credit
Description: This nonrefundable credit is applied to non-child dependents and phases out along with the CTC amount.
Notes: Became current-law policy with passage of TCJA
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 500.0
2019: 500.0
2020: 500.0
2021: 500.0
2022: 500.0
2023: 500.0
2024: 500.0
2025: 500.0
2026: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Child/Dependent Credits — Other Dependent Tax Credit
tc Name: ODC_c
Title: Maximum nonrefundable other-dependent credit
Description: This nonrefundable credit is applied to non-child dependents and phases out along with the CTC amount.
Notes: Became current-law policy with passage of TCJA
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 500.0
2019: 500.0
2020: 500.0
2021: 500.0
2022: 500.0
2023: 500.0
2024: 500.0
2025: 500.0
2026: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

3i. Itemized Deductions

-

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_frt
TB Name: Floor (as a decimal fraction of AGI) for deductible medical expenses.
Description: Taxpayers are eligible to deduct the portion of their medical expenses exceeding this fraction of AGI.
Notes: When using PUF data, lowering this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.075
2018: 0.075
2019: 0.075
Valid Range: min = 0.075 and max = 0.1
Out-of-Range Action: warn

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_frt_add4aged
TB Name: Addon floor (as a decimal fraction of AGI) for deductible medical expenses for elderly filing units.
Description: Elderly taxpayers have this fraction added to the value of the regular floor rate for deductible medical expenses. This fraction was -0.025 from 2013 to 2016, but that was temporary and it changed to zero beginning in 2017.
Notes: When using PUF data, changing this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: -0.025
2014: -0.025
2015: -0.025
2016: -0.025
2017: 0.0
Valid Range: min = -0.025 and max = 0.0
Out-of-Range Action: warn

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_hc
TB Name: Medical expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of medical expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_c
TB Name: Ceiling on the amount of medical expense deduction allowed (dollars)
Description: The amount of medical expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_frt
Title: Floor (as a decimal fraction of AGI) for deductible medical expenses.
Description: Taxpayers are eligible to deduct the portion of their medical expenses exceeding this fraction of AGI.
Notes: When using PUF data, lowering this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.075
2018: 0.075
2019: 0.075
2020: 0.075
2021: 0.075
2022: 0.075
2023: 0.075
2024: 0.075
2025: 0.075
2026: 0.075
Valid Range: min = 0.075 and max = 0.1
Out-of-Range Action: warn

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_frt_add4aged
Title: Addon floor (as a decimal fraction of AGI) for deductible medical expenses for elderly filing units.
Description: Elderly taxpayers have this fraction added to the value of the regular floor rate for deductible medical expenses. This fraction was -0.025 from 2013 to 2016, but that was temporary and it changed to zero beginning in 2017.
Notes: When using PUF data, changing this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: -0.025
2014: -0.025
2015: -0.025
2016: -0.025
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = -0.025 and max = 0.0
Out-of-Range Action: warn

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_hc
Title: Medical expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of medical expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Medical Expenses
tc Name: ID_Medical_c
Title: Ceiling on the amount of medical expense deduction allowed (dollars)
Description: The amount of medical expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — State And Local Income And Sales Taxes
tc Name: ID_StateLocalTax_hc
TB Name: State and local income and sales taxes deduction haircut.
Description: This decimal fraction reduces the state and local income and sales tax deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — State And Local Income And Sales Taxes
tc Name: ID_StateLocalTax_crt
TB Name: Ceiling (as a decimal fraction of AGI) for the combination of all state and local income and sales tax deductions.
Description: The total deduction for state and local taxes is capped at this fraction of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — State And Local Income And Sales Taxes
tc Name: ID_StateLocalTax_c
TB Name: Ceiling on the amount of state and local income and sales taxes deduction allowed (dollars)
Description: The amount of state and local income and sales taxes deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Itemized Deductions — State And Local Income And Sales Taxes
tc Name: ID_StateLocalTax_hc
Title: State and local income and sales taxes deduction haircut.
Description: This decimal fraction reduces the state and local income and sales tax deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — State And Local Income And Sales Taxes
tc Name: ID_StateLocalTax_crt
Title: Ceiling (as a decimal fraction of AGI) for the combination of all state and local income and sales tax deductions.
Description: The total deduction for state and local taxes is capped at this fraction of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
2014: 9e+99
2015: 9e+99
2016: 9e+99
2017: 9e+99
2018: 9e+99
2019: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — State And Local Income And Sales Taxes
tc Name: ID_StateLocalTax_c
Title: Ceiling on the amount of state and local income and sales taxes deduction allowed (dollars)
Description: The amount of state and local income and sales taxes deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — State, Local, And Foreign Real Estate Taxes
tc Name: ID_RealEstate_hc
TB Name: State, local, and foreign real estate taxes deduction haircut.
Description: This decimal fraction reduces real estate taxes paid eligible to deduct in itemized deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — State, Local, And Foreign Real Estate Taxes
tc Name: ID_RealEstate_crt
TB Name: Ceiling (as a decimal fraction of AGI) for the combination of all state, local, and foreign real estate tax deductions.
Description: The total deduction for all real estate taxes is capped at this fraction of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — State, Local, And Foreign Real Estate Taxes
tc Name: ID_RealEstate_c
TB Name: Ceiling on the amount of state, local, and foreign real estate taxes deduction allowed (dollars)
Description: The amount of real estate taxes deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Itemized Deductions — State, Local, And Foreign Real Estate Taxes
tc Name: ID_RealEstate_hc
Title: State, local, and foreign real estate taxes deduction haircut.
Description: This decimal fraction reduces real estate taxes paid eligible to deduct in itemized deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — State, Local, And Foreign Real Estate Taxes
tc Name: ID_RealEstate_crt
Title: Ceiling (as a decimal fraction of AGI) for the combination of all state, local, and foreign real estate tax deductions.
Description: The total deduction for all real estate taxes is capped at this fraction of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
2014: 9e+99
2015: 9e+99
2016: 9e+99
2017: 9e+99
2018: 9e+99
2019: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — State, Local, And Foreign Real Estate Taxes
tc Name: ID_RealEstate_c
Title: Ceiling on the amount of state, local, and foreign real estate taxes deduction allowed (dollars)
Description: The amount of real estate taxes deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — State And Local Taxes And Real Estate Taxes
tc Name: ID_AllTaxes_hc
TB Name: State and local income, sales, and real estate tax deduction haircut.
Description: This decimal fraction reduces all state and local taxes paid eligible to deduct in itemized deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — State And Local Taxes And Real Estate Taxes
tc Name: ID_AllTaxes_c
TB Name: Ceiling on the amount of state and local income, sales and real estate tax deductions allowed (dollars)
Description: The amount of state and local income, sales and real estate tax deductions is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 10000.0 MARS=single
2018: 10000.0 MARS=mjoint
2018: 5000.0 MARS=mseparate
2018: 10000.0 MARS=headhh
2018: 10000.0 MARS=widow
2019: 10000.0 MARS=single
2019: 10000.0 MARS=mjoint
2019: 5000.0 MARS=mseparate
2019: 10000.0 MARS=headhh
2019: 10000.0 MARS=widow
2020: 10000.0 MARS=single
2020: 10000.0 MARS=mjoint
2020: 5000.0 MARS=mseparate
2020: 10000.0 MARS=headhh
2020: 10000.0 MARS=widow
2021: 10000.0 MARS=single
2021: 10000.0 MARS=mjoint
2021: 5000.0 MARS=mseparate
2021: 10000.0 MARS=headhh
2021: 10000.0 MARS=widow
2022: 10000.0 MARS=single
2022: 10000.0 MARS=mjoint
2022: 5000.0 MARS=mseparate
2022: 10000.0 MARS=headhh
2022: 10000.0 MARS=widow
2023: 10000.0 MARS=single
2023: 10000.0 MARS=mjoint
2023: 5000.0 MARS=mseparate
2023: 10000.0 MARS=headhh
2023: 10000.0 MARS=widow
2024: 10000.0 MARS=single
2024: 10000.0 MARS=mjoint
2024: 5000.0 MARS=mseparate
2024: 10000.0 MARS=headhh
2024: 10000.0 MARS=widow
2025: 10000.0 MARS=single
2025: 10000.0 MARS=mjoint
2025: 5000.0 MARS=mseparate
2025: 10000.0 MARS=headhh
2025: 10000.0 MARS=widow
2026: 9e+99 MARS=single
2026: 9e+99 MARS=mjoint
2026: 9e+99 MARS=mseparate
2026: 9e+99 MARS=headhh
2026: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Itemized Deductions — State And Local Taxes And Real Estate Taxes
tc Name: ID_AllTaxes_hc
Title: State and local income, sales, and real estate tax deduction haircut.
Description: This decimal fraction reduces all state and local taxes paid eligible to deduct in itemized deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — State And Local Taxes And Real Estate Taxes
tc Name: ID_AllTaxes_c
Title: Ceiling on the amount of state and local income, sales and real estate tax deductions allowed (dollars)
Description: The amount of state and local income, sales and real estate tax deductions is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2019: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2020: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2021: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2022: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2023: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2024: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2025: [10000.0, 10000.0, 5000.0, 10000.0, 10000.0]
2026: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — Interest Paid
tc Name: ID_InterestPaid_hc
TB Name: Interest paid deduction haircut
Description: This decimal fraction can be applied to limit the amount of interest paid deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Interest Paid
tc Name: ID_InterestPaid_c
TB Name: Ceiling on the amount of interest paid deduction allowed (dollars)
Description: The amount of interest paid deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Itemized Deductions — Interest Paid
tc Name: ID_InterestPaid_hc
Title: Interest paid deduction haircut
Description: This decimal fraction can be applied to limit the amount of interest paid deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Interest Paid
tc Name: ID_InterestPaid_c
Title: Ceiling on the amount of interest paid deduction allowed (dollars)
Description: The amount of interest paid deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — Charity
tc Name: ID_Charity_crt_all
TB Name: Ceiling (as a decimal fraction of AGI) for all charitable contribution deductions
Description: The total deduction for charity is capped at this fraction of AGI.
Notes: When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.5
2014: 0.5
2015: 0.5
2016: 0.5
2017: 0.5
2018: 0.6
2019: 0.6
2020: 0.6
2021: 0.6
2022: 0.6
2023: 0.6
2024: 0.6
2025: 0.6
2026: 0.5
Valid Range: min = 0 and max = 0.6
Out-of-Range Action: warn

Itemized Deductions — Charity
tc Name: ID_Charity_crt_noncash
TB Name: Ceiling (as a decimal fraction of AGI) for noncash charitable contribution deductions
Description: The deduction for noncash charity contributions is capped at this fraction of AGI.
Notes: When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.3
Valid Range: min = 0 and max = 0.3
Out-of-Range Action: warn

Itemized Deductions — Charity
tc Name: ID_Charity_frt
TB Name: Floor (as a decimal fraction of AGI) for deductible charitable contributions.
Description: Taxpayers are eligible to deduct the portion of their charitable expense exceeding this fraction of AGI.
Notes: This parameter allows for implementation of Option 52 from https://www.cbo.gov/sites/default/files/cbofiles/attachments/49638-BudgetOptions.pdf.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Charity
tc Name: ID_Charity_hc
TB Name: Charity expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of charity expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Charity
tc Name: ID_Charity_c
TB Name: Ceiling on the amount of charity expense deduction allowed (dollars)
Description: The amount of charity expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Charity
tc Name: ID_Charity_f
TB Name: Floor on the amount of charity expense deduction allowed (dollars)
Description: Only charitable giving in excess of this dollar amount is eligible for a deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Itemized Deductions — Charity
tc Name: ID_Charity_crt_all
Title: Ceiling (as a decimal fraction of AGI) for all charitable contribution deductions
Description: The total deduction for charity is capped at this fraction of AGI.
Notes: When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.5
2014: 0.5
2015: 0.5
2016: 0.5
2017: 0.5
2018: 0.6
2019: 0.6
2020: 0.6
2021: 0.6
2022: 0.6
2023: 0.6
2024: 0.6
2025: 0.6
2026: 0.5
Valid Range: min = 0 and max = 0.6
Out-of-Range Action: warn

Itemized Deductions — Charity
tc Name: ID_Charity_crt_noncash
Title: Ceiling (as a decimal fraction of AGI) for noncash charitable contribution deductions
Description: The deduction for noncash charity contributions is capped at this fraction of AGI.
Notes: When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.3
2014: 0.3
2015: 0.3
2016: 0.3
2017: 0.3
2018: 0.3
2019: 0.3
Valid Range: min = 0 and max = 0.3
Out-of-Range Action: warn

Itemized Deductions — Charity
tc Name: ID_Charity_frt
Title: Floor (as a decimal fraction of AGI) for deductible charitable contributions.
Description: Taxpayers are eligible to deduct the portion of their charitable expense exceeding this fraction of AGI.
Notes: This parameter allows for implementation of Option 52 from https://www.cbo.gov/sites/default/files/cbofiles/attachments/49638-BudgetOptions.pdf.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Charity
tc Name: ID_Charity_hc
Title: Charity expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of charity expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Charity
tc Name: ID_Charity_c
Title: Ceiling on the amount of charity expense deduction allowed (dollars)
Description: The amount of charity expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Charity
tc Name: ID_Charity_f
Title: Floor on the amount of charity expense deduction allowed (dollars)
Description: Only charitable giving in excess of this dollar amount is eligible for a deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — Casualty
tc Name: ID_Casualty_frt
TB Name: Floor (as a decimal fraction of AGI) for deductible casualty loss.
Description: Taxpayers are eligible to deduct the portion of their gross casualty losses exceeding this fraction of AGI.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.1
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Casualty
tc Name: ID_Casualty_hc
TB Name: Casualty expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of casualty expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Casualty
tc Name: ID_Casualty_c
TB Name: Ceiling on the amount of casualty expense deduction allowed (dollars)
Description: The amount of casualty expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Itemized Deductions — Casualty
tc Name: ID_Casualty_frt
Title: Floor (as a decimal fraction of AGI) for deductible casualty loss.
Description: Taxpayers are eligible to deduct the portion of their gross casualty losses exceeding this fraction of AGI.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.1
2018: 0.1
2019: 0.1
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Casualty
tc Name: ID_Casualty_hc
Title: Casualty expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of casualty expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Casualty
tc Name: ID_Casualty_c
Title: Ceiling on the amount of casualty expense deduction allowed (dollars)
Description: The amount of casualty expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — Miscellaneous
tc Name: ID_Miscellaneous_frt
TB Name: Floor (as a decimal fraction of AGI) for deductible miscellaneous expenses.
Description: Taxpayers are eligible to deduct the portion of their miscellaneous expense exceeding this fraction of AGI.
Notes: When using PUF data, lowering this parameter value may produce unexpected results because in PUF data the variable e20400 is zero below the floor.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.02
Valid Range: min = 0.02 and max = 1
Out-of-Range Action: warn

Itemized Deductions — Miscellaneous
tc Name: ID_Miscellaneous_hc
TB Name: Miscellaneous expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of miscellaneous expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Miscellaneous
tc Name: ID_Miscellaneous_c
TB Name: Ceiling on the amount of miscellaneous expense deduction allowed (dollars)
Description: The amount of miscellaneous expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Itemized Deductions — Miscellaneous
tc Name: ID_Miscellaneous_frt
Title: Floor (as a decimal fraction of AGI) for deductible miscellaneous expenses.
Description: Taxpayers are eligible to deduct the portion of their miscellaneous expense exceeding this fraction of AGI.
Notes: When using PUF data, lowering this parameter value may produce unexpected results because in PUF data the variable e20400 is zero below the floor.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.02
2014: 0.02
2015: 0.02
2016: 0.02
2017: 0.02
2018: 0.02
2019: 0.02
Valid Range: min = 0.02 and max = 1
Out-of-Range Action: warn

Itemized Deductions — Miscellaneous
tc Name: ID_Miscellaneous_hc
Title: Miscellaneous expense deduction haircut
Description: This decimal fraction can be applied to limit the amount of miscellaneous expense deduction allowed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Miscellaneous
tc Name: ID_Miscellaneous_c
Title: Ceiling on the amount of miscellaneous expense deduction allowed (dollars)
Description: The amount of miscellaneous expense deduction is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Itemized Deductions — Itemized Deduction Limitation
tc Name: ID_ps
TB Name: Itemized deduction phaseout AGI start (Pease provision)
Description: The itemized deductions will be reduced for taxpayers with AGI higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 250000.0 MARS=single
2013: 300000.0 MARS=mjoint
2013: 150000.0 MARS=mseparate
2013: 275000.0 MARS=headhh
2013: 300000.0 MARS=widow
2014: 254200.0 MARS=single
2014: 305050.0 MARS=mjoint
2014: 152525.0 MARS=mseparate
2014: 279650.0 MARS=headhh
2014: 305050.0 MARS=widow
2015: 258250.0 MARS=single
2015: 309900.0 MARS=mjoint
2015: 154950.0 MARS=mseparate
2015: 284050.0 MARS=headhh
2015: 309900.0 MARS=widow
2016: 259400.0 MARS=single
2016: 311300.0 MARS=mjoint
2016: 155650.0 MARS=mseparate
2016: 285350.0 MARS=headhh
2016: 311300.0 MARS=widow
2017: 261500.0 MARS=single
2017: 313800.0 MARS=mjoint
2017: 156900.0 MARS=mseparate
2017: 287650.0 MARS=headhh
2017: 313800.0 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
2020: 9e+99 MARS=single
2020: 9e+99 MARS=mjoint
2020: 9e+99 MARS=mseparate
2020: 9e+99 MARS=headhh
2020: 9e+99 MARS=widow
2021: 9e+99 MARS=single
2021: 9e+99 MARS=mjoint
2021: 9e+99 MARS=mseparate
2021: 9e+99 MARS=headhh
2021: 9e+99 MARS=widow
2022: 9e+99 MARS=single
2022: 9e+99 MARS=mjoint
2022: 9e+99 MARS=mseparate
2022: 9e+99 MARS=headhh
2022: 9e+99 MARS=widow
2023: 9e+99 MARS=single
2023: 9e+99 MARS=mjoint
2023: 9e+99 MARS=mseparate
2023: 9e+99 MARS=headhh
2023: 9e+99 MARS=widow
2024: 9e+99 MARS=single
2024: 9e+99 MARS=mjoint
2024: 9e+99 MARS=mseparate
2024: 9e+99 MARS=headhh
2024: 9e+99 MARS=widow
2025: 9e+99 MARS=single
2025: 9e+99 MARS=mjoint
2025: 9e+99 MARS=mseparate
2025: 9e+99 MARS=headhh
2025: 9e+99 MARS=widow
2026: 315093.0 MARS=single
2026: 378112.0 MARS=mjoint
2026: 189056.0 MARS=mseparate
2026: 346603.0 MARS=headhh
2026: 378112.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Itemized Deduction Limitation
tc Name: ID_prt
TB Name: Itemized deduction phaseout rate (Pease provision)
Description: Taxpayers will not be eligible to deduct the full amount of itemized deduction if their AGI is above the phaseout start. The deductible portion would be decreased at this rate for each dollar exceeding the start.
Notes: This phaseout rate cannot be lower than 0.03 for each dollar, due to limited data on non-itemizers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.03
2014: 0.03
2015: 0.03
2016: 0.03
2017: 0.03
2018: 0.0
2019: 0.0
2020: 0.0
2021: 0.0
2022: 0.0
2023: 0.0
2024: 0.0
2025: 0.0
2026: 0.03
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Itemized Deduction Limitation
tc Name: ID_crt
TB Name: Itemized deduction maximum phaseout as a decimal fraction of total itemized deductions (Pease provision)
Description: The phaseout amount is capped at this fraction of the original total deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.8
2014: 0.8
2015: 0.8
2016: 0.8
2017: 0.8
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.8
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Itemized Deductions — Itemized Deduction Limitation
tc Name: ID_ps
Title: Itemized deduction phaseout AGI start (Pease provision)
Description: The itemized deductions will be reduced for taxpayers with AGI higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [250000.0, 300000.0, 150000.0, 275000.0, 300000.0]
2014: [254200.0, 305050.0, 152525.0, 279650.0, 305050.0]
2015: [258250.0, 309900.0, 154950.0, 284050.0, 309900.0]
2016: [259400.0, 311300.0, 155650.0, 285350.0, 311300.0]
2017: [261500.0, 313800.0, 156900.0, 287650.0, 313800.0]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2020: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2021: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2022: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2023: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2024: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2025: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2026: [315093.0, 378112.0, 189056.0, 346603.0, 378112.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Itemized Deduction Limitation
tc Name: ID_prt
Title: Itemized deduction phaseout rate (Pease provision)
Description: Taxpayers will not be eligible to deduct the full amount of itemized deduction if their AGI is above the phaseout start. The deductible portion would be decreased at this rate for each dollar exceeding the start.
Notes: This phaseout rate cannot be lower than 0.03 for each dollar, due to limited data on non-itemizers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.03
2014: 0.03
2015: 0.03
2016: 0.03
2017: 0.03
2018: 0.0
2019: 0.0
2020: 0.0
2021: 0.0
2022: 0.0
2023: 0.0
2024: 0.0
2025: 0.0
2026: 0.03
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Itemized Deduction Limitation
tc Name: ID_crt
Title: Itemized deduction maximum phaseout as a decimal fraction of total itemized deductions (Pease provision)
Description: The phaseout amount is capped at this fraction of the original total deduction.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.8
2014: 0.8
2015: 0.8
2016: 0.8
2017: 0.8
2018: 1.0
2019: 1.0
2020: 1.0
2021: 1.0
2022: 1.0
2023: 1.0
2024: 1.0
2025: 1.0
2026: 0.8
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_trt
TB Name: Surtax rate on the benefits from specified itemized deductions
Description: The benefit from specified itemized deductions exceeding the credit is taxed at this rate. A surtax rate of 1 strictly limits the benefit from specified itemized deductions to the specified credit. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_crt
TB Name: Credit on itemized deduction benefit surtax (decimal fraction of AGI)
Description: The surtax on specified itemized deductions applies to benefits in excess of this fraction of AGI. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_em
TB Name: Exemption for itemized deduction benefit surtax (dollar AGI threshold)
Description: This amount is subtracted from itemized deduction benefits in the calculation of the itemized deduction benefit surtax. With ID_BenefitSurtax_crt set to 0.0 and ID_BenefitSurtax_trt set to 1.0, this amount serves as a dollar limit on the value of itemized deductions.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 0.0 MARS=single
2018: 0.0 MARS=mjoint
2018: 0.0 MARS=mseparate
2018: 0.0 MARS=headhh
2018: 0.0 MARS=widow
2019: 0.0 MARS=single
2019: 0.0 MARS=mjoint
2019: 0.0 MARS=mseparate
2019: 0.0 MARS=headhh
2019: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_Switch
TB Name: Deductions subject to the surtax on itemized deduction benefits
Description: The surtax on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: True idedtype=med
2013: True idedtype=sltx
2013: True idedtype=retx
2013: True idedtype=cas
2013: True idedtype=misc
2013: True idedtype=int
2013: True idedtype=char
Valid Range: min = False and max = True
Out-of-Range Action: error

+

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_trt
Title: Surtax rate on the benefits from specified itemized deductions
Description: The benefit from specified itemized deductions exceeding the credit is taxed at this rate. A surtax rate of 1 strictly limits the benefit from specified itemized deductions to the specified credit. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_crt
Title: Credit on itemized deduction benefit surtax (decimal fraction of AGI)
Description: The surtax on specified itemized deductions applies to benefits in excess of this fraction of AGI. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_em
Title: Exemption for itemized deduction benefit surtax (dollar AGI threshold)
Description: This amount is subtracted from itemized deduction benefits in the calculation of the itemized deduction benefit surtax. With ID_BenefitSurtax_crt set to 0.0 and ID_BenefitSurtax_trt set to 1.0, this amount serves as a dollar limit on the value of itemized deductions.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Surtax On Itemized Deduction Benefits Above An AGI Threshold
tc Name: ID_BenefitSurtax_Switch
Title: Deductions subject to the surtax on itemized deduction benefits
Description: The surtax on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
   for: [med, sltx, retx, cas, misc, int, char]
2013: [True, True, True, True, True, True, True]
2014: [True, True, True, True, True, True, True]
2015: [True, True, True, True, True, True, True]
2016: [True, True, True, True, True, True, True]
2017: [True, True, True, True, True, True, True]
2018: [True, True, True, True, True, True, True]
2019: [True, True, True, True, True, True, True]
Valid Range: min = False and max = True
Out-of-Range Action: error

-

Itemized Deductions — Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses
tc Name: ID_BenefitCap_rt
TB Name: Ceiling on the benefits from itemized deductions; decimal fraction of total deductible expenses
Description: The benefit from specified itemized deductions is capped at this percent of the total deductible expenses.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses
tc Name: ID_BenefitCap_Switch
TB Name: Deductions subject to the cap on itemized deduction benefits
Description: The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: True idedtype=med
2013: True idedtype=sltx
2013: True idedtype=retx
2013: True idedtype=cas
2013: True idedtype=misc
2013: True idedtype=int
2013: True idedtype=char
Valid Range: min = False and max = True
Out-of-Range Action: error

+

Itemized Deductions — Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses
tc Name: ID_BenefitCap_rt
Title: Ceiling on the benefits from itemized deductions; decimal fraction of total deductible expenses
Description: The benefit from specified itemized deductions is capped at this percent of the total deductible expenses.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Itemized Deductions — Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses
tc Name: ID_BenefitCap_Switch
Title: Deductions subject to the cap on itemized deduction benefits
Description: The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
   for: [med, sltx, retx, cas, misc, int, char]
2013: [True, True, True, True, True, True, True]
2014: [True, True, True, True, True, True, True]
2015: [True, True, True, True, True, True, True]
2016: [True, True, True, True, True, True, True]
2017: [True, True, True, True, True, True, True]
2018: [True, True, True, True, True, True, True]
2019: [True, True, True, True, True, True, True]
Valid Range: min = False and max = True
Out-of-Range Action: error

-

Itemized Deductions — Ceiling On The Amount Of Itemized Deductions Allowed
tc Name: ID_c
TB Name: Ceiling on the amount of itemized deductions allowed (dollars)
Description: The amount of itemized deductions is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Ceiling On The Amount Of Itemized Deductions Allowed
tc Name: ID_AmountCap_rt
TB Name: Ceiling on the gross amount of itemized deductions allowed; decimal fraction of AGI
Description: The gross allowable amount of specified itemized deductions is capped at this percent of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Ceiling On The Amount Of Itemized Deductions Allowed
tc Name: ID_AmountCap_Switch
TB Name: Deductions subject to the cap on itemized deduction benefits
Description: The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: True idedtype=med
2013: True idedtype=sltx
2013: True idedtype=retx
2013: True idedtype=cas
2013: True idedtype=misc
2013: True idedtype=int
2013: True idedtype=char
Valid Range: min = False and max = True
Out-of-Range Action: error

+

Itemized Deductions — Ceiling On The Amount Of Itemized Deductions Allowed
tc Name: ID_c
Title: Ceiling on the amount of itemized deductions allowed (dollars)
Description: The amount of itemized deductions is limited to this dollar amount.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Ceiling On The Amount Of Itemized Deductions Allowed
tc Name: ID_AmountCap_rt
Title: Ceiling on the gross amount of itemized deductions allowed; decimal fraction of AGI
Description: The gross allowable amount of specified itemized deductions is capped at this percent of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
2014: 9e+99
2015: 9e+99
2016: 9e+99
2017: 9e+99
2018: 9e+99
2019: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Itemized Deductions — Ceiling On The Amount Of Itemized Deductions Allowed
tc Name: ID_AmountCap_Switch
Title: Deductions subject to the cap on itemized deduction benefits
Description: The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
   for: [med, sltx, retx, cas, misc, int, char]
2013: [True, True, True, True, True, True, True]
2014: [True, True, True, True, True, True, True]
2015: [True, True, True, True, True, True, True]
2016: [True, True, True, True, True, True, True]
2017: [True, True, True, True, True, True, True]
2018: [True, True, True, True, True, True, True]
2019: [True, True, True, True, True, True, True]
Valid Range: min = False and max = True
Out-of-Range Action: error

3j. Capital Gains And Dividends

-

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt1
TB Name: Long term capital gain and qualified dividends (regular/non-AMT) rate 1
Description: The capital gain and dividends (stacked on top of regular income) that are below threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_brk1
TB Name: Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 1
Description: The gains and dividends (stacked on top of regular income) below this are taxed at capital gain rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 36250.0 MARS=single
2013: 72500.0 MARS=mjoint
2013: 36250.0 MARS=mseparate
2013: 48600.0 MARS=headhh
2013: 72500.0 MARS=widow
2014: 36900.0 MARS=single
2014: 73800.0 MARS=mjoint
2014: 36900.0 MARS=mseparate
2014: 49400.0 MARS=headhh
2014: 73800.0 MARS=widow
2015: 37450.0 MARS=single
2015: 74900.0 MARS=mjoint
2015: 37450.0 MARS=mseparate
2015: 50200.0 MARS=headhh
2015: 74900.0 MARS=widow
2016: 37650.0 MARS=single
2016: 75300.0 MARS=mjoint
2016: 37650.0 MARS=mseparate
2016: 50400.0 MARS=headhh
2016: 75300.0 MARS=widow
2017: 37950.0 MARS=single
2017: 75900.0 MARS=mjoint
2017: 37950.0 MARS=mseparate
2017: 50800.0 MARS=headhh
2017: 75900.0 MARS=widow
2018: 38600.0 MARS=single
2018: 77200.0 MARS=mjoint
2018: 38600.0 MARS=mseparate
2018: 51700.0 MARS=headhh
2018: 77200.0 MARS=widow
2019: 39375.0 MARS=single
2019: 78750.0 MARS=mjoint
2019: 39375.0 MARS=mseparate
2019: 52750.0 MARS=headhh
2019: 78750.0 MARS=widow
Valid Range: min = 0 and max = CG_brk2
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt2
TB Name: Long term capital gain and qualified dividends (regular/non-AMT) rate 2
Description: The capital gain and dividends (stacked on top of regular income) that are below threshold 2 and above threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_brk2
TB Name: Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 2
Description: The gains and dividends (stacked on top of regular income) below this and above top of bracket 1 are taxed at capital gain rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 400000.0 MARS=single
2013: 450000.0 MARS=mjoint
2013: 225000.0 MARS=mseparate
2013: 425000.0 MARS=headhh
2013: 450000.0 MARS=widow
2014: 406750.0 MARS=single
2014: 457600.0 MARS=mjoint
2014: 228800.0 MARS=mseparate
2014: 432200.0 MARS=headhh
2014: 457600.0 MARS=widow
2015: 413200.0 MARS=single
2015: 464850.0 MARS=mjoint
2015: 232425.0 MARS=mseparate
2015: 439000.0 MARS=headhh
2015: 464850.0 MARS=widow
2016: 415050.0 MARS=single
2016: 466950.0 MARS=mjoint
2016: 233475.0 MARS=mseparate
2016: 441000.0 MARS=headhh
2016: 466950.0 MARS=widow
2017: 418400.0 MARS=single
2017: 470700.0 MARS=mjoint
2017: 235350.0 MARS=mseparate
2017: 444550.0 MARS=headhh
2017: 470700.0 MARS=widow
2018: 425800.0 MARS=single
2018: 479000.0 MARS=mjoint
2018: 239500.0 MARS=mseparate
2018: 452400.0 MARS=headhh
2018: 479000.0 MARS=widow
2019: 434550.0 MARS=single
2019: 488850.0 MARS=mjoint
2019: 244425.0 MARS=mseparate
2019: 461700.0 MARS=headhh
2019: 488850.0 MARS=widow
Valid Range: min = CG_brk1 and max = CG_brk3
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt3
TB Name: Long term capital gain and qualified dividends (regular/non-AMT) rate 3
Description: The capital gain and dividends (stacked on top of regular income) that are above threshold 2 and below threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.2
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_brk3
TB Name: Top of long-term capital gains and qualified dividend tax (regular/non-AMT) bracket 3
Description: The gains and dividends (stacked on top of regular income) below this and above top of bracket 2 are taxed at the capital gain rate 3; above this they are taxed at capital gain rate 4. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = CG_brk2 and max = 9e+99
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt4
TB Name: Long term capital gain and qualified dividends (regular/non-AMT) rate 4
Description: The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt1
Title: Long term capital gain and qualified dividends (regular/non-AMT) rate 1
Description: The capital gain and dividends (stacked on top of regular income) that are below threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_brk1
Title: Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 1
Description: The gains and dividends (stacked on top of regular income) below this are taxed at capital gain rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [36250.0, 72500.0, 36250.0, 48600.0, 72500.0]
2014: [36900.0, 73800.0, 36900.0, 49400.0, 73800.0]
2015: [37450.0, 74900.0, 37450.0, 50200.0, 74900.0]
2016: [37650.0, 75300.0, 37650.0, 50400.0, 75300.0]
2017: [37950.0, 75900.0, 37950.0, 50800.0, 75900.0]
2018: [38600.0, 77200.0, 38600.0, 51700.0, 77200.0]
2019: [39375.0, 78750.0, 39375.0, 52750.0, 78750.0]
Valid Range: min = 0 and max = CG_brk2
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt2
Title: Long term capital gain and qualified dividends (regular/non-AMT) rate 2
Description: The capital gain and dividends (stacked on top of regular income) that are below threshold 2 and above threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.15
2019: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_brk2
Title: Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 2
Description: The gains and dividends (stacked on top of regular income) below this and above top of bracket 1 are taxed at capital gain rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [400000.0, 450000.0, 225000.0, 425000.0, 450000.0]
2014: [406750.0, 457600.0, 228800.0, 432200.0, 457600.0]
2015: [413200.0, 464850.0, 232425.0, 439000.0, 464850.0]
2016: [415050.0, 466950.0, 233475.0, 441000.0, 466950.0]
2017: [418400.0, 470700.0, 235350.0, 444550.0, 470700.0]
2018: [425800.0, 479000.0, 239500.0, 452400.0, 479000.0]
2019: [434550.0, 488850.0, 244425.0, 461700.0, 488850.0]
Valid Range: min = CG_brk1 and max = CG_brk3
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt3
Title: Long term capital gain and qualified dividends (regular/non-AMT) rate 3
Description: The capital gain and dividends (stacked on top of regular income) that are above threshold 2 and below threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.2
2014: 0.2
2015: 0.2
2016: 0.2
2017: 0.2
2018: 0.2
2019: 0.2
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_brk3
Title: Top of long-term capital gains and qualified dividend tax (regular/non-AMT) bracket 3
Description: The gains and dividends (stacked on top of regular income) below this and above top of bracket 2 are taxed at the capital gain rate 3; above this they are taxed at capital gain rate 4. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = CG_brk2 and max = 9e+99
Out-of-Range Action: error

Capital Gains And Dividends — Regular - Long Term Capital Gains And Qualified Dividends
tc Name: CG_rt4
Title: Long term capital gain and qualified dividends (regular/non-AMT) rate 4
Description: The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt1
TB Name: Long term capital gain and qualified dividends (AMT) rate 1
Description: Capital gain and qualified dividends (stacked on top of regular income) below threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_brk1
TB Name: Top of long-term capital gains and qualified dividends (AMT) tax bracket 1
Description: The gains and dividends, stacked last, of AMT taxable income below this are taxed at AMT capital gain rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 36250.0 MARS=single
2013: 72500.0 MARS=mjoint
2013: 36250.0 MARS=mseparate
2013: 48600.0 MARS=headhh
2013: 72500.0 MARS=widow
2014: 36900.0 MARS=single
2014: 73800.0 MARS=mjoint
2014: 36900.0 MARS=mseparate
2014: 49400.0 MARS=headhh
2014: 73800.0 MARS=widow
2015: 37450.0 MARS=single
2015: 74900.0 MARS=mjoint
2015: 37450.0 MARS=mseparate
2015: 50200.0 MARS=headhh
2015: 74900.0 MARS=widow
2016: 37650.0 MARS=single
2016: 75300.0 MARS=mjoint
2016: 37650.0 MARS=mseparate
2016: 50400.0 MARS=headhh
2016: 75300.0 MARS=widow
2017: 37950.0 MARS=single
2017: 75900.0 MARS=mjoint
2017: 37950.0 MARS=mseparate
2017: 50800.0 MARS=headhh
2017: 75900.0 MARS=widow
2018: 38600.0 MARS=single
2018: 77200.0 MARS=mjoint
2018: 38600.0 MARS=mseparate
2018: 51700.0 MARS=headhh
2018: 77200.0 MARS=widow
2019: 39375.0 MARS=single
2019: 78750.0 MARS=mjoint
2019: 39375.0 MARS=mseparate
2019: 52750.0 MARS=headhh
2019: 78750.0 MARS=widow
Valid Range: min = 0 and max = AMT_CG_brk2
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt2
TB Name: Long term capital gain and qualified dividends (AMT) rate 2
Description: Capital gain and qualified dividend (stacked on top of regular income) below threshold 2 and above threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_brk2
TB Name: Top of long-term capital gains and qualified dividends (AMT) tax bracket 2
Description: The gains and dividends, stacked last, of AMT taxable income below this threshold and above bracket 1 are taxed at AMT capital gain rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 400000.0 MARS=single
2013: 450000.0 MARS=mjoint
2013: 225000.0 MARS=mseparate
2013: 425000.0 MARS=headhh
2013: 450000.0 MARS=widow
2014: 406750.0 MARS=single
2014: 457600.0 MARS=mjoint
2014: 228800.0 MARS=mseparate
2014: 432200.0 MARS=headhh
2014: 457600.0 MARS=widow
2015: 413200.0 MARS=single
2015: 464850.0 MARS=mjoint
2015: 232425.0 MARS=mseparate
2015: 439000.0 MARS=headhh
2015: 464850.0 MARS=widow
2016: 415050.0 MARS=single
2016: 466950.0 MARS=mjoint
2016: 233475.0 MARS=mseparate
2016: 441000.0 MARS=headhh
2016: 466950.0 MARS=widow
2017: 418400.0 MARS=single
2017: 470700.0 MARS=mjoint
2017: 235350.0 MARS=mseparate
2017: 444550.0 MARS=headhh
2017: 470700.0 MARS=widow
2018: 425800.0 MARS=single
2018: 479000.0 MARS=mjoint
2018: 239500.0 MARS=mseparate
2018: 452400.0 MARS=headhh
2018: 479000.0 MARS=widow
2019: 434550.0 MARS=single
2019: 488850.0 MARS=mjoint
2019: 244425.0 MARS=mseparate
2019: 461700.0 MARS=headhh
2019: 488850.0 MARS=widow
Valid Range: min = AMT_CG_brk1 and max = AMT_CG_brk3
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt3
TB Name: Long term capital gain and qualified dividends (AMT) rate 3
Description: The capital gain and qualified dividend (stacked on top of regular income) above threshold 2 and below threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.2
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_brk3
TB Name: Long term capital gain and qualified dividends (AMT) threshold 3
Description: The gains and dividends, stacked last, of AMT taxable income below this and above bracket 2 are taxed at capital gain rate 3; above thisthey are taxed at AMT capital gain rate 4. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = AMT_CG_brk2 and max = 9e+99
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt4
TB Name: Long term capital gain and qualified dividends (AMT) rate 4
Description: The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt1
Title: Long term capital gain and qualified dividends (AMT) rate 1
Description: Capital gain and qualified dividends (stacked on top of regular income) below threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_brk1
Title: Top of long-term capital gains and qualified dividends (AMT) tax bracket 1
Description: The gains and dividends, stacked last, of AMT taxable income below this are taxed at AMT capital gain rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [36250.0, 72500.0, 36250.0, 48600.0, 72500.0]
2014: [36900.0, 73800.0, 36900.0, 49400.0, 73800.0]
2015: [37450.0, 74900.0, 37450.0, 50200.0, 74900.0]
2016: [37650.0, 75300.0, 37650.0, 50400.0, 75300.0]
2017: [37950.0, 75900.0, 37950.0, 50800.0, 75900.0]
2018: [38600.0, 77200.0, 38600.0, 51700.0, 77200.0]
2019: [39375.0, 78750.0, 39375.0, 52750.0, 78750.0]
Valid Range: min = 0 and max = AMT_CG_brk2
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt2
Title: Long term capital gain and qualified dividends (AMT) rate 2
Description: Capital gain and qualified dividend (stacked on top of regular income) below threshold 2 and above threshold 1 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.15
2019: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_brk2
Title: Top of long-term capital gains and qualified dividends (AMT) tax bracket 2
Description: The gains and dividends, stacked last, of AMT taxable income below this threshold and above bracket 1 are taxed at AMT capital gain rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [400000.0, 450000.0, 225000.0, 425000.0, 450000.0]
2014: [406750.0, 457600.0, 228800.0, 432200.0, 457600.0]
2015: [413200.0, 464850.0, 232425.0, 439000.0, 464850.0]
2016: [415050.0, 466950.0, 233475.0, 441000.0, 466950.0]
2017: [418400.0, 470700.0, 235350.0, 444550.0, 470700.0]
2018: [425800.0, 479000.0, 239500.0, 452400.0, 479000.0]
2019: [434550.0, 488850.0, 244425.0, 461700.0, 488850.0]
Valid Range: min = AMT_CG_brk1 and max = AMT_CG_brk3
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt3
Title: Long term capital gain and qualified dividends (AMT) rate 3
Description: The capital gain and qualified dividend (stacked on top of regular income) above threshold 2 and below threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.2
2014: 0.2
2015: 0.2
2016: 0.2
2017: 0.2
2018: 0.2
2019: 0.2
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_brk3
Title: Long term capital gain and qualified dividends (AMT) threshold 3
Description: The gains and dividends, stacked last, of AMT taxable income below this and above bracket 2 are taxed at capital gain rate 3; above thisthey are taxed at AMT capital gain rate 4. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = AMT_CG_brk2 and max = 9e+99
Out-of-Range Action: error

Capital Gains And Dividends — AMT - Long Term Capital Gains And Qualified Dividends
tc Name: AMT_CG_rt4
Title: Long term capital gain and qualified dividends (AMT) rate 4
Description: The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Capital Gains And Dividends — Tax All Capital Gains And Dividends The Same As Regular Taxable Income
tc Name: CG_nodiff
TB Name: Long term capital gains and qualified dividends taxed no differently than regular taxable income
Description: Specifies whether or not long term capital gains and qualified dividends are taxed like regular taxable income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Capital Gains And Dividends — Tax All Capital Gains And Dividends The Same As Regular Taxable Income
tc Name: CG_ec
TB Name: Dollar amount of all capital gains and qualified dividends that are excluded from AGI.
Description: Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Capital Gains And Dividends — Tax All Capital Gains And Dividends The Same As Regular Taxable Income
tc Name: CG_reinvest_ec_rt
TB Name: Fraction of all capital gains and qualified dividends in excess of the dollar exclusion that are excluded from AGI.
Description: Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income. To limit the exclusion to capital gains and dividends invested within one year, set to statutory exclusion rate times the fraction of capital gains and qualified dividends in excess of the exclusion that are assumed to be reinvested within the year.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Capital Gains And Dividends — Tax All Capital Gains And Dividends The Same As Regular Taxable Income
tc Name: CG_nodiff
Title: Long term capital gains and qualified dividends taxed no differently than regular taxable income
Description: Specifies whether or not long term capital gains and qualified dividends are taxed like regular taxable income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Capital Gains And Dividends — Tax All Capital Gains And Dividends The Same As Regular Taxable Income
tc Name: CG_ec
Title: Dollar amount of all capital gains and qualified dividends that are excluded from AGI.
Description: Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Capital Gains And Dividends — Tax All Capital Gains And Dividends The Same As Regular Taxable Income
tc Name: CG_reinvest_ec_rt
Title: Fraction of all capital gains and qualified dividends in excess of the dollar exclusion that are excluded from AGI.
Description: Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income. To limit the exclusion to capital gains and dividends invested within one year, set to statutory exclusion rate times the fraction of capital gains and qualified dividends in excess of the exclusion that are assumed to be reinvested within the year.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

3k. Personal Income

-

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt1
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 1
Description: The lowest tax rate, applied to the portion of taxable income below tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.1
2018: 0.1
2019: 0.1
2020: 0.1
2021: 0.1
2022: 0.1
2023: 0.1
2024: 0.1
2025: 0.1
2026: 0.1
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk1
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1
Description: Taxable income below this threshold is taxed at tax rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 8925.0 MARS=single
2013: 17850.0 MARS=mjoint
2013: 8925.0 MARS=mseparate
2013: 12750.0 MARS=headhh
2013: 17850.0 MARS=widow
2014: 9075.0 MARS=single
2014: 18150.0 MARS=mjoint
2014: 9075.0 MARS=mseparate
2014: 12950.0 MARS=headhh
2014: 18150.0 MARS=widow
2015: 9225.0 MARS=single
2015: 18450.0 MARS=mjoint
2015: 9225.0 MARS=mseparate
2015: 13150.0 MARS=headhh
2015: 18450.0 MARS=widow
2016: 9275.0 MARS=single
2016: 18550.0 MARS=mjoint
2016: 9275.0 MARS=mseparate
2016: 13250.0 MARS=headhh
2016: 18550.0 MARS=widow
2017: 9325.0 MARS=single
2017: 18650.0 MARS=mjoint
2017: 9325.0 MARS=mseparate
2017: 13350.0 MARS=headhh
2017: 18650.0 MARS=widow
2018: 9525.0 MARS=single
2018: 19050.0 MARS=mjoint
2018: 9525.0 MARS=mseparate
2018: 13600.0 MARS=headhh
2018: 19050.0 MARS=widow
2019: 9700.0 MARS=single
2019: 19400.0 MARS=mjoint
2019: 9700.0 MARS=mseparate
2019: 13850.0 MARS=headhh
2019: 19400.0 MARS=widow
2020: 9853.26 MARS=single
2020: 19706.52 MARS=mjoint
2020: 9853.26 MARS=mseparate
2020: 14068.83 MARS=headhh
2020: 19706.52 MARS=widow
2021: 10068.06 MARS=single
2021: 20136.12 MARS=mjoint
2021: 10068.06 MARS=mseparate
2021: 14375.53 MARS=headhh
2021: 20136.12 MARS=widow
2022: 10296.61 MARS=single
2022: 20593.21 MARS=mjoint
2022: 10296.61 MARS=mseparate
2022: 14701.86 MARS=headhh
2022: 20593.21 MARS=widow
2023: 10534.46 MARS=single
2023: 21068.92 MARS=mjoint
2023: 10534.46 MARS=mseparate
2023: 15041.47 MARS=headhh
2023: 21068.92 MARS=widow
2024: 10768.32 MARS=single
2024: 21536.65 MARS=mjoint
2024: 10768.32 MARS=mseparate
2024: 15375.39 MARS=headhh
2024: 21536.65 MARS=widow
2025: 11000.92 MARS=single
2025: 22001.84 MARS=mjoint
2025: 11000.92 MARS=mseparate
2025: 15707.5 MARS=headhh
2025: 22001.84 MARS=widow
2026: 11236.0 MARS=single
2026: 22472.0 MARS=mjoint
2026: 11236.0 MARS=mseparate
2026: 16086.0 MARS=headhh
2026: 22472.0 MARS=widow
Valid Range: min = 0 and max = II_brk2
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt2
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 2
Description: The second lowest tax rate, applied to the portion of taxable income below tax bracket 2 and above tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.12
2019: 0.12
2020: 0.12
2021: 0.12
2022: 0.12
2023: 0.12
2024: 0.12
2025: 0.12
2026: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk2
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2
Description: Income below this threshold and above tax bracket 1 is taxed at tax rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 36250.0 MARS=single
2013: 72500.0 MARS=mjoint
2013: 36250.0 MARS=mseparate
2013: 48600.0 MARS=headhh
2013: 72500.0 MARS=widow
2014: 36900.0 MARS=single
2014: 73800.0 MARS=mjoint
2014: 36900.0 MARS=mseparate
2014: 49400.0 MARS=headhh
2014: 73800.0 MARS=widow
2015: 37450.0 MARS=single
2015: 74900.0 MARS=mjoint
2015: 37450.0 MARS=mseparate
2015: 50200.0 MARS=headhh
2015: 74900.0 MARS=widow
2016: 37650.0 MARS=single
2016: 75300.0 MARS=mjoint
2016: 37650.0 MARS=mseparate
2016: 50400.0 MARS=headhh
2016: 75300.0 MARS=widow
2017: 37950.0 MARS=single
2017: 75900.0 MARS=mjoint
2017: 37950.0 MARS=mseparate
2017: 50800.0 MARS=headhh
2017: 75900.0 MARS=widow
2018: 38700.0 MARS=single
2018: 77400.0 MARS=mjoint
2018: 38700.0 MARS=mseparate
2018: 51800.0 MARS=headhh
2018: 77400.0 MARS=widow
2019: 39475.0 MARS=single
2019: 78950.0 MARS=mjoint
2019: 39475.0 MARS=mseparate
2019: 52850.0 MARS=headhh
2019: 78950.0 MARS=widow
2020: 40098.7 MARS=single
2020: 80197.41 MARS=mjoint
2020: 40098.7 MARS=mseparate
2020: 53685.03 MARS=headhh
2020: 80197.41 MARS=widow
2021: 40972.86 MARS=single
2021: 81945.71 MARS=mjoint
2021: 40972.86 MARS=mseparate
2021: 54855.36 MARS=headhh
2021: 81945.71 MARS=widow
2022: 41902.94 MARS=single
2022: 83805.88 MARS=mjoint
2022: 41902.94 MARS=mseparate
2022: 56100.58 MARS=headhh
2022: 83805.88 MARS=widow
2023: 42870.9 MARS=single
2023: 85741.8 MARS=mjoint
2023: 42870.9 MARS=mseparate
2023: 57396.5 MARS=headhh
2023: 85741.8 MARS=widow
2024: 43822.63 MARS=single
2024: 87645.26 MARS=mjoint
2024: 43822.63 MARS=mseparate
2024: 58670.71 MARS=headhh
2024: 87645.26 MARS=widow
2025: 44769.2 MARS=single
2025: 89538.4 MARS=mjoint
2025: 44769.2 MARS=mseparate
2025: 59937.99 MARS=headhh
2025: 89538.4 MARS=widow
2026: 45728.0 MARS=single
2026: 91455.0 MARS=mjoint
2026: 45728.0 MARS=mseparate
2026: 61211.0 MARS=headhh
2026: 91455.0 MARS=widow
Valid Range: min = II_brk1 and max = II_brk3
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt3
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 3
Description: The third lowest tax rate, applied to the portion of taxable income below tax bracket 3 and above tax bracket 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.25
2014: 0.25
2015: 0.25
2016: 0.25
2017: 0.25
2018: 0.22
2019: 0.22
2020: 0.22
2021: 0.22
2022: 0.22
2023: 0.22
2024: 0.22
2025: 0.22
2026: 0.25
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk3
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3
Description: Income below this threshold and above tax bracket 2 is taxed at tax rate 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 87850.0 MARS=single
2013: 146400.0 MARS=mjoint
2013: 73200.0 MARS=mseparate
2013: 125450.0 MARS=headhh
2013: 146400.0 MARS=widow
2014: 89350.0 MARS=single
2014: 148850.0 MARS=mjoint
2014: 74425.0 MARS=mseparate
2014: 127550.0 MARS=headhh
2014: 148850.0 MARS=widow
2015: 90750.0 MARS=single
2015: 151200.0 MARS=mjoint
2015: 75600.0 MARS=mseparate
2015: 129600.0 MARS=headhh
2015: 151200.0 MARS=widow
2016: 91150.0 MARS=single
2016: 151900.0 MARS=mjoint
2016: 75950.0 MARS=mseparate
2016: 130150.0 MARS=headhh
2016: 151900.0 MARS=widow
2017: 91900.0 MARS=single
2017: 153100.0 MARS=mjoint
2017: 76550.0 MARS=mseparate
2017: 131200.0 MARS=headhh
2017: 153100.0 MARS=widow
2018: 82500.0 MARS=single
2018: 165000.0 MARS=mjoint
2018: 82500.0 MARS=mseparate
2018: 82500.0 MARS=headhh
2018: 165000.0 MARS=widow
2019: 84200.0 MARS=single
2019: 168400.0 MARS=mjoint
2019: 84200.0 MARS=mseparate
2019: 84200.0 MARS=headhh
2019: 168400.0 MARS=widow
2020: 85530.36 MARS=single
2020: 171060.72 MARS=mjoint
2020: 85530.36 MARS=mseparate
2020: 85530.36 MARS=headhh
2020: 171060.72 MARS=widow
2021: 87394.92 MARS=single
2021: 174789.84 MARS=mjoint
2021: 87394.92 MARS=mseparate
2021: 87394.92 MARS=headhh
2021: 174789.84 MARS=widow
2022: 89378.79 MARS=single
2022: 178757.57 MARS=mjoint
2022: 89378.79 MARS=mseparate
2022: 89378.79 MARS=headhh
2022: 178757.57 MARS=widow
2023: 91443.44 MARS=single
2023: 182886.87 MARS=mjoint
2023: 91443.44 MARS=mseparate
2023: 91443.44 MARS=headhh
2023: 182886.87 MARS=widow
2024: 93473.48 MARS=single
2024: 186946.96 MARS=mjoint
2024: 93473.48 MARS=mseparate
2024: 93473.48 MARS=headhh
2024: 186946.96 MARS=widow
2025: 95492.51 MARS=single
2025: 190985.02 MARS=mjoint
2025: 95492.51 MARS=mseparate
2025: 95492.51 MARS=headhh
2025: 190985.02 MARS=widow
2026: 110735.0 MARS=single
2026: 184477.0 MARS=mjoint
2026: 92239.0 MARS=mseparate
2026: 158089.0 MARS=headhh
2026: 184477.0 MARS=widow
Valid Range: min = II_brk2 and max = II_brk4
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt4
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 4
Description: The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.28
2014: 0.28
2015: 0.28
2016: 0.28
2017: 0.28
2018: 0.24
2019: 0.24
2020: 0.24
2021: 0.24
2022: 0.24
2023: 0.24
2024: 0.24
2025: 0.24
2026: 0.28
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk4
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4
Description: Income below this threshold and above tax bracket 3 is taxed at tax rate 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 183250.0 MARS=single
2013: 223050.0 MARS=mjoint
2013: 111525.0 MARS=mseparate
2013: 203150.0 MARS=headhh
2013: 223050.0 MARS=widow
2014: 186350.0 MARS=single
2014: 226850.0 MARS=mjoint
2014: 113425.0 MARS=mseparate
2014: 206600.0 MARS=headhh
2014: 226850.0 MARS=widow
2015: 189300.0 MARS=single
2015: 230450.0 MARS=mjoint
2015: 115225.0 MARS=mseparate
2015: 209850.0 MARS=headhh
2015: 230450.0 MARS=widow
2016: 190150.0 MARS=single
2016: 231450.0 MARS=mjoint
2016: 115725.0 MARS=mseparate
2016: 210800.0 MARS=headhh
2016: 231450.0 MARS=widow
2017: 191650.0 MARS=single
2017: 233350.0 MARS=mjoint
2017: 116675.0 MARS=mseparate
2017: 212500.0 MARS=headhh
2017: 233350.0 MARS=widow
2018: 157500.0 MARS=single
2018: 315000.0 MARS=mjoint
2018: 157500.0 MARS=mseparate
2018: 157500.0 MARS=headhh
2018: 315000.0 MARS=widow
2019: 160725.0 MARS=single
2019: 321450.0 MARS=mjoint
2019: 160725.0 MARS=mseparate
2019: 160700.0 MARS=headhh
2019: 321450.0 MARS=widow
2020: 163264.46 MARS=single
2020: 326528.91 MARS=mjoint
2020: 163264.46 MARS=mseparate
2020: 163239.06 MARS=headhh
2020: 326528.91 MARS=widow
2021: 166823.62 MARS=single
2021: 333647.24 MARS=mjoint
2021: 166823.62 MARS=mseparate
2021: 166797.67 MARS=headhh
2021: 333647.24 MARS=widow
2022: 170610.52 MARS=single
2022: 341221.03 MARS=mjoint
2022: 170610.52 MARS=mseparate
2022: 170583.98 MARS=headhh
2022: 341221.03 MARS=widow
2023: 174551.62 MARS=single
2023: 349103.24 MARS=mjoint
2023: 174551.62 MARS=mseparate
2023: 174524.47 MARS=headhh
2023: 349103.24 MARS=widow
2024: 178426.67 MARS=single
2024: 356853.33 MARS=mjoint
2024: 178426.67 MARS=mseparate
2024: 178398.91 MARS=headhh
2024: 356853.33 MARS=widow
2025: 182280.68 MARS=single
2025: 364561.36 MARS=mjoint
2025: 182280.68 MARS=mseparate
2025: 182252.33 MARS=headhh
2025: 364561.36 MARS=widow
2026: 230928.0 MARS=single
2026: 281174.0 MARS=mjoint
2026: 140587.0 MARS=mseparate
2026: 256051.0 MARS=headhh
2026: 281174.0 MARS=widow
Valid Range: min = II_brk3 and max = II_brk5
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt5
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 5
Description: The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.33
2014: 0.33
2015: 0.33
2016: 0.33
2017: 0.33
2018: 0.32
2019: 0.32
2020: 0.32
2021: 0.32
2022: 0.32
2023: 0.32
2024: 0.32
2025: 0.32
2026: 0.33
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk5
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5
Description: Income below this threshold and above tax bracket 4 is taxed at tax rate 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 398350.0 MARS=single
2013: 398350.0 MARS=mjoint
2013: 199175.0 MARS=mseparate
2013: 398350.0 MARS=headhh
2013: 398350.0 MARS=widow
2014: 405100.0 MARS=single
2014: 405100.0 MARS=mjoint
2014: 202550.0 MARS=mseparate
2014: 405100.0 MARS=headhh
2014: 405100.0 MARS=widow
2015: 411500.0 MARS=single
2015: 411500.0 MARS=mjoint
2015: 205750.0 MARS=mseparate
2015: 411500.0 MARS=headhh
2015: 411500.0 MARS=widow
2016: 413350.0 MARS=single
2016: 413350.0 MARS=mjoint
2016: 206675.0 MARS=mseparate
2016: 413350.0 MARS=headhh
2016: 413350.0 MARS=widow
2017: 416700.0 MARS=single
2017: 416700.0 MARS=mjoint
2017: 208350.0 MARS=mseparate
2017: 416700.0 MARS=headhh
2017: 416700.0 MARS=widow
2018: 200000.0 MARS=single
2018: 400000.0 MARS=mjoint
2018: 200000.0 MARS=mseparate
2018: 200000.0 MARS=headhh
2018: 400000.0 MARS=widow
2019: 204100.0 MARS=single
2019: 408200.0 MARS=mjoint
2019: 204100.0 MARS=mseparate
2019: 204100.0 MARS=headhh
2019: 408200.0 MARS=widow
2020: 207324.78 MARS=single
2020: 414649.56 MARS=mjoint
2020: 207324.78 MARS=mseparate
2020: 207324.78 MARS=headhh
2020: 414649.56 MARS=widow
2021: 211844.46 MARS=single
2021: 423688.92 MARS=mjoint
2021: 211844.46 MARS=mseparate
2021: 211844.46 MARS=headhh
2021: 423688.92 MARS=widow
2022: 216653.33 MARS=single
2022: 433306.66 MARS=mjoint
2022: 216653.33 MARS=mseparate
2022: 216653.33 MARS=headhh
2022: 433306.66 MARS=widow
2023: 221658.02 MARS=single
2023: 443316.04 MARS=mjoint
2023: 221658.02 MARS=mseparate
2023: 221658.02 MARS=headhh
2023: 443316.04 MARS=widow
2024: 226578.83 MARS=single
2024: 453157.66 MARS=mjoint
2024: 226578.83 MARS=mseparate
2024: 226578.83 MARS=headhh
2024: 453157.66 MARS=widow
2025: 231472.93 MARS=single
2025: 462945.86 MARS=mjoint
2025: 231472.93 MARS=mseparate
2025: 231472.93 MARS=headhh
2025: 462945.86 MARS=widow
2026: 502101.0 MARS=single
2026: 502101.0 MARS=mjoint
2026: 251050.0 MARS=mseparate
2026: 502101.0 MARS=headhh
2026: 502101.0 MARS=widow
Valid Range: min = II_brk4 and max = II_brk6
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt6
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 6
Description: The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.35
2014: 0.35
2015: 0.35
2016: 0.35
2017: 0.35
2018: 0.35
2019: 0.35
2020: 0.35
2021: 0.35
2022: 0.35
2023: 0.35
2024: 0.35
2025: 0.35
2026: 0.35
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk6
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket 6
Description: Income below this threshold and above tax bracket 5 is taxed at tax rate 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 400000.0 MARS=single
2013: 450000.0 MARS=mjoint
2013: 225000.0 MARS=mseparate
2013: 425000.0 MARS=headhh
2013: 450000.0 MARS=widow
2014: 406750.0 MARS=single
2014: 457600.0 MARS=mjoint
2014: 228800.0 MARS=mseparate
2014: 432200.0 MARS=headhh
2014: 457600.0 MARS=widow
2015: 413200.0 MARS=single
2015: 464850.0 MARS=mjoint
2015: 232425.0 MARS=mseparate
2015: 439000.0 MARS=headhh
2015: 464850.0 MARS=widow
2016: 415050.0 MARS=single
2016: 466950.0 MARS=mjoint
2016: 233475.0 MARS=mseparate
2016: 441000.0 MARS=headhh
2016: 466950.0 MARS=widow
2017: 418400.0 MARS=single
2017: 470700.0 MARS=mjoint
2017: 235350.0 MARS=mseparate
2017: 444550.0 MARS=headhh
2017: 470700.0 MARS=widow
2018: 500000.0 MARS=single
2018: 600000.0 MARS=mjoint
2018: 300000.0 MARS=mseparate
2018: 500000.0 MARS=headhh
2018: 600000.0 MARS=widow
2019: 510300.0 MARS=single
2019: 612350.0 MARS=mjoint
2019: 306175.0 MARS=mseparate
2019: 510300.0 MARS=headhh
2019: 612350.0 MARS=widow
2020: 518362.74 MARS=single
2020: 622025.13 MARS=mjoint
2020: 311012.56 MARS=mseparate
2020: 518362.74 MARS=headhh
2020: 622025.13 MARS=widow
2021: 529663.05 MARS=single
2021: 635585.28 MARS=mjoint
2021: 317792.64 MARS=mseparate
2021: 529663.05 MARS=headhh
2021: 635585.28 MARS=widow
2022: 541686.4 MARS=single
2022: 650013.06 MARS=mjoint
2022: 325006.53 MARS=mseparate
2022: 541686.4 MARS=headhh
2022: 650013.06 MARS=widow
2023: 554199.35 MARS=single
2023: 665028.37 MARS=mjoint
2023: 332514.18 MARS=mseparate
2023: 554199.35 MARS=headhh
2023: 665028.37 MARS=widow
2024: 566502.58 MARS=single
2024: 679792.0 MARS=mjoint
2024: 339896.0 MARS=mseparate
2024: 566502.58 MARS=headhh
2024: 679792.0 MARS=widow
2025: 578739.04 MARS=single
2025: 694475.5 MARS=mjoint
2025: 347237.75 MARS=mseparate
2025: 578739.04 MARS=headhh
2025: 694475.5 MARS=widow
2026: 504149.0 MARS=single
2026: 567168.0 MARS=mjoint
2026: 283584.0 MARS=mseparate
2026: 535659.0 MARS=headhh
2026: 567168.0 MARS=widow
Valid Range: min = II_brk5 and max = II_brk7
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt7
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 7
Description: The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.396
2014: 0.396
2015: 0.396
2016: 0.396
2017: 0.396
2018: 0.37
2019: 0.37
2020: 0.37
2021: 0.37
2022: 0.37
2023: 0.37
2024: 0.37
2025: 0.37
2026: 0.396
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk7
TB Name: Personal income (regular/non-AMT/non-pass-through) tax bracket 7
Description: Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
2020: 9e+99 MARS=single
2020: 9e+99 MARS=mjoint
2020: 9e+99 MARS=mseparate
2020: 9e+99 MARS=headhh
2020: 9e+99 MARS=widow
2021: 9e+99 MARS=single
2021: 9e+99 MARS=mjoint
2021: 9e+99 MARS=mseparate
2021: 9e+99 MARS=headhh
2021: 9e+99 MARS=widow
2022: 9e+99 MARS=single
2022: 9e+99 MARS=mjoint
2022: 9e+99 MARS=mseparate
2022: 9e+99 MARS=headhh
2022: 9e+99 MARS=widow
2023: 9e+99 MARS=single
2023: 9e+99 MARS=mjoint
2023: 9e+99 MARS=mseparate
2023: 9e+99 MARS=headhh
2023: 9e+99 MARS=widow
2024: 9e+99 MARS=single
2024: 9e+99 MARS=mjoint
2024: 9e+99 MARS=mseparate
2024: 9e+99 MARS=headhh
2024: 9e+99 MARS=widow
2025: 9e+99 MARS=single
2025: 9e+99 MARS=mjoint
2025: 9e+99 MARS=mseparate
2025: 9e+99 MARS=headhh
2025: 9e+99 MARS=widow
2026: 9e+99 MARS=single
2026: 9e+99 MARS=mjoint
2026: 9e+99 MARS=mseparate
2026: 9e+99 MARS=headhh
2026: 9e+99 MARS=widow
Valid Range: min = II_brk6 and max = 9e+99
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt8
TB Name: Personal income (regular/non-AMT/non-pass-through) tax rate 8
Description: The tax rate applied to the portion of taxable income above tax bracket 7.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt1
Title: Personal income (regular/non-AMT/non-pass-through) tax rate 1
Description: The lowest tax rate, applied to the portion of taxable income below tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.1
2018: 0.1
2019: 0.1
2020: 0.1
2021: 0.1
2022: 0.1
2023: 0.1
2024: 0.1
2025: 0.1
2026: 0.1
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk1
Title: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1
Description: Taxable income below this threshold is taxed at tax rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [8925.0, 17850.0, 8925.0, 12750.0, 17850.0]
2014: [9075.0, 18150.0, 9075.0, 12950.0, 18150.0]
2015: [9225.0, 18450.0, 9225.0, 13150.0, 18450.0]
2016: [9275.0, 18550.0, 9275.0, 13250.0, 18550.0]
2017: [9325.0, 18650.0, 9325.0, 13350.0, 18650.0]
2018: [9525.0, 19050.0, 9525.0, 13600.0, 19050.0]
2019: [9700.0, 19400.0, 9700.0, 13850.0, 19400.0]
2020: [9853.26, 19706.52, 9853.26, 14068.83, 19706.52]
2021: [10068.06, 20136.12, 10068.06, 14375.53, 20136.12]
2022: [10296.6, 20593.21, 10296.6, 14701.85, 20593.21]
2023: [10534.45, 21068.91, 10534.45, 15041.46, 21068.91]
2024: [10768.31, 21536.64, 10768.31, 15375.38, 21536.64]
2025: [11000.91, 22001.83, 11000.91, 15707.49, 22001.83]
2026: [11236.0, 22472.0, 11236.0, 16086.0, 22472.0]
Valid Range: min = 0 and max = II_brk2
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt2
Title: Personal income (regular/non-AMT/non-pass-through) tax rate 2
Description: The second lowest tax rate, applied to the portion of taxable income below tax bracket 2 and above tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.12
2019: 0.12
2020: 0.12
2021: 0.12
2022: 0.12
2023: 0.12
2024: 0.12
2025: 0.12
2026: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk2
Title: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2
Description: Income below this threshold and above tax bracket 1 is taxed at tax rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [36250.0, 72500.0, 36250.0, 48600.0, 72500.0]
2014: [36900.0, 73800.0, 36900.0, 49400.0, 73800.0]
2015: [37450.0, 74900.0, 37450.0, 50200.0, 74900.0]
2016: [37650.0, 75300.0, 37650.0, 50400.0, 75300.0]
2017: [37950.0, 75900.0, 37950.0, 50800.0, 75900.0]
2018: [38700.0, 77400.0, 38700.0, 51800.0, 77400.0]
2019: [39475.0, 78950.0, 39475.0, 52850.0, 78950.0]
2020: [40098.7, 80197.41, 40098.7, 53685.03, 80197.41]
2021: [40972.85, 81945.71, 40972.85, 54855.36, 81945.71]
2022: [41902.93, 83805.88, 41902.93, 56100.58, 83805.88]
2023: [42870.89, 85741.8, 42870.89, 57396.5, 85741.8]
2024: [43822.62, 87645.27, 43822.62, 58670.7, 87645.27]
2025: [44769.19, 89538.41, 44769.19, 59937.99, 89538.41]
2026: [45728.0, 91455.0, 45728.0, 61211.0, 91455.0]
Valid Range: min = II_brk1 and max = II_brk3
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt3
Title: Personal income (regular/non-AMT/non-pass-through) tax rate 3
Description: The third lowest tax rate, applied to the portion of taxable income below tax bracket 3 and above tax bracket 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.25
2014: 0.25
2015: 0.25
2016: 0.25
2017: 0.25
2018: 0.22
2019: 0.22
2020: 0.22
2021: 0.22
2022: 0.22
2023: 0.22
2024: 0.22
2025: 0.22
2026: 0.25
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk3
Title: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3
Description: Income below this threshold and above tax bracket 2 is taxed at tax rate 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [87850.0, 146400.0, 73200.0, 125450.0, 146400.0]
2014: [89350.0, 148850.0, 74425.0, 127550.0, 148850.0]
2015: [90750.0, 151200.0, 75600.0, 129600.0, 151200.0]
2016: [91150.0, 151900.0, 75950.0, 130150.0, 151900.0]
2017: [91900.0, 153100.0, 76550.0, 131200.0, 153100.0]
2018: [82500.0, 165000.0, 82500.0, 82500.0, 165000.0]
2019: [84200.0, 168400.0, 84200.0, 84200.0, 168400.0]
2020: [85530.36, 171060.72, 85530.36, 85530.36, 171060.72]
2021: [87394.92, 174789.84, 87394.92, 87394.92, 174789.84]
2022: [89378.78, 178757.57, 89378.78, 89378.78, 178757.57]
2023: [91443.43, 182886.87, 91443.43, 91443.43, 182886.87]
2024: [93473.47, 186946.96, 93473.47, 93473.47, 186946.96]
2025: [95492.5, 190985.01, 95492.5, 95492.5, 190985.01]
2026: [110735.0, 184477.0, 92239.0, 158089.0, 184477.0]
Valid Range: min = II_brk2 and max = II_brk4
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt4
Title: Personal income (regular/non-AMT/non-pass-through) tax rate 4
Description: The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.28
2014: 0.28
2015: 0.28
2016: 0.28
2017: 0.28
2018: 0.24
2019: 0.24
2020: 0.24
2021: 0.24
2022: 0.24
2023: 0.24
2024: 0.24
2025: 0.24
2026: 0.28
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk4
Title: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4
Description: Income below this threshold and above tax bracket 3 is taxed at tax rate 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [183250.0, 223050.0, 111525.0, 203150.0, 223050.0]
2014: [186350.0, 226850.0, 113425.0, 206600.0, 226850.0]
2015: [189300.0, 230450.0, 115225.0, 209850.0, 230450.0]
2016: [190150.0, 231450.0, 115725.0, 210800.0, 231450.0]
2017: [191650.0, 233350.0, 116675.0, 212500.0, 233350.0]
2018: [157500.0, 315000.0, 157500.0, 157500.0, 315000.0]
2019: [160725.0, 321450.0, 160725.0, 160700.0, 321450.0]
2020: [163264.46, 326528.91, 163264.46, 163239.06, 326528.91]
2021: [166823.63, 333647.24, 166823.63, 166797.67, 333647.24]
2022: [170610.53, 341221.03, 170610.53, 170583.98, 341221.03]
2023: [174551.63, 349103.24, 174551.63, 174524.47, 349103.24]
2024: [178426.68, 356853.33, 178426.68, 178398.91, 356853.33]
2025: [182280.7, 364561.36, 182280.7, 182252.33, 364561.36]
2026: [230928.0, 281174.0, 140587.0, 256051.0, 281174.0]
Valid Range: min = II_brk3 and max = II_brk5
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt5
Title: Personal income (regular/non-AMT/non-pass-through) tax rate 5
Description: The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.33
2014: 0.33
2015: 0.33
2016: 0.33
2017: 0.33
2018: 0.32
2019: 0.32
2020: 0.32
2021: 0.32
2022: 0.32
2023: 0.32
2024: 0.32
2025: 0.32
2026: 0.33
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk5
Title: Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5
Description: Income below this threshold and above tax bracket 4 is taxed at tax rate 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [398350.0, 398350.0, 199175.0, 398350.0, 398350.0]
2014: [405100.0, 405100.0, 202550.0, 405100.0, 405100.0]
2015: [411500.0, 411500.0, 205750.0, 411500.0, 411500.0]
2016: [413350.0, 413350.0, 206675.0, 413350.0, 413350.0]
2017: [416700.0, 416700.0, 208350.0, 416700.0, 416700.0]
2018: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2019: [204100.0, 408200.0, 204100.0, 204100.0, 408200.0]
2020: [207324.78, 414649.56, 207324.78, 207324.78, 414649.56]
2021: [211844.46, 423688.92, 211844.46, 211844.46, 423688.92]
2022: [216653.33, 433306.66, 216653.33, 216653.33, 433306.66]
2023: [221658.02, 443316.04, 221658.02, 221658.02, 443316.04]
2024: [226578.83, 453157.66, 226578.83, 226578.83, 453157.66]
2025: [231472.93, 462945.87, 231472.93, 231472.93, 462945.87]
2026: [502101.0, 502101.0, 251050.0, 502101.0, 502101.0]
Valid Range: min = II_brk4 and max = II_brk6
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt6
Title: Personal income (regular/non-AMT/non-pass-through) tax rate 6
Description: The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.35
2014: 0.35
2015: 0.35
2016: 0.35
2017: 0.35
2018: 0.35
2019: 0.35
2020: 0.35
2021: 0.35
2022: 0.35
2023: 0.35
2024: 0.35
2025: 0.35
2026: 0.35
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk6
Title: Personal income (regular/non-AMT/non-pass-through) tax bracket 6
Description: Income below this threshold and above tax bracket 5 is taxed at tax rate 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [400000.0, 450000.0, 225000.0, 425000.0, 450000.0]
2014: [406750.0, 457600.0, 228800.0, 432200.0, 457600.0]
2015: [413200.0, 464850.0, 232425.0, 439000.0, 464850.0]
2016: [415050.0, 466950.0, 233475.0, 441000.0, 466950.0]
2017: [418400.0, 470700.0, 235350.0, 444550.0, 470700.0]
2018: [500000.0, 600000.0, 300000.0, 500000.0, 600000.0]
2019: [510300.0, 612350.0, 306175.0, 510300.0, 612350.0]
2020: [518362.74, 622025.13, 311012.56, 518362.74, 622025.13]
2021: [529663.05, 635585.28, 317792.63, 529663.05, 635585.28]
2022: [541686.4, 650013.07, 325006.52, 541686.4, 650013.07]
2023: [554199.36, 665028.37, 332514.17, 554199.36, 665028.37]
2024: [566502.59, 679792.0, 339895.98, 566502.59, 679792.0]
2025: [578739.05, 694475.51, 347237.73, 578739.05, 694475.51]
2026: [504149.0, 567168.0, 283584.0, 535659.0, 567168.0]
Valid Range: min = II_brk5 and max = II_brk7
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt7
Title: Personal income (regular/non-AMT/non-pass-through) tax rate 7
Description: The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.396
2014: 0.396
2015: 0.396
2016: 0.396
2017: 0.396
2018: 0.37
2019: 0.37
2020: 0.37
2021: 0.37
2022: 0.37
2023: 0.37
2024: 0.37
2025: 0.37
2026: 0.396
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_brk7
Title: Personal income (regular/non-AMT/non-pass-through) tax bracket 7
Description: Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = II_brk6 and max = 9e+99
Out-of-Range Action: error

Personal Income — Regular: Non-AMT, Non-Pass-Through
tc Name: II_rt8
Title: Personal income (regular/non-AMT/non-pass-through) tax rate 8
Description: The tax rate applied to the portion of taxable income above tax bracket 7.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Personal Income — Pass-Through
tc Name: PT_rt1
TB Name: Pass-through income tax rate 1
Description: The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.1
2018: 0.1
2019: 0.1
2020: 0.1
2021: 0.1
2022: 0.1
2023: 0.1
2024: 0.1
2025: 0.1
2026: 0.1
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk1
TB Name: Pass-through income tax bracket (upper threshold) 1
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 8925.0 MARS=single
2013: 17850.0 MARS=mjoint
2013: 8925.0 MARS=mseparate
2013: 12750.0 MARS=headhh
2013: 17850.0 MARS=widow
2014: 9075.0 MARS=single
2014: 18150.0 MARS=mjoint
2014: 9075.0 MARS=mseparate
2014: 12950.0 MARS=headhh
2014: 18150.0 MARS=widow
2015: 9225.0 MARS=single
2015: 18450.0 MARS=mjoint
2015: 9225.0 MARS=mseparate
2015: 13150.0 MARS=headhh
2015: 18450.0 MARS=widow
2016: 9275.0 MARS=single
2016: 18550.0 MARS=mjoint
2016: 9275.0 MARS=mseparate
2016: 13250.0 MARS=headhh
2016: 18550.0 MARS=widow
2017: 9325.0 MARS=single
2017: 18650.0 MARS=mjoint
2017: 9325.0 MARS=mseparate
2017: 13350.0 MARS=headhh
2017: 18650.0 MARS=widow
2018: 9525.0 MARS=single
2018: 19050.0 MARS=mjoint
2018: 9525.0 MARS=mseparate
2018: 13600.0 MARS=headhh
2018: 19050.0 MARS=widow
2019: 9700.0 MARS=single
2019: 19400.0 MARS=mjoint
2019: 9700.0 MARS=mseparate
2019: 13850.0 MARS=headhh
2019: 19400.0 MARS=widow
2020: 9853.26 MARS=single
2020: 19706.52 MARS=mjoint
2020: 9853.26 MARS=mseparate
2020: 14068.83 MARS=headhh
2020: 19706.52 MARS=widow
2021: 10068.06 MARS=single
2021: 20136.12 MARS=mjoint
2021: 10068.06 MARS=mseparate
2021: 14375.53 MARS=headhh
2021: 20136.12 MARS=widow
2022: 10296.61 MARS=single
2022: 20593.21 MARS=mjoint
2022: 10296.61 MARS=mseparate
2022: 14701.86 MARS=headhh
2022: 20593.21 MARS=widow
2023: 10534.46 MARS=single
2023: 21068.92 MARS=mjoint
2023: 10534.46 MARS=mseparate
2023: 15041.47 MARS=headhh
2023: 21068.92 MARS=widow
2024: 10768.32 MARS=single
2024: 21536.65 MARS=mjoint
2024: 10768.32 MARS=mseparate
2024: 15375.39 MARS=headhh
2024: 21536.65 MARS=widow
2025: 11000.92 MARS=single
2025: 22001.84 MARS=mjoint
2025: 11000.92 MARS=mseparate
2025: 15707.5 MARS=headhh
2025: 22001.84 MARS=widow
2026: 11236.0 MARS=single
2026: 22472.0 MARS=mjoint
2026: 11236.0 MARS=mseparate
2026: 16086.0 MARS=headhh
2026: 22472.0 MARS=widow
Valid Range: min = 0 and max = PT_brk2
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt2
TB Name: Pass-through income tax rate 2
Description: The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.12
2019: 0.12
2020: 0.12
2021: 0.12
2022: 0.12
2023: 0.12
2024: 0.12
2025: 0.12
2026: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk2
TB Name: Pass-through income tax bracket (upper threshold) 2
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 36250.0 MARS=single
2013: 72500.0 MARS=mjoint
2013: 36250.0 MARS=mseparate
2013: 48600.0 MARS=headhh
2013: 72500.0 MARS=widow
2014: 36900.0 MARS=single
2014: 73800.0 MARS=mjoint
2014: 36900.0 MARS=mseparate
2014: 49400.0 MARS=headhh
2014: 73800.0 MARS=widow
2015: 37450.0 MARS=single
2015: 74900.0 MARS=mjoint
2015: 37450.0 MARS=mseparate
2015: 50200.0 MARS=headhh
2015: 74900.0 MARS=widow
2016: 37650.0 MARS=single
2016: 75300.0 MARS=mjoint
2016: 37650.0 MARS=mseparate
2016: 50400.0 MARS=headhh
2016: 75300.0 MARS=widow
2017: 37950.0 MARS=single
2017: 75900.0 MARS=mjoint
2017: 37950.0 MARS=mseparate
2017: 50800.0 MARS=headhh
2017: 75900.0 MARS=widow
2018: 38700.0 MARS=single
2018: 77400.0 MARS=mjoint
2018: 38700.0 MARS=mseparate
2018: 51800.0 MARS=headhh
2018: 77400.0 MARS=widow
2019: 39475.0 MARS=single
2019: 78950.0 MARS=mjoint
2019: 39475.0 MARS=mseparate
2019: 52850.0 MARS=headhh
2019: 78950.0 MARS=widow
2020: 40098.7 MARS=single
2020: 80197.41 MARS=mjoint
2020: 40098.7 MARS=mseparate
2020: 53685.03 MARS=headhh
2020: 80197.41 MARS=widow
2021: 40972.86 MARS=single
2021: 81945.71 MARS=mjoint
2021: 40972.86 MARS=mseparate
2021: 54855.36 MARS=headhh
2021: 81945.71 MARS=widow
2022: 41902.94 MARS=single
2022: 83805.88 MARS=mjoint
2022: 41902.94 MARS=mseparate
2022: 56100.58 MARS=headhh
2022: 83805.88 MARS=widow
2023: 42870.9 MARS=single
2023: 85741.8 MARS=mjoint
2023: 42870.9 MARS=mseparate
2023: 57396.5 MARS=headhh
2023: 85741.8 MARS=widow
2024: 43822.63 MARS=single
2024: 87645.26 MARS=mjoint
2024: 43822.63 MARS=mseparate
2024: 58670.71 MARS=headhh
2024: 87645.26 MARS=widow
2025: 44769.2 MARS=single
2025: 89538.4 MARS=mjoint
2025: 44769.2 MARS=mseparate
2025: 59937.99 MARS=headhh
2025: 89538.4 MARS=widow
2026: 45728.0 MARS=single
2026: 91455.0 MARS=mjoint
2026: 45728.0 MARS=mseparate
2026: 61211.0 MARS=headhh
2026: 91455.0 MARS=widow
Valid Range: min = PT_brk1 and max = PT_brk3
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt3
TB Name: Pass-through income tax rate 3
Description: The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.25
2014: 0.25
2015: 0.25
2016: 0.25
2017: 0.25
2018: 0.22
2019: 0.22
2020: 0.22
2021: 0.22
2022: 0.22
2023: 0.22
2024: 0.22
2025: 0.22
2026: 0.25
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk3
TB Name: Pass-through income tax bracket (upper threshold) 3
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 87850.0 MARS=single
2013: 146400.0 MARS=mjoint
2013: 73200.0 MARS=mseparate
2013: 125450.0 MARS=headhh
2013: 146400.0 MARS=widow
2014: 89350.0 MARS=single
2014: 148850.0 MARS=mjoint
2014: 74425.0 MARS=mseparate
2014: 127550.0 MARS=headhh
2014: 148850.0 MARS=widow
2015: 90750.0 MARS=single
2015: 151200.0 MARS=mjoint
2015: 75600.0 MARS=mseparate
2015: 129600.0 MARS=headhh
2015: 151200.0 MARS=widow
2016: 91150.0 MARS=single
2016: 151900.0 MARS=mjoint
2016: 75950.0 MARS=mseparate
2016: 130150.0 MARS=headhh
2016: 151900.0 MARS=widow
2017: 91900.0 MARS=single
2017: 153100.0 MARS=mjoint
2017: 76550.0 MARS=mseparate
2017: 131200.0 MARS=headhh
2017: 153100.0 MARS=widow
2018: 82500.0 MARS=single
2018: 165000.0 MARS=mjoint
2018: 82500.0 MARS=mseparate
2018: 82500.0 MARS=headhh
2018: 165000.0 MARS=widow
2019: 84200.0 MARS=single
2019: 168400.0 MARS=mjoint
2019: 84200.0 MARS=mseparate
2019: 84200.0 MARS=headhh
2019: 168400.0 MARS=widow
2020: 85530.36 MARS=single
2020: 171060.72 MARS=mjoint
2020: 85530.36 MARS=mseparate
2020: 85530.36 MARS=headhh
2020: 171060.72 MARS=widow
2021: 87394.92 MARS=single
2021: 174789.84 MARS=mjoint
2021: 87394.92 MARS=mseparate
2021: 87394.92 MARS=headhh
2021: 174789.84 MARS=widow
2022: 89378.79 MARS=single
2022: 178757.57 MARS=mjoint
2022: 89378.79 MARS=mseparate
2022: 89378.79 MARS=headhh
2022: 178757.57 MARS=widow
2023: 91443.44 MARS=single
2023: 182886.87 MARS=mjoint
2023: 91443.44 MARS=mseparate
2023: 91443.44 MARS=headhh
2023: 182886.87 MARS=widow
2024: 93473.48 MARS=single
2024: 186946.96 MARS=mjoint
2024: 93473.48 MARS=mseparate
2024: 93473.48 MARS=headhh
2024: 186946.96 MARS=widow
2025: 95492.51 MARS=single
2025: 190985.02 MARS=mjoint
2025: 95492.51 MARS=mseparate
2025: 95492.51 MARS=headhh
2025: 190985.02 MARS=widow
2026: 110735.0 MARS=single
2026: 184477.0 MARS=mjoint
2026: 92239.0 MARS=mseparate
2026: 158089.0 MARS=headhh
2026: 184477.0 MARS=widow
Valid Range: min = PT_brk2 and max = PT_brk4
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt4
TB Name: Pass-through income tax rate 4
Description: The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.28
2014: 0.28
2015: 0.28
2016: 0.28
2017: 0.28
2018: 0.24
2019: 0.24
2020: 0.24
2021: 0.24
2022: 0.24
2023: 0.24
2024: 0.24
2025: 0.24
2026: 0.28
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk4
TB Name: Pass-through income tax bracket (upper threshold) 4
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 183250.0 MARS=single
2013: 223050.0 MARS=mjoint
2013: 111525.0 MARS=mseparate
2013: 203150.0 MARS=headhh
2013: 223050.0 MARS=widow
2014: 186350.0 MARS=single
2014: 226850.0 MARS=mjoint
2014: 113425.0 MARS=mseparate
2014: 206600.0 MARS=headhh
2014: 226850.0 MARS=widow
2015: 189300.0 MARS=single
2015: 230450.0 MARS=mjoint
2015: 115225.0 MARS=mseparate
2015: 209850.0 MARS=headhh
2015: 230450.0 MARS=widow
2016: 190150.0 MARS=single
2016: 231450.0 MARS=mjoint
2016: 115725.0 MARS=mseparate
2016: 210800.0 MARS=headhh
2016: 231450.0 MARS=widow
2017: 191650.0 MARS=single
2017: 233350.0 MARS=mjoint
2017: 116675.0 MARS=mseparate
2017: 212500.0 MARS=headhh
2017: 233350.0 MARS=widow
2018: 157500.0 MARS=single
2018: 315000.0 MARS=mjoint
2018: 157500.0 MARS=mseparate
2018: 157500.0 MARS=headhh
2018: 315000.0 MARS=widow
2019: 160725.0 MARS=single
2019: 321450.0 MARS=mjoint
2019: 160725.0 MARS=mseparate
2019: 160700.0 MARS=headhh
2019: 321450.0 MARS=widow
2020: 163264.46 MARS=single
2020: 326528.91 MARS=mjoint
2020: 163264.46 MARS=mseparate
2020: 163239.06 MARS=headhh
2020: 326528.91 MARS=widow
2021: 166823.62 MARS=single
2021: 333647.24 MARS=mjoint
2021: 166823.62 MARS=mseparate
2021: 166797.67 MARS=headhh
2021: 333647.24 MARS=widow
2022: 170610.52 MARS=single
2022: 341221.03 MARS=mjoint
2022: 170610.52 MARS=mseparate
2022: 170583.98 MARS=headhh
2022: 341221.03 MARS=widow
2023: 174551.62 MARS=single
2023: 349103.24 MARS=mjoint
2023: 174551.62 MARS=mseparate
2023: 174524.47 MARS=headhh
2023: 349103.24 MARS=widow
2024: 178426.67 MARS=single
2024: 356853.33 MARS=mjoint
2024: 178426.67 MARS=mseparate
2024: 178398.91 MARS=headhh
2024: 356853.33 MARS=widow
2025: 182280.68 MARS=single
2025: 364561.36 MARS=mjoint
2025: 182280.68 MARS=mseparate
2025: 182252.33 MARS=headhh
2025: 364561.36 MARS=widow
2026: 230928.0 MARS=single
2026: 281174.0 MARS=mjoint
2026: 140587.0 MARS=mseparate
2026: 256051.0 MARS=headhh
2026: 281174.0 MARS=widow
Valid Range: min = PT_brk3 and max = PT_brk5
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt5
TB Name: Pass-through income tax rate 5
Description: The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.33
2014: 0.33
2015: 0.33
2016: 0.33
2017: 0.33
2018: 0.32
2019: 0.32
2020: 0.32
2021: 0.32
2022: 0.32
2023: 0.32
2024: 0.32
2025: 0.32
2026: 0.33
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk5
TB Name: Pass-through income tax bracket (upper threshold) 5
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 398350.0 MARS=single
2013: 398350.0 MARS=mjoint
2013: 199175.0 MARS=mseparate
2013: 398350.0 MARS=headhh
2013: 398350.0 MARS=widow
2014: 405100.0 MARS=single
2014: 405100.0 MARS=mjoint
2014: 202550.0 MARS=mseparate
2014: 405100.0 MARS=headhh
2014: 405100.0 MARS=widow
2015: 411500.0 MARS=single
2015: 411500.0 MARS=mjoint
2015: 205750.0 MARS=mseparate
2015: 411500.0 MARS=headhh
2015: 411500.0 MARS=widow
2016: 413350.0 MARS=single
2016: 413350.0 MARS=mjoint
2016: 206675.0 MARS=mseparate
2016: 413350.0 MARS=headhh
2016: 413350.0 MARS=widow
2017: 416700.0 MARS=single
2017: 416700.0 MARS=mjoint
2017: 208350.0 MARS=mseparate
2017: 416700.0 MARS=headhh
2017: 416700.0 MARS=widow
2018: 200000.0 MARS=single
2018: 400000.0 MARS=mjoint
2018: 200000.0 MARS=mseparate
2018: 200000.0 MARS=headhh
2018: 400000.0 MARS=widow
2019: 204100.0 MARS=single
2019: 408200.0 MARS=mjoint
2019: 204100.0 MARS=mseparate
2019: 204100.0 MARS=headhh
2019: 408200.0 MARS=widow
2020: 207324.78 MARS=single
2020: 414649.56 MARS=mjoint
2020: 207324.78 MARS=mseparate
2020: 207324.78 MARS=headhh
2020: 414649.56 MARS=widow
2021: 211844.46 MARS=single
2021: 423688.92 MARS=mjoint
2021: 211844.46 MARS=mseparate
2021: 211844.46 MARS=headhh
2021: 423688.92 MARS=widow
2022: 216653.33 MARS=single
2022: 433306.66 MARS=mjoint
2022: 216653.33 MARS=mseparate
2022: 216653.33 MARS=headhh
2022: 433306.66 MARS=widow
2023: 221658.02 MARS=single
2023: 443316.04 MARS=mjoint
2023: 221658.02 MARS=mseparate
2023: 221658.02 MARS=headhh
2023: 443316.04 MARS=widow
2024: 226578.83 MARS=single
2024: 453157.66 MARS=mjoint
2024: 226578.83 MARS=mseparate
2024: 226578.83 MARS=headhh
2024: 453157.66 MARS=widow
2025: 231472.93 MARS=single
2025: 462945.86 MARS=mjoint
2025: 231472.93 MARS=mseparate
2025: 231472.93 MARS=headhh
2025: 462945.86 MARS=widow
2026: 502101.0 MARS=single
2026: 502101.0 MARS=mjoint
2026: 251050.0 MARS=mseparate
2026: 502101.0 MARS=headhh
2026: 502101.0 MARS=widow
Valid Range: min = PT_brk4 and max = PT_brk6
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt6
TB Name: Pass-through income tax rate 6
Description: The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.35
2014: 0.35
2015: 0.35
2016: 0.35
2017: 0.35
2018: 0.35
2019: 0.35
2020: 0.35
2021: 0.35
2022: 0.35
2023: 0.35
2024: 0.35
2025: 0.35
2026: 0.35
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk6
TB Name: Pass-through income tax bracket (upper threshold) 6
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 400000.0 MARS=single
2013: 450000.0 MARS=mjoint
2013: 225000.0 MARS=mseparate
2013: 425000.0 MARS=headhh
2013: 450000.0 MARS=widow
2014: 406750.0 MARS=single
2014: 457600.0 MARS=mjoint
2014: 228800.0 MARS=mseparate
2014: 432200.0 MARS=headhh
2014: 457600.0 MARS=widow
2015: 413200.0 MARS=single
2015: 464850.0 MARS=mjoint
2015: 232425.0 MARS=mseparate
2015: 439000.0 MARS=headhh
2015: 464850.0 MARS=widow
2016: 415050.0 MARS=single
2016: 466950.0 MARS=mjoint
2016: 233475.0 MARS=mseparate
2016: 441000.0 MARS=headhh
2016: 466950.0 MARS=widow
2017: 418400.0 MARS=single
2017: 470700.0 MARS=mjoint
2017: 235350.0 MARS=mseparate
2017: 444550.0 MARS=headhh
2017: 470700.0 MARS=widow
2018: 500000.0 MARS=single
2018: 600000.0 MARS=mjoint
2018: 300000.0 MARS=mseparate
2018: 500000.0 MARS=headhh
2018: 600000.0 MARS=widow
2019: 510300.0 MARS=single
2019: 612350.0 MARS=mjoint
2019: 306175.0 MARS=mseparate
2019: 510300.0 MARS=headhh
2019: 612350.0 MARS=widow
2020: 518362.74 MARS=single
2020: 622025.13 MARS=mjoint
2020: 311012.56 MARS=mseparate
2020: 518362.74 MARS=headhh
2020: 622025.13 MARS=widow
2021: 529663.05 MARS=single
2021: 635585.28 MARS=mjoint
2021: 317792.64 MARS=mseparate
2021: 529663.05 MARS=headhh
2021: 635585.28 MARS=widow
2022: 541686.4 MARS=single
2022: 650013.06 MARS=mjoint
2022: 325006.53 MARS=mseparate
2022: 541686.4 MARS=headhh
2022: 650013.06 MARS=widow
2023: 554199.35 MARS=single
2023: 665028.37 MARS=mjoint
2023: 332514.18 MARS=mseparate
2023: 554199.35 MARS=headhh
2023: 665028.37 MARS=widow
2024: 566502.58 MARS=single
2024: 679792.0 MARS=mjoint
2024: 339896.0 MARS=mseparate
2024: 566502.58 MARS=headhh
2024: 679792.0 MARS=widow
2025: 578739.04 MARS=single
2025: 694475.5 MARS=mjoint
2025: 347237.75 MARS=mseparate
2025: 578739.04 MARS=headhh
2025: 694475.5 MARS=widow
2026: 504149.0 MARS=single
2026: 567168.0 MARS=mjoint
2026: 283584.0 MARS=mseparate
2026: 535659.0 MARS=headhh
2026: 567168.0 MARS=widow
Valid Range: min = PT_brk5 and max = PT_brk7
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt7
TB Name: Pass-through income tax rate 7
Description: The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.396
2014: 0.396
2015: 0.396
2016: 0.396
2017: 0.396
2018: 0.37
2019: 0.37
2020: 0.37
2021: 0.37
2022: 0.37
2023: 0.37
2024: 0.37
2025: 0.37
2026: 0.396
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk7
TB Name: Extra pass-through income tax bracket
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 6 is taxed at tax rate 7. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
2020: 9e+99 MARS=single
2020: 9e+99 MARS=mjoint
2020: 9e+99 MARS=mseparate
2020: 9e+99 MARS=headhh
2020: 9e+99 MARS=widow
2021: 9e+99 MARS=single
2021: 9e+99 MARS=mjoint
2021: 9e+99 MARS=mseparate
2021: 9e+99 MARS=headhh
2021: 9e+99 MARS=widow
2022: 9e+99 MARS=single
2022: 9e+99 MARS=mjoint
2022: 9e+99 MARS=mseparate
2022: 9e+99 MARS=headhh
2022: 9e+99 MARS=widow
2023: 9e+99 MARS=single
2023: 9e+99 MARS=mjoint
2023: 9e+99 MARS=mseparate
2023: 9e+99 MARS=headhh
2023: 9e+99 MARS=widow
2024: 9e+99 MARS=single
2024: 9e+99 MARS=mjoint
2024: 9e+99 MARS=mseparate
2024: 9e+99 MARS=headhh
2024: 9e+99 MARS=widow
2025: 9e+99 MARS=single
2025: 9e+99 MARS=mjoint
2025: 9e+99 MARS=mseparate
2025: 9e+99 MARS=headhh
2025: 9e+99 MARS=widow
2026: 9e+99 MARS=single
2026: 9e+99 MARS=mjoint
2026: 9e+99 MARS=mseparate
2026: 9e+99 MARS=headhh
2026: 9e+99 MARS=widow
Valid Range: min = PT_brk6 and max = 9e+99
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt8
TB Name: Extra pass-through income tax rate
Description: The extra tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations above the tax bracket 7.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_EligibleRate_active
TB Name: Share of active business income eligible for PT rate schedule
Description: Eligibility rate of active business income for separate pass-through rates.
Notes: Active business income defined as e00900 + e26270
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_EligibleRate_passive
TB Name: Share of passive business income eligible for PT rate schedule
Description: Eligibility rate of passive business income for mseparate pass-through rates.
Notes: Passive business income defined as e02000 - e26270
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_wages_active_income
TB Name: Wages included in (positive) active business income eligible for PT rates
Description: Whether active business income eligibility base for PT schedule for includes wages.
Notes: Only applies if active business income is positive
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_top_stacking
TB Name: PT taxable income stacked on top of regular taxable income
Description: Whether taxable income eligible for PT rate schedule is stacked on top of regular taxable income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: True
Valid Range: min = False and max = True
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_rt
TB Name: Pass-through qualified business income deduction rate
Description: Fraction of pass-through business income that may be excluded from taxable income.
Notes: Applies to e00900 + e26270
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.2
2019: 0.2
2020: 0.2
2021: 0.2
2022: 0.2
2023: 0.2
2024: 0.2
2025: 0.2
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_taxinc_thd
TB Name: Lower threshold of pre-QBID taxable income
Description: Pre-QBID taxable income above this lower threshold implies the QBID amount begins to be limited.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 157500.0 MARS=single
2018: 315000.0 MARS=mjoint
2018: 157500.0 MARS=mseparate
2018: 157500.0 MARS=headhh
2018: 315000.0 MARS=widow
2019: 160700.0 MARS=single
2019: 321400.0 MARS=mjoint
2019: 160725.0 MARS=mseparate
2019: 160700.0 MARS=headhh
2019: 321400.0 MARS=widow
2020: 163239.06 MARS=single
2020: 326478.12 MARS=mjoint
2020: 163264.46 MARS=mseparate
2020: 163239.06 MARS=headhh
2020: 326478.12 MARS=widow
2021: 166797.67 MARS=single
2021: 333595.34 MARS=mjoint
2021: 166823.62 MARS=mseparate
2021: 166797.67 MARS=headhh
2021: 333595.34 MARS=widow
2022: 170583.98 MARS=single
2022: 341167.96 MARS=mjoint
2022: 170610.52 MARS=mseparate
2022: 170583.98 MARS=headhh
2022: 341167.96 MARS=widow
2023: 174524.47 MARS=single
2023: 349048.94 MARS=mjoint
2023: 174551.62 MARS=mseparate
2023: 174524.47 MARS=headhh
2023: 349048.94 MARS=widow
2024: 178398.91 MARS=single
2024: 356797.82 MARS=mjoint
2024: 178426.67 MARS=mseparate
2024: 178398.91 MARS=headhh
2024: 356797.82 MARS=widow
2025: 182252.33 MARS=single
2025: 364504.66 MARS=mjoint
2025: 182280.68 MARS=mseparate
2025: 182252.33 MARS=headhh
2025: 364504.66 MARS=widow
2026: 0.0 MARS=single
2026: 0.0 MARS=mjoint
2026: 0.0 MARS=mseparate
2026: 0.0 MARS=headhh
2026: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_taxinc_gap
TB Name: Dollar gap between upper and lower threshold of pre-QBID taxable income
Description: Pre-QBID taxable income above this upper threshold implies the QBID amount is even more limited.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0 MARS=single
2013: 1.0 MARS=mjoint
2013: 1.0 MARS=mseparate
2013: 1.0 MARS=headhh
2013: 1.0 MARS=widow
2014: 1.0 MARS=single
2014: 1.0 MARS=mjoint
2014: 1.0 MARS=mseparate
2014: 1.0 MARS=headhh
2014: 1.0 MARS=widow
2015: 1.0 MARS=single
2015: 1.0 MARS=mjoint
2015: 1.0 MARS=mseparate
2015: 1.0 MARS=headhh
2015: 1.0 MARS=widow
2016: 1.0 MARS=single
2016: 1.0 MARS=mjoint
2016: 1.0 MARS=mseparate
2016: 1.0 MARS=headhh
2016: 1.0 MARS=widow
2017: 1.0 MARS=single
2017: 1.0 MARS=mjoint
2017: 1.0 MARS=mseparate
2017: 1.0 MARS=headhh
2017: 1.0 MARS=widow
2018: 50000.0 MARS=single
2018: 100000.0 MARS=mjoint
2018: 50000.0 MARS=mseparate
2018: 50000.0 MARS=headhh
2018: 100000.0 MARS=widow
2019: 50000.0 MARS=single
2019: 100000.0 MARS=mjoint
2019: 50000.0 MARS=mseparate
2019: 50000.0 MARS=headhh
2019: 100000.0 MARS=widow
2020: 50000.0 MARS=single
2020: 100000.0 MARS=mjoint
2020: 50000.0 MARS=mseparate
2020: 50000.0 MARS=headhh
2020: 100000.0 MARS=widow
2021: 50000.0 MARS=single
2021: 100000.0 MARS=mjoint
2021: 50000.0 MARS=mseparate
2021: 50000.0 MARS=headhh
2021: 100000.0 MARS=widow
2022: 50000.0 MARS=single
2022: 100000.0 MARS=mjoint
2022: 50000.0 MARS=mseparate
2022: 50000.0 MARS=headhh
2022: 100000.0 MARS=widow
2023: 50000.0 MARS=single
2023: 100000.0 MARS=mjoint
2023: 50000.0 MARS=mseparate
2023: 50000.0 MARS=headhh
2023: 100000.0 MARS=widow
2024: 50000.0 MARS=single
2024: 100000.0 MARS=mjoint
2024: 50000.0 MARS=mseparate
2024: 50000.0 MARS=headhh
2024: 100000.0 MARS=widow
2025: 50000.0 MARS=single
2025: 100000.0 MARS=mjoint
2025: 50000.0 MARS=mseparate
2025: 50000.0 MARS=headhh
2025: 100000.0 MARS=widow
2026: 1.0 MARS=single
2026: 1.0 MARS=mjoint
2026: 1.0 MARS=mseparate
2026: 1.0 MARS=headhh
2026: 1.0 MARS=widow
Valid Range: min = 1 and max = 9e+99
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_w2_wages_rt
TB Name: QBID cap rate on pass-through business W-2 wages paid
Description: QBID is capped at this fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds.
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.5
2019: 0.5
2020: 0.5
2021: 0.5
2022: 0.5
2023: 0.5
2024: 0.5
2025: 0.5
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_alt_w2_wages_rt
TB Name: Alternative QBID cap rate on pass-through business W-2 wages paid
Description: QBID is capped at this fraction of W-2 wages paid by the pass-through business plus some fraction of business property if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.25
2019: 0.25
2020: 0.25
2021: 0.25
2022: 0.25
2023: 0.25
2024: 0.25
2025: 0.25
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_alt_property_rt
TB Name: Alternative QBID cap rate on pass-through business property owned
Description: QBID is capped at this fraction of business property owned plus some fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.025
2019: 0.025
2020: 0.025
2021: 0.025
2022: 0.025
2023: 0.025
2024: 0.025
2025: 0.025
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Personal Income — Pass-Through
tc Name: PT_rt1
Title: Pass-through income tax rate 1
Description: The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.1
2014: 0.1
2015: 0.1
2016: 0.1
2017: 0.1
2018: 0.1
2019: 0.1
2020: 0.1
2021: 0.1
2022: 0.1
2023: 0.1
2024: 0.1
2025: 0.1
2026: 0.1
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk1
Title: Pass-through income tax bracket (upper threshold) 1
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [8925.0, 17850.0, 8925.0, 12750.0, 17850.0]
2014: [9075.0, 18150.0, 9075.0, 12950.0, 18150.0]
2015: [9225.0, 18450.0, 9225.0, 13150.0, 18450.0]
2016: [9275.0, 18550.0, 9275.0, 13250.0, 18550.0]
2017: [9325.0, 18650.0, 9325.0, 13350.0, 18650.0]
2018: [9525.0, 19050.0, 9525.0, 13600.0, 19050.0]
2019: [9700.0, 19400.0, 9700.0, 13850.0, 19400.0]
2020: [9853.26, 19706.52, 9853.26, 14068.83, 19706.52]
2021: [10068.06, 20136.12, 10068.06, 14375.53, 20136.12]
2022: [10296.6, 20593.21, 10296.6, 14701.85, 20593.21]
2023: [10534.45, 21068.91, 10534.45, 15041.46, 21068.91]
2024: [10768.31, 21536.64, 10768.31, 15375.38, 21536.64]
2025: [11000.91, 22001.83, 11000.91, 15707.49, 22001.83]
2026: [11236.0, 22472.0, 11236.0, 16086.0, 22472.0]
Valid Range: min = 0 and max = PT_brk2
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt2
Title: Pass-through income tax rate 2
Description: The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.15
2014: 0.15
2015: 0.15
2016: 0.15
2017: 0.15
2018: 0.12
2019: 0.12
2020: 0.12
2021: 0.12
2022: 0.12
2023: 0.12
2024: 0.12
2025: 0.12
2026: 0.15
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk2
Title: Pass-through income tax bracket (upper threshold) 2
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [36250.0, 72500.0, 36250.0, 48600.0, 72500.0]
2014: [36900.0, 73800.0, 36900.0, 49400.0, 73800.0]
2015: [37450.0, 74900.0, 37450.0, 50200.0, 74900.0]
2016: [37650.0, 75300.0, 37650.0, 50400.0, 75300.0]
2017: [37950.0, 75900.0, 37950.0, 50800.0, 75900.0]
2018: [38700.0, 77400.0, 38700.0, 51800.0, 77400.0]
2019: [39475.0, 78950.0, 39475.0, 52850.0, 78950.0]
2020: [40098.7, 80197.41, 40098.7, 53685.03, 80197.41]
2021: [40972.85, 81945.71, 40972.85, 54855.36, 81945.71]
2022: [41902.93, 83805.88, 41902.93, 56100.58, 83805.88]
2023: [42870.89, 85741.8, 42870.89, 57396.5, 85741.8]
2024: [43822.62, 87645.27, 43822.62, 58670.7, 87645.27]
2025: [44769.19, 89538.41, 44769.19, 59937.99, 89538.41]
2026: [45728.0, 91455.0, 45728.0, 61211.0, 91455.0]
Valid Range: min = PT_brk1 and max = PT_brk3
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt3
Title: Pass-through income tax rate 3
Description: The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.25
2014: 0.25
2015: 0.25
2016: 0.25
2017: 0.25
2018: 0.22
2019: 0.22
2020: 0.22
2021: 0.22
2022: 0.22
2023: 0.22
2024: 0.22
2025: 0.22
2026: 0.25
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk3
Title: Pass-through income tax bracket (upper threshold) 3
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [87850.0, 146400.0, 73200.0, 125450.0, 146400.0]
2014: [89350.0, 148850.0, 74425.0, 127550.0, 148850.0]
2015: [90750.0, 151200.0, 75600.0, 129600.0, 151200.0]
2016: [91150.0, 151900.0, 75950.0, 130150.0, 151900.0]
2017: [91900.0, 153100.0, 76550.0, 131200.0, 153100.0]
2018: [82500.0, 165000.0, 82500.0, 82500.0, 165000.0]
2019: [84200.0, 168400.0, 84200.0, 84200.0, 168400.0]
2020: [85530.36, 171060.72, 85530.36, 85530.36, 171060.72]
2021: [87394.92, 174789.84, 87394.92, 87394.92, 174789.84]
2022: [89378.78, 178757.57, 89378.78, 89378.78, 178757.57]
2023: [91443.43, 182886.87, 91443.43, 91443.43, 182886.87]
2024: [93473.47, 186946.96, 93473.47, 93473.47, 186946.96]
2025: [95492.5, 190985.01, 95492.5, 95492.5, 190985.01]
2026: [110735.0, 184477.0, 92239.0, 158089.0, 184477.0]
Valid Range: min = PT_brk2 and max = PT_brk4
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt4
Title: Pass-through income tax rate 4
Description: The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.28
2014: 0.28
2015: 0.28
2016: 0.28
2017: 0.28
2018: 0.24
2019: 0.24
2020: 0.24
2021: 0.24
2022: 0.24
2023: 0.24
2024: 0.24
2025: 0.24
2026: 0.28
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk4
Title: Pass-through income tax bracket (upper threshold) 4
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [183250.0, 223050.0, 111525.0, 203150.0, 223050.0]
2014: [186350.0, 226850.0, 113425.0, 206600.0, 226850.0]
2015: [189300.0, 230450.0, 115225.0, 209850.0, 230450.0]
2016: [190150.0, 231450.0, 115725.0, 210800.0, 231450.0]
2017: [191650.0, 233350.0, 116675.0, 212500.0, 233350.0]
2018: [157500.0, 315000.0, 157500.0, 157500.0, 315000.0]
2019: [160725.0, 321450.0, 160725.0, 160700.0, 321450.0]
2020: [163264.46, 326528.91, 163264.46, 163239.06, 326528.91]
2021: [166823.63, 333647.24, 166823.63, 166797.67, 333647.24]
2022: [170610.53, 341221.03, 170610.53, 170583.98, 341221.03]
2023: [174551.63, 349103.24, 174551.63, 174524.47, 349103.24]
2024: [178426.68, 356853.33, 178426.68, 178398.91, 356853.33]
2025: [182280.7, 364561.36, 182280.7, 182252.33, 364561.36]
2026: [230928.0, 281174.0, 140587.0, 256051.0, 281174.0]
Valid Range: min = PT_brk3 and max = PT_brk5
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt5
Title: Pass-through income tax rate 5
Description: The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.33
2014: 0.33
2015: 0.33
2016: 0.33
2017: 0.33
2018: 0.32
2019: 0.32
2020: 0.32
2021: 0.32
2022: 0.32
2023: 0.32
2024: 0.32
2025: 0.32
2026: 0.33
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk5
Title: Pass-through income tax bracket (upper threshold) 5
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [398350.0, 398350.0, 199175.0, 398350.0, 398350.0]
2014: [405100.0, 405100.0, 202550.0, 405100.0, 405100.0]
2015: [411500.0, 411500.0, 205750.0, 411500.0, 411500.0]
2016: [413350.0, 413350.0, 206675.0, 413350.0, 413350.0]
2017: [416700.0, 416700.0, 208350.0, 416700.0, 416700.0]
2018: [200000.0, 400000.0, 200000.0, 200000.0, 400000.0]
2019: [204100.0, 408200.0, 204100.0, 204100.0, 408200.0]
2020: [207324.78, 414649.56, 207324.78, 207324.78, 414649.56]
2021: [211844.46, 423688.92, 211844.46, 211844.46, 423688.92]
2022: [216653.33, 433306.66, 216653.33, 216653.33, 433306.66]
2023: [221658.02, 443316.04, 221658.02, 221658.02, 443316.04]
2024: [226578.83, 453157.66, 226578.83, 226578.83, 453157.66]
2025: [231472.93, 462945.87, 231472.93, 231472.93, 462945.87]
2026: [502101.0, 502101.0, 251050.0, 502101.0, 502101.0]
Valid Range: min = PT_brk4 and max = PT_brk6
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt6
Title: Pass-through income tax rate 6
Description: The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.35
2014: 0.35
2015: 0.35
2016: 0.35
2017: 0.35
2018: 0.35
2019: 0.35
2020: 0.35
2021: 0.35
2022: 0.35
2023: 0.35
2024: 0.35
2025: 0.35
2026: 0.35
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk6
Title: Pass-through income tax bracket (upper threshold) 6
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [400000.0, 450000.0, 225000.0, 425000.0, 450000.0]
2014: [406750.0, 457600.0, 228800.0, 432200.0, 457600.0]
2015: [413200.0, 464850.0, 232425.0, 439000.0, 464850.0]
2016: [415050.0, 466950.0, 233475.0, 441000.0, 466950.0]
2017: [418400.0, 470700.0, 235350.0, 444550.0, 470700.0]
2018: [500000.0, 600000.0, 300000.0, 500000.0, 600000.0]
2019: [510300.0, 612350.0, 306175.0, 510300.0, 612350.0]
2020: [518362.74, 622025.13, 311012.56, 518362.74, 622025.13]
2021: [529663.05, 635585.28, 317792.63, 529663.05, 635585.28]
2022: [541686.4, 650013.07, 325006.52, 541686.4, 650013.07]
2023: [554199.36, 665028.37, 332514.17, 554199.36, 665028.37]
2024: [566502.59, 679792.0, 339895.98, 566502.59, 679792.0]
2025: [578739.05, 694475.51, 347237.73, 578739.05, 694475.51]
2026: [504149.0, 567168.0, 283584.0, 535659.0, 567168.0]
Valid Range: min = PT_brk5 and max = PT_brk7
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt7
Title: Pass-through income tax rate 7
Description: The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.396
2014: 0.396
2015: 0.396
2016: 0.396
2017: 0.396
2018: 0.37
2019: 0.37
2020: 0.37
2021: 0.37
2022: 0.37
2023: 0.37
2024: 0.37
2025: 0.37
2026: 0.396
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_brk7
Title: Extra pass-through income tax bracket
Description: Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 6 is taxed at tax rate 7. Default value is essentially infinity.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = PT_brk6 and max = 9e+99
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_rt8
Title: Extra pass-through income tax rate
Description: The extra tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations above the tax bracket 7.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_EligibleRate_active
Title: Share of active business income eligible for PT rate schedule
Description: Eligibility rate of active business income for separate pass-through rates.
Notes: Active business income defined as e00900 + e26270
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 1.0
2014: 1.0
2015: 1.0
2016: 1.0
2017: 1.0
2018: 1.0
2019: 1.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_EligibleRate_passive
Title: Share of passive business income eligible for PT rate schedule
Description: Eligibility rate of passive business income for mseparate pass-through rates.
Notes: Passive business income defined as e02000 - e26270
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_wages_active_income
Title: Wages included in (positive) active business income eligible for PT rates
Description: Whether active business income eligibility base for PT schedule for includes wages.
Notes: Only applies if active business income is positive
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_top_stacking
Title: PT taxable income stacked on top of regular taxable income
Description: Whether taxable income eligible for PT rate schedule is stacked on top of regular taxable income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: True
2014: True
2015: True
2016: True
2017: True
2018: True
2019: True
Valid Range: min = False and max = True
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_rt
Title: Pass-through qualified business income deduction rate
Description: Fraction of pass-through business income that may be excluded from taxable income.
Notes: Applies to e00900 + e26270
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.2
2019: 0.2
2020: 0.2
2021: 0.2
2022: 0.2
2023: 0.2
2024: 0.2
2025: 0.2
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_taxinc_thd
Title: Lower threshold of pre-QBID taxable income
Description: Pre-QBID taxable income above this lower threshold implies the QBID amount begins to be limited.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [157500.0, 315000.0, 157500.0, 157500.0, 315000.0]
2019: [160700.0, 321400.0, 160725.0, 160700.0, 321400.0]
2020: [163239.06, 326478.12, 163264.46, 163239.06, 326478.12]
2021: [166797.67, 333595.34, 166823.63, 166797.67, 333595.34]
2022: [170583.98, 341167.95, 170610.53, 170583.98, 341167.95]
2023: [174524.47, 349048.93, 174551.63, 174524.47, 349048.93]
2024: [178398.91, 356797.82, 178426.68, 178398.91, 356797.82]
2025: [182252.33, 364504.65, 182280.7, 182252.33, 364504.65]
2026: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_taxinc_gap
Title: Dollar gap between upper and lower threshold of pre-QBID taxable income
Description: Pre-QBID taxable income above this upper threshold implies the QBID amount is even more limited.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [1.0, 1.0, 1.0, 1.0, 1.0]
2014: [1.0, 1.0, 1.0, 1.0, 1.0]
2015: [1.0, 1.0, 1.0, 1.0, 1.0]
2016: [1.0, 1.0, 1.0, 1.0, 1.0]
2017: [1.0, 1.0, 1.0, 1.0, 1.0]
2018: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2019: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2020: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2021: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2022: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2023: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2024: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2025: [50000.0, 100000.0, 50000.0, 50000.0, 100000.0]
2026: [1.0, 1.0, 1.0, 1.0, 1.0]
Valid Range: min = 1 and max = 9e+99
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_w2_wages_rt
Title: QBID cap rate on pass-through business W-2 wages paid
Description: QBID is capped at this fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds.
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.5
2019: 0.5
2020: 0.5
2021: 0.5
2022: 0.5
2023: 0.5
2024: 0.5
2025: 0.5
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_alt_w2_wages_rt
Title: Alternative QBID cap rate on pass-through business W-2 wages paid
Description: QBID is capped at this fraction of W-2 wages paid by the pass-through business plus some fraction of business property if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.25
2019: 0.25
2020: 0.25
2021: 0.25
2022: 0.25
2023: 0.25
2024: 0.25
2025: 0.25
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Pass-Through
tc Name: PT_qbid_alt_property_rt
Title: Alternative QBID cap rate on pass-through business property owned
Description: QBID is capped at this fraction of business property owned plus some fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.
Has An Effect When Using:   PUF data: False   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.025
2019: 0.025
2020: 0.025
2021: 0.025
2022: 0.025
2023: 0.025
2024: 0.025
2025: 0.025
2026: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Personal Income — Alternative Minimum Tax
tc Name: AMT_em
TB Name: AMT exemption amount
Description: The amount of AMT taxable income exempted from AMT.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 51900.0 MARS=single
2013: 80800.0 MARS=mjoint
2013: 40400.0 MARS=mseparate
2013: 51900.0 MARS=headhh
2013: 80800.0 MARS=widow
2014: 52800.0 MARS=single
2014: 82100.0 MARS=mjoint
2014: 41050.0 MARS=mseparate
2014: 52800.0 MARS=headhh
2014: 82100.0 MARS=widow
2015: 53600.0 MARS=single
2015: 83400.0 MARS=mjoint
2015: 41700.0 MARS=mseparate
2015: 53600.0 MARS=headhh
2015: 83400.0 MARS=widow
2016: 53900.0 MARS=single
2016: 83800.0 MARS=mjoint
2016: 41900.0 MARS=mseparate
2016: 53900.0 MARS=headhh
2016: 83800.0 MARS=widow
2017: 54300.0 MARS=single
2017: 84500.0 MARS=mjoint
2017: 42250.0 MARS=mseparate
2017: 54300.0 MARS=headhh
2017: 84500.0 MARS=widow
2018: 70300.0 MARS=single
2018: 109400.0 MARS=mjoint
2018: 54700.0 MARS=mseparate
2018: 70300.0 MARS=headhh
2018: 109400.0 MARS=widow
2019: 71700.0 MARS=single
2019: 111700.0 MARS=mjoint
2019: 55850.0 MARS=mseparate
2019: 71700.0 MARS=headhh
2019: 111700.0 MARS=widow
2020: 72832.86 MARS=single
2020: 113464.86 MARS=mjoint
2020: 56732.43 MARS=mseparate
2020: 72832.86 MARS=headhh
2020: 113464.86 MARS=widow
2021: 74420.62 MARS=single
2021: 115938.39 MARS=mjoint
2021: 57969.2 MARS=mseparate
2021: 74420.62 MARS=headhh
2021: 115938.39 MARS=widow
2022: 76109.96 MARS=single
2022: 118570.2 MARS=mjoint
2022: 59285.1 MARS=mseparate
2022: 76109.96 MARS=headhh
2022: 118570.2 MARS=widow
2023: 77868.1 MARS=single
2023: 121309.17 MARS=mjoint
2023: 60654.58 MARS=mseparate
2023: 77868.1 MARS=headhh
2023: 121309.17 MARS=widow
2024: 79596.78 MARS=single
2024: 124002.23 MARS=mjoint
2024: 62001.12 MARS=mseparate
2024: 79596.78 MARS=headhh
2024: 124002.23 MARS=widow
2025: 81316.07 MARS=single
2025: 126680.68 MARS=mjoint
2025: 63340.34 MARS=mseparate
2025: 81316.07 MARS=headhh
2025: 126680.68 MARS=widow
2026: 65429.0 MARS=single
2026: 101818.0 MARS=mjoint
2026: 50909.0 MARS=mseparate
2026: 65429.0 MARS=headhh
2026: 101818.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_prt
TB Name: AMT exemption phaseout rate
Description: AMT exemption will decrease at this rate for each dollar of AMT taxable income exceeding AMT phaseout start.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.25
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_em_ps
TB Name: AMT exemption phaseout start
Description: AMT exemption starts to decrease when AMT taxable income goes beyond this threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 115400.0 MARS=single
2013: 153900.0 MARS=mjoint
2013: 76950.0 MARS=mseparate
2013: 115400.0 MARS=headhh
2013: 153900.0 MARS=widow
2014: 117300.0 MARS=single
2014: 156500.0 MARS=mjoint
2014: 78250.0 MARS=mseparate
2014: 117300.0 MARS=headhh
2014: 156500.0 MARS=widow
2015: 119200.0 MARS=single
2015: 158900.0 MARS=mjoint
2015: 79450.0 MARS=mseparate
2015: 119200.0 MARS=headhh
2015: 158900.0 MARS=widow
2016: 119700.0 MARS=single
2016: 159700.0 MARS=mjoint
2016: 79850.0 MARS=mseparate
2016: 119700.0 MARS=headhh
2016: 159700.0 MARS=widow
2017: 120700.0 MARS=single
2017: 160900.0 MARS=mjoint
2017: 80450.0 MARS=mseparate
2017: 120700.0 MARS=headhh
2017: 160900.0 MARS=widow
2018: 500000.0 MARS=single
2018: 1000000.0 MARS=mjoint
2018: 500000.0 MARS=mseparate
2018: 500000.0 MARS=headhh
2018: 1000000.0 MARS=widow
2019: 510300.0 MARS=single
2019: 1020600.0 MARS=mjoint
2019: 510300.0 MARS=mseparate
2019: 510300.0 MARS=headhh
2019: 1020600.0 MARS=widow
2020: 518362.74 MARS=single
2020: 1036725.48 MARS=mjoint
2020: 518362.74 MARS=mseparate
2020: 518362.74 MARS=headhh
2020: 1036725.48 MARS=widow
2021: 529663.05 MARS=single
2021: 1059326.1 MARS=mjoint
2021: 529663.05 MARS=mseparate
2021: 529663.05 MARS=headhh
2021: 1059326.1 MARS=widow
2022: 541686.4 MARS=single
2022: 1083372.8 MARS=mjoint
2022: 541686.4 MARS=mseparate
2022: 541686.4 MARS=headhh
2022: 1083372.8 MARS=widow
2023: 554199.35 MARS=single
2023: 1108398.71 MARS=mjoint
2023: 554199.35 MARS=mseparate
2023: 554199.35 MARS=headhh
2023: 1108398.71 MARS=widow
2024: 566502.58 MARS=single
2024: 1133005.16 MARS=mjoint
2024: 566502.58 MARS=mseparate
2024: 566502.58 MARS=headhh
2024: 1133005.16 MARS=widow
2025: 578739.04 MARS=single
2025: 1157478.07 MARS=mjoint
2025: 578739.04 MARS=mseparate
2025: 578739.04 MARS=headhh
2025: 1157478.07 MARS=widow
2026: 145437.0 MARS=single
2026: 193876.0 MARS=mjoint
2026: 96938.0 MARS=mseparate
2026: 145437.0 MARS=headhh
2026: 193876.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_rt1
TB Name: AMT rate 1
Description: The tax rate applied to the portion of AMT taxable income below the surtax threshold, AMT bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.26
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_brk1
TB Name: AMT bracket 1 (upper threshold)
Description: AMT taxable income below this is subject to AMT rate 1 and above it is subject to AMT rate 1 + the additional AMT rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 179500.0
2014: 182500.0
2015: 185400.0
2016: 186300.0
2017: 187800.0
2018: 191100.0
2019: 194800.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_rt2
TB Name: Additional AMT rate for AMT taxable income above AMT bracket 1
Description: The additional tax rate applied to the portion of AMT income above the AMT bracket 1.
Notes: This is the additional tax rate (on top of AMT rate 1) for AMT income above AMT bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.02
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Personal Income — Alternative Minimum Tax
tc Name: AMT_em
Title: AMT exemption amount
Description: The amount of AMT taxable income exempted from AMT.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [51900.0, 80800.0, 40400.0, 51900.0, 80800.0]
2014: [52800.0, 82100.0, 41050.0, 52800.0, 82100.0]
2015: [53600.0, 83400.0, 41700.0, 53600.0, 83400.0]
2016: [53900.0, 83800.0, 41900.0, 53900.0, 83800.0]
2017: [54300.0, 84500.0, 42250.0, 54300.0, 84500.0]
2018: [70300.0, 109400.0, 54700.0, 70300.0, 109400.0]
2019: [71700.0, 111700.0, 55850.0, 71700.0, 111700.0]
2020: [72832.86, 113464.86, 56732.43, 72832.86, 113464.86]
2021: [74420.62, 115938.39, 57969.2, 74420.62, 115938.39]
2022: [76109.97, 118570.19, 59285.1, 76109.97, 118570.19]
2023: [77868.11, 121309.16, 60654.59, 77868.11, 121309.16]
2024: [79596.78, 124002.22, 62001.12, 79596.78, 124002.22]
2025: [81316.07, 126680.67, 63340.34, 81316.07, 126680.67]
2026: [65429.0, 101818.0, 50909.0, 65429.0, 101818.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_prt
Title: AMT exemption phaseout rate
Description: AMT exemption will decrease at this rate for each dollar of AMT taxable income exceeding AMT phaseout start.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.25
2014: 0.25
2015: 0.25
2016: 0.25
2017: 0.25
2018: 0.25
2019: 0.25
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_em_ps
Title: AMT exemption phaseout start
Description: AMT exemption starts to decrease when AMT taxable income goes beyond this threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [115400.0, 153900.0, 76950.0, 115400.0, 153900.0]
2014: [117300.0, 156500.0, 78250.0, 117300.0, 156500.0]
2015: [119200.0, 158900.0, 79450.0, 119200.0, 158900.0]
2016: [119700.0, 159700.0, 79850.0, 119700.0, 159700.0]
2017: [120700.0, 160900.0, 80450.0, 120700.0, 160900.0]
2018: [500000.0, 1000000.0, 500000.0, 500000.0, 1000000.0]
2019: [510300.0, 1020600.0, 510300.0, 510300.0, 1020600.0]
2020: [518362.74, 1036725.48, 518362.74, 518362.74, 1036725.48]
2021: [529663.05, 1059326.1, 529663.05, 529663.05, 1059326.1]
2022: [541686.4, 1083372.8, 541686.4, 541686.4, 1083372.8]
2023: [554199.36, 1108398.71, 554199.36, 554199.36, 1108398.71]
2024: [566502.59, 1133005.16, 566502.59, 566502.59, 1133005.16]
2025: [578739.05, 1157478.07, 578739.05, 578739.05, 1157478.07]
2026: [145437.0, 193876.0, 96938.0, 145437.0, 193876.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_rt1
Title: AMT rate 1
Description: The tax rate applied to the portion of AMT taxable income below the surtax threshold, AMT bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.26
2014: 0.26
2015: 0.26
2016: 0.26
2017: 0.26
2018: 0.26
2019: 0.26
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_brk1
Title: AMT bracket 1 (upper threshold)
Description: AMT taxable income below this is subject to AMT rate 1 and above it is subject to AMT rate 1 + the additional AMT rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 179500.0
2014: 182500.0
2015: 185400.0
2016: 186300.0
2017: 187800.0
2018: 191100.0
2019: 194800.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Personal Income — Alternative Minimum Tax
tc Name: AMT_rt2
Title: Additional AMT rate for AMT taxable income above AMT bracket 1
Description: The additional tax rate applied to the portion of AMT income above the AMT bracket 1.
Notes: This is the additional tax rate (on top of AMT rate 1) for AMT income above AMT bracket 1.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.02
2014: 0.02
2015: 0.02
2016: 0.02
2017: 0.02
2018: 0.02
2019: 0.02
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

3l. Other Taxes

-

Other Taxes — Net Investment Income Tax
tc Name: NIIT_thd
TB Name: Net Investment Income Tax modified AGI threshold
Description: If modified AGI is more than this threshold, filing unit is subject to the Net Investment Income Tax.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 200000.0 MARS=single
2013: 250000.0 MARS=mjoint
2013: 125000.0 MARS=mseparate
2013: 200000.0 MARS=headhh
2013: 250000.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Taxes — Net Investment Income Tax
tc Name: NIIT_PT_taxed
TB Name: Whether or not partnership and S-corp income is in NIIT base
Description: false ==> partnership and S-corp income excluded from NIIT base; true ==> partnership and S-corp income is in NIIT base.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Other Taxes — Net Investment Income Tax
tc Name: NIIT_rt
TB Name: Net Investment Income Tax rate
Description: If modified AGI exceeds NIIT_thd, all net investment income is taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.038
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Other Taxes — Net Investment Income Tax
tc Name: NIIT_thd
Title: Net Investment Income Tax modified AGI threshold
Description: If modified AGI is more than this threshold, filing unit is subject to the Net Investment Income Tax.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
2014: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
2015: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
2016: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
2017: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
2018: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
2019: [200000.0, 250000.0, 125000.0, 200000.0, 250000.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Taxes — Net Investment Income Tax
tc Name: NIIT_PT_taxed
Title: Whether or not partnership and S-corp income is in NIIT base
Description: false ==> partnership and S-corp income excluded from NIIT base; true ==> partnership and S-corp income is in NIIT base.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Other Taxes — Net Investment Income Tax
tc Name: NIIT_rt
Title: Net Investment Income Tax rate
Description: If modified AGI exceeds NIIT_thd, all net investment income is taxed at this rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.038
2014: 0.038
2015: 0.038
2016: 0.038
2017: 0.038
2018: 0.038
2019: 0.038
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

3m. Refundable Credits

-

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_c
TB Name: Maximum earned income credit
Description: This is the maximum amount of earned income credit taxpayers are eligible for; it depends on how many kids they have.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 487.0 EIC=0kids
2013: 3250.0 EIC=1kid
2013: 5372.0 EIC=2kids
2013: 6044.0 EIC=3+kids
2014: 496.0 EIC=0kids
2014: 3305.0 EIC=1kid
2014: 5460.0 EIC=2kids
2014: 6143.0 EIC=3+kids
2015: 503.0 EIC=0kids
2015: 3359.0 EIC=1kid
2015: 5548.0 EIC=2kids
2015: 6242.0 EIC=3+kids
2016: 506.0 EIC=0kids
2016: 3373.0 EIC=1kid
2016: 5572.0 EIC=2kids
2016: 6269.0 EIC=3+kids
2017: 510.0 EIC=0kids
2017: 3400.0 EIC=1kid
2017: 5616.0 EIC=2kids
2017: 6318.0 EIC=3+kids
2018: 519.0 EIC=0kids
2018: 3461.0 EIC=1kid
2018: 5716.0 EIC=2kids
2018: 6431.0 EIC=3+kids
2019: 529.0 EIC=0kids
2019: 3526.0 EIC=1kid
2019: 5828.0 EIC=2kids
2019: 6557.0 EIC=3+kids
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_rt
TB Name: Earned income credit phasein rate
Description: Pre-phaseout credit is minimum of this rate times earnings and the maximum earned income credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0765 EIC=0kids
2013: 0.34 EIC=1kid
2013: 0.4 EIC=2kids
2013: 0.45 EIC=3+kids
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_basic_frac
TB Name: Fraction of maximum earned income credit paid at zero earnings
Description: This fraction of EITC_c is always paid as a credit and one minus this fraction is applied to the phasein rate, EITC_rt. This fraction is zero under current law.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0.0 and max = 1.0
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_prt
TB Name: Earned income credit phaseout rate
Description: Earned income credit begins to decrease at the this rate when AGI is higher than earned income credit phaseout start AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0765 EIC=0kids
2013: 0.1598 EIC=1kid
2013: 0.2106 EIC=2kids
2013: 0.2106 EIC=3+kids
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_ps
TB Name: Earned income credit phaseout start AGI
Description: If AGI is higher than this threshold, the amount of EITC will start to decrease at the phaseout rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 7970.0 EIC=0kids
2013: 17530.0 EIC=1kid
2013: 17530.0 EIC=2kids
2013: 17530.0 EIC=3+kids
2014: 8110.0 EIC=0kids
2014: 17830.0 EIC=1kid
2014: 17830.0 EIC=2kids
2014: 17830.0 EIC=3+kids
2015: 8250.0 EIC=0kids
2015: 18150.0 EIC=1kid
2015: 18150.0 EIC=2kids
2015: 18150.0 EIC=3+kids
2016: 8270.0 EIC=0kids
2016: 18190.0 EIC=1kid
2016: 18190.0 EIC=2kids
2016: 18190.0 EIC=3+kids
2017: 8340.0 EIC=0kids
2017: 18340.0 EIC=1kid
2017: 18340.0 EIC=2kids
2017: 18340.0 EIC=3+kids
2018: 8490.0 EIC=0kids
2018: 18660.0 EIC=1kid
2018: 18660.0 EIC=2kids
2018: 18660.0 EIC=3+kids
2019: 8650.0 EIC=0kids
2019: 19030.0 EIC=1kid
2019: 19030.0 EIC=2kids
2019: 19030.0 EIC=3+kids
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_ps_MarriedJ
TB Name: Extra earned income credit phaseout start AGI for married filling jointly
Description: This is the additional amount added on the regular phaseout start amount for taxpayers with filling status of married filing jointly.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 5340.0 EIC=0kids
2013: 5340.0 EIC=1kid
2013: 5340.0 EIC=2kids
2013: 5340.0 EIC=3+kids
2014: 5430.0 EIC=0kids
2014: 5430.0 EIC=1kid
2014: 5430.0 EIC=2kids
2014: 5430.0 EIC=3+kids
2015: 5500.0 EIC=0kids
2015: 5500.0 EIC=1kid
2015: 5500.0 EIC=2kids
2015: 5500.0 EIC=3+kids
2016: 5550.0 EIC=0kids
2016: 5550.0 EIC=1kid
2016: 5550.0 EIC=2kids
2016: 5550.0 EIC=3+kids
2017: 5590.0 EIC=0kids
2017: 5590.0 EIC=1kid
2017: 5590.0 EIC=2kids
2017: 5590.0 EIC=3+kids
2018: 5680.0 EIC=0kids
2018: 5690.0 EIC=1kid
2018: 5690.0 EIC=2kids
2018: 5690.0 EIC=3+kids
2019: 5800.0 EIC=0kids
2019: 5790.0 EIC=1kid
2019: 5790.0 EIC=2kids
2019: 5790.0 EIC=3+kids
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_MinEligAge
TB Name: Minimum Age for Childless EITC Eligibility
Description: For a childless filing unit, at least one individual's age needs to be no less than this age (but no greater than the EITC_MaxEligAge) in order to be eligible for an earned income tax credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: int
Known Values:
2013: 25
Valid Range: min = 0 and max = 125
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_MaxEligAge
TB Name: Maximum Age for Childless EITC Eligibility
Description: For a childless filing unit, at least one individual's age needs to be no greater than this age (but no less than the EITC_MinEligAge) in order to be eligible for an earned income tax credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: int
Known Values:
2013: 64
Valid Range: min = 0 and max = 125
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_InvestIncome_c
TB Name: Maximum investment income before EITC reduction
Description: The EITC amount is reduced when investment income exceeds this ceiling.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 3300.0
2014: 3350.0
2015: 3400.0
2016: 3400.0
2017: 3450.0
2018: 3500.0
2019: 3600.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_excess_InvestIncome_rt
TB Name: Rate of EITC reduction when investment income exceeds ceiling
Description: The EITC amount is reduced at this rate per dollar of investment income exceeding the ceiling.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_indiv
TB Name: EITC is computed for each spouse based on individual earnings
Description: Current-law value is false implying EITC is filing-unit based; a value of true implies EITC is computed for each individual wage earner. The additional phaseout start for joint filers is not affected by this parameter, nor are investment income and age eligibilty rules.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_sep_filers_elig
TB Name: Separate filers are eligibile for the EITC
Description: Current-law value is false, implying ineligibility.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

+

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_c
Title: Maximum earned income credit
Description: This is the maximum amount of earned income credit taxpayers are eligible for; it depends on how many kids they have.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [0kids, 1kid, 2kids, 3+kids]
2013: [487.0, 3250.0, 5372.0, 6044.0]
2014: [496.0, 3305.0, 5460.0, 6143.0]
2015: [503.0, 3359.0, 5548.0, 6242.0]
2016: [506.0, 3373.0, 5572.0, 6269.0]
2017: [510.0, 3400.0, 5616.0, 6318.0]
2018: [519.0, 3461.0, 5716.0, 6431.0]
2019: [529.0, 3526.0, 5828.0, 6557.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_rt
Title: Earned income credit phasein rate
Description: Pre-phaseout credit is minimum of this rate times earnings and the maximum earned income credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
   for: [0kids, 1kid, 2kids, 3+kids]
2013: [0.0765, 0.34, 0.4, 0.45]
2014: [0.0765, 0.34, 0.4, 0.45]
2015: [0.0765, 0.34, 0.4, 0.45]
2016: [0.0765, 0.34, 0.4, 0.45]
2017: [0.0765, 0.34, 0.4, 0.45]
2018: [0.0765, 0.34, 0.4, 0.45]
2019: [0.0765, 0.34, 0.4, 0.45]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_basic_frac
Title: Fraction of maximum earned income credit paid at zero earnings
Description: This fraction of EITC_c is always paid as a credit and one minus this fraction is applied to the phasein rate, EITC_rt. This fraction is zero under current law.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0.0 and max = 1.0
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_prt
Title: Earned income credit phaseout rate
Description: Earned income credit begins to decrease at the this rate when AGI is higher than earned income credit phaseout start AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
   for: [0kids, 1kid, 2kids, 3+kids]
2013: [0.0765, 0.1598, 0.2106, 0.2106]
2014: [0.0765, 0.1598, 0.2106, 0.2106]
2015: [0.0765, 0.1598, 0.2106, 0.2106]
2016: [0.0765, 0.1598, 0.2106, 0.2106]
2017: [0.0765, 0.1598, 0.2106, 0.2106]
2018: [0.0765, 0.1598, 0.2106, 0.2106]
2019: [0.0765, 0.1598, 0.2106, 0.2106]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_ps
Title: Earned income credit phaseout start AGI
Description: If AGI is higher than this threshold, the amount of EITC will start to decrease at the phaseout rate.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [0kids, 1kid, 2kids, 3+kids]
2013: [7970.0, 17530.0, 17530.0, 17530.0]
2014: [8110.0, 17830.0, 17830.0, 17830.0]
2015: [8250.0, 18150.0, 18150.0, 18150.0]
2016: [8270.0, 18190.0, 18190.0, 18190.0]
2017: [8340.0, 18340.0, 18340.0, 18340.0]
2018: [8490.0, 18660.0, 18660.0, 18660.0]
2019: [8650.0, 19030.0, 19030.0, 19030.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_ps_MarriedJ
Title: Extra earned income credit phaseout start AGI for married filling jointly
Description: This is the additional amount added on the regular phaseout start amount for taxpayers with filling status of married filing jointly.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [0kids, 1kid, 2kids, 3+kids]
2013: [5340.0, 5340.0, 5340.0, 5340.0]
2014: [5430.0, 5430.0, 5430.0, 5430.0]
2015: [5500.0, 5500.0, 5500.0, 5500.0]
2016: [5550.0, 5550.0, 5550.0, 5550.0]
2017: [5590.0, 5590.0, 5590.0, 5590.0]
2018: [5680.0, 5690.0, 5690.0, 5690.0]
2019: [5800.0, 5790.0, 5790.0, 5790.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_MinEligAge
Title: Minimum Age for Childless EITC Eligibility
Description: For a childless filing unit, at least one individual's age needs to be no less than this age (but no greater than the EITC_MaxEligAge) in order to be eligible for an earned income tax credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: int
Known Values:
2013: 25
2014: 25
2015: 25
2016: 25
2017: 25
2018: 25
2019: 25
Valid Range: min = 0 and max = 125
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_MaxEligAge
Title: Maximum Age for Childless EITC Eligibility
Description: For a childless filing unit, at least one individual's age needs to be no greater than this age (but no less than the EITC_MinEligAge) in order to be eligible for an earned income tax credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: int
Known Values:
2013: 64
2014: 64
2015: 64
2016: 64
2017: 64
2018: 64
2019: 64
Valid Range: min = 0 and max = 125
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_InvestIncome_c
Title: Maximum investment income before EITC reduction
Description: The EITC amount is reduced when investment income exceeds this ceiling.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 3300.0
2014: 3350.0
2015: 3400.0
2016: 3400.0
2017: 3450.0
2018: 3500.0
2019: 3600.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_excess_InvestIncome_rt
Title: Rate of EITC reduction when investment income exceeds ceiling
Description: The EITC amount is reduced at this rate per dollar of investment income exceeding the ceiling.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 9e+99
2014: 9e+99
2015: 9e+99
2016: 9e+99
2017: 9e+99
2018: 9e+99
2019: 9e+99
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_indiv
Title: EITC is computed for each spouse based on individual earnings
Description: Current-law value is false implying EITC is filing-unit based; a value of true implies EITC is computed for each individual wage earner. The additional phaseout start for joint filers is not affected by this parameter, nor are investment income and age eligibilty rules.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Refundable Credits — Earned Income Tax Credit
tc Name: EITC_sep_filers_elig
Title: Separate filers are eligibile for the EITC
Description: Current-law value is false, implying ineligibility.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

-

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_c
TB Name: New refundable child tax credit maximum amount per child
Description: In addition to all credits currently available for dependents, this parameter gives each qualifying child a new refundable credit with this maximum amount.
Notes: Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_c_under5_bonus
TB Name: Bonus new refundable child tax credit maximum for qualifying children under five
Description: The maximum amount of the new refundable child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_for_all
TB Name: Whether or not maximum amount of the new refundable child tax credit is available to all
Description: The maximum amount of the new refundable child tax credit does not depend on AGI when true; otherwise, see CTC_new_rt.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_rt
TB Name: New refundable child tax credit amount phasein rate
Description: The maximum amount of the new child tax credit is increased at this rate per dollar of positive AGI until CTC_new_c times the number of qualified children is reached if CTC_new_for_all is false; if CTC_new_for_all is true, there is no AGI limitation to the maximum amount.
Notes: Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_ps
TB Name: New refundable child tax credit phaseout starting AGI
Description: The total amount of new child tax credit is reduced for taxpayers with AGI higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 0.0 MARS=single
2018: 0.0 MARS=mjoint
2018: 0.0 MARS=mseparate
2018: 0.0 MARS=headhh
2018: 0.0 MARS=widow
2019: 0.0 MARS=single
2019: 0.0 MARS=mjoint
2019: 0.0 MARS=mseparate
2019: 0.0 MARS=headhh
2019: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_prt
TB Name: New refundable child tax credit amount phaseout rate
Description: The total amount of the new child tax credit is reduced at this rate per dollar exceeding the phaseout starting AGI, CTC_new_ps.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_refund_limited
TB Name: New child tax credit refund limited to a decimal fraction of payroll taxes
Description: Specifies whether the new child tax credit refund is limited by the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt).
Notes: Set this parameter to true to limit the refundability or false to allow full refundability for all taxpayers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_refund_limit_payroll_rt
TB Name: New child tax credit refund limit rate (decimal fraction of payroll taxes)
Description: The fraction of payroll taxes (employee plus employer shares, but excluding all Medicare payroll taxes) that serves as a limit to the amount of new child tax credit that can be refunded.
Notes: Set this parameter to zero for no refundability; set it to 9e99 for unlimited refundability for taxpayers with payroll tax liabilities.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_refund_limited_all_payroll
TB Name: New child tax credit refund limit applies to all FICA taxes, not just OASDI
Description: Specifies whether the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt) applies to all FICA taxes (true) or just OASDI taxes (false).
Notes: If the new CTC is limited, set this parameter to true to limit the refundability to all FICA taxes or false to limit refundabiity to OASDI taxes.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

+

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_c
Title: New refundable child tax credit maximum amount per child
Description: In addition to all credits currently available for dependents, this parameter gives each qualifying child a new refundable credit with this maximum amount.
Notes: Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_c_under5_bonus
Title: Bonus new refundable child tax credit maximum for qualifying children under five
Description: The maximum amount of the new refundable child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_for_all
Title: Whether or not maximum amount of the new refundable child tax credit is available to all
Description: The maximum amount of the new refundable child tax credit does not depend on AGI when true; otherwise, see CTC_new_rt.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_rt
Title: New refundable child tax credit amount phasein rate
Description: The maximum amount of the new child tax credit is increased at this rate per dollar of positive AGI until CTC_new_c times the number of qualified children is reached if CTC_new_for_all is false; if CTC_new_for_all is true, there is no AGI limitation to the maximum amount.
Notes: Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_ps
Title: New refundable child tax credit phaseout starting AGI
Description: The total amount of new child tax credit is reduced for taxpayers with AGI higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_prt
Title: New refundable child tax credit amount phaseout rate
Description: The total amount of the new child tax credit is reduced at this rate per dollar exceeding the phaseout starting AGI, CTC_new_ps.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_refund_limited
Title: New child tax credit refund limited to a decimal fraction of payroll taxes
Description: Specifies whether the new child tax credit refund is limited by the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt).
Notes: Set this parameter to true to limit the refundability or false to allow full refundability for all taxpayers.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_refund_limit_payroll_rt
Title: New child tax credit refund limit rate (decimal fraction of payroll taxes)
Description: The fraction of payroll taxes (employee plus employer shares, but excluding all Medicare payroll taxes) that serves as a limit to the amount of new child tax credit that can be refunded.
Notes: Set this parameter to zero for no refundability; set it to 9e99 for unlimited refundability for taxpayers with payroll tax liabilities.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — New Refundable Child Tax Credit
tc Name: CTC_new_refund_limited_all_payroll
Title: New child tax credit refund limit applies to all FICA taxes, not just OASDI
Description: Specifies whether the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt) applies to all FICA taxes (true) or just OASDI taxes (false).
Notes: If the new CTC is limited, set this parameter to true to limit the refundability to all FICA taxes or false to limit refundabiity to OASDI taxes.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

-

Refundable Credits — Personal Refundable Credit
tc Name: II_credit
TB Name: Personal refundable credit maximum amount
Description: This credit amount is fully refundable and is phased out based on AGI. It is available to tax units who would otherwise not file.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 0.0 MARS=single
2018: 0.0 MARS=mjoint
2018: 0.0 MARS=mseparate
2018: 0.0 MARS=headhh
2018: 0.0 MARS=widow
2019: 0.0 MARS=single
2019: 0.0 MARS=mjoint
2019: 0.0 MARS=mseparate
2019: 0.0 MARS=headhh
2019: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Personal Refundable Credit
tc Name: II_credit_ps
TB Name: Personal refundable credit phaseout start
Description: The personal refundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
2014: 0.0 MARS=single
2014: 0.0 MARS=mjoint
2014: 0.0 MARS=mseparate
2014: 0.0 MARS=headhh
2014: 0.0 MARS=widow
2015: 0.0 MARS=single
2015: 0.0 MARS=mjoint
2015: 0.0 MARS=mseparate
2015: 0.0 MARS=headhh
2015: 0.0 MARS=widow
2016: 0.0 MARS=single
2016: 0.0 MARS=mjoint
2016: 0.0 MARS=mseparate
2016: 0.0 MARS=headhh
2016: 0.0 MARS=widow
2017: 0.0 MARS=single
2017: 0.0 MARS=mjoint
2017: 0.0 MARS=mseparate
2017: 0.0 MARS=headhh
2017: 0.0 MARS=widow
2018: 0.0 MARS=single
2018: 0.0 MARS=mjoint
2018: 0.0 MARS=mseparate
2018: 0.0 MARS=headhh
2018: 0.0 MARS=widow
2019: 0.0 MARS=single
2019: 0.0 MARS=mjoint
2019: 0.0 MARS=mseparate
2019: 0.0 MARS=headhh
2019: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Personal Refundable Credit
tc Name: II_credit_prt
TB Name: Personal refundable credit phaseout rate
Description: The personal refundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_ps threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Refundable Credits — Personal Refundable Credit
tc Name: II_credit
Title: Personal refundable credit maximum amount
Description: This credit amount is fully refundable and is phased out based on AGI. It is available to tax units who would otherwise not file.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Personal Refundable Credit
tc Name: II_credit_ps
Title: Personal refundable credit phaseout start
Description: The personal refundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Personal Refundable Credit
tc Name: II_credit_prt
Title: Personal refundable credit phaseout rate
Description: The personal refundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_ps threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

-

Refundable Credits — Refundable Payroll Tax Credit
tc Name: RPTC_c
TB Name: Maximum refundable payroll tax credit
Description: This is the maximum amount of the refundable payroll tax credit for each taxpayer/spouse.
Notes: Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Refundable Payroll Tax Credit
tc Name: RPTC_rt
TB Name: Refundable payroll tax credit phasein rate
Description: Pre-phaseout credit is minimum of this rate times earnings and the maximum refundable payroll tax credit, where earnings is defined as in FICA and SECA.
Notes: Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Refundable Credits — Refundable Payroll Tax Credit
tc Name: RPTC_c
Title: Maximum refundable payroll tax credit
Description: This is the maximum amount of the refundable payroll tax credit for each taxpayer/spouse.
Notes: Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Refundable Credits — Refundable Payroll Tax Credit
tc Name: RPTC_rt
Title: Refundable payroll tax credit phasein rate
Description: Pre-phaseout credit is minimum of this rate times earnings and the maximum refundable payroll tax credit, where earnings is defined as in FICA and SECA.
Notes: Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

3n. Surtaxes

-

Surtaxes — New Minimum Tax
tc Name: FST_AGI_trt
TB Name: New minimum tax; rate as a decimal fraction of AGI
Description: Individual income taxes and the employee share of payroll taxes are credited against this minimum tax, so the surtax is the difference between the tax rate times AGI and the credited taxes. The new minimum tax is similar to the Fair Share Tax, except that no credits are exempted from the base.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Surtaxes — New Minimum Tax
tc Name: FST_AGI_thd_lo
TB Name: Minimum AGI needed to be subject to the new minimum tax
Description: A taxpayer is only subject to the new minimum tax if they exceed this level of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 1000000.0 MARS=single
2013: 1000000.0 MARS=mjoint
2013: 500000.0 MARS=mseparate
2013: 1000000.0 MARS=headhh
2013: 1000000.0 MARS=widow
2014: 1000000.0 MARS=single
2014: 1000000.0 MARS=mjoint
2014: 500000.0 MARS=mseparate
2014: 1000000.0 MARS=headhh
2014: 1000000.0 MARS=widow
2015: 1000000.0 MARS=single
2015: 1000000.0 MARS=mjoint
2015: 500000.0 MARS=mseparate
2015: 1000000.0 MARS=headhh
2015: 1000000.0 MARS=widow
2016: 1000000.0 MARS=single
2016: 1000000.0 MARS=mjoint
2016: 500000.0 MARS=mseparate
2016: 1000000.0 MARS=headhh
2016: 1000000.0 MARS=widow
2017: 1000000.0 MARS=single
2017: 1000000.0 MARS=mjoint
2017: 500000.0 MARS=mseparate
2017: 1000000.0 MARS=headhh
2017: 1000000.0 MARS=widow
2018: 1000000.0 MARS=single
2018: 1000000.0 MARS=mjoint
2018: 500000.0 MARS=mseparate
2018: 1000000.0 MARS=headhh
2018: 1000000.0 MARS=widow
2019: 1000000.0 MARS=single
2019: 1000000.0 MARS=mjoint
2019: 500000.0 MARS=mseparate
2019: 1000000.0 MARS=headhh
2019: 1000000.0 MARS=widow
Valid Range: min = 0 and max = FST_AGI_thd_hi
Out-of-Range Action: error

Surtaxes — New Minimum Tax
tc Name: FST_AGI_thd_hi
TB Name: AGI level at which the New Minimum Tax is fully phased in
Description: The new minimum tax will be fully phased in at this level of AGI. If there is no phase-in, this upper threshold should be set equal to the lower AGI threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 2000000.0 MARS=single
2013: 2000000.0 MARS=mjoint
2013: 1000000.0 MARS=mseparate
2013: 2000000.0 MARS=headhh
2013: 2000000.0 MARS=widow
2014: 2000000.0 MARS=single
2014: 2000000.0 MARS=mjoint
2014: 1000000.0 MARS=mseparate
2014: 2000000.0 MARS=headhh
2014: 2000000.0 MARS=widow
2015: 2000000.0 MARS=single
2015: 2000000.0 MARS=mjoint
2015: 1000000.0 MARS=mseparate
2015: 2000000.0 MARS=headhh
2015: 2000000.0 MARS=widow
2016: 2000000.0 MARS=single
2016: 2000000.0 MARS=mjoint
2016: 1000000.0 MARS=mseparate
2016: 2000000.0 MARS=headhh
2016: 2000000.0 MARS=widow
2017: 2000000.0 MARS=single
2017: 2000000.0 MARS=mjoint
2017: 1000000.0 MARS=mseparate
2017: 2000000.0 MARS=headhh
2017: 2000000.0 MARS=widow
2018: 2000000.0 MARS=single
2018: 2000000.0 MARS=mjoint
2018: 1000000.0 MARS=mseparate
2018: 2000000.0 MARS=headhh
2018: 2000000.0 MARS=widow
2019: 2000000.0 MARS=single
2019: 2000000.0 MARS=mjoint
2019: 1000000.0 MARS=mseparate
2019: 2000000.0 MARS=headhh
2019: 2000000.0 MARS=widow
Valid Range: min = FST_AGI_thd_lo and max = 9e+99
Out-of-Range Action: error

+

Surtaxes — New Minimum Tax
tc Name: FST_AGI_trt
Title: New minimum tax; rate as a decimal fraction of AGI
Description: Individual income taxes and the employee share of payroll taxes are credited against this minimum tax, so the surtax is the difference between the tax rate times AGI and the credited taxes. The new minimum tax is similar to the Fair Share Tax, except that no credits are exempted from the base.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Surtaxes — New Minimum Tax
tc Name: FST_AGI_thd_lo
Title: Minimum AGI needed to be subject to the new minimum tax
Description: A taxpayer is only subject to the new minimum tax if they exceed this level of AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
2014: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
2015: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
2016: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
2017: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
2018: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
2019: [1000000.0, 1000000.0, 500000.0, 1000000.0, 1000000.0]
Valid Range: min = 0 and max = FST_AGI_thd_hi
Out-of-Range Action: error

Surtaxes — New Minimum Tax
tc Name: FST_AGI_thd_hi
Title: AGI level at which the New Minimum Tax is fully phased in
Description: The new minimum tax will be fully phased in at this level of AGI. If there is no phase-in, this upper threshold should be set equal to the lower AGI threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
2014: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
2015: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
2016: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
2017: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
2018: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
2019: [2000000.0, 2000000.0, 1000000.0, 2000000.0, 2000000.0]
Valid Range: min = FST_AGI_thd_lo and max = 9e+99
Out-of-Range Action: error

-

Surtaxes — New AGI Surtax
tc Name: AGI_surtax_trt
TB Name: New AGI surtax rate
Description: The surtax rate is applied to the portion of Adjusted Gross Income above the AGI surtax threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Surtaxes — New AGI Surtax
tc Name: AGI_surtax_thd
TB Name: Threshold for the new AGI surtax
Description: The aggregate gross income above this AGI surtax threshold is taxed at surtax rate on AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 9e+99 MARS=single
2013: 9e+99 MARS=mjoint
2013: 9e+99 MARS=mseparate
2013: 9e+99 MARS=headhh
2013: 9e+99 MARS=widow
2014: 9e+99 MARS=single
2014: 9e+99 MARS=mjoint
2014: 9e+99 MARS=mseparate
2014: 9e+99 MARS=headhh
2014: 9e+99 MARS=widow
2015: 9e+99 MARS=single
2015: 9e+99 MARS=mjoint
2015: 9e+99 MARS=mseparate
2015: 9e+99 MARS=headhh
2015: 9e+99 MARS=widow
2016: 9e+99 MARS=single
2016: 9e+99 MARS=mjoint
2016: 9e+99 MARS=mseparate
2016: 9e+99 MARS=headhh
2016: 9e+99 MARS=widow
2017: 9e+99 MARS=single
2017: 9e+99 MARS=mjoint
2017: 9e+99 MARS=mseparate
2017: 9e+99 MARS=headhh
2017: 9e+99 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Surtaxes — New AGI Surtax
tc Name: AGI_surtax_trt
Title: New AGI surtax rate
Description: The surtax rate is applied to the portion of Adjusted Gross Income above the AGI surtax threshold.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Surtaxes — New AGI Surtax
tc Name: AGI_surtax_thd
Title: Threshold for the new AGI surtax
Description: The aggregate gross income above this AGI surtax threshold is taxed at surtax rate on AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2014: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2015: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2016: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2017: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Surtaxes — Lump-Sum Tax
tc Name: LST
TB Name: Dollar amount of lump-sum tax
Description: The lump-sum tax is levied on every member of a tax filing unit. The lump-sum tax is included only in combined taxes; it is not included in income or payroll taxes.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = -9e+99 and max = 9e+99
Out-of-Range Action: error

+

Surtaxes — Lump-Sum Tax
tc Name: LST
Title: Dollar amount of lump-sum tax
Description: The lump-sum tax is levied on every member of a tax filing unit. The lump-sum tax is included only in combined taxes; it is not included in income or payroll taxes.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = -9e+99 and max = 9e+99
Out-of-Range Action: error

3o. Universal Basic Income

-

Universal Basic Income — UBI Benefits
tc Name: UBI_u18
TB Name: UBI benefit for those under 18
Description: UBI benefit provided to people under 18.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Universal Basic Income — UBI Benefits
tc Name: UBI_1820
TB Name: UBI benefit for those 18 through 20
Description: UBI benefit provided to people 18-20 years of age.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Universal Basic Income — UBI Benefits
tc Name: UBI_21
TB Name: UBI benefit for those 21 and over
Description: UBI benefit provided to people 21 and over.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

+

Universal Basic Income — UBI Benefits
tc Name: UBI_u18
Title: UBI benefit for those under 18
Description: UBI benefit provided to people under 18.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Universal Basic Income — UBI Benefits
tc Name: UBI_1820
Title: UBI benefit for those 18 through 20
Description: UBI benefit provided to people 18-20 years of age.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Universal Basic Income — UBI Benefits
tc Name: UBI_21
Title: UBI benefit for those 21 and over
Description: UBI benefit provided to people 21 and over.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

-

Universal Basic Income — UBI Taxability
tc Name: UBI_ecrt
TB Name: Fraction of UBI benefits excluded from AGI
Description: One minus this fraction of UBI benefits are taxable and will be added to AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Universal Basic Income — UBI Taxability
tc Name: UBI_ecrt
Title: Fraction of UBI benefits excluded from AGI
Description: One minus this fraction of UBI benefits are taxable and will be added to AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

3p. Benefits

-

Benefits — Benefit Repeal
tc Name: BEN_ssi_repeal
TB Name: SSI benefit repeal switch
Description: SSI benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_housing_repeal
TB Name: Housing benefit repeal switch
Description: Housing benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_snap_repeal
TB Name: SNAP benefit repeal switch
Description: SNAP benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_tanf_repeal
TB Name: TANF benefit repeal switch
Description: TANF benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_vet_repeal
TB Name: Veterans benefit repeal switch
Description: Veterans benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_wic_repeal
TB Name: WIC benefit repeal switch
Description: WIC benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_mcare_repeal
TB Name: Medicare benefit repeal switch
Description: Medicare benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_mcaid_repeal
TB Name: Medicaid benefit repeal switch
Description: Medicaid benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_oasdi_repeal
TB Name: Social Security benefit repeal switch
Description: Social Security benefits (e02400) can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_ui_repeal
TB Name: Unemployment insurance benefit repeal switch
Description: Unemployment insurance benefits (e02300) can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_other_repeal
TB Name: Other benefit repeal switch
Description: Other benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

+

Benefits — Benefit Repeal
tc Name: BEN_ssi_repeal
Title: SSI benefit repeal switch
Description: SSI benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_housing_repeal
Title: Housing benefit repeal switch
Description: Housing benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_snap_repeal
Title: SNAP benefit repeal switch
Description: SNAP benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_tanf_repeal
Title: TANF benefit repeal switch
Description: TANF benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_vet_repeal
Title: Veterans benefit repeal switch
Description: Veterans benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_wic_repeal
Title: WIC benefit repeal switch
Description: WIC benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_mcare_repeal
Title: Medicare benefit repeal switch
Description: Medicare benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_mcaid_repeal
Title: Medicaid benefit repeal switch
Description: Medicaid benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_oasdi_repeal
Title: Social Security benefit repeal switch
Description: Social Security benefits (e02400) can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_ui_repeal
Title: Unemployment insurance benefit repeal switch
Description: Unemployment insurance benefits (e02300) can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Benefits — Benefit Repeal
tc Name: BEN_other_repeal
Title: Other benefit repeal switch
Description: Other benefits can be repealed by switching this parameter to true.
Has An Effect When Using:   PUF data: False   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

3q. Other Parameters

-

Other Parameters — Not in Tax-Brain webapp
tc Name: SS_percentage1
Long Name: Social Security taxable income decimal fraction 1
Description: Under current law if their provisional income is above the first threshold for Social Security taxability but below the second threshold, taxpayers need to apply this fraction to both the excess of their provisional income over the first threshold and their Social Security benefits, and then include the smaller one in their AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.5
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: SS_percentage2
Long Name: Social Security taxable income decimal fraction 2
Description: Under current law if their provisional income is above the second threshold for Social Security taxability, taxpayers need to apply this fraction to both the excess of their provisional income over the second threshold and their social security benefits, and then include the smaller one in their AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.85
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: II_em_ps
Long Name: Personal exemption phaseout starting income
Description: If taxpayers' AGI is above this level, their personal exemption will start to decrease at the personal exemption phaseout rate (PEP provision).
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 250000.0 MARS=single
2013: 300000.0 MARS=mjoint
2013: 150000.0 MARS=mseparate
2013: 275000.0 MARS=headhh
2013: 300000.0 MARS=widow
2014: 254200.0 MARS=single
2014: 305050.0 MARS=mjoint
2014: 152525.0 MARS=mseparate
2014: 279650.0 MARS=headhh
2014: 305050.0 MARS=widow
2015: 258250.0 MARS=single
2015: 309900.0 MARS=mjoint
2015: 154950.0 MARS=mseparate
2015: 284040.0 MARS=headhh
2015: 309900.0 MARS=widow
2016: 259400.0 MARS=single
2016: 311300.0 MARS=mjoint
2016: 155650.0 MARS=mseparate
2016: 285350.0 MARS=headhh
2016: 311300.0 MARS=widow
2017: 261500.0 MARS=single
2017: 313800.0 MARS=mjoint
2017: 156900.0 MARS=mseparate
2017: 287650.0 MARS=headhh
2017: 313800.0 MARS=widow
2018: 9e+99 MARS=single
2018: 9e+99 MARS=mjoint
2018: 9e+99 MARS=mseparate
2018: 9e+99 MARS=headhh
2018: 9e+99 MARS=widow
2019: 9e+99 MARS=single
2019: 9e+99 MARS=mjoint
2019: 9e+99 MARS=mseparate
2019: 9e+99 MARS=headhh
2019: 9e+99 MARS=widow
2020: 9e+99 MARS=single
2020: 9e+99 MARS=mjoint
2020: 9e+99 MARS=mseparate
2020: 9e+99 MARS=headhh
2020: 9e+99 MARS=widow
2021: 9e+99 MARS=single
2021: 9e+99 MARS=mjoint
2021: 9e+99 MARS=mseparate
2021: 9e+99 MARS=headhh
2021: 9e+99 MARS=widow
2022: 9e+99 MARS=single
2022: 9e+99 MARS=mjoint
2022: 9e+99 MARS=mseparate
2022: 9e+99 MARS=headhh
2022: 9e+99 MARS=widow
2023: 9e+99 MARS=single
2023: 9e+99 MARS=mjoint
2023: 9e+99 MARS=mseparate
2023: 9e+99 MARS=headhh
2023: 9e+99 MARS=widow
2024: 9e+99 MARS=single
2024: 9e+99 MARS=mjoint
2024: 9e+99 MARS=mseparate
2024: 9e+99 MARS=headhh
2024: 9e+99 MARS=widow
2025: 9e+99 MARS=single
2025: 9e+99 MARS=mjoint
2025: 9e+99 MARS=mseparate
2025: 9e+99 MARS=headhh
2025: 9e+99 MARS=widow
2026: 316457.0 MARS=single
2026: 379748.0 MARS=mjoint
2026: 189874.0 MARS=mseparate
2026: 348102.0 MARS=headhh
2026: 379748.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: STD_Dep
Long Name: Standard deduction for dependents
Description: This is the maximum standard deduction for dependents.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 1000.0
2014: 1000.0
2015: 1050.0
2016: 1050.0
2017: 1050.0
2018: 1050.0
2019: 1100.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: STD_allow_charity_ded_nonitemizers
Long Name: Allow standard deduction filers to take the charitable contributions deduction
Description: Extends the charitable contributions deduction to taxpayers who take the standard deduction. The same ceilings, floor, and haircuts applied to itemized deduction for charitable contributions also apply here.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: AMT_child_em
Long Name: Child AMT exemption additional income base
Description: The child's AMT exemption is capped by this amount plus the child's earned income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 7150.0
2014: 7250.0
2015: 7400.0
2016: 7400.0
2017: 7500.0
2018: 7600.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: AMT_child_em_c_age
Long Name: Age ceiling for special AMT exemption
Description: Individuals under this age must use the child AMT exemption rules.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: int
Known Values:
2013: 18
Valid Range: min = 0 and max = 30
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: AMT_em_pe
Long Name: AMT exemption phaseout ending AMT taxable income for Married filing Separately
Description: The AMT exemption is entirely disallowed beyond this AMT taxable income level for individuals who are married but filing separately.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 238550.0
2014: 242450.0
2015: 246250.0
2016: 247450.0
2017: 249450.0
2018: 718800.0
2019: 733700.0
2020: 745292.46
2021: 761539.84
2022: 778826.79
2023: 796817.69
2024: 814507.04
2025: 832100.39
2026: 300574.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: LLC_Expense_c
Long Name: Lifetime learning credit expense limit
Description: The maximum expense eligible for lifetime learning credit, per child.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 10000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: ETC_pe_Single
Long Name: Education tax credit phaseout ends (Single)
Description: The education tax credit will be zero for those taxpayers of single filing status with modified AGI (in thousands) higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 63.0
2014: 64.0
2015: 65.0
2016: 65.0
2017: 66.0
2018: 67.0
2019: 68.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: ETC_pe_Married
Long Name: Education tax credit phaseout ends (Married)
Description: The education tax credit will be zero for those taxpayers of married filing status with modified AGI level (in thousands) higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 127.0
2014: 128.0
2015: 130.0
2016: 131.0
2017: 132.0
2018: 134.0
2019: 136.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: CR_Charity_rt
Long Name: Charity Credit rate
Description: If greater than zero, this decimal fraction represents the portion of total charitable contributions provided as a nonrefundable tax credit.
Notes: Credit claimed will be (rt) * (e19800 + e20100)
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: CR_Charity_f
Long Name: Charity Credit Floor
Description: Only charitable giving in excess of this dollar amount is eligible for the charity credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0 MARS=single
2013: 0.0 MARS=mjoint
2013: 0.0 MARS=mseparate
2013: 0.0 MARS=headhh
2013: 0.0 MARS=widow
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: CR_Charity_frt
Long Name: Charity Credit Floor Rate
Description: Only charitable giving in excess of this decimal fraction of AGI is eligible for the charity credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

+

Other Parameters — Not in Tax-Brain webapp
tc Name: SS_percentage1
Title: Social Security taxable income decimal fraction 1
Description: Under current law if their provisional income is above the first threshold for Social Security taxability but below the second threshold, taxpayers need to apply this fraction to both the excess of their provisional income over the first threshold and their Social Security benefits, and then include the smaller one in their AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.5
2014: 0.5
2015: 0.5
2016: 0.5
2017: 0.5
2018: 0.5
2019: 0.5
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: SS_percentage2
Title: Social Security taxable income decimal fraction 2
Description: Under current law if their provisional income is above the second threshold for Social Security taxability, taxpayers need to apply this fraction to both the excess of their provisional income over the second threshold and their social security benefits, and then include the smaller one in their AGI.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.85
2014: 0.85
2015: 0.85
2016: 0.85
2017: 0.85
2018: 0.85
2019: 0.85
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: II_em_ps
Title: Personal exemption phaseout starting income
Description: If taxpayers' AGI is above this level, their personal exemption will start to decrease at the personal exemption phaseout rate (PEP provision).
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [250000.0, 300000.0, 150000.0, 275000.0, 300000.0]
2014: [254200.0, 305050.0, 152525.0, 279650.0, 305050.0]
2015: [258250.0, 309900.0, 154950.0, 284040.0, 309900.0]
2016: [259400.0, 311300.0, 155650.0, 285350.0, 311300.0]
2017: [261500.0, 313800.0, 156900.0, 287650.0, 313800.0]
2018: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
2019: [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: STD_Dep
Title: Standard deduction for dependents
Description: This is the maximum standard deduction for dependents.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 1000.0
2014: 1000.0
2015: 1050.0
2016: 1050.0
2017: 1050.0
2018: 1050.0
2019: 1100.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: STD_allow_charity_ded_nonitemizers
Title: Allow standard deduction filers to take the charitable contributions deduction
Description: Extends the charitable contributions deduction to taxpayers who take the standard deduction. The same ceilings, floor, and haircuts applied to itemized deduction for charitable contributions also apply here.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: bool
Known Values:
2013: False
2014: False
2015: False
2016: False
2017: False
2018: False
2019: False
Valid Range: min = False and max = True
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: AMT_child_em
Title: Child AMT exemption additional income base
Description: The child's AMT exemption is capped by this amount plus the child's earned income.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 7150.0
2014: 7250.0
2015: 7400.0
2016: 7400.0
2017: 7500.0
2018: 7600.0
2019: 0.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: AMT_child_em_c_age
Title: Age ceiling for special AMT exemption
Description: Individuals under this age must use the child AMT exemption rules.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: int
Known Values:
2013: 18
2014: 18
2015: 18
2016: 18
2017: 18
2018: 18
2019: 18
Valid Range: min = 0 and max = 30
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: AMT_em_pe
Title: AMT exemption phaseout ending AMT taxable income for Married filing Separately
Description: The AMT exemption is entirely disallowed beyond this AMT taxable income level for individuals who are married but filing separately.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 238550.0
2014: 242450.0
2015: 246250.0
2016: 247450.0
2017: 249450.0
2018: 718800.0
2019: 733700.0
2020: 745292.46
2021: 761539.84
2022: 778826.79
2023: 796817.69
2024: 814507.04
2025: 832100.39
2026: 300574.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: LLC_Expense_c
Title: Lifetime learning credit expense limit
Description: The maximum expense eligible for lifetime learning credit, per child.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 10000.0
2014: 10000.0
2015: 10000.0
2016: 10000.0
2017: 10000.0
2018: 10000.0
2019: 10000.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: ETC_pe_Single
Title: Education tax credit phaseout ends (Single)
Description: The education tax credit will be zero for those taxpayers of single filing status with modified AGI (in thousands) higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 63.0
2014: 64.0
2015: 65.0
2016: 65.0
2017: 66.0
2018: 67.0
2019: 68.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: ETC_pe_Married
Title: Education tax credit phaseout ends (Married)
Description: The education tax credit will be zero for those taxpayers of married filing status with modified AGI level (in thousands) higher than this level.
Has An Effect When Using:   PUF data: True   CPS data: False
Can Be Inflation Indexed: True     Is Inflation Indexed: True
Value Type: float
Known Values:
2013: 127.0
2014: 128.0
2015: 130.0
2016: 131.0
2017: 132.0
2018: 134.0
2019: 136.0
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: CR_Charity_rt
Title: Charity Credit rate
Description: If greater than zero, this decimal fraction represents the portion of total charitable contributions provided as a nonrefundable tax credit.
Notes: Credit claimed will be (rt) * (e19800 + e20100)
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: CR_Charity_f
Title: Charity Credit Floor
Description: Only charitable giving in excess of this dollar amount is eligible for the charity credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
   for: [single, mjoint, mseparate, headhh, widow]
2013: [0.0, 0.0, 0.0, 0.0, 0.0]
2014: [0.0, 0.0, 0.0, 0.0, 0.0]
2015: [0.0, 0.0, 0.0, 0.0, 0.0]
2016: [0.0, 0.0, 0.0, 0.0, 0.0]
2017: [0.0, 0.0, 0.0, 0.0, 0.0]
2018: [0.0, 0.0, 0.0, 0.0, 0.0]
2019: [0.0, 0.0, 0.0, 0.0, 0.0]
Valid Range: min = 0 and max = 9e+99
Out-of-Range Action: error

Other Parameters — Not in Tax-Brain webapp
tc Name: CR_Charity_frt
Title: Charity Credit Floor Rate
Description: Only charitable giving in excess of this decimal fraction of AGI is eligible for the charity credit.
Has An Effect When Using:   PUF data: True   CPS data: True
Can Be Inflation Indexed: False     Is Inflation Indexed: False
Value Type: float
Known Values:
2013: 0.0
2014: 0.0
2015: 0.0
2016: 0.0
2017: 0.0
2018: 0.0
2019: 0.0
Valid Range: min = 0 and max = 1
Out-of-Range Action: error

4. Input Variables

From 65f5083705aaa636398b64a1b6d3001b100cb2e5 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Fri, 1 May 2020 11:00:28 -0400 Subject: [PATCH 56/64] Updates for forthcoming paramtools release - Adds back expand_array tests - Use to_array labels argument in '_{attr}' logic - Move initialize logic to __init__ method but keep initialize for legacy purposes --- taxcalc/parameters.py | 111 +++++++------ taxcalc/policy.py | 4 +- taxcalc/tests/test_parameters.py | 277 +++++++++++++++++++++++++++++++ 3 files changed, 343 insertions(+), 49 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 153faffe7..1c2164293 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -67,8 +67,49 @@ class Parameters(pt.Parameters): JSON_START_YEAR = None LAST_KNOWN_YEAR = None - def __init__(self, *args, **kwargs): - pass + def __init__(self, start_year=None, num_years=None, last_known_year=None, + removed=None, redefined=None, wage_indexed=None, **kwargs): + # In case we need to wait for this to be called from the + # initialize method for legacy reasons. + if not start_year or not num_years: + return + self._wage_growth_rates = None + self._inflation_rates = None + if ( + self.defaults is None and + self.DEFAULTS_FILE_PATH is not None and + self.DEFAULTS_FILE_NAME + ): + self.defaults = os.path.join( + self.DEFAULTS_FILE_PATH, + self.DEFAULTS_FILE_NAME + ) + + if last_known_year is None: + self._last_known_year = start_year + else: + assert last_known_year >= start_year + assert last_known_year <= self.LAST_BUDGET_YEAR + self._last_known_year = last_known_year + + self._removed_params = removed or self.REMOVED_PARAMS + self._redefined_params = redefined or self.REDEFINED_PARAMS + + self._wage_indexed = wage_indexed or self.WAGE_INDEXED_PARAMS + + if ( + (start_year or self.JSON_START_YEAR) and + "initial_state" not in kwargs + ): + kwargs["initial_state"] = { + "year": start_year or self.JSON_START_YEAR + } + super().__init__(**kwargs) + self._init_values = { + param: copy.deepcopy(data["value"]) + for param, data in self.read_params(self.defaults).items() + if param != "schema" + } def adjust(self, params_or_path, print_warnings=True, **kwargs): """ @@ -224,7 +265,7 @@ def adjust_with_indexing(self, params_or_path, **kwargs): self.delete(to_delete, **kwargs) super().adjust(init_vals, **kwargs) - self.extend(label_to_extend="year") + self.extend(label="year") # 2. Handle -indexed parameters. self.label_to_extend = None @@ -277,8 +318,8 @@ def adjust_with_indexing(self, params_or_path, **kwargs): super().adjust({base_param: vos}, **kwargs) self.extend( params=[base_param], - label_to_extend="year", - label_to_extend_values=list( + label="year", + label_values=list( range(self.start_year, min_index_change_year) ), ) @@ -296,8 +337,8 @@ def adjust_with_indexing(self, params_or_path, **kwargs): if year > self.start_year: self.extend( params=[base_param], - label_to_extend="year", - label_to_extend_values=list( + label="year", + label_values=list( range(self.start_year, year + 1) ), ) @@ -314,7 +355,7 @@ def adjust_with_indexing(self, params_or_path, **kwargs): super().adjust({base_param: vos}, **kwargs) # 2.e Extend values through remaining years. - self.extend(params=[base_param], label_to_extend="year") + self.extend(params=[base_param], label="year") needs_reset.append(base_param) # Re-instate ops. @@ -378,42 +419,20 @@ def inflation_rates(self, year=None): # alias methods below def initialize(self, start_year, num_years, last_known_year=None, - removed=None, redefined=None, wage_indexed=None): - self._wage_growth_rates = None - self._inflation_rates = None - if ( - self.defaults is None and - self.DEFAULTS_FILE_PATH is not None and - self.DEFAULTS_FILE_NAME - ): - self.defaults = os.path.join( - self.DEFAULTS_FILE_PATH, - self.DEFAULTS_FILE_NAME + removed=None, redefined=None, wage_indexed=None, + **kwargs): + """ + Legacy method for initializing a Parameters instance. Projects + should use the __init__ method in the future. + """ + # case where project hasn't been initialized yet. + if getattr(self, "_data", None) is None: + return Parameters.__init__( + self, start_year, num_years, last_known_year=last_known_year, + removed=removed, redefined=redefined, + wage_indexed=wage_indexed, **kwargs ) - if last_known_year is None: - self._last_known_year = start_year - else: - assert last_known_year >= start_year - assert last_known_year <= self.LAST_BUDGET_YEAR - self._last_known_year = last_known_year - - self._removed_params = removed or self.REMOVED_PARAMS - self._redefined_params = redefined or self.REDEFINED_PARAMS - - self._wage_indexed = wage_indexed or self.WAGE_INDEXED_PARAMS - - if start_year or self.JSON_START_YEAR: - initial_state = {"year": start_year or self.JSON_START_YEAR} - else: - initial_state = None - super().__init__(initial_state=initial_state) - self._init_values = { - param: copy.deepcopy(data["value"]) - for param, data in self.read_params(self.defaults).items() - if param != "schema" - } - def _update(self, revision, print_warnings, raise_errors): """ A translation layer on top of Parameters.adjust. Projects @@ -654,10 +673,8 @@ def __getattr__(self, attr): attr.startswith("_") and attr[1:] in super().__getattribute__("_data") ): - state = dict(self.view_state()) - self.clear_state() - value = getattr(self, attr[1:]) - self.set_state(**state) - return value + return self.to_array( + attr[1:], year=list(range(self.start_year, self.end_year + 1)) + ) else: raise AttributeError(f"{attr} not definied.") diff --git a/taxcalc/policy.py b/taxcalc/policy.py index 8b6696e2e..475206b9b 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -73,7 +73,7 @@ class instance: Policy # (3) specify which Policy parameters are wage (rather than price) indexed WAGE_INDEXED_PARAMS = ['SS_Earnings_c', 'SS_Earnings_thd'] - def __init__(self, gfactors=None, only_reading_defaults=False): + def __init__(self, gfactors=None, only_reading_defaults=False, **kwargs): # put JSON contents of DEFAULTS_FILE_NAME into self._vals dictionary super().__init__() # handle gfactors argument @@ -92,7 +92,7 @@ def __init__(self, gfactors=None, only_reading_defaults=False): self.initialize(syr, nyrs, Policy.LAST_KNOWN_YEAR, Policy.REMOVED_PARAMS, Policy.REDEFINED_PARAMS, - Policy.WAGE_INDEXED_PARAMS) + Policy.WAGE_INDEXED_PARAMS, **kwargs) @staticmethod def read_json_reform(obj): diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index c7d85ce0f..d1bb2f5d0 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -5,6 +5,7 @@ # pycodestyle test_parameters.py # pylint --disable=locally-disabled test_parameters.py +import copy import os import json import math @@ -293,6 +294,282 @@ def test_parameters_mentioned(tests_path, jfname, pfname): # following tests access private methods, so pylint: disable=protected-access +class ArrayParams(Parameters): + defaults = { + "schema": { + "labels": { + "year": { + "type": "int", + "validators": {"range": {"min": 2013, "max": 2028}} + }, + "MARS": { + "type": "str", + "validators": { + "choice": { + "choices": [ + "single", + "joint", + "mseparate", + "headhh", + "widow", + # test value of II_brk2 has 6 columns + "extra", + ] + } + } + }, + "idedtype": { + "type": "str", + "validators": { + "choice": {"choices": ["med", "sltx", "retx"]} + } + } + }, + "additional_members": { + "indexable": { + "type": "bool" + }, + "indexed": { + "type": "bool" + }, + }, + "operators": { + "array_first": True, + "label_to_extend": "year" + } + }, + "one_dim": { + "title": "One dimension parameter", + "description": "", + "type": "float", + "indexed": True, + "indexable": True, + "value": [{"year": 2013, "value": 5}] + }, + "two_dim": { + "title": "Two dimension parameter", + "description": "", + "type": "float", + "indexed": True, + "indexable": True, + "value": [ + {"year": 2013, "idedtype": "med", "value": 1}, + {"year": 2013, "idedtype": "sltx", "value": 2}, + {"year": 2013, "idedtype": "retx", "value": 3} + ] + }, + "II_brk2": { + "title": "II_brk2", + "description": "", + "type": "float", + "indexed": True, + "indexable": True, + "value": [ + {"year": 2013, "MARS": "single", "value": 1}, + {"year": 2013, "MARS": "joint", "value": 2}, + {"year": 2013, "MARS": "mseparate", "value": 3}, + {"year": 2013, "MARS": "headhh", "value": 2}, + {"year": 2013, "MARS": "widow", "value": 3}, + {"year": 2013, "MARS": "extra", "value": 3}, + ] + } + } + + # These will be controlled directly through the extend method. + label_to_extend = None + array_first = False + + START_YEAR = 2013 + LAST_YEAR = 2030 + NUM_YEARS = LAST_YEAR - START_YEAR + 1 + + def __init__(self, **kwargs): + super().__init__( + ArrayParams.START_YEAR, + ArrayParams.NUM_YEARS, + **kwargs + ) + self._inflation_rates = [0.02] * self.num_years + self._wage_growth_rates = [0.03] * self.num_years + + def update_params(self, revision, + print_warnings=True, raise_errors=True): + """ + Update parameters given specified revision dictionary. + """ + self._update(revision, print_warnings, raise_errors) + + def set_rates(self): + pass + + +def test_expand_errors(): + params = ArrayParams(label_to_extend=None, array_first=False) + with pytest.raises(paramtools.ValidationError): + params.extend(label="year", label_values=[1, 2, 3]) + + +def test_expand_empty(): + params = ArrayParams(label_to_extend=None, array_first=False) + params.sort_values() + one_dim = copy.deepcopy(params.one_dim) + + params.extend(label="year", label_values=[]) + + params.sort_values() + assert params.one_dim == one_dim + + +def test_expand_1d_scalar(): + yrs = list(range(2013, 2013 + 12 + 1)) + val = 10.0 + exp = np.array([val * math.pow(1.02, i) for i in range(len(yrs))]) + + params = ArrayParams(label_to_extend=None, array_first=False) + params.adjust({"one_dim": val}) + params.extend(params=["one_dim"], label="year", label_values=yrs) + assert np.allclose( + params.to_array("one_dim", year=yrs), exp, atol=0.01, rtol=0.0 + ) + + params = ArrayParams(label_to_extend=None, array_first=False) + params.adjust({"one_dim": val}) + params.extend(params=["one_dim"], label="year", label_values=[2013]) + assert np.allclose( + params.to_array("one_dim", year=2013), + np.array([val]), + atol=0.01, + rtol=0.0 + ) + + +def test_expand_2d_short_array(): + """ + One of several _expand_?D tests. + """ + ary = np.array([[1., 2., 3.]]) + val = np.array([1., 2., 3.]) + exp2 = np.array([val * math.pow(1.02, i) for i in range(1, 5)]) + exp1 = np.array([1., 2., 3.]) + exp = np.zeros((5, 3)) + exp[:1] = exp1 + exp[1:] = exp2 + + params = ArrayParams(array_first=False, label_to_extend=None) + years = [2013, 2014, 2015, 2016, 2017] + params.extend( + params=["two_dim"], + label="year", + label_values=years, + ) + + assert np.allclose( + exp, + params.to_array("two_dim", year=years), + atol=0.01, + rtol=0.0 + ) + + +def test_expand_2d_variable_rates(): + """ + One of several _expand_?D tests. + """ + ary = np.array([[1., 2., 3.]]) + cur = np.array([1., 2., 3.]) + irates = [0.02, 0.02, 0.02, 0.03, 0.035] + exp2 = [] + for i in range(0, 4): + idx = i + len(ary) - 1 + cur = np.array(cur * (1.0 + irates[idx])) + print('cur is ', cur) + exp2.append(cur) + exp1 = np.array([1., 2., 3.]) + exp = np.zeros((5, 3)) + exp[:1] = exp1 + exp[1:] = exp2 + + params = ArrayParams(array_first=False, label_to_extend=None) + params._inflation_rates = irates + years = [2013, 2014, 2015, 2016, 2017] + params.extend(params=["two_dim"], label="year", label_values=years) + assert np.allclose( + exp, params.to_array("two_dim", year=years), atol=0.01, rtol=0.0 + ) + + +def test_expand_2d_already_filled(): + """ + One of several _expand_?D tests. + """ + # pylint doesn't like caps in var name, so pylint: disable=invalid-name + _II_brk2 = [[36000., 72250., 36500., 48600., 72500., 36250.], + [38000., 74000., 36900., 49400., 73800., 36900.], + [40000., 74900., 37450., 50200., 74900., 37450.]] + + years = [2013, 2014, 2015] + params = ArrayParams( + array_first=False, + label_to_extend=None, + ) + params.adjust({ + "II_brk2": params.from_array("II_brk2", np.array(_II_brk2), year=years) + }) + + params.extend( + params=["II_brk2"], label="year", label_values=years + ) + assert np.allclose( + params.to_array("II_brk2", year=years), + np.array(_II_brk2), + atol=0.01, + rtol=0.0 + ) + + +def test_expand_2d_partial_expand(): + """ + One of several _expand_?D tests. + """ + # pylint doesn't like caps in var name, so pylint: disable=invalid-name + _II_brk2 = [[36000.0, 72250.0, 36500.0, 48600.0, 72500.0, 36250.0], + [38000.0, 74000.0, 36900.0, 49400.0, 73800.0, 36900.0], + [40000.0, 74900.0, 37450.0, 50200.0, 74900.0, 37450.0]] + # We have three years worth of data, need 4 years worth, + # but we only need the inflation rate for year 3 to go + # from year 3 -> year 4 + inf_rates = [0.02, 0.02, 0.03] + exp1 = 40000. * 1.03 + exp2 = 74900. * 1.03 + exp3 = 37450. * 1.03 + exp4 = 50200. * 1.03 + exp5 = 74900. * 1.03 + exp6 = 37450. * 1.03 + exp = [[36000.0, 72250.0, 36500.0, 48600.0, 72500.0, 36250.0], + [38000.0, 74000.0, 36900.0, 49400.0, 73800.0, 36900.0], + [40000.0, 74900.0, 37450.0, 50200.0, 74900.0, 37450.0], + [exp1, exp2, exp3, exp4, exp5, exp6]] + + years = [2013, 2014, 2015] + params = ArrayParams(array_first=False, label_to_extend=None) + params.adjust({ + "II_brk2": params.from_array( + "II_brk2", + np.array(_II_brk2), + year=years + ) + }) + params._inflation_rates[:3] = inf_rates + params.extend( + params=["II_brk2"], label="year", label_values=years + [2016] + ) + assert np.allclose( + params.to_array("II_brk2", year=years + [2016]), + exp, + atol=0.01, + rtol=0.0 + ) + def test_read_json_revision(): """ From 756a8f1bf4dffd3b22cbdc9cb4ac84a9ed2a967b Mon Sep 17 00:00:00 2001 From: hdoupe Date: Fri, 1 May 2020 11:06:09 -0400 Subject: [PATCH 57/64] Fixes to improve git diff --- taxcalc/tests/test_parameters.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index d1bb2f5d0..0c7a5c8d5 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -403,7 +403,10 @@ def set_rates(self): pass -def test_expand_errors(): +def test_expand_xd_errors(): + """ + One of several _expand_?D tests. + """ params = ArrayParams(label_to_extend=None, array_first=False) with pytest.raises(paramtools.ValidationError): params.extend(label="year", label_values=[1, 2, 3]) @@ -421,15 +424,16 @@ def test_expand_empty(): def test_expand_1d_scalar(): - yrs = list(range(2013, 2013 + 12 + 1)) + yrs = 12 val = 10.0 - exp = np.array([val * math.pow(1.02, i) for i in range(len(yrs))]) + exp = np.array([val * math.pow(1.02, i) for i in range(0, yrs)]) + yrslist = list(range(2013, 2013 + 12)) params = ArrayParams(label_to_extend=None, array_first=False) params.adjust({"one_dim": val}) - params.extend(params=["one_dim"], label="year", label_values=yrs) + params.extend(params=["one_dim"], label="year", label_values=yrslist) assert np.allclose( - params.to_array("one_dim", year=yrs), exp, atol=0.01, rtol=0.0 + params.to_array("one_dim", year=yrslist), exp, atol=0.01, rtol=0.0 ) params = ArrayParams(label_to_extend=None, array_first=False) From dd5cb8907feda63b697c933dec5bcbd34eae4d6a Mon Sep 17 00:00:00 2001 From: hdoupe Date: Fri, 1 May 2020 15:10:42 -0400 Subject: [PATCH 58/64] Update for better git diff in test_parameters expand tests --- taxcalc/tests/test_parameters.py | 43 +++++++++----------------------- 1 file changed, 12 insertions(+), 31 deletions(-) diff --git a/taxcalc/tests/test_parameters.py b/taxcalc/tests/test_parameters.py index 0c7a5c8d5..720288b47 100644 --- a/taxcalc/tests/test_parameters.py +++ b/taxcalc/tests/test_parameters.py @@ -432,19 +432,14 @@ def test_expand_1d_scalar(): params = ArrayParams(label_to_extend=None, array_first=False) params.adjust({"one_dim": val}) params.extend(params=["one_dim"], label="year", label_values=yrslist) - assert np.allclose( - params.to_array("one_dim", year=yrslist), exp, atol=0.01, rtol=0.0 - ) + res = params.to_array("one_dim", year=yrslist) + assert np.allclose(exp, res, atol=0.01, rtol=0.0) params = ArrayParams(label_to_extend=None, array_first=False) params.adjust({"one_dim": val}) params.extend(params=["one_dim"], label="year", label_values=[2013]) - assert np.allclose( - params.to_array("one_dim", year=2013), - np.array([val]), - atol=0.01, - rtol=0.0 - ) + res = params.to_array("one_dim", year=2013) + assert np.allclose(np.array([val]), res, atol=0.01, rtol=0.0) def test_expand_2d_short_array(): @@ -466,13 +461,8 @@ def test_expand_2d_short_array(): label="year", label_values=years, ) - - assert np.allclose( - exp, - params.to_array("two_dim", year=years), - atol=0.01, - rtol=0.0 - ) + res = params.to_array("two_dim", year=years) + assert np.allclose(exp, res, atol=0.01, rtol=0.0) def test_expand_2d_variable_rates(): @@ -497,9 +487,8 @@ def test_expand_2d_variable_rates(): params._inflation_rates = irates years = [2013, 2014, 2015, 2016, 2017] params.extend(params=["two_dim"], label="year", label_values=years) - assert np.allclose( - exp, params.to_array("two_dim", year=years), atol=0.01, rtol=0.0 - ) + res = params.to_array("two_dim", year=years) + assert np.allclose(exp, res, atol=0.01, rtol=0.0) def test_expand_2d_already_filled(): @@ -523,12 +512,8 @@ def test_expand_2d_already_filled(): params.extend( params=["II_brk2"], label="year", label_values=years ) - assert np.allclose( - params.to_array("II_brk2", year=years), - np.array(_II_brk2), - atol=0.01, - rtol=0.0 - ) + res = params.to_array("II_brk2", year=years) + assert np.allclose(res, np.array(_II_brk2), atol=0.01, rtol=0.0) def test_expand_2d_partial_expand(): @@ -567,12 +552,8 @@ def test_expand_2d_partial_expand(): params.extend( params=["II_brk2"], label="year", label_values=years + [2016] ) - assert np.allclose( - params.to_array("II_brk2", year=years + [2016]), - exp, - atol=0.01, - rtol=0.0 - ) + res = params.to_array("II_brk2", year=years + [2016]) + assert np.allclose(res, exp, atol=0.01, rtol=0.0) def test_read_json_revision(): From e32346c7af9f406888e2cc6c47043c5a68084b32 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Fri, 1 May 2020 15:12:35 -0400 Subject: [PATCH 59/64] Update paramtools requirement to 0.14.0 --- environment.yml | 2 +- taxcalc/tests/test_4package.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/environment.yml b/environment.yml index dba505bac..e6239ffbf 100644 --- a/environment.yml +++ b/environment.yml @@ -14,4 +14,4 @@ dependencies: - pycodestyle - pylint - coverage -- "paramtools>=0.13.1" +- "paramtools>=0.14.0" diff --git a/taxcalc/tests/test_4package.py b/taxcalc/tests/test_4package.py index 72094d944..655908464 100644 --- a/taxcalc/tests/test_4package.py +++ b/taxcalc/tests/test_4package.py @@ -37,7 +37,7 @@ def test_for_consistency(tests_path): 'pycodestyle', 'pylint', 'coverage', - "paramtools>=0.13.1" + "paramtools>=0.14.0" ]) # read conda.recipe/meta.yaml requirements meta_file = os.path.join(tests_path, '..', '..', From 437c33cf3d0681364c992d9001df93d1f1409e5b Mon Sep 17 00:00:00 2001 From: hdoupe Date: Fri, 1 May 2020 16:09:45 -0400 Subject: [PATCH 60/64] Fix key order in defaults json files --- taxcalc/consumption.json | 102 +- taxcalc/growdiff.json | 200 +- taxcalc/policy_current_law.json | 4014 +++++++++++++++---------------- 3 files changed, 2158 insertions(+), 2158 deletions(-) diff --git a/taxcalc/consumption.json b/taxcalc/consumption.json index a9f6f7c50..5ed79ebf3 100644 --- a/taxcalc/consumption.json +++ b/taxcalc/consumption.json @@ -76,210 +76,210 @@ } }, "MPC_e17500": { + "title": "Marginal propensity to consume medical expenses", + "description": "Defined as dollar change in medical-expense consumption divided by dollar change in income. Typical value is in [0,1] range.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Marginal propensity to consume medical expenses", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } - }, - "description": "Defined as dollar change in medical-expense consumption divided by dollar change in income. Typical value is in [0,1] range." + } }, "MPC_e18400": { + "title": "Marginal propensity to consume state-and-local taxes", + "description": "Defined as dollar change in state-and-local-taxes consumption divided by dollar change in income. Typical value is in [0,1] range.", + "start_year": 2013, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Marginal propensity to consume state-and-local taxes", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } - }, - "start_year": 2013, - "description": "Defined as dollar change in state-and-local-taxes consumption divided by dollar change in income. Typical value is in [0,1] range." + } }, "MPC_e19800": { + "title": "Marginal propensity to consume charity cash contributions", + "description": "Defined as dollar change in charity-cash-contribution consumption divided by dollar change in income. Typical value is in [0,1] range.", + "start_year": 2013, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Marginal propensity to consume charity cash contributions", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } - }, - "start_year": 2013, - "description": "Defined as dollar change in charity-cash-contribution consumption divided by dollar change in income. Typical value is in [0,1] range." + } }, "MPC_e20400": { + "title": "Marginal propensity to consume miscellaneous deduction expenses", + "description": "Defined as dollar change in miscellaneous-deduction-expense consumption divided by dollar change in income. Typical value is in [0,1] range.", + "start_year": 2013, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Marginal propensity to consume miscellaneous deduction expenses", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } - }, - "start_year": 2013, - "description": "Defined as dollar change in miscellaneous-deduction-expense consumption divided by dollar change in income. Typical value is in [0,1] range." + } }, "BEN_housing_value": { + "title": "Consumption value of housing benefits", + "description": "Consumption value per dollar of housing benefits, all of which are in-kind benefits.", + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Consumption value of housing benefits", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } - }, - "description": "Consumption value per dollar of housing benefits, all of which are in-kind benefits." + } }, "BEN_snap_value": { + "title": "Consumption value of SNAP benefits", + "description": "Consumption value per dollar of SNAP benefits, all of which are in-kind benefits.", + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Consumption value of SNAP benefits", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } - }, - "description": "Consumption value per dollar of SNAP benefits, all of which are in-kind benefits." + } }, "BEN_tanf_value": { + "title": "Consumption value of TANF benefits", + "description": "Consumption value per dollar of TANF benefits, some of which are cash benefits and some of which are in-kind benefits.", + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Consumption value of TANF benefits", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } - }, - "description": "Consumption value per dollar of TANF benefits, some of which are cash benefits and some of which are in-kind benefits." + } }, "BEN_vet_value": { + "title": "Consumption value of veterans benefits", + "description": "Consumption value per dollar of veterans benefits, some of which are in-kind benefits (only about 48% are cash benefits).", + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Consumption value of veterans benefits", - "type": "float", "validators": { "range": { "min": 0, "max": 2 } - }, - "description": "Consumption value per dollar of veterans benefits, some of which are in-kind benefits (only about 48% are cash benefits)." + } }, "BEN_wic_value": { + "title": "Consumption value of WIC benefits", + "description": "Consumption value per dollar of WIC benefits, all of which are in-kind benefits.", + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Consumption value of WIC benefits", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } - }, - "description": "Consumption value per dollar of WIC benefits, all of which are in-kind benefits." + } }, "BEN_mcare_value": { + "title": "Consumption value of Medicare benefits", + "description": "Consumption value per dollar of Medicare benefits, all of which are in-kind benefits.", + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Consumption value of Medicare benefits", - "type": "float", "validators": { "range": { "min": 0, "max": 2 } - }, - "description": "Consumption value per dollar of Medicare benefits, all of which are in-kind benefits." + } }, "BEN_mcaid_value": { + "title": "Consumption value of Medicaid benefits", + "description": "Consumption value per dollar of Medicaid benefits, all of which are in-kind benefits.", + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Consumption value of Medicaid benefits", - "type": "float", "validators": { "range": { "min": 0, "max": 2 } - }, - "description": "Consumption value per dollar of Medicaid benefits, all of which are in-kind benefits." + } }, "BEN_other_value": { + "title": "Consumption value of other benefits", + "description": "Consumption value per dollar of other benefits, some of which are in-kind benefits (somewhere between 52% and 76% are in-kind benefits).", + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Consumption value of other benefits", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } - }, - "description": "Consumption value per dollar of other benefits, some of which are in-kind benefits (somewhere between 52% and 76% are in-kind benefits)." + } } } \ No newline at end of file diff --git a/taxcalc/growdiff.json b/taxcalc/growdiff.json index 2845e1119..5fbf89fec 100644 --- a/taxcalc/growdiff.json +++ b/taxcalc/growdiff.json @@ -76,428 +76,428 @@ } }, "ABOOK": { + "title": "ABOOK additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABOOK extrapolates input variables: e07300 and e07400.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ABOOK additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ABOOK extrapolates input variables: e07300 and e07400." + } }, "ACGNS": { + "title": "ACGNS additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ACGNS extrapolates input variables: e01200, p22250, p23250, e24515 and e24518.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ACGNS additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ACGNS extrapolates input variables: e01200, p22250, p23250, e24515 and e24518." + } }, "ACPIM": { + "title": "ACPIM additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ACPIM extrapolates input variables: e03270, e03290 and e17500.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ACPIM additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ACPIM extrapolates input variables: e03270, e03290 and e17500." + } }, "ACPIU": { + "title": "ACPIU additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ACPIU is the price inflation rate used to inflate many policy parameters. Note that non-zero values of this parameter will not affect historically known values of policy parameters.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ACPIU additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ACPIU is the price inflation rate used to inflate many policy parameters. Note that non-zero values of this parameter will not affect historically known values of policy parameters." + } }, "ADIVS": { + "title": "ADIVS additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ADIVS extrapolates input variables: e00600 and e00650.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ADIVS additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ADIVS extrapolates input variables: e00600 and e00650." + } }, "AINTS": { + "title": "AINTS additive difference from default projection", + "description": "Default projection is in growfactors.csv file. AINTS extrapolates input variables: e00300 and e00400.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "AINTS additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. AINTS extrapolates input variables: e00300 and e00400." + } }, "AIPD": { + "title": "AIPD additive difference from default projection", + "description": "Default projection is in growfactors.csv file. AIPD extrapolates input variables: e19200.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "AIPD additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. AIPD extrapolates input variables: e19200." + } }, "ASCHCI": { + "title": "ASCHCI additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ASCHCI extrapolates input variables: e00900, e00900p and e00900s when they are positive.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ASCHCI additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ASCHCI extrapolates input variables: e00900, e00900p and e00900s when they are positive." + } }, "ASCHCL": { + "title": "ASCHCL additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ASCHCL extrapolates input variables: e00900, e00900p and e00900s when they are negative.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ASCHCL additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ASCHCL extrapolates input variables: e00900, e00900p and e00900s when they are negative." + } }, "ASCHEI": { + "title": "ASCHEI additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ASCHEI extrapolates input variables: e02000 when positive, and e26270, k1bx14p, k1bx14s and e27200 for all values.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ASCHEI additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ASCHEI extrapolates input variables: e02000 when positive, and e26270, k1bx14p, k1bx14s and e27200 for all values." + } }, "ASCHEL": { + "title": "ASCHEL additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ASCHEL extrapolates input variable: e02000 when negative.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ASCHEL additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ASCHEL extrapolates input variable: e02000 when negative." + } }, "ASCHF": { + "title": "ASCHF additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ASCHF extrapolates input variables: e02100, e02100p and e02100s.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ASCHF additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ASCHF extrapolates input variables: e02100, e02100p and e02100s." + } }, "ASOCSEC": { + "title": "ASOCSEC additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ASOCSEC extrapolates input variable: e02400.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ASOCSEC additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ASOCSEC extrapolates input variable: e02400." + } }, "ATXPY": { + "title": "ATXPY additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ATXPY extrapolates input variables: e00700, e00800, e01400, e01500, e01700, e03150, e03210, e03220, e03230, e03300, e03400, e03500, e07240, e07260, p08000, e09700, e09800, e09900, e11200, e18400, e18500, e19800, e20100, e20400, g20500, e07600, e32800, e58990, e62900, e87530, e87521 and cmbtp.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ATXPY additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ATXPY extrapolates input variables: e00700, e00800, e01400, e01500, e01700, e03150, e03210, e03220, e03230, e03300, e03400, e03500, e07240, e07260, p08000, e09700, e09800, e09900, e11200, e18400, e18500, e19800, e20100, e20400, g20500, e07600, e32800, e58990, e62900, e87530, e87521 and cmbtp." + } }, "AUCOMP": { + "title": "AUCOMP additive difference from default projection", + "description": "Default projection is in growfactors.csv file. AUCOMP extrapolates input variable: e02300.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "AUCOMP additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. AUCOMP extrapolates input variable: e02300." + } }, "AWAGE": { + "title": "AWAGE additive difference from default projection", + "description": "Default projection is in growfactors.csv file. AWAGE extrapolates input variables: e00200, e00200p and e00200s. Also, AWAGE is the wage growth rate used to inflate the OASDI maximum taxable earnings policy parameter, _SS_Earnings_c. Note that non-zero values of this parameter will not affect historically known values of _SS_Earnings_c.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "AWAGE additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. AWAGE extrapolates input variables: e00200, e00200p and e00200s. Also, AWAGE is the wage growth rate used to inflate the OASDI maximum taxable earnings policy parameter, _SS_Earnings_c. Note that non-zero values of this parameter will not affect historically known values of _SS_Earnings_c." + } }, "ABENOTHER": { + "title": "ABENOTHER additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENOTHER extrapolates input variable other_ben.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ABENOTHER additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ABENOTHER extrapolates input variable other_ben." + } }, "ABENMCARE": { + "title": "ABENMCARE additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENMCARE extrapolates input variable mcare_ben.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ABENMCARE additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ABENMCARE extrapolates input variable mcare_ben." + } }, "ABENMCAID": { + "title": "ABENMCAID additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENMCAID extrapolates input variable mcaid_ben.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ABENMCAID additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ABENMCAID extrapolates input variable mcaid_ben." + } }, "ABENSSI": { + "title": "ABENSSI additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENSSI extrapolates input variable ssi_ben.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ABENSSI additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ABENSSI extrapolates input variable ssi_ben." + } }, "ABENSNAP": { + "title": "ABENSNAP additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENSNAP extrapolates input variable snap_ben.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ABENSNAP additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ABENSNAP extrapolates input variable snap_ben." + } }, "ABENWIC": { + "title": "ABENWIC additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENWIC extrapolates input variable wic_ben.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ABENWIC additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ABENWIC extrapolates input variable wic_ben." + } }, "ABENHOUSING": { + "title": "ABENHOUSING additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENHOUSING extrapolates input variable housing_ben.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ABENHOUSING additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ABENHOUSING extrapolates input variable housing_ben." + } }, "ABENTANF": { + "title": "ABENTANF additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENTANF extrapolates input variable tanf_ben.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ABENTANF additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ABENTANF extrapolates input variable tanf_ben." + } }, "ABENVET": { + "title": "ABENVET additive difference from default projection", + "description": "Default projection is in growfactors.csv file. ABENVET extrapolates input variable vet_ben.", + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "ABENVET additive difference from default projection", - "type": "float", "validators": { "range": { "min": -10, "max": 10 } - }, - "description": "Default projection is in growfactors.csv file. ABENVET extrapolates input variable vet_ben." + } } } \ No newline at end of file diff --git a/taxcalc/policy_current_law.json b/taxcalc/policy_current_law.json index 4f73eea43..c97c13502 100644 --- a/taxcalc/policy_current_law.json +++ b/taxcalc/policy_current_law.json @@ -76,6 +76,14 @@ } }, "CPI_offset": { + "title": "Decimal offset ADDED to unchained CPI to get parameter indexing rate", + "description": "Values are zero before 2017; reforms that introduce indexing with chained CPI would have values around -0.0025 beginning in the year before the first year policy parameters will have values computed with chained CPI.", + "notes": "See April 2013 CBO report entitled 'What Would Be the Effect on the Deficit of Using the Chained CPI to Index Benefit Programs and the Tax Code?', which includes this: 'The chained CPI grows more slowly than the traditional CPI does: an average of about 0.25 percentage points more slowly per year over the past decade.' ", + "section_1": "Parameter Indexing", + "section_2": "Offsets", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -98,52 +106,52 @@ "value": -0.0025 } ], - "title": "Decimal offset ADDED to unchained CPI to get parameter indexing rate", - "type": "float", "validators": { "range": { "min": -0.005, "max": 0.005 } }, - "section_1": "Parameter Indexing", - "section_2": "Offsets", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Values are zero before 2017; reforms that introduce indexing with chained CPI would have values around -0.0025 beginning in the year before the first year policy parameters will have values computed with chained CPI.", - "notes": "See April 2013 CBO report entitled 'What Would Be the Effect on the Deficit of Using the Chained CPI to Index Benefit Programs and the Tax Code?', which includes this: 'The chained CPI grows more slowly than the traditional CPI does: an average of about 0.25 percentage points more slowly per year over the past decade.' " + } }, "FICA_ss_trt": { + "title": "Social Security payroll tax rate", + "description": "Social Security FICA rate, including both employer and employee.", + "notes": "", + "section_1": "Payroll Taxes", + "section_2": "Social Security FICA", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.124 } ], - "title": "Social Security payroll tax rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Payroll Taxes", - "section_2": "Social Security FICA", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Social Security FICA rate, including both employer and employee.", - "notes": "" + } }, "SS_Earnings_c": { + "title": "Maximum taxable earnings (MTE) for Social Security", + "description": "Individual earnings below this amount are subjected to Social Security (OASDI) payroll tax.", + "notes": "This parameter is indexed by the rate of growth in average wages, not by the price inflation rate.", + "section_1": "Payroll Taxes", + "section_2": "Social Security FICA", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -174,78 +182,78 @@ "value": 132900.0 } ], - "title": "Maximum taxable earnings (MTE) for Social Security", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Payroll Taxes", - "section_2": "Social Security FICA", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Individual earnings below this amount are subjected to Social Security (OASDI) payroll tax.", - "notes": "This parameter is indexed by the rate of growth in average wages, not by the price inflation rate." + } }, "SS_Earnings_thd": { + "title": "Additional Taxable Earnings Threshold for Social Security", + "description": "Individual earnings above this threshold are subjected to Social Security (OASDI) payroll tax, in addition to earnings below the maximum taxable earnings threshold.", + "notes": "", + "section_1": "Payroll Taxes", + "section_2": "Social Security FICA", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 9e+99 } ], - "title": "Additional Taxable Earnings Threshold for Social Security", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Payroll Taxes", - "section_2": "Social Security FICA", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Individual earnings above this threshold are subjected to Social Security (OASDI) payroll tax, in addition to earnings below the maximum taxable earnings threshold.", - "notes": "" + } }, "FICA_mc_trt": { + "title": "Medicare payroll tax rate", + "description": "Medicare FICA rate, including both employer and employee.", + "notes": "", + "section_1": "Payroll Taxes", + "section_2": "Medicare FICA", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.029 } ], - "title": "Medicare payroll tax rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Payroll Taxes", - "section_2": "Medicare FICA", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Medicare FICA rate, including both employer and employee.", - "notes": "" + } }, "AMEDT_ec": { + "title": "Additional Medicare tax earnings exclusion", + "description": "The Additional Medicare Tax rate, AMEDT_rt, applies to all earnings in excess of this excluded amount.", + "notes": "", + "section_1": "Payroll Taxes", + "section_2": "Additional Medicare FICA", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -273,52 +281,52 @@ "value": 200000.0 } ], - "title": "Additional Medicare tax earnings exclusion", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Payroll Taxes", - "section_2": "Additional Medicare FICA", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The Additional Medicare Tax rate, AMEDT_rt, applies to all earnings in excess of this excluded amount.", - "notes": "" + } }, "AMEDT_rt": { + "title": "Additional Medicare tax rate", + "description": "This is the rate applied to the portion of Medicare wages, RRTA compensation and self-employment income exceeding the Additional Medicare Tax earning exclusion.", + "notes": "", + "section_1": "Payroll Taxes", + "section_2": "Additional Medicare FICA", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.009 } ], - "title": "Additional Medicare tax rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Payroll Taxes", - "section_2": "Additional Medicare FICA", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This is the rate applied to the portion of Medicare wages, RRTA compensation and self-employment income exceeding the Additional Medicare Tax earning exclusion.", - "notes": "" + } }, "SS_thd50": { + "title": "Threshold for Social Security benefit taxability 1", + "description": "The first threshold for Social Security benefit taxability: if taxpayers have provisional income greater than this threshold, up to 50% of their Social Security benefit will be subject to tax under current law.", + "notes": "", + "section_1": "Social Security Taxability", + "section_2": "Threshold For Social Security Benefit Taxability 1", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -346,52 +354,52 @@ "value": 25000.0 } ], - "title": "Threshold for Social Security benefit taxability 1", - "type": "float", "validators": { "range": { "min": 0, "max": "SS_thd85" } }, - "section_1": "Social Security Taxability", - "section_2": "Threshold For Social Security Benefit Taxability 1", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The first threshold for Social Security benefit taxability: if taxpayers have provisional income greater than this threshold, up to 50% of their Social Security benefit will be subject to tax under current law.", - "notes": "" + } }, "SS_percentage1": { + "title": "Social Security taxable income decimal fraction 1", + "description": "Under current law if their provisional income is above the first threshold for Social Security taxability but below the second threshold, taxpayers need to apply this fraction to both the excess of their provisional income over the first threshold and their Social Security benefits, and then include the smaller one in their AGI.", + "notes": "", + "section_1": "", + "section_2": "", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.5 } ], - "title": "Social Security taxable income decimal fraction 1", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "", - "section_2": "", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Under current law if their provisional income is above the first threshold for Social Security taxability but below the second threshold, taxpayers need to apply this fraction to both the excess of their provisional income over the first threshold and their Social Security benefits, and then include the smaller one in their AGI.", - "notes": "" + } }, "SS_thd85": { + "title": "Threshold for Social Security benefit taxability 2", + "description": "The second threshold for Social Security taxability: if taxpayers have provisional income greater than this threshold, up to 85% of their Social Security benefit will be subject to tax under current law.", + "notes": "", + "section_1": "Social Security Taxability", + "section_2": "Threshold For Social Security Benefit Taxability 2", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -419,182 +427,182 @@ "value": 34000.0 } ], - "title": "Threshold for Social Security benefit taxability 2", - "type": "float", "validators": { "range": { "min": "SS_thd50", "max": 9e+99 } }, - "section_1": "Social Security Taxability", - "section_2": "Threshold For Social Security Benefit Taxability 2", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The second threshold for Social Security taxability: if taxpayers have provisional income greater than this threshold, up to 85% of their Social Security benefit will be subject to tax under current law.", - "notes": "" + } }, "SS_percentage2": { + "title": "Social Security taxable income decimal fraction 2", + "description": "Under current law if their provisional income is above the second threshold for Social Security taxability, taxpayers need to apply this fraction to both the excess of their provisional income over the second threshold and their social security benefits, and then include the smaller one in their AGI.", + "notes": "", + "section_1": "", + "section_2": "", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.85 } ], - "title": "Social Security taxable income decimal fraction 2", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "", - "section_2": "", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Under current law if their provisional income is above the second threshold for Social Security taxability, taxpayers need to apply this fraction to both the excess of their provisional income over the second threshold and their social security benefits, and then include the smaller one in their AGI.", - "notes": "" + } }, "ALD_StudentLoan_hc": { + "title": "Adjustment for student loan interest haircut", + "description": "This decimal fraction can be applied to limit the student loan interest adjustment allowed.", + "notes": "The final adjustment amount will be (1-Haircut)*StudentLoanInterest.", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Adjustment Haircuts", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Adjustment for student loan interest haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This decimal fraction can be applied to limit the student loan interest adjustment allowed.", - "notes": "The final adjustment amount will be (1-Haircut)*StudentLoanInterest." + } }, "ALD_SelfEmploymentTax_hc": { + "title": "Adjustment for self-employment tax haircut", + "description": "This decimal fraction, if greater than zero, reduces the employer equivalent portion of self-employment adjustment.", + "notes": "The final adjustment amount would be (1-Haircut)*SelfEmploymentTaxAdjustment.", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Adjustment Haircuts", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Adjustment for self-employment tax haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This decimal fraction, if greater than zero, reduces the employer equivalent portion of self-employment adjustment.", - "notes": "The final adjustment amount would be (1-Haircut)*SelfEmploymentTaxAdjustment." + } }, "ALD_SelfEmp_HealthIns_hc": { + "title": "Adjustment for self employed health insurance haircut", + "description": "This decimal fraction, if greater than zero, reduces the health insurance adjustment for self-employed taxpayers.", + "notes": "The final adjustment amount would be (1-Haircut)*SelfEmployedHealthInsuranceAdjustment.", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Adjustment Haircuts", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Adjustment for self employed health insurance haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This decimal fraction, if greater than zero, reduces the health insurance adjustment for self-employed taxpayers.", - "notes": "The final adjustment amount would be (1-Haircut)*SelfEmployedHealthInsuranceAdjustment." + } }, "ALD_KEOGH_SEP_hc": { + "title": "Adjustment for contributions to either KEOGH or SEP plan haircut", + "description": "Under current law, contributions to Keogh or SEP plans can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", + "notes": "The final adjustment amount is (1-Haircut)*KEOGH_SEP_Contributinos.", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Adjustment Haircuts", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Adjustment for contributions to either KEOGH or SEP plan haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Under current law, contributions to Keogh or SEP plans can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", - "notes": "The final adjustment amount is (1-Haircut)*KEOGH_SEP_Contributinos." + } }, "ALD_EarlyWithdraw_hc": { + "title": "Adjustment for early withdrawal penalty haircut", + "description": "Under current law, early withdraw penalty can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", + "notes": "The final adjustment amount is (1-Haircut)*EarlyWithdrawPenalty.", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Adjustment Haircuts", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Adjustment for early withdrawal penalty haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "Under current law, early withdraw penalty can be fully deducted from gross income. This haircut can be used to limit the adjustment allowed.", - "notes": "The final adjustment amount is (1-Haircut)*EarlyWithdrawPenalty." + } }, "ALD_AlimonyPaid_hc": { + "title": "Adjustment for alimony-paid haircut", + "description": "Under pre-TCJA law, the full amount of alimony paid is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", + "notes": "The final adjustment amount would be (1-Haircut)*AlimonyPaid.", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Adjustment Haircuts", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -629,26 +637,26 @@ "value": 0.0 } ], - "title": "Adjustment for alimony-paid haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "Under pre-TCJA law, the full amount of alimony paid is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", - "notes": "The final adjustment amount would be (1-Haircut)*AlimonyPaid." + } }, "ALD_AlimonyReceived_hc": { + "title": "Adjustment for alimony-received haircut", + "description": "Under pre-TCJA law, none of alimony received is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", + "notes": "The final adjustment amount would be (1-Haircut)*AlimonyReceived.", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Adjustment Haircuts", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -683,104 +691,104 @@ "value": 1.0 } ], - "title": "Adjustment for alimony-received haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Under pre-TCJA law, none of alimony received is taken as an adjustment from gross income in arriving at AGI. This haircut can be used to change the deduction allowed.", - "notes": "The final adjustment amount would be (1-Haircut)*AlimonyReceived." + } }, "ALD_EducatorExpenses_hc": { + "title": "Deduction for educator expenses haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of educator expenses that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*EducatorExpenses.", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Adjustment Haircuts", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Deduction for educator expenses haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "If greater than zero, this decimal fraction reduces the portion of educator expenses that can be deducted from AGI.", - "notes": "The final adjustment amount would be (1-Haircut)*EducatorExpenses." + } }, "ALD_HSADeduction_hc": { + "title": "Deduction for HSA deduction haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of a taxpayer's HSA deduction that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*HSA_Deduction.", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Adjustment Haircuts", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Deduction for HSA deduction haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "If greater than zero, this decimal fraction reduces the portion of a taxpayer's HSA deduction that can be deducted from AGI.", - "notes": "The final adjustment amount would be (1-Haircut)*HSA_Deduction." + } }, "ALD_IRAContributions_hc": { + "title": "Deduction for IRA contributions haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of IRA contributions that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*IRA_Contribution.", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Adjustment Haircuts", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Deduction for IRA contributions haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "If greater than zero, this decimal fraction reduces the portion of IRA contributions that can be deducted from AGI.", - "notes": "The final adjustment amount would be (1-Haircut)*IRA_Contribution." + } }, "ALD_DomesticProduction_hc": { + "title": "Deduction for domestic production activity haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of domestic production activity that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*DomesticProductionActivity.", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Adjustment Haircuts", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -815,26 +823,26 @@ "value": 0.0 } ], - "title": "Deduction for domestic production activity haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "If greater than zero, this decimal fraction reduces the portion of domestic production activity that can be deducted from AGI.", - "notes": "The final adjustment amount would be (1-Haircut)*DomesticProductionActivity." + } }, "ALD_Tuition_hc": { + "title": "Deduction for tuition and fees haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of tuition and fees that can be deducted from AGI.", + "notes": "The final adjustment amount would be (1-Haircut)*TuitionFees.", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Adjustment Haircuts", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -865,78 +873,78 @@ "value": 1.0 } ], - "title": "Deduction for tuition and fees haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Adjustment Haircuts", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "If greater than zero, this decimal fraction reduces the portion of tuition and fees that can be deducted from AGI.", - "notes": "The final adjustment amount would be (1-Haircut)*TuitionFees." + } }, "ALD_InvInc_ec_rt": { + "title": "Investment income exclusion rate haircut", + "description": "Decimal fraction of investment income base that can be excluded from AGI.", + "notes": "The final taxable investment income will be (1-_ALD_InvInc_ec_rt)*investment_income_base. Even though the excluded portion of investment income is not included in AGI, it still is included in investment income used to calculate the Net Investment Income Tax and Earned Income Tax Credit.", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Exclusions", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Investment income exclusion rate haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Exclusions", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Decimal fraction of investment income base that can be excluded from AGI.", - "notes": "The final taxable investment income will be (1-_ALD_InvInc_ec_rt)*investment_income_base. Even though the excluded portion of investment income is not included in AGI, it still is included in investment income used to calculate the Net Investment Income Tax and Earned Income Tax Credit." + } }, "ALD_Dependents_hc": { + "title": "Deduction for childcare costs haircut", + "description": "This decimal fraction, if greater than zero, reduces the portion of childcare costs that can be deducted from AGI.", + "notes": "The final adjustment would be (1-Haircut)*AverageChildcareCosts.", + "section_1": "Above The Line Deductions", + "section_2": "Child And Elderly Care", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Deduction for childcare costs haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Above The Line Deductions", - "section_2": "Child And Elderly Care", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This decimal fraction, if greater than zero, reduces the portion of childcare costs that can be deducted from AGI.", - "notes": "The final adjustment would be (1-Haircut)*AverageChildcareCosts." + } }, "ALD_Dependents_Child_c": { + "title": "National average childcare costs: ceiling for available childcare deduction.", + "description": "The weighted average of childcare costs in the US. 7165 is the weighted average from the 'Child Care in America: 2016 State Fact Sheets'.", + "notes": "This is a weighted average of childcare costs in each state", + "section_1": "Above The Line Deductions", + "section_2": "Child And Elderly Care", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -967,26 +975,26 @@ "value": 0.0 } ], - "title": "National average childcare costs: ceiling for available childcare deduction.", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Above The Line Deductions", - "section_2": "Child And Elderly Care", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The weighted average of childcare costs in the US. 7165 is the weighted average from the 'Child Care in America: 2016 State Fact Sheets'.", - "notes": "This is a weighted average of childcare costs in each state" + } }, "ALD_Dependents_Elder_c": { + "title": "Ceiling for elderly care deduction proposed in Trump's tax plan", + "description": "A taxpayer can take an above the line deduction up to this amount if they have an elderly dependent. The Trump 2016 campaign proposal was for $5000.", + "notes": "", + "section_1": "Above The Line Deductions", + "section_2": "Child And Elderly Care", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -1017,26 +1025,26 @@ "value": 0.0 } ], - "title": "Ceiling for elderly care deduction proposed in Trump's tax plan", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Above The Line Deductions", - "section_2": "Child And Elderly Care", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "A taxpayer can take an above the line deduction up to this amount if they have an elderly dependent. The Trump 2016 campaign proposal was for $5000.", - "notes": "" + } }, "ALD_Dependents_thd": { + "title": "Maximum level of income to qualify for the dependent care deduction", + "description": "A taxpayer can only claim the dependent care deduction if their total income is below this level. The Trump 2016 campaign proposal was for 250000 single, 500000 joint, 250000 separate, 500000 head of household].", + "notes": "", + "section_1": "Above The Line Deductions", + "section_2": "Child And Elderly Care", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -1064,26 +1072,26 @@ "value": 0.0 } ], - "title": "Maximum level of income to qualify for the dependent care deduction", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Above The Line Deductions", - "section_2": "Child And Elderly Care", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "A taxpayer can only claim the dependent care deduction if their total income is below this level. The Trump 2016 campaign proposal was for 250000 single, 500000 joint, 250000 separate, 500000 head of household].", - "notes": "" + } }, "ALD_BusinessLosses_c": { + "title": "Maximum amount of business losses deductible", + "description": "Business losses in excess of this amount may not be deducted from AGI.", + "notes": "", + "section_1": "Above The Line Deductions", + "section_2": "Misc. Exclusions", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -1286,26 +1294,26 @@ "value": 9e+99 } ], - "title": "Maximum amount of business losses deductible", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Above The Line Deductions", - "section_2": "Misc. Exclusions", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Business losses in excess of this amount may not be deducted from AGI.", - "notes": "" + } }, "II_em": { + "title": "Personal and dependent exemption amount", + "description": "Subtracted from AGI in the calculation of taxable income, per taxpayer and dependent.", + "notes": "", + "section_1": "Personal Exemptions", + "section_2": "Personal And Dependent Exemption Amount", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -1340,26 +1348,26 @@ "value": 4880.0 } ], - "title": "Personal and dependent exemption amount", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Personal Exemptions", - "section_2": "Personal And Dependent Exemption Amount", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Subtracted from AGI in the calculation of taxable income, per taxpayer and dependent.", - "notes": "" + } }, "II_em_ps": { + "title": "Personal exemption phaseout starting income", + "description": "If taxpayers' AGI is above this level, their personal exemption will start to decrease at the personal exemption phaseout rate (PEP provision).", + "notes": "", + "section_1": "", + "section_2": "", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -1562,78 +1570,78 @@ "value": 379748.0 } ], - "title": "Personal exemption phaseout starting income", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "", - "section_2": "", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "If taxpayers' AGI is above this level, their personal exemption will start to decrease at the personal exemption phaseout rate (PEP provision).", - "notes": "" + } }, "II_prt": { + "title": "Personal exemption phaseout rate", + "description": "Personal exemption amount will decrease by this rate for each dollar of AGI exceeding exemption phaseout start.", + "notes": "", + "section_1": "Personal Exemptions", + "section_2": "Personal Exemption Phaseout Rate", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.02 } ], - "title": "Personal exemption phaseout rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Exemptions", - "section_2": "Personal Exemption Phaseout Rate", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Personal exemption amount will decrease by this rate for each dollar of AGI exceeding exemption phaseout start.", - "notes": "" + } }, "II_no_em_nu18": { + "title": "Repeal personal exemptions for dependents under age 18", + "description": "Total personal exemptions will be decreased by the number of dependents under the age of 18.", + "notes": "", + "section_1": "Personal Exemptions", + "section_2": "Repeal for Dependents Under Age 18", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Repeal personal exemptions for dependents under age 18", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Personal Exemptions", - "section_2": "Repeal for Dependents Under Age 18", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Total personal exemptions will be decreased by the number of dependents under the age of 18.", - "notes": "" + } }, "STD": { + "title": "Standard deduction amount", + "description": "Amount filing unit can use as a standard deduction.", + "notes": "", + "section_1": "Standard Deduction", + "section_2": "Standard Deduction Amount", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -1836,26 +1844,26 @@ "value": 15303.0 } ], - "title": "Standard deduction amount", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Standard Deduction", - "section_2": "Standard Deduction Amount", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Amount filing unit can use as a standard deduction.", - "notes": "" + } }, "STD_Dep": { + "title": "Standard deduction for dependents", + "description": "This is the maximum standard deduction for dependents.", + "notes": "", + "section_1": "", + "section_2": "", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -1886,26 +1894,26 @@ "value": 1100.0 } ], - "title": "Standard deduction for dependents", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "", - "section_2": "", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "This is the maximum standard deduction for dependents.", - "notes": "" + } }, "STD_Aged": { + "title": "Additional standard deduction for blind and aged", + "description": "To get the standard deduction for aged or blind individuals, taxpayers need to add this value to regular standard deduction.", + "notes": "", + "section_1": "Standard Deduction", + "section_2": "Additional Standard Deduction For Blind And Aged", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -2083,52 +2091,52 @@ "value": 1300.0 } ], - "title": "Additional standard deduction for blind and aged", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Standard Deduction", - "section_2": "Additional Standard Deduction For Blind And Aged", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "To get the standard deduction for aged or blind individuals, taxpayers need to add this value to regular standard deduction.", - "notes": "" + } }, "STD_allow_charity_ded_nonitemizers": { + "title": "Allow standard deduction filers to take the charitable contributions deduction", + "description": "Extends the charitable contributions deduction to taxpayers who take the standard deduction. The same ceilings, floor, and haircuts applied to itemized deduction for charitable contributions also apply here.", + "notes": "", + "section_1": "", + "section_2": "", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Allow standard deduction filers to take the charitable contributions deduction", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "", - "section_2": "", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Extends the charitable contributions deduction to taxpayers who take the standard deduction. The same ceilings, floor, and haircuts applied to itemized deduction for charitable contributions also apply here.", - "notes": "" + } }, "II_credit": { + "title": "Personal refundable credit maximum amount", + "description": "This credit amount is fully refundable and is phased out based on AGI. It is available to tax units who would otherwise not file.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Personal Refundable Credit", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -2306,26 +2314,26 @@ "value": 0.0 } ], - "title": "Personal refundable credit maximum amount", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "Personal Refundable Credit", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "This credit amount is fully refundable and is phased out based on AGI. It is available to tax units who would otherwise not file.", - "notes": "" + } }, "II_credit_ps": { + "title": "Personal refundable credit phaseout start", + "description": "The personal refundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Personal Refundable Credit", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -2503,52 +2511,52 @@ "value": 0.0 } ], - "title": "Personal refundable credit phaseout start", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "Personal Refundable Credit", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The personal refundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", - "notes": "" + } }, "II_credit_prt": { + "title": "Personal refundable credit phaseout rate", + "description": "The personal refundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_ps threshold.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Personal Refundable Credit", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Personal refundable credit phaseout rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Refundable Credits", - "section_2": "Personal Refundable Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The personal refundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_ps threshold.", - "notes": "" + } }, "II_credit_nr": { + "title": "Personal nonrefundable credit maximum amount", + "description": "This credit amount is not refundable and is phased out based on AGI.", + "notes": "", + "section_1": "Nonrefundable Credits", + "section_2": "Personal Nonrefundable Credit", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -2726,26 +2734,26 @@ "value": 0.0 } ], - "title": "Personal nonrefundable credit maximum amount", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Personal Nonrefundable Credit", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "This credit amount is not refundable and is phased out based on AGI.", - "notes": "" + } }, "II_credit_nr_ps": { + "title": "Personal nonrefundable credit phaseout start", + "description": "The personal nonrefundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", + "notes": "", + "section_1": "Nonrefundable Credits", + "section_2": "Personal Nonrefundable Credit", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -2923,52 +2931,52 @@ "value": 0.0 } ], - "title": "Personal nonrefundable credit phaseout start", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Personal Nonrefundable Credit", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The personal nonrefundable credit amount will be reduced for taxpayers with AGI higher than this threshold level.", - "notes": "" + } }, "II_credit_nr_prt": { + "title": "Personal nonrefundable credit phaseout rate", + "description": "The personal nonrefundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_nr_ps threshold.", + "notes": "", + "section_1": "Nonrefundable Credits", + "section_2": "Personal Nonrefundable Credit", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Personal nonrefundable credit phaseout rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Personal Nonrefundable Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The personal nonrefundable credit amount will be reduced at this rate for each dollar of AGI exceeding the II_credit_nr_ps threshold.", - "notes": "" + } }, "ID_Medical_frt": { + "title": "Floor (as a decimal fraction of AGI) for deductible medical expenses.", + "description": "Taxpayers are eligible to deduct the portion of their medical expenses exceeding this fraction of AGI.", + "notes": "When using PUF data, lowering this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.", + "section_1": "Itemized Deductions", + "section_2": "Medical Expenses", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -2999,8 +3007,6 @@ "value": 0.075 } ], - "title": "Floor (as a decimal fraction of AGI) for deductible medical expenses.", - "type": "float", "validators": { "range": { "min": 0.075, @@ -3008,18 +3014,20 @@ "level": "warn" } }, - "section_1": "Itemized Deductions", - "section_2": "Medical Expenses", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Taxpayers are eligible to deduct the portion of their medical expenses exceeding this fraction of AGI.", - "notes": "When using PUF data, lowering this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor." + } }, "ID_Medical_frt_add4aged": { + "title": "Addon floor (as a decimal fraction of AGI) for deductible medical expenses for elderly filing units.", + "description": "Elderly taxpayers have this fraction added to the value of the regular floor rate for deductible medical expenses. This fraction was -0.025 from 2013 to 2016, but that was temporary and it changed to zero beginning in 2017.", + "notes": "When using PUF data, changing this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor.", + "section_1": "Itemized Deductions", + "section_2": "Medical Expenses", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -3042,8 +3050,6 @@ "value": 0.0 } ], - "title": "Addon floor (as a decimal fraction of AGI) for deductible medical expenses for elderly filing units.", - "type": "float", "validators": { "range": { "min": -0.025, @@ -3051,44 +3057,46 @@ "level": "warn" } }, - "section_1": "Itemized Deductions", - "section_2": "Medical Expenses", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Elderly taxpayers have this fraction added to the value of the regular floor rate for deductible medical expenses. This fraction was -0.025 from 2013 to 2016, but that was temporary and it changed to zero beginning in 2017.", - "notes": "When using PUF data, changing this parameter value may produce unexpected results because PUF e17500 variable is zero below the floor." + } }, "ID_Medical_hc": { + "title": "Medical expense deduction haircut", + "description": "This decimal fraction can be applied to limit the amount of medical expense deduction allowed.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Medical Expenses", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Medical expense deduction haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "Medical Expenses", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This decimal fraction can be applied to limit the amount of medical expense deduction allowed.", - "notes": "" + } }, "ID_Medical_c": { + "title": "Ceiling on the amount of medical expense deduction allowed (dollars)", + "description": "The amount of medical expense deduction is limited to this dollar amount.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Medical Expenses", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -3266,78 +3274,78 @@ "value": 9e+99 } ], - "title": "Ceiling on the amount of medical expense deduction allowed (dollars)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "Medical Expenses", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The amount of medical expense deduction is limited to this dollar amount.", - "notes": "" + } }, "ID_StateLocalTax_hc": { + "title": "State and local income and sales taxes deduction haircut.", + "description": "This decimal fraction reduces the state and local income and sales tax deduction.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "State And Local Income And Sales Taxes", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "State and local income and sales taxes deduction haircut.", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "State And Local Income And Sales Taxes", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This decimal fraction reduces the state and local income and sales tax deduction.", - "notes": "" + } }, "ID_StateLocalTax_crt": { + "title": "Ceiling (as a decimal fraction of AGI) for the combination of all state and local income and sales tax deductions.", + "description": "The total deduction for state and local taxes is capped at this fraction of AGI.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "State And Local Income And Sales Taxes", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 9e+99 } ], - "title": "Ceiling (as a decimal fraction of AGI) for the combination of all state and local income and sales tax deductions.", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "State And Local Income And Sales Taxes", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The total deduction for state and local taxes is capped at this fraction of AGI.", - "notes": "" + } }, "ID_StateLocalTax_c": { + "title": "Ceiling on the amount of state and local income and sales taxes deduction allowed (dollars)", + "description": "The amount of state and local income and sales taxes deduction is limited to this dollar amount.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "State And Local Income And Sales Taxes", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -3515,78 +3523,78 @@ "value": 9e+99 } ], - "title": "Ceiling on the amount of state and local income and sales taxes deduction allowed (dollars)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "State And Local Income And Sales Taxes", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The amount of state and local income and sales taxes deduction is limited to this dollar amount.", - "notes": "" + } }, "ID_RealEstate_hc": { + "title": "State, local, and foreign real estate taxes deduction haircut.", + "description": "This decimal fraction reduces real estate taxes paid eligible to deduct in itemized deduction.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "State, Local, And Foreign Real Estate Taxes", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "State, local, and foreign real estate taxes deduction haircut.", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "State, Local, And Foreign Real Estate Taxes", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This decimal fraction reduces real estate taxes paid eligible to deduct in itemized deduction.", - "notes": "" + } }, "ID_RealEstate_crt": { + "title": "Ceiling (as a decimal fraction of AGI) for the combination of all state, local, and foreign real estate tax deductions.", + "description": "The total deduction for all real estate taxes is capped at this fraction of AGI.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "State, Local, And Foreign Real Estate Taxes", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 9e+99 } ], - "title": "Ceiling (as a decimal fraction of AGI) for the combination of all state, local, and foreign real estate tax deductions.", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "State, Local, And Foreign Real Estate Taxes", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The total deduction for all real estate taxes is capped at this fraction of AGI.", - "notes": "" + } }, "ID_RealEstate_c": { + "title": "Ceiling on the amount of state, local, and foreign real estate taxes deduction allowed (dollars)", + "description": "The amount of real estate taxes deduction is limited to this dollar amount.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "State, Local, And Foreign Real Estate Taxes", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -3764,52 +3772,52 @@ "value": 9e+99 } ], - "title": "Ceiling on the amount of state, local, and foreign real estate taxes deduction allowed (dollars)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "State, Local, And Foreign Real Estate Taxes", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The amount of real estate taxes deduction is limited to this dollar amount.", - "notes": "" + } }, "ID_AllTaxes_hc": { + "title": "State and local income, sales, and real estate tax deduction haircut.", + "description": "This decimal fraction reduces all state and local taxes paid eligible to deduct in itemized deduction.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "State And Local Taxes And Real Estate Taxes", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "State and local income, sales, and real estate tax deduction haircut.", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "State And Local Taxes And Real Estate Taxes", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This decimal fraction reduces all state and local taxes paid eligible to deduct in itemized deduction.", - "notes": "" + } }, "ID_AllTaxes_c": { + "title": "Ceiling on the amount of state and local income, sales and real estate tax deductions allowed (dollars)", + "description": "The amount of state and local income, sales and real estate tax deductions is limited to this dollar amount.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "State And Local Taxes And Real Estate Taxes", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -4012,52 +4020,52 @@ "value": 9e+99 } ], - "title": "Ceiling on the amount of state and local income, sales and real estate tax deductions allowed (dollars)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "State And Local Taxes And Real Estate Taxes", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The amount of state and local income, sales and real estate tax deductions is limited to this dollar amount.", - "notes": "" + } }, "ID_InterestPaid_hc": { + "title": "Interest paid deduction haircut", + "description": "This decimal fraction can be applied to limit the amount of interest paid deduction allowed.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Interest Paid", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Interest paid deduction haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "Interest Paid", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This decimal fraction can be applied to limit the amount of interest paid deduction allowed.", - "notes": "" + } }, "ID_InterestPaid_c": { + "title": "Ceiling on the amount of interest paid deduction allowed (dollars)", + "description": "The amount of interest paid deduction is limited to this dollar amount.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Interest Paid", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -4235,26 +4243,26 @@ "value": 9e+99 } ], - "title": "Ceiling on the amount of interest paid deduction allowed (dollars)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "Interest Paid", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The amount of interest paid deduction is limited to this dollar amount.", - "notes": "" + } }, "ID_Charity_crt_all": { + "title": "Ceiling (as a decimal fraction of AGI) for all charitable contribution deductions", + "description": "The total deduction for charity is capped at this fraction of AGI.", + "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.", + "section_1": "Itemized Deductions", + "section_2": "Charity", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -4289,8 +4297,6 @@ "value": 0.5 } ], - "title": "Ceiling (as a decimal fraction of AGI) for all charitable contribution deductions", - "type": "float", "validators": { "range": { "min": 0, @@ -4298,26 +4304,26 @@ "level": "warn" } }, - "section_1": "Itemized Deductions", - "section_2": "Charity", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The total deduction for charity is capped at this fraction of AGI.", - "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped." + } }, "ID_Charity_crt_noncash": { + "title": "Ceiling (as a decimal fraction of AGI) for noncash charitable contribution deductions", + "description": "The deduction for noncash charity contributions is capped at this fraction of AGI.", + "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped.", + "section_1": "Itemized Deductions", + "section_2": "Charity", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.3 } ], - "title": "Ceiling (as a decimal fraction of AGI) for noncash charitable contribution deductions", - "type": "float", "validators": { "range": { "min": 0, @@ -4325,70 +4331,72 @@ "level": "warn" } }, - "section_1": "Itemized Deductions", - "section_2": "Charity", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The deduction for noncash charity contributions is capped at this fraction of AGI.", - "notes": "When using PUF data, raising this parameter value may produce unexpected results because in PUF data the variables e19800 and e20100 are already capped." + } }, "ID_Charity_frt": { + "title": "Floor (as a decimal fraction of AGI) for deductible charitable contributions.", + "description": "Taxpayers are eligible to deduct the portion of their charitable expense exceeding this fraction of AGI.", + "notes": "This parameter allows for implementation of Option 52 from https://www.cbo.gov/sites/default/files/cbofiles/attachments/49638-BudgetOptions.pdf.", + "section_1": "Itemized Deductions", + "section_2": "Charity", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Floor (as a decimal fraction of AGI) for deductible charitable contributions.", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "Charity", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Taxpayers are eligible to deduct the portion of their charitable expense exceeding this fraction of AGI.", - "notes": "This parameter allows for implementation of Option 52 from https://www.cbo.gov/sites/default/files/cbofiles/attachments/49638-BudgetOptions.pdf." + } }, "ID_Charity_hc": { + "title": "Charity expense deduction haircut", + "description": "This decimal fraction can be applied to limit the amount of charity expense deduction allowed.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Charity", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Charity expense deduction haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "Charity", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This decimal fraction can be applied to limit the amount of charity expense deduction allowed.", - "notes": "" + } }, "ID_Charity_c": { + "title": "Ceiling on the amount of charity expense deduction allowed (dollars)", + "description": "The amount of charity expense deduction is limited to this dollar amount.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Charity", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -4566,26 +4574,26 @@ "value": 9e+99 } ], - "title": "Ceiling on the amount of charity expense deduction allowed (dollars)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "Charity", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The amount of charity expense deduction is limited to this dollar amount.", - "notes": "" + } }, "ID_Charity_f": { + "title": "Floor on the amount of charity expense deduction allowed (dollars)", + "description": "Only charitable giving in excess of this dollar amount is eligible for a deduction.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Charity", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -4613,52 +4621,52 @@ "value": 0.0 } ], - "title": "Floor on the amount of charity expense deduction allowed (dollars)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "Charity", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Only charitable giving in excess of this dollar amount is eligible for a deduction.", - "notes": "" + } }, "ID_Casualty_frt": { + "title": "Floor (as a decimal fraction of AGI) for deductible casualty loss.", + "description": "Taxpayers are eligible to deduct the portion of their gross casualty losses exceeding this fraction of AGI.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Casualty", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.1 } ], - "title": "Floor (as a decimal fraction of AGI) for deductible casualty loss.", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "Casualty", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "Taxpayers are eligible to deduct the portion of their gross casualty losses exceeding this fraction of AGI.", - "notes": "" + } }, "ID_Casualty_hc": { + "title": "Casualty expense deduction haircut", + "description": "This decimal fraction can be applied to limit the amount of casualty expense deduction allowed.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Casualty", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -4693,26 +4701,26 @@ "value": 0.0 } ], - "title": "Casualty expense deduction haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "Casualty", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "This decimal fraction can be applied to limit the amount of casualty expense deduction allowed.", - "notes": "" + } }, "ID_Casualty_c": { + "title": "Ceiling on the amount of casualty expense deduction allowed (dollars)", + "description": "The amount of casualty expense deduction is limited to this dollar amount.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Casualty", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -4890,34 +4898,32 @@ "value": 9e+99 } ], - "title": "Ceiling on the amount of casualty expense deduction allowed (dollars)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "Casualty", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": false - }, - "description": "The amount of casualty expense deduction is limited to this dollar amount.", - "notes": "" + } }, "ID_Miscellaneous_frt": { + "title": "Floor (as a decimal fraction of AGI) for deductible miscellaneous expenses.", + "description": "Taxpayers are eligible to deduct the portion of their miscellaneous expense exceeding this fraction of AGI.", + "notes": "When using PUF data, lowering this parameter value may produce unexpected results because in PUF data the variable e20400 is zero below the floor.", + "section_1": "Itemized Deductions", + "section_2": "Miscellaneous", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.02 } ], - "title": "Floor (as a decimal fraction of AGI) for deductible miscellaneous expenses.", - "type": "float", "validators": { "range": { "min": 0.02, @@ -4925,18 +4931,20 @@ "level": "warn" } }, - "section_1": "Itemized Deductions", - "section_2": "Miscellaneous", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Taxpayers are eligible to deduct the portion of their miscellaneous expense exceeding this fraction of AGI.", - "notes": "When using PUF data, lowering this parameter value may produce unexpected results because in PUF data the variable e20400 is zero below the floor." + } }, "ID_Miscellaneous_hc": { + "title": "Miscellaneous expense deduction haircut", + "description": "This decimal fraction can be applied to limit the amount of miscellaneous expense deduction allowed.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Miscellaneous", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -4971,26 +4979,26 @@ "value": 0.0 } ], - "title": "Miscellaneous expense deduction haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "Miscellaneous", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This decimal fraction can be applied to limit the amount of miscellaneous expense deduction allowed.", - "notes": "" + } }, "ID_Miscellaneous_c": { + "title": "Ceiling on the amount of miscellaneous expense deduction allowed (dollars)", + "description": "The amount of miscellaneous expense deduction is limited to this dollar amount.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Miscellaneous", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -5168,26 +5176,26 @@ "value": 9e+99 } ], - "title": "Ceiling on the amount of miscellaneous expense deduction allowed (dollars)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "Miscellaneous", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The amount of miscellaneous expense deduction is limited to this dollar amount.", - "notes": "" + } }, "ID_ps": { + "title": "Itemized deduction phaseout AGI start (Pease provision)", + "description": "The itemized deductions will be reduced for taxpayers with AGI higher than this level.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Itemized Deduction Limitation", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -5390,26 +5398,26 @@ "value": 378112.0 } ], - "title": "Itemized deduction phaseout AGI start (Pease provision)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "Itemized Deduction Limitation", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The itemized deductions will be reduced for taxpayers with AGI higher than this level.", - "notes": "" + } }, "ID_prt": { + "title": "Itemized deduction phaseout rate (Pease provision)", + "description": "Taxpayers will not be eligible to deduct the full amount of itemized deduction if their AGI is above the phaseout start. The deductible portion would be decreased at this rate for each dollar exceeding the start.", + "notes": "This phaseout rate cannot be lower than 0.03 for each dollar, due to limited data on non-itemizers.", + "section_1": "Itemized Deductions", + "section_2": "Itemized Deduction Limitation", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -5444,26 +5452,26 @@ "value": 0.03 } ], - "title": "Itemized deduction phaseout rate (Pease provision)", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "Itemized Deduction Limitation", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Taxpayers will not be eligible to deduct the full amount of itemized deduction if their AGI is above the phaseout start. The deductible portion would be decreased at this rate for each dollar exceeding the start.", - "notes": "This phaseout rate cannot be lower than 0.03 for each dollar, due to limited data on non-itemizers." + } }, "ID_crt": { + "title": "Itemized deduction maximum phaseout as a decimal fraction of total itemized deductions (Pease provision)", + "description": "The phaseout amount is capped at this fraction of the original total deduction.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Itemized Deduction Limitation", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -5498,78 +5506,78 @@ "value": 0.8 } ], - "title": "Itemized deduction maximum phaseout as a decimal fraction of total itemized deductions (Pease provision)", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "Itemized Deduction Limitation", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The phaseout amount is capped at this fraction of the original total deduction.", - "notes": "" + } }, "ID_BenefitSurtax_trt": { + "title": "Surtax rate on the benefits from specified itemized deductions", + "description": "The benefit from specified itemized deductions exceeding the credit is taxed at this rate. A surtax rate of 1 strictly limits the benefit from specified itemized deductions to the specified credit. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Surtax rate on the benefits from specified itemized deductions", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The benefit from specified itemized deductions exceeding the credit is taxed at this rate. A surtax rate of 1 strictly limits the benefit from specified itemized deductions to the specified credit. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", - "notes": "" + } }, "ID_BenefitSurtax_crt": { + "title": "Credit on itemized deduction benefit surtax (decimal fraction of AGI)", + "description": "The surtax on specified itemized deductions applies to benefits in excess of this fraction of AGI. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Credit on itemized deduction benefit surtax (decimal fraction of AGI)", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The surtax on specified itemized deductions applies to benefits in excess of this fraction of AGI. In http://www.nber.org/papers/w16921, Feldstein, Feenberg, and MacGuineas propose a credit of 2% of AGI against a 100% tax rate; in their proposal, however, a broader set of tax benefits, including the employer provided health exclusion, would be taxed.", - "notes": "" + } }, "ID_BenefitSurtax_em": { + "title": "Exemption for itemized deduction benefit surtax (dollar AGI threshold)", + "description": "This amount is subtracted from itemized deduction benefits in the calculation of the itemized deduction benefit surtax. With ID_BenefitSurtax_crt set to 0.0 and ID_BenefitSurtax_trt set to 1.0, this amount serves as a dollar limit on the value of itemized deductions.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -5747,26 +5755,26 @@ "value": 0.0 } ], - "title": "Exemption for itemized deduction benefit surtax (dollar AGI threshold)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "This amount is subtracted from itemized deduction benefits in the calculation of the itemized deduction benefit surtax. With ID_BenefitSurtax_crt set to 0.0 and ID_BenefitSurtax_trt set to 1.0, this amount serves as a dollar limit on the value of itemized deductions.", - "notes": "" + } }, "ID_BenefitSurtax_Switch": { + "title": "Deductions subject to the surtax on itemized deduction benefits", + "description": "The surtax on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, @@ -5804,52 +5812,52 @@ "value": true } ], - "title": "Deductions subject to the surtax on itemized deduction benefits", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Itemized Deductions", - "section_2": "Surtax On Itemized Deduction Benefits Above An AGI Threshold", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The surtax on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", - "notes": "" + } }, "ID_BenefitCap_rt": { + "title": "Ceiling on the benefits from itemized deductions; decimal fraction of total deductible expenses", + "description": "The benefit from specified itemized deductions is capped at this percent of the total deductible expenses.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Ceiling on the benefits from itemized deductions; decimal fraction of total deductible expenses", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Itemized Deductions", - "section_2": "Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The benefit from specified itemized deductions is capped at this percent of the total deductible expenses.", - "notes": "" + } }, "ID_BenefitCap_Switch": { + "title": "Deductions subject to the cap on itemized deduction benefits", + "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, @@ -5887,26 +5895,26 @@ "value": true } ], - "title": "Deductions subject to the cap on itemized deduction benefits", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Itemized Deductions", - "section_2": "Ceiling On The Benefit Of Itemized Deductions As A Percent Of Deductible Expenses", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", - "notes": "" + } }, "ID_c": { + "title": "Ceiling on the amount of itemized deductions allowed (dollars)", + "description": "The amount of itemized deductions is limited to this dollar amount.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -6084,52 +6092,52 @@ "value": 9e+99 } ], - "title": "Ceiling on the amount of itemized deductions allowed (dollars)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The amount of itemized deductions is limited to this dollar amount.", - "notes": "" + } }, "ID_AmountCap_rt": { + "title": "Ceiling on the gross amount of itemized deductions allowed; decimal fraction of AGI", + "description": "The gross allowable amount of specified itemized deductions is capped at this percent of AGI.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 9e+99 } ], - "title": "Ceiling on the gross amount of itemized deductions allowed; decimal fraction of AGI", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Itemized Deductions", - "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The gross allowable amount of specified itemized deductions is capped at this percent of AGI.", - "notes": "" + } }, "ID_AmountCap_Switch": { + "title": "Deductions subject to the cap on itemized deduction benefits", + "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", + "notes": "", + "section_1": "Itemized Deductions", + "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, @@ -6167,52 +6175,52 @@ "value": true } ], - "title": "Deductions subject to the cap on itemized deduction benefits", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Itemized Deductions", - "section_2": "Ceiling On The Amount Of Itemized Deductions Allowed", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The cap on itemized deduction benefits applies to the benefits derived from the itemized deductions specified with this parameter.", - "notes": "" + } }, "CG_rt1": { + "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 1", + "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 1 are taxed at this rate.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 1", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Capital Gains And Dividends", - "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 1 are taxed at this rate.", - "notes": "" + } }, "CG_brk1": { + "title": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 1", + "description": "The gains and dividends (stacked on top of regular income) below this are taxed at capital gain rate 1.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -6390,52 +6398,52 @@ "value": 78750.0 } ], - "title": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 1", - "type": "float", "validators": { "range": { "min": 0, "max": "CG_brk2" } }, - "section_1": "Capital Gains And Dividends", - "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The gains and dividends (stacked on top of regular income) below this are taxed at capital gain rate 1.", - "notes": "" + } }, "CG_rt2": { + "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 2", + "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 2 and above threshold 1 are taxed at this rate.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.15 } ], - "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 2", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Capital Gains And Dividends", - "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The capital gain and dividends (stacked on top of regular income) that are below threshold 2 and above threshold 1 are taxed at this rate.", - "notes": "" + } }, "CG_brk2": { + "title": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 2", + "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 1 are taxed at capital gain rate 2.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -6613,52 +6621,52 @@ "value": 488850.0 } ], - "title": "Top of long-term capital gains and qualified dividends (regular/non-AMT) tax bracket 2", - "type": "float", "validators": { "range": { "min": "CG_brk1", "max": "CG_brk3" } }, - "section_1": "Capital Gains And Dividends", - "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 1 are taxed at capital gain rate 2.", - "notes": "" + } }, "CG_rt3": { + "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 3", + "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 2 and below threshold 3 are taxed at this rate.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.2 } ], - "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 3", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Capital Gains And Dividends", - "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 2 and below threshold 3 are taxed at this rate.", - "notes": "" + } }, "CG_brk3": { + "title": "Top of long-term capital gains and qualified dividend tax (regular/non-AMT) bracket 3", + "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 2 are taxed at the capital gain rate 3; above this they are taxed at capital gain rate 4. Default value is essentially infinity.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -6836,78 +6844,78 @@ "value": 9e+99 } ], - "title": "Top of long-term capital gains and qualified dividend tax (regular/non-AMT) bracket 3", - "type": "float", "validators": { "range": { "min": "CG_brk2", "max": 9e+99 } }, - "section_1": "Capital Gains And Dividends", - "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The gains and dividends (stacked on top of regular income) below this and above top of bracket 2 are taxed at the capital gain rate 3; above this they are taxed at capital gain rate 4. Default value is essentially infinity.", - "notes": "" + } }, "CG_rt4": { + "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 4", + "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Long term capital gain and qualified dividends (regular/non-AMT) rate 4", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Capital Gains And Dividends", - "section_2": "Regular - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", - "notes": "" + } }, "AMT_CG_rt1": { + "title": "Long term capital gain and qualified dividends (AMT) rate 1", + "description": "Capital gain and qualified dividends (stacked on top of regular income) below threshold 1 are taxed at this rate.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Long term capital gain and qualified dividends (AMT) rate 1", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Capital Gains And Dividends", - "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Capital gain and qualified dividends (stacked on top of regular income) below threshold 1 are taxed at this rate.", - "notes": "" + } }, "AMT_CG_brk1": { + "title": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 1", + "description": "The gains and dividends, stacked last, of AMT taxable income below this are taxed at AMT capital gain rate 1.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -7085,52 +7093,52 @@ "value": 78750.0 } ], - "title": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 1", - "type": "float", "validators": { "range": { "min": 0, "max": "AMT_CG_brk2" } }, - "section_1": "Capital Gains And Dividends", - "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The gains and dividends, stacked last, of AMT taxable income below this are taxed at AMT capital gain rate 1.", - "notes": "" + } }, "AMT_CG_rt2": { + "title": "Long term capital gain and qualified dividends (AMT) rate 2", + "description": "Capital gain and qualified dividend (stacked on top of regular income) below threshold 2 and above threshold 1 are taxed at this rate.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.15 } ], - "title": "Long term capital gain and qualified dividends (AMT) rate 2", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Capital Gains And Dividends", - "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Capital gain and qualified dividend (stacked on top of regular income) below threshold 2 and above threshold 1 are taxed at this rate.", - "notes": "" + } }, "AMT_CG_brk2": { + "title": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 2", + "description": "The gains and dividends, stacked last, of AMT taxable income below this threshold and above bracket 1 are taxed at AMT capital gain rate 2.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -7308,52 +7316,52 @@ "value": 488850.0 } ], - "title": "Top of long-term capital gains and qualified dividends (AMT) tax bracket 2", - "type": "float", "validators": { "range": { "min": "AMT_CG_brk1", "max": "AMT_CG_brk3" } }, - "section_1": "Capital Gains And Dividends", - "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The gains and dividends, stacked last, of AMT taxable income below this threshold and above bracket 1 are taxed at AMT capital gain rate 2.", - "notes": "" + } }, "AMT_CG_rt3": { + "title": "Long term capital gain and qualified dividends (AMT) rate 3", + "description": "The capital gain and qualified dividend (stacked on top of regular income) above threshold 2 and below threshold 3 are taxed at this rate.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.2 } ], - "title": "Long term capital gain and qualified dividends (AMT) rate 3", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Capital Gains And Dividends", - "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The capital gain and qualified dividend (stacked on top of regular income) above threshold 2 and below threshold 3 are taxed at this rate.", - "notes": "" + } }, "AMT_CG_brk3": { + "title": "Long term capital gain and qualified dividends (AMT) threshold 3", + "description": "The gains and dividends, stacked last, of AMT taxable income below this and above bracket 2 are taxed at capital gain rate 3; above thisthey are taxed at AMT capital gain rate 4. Default value is essentially infinity.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -7531,78 +7539,78 @@ "value": 9e+99 } ], - "title": "Long term capital gain and qualified dividends (AMT) threshold 3", - "type": "float", "validators": { "range": { "min": "AMT_CG_brk2", "max": 9e+99 } }, - "section_1": "Capital Gains And Dividends", - "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The gains and dividends, stacked last, of AMT taxable income below this and above bracket 2 are taxed at capital gain rate 3; above thisthey are taxed at AMT capital gain rate 4. Default value is essentially infinity.", - "notes": "" + } }, "AMT_CG_rt4": { + "title": "Long term capital gain and qualified dividends (AMT) rate 4", + "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Long term capital gain and qualified dividends (AMT) rate 4", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Capital Gains And Dividends", - "section_2": "AMT - Long Term Capital Gains And Qualified Dividends", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "The capital gain and dividends (stacked on top of regular income) that are above threshold 3 are taxed at this rate.", - "notes": "" + } }, "CG_nodiff": { + "title": "Long term capital gains and qualified dividends taxed no differently than regular taxable income", + "description": "Specifies whether or not long term capital gains and qualified dividends are taxed like regular taxable income.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Long term capital gains and qualified dividends taxed no differently than regular taxable income", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Capital Gains And Dividends", - "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Specifies whether or not long term capital gains and qualified dividends are taxed like regular taxable income.", - "notes": "" + } }, "CG_ec": { + "title": "Dollar amount of all capital gains and qualified dividends that are excluded from AGI.", + "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -7633,52 +7641,52 @@ "value": 0.0 } ], - "title": "Dollar amount of all capital gains and qualified dividends that are excluded from AGI.", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Capital Gains And Dividends", - "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income.", - "notes": "" + } }, "CG_reinvest_ec_rt": { + "title": "Fraction of all capital gains and qualified dividends in excess of the dollar exclusion that are excluded from AGI.", + "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income. To limit the exclusion to capital gains and dividends invested within one year, set to statutory exclusion rate times the fraction of capital gains and qualified dividends in excess of the exclusion that are assumed to be reinvested within the year.", + "notes": "", + "section_1": "Capital Gains And Dividends", + "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Fraction of all capital gains and qualified dividends in excess of the dollar exclusion that are excluded from AGI.", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Capital Gains And Dividends", - "section_2": "Tax All Capital Gains And Dividends The Same As Regular Taxable Income", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Positive value used only if long term capital gains and qualified dividends taxed no differently than regular taxable income. To limit the exclusion to capital gains and dividends invested within one year, set to statutory exclusion rate times the fraction of capital gains and qualified dividends in excess of the exclusion that are assumed to be reinvested within the year.", - "notes": "" + } }, "II_rt1": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 1", + "description": "The lowest tax rate, applied to the portion of taxable income below tax bracket 1.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -7713,26 +7721,26 @@ "value": 0.1 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 1", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The lowest tax rate, applied to the portion of taxable income below tax bracket 1.", - "notes": "" + } }, "II_brk1": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1", + "description": "Taxable income below this threshold is taxed at tax rate 1.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -7935,26 +7943,26 @@ "value": 22472.0 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 1", - "type": "float", "validators": { "range": { "min": 0, "max": "II_brk2" } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Taxable income below this threshold is taxed at tax rate 1.", - "notes": "" + } }, "II_rt2": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 2", + "description": "The second lowest tax rate, applied to the portion of taxable income below tax bracket 2 and above tax bracket 1.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -7989,26 +7997,26 @@ "value": 0.15 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 2", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The second lowest tax rate, applied to the portion of taxable income below tax bracket 2 and above tax bracket 1.", - "notes": "" + } }, "II_brk2": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2", + "description": "Income below this threshold and above tax bracket 1 is taxed at tax rate 2.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -8211,26 +8219,26 @@ "value": 91455.0 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 2", - "type": "float", "validators": { "range": { "min": "II_brk1", "max": "II_brk3" } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Income below this threshold and above tax bracket 1 is taxed at tax rate 2.", - "notes": "" + } }, "II_rt3": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 3", + "description": "The third lowest tax rate, applied to the portion of taxable income below tax bracket 3 and above tax bracket 2.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -8265,26 +8273,26 @@ "value": 0.25 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 3", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The third lowest tax rate, applied to the portion of taxable income below tax bracket 3 and above tax bracket 2.", - "notes": "" + } }, "II_brk3": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3", + "description": "Income below this threshold and above tax bracket 2 is taxed at tax rate 3.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -8487,26 +8495,26 @@ "value": 184477.0 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 3", - "type": "float", "validators": { "range": { "min": "II_brk2", "max": "II_brk4" } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Income below this threshold and above tax bracket 2 is taxed at tax rate 3.", - "notes": "" + } }, "II_rt4": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 4", + "description": "The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -8541,26 +8549,26 @@ "value": 0.28 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 4", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The tax rate applied to the portion of taxable income below tax bracket 4 and above tax bracket 3.", - "notes": "" + } }, "II_brk4": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4", + "description": "Income below this threshold and above tax bracket 3 is taxed at tax rate 4.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -8763,26 +8771,26 @@ "value": 281174.0 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 4", - "type": "float", "validators": { "range": { "min": "II_brk3", "max": "II_brk5" } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Income below this threshold and above tax bracket 3 is taxed at tax rate 4.", - "notes": "" + } }, "II_rt5": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 5", + "description": "The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -8817,26 +8825,26 @@ "value": 0.33 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 5", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The third highest tax rate, applied to the portion of taxable income below tax bracket 5 and above tax bracket 4.", - "notes": "" + } }, "II_brk5": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5", + "description": "Income below this threshold and above tax bracket 4 is taxed at tax rate 5.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -9039,26 +9047,26 @@ "value": 502101.0 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket (upper threshold) 5", - "type": "float", "validators": { "range": { "min": "II_brk4", "max": "II_brk6" } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Income below this threshold and above tax bracket 4 is taxed at tax rate 5.", - "notes": "" + } }, "II_rt6": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 6", + "description": "The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -9093,26 +9101,26 @@ "value": 0.35 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 6", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The second higher tax rate, applied to the portion of taxable income below tax bracket 6 and above tax bracket 5.", - "notes": "" + } }, "II_brk6": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 6", + "description": "Income below this threshold and above tax bracket 5 is taxed at tax rate 6.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -9315,26 +9323,26 @@ "value": 567168.0 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 6", - "type": "float", "validators": { "range": { "min": "II_brk5", "max": "II_brk7" } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Income below this threshold and above tax bracket 5 is taxed at tax rate 6.", - "notes": "" + } }, "II_rt7": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 7", + "description": "The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -9369,26 +9377,26 @@ "value": 0.396 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 7", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The tax rate applied to the portion of taxable income below tax bracket 7 and above tax bracket 6.", - "notes": "" + } }, "II_brk7": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 7", + "description": "Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -9591,52 +9599,52 @@ "value": 9e+99 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax bracket 7", - "type": "float", "validators": { "range": { "min": "II_brk6", "max": 9e+99 } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Income below this threshold and above tax bracket 6 is taxed at tax rate 7; income above this threshold is taxed at tax rate 8. Default value is essentially infinity.", - "notes": "" + } }, "II_rt8": { + "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 8", + "description": "The tax rate applied to the portion of taxable income above tax bracket 7.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Regular: Non-AMT, Non-Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Personal income (regular/non-AMT/non-pass-through) tax rate 8", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Regular: Non-AMT, Non-Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The tax rate applied to the portion of taxable income above tax bracket 7.", - "notes": "" + } }, "PT_rt1": { + "title": "Pass-through income tax rate 1", + "description": "The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -9671,26 +9679,26 @@ "value": 0.1 } ], - "title": "Pass-through income tax rate 1", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 1.", - "notes": "" + } }, "PT_brk1": { + "title": "Pass-through income tax bracket (upper threshold) 1", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -9893,26 +9901,26 @@ "value": 22472.0 } ], - "title": "Pass-through income tax bracket (upper threshold) 1", - "type": "float", "validators": { "range": { "min": 0, "max": "PT_brk2" } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold is taxed at tax rate 1.", - "notes": "" + } }, "PT_rt2": { + "title": "Pass-through income tax rate 2", + "description": "The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -9947,26 +9955,26 @@ "value": 0.15 } ], - "title": "Pass-through income tax rate 2", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The second lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 2 and above tax bracket 1.", - "notes": "" + } }, "PT_brk2": { + "title": "Pass-through income tax bracket (upper threshold) 2", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -10169,26 +10177,26 @@ "value": 91455.0 } ], - "title": "Pass-through income tax bracket (upper threshold) 2", - "type": "float", "validators": { "range": { "min": "PT_brk1", "max": "PT_brk3" } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 1 is taxed at tax rate 2.", - "notes": "" + } }, "PT_rt3": { + "title": "Pass-through income tax rate 3", + "description": "The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -10223,26 +10231,26 @@ "value": 0.25 } ], - "title": "Pass-through income tax rate 3", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The third lowest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 3 and above tax bracket 2.", - "notes": "" + } }, "PT_brk3": { + "title": "Pass-through income tax bracket (upper threshold) 3", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -10445,26 +10453,26 @@ "value": 184477.0 } ], - "title": "Pass-through income tax bracket (upper threshold) 3", - "type": "float", "validators": { "range": { "min": "PT_brk2", "max": "PT_brk4" } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 2 is taxed at tax rate 3.", - "notes": "" + } }, "PT_rt4": { + "title": "Pass-through income tax rate 4", + "description": "The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -10499,26 +10507,26 @@ "value": 0.28 } ], - "title": "Pass-through income tax rate 4", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The tax rate applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 4 and above tax bracket 3.", - "notes": "" + } }, "PT_brk4": { + "title": "Pass-through income tax bracket (upper threshold) 4", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -10721,26 +10729,26 @@ "value": 281174.0 } ], - "title": "Pass-through income tax bracket (upper threshold) 4", - "type": "float", "validators": { "range": { "min": "PT_brk3", "max": "PT_brk5" } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 3 is taxed at tax rate 4.", - "notes": "" + } }, "PT_rt5": { + "title": "Pass-through income tax rate 5", + "description": "The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -10775,26 +10783,26 @@ "value": 0.33 } ], - "title": "Pass-through income tax rate 5", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The third highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 5 and above tax bracket 4.", - "notes": "" + } }, "PT_brk5": { + "title": "Pass-through income tax bracket (upper threshold) 5", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -10997,26 +11005,26 @@ "value": 502101.0 } ], - "title": "Pass-through income tax bracket (upper threshold) 5", - "type": "float", "validators": { "range": { "min": "PT_brk4", "max": "PT_brk6" } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 4 is taxed at tax rate 5.", - "notes": "" + } }, "PT_rt6": { + "title": "Pass-through income tax rate 6", + "description": "The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -11051,26 +11059,26 @@ "value": 0.35 } ], - "title": "Pass-through income tax rate 6", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The second higher tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 6 and above tax bracket 5.", - "notes": "" + } }, "PT_brk6": { + "title": "Pass-through income tax bracket (upper threshold) 6", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -11273,26 +11281,26 @@ "value": 567168.0 } ], - "title": "Pass-through income tax bracket (upper threshold) 6", - "type": "float", "validators": { "range": { "min": "PT_brk5", "max": "PT_brk7" } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 5 is taxed at tax rate 6.", - "notes": "" + } }, "PT_rt7": { + "title": "Pass-through income tax rate 7", + "description": "The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -11327,26 +11335,26 @@ "value": 0.396 } ], - "title": "Pass-through income tax rate 7", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The highest tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations below tax bracket 7 and above tax bracket 6.", - "notes": "" + } }, "PT_brk7": { + "title": "Extra pass-through income tax bracket", + "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 6 is taxed at tax rate 7. Default value is essentially infinity.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -11549,156 +11557,156 @@ "value": 9e+99 } ], - "title": "Extra pass-through income tax bracket", - "type": "float", "validators": { "range": { "min": "PT_brk6", "max": 9e+99 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Income from sole proprietorships, partnerships and S-corporations below this threshold and above tax bracket 6 is taxed at tax rate 7. Default value is essentially infinity.", - "notes": "" + } }, "PT_rt8": { + "title": "Extra pass-through income tax rate", + "description": "The extra tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations above the tax bracket 7.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Extra pass-through income tax rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The extra tax rate, applied to the portion of income from sole proprietorships, partnerships and S-corporations above the tax bracket 7.", - "notes": "" + } }, "PT_EligibleRate_active": { + "title": "Share of active business income eligible for PT rate schedule", + "description": "Eligibility rate of active business income for separate pass-through rates.", + "notes": "Active business income defined as e00900 + e26270", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 1.0 } ], - "title": "Share of active business income eligible for PT rate schedule", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Eligibility rate of active business income for separate pass-through rates.", - "notes": "Active business income defined as e00900 + e26270" + } }, "PT_EligibleRate_passive": { + "title": "Share of passive business income eligible for PT rate schedule", + "description": "Eligibility rate of passive business income for mseparate pass-through rates.", + "notes": "Passive business income defined as e02000 - e26270", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Share of passive business income eligible for PT rate schedule", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "Eligibility rate of passive business income for mseparate pass-through rates.", - "notes": "Passive business income defined as e02000 - e26270" + } }, "PT_wages_active_income": { + "title": "Wages included in (positive) active business income eligible for PT rates", + "description": "Whether active business income eligibility base for PT schedule for includes wages.", + "notes": "Only applies if active business income is positive", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Wages included in (positive) active business income eligible for PT rates", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": false, "cps": false - }, - "description": "Whether active business income eligibility base for PT schedule for includes wages.", - "notes": "Only applies if active business income is positive" + } }, "PT_top_stacking": { + "title": "PT taxable income stacked on top of regular taxable income", + "description": "Whether taxable income eligible for PT rate schedule is stacked on top of regular taxable income.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": true } ], - "title": "PT taxable income stacked on top of regular taxable income", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Whether taxable income eligible for PT rate schedule is stacked on top of regular taxable income.", - "notes": "" + } }, "PT_qbid_rt": { + "title": "Pass-through qualified business income deduction rate", + "description": "Fraction of pass-through business income that may be excluded from taxable income.", + "notes": "Applies to e00900 + e26270", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -11733,26 +11741,26 @@ "value": 0.0 } ], - "title": "Pass-through qualified business income deduction rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Fraction of pass-through business income that may be excluded from taxable income.", - "notes": "Applies to e00900 + e26270" + } }, "PT_qbid_taxinc_thd": { + "title": "Lower threshold of pre-QBID taxable income", + "description": "Pre-QBID taxable income above this lower threshold implies the QBID amount begins to be limited.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -11955,26 +11963,26 @@ "value": 0.0 } ], - "title": "Lower threshold of pre-QBID taxable income", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "Pre-QBID taxable income above this lower threshold implies the QBID amount begins to be limited.", - "notes": "" + } }, "PT_qbid_taxinc_gap": { + "title": "Dollar gap between upper and lower threshold of pre-QBID taxable income", + "description": "Pre-QBID taxable income above this upper threshold implies the QBID amount is even more limited.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -12177,26 +12185,26 @@ "value": 1.0 } ], - "title": "Dollar gap between upper and lower threshold of pre-QBID taxable income", - "type": "float", "validators": { "range": { "min": 1, "max": 9e+99 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Pre-QBID taxable income above this upper threshold implies the QBID amount is even more limited.", - "notes": "" + } }, "PT_qbid_w2_wages_rt": { + "title": "QBID cap rate on pass-through business W-2 wages paid", + "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -12231,26 +12239,26 @@ "value": 0.0 } ], - "title": "QBID cap rate on pass-through business W-2 wages paid", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": false, "cps": false - }, - "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds.", - "notes": "" + } }, "PT_qbid_alt_w2_wages_rt": { + "title": "Alternative QBID cap rate on pass-through business W-2 wages paid", + "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business plus some fraction of business property if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -12285,26 +12293,26 @@ "value": 0.0 } ], - "title": "Alternative QBID cap rate on pass-through business W-2 wages paid", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": false, "cps": false - }, - "description": "QBID is capped at this fraction of W-2 wages paid by the pass-through business plus some fraction of business property if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", - "notes": "" + } }, "PT_qbid_alt_property_rt": { + "title": "Alternative QBID cap rate on pass-through business property owned", + "description": "QBID is capped at this fraction of business property owned plus some fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Pass-Through", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -12339,26 +12347,26 @@ "value": 0.0 } ], - "title": "Alternative QBID cap rate on pass-through business property owned", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Pass-Through", - "indexable": false, - "indexed": false, "compatible_data": { "puf": false, "cps": false - }, - "description": "QBID is capped at this fraction of business property owned plus some fraction of W-2 wages paid by the pass-through business if pre-QBID taxable income is above the QBID thresholds and the alternative cap is higher than the main wage-only cap.", - "notes": "" + } }, "AMT_em": { + "title": "AMT exemption amount", + "description": "The amount of AMT taxable income exempted from AMT.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Alternative Minimum Tax", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -12561,52 +12569,52 @@ "value": 101818.0 } ], - "title": "AMT exemption amount", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Personal Income", - "section_2": "Alternative Minimum Tax", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The amount of AMT taxable income exempted from AMT.", - "notes": "" + } }, "AMT_prt": { + "title": "AMT exemption phaseout rate", + "description": "AMT exemption will decrease at this rate for each dollar of AMT taxable income exceeding AMT phaseout start.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Alternative Minimum Tax", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.25 } ], - "title": "AMT exemption phaseout rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Alternative Minimum Tax", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "AMT exemption will decrease at this rate for each dollar of AMT taxable income exceeding AMT phaseout start.", - "notes": "" + } }, "AMT_em_ps": { + "title": "AMT exemption phaseout start", + "description": "AMT exemption starts to decrease when AMT taxable income goes beyond this threshold.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Alternative Minimum Tax", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -12809,26 +12817,26 @@ "value": 193876.0 } ], - "title": "AMT exemption phaseout start", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Personal Income", - "section_2": "Alternative Minimum Tax", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "AMT exemption starts to decrease when AMT taxable income goes beyond this threshold.", - "notes": "" + } }, "AMT_child_em": { + "title": "Child AMT exemption additional income base", + "description": "The child's AMT exemption is capped by this amount plus the child's earned income.", + "notes": "", + "section_1": "", + "section_2": "", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -12859,78 +12867,78 @@ "value": 0.0 } ], - "title": "Child AMT exemption additional income base", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "", - "section_2": "", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The child's AMT exemption is capped by this amount plus the child's earned income.", - "notes": "" + } }, "AMT_child_em_c_age": { + "title": "Age ceiling for special AMT exemption", + "description": "Individuals under this age must use the child AMT exemption rules.", + "notes": "", + "section_1": "", + "section_2": "", + "indexable": false, + "indexed": false, + "type": "int", "value": [ { "year": 2013, "value": 18 } ], - "title": "Age ceiling for special AMT exemption", - "type": "int", "validators": { "range": { "min": 0, "max": 30 } }, - "section_1": "", - "section_2": "", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Individuals under this age must use the child AMT exemption rules.", - "notes": "" + } }, "AMT_rt1": { + "title": "AMT rate 1", + "description": "The tax rate applied to the portion of AMT taxable income below the surtax threshold, AMT bracket 1.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Alternative Minimum Tax", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.26 } ], - "title": "AMT rate 1", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Alternative Minimum Tax", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The tax rate applied to the portion of AMT taxable income below the surtax threshold, AMT bracket 1.", - "notes": "" + } }, "AMT_brk1": { + "title": "AMT bracket 1 (upper threshold)", + "description": "AMT taxable income below this is subject to AMT rate 1 and above it is subject to AMT rate 1 + the additional AMT rate.", + "notes": "", + "section_1": "Personal Income", + "section_2": "Alternative Minimum Tax", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -12961,52 +12969,52 @@ "value": 194800.0 } ], - "title": "AMT bracket 1 (upper threshold)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Personal Income", - "section_2": "Alternative Minimum Tax", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "AMT taxable income below this is subject to AMT rate 1 and above it is subject to AMT rate 1 + the additional AMT rate.", - "notes": "" + } }, "AMT_rt2": { + "title": "Additional AMT rate for AMT taxable income above AMT bracket 1", + "description": "The additional tax rate applied to the portion of AMT income above the AMT bracket 1.", + "notes": "This is the additional tax rate (on top of AMT rate 1) for AMT income above AMT bracket 1.", + "section_1": "Personal Income", + "section_2": "Alternative Minimum Tax", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.02 } ], - "title": "Additional AMT rate for AMT taxable income above AMT bracket 1", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Personal Income", - "section_2": "Alternative Minimum Tax", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The additional tax rate applied to the portion of AMT income above the AMT bracket 1.", - "notes": "This is the additional tax rate (on top of AMT rate 1) for AMT income above AMT bracket 1." + } }, "AMT_em_pe": { + "title": "AMT exemption phaseout ending AMT taxable income for Married filing Separately", + "description": "The AMT exemption is entirely disallowed beyond this AMT taxable income level for individuals who are married but filing separately.", + "notes": "", + "section_1": "", + "section_2": "", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -13041,104 +13049,104 @@ "value": 300574.0 } ], - "title": "AMT exemption phaseout ending AMT taxable income for Married filing Separately", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "", - "section_2": "", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": false - }, - "description": "The AMT exemption is entirely disallowed beyond this AMT taxable income level for individuals who are married but filing separately.", - "notes": "" + } }, "CDCC_c": { + "title": "Maximum child & dependent care credit per dependent", + "description": "The maximum amount of credit allowed for each qualifying dependent.", + "notes": "", + "section_1": "Nonrefundable Credits", + "section_2": "Child And Dependent Care", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 3000.0 } ], - "title": "Maximum child & dependent care credit per dependent", - "type": "float", "validators": { "range": { "min": 0, "max": 3000 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Child And Dependent Care", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The maximum amount of credit allowed for each qualifying dependent.", - "notes": "" + } }, "CDCC_ps": { + "title": "Child & dependent care credit phaseout start", + "description": "For taxpayers with AGI over this amount, the credit is reduced by one percentage point each $2000 of AGI over this amount.", + "notes": "", + "section_1": "Nonrefundable Credits", + "section_2": "Child And Dependent Care", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 15000.0 } ], - "title": "Child & dependent care credit phaseout start", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Child And Dependent Care", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "For taxpayers with AGI over this amount, the credit is reduced by one percentage point each $2000 of AGI over this amount.", - "notes": "" + } }, "CDCC_crt": { + "title": "Child & dependent care credit phaseout percentage rate ceiling", + "description": "The maximum percentage rate in the AGI phaseout; this percentage rate decreases as AGI rises above the CDCC_ps level.", + "notes": "", + "section_1": "Nonrefundable Credits", + "section_2": "Child And Dependent Care", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 35.0 } ], - "title": "Child & dependent care credit phaseout percentage rate ceiling", - "type": "float", "validators": { "range": { "min": 0, "max": 100 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Child And Dependent Care", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The maximum percentage rate in the AGI phaseout; this percentage rate decreases as AGI rises above the CDCC_ps level.", - "notes": "" + } }, "CTC_c": { + "title": "Maximum nonrefundable child tax credit per child", + "description": "The maximum nonrefundable credit allowed for each child.", + "notes": "", + "section_1": "Child/Dependent Credits", + "section_2": "Child Tax Credit", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -13173,52 +13181,52 @@ "value": 1000.0 } ], - "title": "Maximum nonrefundable child tax credit per child", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Child/Dependent Credits", - "section_2": "Child Tax Credit", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The maximum nonrefundable credit allowed for each child.", - "notes": "" + } }, "CTC_c_under5_bonus": { + "title": "Bonus child tax credit maximum for qualifying children under five", + "description": "The maximum amount of child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", + "notes": "", + "section_1": "Child/Dependent Credits", + "section_2": "Child Tax Credit", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Bonus child tax credit maximum for qualifying children under five", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Child/Dependent Credits", - "section_2": "Child Tax Credit", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The maximum amount of child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", - "notes": "" + } }, "CTC_ps": { + "title": "Child tax credit phaseout MAGI start", + "description": "Child tax credit begins to decrease when MAGI is above this level; read descriptions of the dependent credit amounts for how they phase out when MAGI is above this level.", + "notes": "", + "section_1": "Child/Dependent Credits", + "section_2": "Child Tax Credit", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -13421,52 +13429,52 @@ "value": 75000.0 } ], - "title": "Child tax credit phaseout MAGI start", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Child/Dependent Credits", - "section_2": "Child Tax Credit", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Child tax credit begins to decrease when MAGI is above this level; read descriptions of the dependent credit amounts for how they phase out when MAGI is above this level.", - "notes": "" + } }, "CTC_prt": { + "title": "Child and dependent tax credit phaseout rate", + "description": "The amount of the credit starts to decrease at this rate if MAGI is higher than child tax credit phaseout start.", + "notes": "", + "section_1": "Child/Dependent Credits", + "section_2": "Child Tax Credit", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.05 } ], - "title": "Child and dependent tax credit phaseout rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Child/Dependent Credits", - "section_2": "Child Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The amount of the credit starts to decrease at this rate if MAGI is higher than child tax credit phaseout start.", - "notes": "" + } }, "ACTC_c": { + "title": "Maximum refundable additional child tax credit", + "description": "This refundable credit is applied to child dependents and phases out exactly like the CTC amount.", + "notes": "", + "section_1": "Child/Dependent Credits", + "section_2": "Additional Child Tax Credit", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -13525,26 +13533,26 @@ "value": 1000.0 } ], - "title": "Maximum refundable additional child tax credit", - "type": "float", "validators": { "range": { "min": 0, "max": "CTC_c" } }, - "section_1": "Child/Dependent Credits", - "section_2": "Additional Child Tax Credit", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This refundable credit is applied to child dependents and phases out exactly like the CTC amount.", - "notes": "" + } }, "ODC_c": { + "title": "Maximum nonrefundable other-dependent credit", + "description": "This nonrefundable credit is applied to non-child dependents and phases out along with the CTC amount.", + "notes": "Became current-law policy with passage of TCJA", + "section_1": "Child/Dependent Credits", + "section_2": "Other Dependent Tax Credit", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -13579,26 +13587,26 @@ "value": 0.0 } ], - "title": "Maximum nonrefundable other-dependent credit", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Child/Dependent Credits", - "section_2": "Other Dependent Tax Credit", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This nonrefundable credit is applied to non-child dependents and phases out along with the CTC amount.", - "notes": "Became current-law policy with passage of TCJA" + } }, "NIIT_thd": { + "title": "Net Investment Income Tax modified AGI threshold", + "description": "If modified AGI is more than this threshold, filing unit is subject to the Net Investment Income Tax.", + "notes": "", + "section_1": "Other Taxes", + "section_2": "Net Investment Income Tax", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -13626,78 +13634,78 @@ "value": 250000.0 } ], - "title": "Net Investment Income Tax modified AGI threshold", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Other Taxes", - "section_2": "Net Investment Income Tax", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "If modified AGI is more than this threshold, filing unit is subject to the Net Investment Income Tax.", - "notes": "" + } }, "NIIT_PT_taxed": { + "title": "Whether or not partnership and S-corp income is in NIIT base", + "description": "false ==> partnership and S-corp income excluded from NIIT base; true ==> partnership and S-corp income is in NIIT base.", + "notes": "", + "section_1": "Other Taxes", + "section_2": "Net Investment Income Tax", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Whether or not partnership and S-corp income is in NIIT base", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Other Taxes", - "section_2": "Net Investment Income Tax", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "false ==> partnership and S-corp income excluded from NIIT base; true ==> partnership and S-corp income is in NIIT base.", - "notes": "" + } }, "NIIT_rt": { + "title": "Net Investment Income Tax rate", + "description": "If modified AGI exceeds NIIT_thd, all net investment income is taxed at this rate.", + "notes": "", + "section_1": "Other Taxes", + "section_2": "Net Investment Income Tax", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.038 } ], - "title": "Net Investment Income Tax rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Other Taxes", - "section_2": "Net Investment Income Tax", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "If modified AGI exceeds NIIT_thd, all net investment income is taxed at this rate.", - "notes": "" + } }, "EITC_c": { + "title": "Maximum earned income credit", + "description": "This is the maximum amount of earned income credit taxpayers are eligible for; it depends on how many kids they have.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Earned Income Tax Credit", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -13840,26 +13848,26 @@ "value": 6557.0 } ], - "title": "Maximum earned income credit", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "Earned Income Tax Credit", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "This is the maximum amount of earned income credit taxpayers are eligible for; it depends on how many kids they have.", - "notes": "" + } }, "EITC_rt": { + "title": "Earned income credit phasein rate", + "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum earned income credit.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Earned Income Tax Credit", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -13882,26 +13890,26 @@ "value": 0.45 } ], - "title": "Earned income credit phasein rate", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum earned income credit.", - "notes": "" + } }, "EITC_basic_frac": { + "title": "Fraction of maximum earned income credit paid at zero earnings", + "description": "This fraction of EITC_c is always paid as a credit and one minus this fraction is applied to the phasein rate, EITC_rt. This fraction is zero under current law.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Earned Income Tax Credit", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -13932,26 +13940,26 @@ "value": 0.0 } ], - "title": "Fraction of maximum earned income credit paid at zero earnings", - "type": "float", "validators": { "range": { "min": 0.0, "max": 1.0 } }, - "section_1": "Refundable Credits", - "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This fraction of EITC_c is always paid as a credit and one minus this fraction is applied to the phasein rate, EITC_rt. This fraction is zero under current law.", - "notes": "" + } }, "EITC_prt": { + "title": "Earned income credit phaseout rate", + "description": "Earned income credit begins to decrease at the this rate when AGI is higher than earned income credit phaseout start AGI.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Earned Income Tax Credit", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -13974,26 +13982,26 @@ "value": 0.2106 } ], - "title": "Earned income credit phaseout rate", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Earned income credit begins to decrease at the this rate when AGI is higher than earned income credit phaseout start AGI.", - "notes": "" + } }, "EITC_ps": { + "title": "Earned income credit phaseout start AGI", + "description": "If AGI is higher than this threshold, the amount of EITC will start to decrease at the phaseout rate.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Earned Income Tax Credit", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -14136,26 +14144,26 @@ "value": 19030.0 } ], - "title": "Earned income credit phaseout start AGI", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "Earned Income Tax Credit", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "If AGI is higher than this threshold, the amount of EITC will start to decrease at the phaseout rate.", - "notes": "" + } }, "EITC_ps_MarriedJ": { + "title": "Extra earned income credit phaseout start AGI for married filling jointly", + "description": "This is the additional amount added on the regular phaseout start amount for taxpayers with filling status of married filing jointly.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Earned Income Tax Credit", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -14298,78 +14306,78 @@ "value": 5790.0 } ], - "title": "Extra earned income credit phaseout start AGI for married filling jointly", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "Earned Income Tax Credit", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "This is the additional amount added on the regular phaseout start amount for taxpayers with filling status of married filing jointly.", - "notes": "" + } }, "EITC_MinEligAge": { + "title": "Minimum Age for Childless EITC Eligibility", + "description": "For a childless filing unit, at least one individual's age needs to be no less than this age (but no greater than the EITC_MaxEligAge) in order to be eligible for an earned income tax credit.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Earned Income Tax Credit", + "indexable": false, + "indexed": false, + "type": "int", "value": [ { "year": 2013, "value": 25 } ], - "title": "Minimum Age for Childless EITC Eligibility", - "type": "int", "validators": { "range": { "min": 0, "max": 125 } }, - "section_1": "Refundable Credits", - "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "For a childless filing unit, at least one individual's age needs to be no less than this age (but no greater than the EITC_MaxEligAge) in order to be eligible for an earned income tax credit.", - "notes": "" + } }, "EITC_MaxEligAge": { + "title": "Maximum Age for Childless EITC Eligibility", + "description": "For a childless filing unit, at least one individual's age needs to be no greater than this age (but no less than the EITC_MinEligAge) in order to be eligible for an earned income tax credit.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Earned Income Tax Credit", + "indexable": false, + "indexed": false, + "type": "int", "value": [ { "year": 2013, "value": 64 } ], - "title": "Maximum Age for Childless EITC Eligibility", - "type": "int", "validators": { "range": { "min": 0, "max": 125 } }, - "section_1": "Refundable Credits", - "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "For a childless filing unit, at least one individual's age needs to be no greater than this age (but no less than the EITC_MinEligAge) in order to be eligible for an earned income tax credit.", - "notes": "" + } }, "EITC_InvestIncome_c": { + "title": "Maximum investment income before EITC reduction", + "description": "The EITC amount is reduced when investment income exceeds this ceiling.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Earned Income Tax Credit", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -14400,104 +14408,104 @@ "value": 3600.0 } ], - "title": "Maximum investment income before EITC reduction", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "Earned Income Tax Credit", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The EITC amount is reduced when investment income exceeds this ceiling.", - "notes": "" + } }, "EITC_excess_InvestIncome_rt": { + "title": "Rate of EITC reduction when investment income exceeds ceiling", + "description": "The EITC amount is reduced at this rate per dollar of investment income exceeding the ceiling.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Earned Income Tax Credit", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 9e+99 } ], - "title": "Rate of EITC reduction when investment income exceeds ceiling", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The EITC amount is reduced at this rate per dollar of investment income exceeding the ceiling.", - "notes": "" + } }, "EITC_indiv": { + "title": "EITC is computed for each spouse based on individual earnings", + "description": "Current-law value is false implying EITC is filing-unit based; a value of true implies EITC is computed for each individual wage earner. The additional phaseout start for joint filers is not affected by this parameter, nor are investment income and age eligibilty rules.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Earned Income Tax Credit", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "EITC is computed for each spouse based on individual earnings", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Refundable Credits", - "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Current-law value is false implying EITC is filing-unit based; a value of true implies EITC is computed for each individual wage earner. The additional phaseout start for joint filers is not affected by this parameter, nor are investment income and age eligibilty rules.", - "notes": "" + } }, "EITC_sep_filers_elig": { + "title": "Separate filers are eligibile for the EITC", + "description": "Current-law value is false, implying ineligibility.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "Earned Income Tax Credit", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Separate filers are eligibile for the EITC", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Refundable Credits", - "section_2": "Earned Income Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "Current-law value is false, implying ineligibility.", - "notes": "" + } }, "RPTC_c": { + "title": "Maximum refundable payroll tax credit", + "description": "This is the maximum amount of the refundable payroll tax credit for each taxpayer/spouse.", + "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.", + "section_1": "Refundable Credits", + "section_2": "Refundable Payroll Tax Credit", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -14528,78 +14536,78 @@ "value": 0.0 } ], - "title": "Maximum refundable payroll tax credit", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "Refundable Payroll Tax Credit", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "This is the maximum amount of the refundable payroll tax credit for each taxpayer/spouse.", - "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt." + } }, "RPTC_rt": { + "title": "Refundable payroll tax credit phasein rate", + "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum refundable payroll tax credit, where earnings is defined as in FICA and SECA.", + "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt.", + "section_1": "Refundable Credits", + "section_2": "Refundable Payroll Tax Credit", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Refundable payroll tax credit phasein rate", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "Refundable Payroll Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Pre-phaseout credit is minimum of this rate times earnings and the maximum refundable payroll tax credit, where earnings is defined as in FICA and SECA.", - "notes": "Positive values of RPTC_c and RPTC_rt can be used to emulate a payroll tax exemption, the implied value of which is RPTC_c divided by RPTC_rt." + } }, "LLC_Expense_c": { + "title": "Lifetime learning credit expense limit", + "description": "The maximum expense eligible for lifetime learning credit, per child.", + "notes": "", + "section_1": "", + "section_2": "", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 10000.0 } ], - "title": "Lifetime learning credit expense limit", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "", - "section_2": "", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "The maximum expense eligible for lifetime learning credit, per child.", - "notes": "" + } }, "ETC_pe_Single": { + "title": "Education tax credit phaseout ends (Single)", + "description": "The education tax credit will be zero for those taxpayers of single filing status with modified AGI (in thousands) higher than this level.", + "notes": "", + "section_1": "", + "section_2": "", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -14630,26 +14638,26 @@ "value": 68.0 } ], - "title": "Education tax credit phaseout ends (Single)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "", - "section_2": "", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": false - }, - "description": "The education tax credit will be zero for those taxpayers of single filing status with modified AGI (in thousands) higher than this level.", - "notes": "" + } }, "ETC_pe_Married": { + "title": "Education tax credit phaseout ends (Married)", + "description": "The education tax credit will be zero for those taxpayers of married filing status with modified AGI level (in thousands) higher than this level.", + "notes": "", + "section_1": "", + "section_2": "", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -14680,78 +14688,78 @@ "value": 136.0 } ], - "title": "Education tax credit phaseout ends (Married)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "", - "section_2": "", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": false - }, - "description": "The education tax credit will be zero for those taxpayers of married filing status with modified AGI level (in thousands) higher than this level.", - "notes": "" + } }, "ACTC_rt": { + "title": "Additional Child Tax Credit rate", + "description": "This is the fraction of earnings used in calculating the ACTC, which is a partially refundable credit that supplements the CTC for some taxpayers.", + "notes": "", + "section_1": "Child/Dependent Credits", + "section_2": "Additional Child Tax Credit", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.15 } ], - "title": "Additional Child Tax Credit rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Child/Dependent Credits", - "section_2": "Additional Child Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "This is the fraction of earnings used in calculating the ACTC, which is a partially refundable credit that supplements the CTC for some taxpayers.", - "notes": "" + } }, "ACTC_rt_bonus_under5family": { + "title": "Bonus additional child tax credit rate for families with qualifying children under 5", + "description": "For families with qualifying children under 5 years old, this bonus rate is added to the fraction of earnings (additional child tax credit rate) used in calculating the ACTC.", + "notes": "", + "section_1": "Child/Dependent Credits", + "section_2": "Additional Child Tax Credit", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Bonus additional child tax credit rate for families with qualifying children under 5", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Child/Dependent Credits", - "section_2": "Additional Child Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "For families with qualifying children under 5 years old, this bonus rate is added to the fraction of earnings (additional child tax credit rate) used in calculating the ACTC.", - "notes": "" + } }, "ACTC_Income_thd": { + "title": "Additional Child Tax Credit income threshold", + "description": "The portion of earned income below this threshold does not count as base for the Additional Child Tax Credit.", + "notes": "", + "section_1": "Child/Dependent Credits", + "section_2": "Additional Child Tax Credit", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -14786,156 +14794,156 @@ "value": 3000.0 } ], - "title": "Additional Child Tax Credit income threshold", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Child/Dependent Credits", - "section_2": "Additional Child Tax Credit", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The portion of earned income below this threshold does not count as base for the Additional Child Tax Credit.", - "notes": "" + } }, "ACTC_ChildNum": { + "title": "Additional Child Tax Credit minimum number of qualified children for different formula", + "description": "Families with this number of qualified children or more may qualify for a different formula to calculate the Additional Child Tax Credit, which is a partially refundable credit that supplements the Child Tax Credit for some taxpayers.", + "notes": "", + "section_1": "Child/Dependent Credits", + "section_2": "Additional Child Tax Credit", + "indexable": false, + "indexed": false, + "type": "int", "value": [ { "year": 2013, "value": 3 } ], - "title": "Additional Child Tax Credit minimum number of qualified children for different formula", - "type": "int", "validators": { "range": { "min": 0, "max": 99 } }, - "section_1": "Child/Dependent Credits", - "section_2": "Additional Child Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Families with this number of qualified children or more may qualify for a different formula to calculate the Additional Child Tax Credit, which is a partially refundable credit that supplements the Child Tax Credit for some taxpayers.", - "notes": "" + } }, "CTC_new_c": { + "title": "New refundable child tax credit maximum amount per child", + "description": "In addition to all credits currently available for dependents, this parameter gives each qualifying child a new refundable credit with this maximum amount.", + "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.", + "section_1": "Refundable Credits", + "section_2": "New Refundable Child Tax Credit", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "New refundable child tax credit maximum amount per child", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "New Refundable Child Tax Credit", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "In addition to all credits currently available for dependents, this parameter gives each qualifying child a new refundable credit with this maximum amount.", - "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit." + } }, "CTC_new_c_under5_bonus": { + "title": "Bonus new refundable child tax credit maximum for qualifying children under five", + "description": "The maximum amount of the new refundable child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "New Refundable Child Tax Credit", + "indexable": true, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Bonus new refundable child tax credit maximum for qualifying children under five", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "New Refundable Child Tax Credit", - "indexable": true, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The maximum amount of the new refundable child tax credit allowed for each child is increased by this amount for qualifying children under 5 years old.", - "notes": "" + } }, "CTC_new_for_all": { + "title": "Whether or not maximum amount of the new refundable child tax credit is available to all", + "description": "The maximum amount of the new refundable child tax credit does not depend on AGI when true; otherwise, see CTC_new_rt.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "New Refundable Child Tax Credit", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Whether or not maximum amount of the new refundable child tax credit is available to all", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Refundable Credits", - "section_2": "New Refundable Child Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The maximum amount of the new refundable child tax credit does not depend on AGI when true; otherwise, see CTC_new_rt.", - "notes": "" + } }, "CTC_new_rt": { + "title": "New refundable child tax credit amount phasein rate", + "description": "The maximum amount of the new child tax credit is increased at this rate per dollar of positive AGI until CTC_new_c times the number of qualified children is reached if CTC_new_for_all is false; if CTC_new_for_all is true, there is no AGI limitation to the maximum amount.", + "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit.", + "section_1": "Refundable Credits", + "section_2": "New Refundable Child Tax Credit", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "New refundable child tax credit amount phasein rate", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "New Refundable Child Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The maximum amount of the new child tax credit is increased at this rate per dollar of positive AGI until CTC_new_c times the number of qualified children is reached if CTC_new_for_all is false; if CTC_new_for_all is true, there is no AGI limitation to the maximum amount.", - "notes": "Child age qualification for the new child tax credit is the same as under current-law Child Tax Credit." + } }, "CTC_new_ps": { + "title": "New refundable child tax credit phaseout starting AGI", + "description": "The total amount of new child tax credit is reduced for taxpayers with AGI higher than this level.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "New Refundable Child Tax Credit", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -15113,156 +15121,156 @@ "value": 0.0 } ], - "title": "New refundable child tax credit phaseout starting AGI", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "New Refundable Child Tax Credit", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The total amount of new child tax credit is reduced for taxpayers with AGI higher than this level.", - "notes": "" + } }, "CTC_new_prt": { + "title": "New refundable child tax credit amount phaseout rate", + "description": "The total amount of the new child tax credit is reduced at this rate per dollar exceeding the phaseout starting AGI, CTC_new_ps.", + "notes": "", + "section_1": "Refundable Credits", + "section_2": "New Refundable Child Tax Credit", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "New refundable child tax credit amount phaseout rate", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "New Refundable Child Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The total amount of the new child tax credit is reduced at this rate per dollar exceeding the phaseout starting AGI, CTC_new_ps.", - "notes": "" + } }, "CTC_new_refund_limited": { + "title": "New child tax credit refund limited to a decimal fraction of payroll taxes", + "description": "Specifies whether the new child tax credit refund is limited by the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt).", + "notes": "Set this parameter to true to limit the refundability or false to allow full refundability for all taxpayers.", + "section_1": "Refundable Credits", + "section_2": "New Refundable Child Tax Credit", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "New child tax credit refund limited to a decimal fraction of payroll taxes", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Refundable Credits", - "section_2": "New Refundable Child Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Specifies whether the new child tax credit refund is limited by the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt).", - "notes": "Set this parameter to true to limit the refundability or false to allow full refundability for all taxpayers." + } }, "CTC_new_refund_limit_payroll_rt": { + "title": "New child tax credit refund limit rate (decimal fraction of payroll taxes)", + "description": "The fraction of payroll taxes (employee plus employer shares, but excluding all Medicare payroll taxes) that serves as a limit to the amount of new child tax credit that can be refunded.", + "notes": "Set this parameter to zero for no refundability; set it to 9e99 for unlimited refundability for taxpayers with payroll tax liabilities.", + "section_1": "Refundable Credits", + "section_2": "New Refundable Child Tax Credit", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "New child tax credit refund limit rate (decimal fraction of payroll taxes)", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Refundable Credits", - "section_2": "New Refundable Child Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The fraction of payroll taxes (employee plus employer shares, but excluding all Medicare payroll taxes) that serves as a limit to the amount of new child tax credit that can be refunded.", - "notes": "Set this parameter to zero for no refundability; set it to 9e99 for unlimited refundability for taxpayers with payroll tax liabilities." + } }, "CTC_new_refund_limited_all_payroll": { + "title": "New child tax credit refund limit applies to all FICA taxes, not just OASDI", + "description": "Specifies whether the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt) applies to all FICA taxes (true) or just OASDI taxes (false).", + "notes": "If the new CTC is limited, set this parameter to true to limit the refundability to all FICA taxes or false to limit refundabiity to OASDI taxes.", + "section_1": "Refundable Credits", + "section_2": "New Refundable Child Tax Credit", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "New child tax credit refund limit applies to all FICA taxes, not just OASDI", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Refundable Credits", - "section_2": "New Refundable Child Tax Credit", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Specifies whether the new child tax credit refund limit rate (_CTC_new_refund_limit_payroll_rt) applies to all FICA taxes (true) or just OASDI taxes (false).", - "notes": "If the new CTC is limited, set this parameter to true to limit the refundability to all FICA taxes or false to limit refundabiity to OASDI taxes." + } }, "FST_AGI_trt": { + "title": "New minimum tax; rate as a decimal fraction of AGI", + "description": "Individual income taxes and the employee share of payroll taxes are credited against this minimum tax, so the surtax is the difference between the tax rate times AGI and the credited taxes. The new minimum tax is similar to the Fair Share Tax, except that no credits are exempted from the base.", + "notes": "", + "section_1": "Surtaxes", + "section_2": "New Minimum Tax", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "New minimum tax; rate as a decimal fraction of AGI", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Surtaxes", - "section_2": "New Minimum Tax", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Individual income taxes and the employee share of payroll taxes are credited against this minimum tax, so the surtax is the difference between the tax rate times AGI and the credited taxes. The new minimum tax is similar to the Fair Share Tax, except that no credits are exempted from the base.", - "notes": "" + } }, "FST_AGI_thd_lo": { + "title": "Minimum AGI needed to be subject to the new minimum tax", + "description": "A taxpayer is only subject to the new minimum tax if they exceed this level of AGI.", + "notes": "", + "section_1": "Surtaxes", + "section_2": "New Minimum Tax", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -15440,26 +15448,26 @@ "value": 1000000.0 } ], - "title": "Minimum AGI needed to be subject to the new minimum tax", - "type": "float", "validators": { "range": { "min": 0, "max": "FST_AGI_thd_hi" } }, - "section_1": "Surtaxes", - "section_2": "New Minimum Tax", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "A taxpayer is only subject to the new minimum tax if they exceed this level of AGI.", - "notes": "" + } }, "FST_AGI_thd_hi": { + "title": "AGI level at which the New Minimum Tax is fully phased in", + "description": "The new minimum tax will be fully phased in at this level of AGI. If there is no phase-in, this upper threshold should be set equal to the lower AGI threshold.", + "notes": "", + "section_1": "Surtaxes", + "section_2": "New Minimum Tax", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -15637,52 +15645,52 @@ "value": 2000000.0 } ], - "title": "AGI level at which the New Minimum Tax is fully phased in", - "type": "float", "validators": { "range": { "min": "FST_AGI_thd_lo", "max": 9e+99 } }, - "section_1": "Surtaxes", - "section_2": "New Minimum Tax", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The new minimum tax will be fully phased in at this level of AGI. If there is no phase-in, this upper threshold should be set equal to the lower AGI threshold.", - "notes": "" + } }, "AGI_surtax_trt": { + "title": "New AGI surtax rate", + "description": "The surtax rate is applied to the portion of Adjusted Gross Income above the AGI surtax threshold.", + "notes": "", + "section_1": "Surtaxes", + "section_2": "New AGI Surtax", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "New AGI surtax rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Surtaxes", - "section_2": "New AGI Surtax", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The surtax rate is applied to the portion of Adjusted Gross Income above the AGI surtax threshold.", - "notes": "" + } }, "AGI_surtax_thd": { + "title": "Threshold for the new AGI surtax", + "description": "The aggregate gross income above this AGI surtax threshold is taxed at surtax rate on AGI.", + "notes": "", + "section_1": "Surtaxes", + "section_2": "New AGI Surtax", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -15860,52 +15868,52 @@ "value": 9e+99 } ], - "title": "Threshold for the new AGI surtax", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Surtaxes", - "section_2": "New AGI Surtax", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "The aggregate gross income above this AGI surtax threshold is taxed at surtax rate on AGI.", - "notes": "" + } }, "LST": { + "title": "Dollar amount of lump-sum tax", + "description": "The lump-sum tax is levied on every member of a tax filing unit. The lump-sum tax is included only in combined taxes; it is not included in income or payroll taxes.", + "notes": "", + "section_1": "Surtaxes", + "section_2": "Lump-Sum Tax", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Dollar amount of lump-sum tax", - "type": "float", "validators": { "range": { "min": -9e+99, "max": 9e+99 } }, - "section_1": "Surtaxes", - "section_2": "Lump-Sum Tax", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "The lump-sum tax is levied on every member of a tax filing unit. The lump-sum tax is included only in combined taxes; it is not included in income or payroll taxes.", - "notes": "" + } }, "UBI_u18": { + "title": "UBI benefit for those under 18", + "description": "UBI benefit provided to people under 18.", + "notes": "", + "section_1": "Universal Basic Income", + "section_2": "UBI Benefits", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -15936,26 +15944,26 @@ "value": 0.0 } ], - "title": "UBI benefit for those under 18", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Universal Basic Income", - "section_2": "UBI Benefits", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "UBI benefit provided to people under 18.", - "notes": "" + } }, "UBI_1820": { + "title": "UBI benefit for those 18 through 20", + "description": "UBI benefit provided to people 18-20 years of age.", + "notes": "", + "section_1": "Universal Basic Income", + "section_2": "UBI Benefits", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -15986,26 +15994,26 @@ "value": 0.0 } ], - "title": "UBI benefit for those 18 through 20", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Universal Basic Income", - "section_2": "UBI Benefits", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "UBI benefit provided to people 18-20 years of age.", - "notes": "" + } }, "UBI_21": { + "title": "UBI benefit for those 21 and over", + "description": "UBI benefit provided to people 21 and over.", + "notes": "", + "section_1": "Universal Basic Income", + "section_2": "UBI Benefits", + "indexable": true, + "indexed": true, + "type": "float", "value": [ { "year": 2013, @@ -16036,338 +16044,338 @@ "value": 0.0 } ], - "title": "UBI benefit for those 21 and over", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "Universal Basic Income", - "section_2": "UBI Benefits", - "indexable": true, - "indexed": true, "compatible_data": { "puf": true, "cps": true - }, - "description": "UBI benefit provided to people 21 and over.", - "notes": "" + } }, "UBI_ecrt": { + "title": "Fraction of UBI benefits excluded from AGI", + "description": "One minus this fraction of UBI benefits are taxable and will be added to AGI.", + "notes": "", + "section_1": "Universal Basic Income", + "section_2": "UBI Taxability", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Fraction of UBI benefits excluded from AGI", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Universal Basic Income", - "section_2": "UBI Taxability", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "One minus this fraction of UBI benefits are taxable and will be added to AGI.", - "notes": "" + } }, "CR_RetirementSavings_hc": { + "title": "Credit for retirement savings haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the retirement savings credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*RetirementSavingsCredit.", + "section_1": "Nonrefundable Credits", + "section_2": "Misc. Credit Limits", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Credit for retirement savings haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "If greater than zero, this decimal fraction reduces the portion of the retirement savings credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*RetirementSavingsCredit." + } }, "CR_ForeignTax_hc": { + "title": "Credit for foreign tax haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the foreign tax credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*ForeignTaxCredit.", + "section_1": "Nonrefundable Credits", + "section_2": "Misc. Credit Limits", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Credit for foreign tax haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "If greater than zero, this decimal fraction reduces the portion of the foreign tax credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*ForeignTaxCredit." + } }, "CR_ResidentialEnergy_hc": { + "title": "Credit for residential energy haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the residential energy credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*ResidentialEnergyCredit.", + "section_1": "Nonrefundable Credits", + "section_2": "Misc. Credit Limits", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Credit for residential energy haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "If greater than zero, this decimal fraction reduces the portion of the residential energy credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*ResidentialEnergyCredit." + } }, "CR_GeneralBusiness_hc": { + "title": "Credit for general business haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the general business credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*GeneralBusinessCredit.", + "section_1": "Nonrefundable Credits", + "section_2": "Misc. Credit Limits", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Credit for general business haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "If greater than zero, this decimal fraction reduces the portion of the general business credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*GeneralBusinessCredit." + } }, "CR_MinimumTax_hc": { + "title": "Credit for previous year minimum tax credit haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the previous year minimum tax credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*PreviousYearMinimumTaxCredit.", + "section_1": "Nonrefundable Credits", + "section_2": "Misc. Credit Limits", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Credit for previous year minimum tax credit haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "If greater than zero, this decimal fraction reduces the portion of the previous year minimum tax credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*PreviousYearMinimumTaxCredit." + } }, "CR_AmOppRefundable_hc": { + "title": "Refundable portion of the American Opportunity Credit haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the refundable American Opportunity credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*RefundablePortionOfAmericanOpportunityCredit.", + "section_1": "Nonrefundable Credits", + "section_2": "Misc. Credit Limits", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Refundable portion of the American Opportunity Credit haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "If greater than zero, this decimal fraction reduces the portion of the refundable American Opportunity credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*RefundablePortionOfAmericanOpportunityCredit." + } }, "CR_AmOppNonRefundable_hc": { + "title": "Nonrefundable portion of the American Opportunity Credit haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of the nonrefundable American Opportunity credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*NonRefundablePortionOfAmericanOpportunityCredit.", + "section_1": "Nonrefundable Credits", + "section_2": "Misc. Credit Limits", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Nonrefundable portion of the American Opportunity Credit haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "If greater than zero, this decimal fraction reduces the portion of the nonrefundable American Opportunity credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*NonRefundablePortionOfAmericanOpportunityCredit." + } }, "CR_SchR_hc": { + "title": "Schedule R Credit haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of Schedule R credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*ScheduleRCredit", + "section_1": "Nonrefundable Credits", + "section_2": "Misc. Credit Limits", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Schedule R Credit haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "If greater than zero, this decimal fraction reduces the portion of Schedule R credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*ScheduleRCredit" + } }, "CR_OtherCredits_hc": { + "title": "Other Credits haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of other credit that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*OtherCredits.", + "section_1": "Nonrefundable Credits", + "section_2": "Misc. Credit Limits", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Other Credits haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "If greater than zero, this decimal fraction reduces the portion of other credit that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*OtherCredits." + } }, "CR_Education_hc": { + "title": "Education Credits haircut", + "description": "If greater than zero, this decimal fraction reduces the portion of education credits that can be claimed.", + "notes": "Credit claimed will be (1-Haircut)*EducationCredits.", + "section_1": "Nonrefundable Credits", + "section_2": "Misc. Credit Limits", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Education Credits haircut", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "Nonrefundable Credits", - "section_2": "Misc. Credit Limits", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": false - }, - "description": "If greater than zero, this decimal fraction reduces the portion of education credits that can be claimed.", - "notes": "Credit claimed will be (1-Haircut)*EducationCredits." + } }, "CR_Charity_rt": { + "title": "Charity Credit rate", + "description": "If greater than zero, this decimal fraction represents the portion of total charitable contributions provided as a nonrefundable tax credit.", + "notes": "Credit claimed will be (rt) * (e19800 + e20100)", + "section_1": "", + "section_2": "", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Charity Credit rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "", - "section_2": "", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "If greater than zero, this decimal fraction represents the portion of total charitable contributions provided as a nonrefundable tax credit.", - "notes": "Credit claimed will be (rt) * (e19800 + e20100)" + } }, "CR_Charity_f": { + "title": "Charity Credit Floor", + "description": "Only charitable giving in excess of this dollar amount is eligible for the charity credit.", + "notes": "", + "section_1": "", + "section_2": "", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, @@ -16395,335 +16403,327 @@ "value": 0.0 } ], - "title": "Charity Credit Floor", - "type": "float", "validators": { "range": { "min": 0, "max": 9e+99 } }, - "section_1": "", - "section_2": "", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Only charitable giving in excess of this dollar amount is eligible for the charity credit.", - "notes": "" + } }, "CR_Charity_frt": { + "title": "Charity Credit Floor Rate", + "description": "Only charitable giving in excess of this decimal fraction of AGI is eligible for the charity credit.", + "notes": "", + "section_1": "", + "section_2": "", + "indexable": false, + "indexed": false, + "type": "float", "value": [ { "year": 2013, "value": 0.0 } ], - "title": "Charity Credit Floor Rate", - "type": "float", "validators": { "range": { "min": 0, "max": 1 } }, - "section_1": "", - "section_2": "", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Only charitable giving in excess of this decimal fraction of AGI is eligible for the charity credit.", - "notes": "" + } }, "BEN_ssi_repeal": { + "title": "SSI benefit repeal switch", + "description": "SSI benefits can be repealed by switching this parameter to true.", + "notes": "", + "section_1": "Benefits", + "section_2": "Benefit Repeal", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "SSI benefit repeal switch", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Benefits", - "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, "compatible_data": { "puf": false, "cps": true - }, - "description": "SSI benefits can be repealed by switching this parameter to true.", - "notes": "" + } }, "BEN_housing_repeal": { + "title": "Housing benefit repeal switch", + "description": "Housing benefits can be repealed by switching this parameter to true.", + "notes": "", + "section_1": "Benefits", + "section_2": "Benefit Repeal", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Housing benefit repeal switch", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Benefits", - "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, "compatible_data": { "puf": false, "cps": true - }, - "description": "Housing benefits can be repealed by switching this parameter to true.", - "notes": "" + } }, "BEN_snap_repeal": { + "title": "SNAP benefit repeal switch", + "description": "SNAP benefits can be repealed by switching this parameter to true.", + "notes": "", + "section_1": "Benefits", + "section_2": "Benefit Repeal", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "SNAP benefit repeal switch", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Benefits", - "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, "compatible_data": { "puf": false, "cps": true - }, - "description": "SNAP benefits can be repealed by switching this parameter to true.", - "notes": "" + } }, "BEN_tanf_repeal": { + "title": "TANF benefit repeal switch", + "description": "TANF benefits can be repealed by switching this parameter to true.", + "notes": "", + "section_1": "Benefits", + "section_2": "Benefit Repeal", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "TANF benefit repeal switch", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Benefits", - "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, "compatible_data": { "puf": false, "cps": true - }, - "description": "TANF benefits can be repealed by switching this parameter to true.", - "notes": "" + } }, "BEN_vet_repeal": { + "title": "Veterans benefit repeal switch", + "description": "Veterans benefits can be repealed by switching this parameter to true.", + "notes": "", + "section_1": "Benefits", + "section_2": "Benefit Repeal", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Veterans benefit repeal switch", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Benefits", - "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, "compatible_data": { "puf": false, "cps": true - }, - "description": "Veterans benefits can be repealed by switching this parameter to true.", - "notes": "" + } }, "BEN_wic_repeal": { + "title": "WIC benefit repeal switch", + "description": "WIC benefits can be repealed by switching this parameter to true.", + "notes": "", + "section_1": "Benefits", + "section_2": "Benefit Repeal", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "WIC benefit repeal switch", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Benefits", - "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, "compatible_data": { "puf": false, "cps": true - }, - "description": "WIC benefits can be repealed by switching this parameter to true.", - "notes": "" + } }, "BEN_mcare_repeal": { + "title": "Medicare benefit repeal switch", + "description": "Medicare benefits can be repealed by switching this parameter to true.", + "notes": "", + "section_1": "Benefits", + "section_2": "Benefit Repeal", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Medicare benefit repeal switch", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Benefits", - "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, "compatible_data": { "puf": false, "cps": true - }, - "description": "Medicare benefits can be repealed by switching this parameter to true.", - "notes": "" + } }, "BEN_mcaid_repeal": { + "title": "Medicaid benefit repeal switch", + "description": "Medicaid benefits can be repealed by switching this parameter to true.", + "notes": "", + "section_1": "Benefits", + "section_2": "Benefit Repeal", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Medicaid benefit repeal switch", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Benefits", - "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, "compatible_data": { "puf": false, "cps": true - }, - "description": "Medicaid benefits can be repealed by switching this parameter to true.", - "notes": "" + } }, "BEN_oasdi_repeal": { + "title": "Social Security benefit repeal switch", + "description": "Social Security benefits (e02400) can be repealed by switching this parameter to true.", + "notes": "", + "section_1": "Benefits", + "section_2": "Benefit Repeal", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Social Security benefit repeal switch", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Benefits", - "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Social Security benefits (e02400) can be repealed by switching this parameter to true.", - "notes": "" + } }, "BEN_ui_repeal": { + "title": "Unemployment insurance benefit repeal switch", + "description": "Unemployment insurance benefits (e02300) can be repealed by switching this parameter to true.", + "notes": "", + "section_1": "Benefits", + "section_2": "Benefit Repeal", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Unemployment insurance benefit repeal switch", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Benefits", - "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, "compatible_data": { "puf": true, "cps": true - }, - "description": "Unemployment insurance benefits (e02300) can be repealed by switching this parameter to true.", - "notes": "" + } }, "BEN_other_repeal": { + "title": "Other benefit repeal switch", + "description": "Other benefits can be repealed by switching this parameter to true.", + "notes": "", + "section_1": "Benefits", + "section_2": "Benefit Repeal", + "indexable": false, + "indexed": false, + "type": "bool", "value": [ { "year": 2013, "value": false } ], - "title": "Other benefit repeal switch", - "type": "bool", "validators": { "range": { "min": false, "max": true } }, - "section_1": "Benefits", - "section_2": "Benefit Repeal", - "indexable": false, - "indexed": false, "compatible_data": { "puf": false, "cps": true - }, - "description": "Other benefits can be repealed by switching this parameter to true.", - "notes": "" + } } } \ No newline at end of file From 2c9aab7549a0654d95caac496eff13bdeb20b77c Mon Sep 17 00:00:00 2001 From: hdoupe Date: Sun, 3 May 2020 11:32:04 -0400 Subject: [PATCH 61/64] Remove extra set_state calls in _update --- taxcalc/parameters.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index 1c2164293..c5919a83d 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -464,8 +464,6 @@ def _update(self, revision, print_warnings, raise_errors): None ) new_params = defaultdict(list) - # save shallow copy of current instance state - cur_state = dict(self.view_state()) for param, val in revision.items(): if not isinstance(param, str): msg = f"Parameter {param} is not a string." @@ -529,10 +527,10 @@ def _update(self, revision, print_warnings, raise_errors): None ) - self.set_state(year=year) value_objects = self.from_array( param, - yearval.reshape((1, *yearval.shape)) + yearval.reshape((1, *yearval.shape)), + year=year ) new_params[param] += value_objects else: @@ -544,7 +542,6 @@ def _update(self, revision, print_warnings, raise_errors): {"errors": {"schema": msg}}, None ) - self.set_state(**cur_state) return self.adjust( new_params, print_warnings=print_warnings, From fa1103e219b518e9764f89fec4c0eca8d77c3028 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Mon, 4 May 2020 12:00:39 -0400 Subject: [PATCH 62/64] Fix docstring --- taxcalc/parameters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taxcalc/parameters.py b/taxcalc/parameters.py index c5919a83d..7a192be49 100644 --- a/taxcalc/parameters.py +++ b/taxcalc/parameters.py @@ -454,7 +454,7 @@ def _update(self, revision, print_warnings, raise_errors): {'year': 2024, 'marital_status': 'single', 'value': 10000.0}, {'year': 2024, 'marital_status': 'joint', 'value': 10000.0} ], - 'ss_rate': [{'value': 0.2}]} + 'ss_rate': [{'year': 2024, 'value': 0.2}]} } """ From 17adb9612ab8caf9aacaf44e235d26494a40388f Mon Sep 17 00:00:00 2001 From: hdoupe Date: Mon, 4 May 2020 12:05:53 -0400 Subject: [PATCH 63/64] Remove ctc_c warnings --- taxcalc/policy.py | 6 +----- taxcalc/tests/test_reforms.py | 15 +++------------ 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/taxcalc/policy.py b/taxcalc/policy.py index 475206b9b..d2a7a9d18 100644 --- a/taxcalc/policy.py +++ b/taxcalc/policy.py @@ -65,11 +65,7 @@ class instance: Policy 'was renamed PT_qbid_w2_wages_rt in release 2.4.0' } # (2) specify which Policy parameters have been redefined recently - REDEFINED_PARAMS = { - # TODO: TODO: should this be removed now? - # TODO: remove the CTC_c name:message pair sometime later in 2019 - # 'CTC_c': 'CTC_c was redefined in release 1.0.0' - } + REDEFINED_PARAMS = {} # (3) specify which Policy parameters are wage (rather than price) indexed WAGE_INDEXED_PARAMS = ['SS_Earnings_c', 'SS_Earnings_thd'] diff --git a/taxcalc/tests/test_reforms.py b/taxcalc/tests/test_reforms.py index 4e12e4d87..358c006ed 100644 --- a/taxcalc/tests/test_reforms.py +++ b/taxcalc/tests/test_reforms.py @@ -27,11 +27,7 @@ def test_2017_law_reform(tests_path): with open(reform_file, 'r') as rfile: rtext = rfile.read() pol.implement_reform(Policy.read_json_reform(rtext)) - # TODO: I'm unclear on how to handle the undefined warning behavior - # since the parameter is still defined in the JSON. - # eventually activate: assert not clp.parameter_warnings - # ctc_c_warning = 'CTC_c was redefined in release 1.0.0\n' - # assert pol.parameter_warnings == ctc_c_warning + assert not pol.parameter_warnings pol.set_year(2018) pre_mdata = dict(pol.items()) # check some policy parameter values against expected values under 2017 law @@ -100,18 +96,13 @@ def test_round_trip_tcja_reform(tests_path): rtext = rfile.read() pol.implement_reform(Policy.read_json_reform(rtext)) - # TODO: see comments in test_2017_law_reform - # eventually activate: assert not clp.parameter_warnings - # ctc_c_warning = 'CTC_c was redefined in release 1.0.0\n' - # assert pol.parameter_warnings == ctc_c_warning + assert not pol.parameter_warnings assert not pol.errors reform_file = os.path.join(tests_path, '..', 'reforms', 'TCJA.json') with open(reform_file, 'r') as rfile: rtext = rfile.read() pol.implement_reform(Policy.read_json_reform(rtext)) - # TODO: - # eventually activate: assert not clp.parameter_warnings - # assert pol.parameter_warnings == ctc_c_warning + assert not pol.parameter_warnings assert not pol.errors pol.set_year(fyear) rtr_mdata = dict(pol.items()) From a892c37875e496350935fb4767f534067eb3bed4 Mon Sep 17 00:00:00 2001 From: hdoupe Date: Mon, 4 May 2020 12:12:28 -0400 Subject: [PATCH 64/64] Update test for inflation/wage growth rate accesser methods --- taxcalc/tests/test_policy.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/taxcalc/tests/test_policy.py b/taxcalc/tests/test_policy.py index a14046b1e..18773e754 100644 --- a/taxcalc/tests/test_policy.py +++ b/taxcalc/tests/test_policy.py @@ -782,15 +782,19 @@ def test_description_punctuation(tests_path): assert all_desc_ok -def test_indexing_rates_for_update(): +def test_get_index_rate(): """ - Check private _indexing_rates_for_update method. + Test Parameters.get_index_rate. """ pol = Policy() - wgrates = pol.get_index_rate('_SS_Earnings_c', 2017) - pirates = pol.get_index_rate('_II_em', 2017) + wgrates = pol.get_index_rate('SS_Earnings_c', 2017) + pirates = pol.get_index_rate('II_em', 2017) assert isinstance(wgrates, np.float64) + assert wgrates == pol.wage_growth_rates(2017) + assert pirates == pol.inflation_rates(2017) assert isinstance(pirates, np.float64) + assert pol.inflation_rates() == pol._inflation_rates + assert pol.wage_growth_rates() == pol._wage_growth_rates def test_reform_with_bad_ctc_levels():