Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Employer side Payroll Tax Offset function #2674

Closed
wants to merge 75 commits into from

Conversation

bodiyang
Copy link
Contributor

@bodiyang bodiyang commented Feb 17, 2023

@bodiyang
Copy link
Contributor Author

bodiyang commented Apr 28, 2023

I have completed the script of payroll offset

This script now can produce the result with payroll offset effect, with output of a dataframe including tax revenue and other variables in tc.DIST_VARIABLES list.

Users can now calculate the payroll offset effect by calling the function employer_payroll_offset(reform, ccalc, cpolicy, rrecs, dump=False), following the receipt as:

recs = tc.Records(data = 'puf.csv')
pol = tc.Policy()
calc0 = tc.Calculator(policy=pol, records=recs)
calc0.advance_to_year(CYR)
calc0.calc_all()
reform1 = {'FICA_mc_trt_employer': {"2025": 0.0245}}

offdf = employer_payroll_offset(reform1, calc0, pol, recs, dump=False)
itax_revbr = (offset_df['combined'] * offset_df['s006']).sum()

@jdebacker @MattHJensen this script now works independently from the model, any thoughts on incorporating it into the model? as the next steps of work

some options:

  1. leave the script as it is right now, now it can work in the same way as behavior response package: users can call the script to get an output dataframe with output variables
  2. trying to build this script into the model to automate the payroll offset calculation: when users implementing a reform of FICA tax to construct a Calculator object, Tax-Calculator can detect the reform and call this script to construct & return a new offset implemented Calculator object

There is a factor, year of the reform, makes the second option complex.
For example when we trying to construct a new Calculator object with reform1 = {'FICA_mc_trt_employer': {"2025": 0.0245}}, the policy object of this Calculator object should have the value 'FICA_mc_trt_employer': 0.0145 for the years before 2024, while have the value 'FICA_mc_trt_employer': 0.0245 for the years after 2025. So there should be two set of records, one as unadjusted record before 2024 and one as adjusted record after 2025

So we probably need to add two more policy parameters, the reformed FICA tax rate and the reform year, into Policy class in the model to serve as indicators to calling the corresponding record according to year. And making further development from here.

@jdebacker jdebacker added enhancement backward-incompatible Changes proposed in this PR/Issue are not backwards compatible labels May 2, 2023
@bodiyang
Copy link
Contributor Author

This work will be transferred to taxcalc-payroll model

@bodiyang bodiyang closed this Feb 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backward-incompatible Changes proposed in this PR/Issue are not backwards compatible enhancement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants