Skip to content

Computing payroll tax revenue #1023

@jdebacker

Description

@jdebacker

Payroll tax revenue is computed in aggregates.revenue as:

payroll_tax_revenue = (
            p.frac_tax_payroll[: p.T] * iit_payroll_tax_revenue
        )

This implicitly assumes one is using personal income tax functions that include both payroll and income taxes and that the users is separating these revenues in proportion to a series they input in the parameter frac_tax_payroll (which they may have found from a microsimulation model of payroll and income taxes).

The issue is that this calculation will be incorrect when a user includes payroll taxes via tau_payroll (and excludes them from the tax functions represented in etr_params, mtrx_params, and mtry_y params.

I think the solution is to create a payroll tax revenue function for this calculation. This function will then have a flag to determine how the user treated payroll taxes in the model. e.g., something like:

def payroll_tax_revenue(args...):
    if np.any(tau_payroll != 0):
        payroll_tax_revenue = p.tau_payroll[:T] * w[:T] * L[:T]
    else:
         payroll_tax_revenue = (
                     p.frac_tax_payroll[: p.T] * iit_payroll_tax_revenue
                )

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions