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)= 748.768
2020_REFORM_STATIC__itax_rev($B)= 750.713
2020_REFORM_DYNAMIC_itax_rev($B)= 739.128

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) 11529.507 12789.483 13581.569
Itemizers (#m) 27.130 31.370 30.560
Itemized Deduction ($b) 734.486 861.467 860.875
Standard Deduction Filers (#m) 177.360 175.700 179.100
Standard Deduction ($b) 3087.473 3079.719 3243.332
Personal Exemption ($b) 0.000 0.000 0.000
Taxable Income ($b) 8559.022 9684.922 10375.399
Regular Tax ($b) 1491.329 1700.814 1843.158
AMT Income ($b) 10982.328 12145.126 12934.900
AMT Liability ($b) 0.557 1.071 1.121
AMT Filers (#m) 0.090 0.250 0.230
Tax before Credits ($b) 1491.886 1701.885 1844.279
Refundable Credits ($b) 655.173 821.476 96.978
Nonrefundable Credits ($b) 99.323 2.154 108.174
Reform Surtaxes ($b) 0.000 0.000 0.000
Other Taxes ($b) 11.379 11.749 12.583
Ind Income Tax ($b) 748.768 890.003 1651.710
Payroll Taxes ($b) 1217.120 1325.321 1430.921
Combined Liability ($b) 1965.888 2215.324 3082.631
With Income Tax <= 0 (#m) 135.340 127.810 95.960
With Combined Tax <= 0 (#m) 98.260 97.850 67.830
UBI Benefits ($b) 0.000 0.000 0.000
Total Benefits, Consumption Value ($b) 3617.949 4011.607 4069.558
Total Benefits Cost ($b) 3617.949 4011.607 4069.558

Diagnostic table for reform, excluding behavioral responses:

dtable2
2020 2021 2022
Returns (#m) 204.480 207.080 209.660
AGI ($b) 11529.507 12789.483 13581.569
Itemizers (#m) 27.060 31.240 30.440
Itemized Deduction ($b) 732.100 857.882 857.400
Standard Deduction Filers (#m) 177.430 175.840 179.220
Standard Deduction ($b) 3088.674 3081.931 3245.332
Personal Exemption ($b) 375.177 383.210 404.808
Taxable Income ($b) 8311.506 9421.653 10099.958
Regular Tax ($b) 1490.903 1704.251 1849.101
AMT Income ($b) 10984.562 12148.452 12938.134
AMT Liability ($b) 0.576 1.178 1.231
AMT Filers (#m) 0.090 0.280 0.250
Tax before Credits ($b) 1491.479 1705.429 1850.331
Refundable Credits ($b) 658.503 821.476 100.668
Nonrefundable Credits ($b) 93.641 2.038 102.553
Reform Surtaxes ($b) 0.000 0.000 0.000
Other Taxes ($b) 11.379 11.749 12.583
Ind Income Tax ($b) 750.713 893.663 1659.693
Payroll Taxes ($b) 1217.120 1325.321 1430.921
Combined Liability ($b) 1967.833 2218.984 3090.615
With Income Tax <= 0 (#m) 137.500 130.050 98.530
With Combined Tax <= 0 (#m) 99.030 98.780 68.490
UBI Benefits ($b) 0.000 0.000 0.000
Total Benefits, Consumption Value ($b) 3617.949 4011.607 4069.558
Total Benefits Cost ($b) 3617.949 4011.607 4069.558

Diagnostic table for reform, including behavioral responses:

dtable3
2020 2021 2022
Returns (#m) 204.480 207.080 209.660
AGI ($b) 11504.402 12757.301 13546.110
Itemizers (#m) 27.030 31.210 30.430
Itemized Deduction ($b) 730.740 856.443 855.914
Standard Deduction Filers (#m) 177.460 175.860 179.240
Standard Deduction ($b) 3089.351 3082.394 3245.690
Personal Exemption ($b) 375.177 383.210 404.808
Taxable Income ($b) 8286.590 9389.949 10065.116
Regular Tax ($b) 1479.527 1690.400 1833.801
AMT Income ($b) 10960.546 12117.506 12904.040
AMT Liability ($b) 0.577 1.212 1.281
AMT Filers (#m) 0.090 0.270 0.250
Tax before Credits ($b) 1480.104 1691.612 1835.082
Refundable Credits ($b) 658.208 821.441 100.411
Nonrefundable Credits ($b) 93.876 2.047 102.789
Reform Surtaxes ($b) 0.000 0.000 0.000
Other Taxes ($b) 11.108 11.447 12.266
Ind Income Tax ($b) 739.128 879.571 1644.149
Payroll Taxes ($b) 1216.467 1324.260 1429.787
Combined Liability ($b) 1955.595 2203.830 3073.936
With Income Tax <= 0 (#m) 137.470 130.030 98.370
With Combined Tax <= 0 (#m) 98.990 98.760 68.330
UBI Benefits ($b) 0.000 0.000 0.000
Total Benefits, Consumption Value ($b) 3617.949 4011.607 4069.558
Total Benefits Cost ($b) 3617.949 4011.607 4069.558