Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions changelog_entry.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- bump: minor
changes:
added:
- Colorado alternative minimum tax (AMT).
13 changes: 13 additions & 0 deletions policyengine_us/parameters/gov/states/co/tax/income/amt/rate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
description: Colorado alternative minimum tax rate
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

active voice

values:
2021-01-01: 0.0347
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
2021-01-01: 0.0347
2000-01-01: 0.0347


metadata:
label: Colorado AMT rate
period: year
unit: /1
reference:
- title: Colorado DR 0104AMT Instructions
href: https://tax.colorado.gov/DR0104AMT
- title: C.R.S. § 39-22-105
href: https://law.justia.com/codes/colorado/2022/title-39/article-22/part-1/section-39-22-105/
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Colorado alternative minimum taxable income tests
- name: CO AMTI calculation
period: 2024
input:
amt_income_less_exemptions: 200_000
co_additions: 10_000
co_subtractions: 5_000
state_code: CO
output:
# 200,000 + 10,000 - 5,000 = 205,000
co_alternative_minimum_taxable_income: 205_000

- name: CO AMTI with no federal AMT income
period: 2024
input:
amt_income_less_exemptions: 0
co_additions: 10_000
co_subtractions: 5_000
state_code: CO
output:
# 0 + 10,000 - 5,000 = 5,000
co_alternative_minimum_taxable_income: 5_000

- name: CO AMTI cannot be negative
period: 2024
input:
amt_income_less_exemptions: 0
co_additions: 0
co_subtractions: 50_000
state_code: CO
output:
# max(0, 0 + 0 - 50,000) = 0
co_alternative_minimum_taxable_income: 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Colorado Alternative Minimum Tax tests
- name: No AMT when normal tax exceeds tentative minimum tax
period: 2024
input:
co_tentative_minimum_tax: 5_000
co_income_tax_before_non_refundable_credits: 10_000
state_code: CO
output:
co_amt: 0

- name: AMT when tentative minimum tax exceeds normal tax
period: 2024
input:
co_tentative_minimum_tax: 15_000
co_income_tax_before_non_refundable_credits: 10_000
state_code: CO
output:
co_amt: 5_000
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Colorado tentative minimum tax tests
- name: Tentative minimum tax calculation
period: 2024
input:
co_alternative_minimum_taxable_income: 100_000
state_code: CO
output:
# 100,000 * 0.0347 = 3,470
co_tentative_minimum_tax: 3_470
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from policyengine_us.model_api import *


class co_alternative_minimum_taxable_income(Variable):
value_type = float
entity = TaxUnit
label = "Colorado alternative minimum taxable income"
unit = USD
definition_period = YEAR
defined_for = StateCode.CO
reference = [
"https://tax.colorado.gov/DR0104AMT",
"https://law.justia.com/codes/colorado/2022/title-39/article-22/part-1/section-39-22-105/",
]

def formula(tax_unit, period, parameters):
# DR 0104AMT calculation:
# Line 1: Federal Form 6251 line 6 (federal AMTI less exemption)
federal_amt_income_less_exemptions = tax_unit(
"amt_income_less_exemptions", period
)
# Line 2: Colorado additions (from DR 0104, lines 3-8)
co_additions = tax_unit("co_additions", period)
# Line 4: Colorado subtractions (excluding state income tax refund)
co_subtractions = tax_unit("co_subtractions", period)
# Line 5: Colorado AMTI
return max_(
0,
federal_amt_income_less_exemptions
+ co_additions
- co_subtractions,
)
23 changes: 23 additions & 0 deletions policyengine_us/variables/gov/states/co/tax/income/amt/co_amt.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from policyengine_us.model_api import *


class co_amt(Variable):
value_type = float
entity = TaxUnit
label = "Colorado alternative minimum tax"
unit = USD
definition_period = YEAR
defined_for = StateCode.CO
reference = [
"https://tax.colorado.gov/DR0104AMT",
"https://law.justia.com/codes/colorado/2022/title-39/article-22/part-1/section-39-22-105/",
]

def formula(tax_unit, period, parameters):
tentative_minimum_tax = tax_unit("co_tentative_minimum_tax", period)
# Normal tax before non-refundable credits
normal_tax = tax_unit(
"co_income_tax_before_non_refundable_credits", period
)
# AMT is the excess of tentative minimum tax over normal tax
return max_(0, tentative_minimum_tax - normal_tax)
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
from policyengine_us.model_api import *


class co_tentative_minimum_tax(Variable):
value_type = float
entity = TaxUnit
label = "Colorado tentative minimum tax"
unit = USD
definition_period = YEAR
defined_for = StateCode.CO
reference = [
"https://tax.colorado.gov/DR0104AMT",
"https://law.justia.com/codes/colorado/2022/title-39/article-22/part-1/section-39-22-105/",
]

def formula(tax_unit, period, parameters):
co_amti = tax_unit("co_alternative_minimum_taxable_income", period)
p = parameters(period).gov.states.co.tax.income.amt
# DR 0104AMT Line 6: multiply by 3.47%
return co_amti * p.rate
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ class co_income_tax(Variable):
definition_period = YEAR
defined_for = StateCode.CO

adds = ["co_income_tax_before_refundable_credits"]
adds = ["co_income_tax_before_refundable_credits", "co_amt"]
subtracts = ["co_refundable_credits"]
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.