Utah State income tax¶
PolicyEngine models Utah’s State income tax, including the following components:
The main rate applied to taxable income (currently 4.85%)
The (nonrefundable) taxpayer credit
The income tax exemption
The chart below shows the absolute tax amount by employment income, for each of four household types.
Marginal tax rates¶
from policyengine_us import Microsimulation
from policyengine_core.reforms import Reform
from policyengine_core.periods import instant
import pandas as pd
baseline = Microsimulation()
def score_rate_reform(new_tax_rate: float) -> dict:
def modify_parameters(parameters):
parameters.gov.states.ut.tax.income.rate.update(
period="2023", value=new_tax_rate
)
return parameters
class reform(Reform):
def apply(self):
self.modify_parameters(modify_parameters)
reformed = Microsimulation(reform=reform)
net_cost = (
reformed.calculate("ut_income_tax", 2023).sum()
- baseline.calculate("ut_income_tax", 2023).sum()
)
gain_per_household = net_cost / baseline.calculate("UT").sum()
in_utah = baseline.calculate("UT", map_to="person")
poverty_change = (
reformed.calculate("person_in_poverty", 2023)[in_utah].mean()
/ baseline.calculate("person_in_poverty", 2023)[in_utah].mean()
) - 1
return {
"net_cost": net_cost,
"gain_per_household": gain_per_household,
"poverty_impact": poverty_change,
}
tax_rate_changes = [-0.01, -0.005, -0.001, 0, 0.001, 0.005, 0.01]
tax_rates = [0.0485 + x for x in tax_rate_changes]
costs = []
gains = []
poverty_changes = []
for tax_rate in tax_rates:
result = score_rate_reform(tax_rate)
costs.append(result["net_cost"])
gains.append(result["gain_per_household"])
poverty_changes.append(result["poverty_impact"])
df = pd.DataFrame(
{
"Tax rate": tax_rates,
"Tax rate change": tax_rate_changes,
"Net cost": costs,
"Gain per household": gains,
}
)
df
| Tax rate | Tax rate change | Net cost | Gain per household | |
|---|---|---|---|---|
| 0 | 0.0385 | -0.010 | -1.099925e+09 | -995.349470 |
| 1 | 0.0435 | -0.005 | -5.512912e+08 | -498.877160 |
| 2 | 0.0475 | -0.001 | -1.104351e+08 | -99.935481 |
| 3 | 0.0485 | 0.000 | 0.000000e+00 | 0.000000 |
| 4 | 0.0495 | 0.001 | 1.105282e+08 | 100.019755 |
| 5 | 0.0535 | 0.005 | 5.537751e+08 | 501.124887 |
| 6 | 0.0585 | 0.010 | 1.110731e+09 | 1005.128185 |
References¶
Most of the logic in PolicyEngine was developed in line with the 2022 tax form (TC-40). For historical parameters, the legislation is the primary source: specifically, Title 59 (Revenue and Taxation), Chapter 10 (Individual Income Tax Act) of the Utah Code. Utah has a historical legislation viewer which allows you to see the text of any section at any particular date after 2014.