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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions