Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UBI Implementation #1235

Merged
merged 3 commits into from
Mar 13, 2017
Merged

UBI Implementation #1235

merged 3 commits into from
Mar 13, 2017

Conversation

andersonfrailey
Copy link
Collaborator

Second time's the charm. This PR adds a feature to Tax-Calc that calculates the effects of a universal basic income. The UBI function relies on three new PUF variables (nu18, n1821, and n21) that hold the number of people in each age range in each tax unit. These have been discussed in TaxData PR #83.

Four new parameters are added into current_law_policy.json. _UBI1-3 allow the user to specify different levels of UBI for each age group. _UBI_hc allows the user to specify what portion of the UBI is taxable (I'm not sure hc is the correct tag for this, but it seemed like the best option. If this needs to change let me know).

Using the new variables and parameters, the function calculates three values:
ubi: total income from the UBI received by the tax unit.
taxable_ubi: the portion of total UBI that is taxable. This is added to AGI.
nontaxable_ubi: the portion of total UBI that is not taxable. This is added to expanded income.

Adding only taxable UBI to AGI ensures that if the user specifies that UBI is not taxable, tax liability for the unit does not change. Nontaxable UBI, rather than total UBI is added to expanded income so that the taxable portion of UBI, which was already added to AGI, is not double counted.

@MattHJensen @Amy-Xu @martinholmer

@codecov-io
Copy link

codecov-io commented Mar 10, 2017

Codecov Report

Merging #1235 into master will decrease coverage by 0.17%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1235      +/-   ##
==========================================
- Coverage    99.2%   99.03%   -0.18%     
==========================================
  Files          38       38              
  Lines        2650     2689      +39     
==========================================
+ Hits         2629     2663      +34     
- Misses         21       26       +5
Impacted Files Coverage Δ
taxcalc/records.py 99.1% <ø> (ø)
taxcalc/calculate.py 100% <100%> (ø)
taxcalc/taxcalcio.py 96.75% <0%> (-2.62%)
taxcalc/utils.py 98.24% <0%> (+0.04%)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0e4c11b...3d2a1fa. Read the comment docs.

@martinholmer
Copy link
Collaborator

@andersonfrailey said about the UBI benefits PR #1235:

_UBI_hc allows the user to specify what portion of the UBI is taxable (I'm not sure _hc is the correct tag for this, but it seemed like the best option. If this needs to change let me know).

Well, I guess the proper name for this parameter all depends on what you view as the "normal" situation. Searching through functions.py, you can see that the other uses of _hc policy parameters are reducing some kind of tax benefit, which is why those parameters are always used like this ... * (1. - XXX_hc). Notice that in the current version of #1235 you use the new parameter in the opposite way:

taxable_ubi = ubi * UBI_hc

This is not what _hc means in the rest of Tax-Calculator, so this is likely to be confusing to users.

If you look at the Contributor Guide's parameter naming rules, it seems to me that what we are dealing with here is an AGI exclusion rate, the fraction of UBI benefits that are excluded from AGI. Those rules suggest the new parameter might better be named _UBI_ecrt. Using that name is, to me, clearer than "haircut" because I'm not sure what "hair" is being "cut".

Using the _UBI_ecrt parameter name, would require changes to the functions.py logic and the current_law_policy.json long_name and description. The logic would be:

taxable_ubi = ubi * (1. - UBI_ecrt)

and the long_name and description would be:

 "long_name": "Fraction of UBI benefits excluded from AGI",
 "description": "One minus this fraction of UBI benefits is taxable and will be added to AGI",

Does anybody have a better idea?

@MattHJensen @feenberg @Amy-Xu @GoFroggyRun @codykallen @zrisher

@andersonfrailey
Copy link
Collaborator Author

@martinholmer, I like your suggestion more than using hc. I'll apply and push the changes now.

@martinholmer
Copy link
Collaborator

martinholmer commented Mar 13, 2017

@andersonfrailey, pull request #1235 looks very good now except for maybe one thing. I'm not familiar with the UBI conversation, but wouldn't most people expect that UBI benefits would be included in AGI? Right now, you have in current_law_policy.json that all of the UBI benefit would be excluded from AGI (that is, non-taxable). Is that what most UBI advocates propose --- to give Bill Gates a tax-free UBI benefit? If that is where the conversation stands, then setting the value of the _UBI_ecrt parameter to 1.0 (which is what you have in this pull request) makes sense. If most would expect UBI benefits to be taxable, then you should probably change the value of the _UBI_ecrt parameter to 0.0.

Once we decide on the best default value, I'll be happy to merge #1235 into the master branch.
Thanks for this contribution to Tax-Calculator.

@andersonfrailey
Copy link
Collaborator Author

@martinholmer, good catch. I haven't seen any true consensus among UBI proponents on whether or not it should be taxed, but I agree with your logic that most wouldn't be in favor of handing Bill Gates tax-free money. I'll make the change so it's ready to merge.

@martinholmer
Copy link
Collaborator

@andersonfrailey,
Thanks for the finishing touch on the UBI enhancement in pull request #1235.
Merging #1235 now.

@martinholmer martinholmer merged commit 92037d6 into PSLmodels:master Mar 13, 2017
@MattHJensen MattHJensen mentioned this pull request Mar 15, 2017
@MattHJensen MattHJensen mentioned this pull request Mar 24, 2017
@andersonfrailey andersonfrailey deleted the UBI branch July 20, 2017 20:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants