Recipe 2: Estimating Behavioral Response to Reform
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 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:[email protected]/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)= 712.666
2020_REFORM_STATIC__itax_rev($B)= 714.207
2020_REFORM_DYNAMIC_itax_rev($B)= 702.852
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) | 11338.150 | 12178.876 | 12493.156 |
Itemizers (#m) | 27.080 | 28.040 | 26.590 |
Itemized Deduction ($b) | 733.405 | 760.876 | 728.223 |
Standard Deduction Filers (#m) | 177.400 | 179.040 | 183.070 |
Standard Deduction ($b) | 3088.310 | 3145.577 | 3324.598 |
Personal Exemption ($b) | 0.000 | 0.000 | 0.000 |
Taxable Income ($b) | 8372.943 | 9125.979 | 9363.127 |
Regular Tax ($b) | 1457.696 | 1585.907 | 1630.634 |
AMT Income ($b) | 10791.922 | 11610.774 | 11949.966 |
AMT Liability ($b) | 0.436 | 0.983 | 0.990 |
AMT Filers (#m) | 0.080 | 0.240 | 0.220 |
Tax before Credits ($b) | 1458.132 | 1586.890 | 1631.624 |
Refundable Credits ($b) | 657.660 | 834.182 | 105.901 |
Nonrefundable Credits ($b) | 98.801 | 2.124 | 103.661 |
Reform Surtaxes ($b) | 0.000 | 0.000 | 0.000 |
Other Taxes ($b) | 10.995 | 11.777 | 12.343 |
Ind Income Tax ($b) | 712.666 | 762.361 | 1434.404 |
Payroll Taxes ($b) | 1206.584 | 1268.248 | 1323.029 |
Combined Liability ($b) | 1919.249 | 2030.609 | 2757.434 |
With Income Tax <= 0 (#m) | 135.980 | 130.830 | 99.840 |
With Combined Tax <= 0 (#m) | 98.670 | 100.050 | 69.540 |
UBI Benefits ($b) | 0.000 | 0.000 | 0.000 |
Total Benefits, Consumption Value ($b) | 3617.949 | 4011.607 | 4064.249 |
Total Benefits Cost ($b) | 3617.949 | 4011.607 | 4064.249 |
Diagnostic table for reform, excluding behavioral responses:
dtable2
2020 | 2021 | 2022 | |
---|---|---|---|
Returns (#m) | 204.480 | 207.080 | 209.660 |
AGI ($b) | 11338.150 | 12178.876 | 12493.156 |
Itemizers (#m) | 27.010 | 27.960 | 26.550 |
Itemized Deduction ($b) | 730.891 | 758.366 | 726.407 |
Standard Deduction Filers (#m) | 177.470 | 179.110 | 183.120 |
Standard Deduction ($b) | 3089.620 | 3146.904 | 3325.433 |
Personal Exemption ($b) | 375.177 | 383.210 | 394.035 |
Taxable Income ($b) | 8126.314 | 8866.336 | 9101.213 |
Regular Tax ($b) | 1456.849 | 1587.259 | 1633.317 |
AMT Income ($b) | 10794.272 | 11613.144 | 11951.765 |
AMT Liability ($b) | 0.453 | 1.087 | 1.083 |
AMT Filers (#m) | 0.080 | 0.260 | 0.240 |
Tax before Credits ($b) | 1457.302 | 1588.346 | 1634.400 |
Refundable Credits ($b) | 661.001 | 834.182 | 109.581 |
Nonrefundable Credits ($b) | 93.088 | 2.002 | 97.967 |
Reform Surtaxes ($b) | 0.000 | 0.000 | 0.000 |
Other Taxes ($b) | 10.995 | 11.777 | 12.343 |
Ind Income Tax ($b) | 714.207 | 763.938 | 1439.195 |
Payroll Taxes ($b) | 1206.584 | 1268.248 | 1323.029 |
Combined Liability ($b) | 1920.791 | 2032.186 | 2762.224 |
With Income Tax <= 0 (#m) | 138.300 | 133.050 | 102.350 |
With Combined Tax <= 0 (#m) | 99.410 | 100.960 | 70.230 |
UBI Benefits ($b) | 0.000 | 0.000 | 0.000 |
Total Benefits, Consumption Value ($b) | 3617.949 | 4011.607 | 4064.249 |
Total Benefits Cost ($b) | 3617.949 | 4011.607 | 4064.249 |
Diagnostic table for reform, including behavioral responses:
dtable3
2020 | 2021 | 2022 | |
---|---|---|---|
Returns (#m) | 204.480 | 207.080 | 209.660 |
AGI ($b) | 11313.495 | 12149.972 | 12463.369 |
Itemizers (#m) | 26.980 | 27.930 | 26.530 |
Itemized Deduction ($b) | 729.487 | 756.879 | 725.086 |
Standard Deduction Filers (#m) | 177.500 | 179.150 | 183.140 |
Standard Deduction ($b) | 3090.316 | 3147.648 | 3325.834 |
Personal Exemption ($b) | 375.177 | 383.210 | 394.035 |
Taxable Income ($b) | 8101.871 | 8837.583 | 9071.797 |
Regular Tax ($b) | 1445.701 | 1574.544 | 1620.143 |
AMT Income ($b) | 10770.754 | 11585.459 | 11923.151 |
AMT Liability ($b) | 0.445 | 1.143 | 1.134 |
AMT Filers (#m) | 0.080 | 0.270 | 0.240 |
Tax before Credits ($b) | 1446.146 | 1575.687 | 1621.277 |
Refundable Credits ($b) | 660.699 | 834.152 | 109.300 |
Nonrefundable Credits ($b) | 93.329 | 2.011 | 98.203 |
Reform Surtaxes ($b) | 0.000 | 0.000 | 0.000 |
Other Taxes ($b) | 10.734 | 11.486 | 12.036 |
Ind Income Tax ($b) | 702.852 | 751.010 | 1425.810 |
Payroll Taxes ($b) | 1205.953 | 1267.382 | 1322.175 |
Combined Liability ($b) | 1908.804 | 2018.392 | 2747.986 |
With Income Tax <= 0 (#m) | 138.280 | 133.020 | 102.190 |
With Combined Tax <= 0 (#m) | 99.380 | 100.930 | 70.040 |
UBI Benefits ($b) | 0.000 | 0.000 | 0.000 |
Total Benefits, Consumption Value ($b) | 3617.949 | 4011.607 | 4064.249 |
Total Benefits Cost ($b) | 3617.949 | 4011.607 | 4064.249 |