PSLmodels / Tax-Calculator

USA Federal Individual Income and Payroll Tax Microsimulation Model
https://taxcalc.pslmodels.org
Other
263 stars 157 forks source link

Add "market income" concept #2309

Closed MaxGhenis closed 5 years ago

MaxGhenis commented 5 years ago

Currently expanded_income includes benefit programs, and in https://github.com/PSLmodels/Tax-Calculator/issues/1893#issuecomment-367477214 @martinholmer said:

Yes, expanded income includes benefits from several "government programs" including unemployment insurance benefits and social security benefits. A substantial fraction of social security benefits are included in AGI. I'm not sure how we could sensibly define a "pre-government" income statistic. Would we exclude all wages and salaries paid by federal, state, and local governments? My understanding is that other tax analysis groups tend to use a broad definition of income.

I'd be interested if anyone can confirm whether other tax analysis groups include things like SNAP in their income metrics, but for this issue I think a market income concept would still be useful. For example, OECD calculates inequality before and after taxes and transfers, as reported in Wapo: image

Our World In Data has also trended this across countries, and branded them "market" and "disposable" income (OECD also calls it disposable): OWID chart

The two income measures are defined as follows:

  • Market household income is defined as the sum of labor income (paid employment and self-employment income) and capital income.
  • Disposable household income is the sum of labor income (paid employment and self-employment income), capital income, transfer income—social security transfers (work-related insurance transfers, universal benefits, and assistance benefits) and private transfers—, minus income taxes and social security contributions.

This can be useful for showing how tax-and-transfer reform can affect metrics like inequality, either using market->disposable income as a baseline, or by calculating changes to market incomes as a result of labor responses.

Would expanded income minus benefits, UI, and OASDI approximate this concept?

martinholmer commented 5 years ago

@MaxGhenis, As you point out in issue 11, any user of Tax-Calculator can define any measure of income they think is appropriate for the analysis they wan to conduct. We're all in agreement that different kinds of analysis require different kinds of income measures. That is why Tax-Calculator provides so much flexibility. Not only does Tax-Calculator provide you with all the data needed to define your own income measure, it provides distributional table/graph functions that accept any income measure.

Given all this, I don't understand the purpose of your issue #2309. If you're just asking "whether other tax analysis groups include things like SNAP in their income metrics", then why don't you do a Google search to see how CBO, JCT, TPC, etc., define their preferred income measures? My impression is that every organization has a different preferred income measure.

MaxGhenis commented 5 years ago

Is there an example of using custom income measures for taxcalc graph functions? I'm using my own pandas-based approach, but not sure how to pass it back to native taxcalc functions like decile graphs after creating a new variable in the pandas dataframe.

One data point on other shops: TPC uses what they call expanded cash income (ECI), which includes cash transfers and SNAP, but not apparently Medicare, Medicaid, or WIC. They also include corporate tax liability. Screenshot 2019-04-19 at 10 29 52

MaxGhenis commented 5 years ago

Another question is whether there are other non-"market"-income measures you'd consider excluding that I'm missing:

Would expanded income minus benefits, UI, and OASDI approximate this concept?

martinholmer commented 5 years ago

@MaxGhenis said in issue #2309:

One data point on other shops: TPC uses what they call expanded cash income (ECI), which includes cash transfers and SNAP, but not apparently Medicare, Medicaid, or WIC.

Thanks for the information. Please post what you learn about the "other shops".

martinholmer commented 5 years ago

@MaxGhenis said in issue #2309:

Another question was whether there are other non-"market"-income measures you'd consider excluding that I'm missing:

Would expanded income minus benefits, UI, and OASDI approximate this concept?

You should look at what CBO is doing regarding social insurance benefits. It's exactly the opposite of what you're considering. Look for Kevin Perese's Congressional Budget Office Working Paper 2017-09.

martinholmer commented 5 years ago

@MaxGhenis asked in issue #2309:

Is there an example of using custom income measures for taxcalc graph functions? I'm using my own pandas-based approach, but not sure how to pass it back to native taxcalc functions like decile graphs after creating a new variable in the pandas dataframe.

Good question. After reviewing the table/graph functions in Tax-Calculator's Calculator class, it seems as if to use them with alternative definitions of "expanded income" (or "aftertax expanded income"), one would need to redefine the native expanded_income (or aftertax_income) variable before calling the table/graph function. It is easy to do that because all the raw data are available to compute any income measure and the Calculator class provides the array method to implement the redefinition in the Records object embedded in the Calculator object.

MaxGhenis commented 5 years ago

You should look at what CBO is doing regarding social insurance benefits. It's exactly the opposite of what you're considering. Look for Kevin Perese's Congressional Budget Office Working Paper 2017-09.

Thanks for the pointer. Their market income concept is actually pretty similar to what I'm proposing, as it excludes Social Security, unemployment insurance, Medicare, and transfer payments.

This prompted me to also compare to TPC in this spreadsheet: spreadsheet

martinholmer commented 5 years ago

@MaxGhenis, I think there are some problems in your spreadsheet with respect to Tax-Calculator's expanded_income concept. I don't understand why you think several income items --- employee contribution to retirement plan, employer share of payroll taxes, tax-exempt interest, nontaxable pension distributions, and nontaxable social security benefits --- are excluded from T-C's definition of expanded_income. Here is the code that computes expanded_income:

def ExpandIncome(e00200, pencon_p, pencon_s, e00300, e00400, e00600,
                 e00700, e00800, e00900, e01100, e01200, e01400, e01500,
                 e02000, e02100, p22250, p23250,
                 cmbtp, ptax_was, benefit_value_total, ubi,
                 expanded_income):
    """
    Calculates expanded_income from component income types.
    """
    expanded_income = (
        e00200 +  # wage and salary income net of DC pension contributions
        pencon_p +  # tax-advantaged DC pension contributions for taxpayer
        pencon_s +  # tax-advantaged DC pension contributions for spouse
        e00300 +  # taxable interest income
        e00400 +  # non-taxable interest income
        e00600 +  # dividends
        e00700 +  # state and local income tax refunds
        e00800 +  # alimony received
        e00900 +  # Sch C business net income/loss
        e01100 +  # capital gain distributions not reported on Sch D
        e01200 +  # Form 4797 other net gain/loss
        e01400 +  # taxable IRA distributions
        e01500 +  # total pension & annuity income (including DB-plan benefits)
        e02000 +  # Sch E total rental, ..., partnership, S-corp income/loss
        e02100 +  # Sch F farm net income/loss
        p22250 +  # Sch D: net short-term capital gain/loss
        p23250 +  # Sch D: net long-term capital gain/loss
        cmbtp +  # other AMT taxable income items from Form 6251
        0.5 * ptax_was +  # employer share of FICA taxes on wages/salaries
        ubi +  # total UBI benefit
        benefit_value_total  # consumption value of all benefits received;
        # see the BenefitPrograms function in this file for details on
        # exactly how the benefit_value_total variable is computed
    )
    return expanded_income
MaxGhenis commented 5 years ago

Thanks @martinholmer, I'd added those as they came up in other income concepts and hadn't checked against expanded_income. I revised the spreadsheet accordingly.

martinholmer commented 5 years ago

@MaxGhenis said:

I revised the spreadsheet accordingly.

OK, that's good. But the spreadsheet that appears in this comment is still incorrect.

MaxGhenis commented 5 years ago

I revised the spreadsheet, not the screenshot in that comment.

martinholmer commented 5 years ago

The new Python Cookbook that goes with Tax-Calculator 2.2 adds recipe 5 entitled [Redefining Expanded Income]https://pslmodels.github.io/Tax-Calculator/cookbook.html#recipe05). This new recipe shows how expanded income can be defined in any way the user wants and be able to use the redefined expanded income in all Tax-Calculator tables and graphs.