-
-
Notifications
You must be signed in to change notification settings - Fork 156
/
tc_overview.htmx
222 lines (188 loc) · 7.55 KB
/
tc_overview.htmx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<!DOCTYPE html>
<!-- #WARN# -->
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link href="docs.css" rel="stylesheet">
<title>Tax-Calculator</title>
</head>
<body>
<h1>Tax-Calculator</h1>
<!-- #NAVBAR# -->
<h3>Structural Overview</h3>
<p>
Tax-Calculator has been designed using
<a href="https://www.programiz.com/python-programming/object-oriented-programming"
target="_blank">object-oriented programming (OOP)</a>
principles. There are seven classes and a collection of global
utility functions, but most Python programming involves using
only a few methods in three classes.
</p>
<h4>Quick Summary</h4>
<p>
Typical Tax-Calculator usage involves creating two Calculator class
objects: both containing the same sample of filing units (that is,
Records class object), but each containing a different tax policy
(that is, Policy class object). The idea is to compare the
calculated tax liabilities of the sample units under the two
different tax policies, one of which is usually current-law policy
and the other is a tax reform of interest.
</p>
<ul>
<li><p>
<b>rec</b> → Records class object.<br />
Created by <b>Records()</b> when containing IRS-SOI-PUF-derived
filing-unit data or created by <b>Records.cps_constructor()</b>
when containing CPS-derived filing-unit data.
</p></li>
<li><p>
<b>clp</b> → Policy class object containing parameters that
characterize current-law policy.<br />
Created by <b>Policy()</b>.
</p></li>
<li><p>
<b>ref</b> → Policy class object containing parameters that
characterize a tax reform.<br />
Created using a Python dictionary <b>refdict</b> representing the
reform by using the <b>implement_reform(refdict)</b> method on a
Policy object created by <b>Policy()</b>. Or created using a JSON
file <b>filename</b> representing the reform by using the
<b>implement_reform(Policy.read_json_reform(filename))</b>
method on a Policy object created by <b>Policy()</b>.
</p></li>
<li><p>
<b>calc_clp</b> → Calculator class object for current-law policy.<br />
Created by <b>Calculator(records=rec, policy=clp)</b>.
</p></li>
<li><p>
<b>calc_ref</b> → Calculator class object for reform policy.<br />
Created by <b>Calculator(records=rec, policy=ref)</b>.
</p></li>
<li><p>
<b>calc_all()</b> → Calculator class method that computes tax
liability (and many intermediate variables such as AGI) for each
filing-unit.
</p></li>
<li><p>
<b>itax_clp</b> → Variable containing aggregate income tax
liebility under current-law policy.<br />
Created by <b>weighted_total('iitax')</b> method called
on <b>calc_clp</b> object after <b>calc_all()</b> called.
</p></li>
<li><p>
<b>diff_table</b> → Pandas DataFrame object containing
reform-minus-current-law difference table for income tax liability
by expanded-income deciles.<br />
Created by
<b>calc_clp.difference_table(calc_ref, 'weighted_deciles', 'iitax')</b>
method called after <b>calc_all()</b> has been called on both
Calculator objects.
</p></li>
</ul>
<p>
For examples of Python scripts that use these classes and methods, see
the <a href="https://pslmodels.github.io/Tax-Calculator/cookbook.html"
target="_blank">Python Cookbook</a>.
</p>
<p>
For detailed documentation and source code for these three classes,
see:
<ul>
<li>
<a href="https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/records.py"
target="_blank">records.py</a> for Records class and all
its methods.
</li>
<li>
<a href="https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/policy.py"
target="_blank">policy.py</a> for Policy class and all
its methods.
</li>
<li>
<a href="https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/calculator.py"
target="_blank">calculator.py</a> for Calculator class and all
its methods.
</li>
</ul>
</p>
<h4>Complete Story</h4>
<p>
Tax-Calculator contains seven basic classes, and a collection of
global utility functions, that together provide the full range of
Tax-Calculator capabilities. Here is a description of their role in
Tax-Calculator and a link to each the detailed documentation and
source code for each class and all its methods.
</p>
<p><b>Classes</b></p>
<ul>
<li><p>
<b>Records</b> → Contains attributes of each filing unit.<br />
Documentation and source code are in
<a href="https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/records.py"
target="_blank">records.py</a>.
</p></li>
<li><p>
<b>GrowFactors</b> → Contains CBO-derived baseline annual
growth factors that are used to specify price inflation and wage
growth rates in the <b>Policy</b> class object and to specify
annual growth factors that are applied to monetary attributes of
the filing units in the <b>Records</b> class object.<br />
Documentation and source code are in
<a href="https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/growfactors.py"
target="_blank">growfactors.py</a>.
</p></li>
<li><p>
<b>Parameters</b> → Contains basic value extrapolation, revision,
and validation logic for time-varying parameters that can be any of
four types and can be either scalar-valued or vector-valued.<br />
Documentation and source code are in
<a href="https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/parameters.py"
target="_blank">parameters.py</a>.
</p></li>
<ul>
<li><p>
<b>Policy</b> → Derived from <b>Parameters</b> and contains tax
policy parameters.<br />
Documentation and source code are in
<a href="https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/policy.py"
target="_blank">policy.py</a>.
</p></li>
<li><p>
<b>GrowDiff</b> → Derived from <b>Parameters</b> and contains
differences from CBO-derived baseline growth factors in
the <b>GrowFactors</b> class object.<br />
Documentation and source code are in
<a href="https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/growdiff.py"
target="_blank">growdiff.py</a>.
</p></li>
<li><p>
<b>Consumption</b> → Derived from <b>Parameters</b> and contains
parameters related to consumption that are used in
the <b>Calculator</b> class object.<br />
Documentation and source code are in
<a href="https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/consumption.py"
target="_blank">consumption.py</a>.
</p></li>
</ul>
<li><p>
<b>Calculator</b> → Contains a <b>Policy</b> class object, a
<b>Records</b> class object, and a <b>Consumption</b> class object,
plus functions that contain the logic required to calculate income
and payroll tax liability for each filing unit.<br />
Documentation and source code are in
<a href="https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/calculator.py"
target="_blank">calculator.py</a> and in
<a href="https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/calcfunctions.py"
target="_blank">calcfunctions.py</a>.
</p></li>
</ul>
<p><b>Utilities</b></p>
<p>
Documentation and source code for the global utility functions are in
<a href="https://github.com/PSLmodels/Tax-Calculator/blob/master/taxcalc/utils.py"
target="_blank">utils.py</a>.
</p>
<!-- #TOP# -->
</body>
</html>