Closed donboyd5 closed 1 month ago
We're working on this in https://github.com/PolicyEngine/policyengine-us/pull/3840.
I haven't looked closely at Tax-Calculator but I think they have the same gap TAXSIM and PolicyEngine does today.
This is also now motivating us to distribute the ASEC retirement contributions variable (https://github.com/PolicyEngine/policyengine-us/issues/3842) and model the Saver's Credit (https://github.com/PolicyEngine/policyengine-us/issues/3841).
Relevance for us
First, we need to be sure we know exactly what Tax-Calculator assumes for income tax and payroll tax. I believe that for income tax purposes, it uses e00200 for wages, which is wages after retirement contribution deductions (verification below). I have assumed but never verified that Tax-Calculator grosses up wages to add back relevant contribution deductions to arrive at proper wages for payroll-tax calculations (before caps where relevant) but @MaxGhenis just responded that he thinks Tax-Calculator does not do this (and therefore would be incorrect in a quite substantial way). @martinholmer or @nikhilwoodruff are you able to verify the Tax-Calculator treatment of wages for payroll tax purposes?
Second, we need to be sure of the wages we are feeding to Tax-Calculator in this project.
Based on our discussions, initially we will use a Policy Engine flat file and after https://github.com/PolicyEngine/policyengine-us/pull/3840 we will have in our data just what we need, as long as Tax-Calculator can handle the two wage variables properly.
We will switch to a PUF-based file at least in this initial part of the project. I have verified (as we probably all have) that e00200 is wages after tax-deductible contributions are subtracted. The PUF booklet page A-2 makes it clear that e00200 is Form 1040 line 7. The 1040 instructions page 11 make clear that line 7 comes from the W-2 Box 1. And the employer instructions for Form W-2 Box 1 say to exclude retirement contributions.
So I think our job is to (1) be 100% sure of how Tax-Calculator deals with this, (2) if it does not calculate the proper wage variables for income and payroll taxes ask that they do so, (3) make sure that our PE-based and PUF-based data files have the raw information needed to calculate proper wages for income and payroll tax purposes, and (4) make sure that we have variables in a form needed for Tax-Calculator (specifically, we'll want either two versions of wages, or probably preferably, a total wage concept, and information models can use to calculate proper income-tax and payroll-tax wages - but in any event, we'll need to work with what is needed for Tax-Calculator).
Thank you @MaxGhenis we will want to stay in synch with you.
That Zotero link didn't work for me, but here's the file. Page 53 confirms your statement. 2015 Public Use Booklet.pdf
Are you intending to impute pre-tax contributions from the ASEC to the PUF? I don't think the PUF itself has this information. It also takes some imputation even within the ASEC as it only reports total retirement contributions and health insurance premiums.
We haven't discussed that yet and need to. Would like to learn from you and cooperate with you.
Sent from my phone; please excuse brevity and speech-to-text errors.
On Sun, Feb 11, 2024, 1:45 PM Max Ghenis @.***> wrote:
That Zotero link didn't work for me, but here's the file. Page 53 confirms your statement. 2015 Public Use Booklet.pdf https://github.com/PSLmodels/tax-microdata-benchmarking/files/14233608/2015.Public.Use.Booklet.1.pdf
Are you intending to impute pre-tax contributions from the ASEC to the PUF? I don't think the PUF itself has this information. It also takes some imputation even within the ASEC as it only reports total retirement contributions and health insurance premiums.
— Reply to this email directly, view it on GitHub https://github.com/PSLmodels/tax-microdata-benchmarking/issues/8#issuecomment-1937835389, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABR4JGH5WMGTASEBFMBCCGDYTEGTRAVCNFSM6AAAAABDDWPNBGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMZXHAZTKMZYHE . You are receiving this because you authored the thread.Message ID: @.***>
@MaxGhenis said in issue #8:
I haven't looked closely at Tax-Calculator but I think they have the same gap TAXSIM and PolicyEngine does today.
I don't think so. Anybody concerned with the issue should read this Tax-Calculator thread, which began in September 2017 and concluded a year later.
Thanks @martinholmer, and apologies for the wrong guess. If I'm understanding that thread correctly, you build a model of pension contributions in Tax-Data's impute_pencon.py
, using SOI Tax Stats - Individual Information Return Form W-2 Statistics. You used the 2011 version of that data, and SOI has now released through 2018. IIUC, you use neither the SCF (as Dan suggested and which TPC does per https://github.com/PSLmodels/Tax-Calculator/issues/1549#issuecomment-336119755), nor the ASEC's pension contributions variable.
Do Tax-Data/Tax-Calculator also consider other pre-tax contributions like health insurance premiums and cafeteria plans?
cc @pavelmakarchuk
@MaxGhenis said in issue #8:
Thanks @martinholmer, and apologies for the wrong guess. If I'm understanding that thread correctly, you build a model of pension contributions in Tax-Data's impute_pencon.py, using SOI Tax Stats - Individual Information Return Form W-2 Statistics. You used the 2011 version of that data, and SOI has now released through 2018. IIUC, you use neither the SCF (as Dan suggested and which TPC does per https://github.com/PSLmodels/Tax-Calculator/issues/1549#issuecomment-336119755), nor the ASEC's pension contributions variable.
That's the way I remember it, but I did that work many years ago. You can double check Tax-Data's impute_pencon.py make sure my memory is correct. Most definitely did not use the SCF or ASEC data.
@MaxGhenis asked in issue #8:
Do Tax-Data/Tax-Calculator also consider other pre-tax contributions like health insurance premiums and cafeteria plans?
I don't think so.
Most "health insurance premiums" are paid directly by the employer as an in-kind part of the employee's total compensation package. So, employer-paid health insurance is not part of an employee's wages or salary.
However, in some cases the employer does not pay the whole premium and asks the employee to pay some of the premium out of the employee's wages or salary. That is always done via the employer's cafeteria plan, so that any employee payment of health insurance premiums is income-tax free.
And, of course, other employee contributions to the cafeteria plan (for child care expenses and out-of-pocket medical expenses, for example) come out of gross wages and salary, and are therefore, not part of taxable wages and salary from the point of view of the income tax.
On Sun, 11 Feb 2024, Don Boyd wrote:
- TAXSIM starts with W-2 box 1, which is wages after these various deductions. [Thus, it should be correct for income taxes.] The email thread suggests but does not verify that does not addback retirement contributions for purposes of payroll tax calculations, and thus might be wrong for payroll tax. [I don't know about this, and we should touch base with @feenberg about it.]
I was queried just last week about just this issue - the first time it has ever been brought up. I don't want to add multiple variables for something that is never available in survey data, so I suggested to the user that they run the data through taxsim twice, once for the income tax and once for FICA, with different notions of wage in the two runs.
Dan
@feenberg the ASEC has variables for retirement contributions and health insurance premiums. We've updated PolicyEngine to incorporate these into our tax model (noting that only a portion is subtracted from taxable wages and salaries). You can view the implementation at https://github.com/PolicyEngine/policyengine-us/pull/3840.
On Tue, 13 Feb 2024, Max Ghenis wrote:
@feenberg the ASEC has variables for retirement contributions and health insurance premiums. We've updated PolicyEngine to incorporate these into our tax model. You can view the implementation at https://github.com/PolicyEngine/policyengine-us/pull/3840.
I am not very good with github - that link just leads to "There isn't anything to compare" and I couldn't find the relevant code.
But I did look at the CPS ASEC documentation, and I see employee contributions to a retirement account are present, but not to health insurance. Am I right that the former is exempt from income tax, but not from FICA, and the later is exempt from both?
I am not inclined to add variables for retirement contributions, and it doesn't seem like there is any problem with health insurance.
Dan
-- Reply to this email directly or view it on GitHub: https://github.com/PSLmodels/tax-microdata-benchmarking/issues/8#issuecomment-1942286887 You are receiving this because you were mentioned.
Message ID: @.***>
that link just leads to "There isn't anything to compare" and I couldn't find the relevant code.
Hmm the link takes me to the description, but you can see the code changes directly here: https://github.com/PolicyEngine/policyengine-us/pull/3840/files
The ASEC has both retirement contributions and out of pocket health insurance premiums. Some of each of these (contributions to traditional 401(k) and cafeteria plans) are pre-tax. I've also suggested opportunities to improve imputation of the latter in https://github.com/PolicyEngine/policyengine-us/issues/3873.
We now have a single pre_tax_contributions
variable that users can input directly to include the true parts of retirement contributions and premiums that reduce taxable wages and salaries but still incur payroll tax. We impute those from signals in the ASEC, but users can also specify them themselves. If you wanted to avoid making those imputations in TAXSIM and keep it as a rules engine, you could consider a similar approach.
On Tue, 13 Feb 2024, Max Ghenis wrote:
that link just leads to "There isn't anything to compare" and I couldn't find the relevant code.
Hmm the link takes me to the description, but you can see the code changes directly here: https://github.com/PolicyEngine/policyengine-us/pull/3840/files
That works. Thanks.
The ASEC has both retirement contributions and out of pocket health insurance premiums. Some of each of these are pre-tax. I've also suggested opportunities to improve imputation of the latter in https://github.com/PolicyEngine/policyengine-us/issues/3873.
We now have a single
pre_tax_contributions
variable that users can input directly to include the true parts of retirement contributions and premiums. We impute those from signals in the ASEC, but users can also specify them themselves. If you wanted to avoid making those imputations in TAXSIM and keep it as a rules engine, you could consider a similar approach.
I have avoided imputations in Taxsim because I have always thought of Taxsim as a way to generate variables for the RHS of a regression. In that case, adding a realistic imputation (a predicted value with noise) wouldn't help. The predicted value component would change the constant term in the regression, and the noise would reduce the precision of the estimated coefficient. Of course, an imputation would make tabs of liability more accurate, but I haven't expected Taxsim to be much used for that, and the imputations are both difficult and controversial.
Dan
Dan - understood. If you'd like you could avoid imputations by adding a variable for pre-tax contributions, and letting users do the imputations themselves. The rules given pre-tax contributions are unambiguous.
(Sorry Don for hijacking this thread for broader discussion.)
No problem - very helpful!
On Wed, Feb 14, 2024 at 10:39 AM Max Ghenis @.***> wrote:
Dan - understood. If you'd like you could avoid imputations by adding a variable for pre-tax contributions, and letting users do the imputations themselves. The rules given pre-tax contributions are unambiguous.
(Sorry Don for hijacking this thread for broader discussion.)
— Reply to this email directly, view it on GitHub https://github.com/PSLmodels/tax-microdata-benchmarking/issues/8#issuecomment-1944085599, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABR4JGDXLY3EREJZU2UUCPLYTTLCXAVCNFSM6AAAAABDDWPNBGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNBUGA4DKNJZHE . You are receiving this because you authored the thread.Message ID: @.***>
The problems with the tax-microdata handling of pretax pension contributions were fixed in pull request #173.
Thank you @Martin Holmer @.***>
On Sun, Sep 1, 2024 at 1:22 PM Martin Holmer @.***> wrote:
The problems with the tax-microdata handling of pretax pension contributions were fixed in pull request #173 https://github.com/PSLmodels/tax-microdata-benchmarking/pull/173.
— Reply to this email directly, view it on GitHub https://github.com/PSLmodels/tax-microdata-benchmarking/issues/8#issuecomment-2323432450, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABR4JGHPBOPMYS7MJGON4RLZUNEPDAVCNFSM6AAAAABDDWPNBGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMRTGQZTENBVGA . You are receiving this because you authored the thread.Message ID: @.***>
Please tell me if I got anything wrong in this thread and I will edit to correct.
Background on the issue - first of several comments
@martinholmer shared an email chain with me (Zotero link) that says, as I read it:
@MaxGhenis says that PolicyEngine uses an ASEC variable intended to capture total wages, before pre-tax contributions. Thus, while it makes sense for payroll taxes, he (and I expect @nikhilwoodruff ) will create an after-contributions variable to use for income tax calculations and this issue will fix it.