-
-
Notifications
You must be signed in to change notification settings - Fork 160
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
Need to rename child/dependent credit policy parameters #2215
Comments
Does the lack of comments on issue #2215 mean that everybody is OK with the proposed changes? |
Not that I will necessarily suggest anything different, but I would appreciate a few more days to think about this. Also cc @codykallen in case he is interested. |
The proposed name changes and elimination of Also, if we make this change, how should we alter the |
@codykallen said in issue #2215:
I'm going to look into how Tax-Calculator handles a JSON reform file that includes a policy parameter that is unknown to Tax-Calculator. If we need to improve the handling of such a situation that will be done as part of the pull request that resolve this issue. But the response will not be a warning, but an error. Using an unknown policy parameter is a show-stopping event for Tax-Calculator. |
@codykallen said in issue #2215:
My view is that the existing JSON reform files in the
For example, the Then over the next few years, we will be able to add new JSON reform files to the |
In answer to @codykallen's question about what now happens when Tax-Calculator encounters a JSON reform file containing an unknown policy parameter, consider the following Python script in the
Here is what happens when the script is executed:
I suppose I could add "is an" so it reads ... "is an unknown parameter name", but the error message is reasonably clear and stops program execution as it should. |
@martinholmer, I agree that it's fine to stop given a bad parameter. My thought is more along the lines of changing the error message. For example, in [ Tax-Calculator/taxcalc/policy.py Lines 441 to 442 in 3e71828
This uses the error unknown parameter name . Could we instead do something like:
|
@codykallen, Your idea in this comment is good. I'll make that change in the pull request that resolves issue #2215. |
I talked about this issue today on the phone with @martinholmer, and after the conversation, these changes make sense to me. I had been wondering whether there was a way to prevent the loss of backwards compatibility brought on by redefining parameter names, particularly What's more, as Martin pointed out, it is too much to expect us to be able to maintain backwards compatibility of a tax simulation model when the underlying tax system changes in structural (as opposed to parametric) ways. If TCJA had happened after Tax-Calculator was at version 1.x, for example, the new tax law, with its structural changes to the code, would have been plenty of reason to bump the version of Tax-Calculator to 2.0. Given that we will be breaking backwards compatibility in a way that doesn't announce itself when the code is run, it will be necessary to use our communications infrastructure (changelogs, what's new, PSL twitter, PSL newsletter, etc.) to let users know that the parameters behave differently. Thanks to @codykallen for looking at this issue already, and copying in @Peter-Metz for relevance to PSL comms. Also copying @andersonfrailey and @hdoupe because the discussion has relevance to the backwards compatibility of TaxBrain runs (it might not be much of an issue this time since we are archiving ospc.org/taxbrain runs and users won't be able to re-compute past reforms, but it would definitely be an issue otherwise, and in future analogous situations we might need to notify users that a run can no longer be re-simulated because some of its parameters have been redefined or deprecated.) |
TaxBrain already has this built in. When users try to view reforms with parameters that used to be valid but are not in the current set of Tax-Calculator parameters, then a warning message is displayed indicating that some parameters used in the simulation are no loner available:
One solution for this would be to maintain a list of deprecated parameters. Then, when the user tries to use a parameter in that list, a helpful error message could be given. You could even keep a JSON file with all deprecated parameters as keys and the values being a JSON object with related parameters and/or a PR where that parameter was removed: {
"_DependentCredit_Child_c": {"related_parameters": ["_ACTC_c"], "pr_removed": 2215}
} |
Merging pull request #2223 resolves issue #2215. The recent comment by @MattHJensen is a nice statement of the releasing procedures we could follow in the future. But as I thought about his comment, it seems to me as if the future is right now. We are breaking backwards compatibility in two ways with the next release: (1) the |
@hdoupe, thanks very much for the information on how TaxBrain handles deprecated parameters. It seems like there may be some wrinkles for parameters that have been redefined but not deprecated, like |
Sure thing. Also, I just read the entire thread and saw that @codykallen recommended the same thing that I did several comments before I chimed in. Good idea Cody! From TaxBrain's point of view, I think it's up to Tax-Calculator to provide error messages that differentiate between deprecated parameters and redefined parameters, if that's what they want to do. As a Tax-Calculator user, I'd appreciate those types of error messages or a document containing parameters that no longer exist, why they were removed (deprecated/redefined), related parameters, and relevant issues/pr's. GitHub's issue tracking and pull request comments functionality can be really nice when you are trying to figure out why some decision was made. However, it turns you into a bit of a historian who's going over primary source material. Users may appreciate a clean, concise table that tells them why their reform from X months ago no longer works. |
Current-law policy regarding child and dependent tax credits changed substantially beginning in 2018. The policy parameter names currently being used in Tax-Calculator are based on the notion that pre-TCJA policy is current law, and hence, a number of parameter names are confusing to people who look at the 2018 IRS forms. The need to rename some parameters was first identified by @Peter-Metz in issue #2197. The point of this issue is to begin a discussion about how to rename the parameters so they are less confusing. This discussion should also include the labeling and grouping of policy parameters on the TaxBrain webapp.
In order to get the discussion going, I'm going to propose a set of policy parameter name changes.
_CTC_c
-->_CTC_c
: but redefined to be the maximum nonrefundable child credit allowed (so, for example, the 2018 value of 1400 would be changed to 2000)._DependentCredit_Child_c
-->_ACTC_c
: the maximum refundable child credit allowed (so, for example, the 2018 value of 600 would be changed to 1400) and Tax-Calculator would report an error if_ACTC_c
were ever specified to be larger than_CTC_c
._DependentCredit_Nonchild_c
-->_ODC_c
: the maximum nonrefundable other-dependent credit allowed.In addition to these name changes, it seems as if the
_DependentCredit_before_CTC
parameter is now redundant and can be removed.Also, following IRS acronyms, the calculated variable
dep_credit
should probably be changed toodc
(Other Dependent Credit).The TaxBrain labeling/grouping of these parameters also needs review. Currently TaxBrain groups credits into nonrefundable and refundable, which is effective most of the time. But it is confusing in the case of the child and dependent credits. Why not group the CTC, ODC, and ACTC parameters all together under the heading "Child/Dependent Credits"?
@MattHJensen @hdoupe
The text was updated successfully, but these errors were encountered: