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

Analysis of effects of earnings shifting under Trump2017.json reform #1464

Merged
merged 34 commits into from
Jul 19, 2017
Merged

Analysis of effects of earnings shifting under Trump2017.json reform #1464

merged 34 commits into from
Jul 19, 2017

Conversation

martinholmer
Copy link
Collaborator

@martinholmer martinholmer commented Jul 10, 2017

This pull request adds several scripts and results files in the taxcalc/reforms directory.

These new files show how to use Tax-Calculator to estimate, under a wide range of behavioral assumptions, the effects of earnings-shifting: the transformation of wage and salary income into pass-through self-employment earnings from a newly-created personal limited-liability company (LLC) as described in several articles, including Neil Irwin, "Under the Trump Tax Plan, We Might All Want to Become Corporations," New York Times, April 28, 2017, which is here. There is also a recent request for this kind of analysis in issue #1461.

This work, which stands alone outside of the Tax-Calculator source tree, does not change any tax-calculating logic or tax results or code coverage. It is just an example of the kind of advanced tax reform analysis that can be performed with Tax-Calculator.

Read the documentation at the top of the earnings_shifting.py file for information about how to conduct your own earnings-shifting analysis on your computer.

Comments and suggestions are welcome.

@MattHJensen @feenberg @Amy-Xu @andersonfrailey @hdoupe @olsonjs

@codecov-io
Copy link

codecov-io commented Jul 10, 2017

Codecov Report

Merging #1464 into master will not change coverage.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff           @@
##           master    #1464   +/-   ##
=======================================
  Coverage   99.71%   99.71%           
=======================================
  Files          40       40           
  Lines        2795     2795           
=======================================
  Hits         2787     2787           
  Misses          8        8

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 e641d0b...b6bf4ff. Read the comment docs.

@martinholmer
Copy link
Collaborator Author

Here is a summary of the implications of some arbitrary shifting assumptions taken from the earnings_shifting.sum summary results file, which is generated by the earnings_shifting.sh script (which in turn calls the main earnings_shifting.py script).

The first row is the static/no-shifting analysis of the reform in the Trump2017.json file.
The other rows in the table below show the total number of taxpayers and spouses who shift, the amount of earnings shifted, and the change in combined tax revenue (relative to current law), under the set of shifting assumptions on that row. In order to shift, it is assumed that an individual must have earnings no less than MIN_EARN and tax savings no less than MIN_SAVE. All the assumption sets below assume that if an individual exceeds both these thresholds, then the individual will shift all of their earnings to pass-through income. SPROB values of less than 1.0 would cause a proportional reduction in the shifting response.

Notice that, in the earnings_shifting.py script, the shifting decision is made, as it should be, for each individual (not for each filing unit as apparently was done by TPC according my reading of #1461).

YEAR   MIN_EARN  MIN_SAVE  SPROB :  NS(#m)    ES($b)  TAXDIFF($b)
2017       0.00      0.00  0.000 :   0.000     0.000       -420.5
2017  200000.00  10000.00  1.000 :   3.631  1587.918       -621.3
2017  300000.00  10000.00  1.000 :   1.586  1097.008       -579.8
2017  400000.00  10000.00  1.000 :   0.889   858.575       -556.8
2017  200000.00  20000.00  1.000 :   2.335  1279.844       -599.4
2017  300000.00  20000.00  1.000 :   1.548  1080.905       -579.1
2017  400000.00  20000.00  1.000 :   0.883   852.803       -556.7
2017  200000.00  30000.00  1.000 :   1.348  1001.195       -574.3
2017  300000.00  30000.00  1.000 :   1.196   961.149       -569.1
2017  400000.00  30000.00  1.000 :   0.872   845.985       -556.3
2017  500000.00  30000.00  1.000 :   0.603   726.395       -542.7
2017  500000.00  40000.00  1.000 :   0.597   722.002       -542.5
2017  500000.00  50000.00  1.000 :   0.586   715.094       -541.9

@MattHJensen @feenberg @Amy-Xu @andersonfrailey @hdoupe @olsonjs

@ghost
Copy link

ghost commented Jul 10, 2017

Still new to GitHub, Python, and the tax calculator, so bear with me -

You said if the parameters are met, the individual will "shift all of their earnings to pass-through income." Wouldn't they only shift the earnings that fit within the bracket(s) where the parameters are met, and not all of their earnings?

i.e. say the regular income brackets are
10% for income < $100k
25% for income > $100k
and the rate on all pass-through income is 15%.
If an individual earns $300k, they will only shift income above $100k, not all of their income.

@martinholmer
Copy link
Collaborator Author

@olsonjs said:

You said if [both] parameters are met, the individual will "shift all of their earnings to pass-through income." Wouldn't they only shift the earnings that fit within the bracket(s) where the parameters are met, and not all of their earnings?

i.e. say the regular income brackets are
10% for income < $100k
25% for income > $100k
and the rate on all pass-through income is 15%.
If an individual earns $300k, they will only shift income above $100k, not all of their income.

Thanks for your question. All of this is very hypothetical, so there is no real-world experience to draw on. Irwin's NYT article speculates on what would actually have to happen between a salaried employee and his/her employer to accomplish the earnings shift. My reading of that article is that the shift from salaried employee to LLC contractor is a binary decision for the employee and employer. There is no practical way I can see that the same person could be both a salaried employee and a LLC contractor. There are too many pension and health insurance complications to make that arrangement viable. But maybe Irwin's speculation and my imagination are too limited. How would it work in the real world for somebody to be both an employee and a contractor?

@ghost
Copy link

ghost commented Jul 10, 2017

Good point. After reading around a bit, it is technically possible to be both an employee and a contractor in the same job, but not commonplace, and the IRS regulates the distinction a good amount. It would only be worthwhile to become both simultaneously if the marginal cost of doing so is less than the marginal benefit, but I would not know a non-arbitrary way of determining what the marginal cost is.

Furthermore, let's assume that an individual can only be a contractor OR an employee. If a person has income from multiple sources, then they could certainly have a combination of income sources go through a pass-through and others not, depending on the interaction of marginal tax rates and cutting the income different ways, but I believe we don't have access to data with the necessary amount of precision, right? I imagine this would be most common among high-earners.

@martinholmer
Copy link
Collaborator Author

@olsonjs said:

Good point. After reading around a bit, it is technically possible to be both an employee and a contractor in the same job, but not commonplace, and the IRS regulates the distinction a good amount. [snip]

Furthermore, let's assume that an individual can only be a contractor OR an employee. If a person has income from multiple sources, then they could certainly have a combination of income sources go through a pass-through and others not, depending on the interaction of marginal tax rates and cutting the income different ways, but I believe we don't have access to data with the necessary amount of precision, right? [snip]

Not sure what other types of income you have in mind here, but yes it is unlikely that we have the data. So, the earnings-shifting estimates presented here are lower-bound estimates of the amount of income that might be shifted to a personal LLC, and therefore, lower-bound estimates of the aggregate amount of tax revenue loss from income shifting.

@feenberg
Copy link
Contributor

feenberg commented Jul 10, 2017 via email

@feenberg
Copy link
Contributor

feenberg commented Jul 10, 2017 via email

@ghost
Copy link

ghost commented Jul 10, 2017

@feenberg said:

perhaps the wisest course is not to model a separate pass-through rate at all, since any revenue estimate that is not extreme is very likely to be very wrong.

While I agree that the values are arbitrary and more empirical research on income-shifting needs to be done, I don't see why we shouldn't attempt to model it at all. Whether or not a tax reform falls apart to any extent due to income-shifting is an incredibly important part of the debate. Having a data point that says "this model estimates X amount in lost revenue if X amount of people shift income under these parameters" would be useful for policymakers in deciding how to handle pass-though income, even if the listed parameters are based on hunches for now.

@martinholmer
Copy link
Collaborator Author

@olsonjs, In pull request #1464 I've been looking into the issue you raised about the notion that a person forming a personal LLC could lower tax liability even more by converting most, but not all earnings, to pass-though income. Your original comment in the discussion was here. @feenberg has suggested that the personal LLC has the legal right to split compensation between salary and pass-through income. So, even though the decision to form the personal LLC is binary, the division of LLC payments to the person is flexible and has no effect on the former employer, who is now contracting with the personal LLC for labor services.

This comment is a summary of the work I've done on this issue.

First, I added to the earnings_shifting.py script a new parameter that specifies the fixed amount of money that the personal LLC would pay in salary. I found I could reproduce all my earlier results by specifying the value of this new parameter to be zero.

Second, I specified many positive values for the new parameter (ranging from one to forty thousand dollars in 2017) using what I understand to be the TPC assumptions about who would form a personal LLC. In all cases, the positive amount of LLC salary makes the person's tax liability do up, not down. I checked these aggregate results generated by the earnings_shifting.py script by analyzing a single filing unit under current-law and under the Trump2017.json reform, with the reform analysis consisting of three situations: no earnings shifting, all earnings shifted to LLC pass-through income, and most earnings shifted to LLC pass-through income. I provide more information about how I analyzed the single filing unit after I present the aggregate results generated by the revised earnings_shifting.py script.

The aggregate results are for the Trump2017.json reform using different shifting assumptions with the TAXDIFF being the aggregate income and payroll tax liability difference between the reform and the no-reform situation.

YEAR  WAGE_AMT   MIN_EARN  MIN_SAVE  SPROB :  NS(#m)    ES($b)  TAXDIFF($b)
2017      0.00       0.00      0.00  0.000 :   0.000     0.000       -420.5
2017      0.00  100000.00      0.00  0.500 :   9.026  1780.089       -588.4
2017   1000.00  100000.00      0.00  0.500 :   9.026  1780.089       -588.2
2017   2000.00  100000.00      0.00  0.500 :   9.026  1780.089       -587.9
2017   3000.00  100000.00      0.00  0.500 :   9.026  1780.089       -587.6
2017   4000.00  100000.00      0.00  0.500 :   9.026  1780.089       -587.3
2017   5000.00  100000.00      0.00  0.500 :   9.026  1780.089       -587.1
2017   6000.00  100000.00      0.00  0.500 :   9.026  1780.089       -586.8
2017   7000.00  100000.00      0.00  0.500 :   9.026  1780.089       -586.5
2017   8000.00  100000.00      0.00  0.500 :   9.026  1780.089       -586.2
2017   9000.00  100000.00      0.00  0.500 :   9.026  1780.089       -586.0
2017  10000.00  100000.00      0.00  0.500 :   9.026  1780.089       -585.7
2017  15000.00  100000.00      0.00  0.500 :   9.026  1780.089       -584.3
2017  20000.00  100000.00      0.00  0.500 :   9.026  1780.089       -582.8
2017  25000.00  100000.00      0.00  0.500 :   9.026  1780.089       -581.3
2017  30000.00  100000.00      0.00  0.500 :   9.026  1780.089       -579.7
2017  35000.00  100000.00      0.00  0.500 :   9.026  1780.089       -578.1
2017  40000.00  100000.00      0.00  0.500 :   9.026  1780.089       -576.3

The analysis of the single filing unit does not rely on the earnings_shifting.py script, and is something that anybody can do on their local computer using the command-line interface to Tax-Calculator, which is described here.

Here is what I did to confirm that this filing unit experiences an increase in (both income and payroll) tax liability when they have their person LLC pay $10,000 in salary income and pay the other $490,000 as pass-through income.

$ cat cases.csv
RECID,MARS,XTOT,e00200,e00200p,k1bx14p,e26270,e02000
    1,   2,   3,500000, 500000,      0,     0,     0
    2,   2,   3,     0,      0, 500000,500000,500000
    3,   2,   3, 10000,  10000, 490000,490000,490000

$ tc cases.csv 2017 --dump

$ tc cases.csv 2017 --dump --reform Trump2017.json 

The --dump output provides not only income and payroll tax liability, but also values of many intermediate calculated variables. Here is a summary of what those results show:

          INCTAX      PAYTAX
CL-1  138,201.60   32,522.80
TR-1  113,055.00   32,522.80
TR-2   65,207.73   31,069.30
TR-3   65,320.82   31,098.37

If you are interested in using Tax-Calculator on your computer, you could start by seeing if you can replicate my results. Looking at the intermediate tax values is likely to suggest the reason why tax liability goes up (rather than down) when the LLC pays a small amount of salary income.

But it could be that I've made a mistake in my work. In that case, your effort in cross-checking my work could lead to your first Tax-Calculator bug report.

@ghost
Copy link

ghost commented Jul 13, 2017

Just to double-check, but are you having pass-through income always be subject to payroll taxes? I'm still shoddy with the actual code so I have been trying to replicate the problem in excel, and I think the unexpected result might have to do with the interaction with payroll taxes.

For example, if salaried income is subject to payroll taxes, but pass-through income is not, then splitting income will always result in higher taxes paid if regular+payroll rates are higher than pass-through rates, since part of the income goes through payroll taxes, whereas if all income was pass-through, none of it would go through payroll taxes.

I'm attaching my excel sheet, if that helps. Apologies for the messiness of the logic. shifting and payroll.xlsx

@martinholmer
Copy link
Collaborator Author

@olsonjs said:

Just to double-check, but are you having pass-through income always be subject to payroll taxes?

Pass-through income has been subject to payroll taxes for many years.
I suggest you look at the the function that computes payroll taxes in Tax-Calculator.

I'm still shoddy with the actual code so I have been trying to replicate the problem in excel, and I think the unexpected result might have to do with the interaction with payroll taxes.

Yes, the payroll/income tax interactions are important.
Good luck getting any tax simulation work done in Excel.

@martinholmer
Copy link
Collaborator Author

@olsonjs said:

I'm still shoddy with the actual code so I have been trying to replicate the problem in excel

I'm sorry I didn't make it clear, but using the command-line interface to Tax-Calculator, as I suggested above, does not involve doing any Python programming (or programming in any language, for that matter). We are happy to help you learn how to use the open-source tools we are developing (and fix those tools when bugs are reported), but our mission does not include helping the public develop Excel spreadsheets to do tax analysis.

@ghost
Copy link

ghost commented Jul 16, 2017

I completely understand. I just recently started being more active with OSPC (i.e. making suggestions on TaxBrain) while I whiddle away time to start my graduate program, and I'm excited to learn more as time allows.

@martinholmer
Copy link
Collaborator Author

martinholmer commented Jul 16, 2017

@codykallen said in a series of comment on issue #1461:

I agree that it would be useful to allow individuals to reclassify wage income as pass-through income [under reforms that lower tax rates on pass-through income as does the Trump2017.json reform]. We should build that feature, but we also need to consider potential regulations to prevent such income shifting.

The Trump proposal (and the Ryan-Brady proposal) don't include specific definitions of what an employee is. However, Ways & Means at least appreciates the difficulties of enforcement. There are various potential rules under consideration to distinguish wage and pass-through income. Perhaps the most useful (and programmable) is the allocation of a fixed share of pass-through income to labor and a fixed share to capital, with the labor share taxed as ordinary wage income and the capital share taxed at the preferential rate.

From what I've heard, the most plausible labor-capital split would be 70/30. But if you want to build in that type of split, you could input any mandated labor share between 0 and 1.

The earnings_shifting.py script now has a parameter specifying the minimum fraction of any earnings shifted to a personal LLC that must be paid by the personal LLC as labor (that is, wage or salary) income rather than pass-through income. That new parameter can be set to any value between zero (no regulation) and one, which if it could be enforced effectively would completely eliminate the ability to reduce taxes by creating a personal LLC.

Here are some 2017 results from earnings_shifting.sum that illustrate the new results for the Trump2017.json reform under several different sets of assumptions.

First, consider the static, no-earnings-shifting results on combined tax revenue:

YEAR   MINWF  MINEARN  MINSAVE  SPROB :  NS(#m)    ES($b)  TAXDIFF($b)
2017    0.00        0        0   0.00 :    0.00     0.000       -420.5

Tax-Calculator estimates a loss in revenue of $420.5 billion in 2017.

Next, consider the TPC assumption of large-scale creating of personal LLCs: fifty percent of those earning at least $100,000 per annum are assumed to eventually create personal LLCs and there is no minimum wage fraction regulation.

YEAR   MINWF  MINEARN  MINSAVE  SPROB :  NS(#m)    ES($b)  TAXDIFF($b)
2017    0.00   100000        0   0.50 :   9.026  1780.089       -588.4

Slightly more than nine million people, who have over $1.7 trillion in pre-reform earnings, are assumed to create personal LLCs. When those LLCs pay out compensation exclusively as pass-through income, the 2017 loss in tax revenue grows from $420.5 to $588.4 billion. That is an increase in lost tax revenue of $167.9 billion, which is about a 40% increase in the loss.

If there was a regulation that somehow required 70% of the compensation shifted to the personal LLCs to be paid out as wages or salaries (and the remaining 30% was allowed to be paid out as pass-through income), the results would look like this if we continue to use the TPC assumptions:

YEAR   MINWF  MINEARN  MINSAVE  SPROB :  NS(#m)    ES($b)  TAXDIFF($b)
2017   0.70    100000        0   0.50 :   9.026  1780.089       -487.6

So the increase in lost tax revenue would be smaller: only $67.1 billion, which is a 16% increase in the loss.

Finally, we switch to assuming that employers will negotiate the salary-to-contractor change only with their very highly paid employees, and that such employees will initiate those negotiations only if they save each year a substantial amount a money from forming a personal LLC. One way to operationalize these assumptions to say earning-shifting happens only for an employee with at least $500,000 in earnings who could save at least $50,000 per annum in taxes from setting up a personal LLC. We assume all of such employees create a personal LLC. Here are the results for those assumptions:

YEAR   MINWF  MINEARN  MINSAVE  SPROB :  NS(#m)    ES($b)  TAXDIFF($b)
2017    0.00   500000    50000   1.00 :   0.586   715.094       -541.9
2017    0.70   500000    50000   1.00 :   0.264   503.629       -451.2

Under these assumptions, when there is no regulation of LLC payouts, the tax revenue loss is $541.9 billion. That is an increase in the loss of $121.4 billion, which is an increase of nearly 29% from the no-shifting tax loss of the reform. Only 0.6 million people form personal LLCs, but those people have pre-reform wage and salary income of about $0.7 trillion.

However, if regulations can effectively limit the compensation pay-out of the new personal LLCs, the number of people who can save at least $50,000 per annum declines by half to 0.3 million. The resulting loss in tax revenue goes down to $451.2 billion, which is only $30.7 billion more than the no-shifting loss. So, the percentage increase in lost revenue drops to about 7% under these more restrictive assumptions about who would create a personal LLC and contract with their former employer. But the handful of people who are simulated to create personal LLCs reduce their tax liability by about $116,000, on average, by doing this.

What would actually happen under this kind of reform? It is very difficult to know in advance. Much depends on what regulations are included in the reform and whether IRS would have the budget to enforce any regulations effectively. Also, much depends on the willingness of employers to shift higher-paid employees to contractor status, and on the administrative costs of running a personal LLC.

The point of this analysis is not to predict what would happen under this reform. The analysis is meant to show the tax implications of any set of assumptions about what might happen. And it is meant to illustrate the kind of advanced behavioral analysis that can be performed using Tax-Calculator.

@MattHJensen @feenberg @Amy-Xu @andersonfrailey @hdoupe @olsonjs

@codykallen
Copy link
Contributor

@martinholmer, this is a good addition. However, I don't seen any use of e00900 or e00900p (sole proprietorship income). Sole proprietorship income would be included in pass-through income, and thus eligible for the reduced rates in the Trump plan or the Brady-Ryan plan. Although it should be fine to use partnership income as the "destination" for earnings shifting, regulations applied to limit the amount of earnings shifting would apply to pass-through income as a whole (e26270 + e00900), not just to pass-through income from Sch. E (partnership and S corp income).

@martinholmer
Copy link
Collaborator Author

@codykallen said about pull request #1464:

This is a good addition. However, I don't seen any use of e00900 or e00900p (sole proprietorship income). Sole proprietorship income would be included in pass-through income, and thus eligible for the reduced rates in the Trump plan or the Brady-Ryan plan. Although it should be fine to use partnership income as the "destination" for earnings shifting, regulations applied to limit the amount of earnings shifting would apply to pass-through income as a whole (e26270 + e00900), not just to pass-through income from Sch. E (partnership and S corp income).

I'm not simulating the regulations for the whole reform; the earnings_shifting.py script is just an analysis of earnings shifting under the Trump2017.json reform. My wording of this comment makes that clear, I thought.

Feel free to prepare a Tax-Calculator pull request the adds such a regulatory parameter to the current_law_policy.json file and adds tax-logic code that uses that new parameter. Then after that you can prepare a new reform file that uses that new parameter. I guess you say the Trump2017.json reform does not include such a regulatory parameter, but maybe you could prepare a WaysAndMeans2017.json reform that does include a nonzero value for that new regulatory parameter.

@MattHJensen @feenberg @Amy-Xu @andersonfrailey @hdoupe @olsonjs

@martinholmer martinholmer merged commit c950f52 into PSLmodels:master Jul 19, 2017
@martinholmer martinholmer deleted the earnings-shifting branch July 20, 2017 19:59
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.

5 participants