taxcalc 4.2.1__py3-none-any.whl → 4.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. taxcalc/__init__.py +1 -1
  2. taxcalc/assumptions/ASSUMPTIONS.md +53 -0
  3. taxcalc/assumptions/README.md +17 -0
  4. taxcalc/assumptions/economic_assumptions_template.json +77 -0
  5. taxcalc/calcfunctions.py +7 -4
  6. taxcalc/data.py +10 -5
  7. taxcalc/policy.py +1 -1
  8. taxcalc/policy_current_law.json +4649 -288
  9. taxcalc/records.py +20 -15
  10. taxcalc/reforms/2017_law.json +125 -0
  11. taxcalc/reforms/2017_law.out.csv +10 -0
  12. taxcalc/reforms/ARPA.json +78 -0
  13. taxcalc/reforms/ARPA.out.csv +10 -0
  14. taxcalc/reforms/BrownKhanna.json +23 -0
  15. taxcalc/reforms/BrownKhanna.out.csv +10 -0
  16. taxcalc/reforms/CARES.json +40 -0
  17. taxcalc/reforms/CARES.out.csv +10 -0
  18. taxcalc/reforms/ConsolidatedAppropriationsAct2021.json +15 -0
  19. taxcalc/reforms/ConsolidatedAppropriationsAct2021.out.csv +10 -0
  20. taxcalc/reforms/Larson2019.json +36 -0
  21. taxcalc/reforms/Larson2019.out.csv +10 -0
  22. taxcalc/reforms/README.md +22 -0
  23. taxcalc/reforms/REFORMS.md +92 -0
  24. taxcalc/reforms/Renacci.json +61 -0
  25. taxcalc/reforms/Renacci.out.csv +10 -0
  26. taxcalc/reforms/SandersDeFazio.json +15 -0
  27. taxcalc/reforms/SandersDeFazio.out.csv +10 -0
  28. taxcalc/reforms/TCJA.json +160 -0
  29. taxcalc/reforms/TCJA.md +48 -0
  30. taxcalc/reforms/TCJA.out.csv +10 -0
  31. taxcalc/reforms/Trump2016.json +71 -0
  32. taxcalc/reforms/Trump2016.out.csv +10 -0
  33. taxcalc/reforms/Trump2017.json +51 -0
  34. taxcalc/reforms/Trump2017.out.csv +10 -0
  35. taxcalc/reforms/archive/Clinton2016.json +56 -0
  36. taxcalc/reforms/archive/RyanBrady.json +104 -0
  37. taxcalc/reforms/archive/TCJA_House.json +144 -0
  38. taxcalc/reforms/archive/TCJA_House_Amended.json +152 -0
  39. taxcalc/reforms/archive/TCJA_Reconciliation.json +187 -0
  40. taxcalc/reforms/archive/TCJA_Senate.json +116 -0
  41. taxcalc/reforms/archive/TCJA_Senate_111417.json +169 -0
  42. taxcalc/reforms/archive/TCJA_Senate_120117.json +174 -0
  43. taxcalc/reforms/cases.csv +10 -0
  44. taxcalc/reforms/clp.out.csv +10 -0
  45. taxcalc/reforms/ext.json +59 -0
  46. taxcalc/reforms/growfactors_ext.csv +65 -0
  47. taxcalc/reforms/ptaxes0.json +37 -0
  48. taxcalc/reforms/ptaxes0.out.csv +10 -0
  49. taxcalc/reforms/ptaxes1.json +21 -0
  50. taxcalc/reforms/ptaxes1.out.csv +10 -0
  51. taxcalc/reforms/ptaxes2.json +18 -0
  52. taxcalc/reforms/ptaxes2.out.csv +10 -0
  53. taxcalc/reforms/ptaxes3.json +28 -0
  54. taxcalc/reforms/ptaxes3.out.csv +10 -0
  55. taxcalc/taxcalcio.py +44 -22
  56. taxcalc/tests/benefits_expect.csv +169 -0
  57. taxcalc/tests/cmpi_cps_expect.txt +132 -0
  58. taxcalc/tests/cmpi_puf_expect.txt +132 -0
  59. taxcalc/tests/conftest.py +143 -0
  60. taxcalc/tests/cpscsv_agg_expect.csv +26 -0
  61. taxcalc/tests/puf_var_correl_coeffs_2016.csv +80 -0
  62. taxcalc/tests/puf_var_wght_means_by_year.csv +80 -0
  63. taxcalc/tests/pufcsv_agg_expect.csv +26 -0
  64. taxcalc/tests/pufcsv_mtr_expect.txt +63 -0
  65. taxcalc/tests/reforms.json +649 -0
  66. taxcalc/tests/reforms_expect.csv +65 -0
  67. taxcalc/tests/test_4package.py +67 -0
  68. taxcalc/tests/test_benefits.py +86 -0
  69. taxcalc/tests/test_calcfunctions.py +871 -0
  70. taxcalc/tests/test_calculator.py +1021 -0
  71. taxcalc/tests/test_compare.py +336 -0
  72. taxcalc/tests/test_compatible_data.py +338 -0
  73. taxcalc/tests/test_consumption.py +144 -0
  74. taxcalc/tests/test_cpscsv.py +163 -0
  75. taxcalc/tests/test_data.py +133 -0
  76. taxcalc/tests/test_decorators.py +332 -0
  77. taxcalc/tests/test_growdiff.py +102 -0
  78. taxcalc/tests/test_growfactors.py +94 -0
  79. taxcalc/tests/test_parameters.py +617 -0
  80. taxcalc/tests/test_policy.py +1557 -0
  81. taxcalc/tests/test_puf_var_stats.py +194 -0
  82. taxcalc/tests/test_pufcsv.py +385 -0
  83. taxcalc/tests/test_records.py +234 -0
  84. taxcalc/tests/test_reforms.py +386 -0
  85. taxcalc/tests/test_responses.py +41 -0
  86. taxcalc/tests/test_taxcalcio.py +755 -0
  87. taxcalc/tests/test_utils.py +792 -0
  88. taxcalc/validation/CSV_INPUT_VARS.md +29 -0
  89. taxcalc/validation/CSV_OUTPUT_VARS.md +63 -0
  90. taxcalc/validation/README.md +68 -0
  91. taxcalc/validation/taxsim35/Differences_Explained.md +54 -0
  92. taxcalc/validation/taxsim35/README.md +139 -0
  93. taxcalc/validation/taxsim35/expected_differences/a17-taxdiffs-expect.csv +25 -0
  94. taxcalc/validation/taxsim35/expected_differences/a18-taxdiffs-expect.csv +25 -0
  95. taxcalc/validation/taxsim35/expected_differences/a19-taxdiffs-expect.csv +25 -0
  96. taxcalc/validation/taxsim35/expected_differences/a20-taxdiffs-expect.csv +25 -0
  97. taxcalc/validation/taxsim35/expected_differences/a21-taxdiffs-expect.csv +25 -0
  98. taxcalc/validation/taxsim35/expected_differences/b17-taxdiffs-expect.csv +25 -0
  99. taxcalc/validation/taxsim35/expected_differences/b18-taxdiffs-expect.csv +25 -0
  100. taxcalc/validation/taxsim35/expected_differences/b19-taxdiffs-expect.csv +25 -0
  101. taxcalc/validation/taxsim35/expected_differences/b20-taxdiffs-expect.csv +25 -0
  102. taxcalc/validation/taxsim35/expected_differences/b21-taxdiffs-expect.csv +25 -0
  103. taxcalc/validation/taxsim35/expected_differences/c17-taxdiffs-expect.csv +25 -0
  104. taxcalc/validation/taxsim35/expected_differences/c18-taxdiffs-expect.csv +25 -0
  105. taxcalc/validation/taxsim35/expected_differences/c19-taxdiffs-expect.csv +25 -0
  106. taxcalc/validation/taxsim35/input_setup.py +67 -0
  107. taxcalc/validation/taxsim35/main_comparison.py +183 -0
  108. taxcalc/validation/taxsim35/prepare_taxcalc_input.py +161 -0
  109. taxcalc/validation/taxsim35/process_taxcalc_output.py +140 -0
  110. taxcalc/validation/taxsim35/taxsim_emulation.json +49 -0
  111. taxcalc/validation/taxsim35/taxsim_input.py +321 -0
  112. taxcalc/validation/taxsim35/tc_sims.py +98 -0
  113. taxcalc/validation/taxsim35/tests_35.py +80 -0
  114. taxcalc/validation/tests_35.sh +13 -0
  115. {taxcalc-4.2.1.dist-info → taxcalc-4.3.0.dist-info}/METADATA +3 -4
  116. taxcalc-4.3.0.dist-info/RECORD +139 -0
  117. {taxcalc-4.2.1.dist-info → taxcalc-4.3.0.dist-info}/WHEEL +1 -1
  118. taxcalc/tmd_growfactors.csv +0 -55
  119. taxcalc/tmd_weights.csv.gz +0 -0
  120. taxcalc-4.2.1.dist-info/RECORD +0 -34
  121. {taxcalc-4.2.1.dist-info → taxcalc-4.3.0.dist-info}/LICENSE +0 -0
  122. {taxcalc-4.2.1.dist-info → taxcalc-4.3.0.dist-info}/entry_points.txt +0 -0
  123. {taxcalc-4.2.1.dist-info → taxcalc-4.3.0.dist-info}/top_level.txt +0 -0
taxcalc/records.py CHANGED
@@ -6,6 +6,7 @@ Tax-Calculator tax-filing-unit Records class.
6
6
  # pylint --disable=locally-disabled records.py
7
7
 
8
8
  import os
9
+ from pathlib import Path
9
10
  import numpy as np
10
11
  import pandas as pd
11
12
  from taxcalc.data import Data
@@ -116,9 +117,6 @@ class Records(Data):
116
117
  PUF_RATIOS_FILENAME = 'puf_ratios.csv'
117
118
  CPS_WEIGHTS_FILENAME = 'cps_weights.csv.gz'
118
119
  CPS_RATIOS_FILENAME = None
119
- TMD_WEIGHTS_FILENAME = 'tmd_weights.csv.gz'
120
- TMD_GROWFACTORS_FILENAME = 'tmd_growfactors.csv'
121
- TMD_RATIOS_FILENAME = None
122
120
  CODE_PATH = os.path.abspath(os.path.dirname(__file__))
123
121
  VARINFO_FILE_NAME = 'records_variables.json'
124
122
  VARINFO_FILE_PATH = CODE_PATH
@@ -226,9 +224,12 @@ class Records(Data):
226
224
  exact_calculations=exact_calculations)
227
225
 
228
226
  @staticmethod
229
- def tmd_constructor(data, # path to tmd.csv file or dataframe
230
- gfactors=GrowFactors(TMD_GROWFACTORS_FILENAME),
231
- exact_calculations=False): # pragma: no cover
227
+ def tmd_constructor(
228
+ data_path: Path,
229
+ weights_path: Path,
230
+ growfactors_path: Path,
231
+ exact_calculations=False
232
+ ): # pragma: no cover
232
233
  """
233
234
  Static method returns a Records object instantiated with TMD
234
235
  input data. This works in a analogous way to Records(), which
@@ -239,14 +240,18 @@ class Records(Data):
239
240
  eliminate the need to specify all the details of the PUF input
240
241
  data.
241
242
  """
242
- weights = os.path.join(Records.CODE_PATH, Records.TMD_WEIGHTS_FILENAME)
243
- return Records(data=data,
244
- start_year=Records.TMDCSV_YEAR,
245
- gfactors=gfactors,
246
- weights=weights,
247
- adjust_ratios=Records.TMD_RATIOS_FILENAME,
248
- exact_calculations=exact_calculations)
249
-
243
+ assert isinstance(data_path, Path)
244
+ assert isinstance(weights_path, Path)
245
+ assert isinstance(growfactors_path, Path)
246
+ return Records(
247
+ data=pd.read_csv(data_path),
248
+ start_year=Records.TMDCSV_YEAR,
249
+ weights=pd.read_csv(weights_path),
250
+ gfactors=GrowFactors(growfactors_filename=str(growfactors_path)),
251
+ adjust_ratios=None,
252
+ exact_calculations=exact_calculations,
253
+ )
254
+
250
255
  def increment_year(self):
251
256
  """
252
257
  Add one to current year, and also does
@@ -277,7 +282,7 @@ class Records(Data):
277
282
  """
278
283
  # pylint: disable=too-many-statements,no-member
279
284
  # put values in local dictionary
280
- gfv = dict()
285
+ gfv = {}
281
286
  for name in GrowFactors.VALID_NAMES:
282
287
  gfv[name] = self.gfactors.factor_value(name, year)
283
288
  # apply values to Records variables
@@ -0,0 +1,125 @@
1
+ // Title: 2017-law policy extrapolated into the future as if under pre-TCJA law
2
+ // Reform_File_Author: Martin Holmer and Cody Kallen
3
+ // Reform_Reference:
4
+ // Reform_Baseline: current_law_policy.json
5
+ // Reform_Description:
6
+ // - Switch to unchained CPI-U calculation of 2018+ policy parameter values (0)
7
+ // - Set pre-TCJA tax rates and brackets (1)
8
+ // - Set pre-TCJA handling of pass-through income (2)
9
+ // - Set pre-TCJA standard deduction and personal exemption (3)
10
+ // - Set pre-TCJA child tax credit (CTC) and additional CTC policy (4)
11
+ // - Set pre-TCJA other dependent credit policy parameters (5)
12
+ // - Set pre-TCJA AMT exemption parameters (6)
13
+ // - Set pre-TCJA above the line deduction policy (7)
14
+ // - Set pre-TCJA itemized deduction policy (8)
15
+ // Reform_Parameter_Map:
16
+ // - 0: parameter_indexing_CPI_offset
17
+ // - 1: II_rt?/II_brk? and PT_rt?/PT_brk?
18
+ // - 2: six PT_qbid_* parameters
19
+ // - 3: STD and II_em parameters
20
+ // - 4: CTC_* and ACTC_* parameters
21
+ // - 5: ODC_c parameter
22
+ // - 6: three different AMT_em* parameters
23
+ // - 7: three ALD_* parameters
24
+ // - 8: seven different ID_* parameters
25
+ // - 9: many parameters not altered by TCJA except for indexing change
26
+ // NOTE: this reform projects pre-TCJA 2017 parameter values forward using the
27
+ // unchained CPI-U price index.
28
+ {
29
+ "parameter_indexing_CPI_offset": {"2017": 0.0025},
30
+ "II_rt1": {"2018": 0.10},
31
+ "II_brk1": {"2017": [9325, 18650, 9325, 13350, 18650]},
32
+ "II_rt2": {"2018": 0.15},
33
+ "II_brk2": {"2017": [37950, 75900, 37950, 50800, 75900]},
34
+ "II_rt3": {"2018": 0.25},
35
+ "II_brk3": {"2017": [91900, 153100, 76550, 131200, 153100]},
36
+ "II_rt4": {"2018": 0.28},
37
+ "II_brk4": {"2017": [191650, 233350, 116675, 212500, 233350]},
38
+ "II_rt5": {"2018": 0.33},
39
+ "II_brk5": {"2017": [416700, 416700, 208350, 416700, 416700]},
40
+ "II_rt6": {"2018": 0.35},
41
+ "II_brk6": {"2017": [418400, 470700, 235350, 444550, 470700]},
42
+ "II_rt7": {"2018": 0.396},
43
+ "PT_rt1": {"2018": 0.10},
44
+ "PT_brk1": {"2017": [9325, 18650, 9325, 13350, 18650]},
45
+ "PT_rt2": {"2018": 0.15},
46
+ "PT_brk2": {"2017": [37950, 75900, 37950, 50800, 75900]},
47
+ "PT_rt3": {"2018": 0.25},
48
+ "PT_brk3": {"2017": [91900, 153100, 76550, 131200, 153100]},
49
+ "PT_rt4": {"2018": 0.28},
50
+ "PT_brk4": {"2017": [191650, 233350, 116675, 212500, 233350]},
51
+ "PT_rt5": {"2018": 0.33},
52
+ "PT_brk5": {"2017": [416700, 416700, 208350, 416700, 416700]},
53
+ "PT_rt6": {"2018": 0.35},
54
+ "PT_brk6": {"2017": [418400, 470700, 235350, 444550, 470700]},
55
+ "PT_rt7": {"2018": 0.396},
56
+ "PT_qbid_rt": {"2018": 0},
57
+ "PT_qbid_taxinc_thd": {"2018": [0, 0, 0, 0, 0]},
58
+ "PT_qbid_taxinc_gap": {"2018": [1, 1, 1, 1, 1]},
59
+ "PT_qbid_w2_wages_rt": {"2018": 0},
60
+ "PT_qbid_alt_w2_wages_rt": {"2018": 0},
61
+ "PT_qbid_alt_property_rt": {"2018": 0},
62
+ "STD": {"2017": [6350, 12700, 6350, 9350, 12700]},
63
+ "II_em": {"2017": 4050},
64
+ "CTC_c": {"2018": 1000},
65
+ "CTC_ps": {"2018": [75000, 110000, 55000, 75000, 75000]},
66
+ "ACTC_c": {"2018": 1000},
67
+ "ACTC_Income_thd": {"2018": 3000},
68
+ "ODC_c": {"2018": 0},
69
+ "AMT_em": {"2017": [54300, 84500, 42250, 54300, 84500]},
70
+ "AMT_em_ps": {"2017": [120700, 160900, 80450, 120700, 160900]},
71
+ "AMT_em_pe": {"2017": 249450},
72
+ "ALD_BusinessLosses_c": {"2017": [9e99, 9e99, 9e99, 9e99, 9e99]},
73
+ "ALD_AlimonyPaid_hc": {"2019": 0},
74
+ "ALD_AlimonyReceived_hc": {"2019": 1},
75
+ "ALD_DomesticProduction_hc": {"2018": 0},
76
+ "ID_prt": {"2018": 0.03},
77
+ "ID_crt": {"2018": 0.80},
78
+ "ID_Charity_crt_cash": {"2018": 0.5},
79
+ "ID_Casualty_hc": {"2018": 0},
80
+ "ID_AllTaxes_c": {"2018": [9e99, 9e99, 9e99, 9e99, 9e99]},
81
+ "ID_Miscellaneous_hc": {"2018": 0},
82
+ "ID_Medical_frt": {"2017": 0.1},
83
+
84
+ "ALD_Dependents_Child_c": {"2017": 0},
85
+ "ALD_Dependents_Elder_c": {"2017": 0},
86
+ "II_em_ps": {"2017": [261500, 313800, 156900, 287650, 313800]},
87
+ "STD_Dep": {"2017": 1050},
88
+ "STD_Aged": {"2017": [1550, 1250, 1250, 1550, 1550]},
89
+ "II_credit": {"2017": [0, 0, 0, 0, 0]},
90
+ "II_credit_ps": {"2017": [0, 0, 0, 0, 0]},
91
+ "II_credit_nr": {"2017": [0, 0, 0, 0, 0]},
92
+ "II_credit_nr_ps": {"2017": [0, 0, 0, 0, 0]},
93
+ "ID_Medical_c": {"2017": [9e99, 9e99, 9e99, 9e99, 9e99]},
94
+ "ID_StateLocalTax_c": {"2017": [9e99, 9e99, 9e99, 9e99, 9e99]},
95
+ "ID_RealEstate_c": {"2017": [9e99, 9e99, 9e99, 9e99, 9e99]},
96
+ "ID_InterestPaid_c": {"2017": [9e99, 9e99, 9e99, 9e99, 9e99]},
97
+ "ID_Charity_c": {"2017": [9e99, 9e99, 9e99, 9e99, 9e99]},
98
+ "ID_Casualty_c": {"2017": [9e99, 9e99, 9e99, 9e99, 9e99]},
99
+ "ID_Miscellaneous_c": {"2017": [9e99, 9e99, 9e99, 9e99, 9e99]},
100
+ "ID_ps": {"2017": [261500, 313800, 156900, 287650, 313800]},
101
+ "ID_BenefitSurtax_em": {"2017": [0, 0, 0, 0, 0]},
102
+ "ID_c": {"2017": [9e99, 9e99, 9e99, 9e99, 9e99]},
103
+ "CG_brk1": {"2017": [37950, 75900, 37950, 50800, 75900]},
104
+ "CG_brk2": {"2017": [418400, 470700, 235350, 444550, 470700]},
105
+ "CG_brk3": {"2017": [9e99, 9e99, 9e99, 9e99, 9e99]},
106
+ "AMT_CG_brk1": {"2017": [37950, 75900, 37950, 50800, 75900]},
107
+ "AMT_CG_brk2": {"2017": [418400, 470700, 235350, 444550, 470700]},
108
+ "AMT_CG_brk3": {"2017": [9e99, 9e99, 9e99, 9e99, 9e99]},
109
+ "CG_ec": {"2017": 0},
110
+ "AMT_child_em": {"2017": 7500},
111
+ "AMT_brk1": {"2017": 187800},
112
+ "EITC_c": {"2017": [510, 3400, 5616, 6318]},
113
+ "EITC_ps": {"2017": [8340, 18340, 18340, 18340]},
114
+ "EITC_ps_MarriedJ": {"2017": [5600, 5600, 5600, 5600]},
115
+ "EITC_InvestIncome_c": {"2017": 3450},
116
+ "ETC_pe_Single": {"2017": 66},
117
+ "ETC_pe_Married": {"2017": 132},
118
+ "CTC_new_ps": {"2017": [0, 0, 0, 0, 0]},
119
+ "FST_AGI_thd_lo": {"2017": [1.0e6, 1.0e6, 0.5e6, 1.0e6, 1.0e6]},
120
+ "FST_AGI_thd_hi": {"2017": [2.0e6, 2.0e6, 1.0e6, 2.0e6, 2.0e6]},
121
+ "AGI_surtax_thd": {"2017": [9e99, 9e99, 9e99, 9e99, 9e99]},
122
+ "UBI_u18": {"2017": 0},
123
+ "UBI_1820": {"2017": 0},
124
+ "UBI_21": {"2017": 0}
125
+ }
@@ -0,0 +1,10 @@
1
+ RECID,c00100,standard,c04800,iitax,payrolltax
2
+ 11,30000.00,6723.42,18988.43,554.60,4590.00
3
+ 12,60000.00,6723.42,48988.43,5935.27,9180.00
4
+ 13,460000.00,6723.42,453276.58,132718.27,32754.80
5
+ 21,60000.00,13446.83,29400.57,-2177.25,9180.00
6
+ 22,120000.00,13446.83,89400.57,8226.47,18360.00
7
+ 23,240000.00,13446.83,209400.57,44745.39,36720.00
8
+ 31,30000.00,9899.84,11523.86,-3556.63,4590.00
9
+ 32,60000.00,9899.84,41523.86,2721.83,9180.00
10
+ 33,120000.00,9899.84,101523.86,17870.48,18360.00
@@ -0,0 +1,78 @@
1
+ // Title: American Rescue Plan Act
2
+ // Reform_File_Author:
3
+ // Reform_Reference: https://www.congress.gov/117/bills/hr1319/BILLS-117hr1319enr.pdf
4
+ // Reform_Baseline: policy_current_law.json
5
+ // Reform_Description:
6
+ // - Recovery Rebate Credit (1)
7
+ // - Exclusion for UI benefits from taxable income (2)
8
+ // - Expansion of child tax credit (3)
9
+ // - Expansion of EITC (4)
10
+ // - Expansion of child and dependent care credit (5)
11
+ // - Extension of noncorporate business loss limitation (6)
12
+ // Reform_Parameter_Map:
13
+ // - 1: RRC_*
14
+ // - 2: UI_*
15
+ // - 3: CTC_*
16
+ // - 4: EITC_*
17
+ // - 5: CDCC_*
18
+ // - 6: ALD_BusinessLosses_c
19
+ {
20
+ "RRC_c": {"2021": 1400,
21
+ "2022": 0},
22
+ "RRC_ps": {"2021": [75000, 150000, 75000, 112500, 150000],
23
+ "2022": [0, 0, 0, 0, 0]},
24
+ "RRC_pe": {"2021": [80000, 160000, 80000, 120000, 160000],
25
+ "2022": [0, 0, 0, 0, 0]},
26
+ "UI_em": {"2020": 10200,
27
+ "2021": 0},
28
+ "UI_thd": {"2020": [150000, 150000, 150000, 150000, 150000],
29
+ "2021": [0, 0, 0, 0, 0]},
30
+ "CTC_is_refundable": {"2021": true,
31
+ "2022": false},
32
+ "ODC_is_refundable": {"2021": true,
33
+ "2022": false},
34
+ "CTC_include17": {"2021": true,
35
+ "2022": false},
36
+ "CTC_new_c": {"2021": 1000,
37
+ "2022": 0},
38
+ "CTC_new_c_under6_bonus": {"2021": 600,
39
+ "2022": 0},
40
+ "CTC_new_for_all": {"2021": true,
41
+ "2022": false},
42
+ "CTC_new_ps": {"2021": [75000, 150000, 75000, 112500, 150000],
43
+ "2022": [0, 0, 0, 0, 0]},
44
+ "CTC_new_prt": {"2021": 0.05,
45
+ "2022": 0},
46
+ "EITC_c": {"2021": [1502, 3618, 5980, 6728],
47
+ "2022": [560, 3733, 6064, 6935]},
48
+ "EITC_rt": {"2021": [0.153, 0.34, 0.4, 0.45],
49
+ "2022": [0.0765, 0.34, 0.4, 0.45]},
50
+ "EITC_ps": {"2021": [11610, 19464.12, 19464.12, 19464.12],
51
+ "2022": [9160, 20130, 20130, 20130]},
52
+ "EITC_ps_MarriedJ": {"2021": [5940, 5950, 5950, 5950],
53
+ "2022": [6130, 6130, 6130, 6130]},
54
+ "EITC_MinEligAge": {"2021": 19,
55
+ "2022": 25},
56
+ "EITC_MaxEligAge": {"2021": 125,
57
+ "2022": 64},
58
+ "EITC_InvestIncome_c": {"2021": 10000, "2022": 10300},
59
+ "EITC_sep_filers_elig": {"2021": true},
60
+ "CDCC_c": {"2021": 8000,
61
+ "2022": 3000},
62
+ "CDCC_ps": {"2021": 125000,
63
+ "2022": 15000},
64
+ "CDCC_ps2": {"2021": 400000,
65
+ "2022": 9e+99},
66
+ "CDCC_crt": {"2021": 0.5,
67
+ "2022": 0.35},
68
+ "CDCC_refundable": {"2021": true,
69
+ "2022": false},
70
+ "ALD_BusinessLosses_c": {"2026": [283535.22, 567070.42, 283535.22, 283535.22, 567070.42],
71
+ "2027": [9e+99, 9e+99, 9e+99, 9e+99, 9e+99]}
72
+ }
73
+
74
+ // Provisions not modeled
75
+ // - Federal student loan debt forgiven excluded from AGI for 2021-2025
76
+ // - Temporary credits for sick leave and family leave for self-employed filers
77
+ // - Business and employer provisions
78
+ // - Health insurance premium credit changes
@@ -0,0 +1,10 @@
1
+ RECID,c00100,standard,c04800,iitax,payrolltax
2
+ 11,30000,12400,17600,114.5,4590
3
+ 12,60000,12400,47600,4462,9180
4
+ 13,460000,12400,447600,131455,32754.8
5
+ 21,60000,24800,35200,-3771,9180
6
+ 22,120000,24800,95200,4924,18360
7
+ 23,240000,24800,215200,35807,36720
8
+ 31,30000,18650,11350,-4543.93,4590
9
+ 32,60000,18650,41350,880,9180
10
+ 33,120000,18650,101350,13537,18360
@@ -0,0 +1,23 @@
1
+ // Title: Brown-Khanna Grow American Incomes Now (GAIN) Act of 2017
2
+ // Reform_File_Author: Matt Jensen
3
+ // Reform_Reference: https://khanna.house.gov/media/press-releases/release-sen-sherrod-brown-and-rep-ro-khanna-introduce-landmark-legislation
4
+ // Reform_Baseline: 2017_law.json
5
+ // Reform_Description:
6
+ // - Increase EITC maximum amounts (1)
7
+ // - Increase EITC phase-in rates (2)
8
+ // - Increase EITC phase-out rate for childless filing units (3)
9
+ // - Increase EITC phase-out start for childless filing units (4)
10
+ // - Lower EITC minimim eligibility age for childless f.units from 25 to 21 (5)
11
+ // Reform_Parameter_Map:
12
+ // - 1: EITC_c
13
+ // - 2: EITC_rt
14
+ // - 3: EITC_prt
15
+ // - 4: EITC_ps
16
+ // - 5: EITC_MinEligAge
17
+ {
18
+ "EITC_c": {"2017": [3000, 6528, 10783, 12131]},
19
+ "EITC_rt": {"2017": [0.3, 0.6258, 0.768, 0.864]},
20
+ "EITC_prt": {"2017": [0.1598, 0.1598, 0.2106, 0.2106]},
21
+ "EITC_ps": {"2017": [18340, 18340, 18340, 18340]},
22
+ "EITC_MinEligAge": {"2017": 21}
23
+ }
@@ -0,0 +1,10 @@
1
+ RECID,c00100,standard,c04800,iitax,payrolltax
2
+ 11,30000.00,6723.42,18988.43,-930.89,4590.00
3
+ 12,60000.00,6723.42,48988.43,5935.27,9180.00
4
+ 13,460000.00,6723.42,453276.58,132718.27,32754.80
5
+ 21,60000.00,13446.83,29400.57,-6296.60,9180.00
6
+ 22,120000.00,13446.83,89400.57,8226.47,18360.00
7
+ 23,240000.00,13446.83,209400.57,44745.39,36720.00
8
+ 31,30000.00,9899.84,11523.86,-6868.57,4590.00
9
+ 32,60000.00,9899.84,41523.86,2294.87,9180.00
10
+ 33,120000.00,9899.84,101523.86,17870.48,18360.00
@@ -0,0 +1,40 @@
1
+ // Title: Coronavirus Aid, Relief, and Economic Security Act
2
+ // Reform_File_Author: Jason DeBacker
3
+ // Reform_Reference: https://www.congress.gov/116/bills/hr748/BILLS-116hr748enr.pdf
4
+ // Reform_Baseline: policy_current_law.json
5
+ // Reform_Description:
6
+ // - Raise ceiling on chartitable deductions for itemizers (1)
7
+ // - Allows an above the line deductions for charitable contributions (2)
8
+ // - Limit charitable deductions for non-itemizers to $300 (3)
9
+ // - Provide recovery rebate credits of $1200 per adult and $500 per child (4)
10
+ // Reform_Parameter_Map:
11
+ // - 1: ID_Charity_crt_cash
12
+ // - 2: STD_allow_charity_ded_nonitemizers
13
+ // - 3: STD_charity_ded_nonitemizers_max
14
+ // - 4: RRC_*
15
+ {
16
+ "ID_Charity_crt_cash": {"2020": 1.0, "2022": 0.6},
17
+ "STD_allow_charity_ded_nonitemizers": {"2020": true, "2022": false},
18
+ "STD_charity_ded_nonitemizers_max": {
19
+ "2020": [300, 600, 300, 300, 300],
20
+ "2022": [ 0, 0, 0, 0, 0]
21
+ },
22
+ "RRC_ps": {"2020": [75000, 150000, 75000, 112500,150000],
23
+ "2021": [75000, 150000, 75000, 112500,150000]},
24
+ "RRC_prt": {"2020": 0.05, "2021": 0},
25
+ "RRC_c_unit": {"2020": [1200, 2400, 1200, 1200, 1200],
26
+ "2021": [0, 0, 0, 0, 0]},
27
+ "RRC_c_kids": {"2020": 500, "2021":0}
28
+ }
29
+
30
+ // Provisions not modeled
31
+ // - Temporary waiver of required minimum distribution rules for certain retirement plan accounts
32
+ // - Exclusion of certain employer payments of student loans
33
+ // - Employee retention credit for employers subject to closure due to COVID-19
34
+ // - Delay of payment of employer payroll taxes
35
+ // - Modifications of net operating losses
36
+ // - Modification of limitation on losses for taxpayers other than corporations
37
+ // - Modification of credit for prior year minimum tax liability of corporations
38
+ // - Modifications of limitation on business interest
39
+ // - Technical amendmentsregardign qualified improvement property
40
+ // - Temporary exception from excise tax for alcohol used to produce hand sanitizer
@@ -0,0 +1,10 @@
1
+ RECID,c00100,standard,c04800,iitax,payrolltax
2
+ 11,30000,12400,17600,714.5,4590
3
+ 12,60000,12400,47600,5062,9180
4
+ 13,460000,12400,447600,131455,32754.8
5
+ 21,60000,24800,35200,-2571,9180
6
+ 22,120000,24800,95200,6124,18360
7
+ 23,240000,24800,215200,35807,36720
8
+ 31,30000,18650,11350,-3943.93,4590
9
+ 32,60000,18650,41350,1480,9180
10
+ 33,120000,18650,101350,14137,18360
@@ -0,0 +1,15 @@
1
+ // Title: Consolidated Appropriations ACt, 2021
2
+ // Reform_File_Author: Jason DeBacker
3
+ // Reform_Reference: https://www.congress.gov/116/plaws/publ260/PLAW-116publ260.pdf
4
+ // Reform_Baseline: policy_current_law.json
5
+ // Reform_Description:
6
+ // - Increases recovery rebate credit amount from the CARES Act by $600 for each eligible person (1)
7
+ // Reform_Parameter_Map:
8
+ // - 1: RRC_*
9
+ {
10
+ "RRC_c_unit": {"2020": [1800, 3600, 1800, 1800, 1800],
11
+ "2021": [0, 0, 0, 0, 0]},
12
+ "RRC_c_kids": {"2020": 1100, "2021":0}
13
+ }
14
+
15
+
@@ -0,0 +1,10 @@
1
+ RECID,c00100,standard,c04800,iitax,payrolltax
2
+ 11,30000.00,12400.00,17600.00,114.50,4590.00
3
+ 12,60000.00,12400.00,47600.00,4462.00,9180.00
4
+ 13,460000.00,12400.00,447600.00,131455.00,32754.80
5
+ 21,60000.00,24800.00,35200.00,-3771.00,9180.00
6
+ 22,120000.00,24800.00,95200.00,4924.00,18360.00
7
+ 23,240000.00,24800.00,215200.00,35807.00,36720.00
8
+ 31,30000.00,18650.00,11350.00,-4543.93,4590.00
9
+ 32,60000.00,18650.00,41350.00,880.00,9180.00
10
+ 33,120000.00,18650.00,101350.00,13537.00,18360.00
@@ -0,0 +1,36 @@
1
+ // Title: The Social Security 2100 Act: Rep. John Larson
2
+ // Reform_File_Author: Anderson Frailey
3
+ // Reform_Reference: https://larson.house.gov/social-security-2100
4
+ // SSA Analysis: https://www.ssa.gov/OACT/solvency/LarsonBlumenthalVanHollen_20190130.pdf
5
+ // Reform_Baseline: policy_current_law.json
6
+ // Reform_Description:
7
+ // - Raise threshold for Social Security benefit taxability to (1)
8
+ // - Make wage and self-employment income above $400,000 subject to FICA taxes (2)
9
+ // - Phase in an increase to the contribution rate starting in 2020 (3)
10
+ // Reform_Parameter_Map:
11
+ // - 1: SS_thd50, SS_thd85
12
+ // - 2: SS_Earnings_thd
13
+ // - 3: FICA_ss_trt_employer, FICA_ss_trt_employee
14
+ {
15
+ "SS_thd50": {"2019": [50000, 100000, 50000, 50000, 50000]},
16
+ "SS_thd85": {"2019": [50000, 100000, 50000, 50000, 50000]},
17
+ "SS_Earnings_thd": {"2019": 400000},
18
+ "FICA_ss_trt_employer": {"2020": 0.0625,
19
+ "2021": 0.063,
20
+ "2022": 0.0635,
21
+ "2023": 0.064,
22
+ "2024": 0.0645,
23
+ "2025": 0.065,
24
+ "2026": 0.0655,
25
+ "2027": 0.066,
26
+ "2028": 0.0665},
27
+ "FICA_ss_trt_employee": {"2020": 0.0625,
28
+ "2021": 0.063,
29
+ "2022": 0.0635,
30
+ "2023": 0.064,
31
+ "2024": 0.0645,
32
+ "2025": 0.065,
33
+ "2026": 0.0655,
34
+ "2027": 0.066,
35
+ "2028": 0.0665}
36
+ }
@@ -0,0 +1,10 @@
1
+ RECID,c00100,standard,c04800,iitax,payrolltax
2
+ 11,30000,12400,17600,114.5,4620
3
+ 12,60000,12400,47600,4462,9240
4
+ 13,460000,12400,447600,131455,40392.5
5
+ 21,60000,24800,35200,-3771,9240
6
+ 22,120000,24800,95200,4924,18480
7
+ 23,240000,24800,215200,35807,36960
8
+ 31,30000,18650,11350,-4543.93,4620
9
+ 32,60000,18650,41350,880,9240
10
+ 33,120000,18650,101350,13537,18480
@@ -0,0 +1,22 @@
1
+ Policy Reform Files
2
+ -------------------
3
+
4
+ This directory contains examples of policy reform files that can be
5
+ combined and modified to create your own policy reform files that
6
+ are stored on your local computer.
7
+
8
+ Such policy reform files can be analyzed on your local computer by
9
+ using the `tc` command-line interface to Tax-Calculator as described
10
+ in the [user
11
+ guide](https://PSLmodels.github.io/Tax-Calculator/uguide.html) or by
12
+ writing your own Python programs that import the Tax-Calculator
13
+ `taxcalc` package as described in the
14
+ [cookbook](https://PSLmodels.github.io/Tax-Calculator/cookbook.html).
15
+
16
+ [This
17
+ document](https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/reforms/REFORMS.md#how-to-specify-a-tax-reform-in-a-json-policy-reform-file)
18
+ provides access to several reform files that represent recent tax
19
+ reform proposals and guidelines about how to prepare your own reform
20
+ files. Look in particular at the
21
+ [FAQ](https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/reforms/TCJA.md#tcja-faq)
22
+ on TCJA-related reforms.
@@ -0,0 +1,92 @@
1
+ # HOW TO SPECIFY A TAX REFORM IN A JSON POLICY REFORM FILE
2
+
3
+ A tax reform consists of a collection of reform provisions. There is
4
+ a way to specify in a text file the collection of reform provisions
5
+ that make up a reform proposal. When stored on your local computer,
6
+ such reform files can be used to estimate reform effects by using the
7
+ `--reform` option of the Tax-Calculator command-line tool `tc` or by
8
+ using them in a Python program that imports the Tax-Calculator
9
+ `taxcalc` package as described in the [user
10
+ guide](https://PSLmodels.github.io/Tax-Calculator/uguide.html).
11
+
12
+ Here we provide links to several reform files that specify historical
13
+ reform proposals, and then provide a more general explanation of the
14
+ structure and syntax of reform files.
15
+
16
+ ## Tax Reforms Defined Relative to TCJA Policy
17
+
18
+ Note that the current-law (that is, TCJA) values of each tax policy
19
+ parameter are shown in the [Policy Parameters section of the user
20
+ documentation](https://PSLmodels.github.io/Tax-Calculator/index.html#pol).
21
+
22
+ - [Pre-TCJA Policy](2017_law.json)
23
+
24
+ - [Larson Social Security 2100 Act](Larson2019.json)
25
+
26
+ - [Sanders-DeFazio Social Security Expansion Act](SandersDeFazio.json)
27
+
28
+ ## Tax Reforms Defined Relative to pre-TCJA Policy
29
+
30
+ Read the answer to [Question 1 in this
31
+ FAQ](https://github.com/PSLmodels/Tax-Calculator/issues/1830)
32
+ to see how to use the compound-reform techique to analyze the reforms
33
+ in this section.
34
+
35
+ - [2016 Trump Campaign Tax Plan](Trump2016.json)
36
+
37
+ - [2016 Clinton Campaign Tax Plan](Clinton2016.json)
38
+
39
+ - [2017 Trump Administration Tax Plan](Trump2017.json)
40
+
41
+ - [2017 Brown-Khanna GAIN Act](BrownKhanna.json)
42
+
43
+ - [2017 Simplifying America's Tax System (Renacci)](Renacci.json)
44
+
45
+ - [2017 Tax Cuts and Jobs Act, as passed by Congress](TCJA.json)
46
+
47
+ ## Structure and Syntax of Reform Files
48
+
49
+ The reform files are JSON files. JSON, which stands for JavaScript
50
+ Object Notation, is an easy and widely used way to specify structured
51
+ information. First we provide an abstract example of a JSON reform
52
+ file with some explanation, and then we provide links to a few
53
+ hypothetical reform files that illustrate their expressive range.
54
+
55
+ Here is an abstract example of a tax reform proposal that consists of
56
+ several reform provisions. The structure of this file is as follows:
57
+
58
+ ```
59
+ {
60
+ <parameter_name>: {<calyear>: <parameter-value>,
61
+ ...,
62
+ <calyear>: <parameter-value>},
63
+ <parameter_name>: {<calyear>: <parameter-value>},
64
+ ...,
65
+ <parameter_name>: {<calyear>: <parameter-value>,
66
+ ...,
67
+ <calyear>: <parameter-value>}
68
+ }
69
+ ```
70
+
71
+ Notice each pair of reform provision is separated by commas.
72
+ Each reform provision may have one or multiple year-value pairs.
73
+ Also, the <parameter_name> and <calyear> must be enclosed in quotes (").
74
+ The <parameter_value> is NOT enclosed in brackets when
75
+ the <parameter_value> is a scalar and is enclosed in single brackets when
76
+ the <parameter_value> is a vector. The most common vector of values
77
+ is one that varies by filing status (MARS) with the vector containing
78
+ five parameter values for single, married filing joint, married filing
79
+ separate, head of household, widow.
80
+
81
+ The following hypothetical payroll tax reforms, all of which are
82
+ defined relative to pre-TCJA policy, illustrate the flexibility that
83
+ reform files provide in expressing complex tax reforms.
84
+
85
+ [Raise OASDI and HI payroll tax rates](ptaxes0.json)
86
+
87
+ [Raise OASDI maximum taxable earnings](ptaxes1.json)
88
+
89
+ [Eliminate OASDI maximum taxable earnings](ptaxes2.json)
90
+
91
+ [Raise Additional Medicare Tax (Form 8959) tax rate and
92
+ thresholds and index thresholds](ptaxes3.json)
@@ -0,0 +1,61 @@
1
+ // Title: Simplifying America's Tax System (Renacci)
2
+ // Reform_File_Author: Hank Doupe
3
+ // Reform_Reference: http://renacci.house.gov/_cache/files/7eeb81fe-f245-42c0-8de4-055ebf4c12e9/sats-white-paper.pdf
4
+ // Reform_Baseline: 2017_law.json
5
+ // Reform_Description:
6
+ // - Number of brackets reduced to 3 (1)
7
+ // - Standard deduction increased (2)
8
+ // - Personal exemption increased (3)
9
+ // - Eliminate all deductions except charitable and mortgage interest (4)
10
+ // - Cap mortgage interest deduction (4)
11
+ // This limit was calculated by multiplying $500,000 by
12
+ // the current APR (%3.946 as of 5/24/2017)
13
+ // - Repeal Alternative Minimum Tax (5)
14
+ // - Capital gains and dividends are treated the same as ordinary income (6)
15
+ // - Increase in EITC (7)
16
+ // Reform_Parameter_Map:
17
+ // 1: II_rt*, II_brk*
18
+ // 2: STD
19
+ // 3: II_em
20
+ // 4: ID*
21
+ // 5: AMT_rt*
22
+ // 6: CG_nodiff
23
+ // 7: EITC_c
24
+ {
25
+ "II_rt1": {"2017": 0.1},
26
+ "II_brk1": {"2017": [50000,100000,50000,50000,50000]},
27
+ "II_rt2": {"2017": 0.25},
28
+ "II_brk2": {"2017": [750000,1500000,750000,750000,750000]},
29
+ "II_rt3": {"2017": 0.35},
30
+ "II_brk3": {"2017": [9e99,9e99,9e99,9e99,9e99]},
31
+ "II_rt4": {"2017": 0.35},
32
+ "II_brk4": {"2017": [9e99,9e99,9e99,9e99,9e99]},
33
+ "II_rt5": {"2017": 0.35},
34
+ "II_brk5": {"2017": [9e99,9e99,9e99,9e99,9e99]},
35
+ "II_rt6": {"2017": 0.35},
36
+ "II_brk6": {"2017": [9e99,9e99,9e99,9e99,9e99]},
37
+ "II_rt7": {"2017": 0.35},
38
+ "II_brk7": {"2017": [9e99,9e99,9e99,9e99,9e99]},
39
+ "STD": {"2017": [15000,30000,15000,15000,15000]},
40
+ "II_em": {"2017": 5000},
41
+ "ID_StateLocalTax_hc": {"2017": 1},
42
+ "ID_Medical_hc": {"2017": 1},
43
+ "ID_Casualty_hc": {"2017": 1},
44
+ "ID_Miscellaneous_hc": {"2017": 1},
45
+ "ID_RealEstate_hc": {"2017": 1},
46
+ "ID_InterestPaid_c": {
47
+ "2017": [19730.0, 19730.0, 19730.0, 19730.0, 19730.0]
48
+ },
49
+ "AMT_rt1": {"2017": 0},
50
+ "AMT_rt2": {"2017": 0},
51
+ "CG_nodiff": {"2017": true},
52
+ "EITC_c": {"2017": [1020, 4760, 7862, 8845]}
53
+ }
54
+ // Note: Due to lack of detail, data, or modeling capability,
55
+ // many provisions cannot be scored.
56
+ // These omitted provisions include:
57
+ // - Repeal of the corporate income tax
58
+ // - 7% tax on business activities (credit-invoice value-added tax)
59
+ // - One time tax on accumulated foreign earnings abroad
60
+ // - The following was included in the feedback section:
61
+ // - 9. Considers a border-adjustable-goods-and-services tax
@@ -0,0 +1,10 @@
1
+ RECID,c00100,standard,c04800,iitax,payrolltax
2
+ 11,30000.00,15882.08,8823.89,-917.61,4590.00
3
+ 12,60000.00,15882.08,38823.89,2082.39,9180.00
4
+ 13,460000.00,15882.08,444117.92,103088.44,32754.80
5
+ 21,60000.00,31764.18,7059.70,-5920.62,9180.00
6
+ 22,120000.00,31764.18,67059.70,1605.97,18360.00
7
+ 23,240000.00,31764.18,187059.70,30882.84,36720.00
8
+ 31,30000.00,15882.08,3529.86,-5796.01,4590.00
9
+ 32,60000.00,15882.08,33529.86,552.99,9180.00
10
+ 33,120000.00,15882.08,93529.86,14016.42,18360.00