Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a Fair Share Tax #904

Merged
merged 23 commits into from
Sep 19, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
54baa09
Adds a function to calculate the Fair Share Tax
andersonfrailey Aug 31, 2016
4bbcf19
Adds a function to calculate the Fair Share Tax. PEP8 formatting viol…
andersonfrailey Aug 31, 2016
28a86b9
Adds a function to calculate the Fair Share Tax. PEP8 formatting viol…
andersonfrailey Sep 1, 2016
249df51
Adds a function to calculate the Fair Share Tax. PEP8 formatting viol…
andersonfrailey Sep 1, 2016
8831c9a
Adds a function to calculate the Fair Share Tax. PEP8 formatting viol…
andersonfrailey Sep 6, 2016
74b064f
Adds a function to calculate the Fair Share Tax. PEP8 formatting viol…
andersonfrailey Sep 6, 2016
a00a8d9
Updated to work with latest version of TaxCalc and match the codebase…
andersonfrailey Sep 6, 2016
c579376
Updated to work with latest version of TaxCalc and match the codebase…
andersonfrailey Sep 6, 2016
d7b7c3b
Updated to work with latest version of TaxCalc and match the codebase…
andersonfrailey Sep 6, 2016
ca62aec
Updated to match latest version of TaxCalc and the codebase.
andersonfrailey Sep 6, 2016
e91ef08
Updated to match latest version of TaxCalc and the codebase.
andersonfrailey Sep 6, 2016
a6d537d
Commit before updating the master branch
andersonfrailey Sep 8, 2016
153814f
Commit before updating
andersonfrailey Sep 8, 2016
6dc9e4b
Commit before updating
andersonfrailey Sep 9, 2016
dda667a
Commit before updating
andersonfrailey Sep 9, 2016
f2e86f7
Uses the new payroll tax variables to calculate the FST, indexes FST_…
andersonfrailey Sep 9, 2016
abc6d4e
Uses the new payroll tax variables to calculate the FST, indexes FST_…
andersonfrailey Sep 9, 2016
95997e0
Commit before updating to master branch
andersonfrailey Sep 15, 2016
dee43f2
Commit before updating
andersonfrailey Sep 19, 2016
3224e4c
Adds _FST_AGI_thd_hi parameter, renames _FST_tentRate to _FST_AGI_trt
andersonfrailey Sep 19, 2016
e9b816b
pep8
andersonfrailey Sep 19, 2016
7a9e5ed
pep8
andersonfrailey Sep 19, 2016
64e3df8
Remove NIIT from the calculations
andersonfrailey Sep 19, 2016
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
1 change: 1 addition & 0 deletions taxcalc/calculate.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ def calc_one_year(self, zero_out_calc_vars=False):
DecomposeEITC(self.policy, self.records)
IITAX(self.policy, self.records)
ExpandIncome(self.policy, self.records)
FairShareTax(self.policy, self.records)

def calc_all(self, zero_out_calc_vars=False):
# conducts static analysis of Calculator object for current_year
Expand Down
41 changes: 41 additions & 0 deletions taxcalc/current_law_policy.json
Original file line number Diff line number Diff line change
Expand Up @@ -1977,5 +1977,46 @@
[9e99, 9e99, 9e99, 9e99, 9e99, 9e99],
[9e99, 9e99, 9e99, 9e99, 9e99, 9e99]],
"validations": {"min": "_PT_brk6"}
},
"_FST_AGI_trt":{
"long_name": "Rate applied to AGI to determine tentative FST",
"description": "The result of multiplying AGI by this is the tentative FST used to calculate final FST",
"irs_ref": "",
"notes": "",
"start_year": 2013,
"col_var": "",
"row_var": "",
"row_label": ["2013"],
"cpi_inflated": false,
"col_label": "",
"value": [0.0]
},

"_FST_AGI_thd_lo":{
"long_name": "Minimum AGI needed to be subject to FST",
"description": "A taxpayer is only subject to the FST if they exceed this level of AGI",
"irs_ref": "",
"note": "",
"start_year": 2013,
"col_var": "",
"row_var": "",
"row_label": ["2013"],
"cpi_inflated": true,
"col_label": ["single", "joint", "separate", "head of household", "widow", "separate"],
"value": [[1000000, 1000000, 500000, 1000000, 1000000, 500000]]
},
"_FST_AGI_thd_hi":{
"long_name": "AGI level at which the FST is fully phased in",
"description": "The FST will be fully phased in at this level of AGI. If there is no phase in, this is equivalent to the lower AGI threshold",
"irs_ref": "",
"note": "",
"start_year": 2013,
"col_var": "",
"row_var": "",
"row_label": ["2013"],
"cpi_inflated": true,
"col_label": ["single", "joint", "separate", "head of household", "widow", "separate"],
"value": [[2000000, 2000000, 1000000, 2000000, 2000000, 1000000]]

}
}
47 changes: 47 additions & 0 deletions taxcalc/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -1198,6 +1198,53 @@ def ExpandIncome(ptax_was, e02400, c02500, c00100, e00400, _expanded_income):
return _expanded_income


@iterate_jit(nopython=True)
def FairShareTax(c00100, _iitax, _combined, ptax_was, ptax_sey, ptax_amc,
MARS, FST_AGI_trt, FST_AGI_thd_lo, FST_AGI_thd_hi,
fst):
"""

Parameters
----------
c00100: AGI
_iitax: Individual income tax
_combined: Combined payroll and income tax
ptax_was: Payroll tax on wages and salaries
ptax_sey: Payroll tax on self-employment income
ptax_amc: Additional medicare tax on high earnings
MARS: Marital status
FST_AGI_trt: Percent of AGI the tentative FST will be. Default = 0.0
FST_AGI_thd_lo: Minimum AGI needed to be subject to FST. Default = 500,000
for married filling separetly, 1,000,000 for all others.
FST_AGI_thd_hi: Level of AGI at which the tax is fully phased in. If
equivalent to FST_AGI_thd_lo, the there is no phase in for the tax.
Default = 1,000,000 for married filing separetly and 2,000,000 for all
others.
fst

Returns
-------
fst: Fair Share Tax

"""
if c00100 >= FST_AGI_thd_lo[MARS - 1]:
tentFST = c00100 * FST_AGI_trt
employee_share = 0.5 * ptax_was + 0.5 * ptax_sey + ptax_amc
if (c00100 >= FST_AGI_thd_hi[MARS - 1] or
FST_AGI_thd_hi[MARS - 1] == FST_AGI_thd_lo[MARS - 1]):
fst = max(tentFST - _iitax - employee_share, 0.0)
else:
fst = max((((c00100 - FST_AGI_thd_lo[MARS - 1]) /
(FST_AGI_thd_hi[MARS - 1] -
FST_AGI_thd_lo[MARS - 1])) *
(tentFST - _iitax - employee_share)), 0.0)
else:
fst = 0.0
_iitax += fst
_combined += fst
return fst, _iitax, _combined


def BenefitSurtax(calc):
"""
BenefitSurtax function: computes itemized-deduction-benefit surtax and
Expand Down
2 changes: 1 addition & 1 deletion taxcalc/records.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ class instance: Records
'_iitax', '_refund',
'_expanded_income', 'c07300',
'c07600', 'c07240',
'_surtax', '_combined', 'personal_credit'])
'_surtax', '_combined', 'personal_credit', 'fst'])

INTEGER_CALCULATED_VARS = set([
'_num', '_sep', '_exact', 'f2555'])
Expand Down