Recipe 2: Estimating Behavioral Response to Reform#
This is an advanced recipe that should be followed only after mastering the basic recipe. This recipe shows how to analyze the behavioral responses to a tax reform using the Behavioral-Responses behresp package.
import sys
if 'google.colab' in sys.modules:
!pip install -q condacolab &> /dev/null # dev/null suppresses output
import condacolab
condacolab.install()
import taxcalc as tc
import behresp
# use publicly-available CPS input file
recs = tc.Records.cps_constructor()
# specify baseline Calculator object representing current-law policy
pol = tc.Policy()
calc1 = tc.Calculator(policy=pol, records=recs)
CYR = 2020
# calculate aggregate current-law income tax liabilities for cyr
calc1.advance_to_year(CYR)
calc1.calc_all()
itax_rev1 = calc1.weighted_total('iitax')
# specify Calculator object for static analysis of reform policy
pol.implement_reform(tc.Policy.read_json_reform('github://PSLmodels:Tax-Calculator@master/docs/recipes/_static/reformA.json'))
calc2 = tc.Calculator(policy=pol, records=recs)
# calculate reform income tax liabilities for cyr under static assumptions
calc2.advance_to_year(CYR)
calc2.calc_all()
itax_rev2sa = calc2.weighted_total('iitax')
# specify assumed non-zero response-function substitution elasticity
response_elasticities = {'sub': 0.25}
# specify Calculator object for analysis of reform with behavioral responses
calc2 = tc.Calculator(policy=pol, records=recs)
calc2.advance_to_year(CYR)
_, df2br = behresp.response(calc1, calc2, response_elasticities)
# calculate reform income tax liabilities for CYR with behavioral response
itax_rev2br = (df2br['iitax'] * df2br['s006']).sum()
# print total income tax revenue estimates for CYR
# (estimates in billons of dollars)
print('{}_CURRENT_LAW_P__itax_rev($B)= {:.3f}'.format(CYR, itax_rev1 * 1e-9))
print('{}_REFORM_STATIC__itax_rev($B)= {:.3f}'.format(CYR, itax_rev2sa * 1e-9))
print('{}_REFORM_DYNAMIC_itax_rev($B)= {:.3f}'.format(CYR, itax_rev2br * 1e-9))
2020_CURRENT_LAW_P__itax_rev($B)= 773.587
2020_REFORM_STATIC__itax_rev($B)= 777.762
2020_REFORM_DYNAMIC_itax_rev($B)= 765.481
Create multi-year diagnostic tables for
baseline,
reform excluding behavioral responses, and
reform including behavioral responses
NUM_YEARS = 3 # number of diagnostic table years beginning with CYR
dtable1 = calc1.diagnostic_table(NUM_YEARS)
dtable2 = calc2.diagnostic_table(NUM_YEARS)
dvar_list3 = list()
year_list3 = list()
for year in range(CYR, CYR + NUM_YEARS):
calc1.advance_to_year(year)
calc2.advance_to_year(year)
_, df2br = behresp.response(calc1, calc2, response_elasticities)
dvar_list3.append(df2br)
year_list3.append(year)
dtable3 = tc.create_diagnostic_table(dvar_list3, year_list3)
Diagnostic table for baseline:
dtable1
| 2020 | 2021 | 2022 | |
|---|---|---|---|
| Returns (#m) | 204.480 | 207.080 | 209.660 |
| AGI ($b) | 11572.622 | 13242.423 | 13524.306 |
| Itemizers (#m) | 27.730 | 31.480 | 31.370 |
| Itemized Deduction ($b) | 752.076 | 872.182 | 888.632 |
| Standard Deduction Filers (#m) | 176.760 | 175.600 | 178.300 |
| Standard Deduction ($b) | 3076.415 | 3092.890 | 3226.870 |
| Personal Exemption ($b) | 0.000 | 0.000 | 0.000 |
| Taxable Income ($b) | 8619.530 | 10113.748 | 10314.117 |
| Regular Tax ($b) | 1498.038 | 1776.957 | 1834.985 |
| AMT Income ($b) | 10952.969 | 12526.730 | 12790.776 |
| AMT Liability ($b) | 0.537 | 1.451 | 0.635 |
| AMT Filers (#m) | 0.070 | 0.190 | 0.080 |
| Tax before Credits ($b) | 1498.575 | 1778.408 | 1835.620 |
| Refundable Credits ($b) | 638.295 | 809.248 | 82.664 |
| Nonrefundable Credits ($b) | 99.269 | 0.005 | 107.426 |
| Reform Surtaxes ($b) | 0.000 | 0.000 | 0.000 |
| Other Taxes ($b) | 75.874 | 83.585 | 87.423 |
| Ind Income Tax ($b) | 773.587 | 984.078 | 1661.161 |
| Payroll Taxes ($b) | 1217.941 | 1321.368 | 1415.259 |
| Combined Liability ($b) | 1991.528 | 2305.446 | 3076.420 |
| With Income Tax <= 0 (#m) | 135.400 | 127.590 | 95.550 |
| With Combined Tax <= 0 (#m) | 97.110 | 96.390 | 65.180 |
| UBI Benefits ($b) | 0.000 | 0.000 | 0.000 |
| Total Benefits, Consumption Value ($b) | 3617.042 | 3992.973 | 4070.218 |
| Total Benefits Cost ($b) | 3617.042 | 3992.973 | 4070.218 |
Diagnostic table for reform, excluding behavioral responses:
dtable2
| 2020 | 2021 | 2022 | |
|---|---|---|---|
| Returns (#m) | 204.480 | 207.080 | 209.660 |
| AGI ($b) | 11572.622 | 13242.423 | 13524.306 |
| Itemizers (#m) | 27.650 | 31.360 | 31.250 |
| Itemized Deduction ($b) | 749.594 | 868.819 | 885.545 |
| Standard Deduction Filers (#m) | 176.830 | 175.710 | 178.410 |
| Standard Deduction ($b) | 3077.754 | 3094.912 | 3228.827 |
| Personal Exemption ($b) | 375.177 | 384.158 | 406.780 |
| Taxable Income ($b) | 8371.745 | 9849.053 | 10037.888 |
| Regular Tax ($b) | 1499.863 | 1781.512 | 1841.608 |
| AMT Income ($b) | 10957.001 | 12531.560 | 12795.427 |
| AMT Liability ($b) | 0.544 | 1.479 | 0.634 |
| AMT Filers (#m) | 0.070 | 0.190 | 0.080 |
| Tax before Credits ($b) | 1500.407 | 1782.992 | 1842.242 |
| Refundable Credits ($b) | 641.613 | 809.248 | 86.370 |
| Nonrefundable Credits ($b) | 93.606 | 0.002 | 101.739 |
| Reform Surtaxes ($b) | 0.000 | 0.000 | 0.000 |
| Other Taxes ($b) | 75.874 | 83.585 | 87.423 |
| Ind Income Tax ($b) | 777.762 | 988.665 | 1669.764 |
| Payroll Taxes ($b) | 1217.941 | 1321.368 | 1415.259 |
| Combined Liability ($b) | 1995.703 | 2310.033 | 3085.023 |
| With Income Tax <= 0 (#m) | 137.560 | 129.830 | 98.410 |
| With Combined Tax <= 0 (#m) | 97.850 | 97.280 | 65.740 |
| UBI Benefits ($b) | 0.000 | 0.000 | 0.000 |
| Total Benefits, Consumption Value ($b) | 3617.042 | 3992.973 | 4070.218 |
| Total Benefits Cost ($b) | 3617.042 | 3992.973 | 4070.218 |
Diagnostic table for reform, including behavioral responses:
dtable3
| 2020 | 2021 | 2022 | |
|---|---|---|---|
| Returns (#m) | 204.480 | 207.080 | 209.660 |
| AGI ($b) | 11545.738 | 13208.545 | 13488.613 |
| Itemizers (#m) | 27.620 | 31.330 | 31.230 |
| Itemized Deduction ($b) | 748.317 | 867.116 | 884.082 |
| Standard Deduction Filers (#m) | 176.860 | 175.740 | 178.430 |
| Standard Deduction ($b) | 3078.314 | 3095.586 | 3229.182 |
| Personal Exemption ($b) | 375.177 | 384.158 | 406.780 |
| Taxable Income ($b) | 8345.102 | 9815.717 | 10002.806 |
| Regular Tax ($b) | 1487.862 | 1767.005 | 1826.224 |
| AMT Income ($b) | 10930.718 | 12498.767 | 12760.603 |
| AMT Liability ($b) | 0.543 | 1.478 | 0.629 |
| AMT Filers (#m) | 0.070 | 0.190 | 0.080 |
| Tax before Credits ($b) | 1488.405 | 1768.482 | 1826.853 |
| Refundable Credits ($b) | 641.376 | 809.270 | 86.175 |
| Nonrefundable Credits ($b) | 93.823 | 0.002 | 101.972 |
| Reform Surtaxes ($b) | 0.000 | 0.000 | 0.000 |
| Other Taxes ($b) | 75.395 | 83.011 | 86.832 |
| Ind Income Tax ($b) | 765.481 | 973.764 | 1653.978 |
| Payroll Taxes ($b) | 1217.258 | 1320.298 | 1414.153 |
| Combined Liability ($b) | 1982.738 | 2294.062 | 3068.130 |
| With Income Tax <= 0 (#m) | 137.530 | 129.800 | 98.260 |
| With Combined Tax <= 0 (#m) | 97.830 | 97.260 | 65.600 |
| UBI Benefits ($b) | 0.000 | 0.000 | 0.000 |
| Total Benefits, Consumption Value ($b) | 3617.042 | 3992.973 | 4070.218 |
| Total Benefits Cost ($b) | 3617.042 | 3992.973 | 4070.218 |