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 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)= 756.381
2020_REFORM_STATIC__itax_rev($B)= 760.681
2020_REFORM_DYNAMIC_itax_rev($B)= 748.536

Create multi-year diagnostic tables for

  1. baseline,

  2. reform excluding behavioral responses, and

  3. 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) 11573.238 13174.913 13543.810
Itemizers (#m) 27.540 31.240 31.220
Itemized Deduction ($b) 746.718 863.745 883.193
Standard Deduction Filers (#m) 176.830 175.720 178.440
Standard Deduction ($b) 3079.086 3090.603 3229.790
Personal Exemption ($b) 0.000 0.000 0.000
Taxable Income ($b) 8613.946 10048.193 10330.412
Regular Tax ($b) 1497.122 1762.520 1837.026
AMT Income ($b) 11016.808 12528.909 12879.727
AMT Liability ($b) 0.903 1.854 1.056
AMT Filers (#m) 0.210 0.340 0.220
Tax before Credits ($b) 1498.025 1764.374 1838.082
Refundable Credits ($b) 655.030 827.135 98.469
Nonrefundable Credits ($b) 99.188 0.005 107.717
Reform Surtaxes ($b) 0.000 0.000 0.000
Other Taxes ($b) 12.575 13.851 14.353
Ind Income Tax ($b) 756.381 951.085 1646.249
Payroll Taxes ($b) 1217.941 1318.728 1421.579
Combined Liability ($b) 1974.322 2269.813 3067.828
With Income Tax <= 0 (#m) 135.450 127.770 96.120
With Combined Tax <= 0 (#m) 98.170 97.730 67.860
UBI Benefits ($b) 0.000 0.000 0.000
Total Benefits, Consumption Value ($b) 3617.042 3992.973 4069.559
Total Benefits Cost ($b) 3617.042 3992.973 4069.559

Diagnostic table for reform, excluding behavioral responses:

dtable2
2020 2021 2022
Returns (#m) 204.480 207.080 209.660
AGI ($b) 11573.238 13174.913 13543.810
Itemizers (#m) 27.470 31.130 31.110
Itemized Deduction ($b) 744.339 860.636 879.894
Standard Deduction Filers (#m) 176.900 175.830 178.560
Standard Deduction ($b) 3080.284 3092.349 3231.701
Personal Exemption ($b) 375.177 382.451 403.231
Taxable Income ($b) 8366.328 9785.059 10056.412
Regular Tax ($b) 1498.980 1766.697 1843.711
AMT Income ($b) 11019.051 12531.859 12882.819
AMT Liability ($b) 1.000 1.970 1.140
AMT Filers (#m) 0.230 0.360 0.240
Tax before Credits ($b) 1499.980 1768.667 1844.852
Refundable Credits ($b) 658.347 827.135 102.144
Nonrefundable Credits ($b) 93.527 0.002 102.093
Reform Surtaxes ($b) 0.000 0.000 0.000
Other Taxes ($b) 12.575 13.851 14.353
Ind Income Tax ($b) 760.681 955.380 1654.968
Payroll Taxes ($b) 1217.941 1318.728 1421.579
Combined Liability ($b) 1978.622 2274.109 3076.547
With Income Tax <= 0 (#m) 137.600 130.030 98.740
With Combined Tax <= 0 (#m) 98.930 98.610 68.590
UBI Benefits ($b) 0.000 0.000 0.000
Total Benefits, Consumption Value ($b) 3617.042 3992.973 4069.559
Total Benefits Cost ($b) 3617.042 3992.973 4069.559

Diagnostic table for reform, including behavioral responses:

dtable3
2020 2021 2022
Returns (#m) 204.480 207.080 209.660
AGI ($b) 11546.657 13141.574 13508.126
Itemizers (#m) 27.440 31.100 31.090
Itemized Deduction ($b) 743.177 858.908 878.293
Standard Deduction Filers (#m) 176.930 175.860 178.580
Standard Deduction ($b) 3080.714 3093.062 3232.174
Personal Exemption ($b) 375.177 382.451 403.231
Taxable Income ($b) 8340.054 9752.159 10021.338
Regular Tax ($b) 1487.051 1752.368 1828.324
AMT Income ($b) 10993.444 12499.952 12848.552
AMT Liability ($b) 1.021 2.012 1.172
AMT Filers (#m) 0.230 0.350 0.250
Tax before Credits ($b) 1488.072 1754.380 1829.496
Refundable Credits ($b) 658.057 827.116 101.876
Nonrefundable Credits ($b) 93.756 0.002 102.342
Reform Surtaxes ($b) 0.000 0.000 0.000
Other Taxes ($b) 12.277 13.502 14.008
Ind Income Tax ($b) 748.536 940.763 1639.285
Payroll Taxes ($b) 1217.280 1317.682 1420.461
Combined Liability ($b) 1965.815 2258.445 3059.746
With Income Tax <= 0 (#m) 137.570 130.000 98.570
With Combined Tax <= 0 (#m) 98.910 98.580 68.400
UBI Benefits ($b) 0.000 0.000 0.000
Total Benefits, Consumption Value ($b) 3617.042 3992.973 4069.559
Total Benefits Cost ($b) 3617.042 3992.973 4069.559