-
-
Notifications
You must be signed in to change notification settings - Fork 163
Open
Labels
Description
mtr() currently adds one cent to income to determine marginal tax rates, with an arg negative_finite_diff=False to make that negative one cent instead:
Tax-Calculator/taxcalc/calculator.py
Lines 542 to 546 in 1688c12
| def mtr(self, variable_str='e00200p', | |
| negative_finite_diff=False, | |
| zero_out_calculated_vars=False, | |
| calc_all_already_called=False, | |
| wrt_full_compensation=True): |
This is the most precise approach, but larger margins can have some advantages:
- Actual marginal labor supply decisions occur on margins larger than one cent (e.g. a raise or adding an hour per week; the range of likely margins could potentially be empirically determined)
- Tiny margins can miss discontinuities if not present in the microdata; for example, suppose a tax provision produced a cliff where going from $40,000 to $40,001 income raised tax liabilities by $1,000. If nobody in the microdata has income of exactly $40,000, this will show up as having no effect on labor supply, even though it would affect decisionmaking of people around the ~$39,000 to $41,000 income range deciding whether to cross that threshold.
- Smoother MTR curves can work better with general equilibrium models like OG-USA.
Some precedent:
- @nikhilwoodruff has found that UK analyses sometimes consider the "participation tax rate" in addition to MTRs, which add a larger amount to earnings for people currently with zero earnings
- @jpycroft mentioned that the EC has added a percentage to income (IIRC 0.5% or 3%) when calculating MTRs
I'd suggest adding an arg defaulting to 0.01, named something like finite_diff, margin, or marginal_amount. Over time this could also potentially replace the existing negative_finite_diff arg.