Tax-Calculator
Tax-Calculator copied to clipboard
EITC parametrization to capture Romney's Family Security Act
Under Romney's Family Security Act, "The Earned Income Tax Credit (EITC) is replaced by a simplified earnings credit with a maximum value of $1,000 for single households and $2,000 for married households filing jointly, independent of the number of child dependents. The EITC for adult dependents is preserved."
This requires additional parameterization to reform the core EITC while preserving it for adult dependents.
cc @thirdhuman
Some more info on this:
- Romney's office writeup on the FSA here
- EITC trapezoids under the FSA:
- Compare to EITC trapezoids in 2017:
Hi @MaxGhenis, @jdebacker and @Thirdhuman,
I'm having the same issue where I'd like to test the effect of different benefit amounts for people filing jointly vs. single filiers, but the tax calculator only allows for a different phase out threshold for married filiers. Any timeline on getting this implemented? Thanks!
@hdoupe I'm trying to think about how to implement this without breaking backwards compatibility of the EITC parameters. Do you have thoughts on whether it's possible add a dimension to the EITC
parameters (martial status) that could allow one to enter the same list as one would enter currently if they wanted the parameters to be constant over this new dimension, but vary of an existing dimension (e.g., number of kids)?
@jdebacker, a couple quick thoughts on this:
- Using the ParamTools adjustment format is backwards compatible. Here's a notebook showing how this would work: https://github.com/hdoupe/Tax-Calculator/blob/eitc-mars/TC%20with%20EITC%20MARS%20param.ipynb
- This uses a branch on my repo with an updated
EITC_c
value: https://github.com/hdoupe/Tax-Calculator/tree/eitc-mars
- This uses a branch on my repo with an updated
- Using the Tax-Calculator format would not be backwards compatible, unless we do some work to this method: https://github.com/PSLmodels/Tax-Calculator/blob/0ccf423e60f90f913307b07f613d766154b0986e/taxcalc/parameters.py#L623-L655
- Another option is to create a new set of EITC parameters like
EITC_mars_*
that are kind of like aliases to theEITC_*
parameters, but would support the MARS dimension. This seems like the least elegant solution but is worth mentioning.
I don't have a strong feeling for how this should work yet. How do you think the user experience should look if we are able to support this in a backwards compatible way? Like how would the Tax-Calculator style JSON reform look?
Code for updating the `EITC_c` parameter:
import json
import taxcalc as tc
with open("taxcalc/policy_current_law.json", "r") as f:
data = json.load(f)
pol = tc.Policy()
pol.clear_state()
mars_vals = pol.label_grid["MARS"]
new_vals = []
for val in pol.sel["EITC_c"].missing("_auto"):
for mars_val in mars_vals:
new_vals.append({
"year": val["year"],
"EIC": val["EIC"],
"MARS": mars_val,
"value": val["value"]
})
data["EITC_c"]["value"] = new_vals
with open("taxcalc/policy_current_law.json", "w") as f:
json.dump(data, f, indent=4)