Skip to content

k1bx14 derivation: should E30400/E30500 be grossed up by 0.9235? #455

@MaxGhenis

Description

@MaxGhenis

Summary

The k1bx14p/k1bx14s derivation in finalprep.py uses E30400/E30500 directly:

secatip = np.minimum(mte, data["e30400"])
nonbox14 = data["e00900p"] + data["e02100p"]
box14 = np.where(
    np.logical_and(nonbox14 <= 0, secatip <= 0), 0.0, secatip - nonbox14
)
data["k1bx14p"] = box14.round(2)

However, E30400/E30500 in the IRS PUF are taxable SE income (post-0.9235 deduction factor), while E00900/E02100 are gross amounts. This mixes post-deduction and pre-deduction values in the subtraction.

Yale Budget Lab's approach

Yale's Tax-Data grosses up E30400/E30500 before the subtraction:

# process_puf.R
part_se = if_else(E25940 + E25980 - E25920 - E25960 != 0,  
                  (E30400 + E30500) / 0.9235 - E00900 - E02100,
                  0)

Question

Does Tax-Calculator expect k1bx14p/k1bx14s to be:

  1. Gross partnership SE income (pre-deduction) - would need the 0.9235 gross-up
  2. Taxable partnership SE income (post-deduction) - current approach is correct

This affects downstream users who need to compute SE tax correctly.

Impact

Without the gross-up, k1bx14 values are ~8% lower than they should be if gross amounts are expected.

Approach Formula Weighted Sum
Current taxdata (E30400 + E30500) - E00900 - E02100 $12.7B
Yale (with gross-up) (E30400 + E30500) / 0.9235 - E00900 - E02100 $55.7B

The difference arises because without grossing up, you're subtracting gross Sch C/F amounts from already-reduced taxable SE amounts, which understates the partnership SE residual.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions