Skip to content
Calculates federal tax liabilities from individual data under a range of policy scenarios
Python Shell
Branch: master
Clone or download
Peter-Metz Merge pull request #8 from PSLmodels/write
Method to write `Batch` output
Latest commit 09e9f46 Aug 20, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
compconfig fix bokeh label bug Aug 16, 2019
docs update input instructions Jul 23, 2019
taxcrunch method to write batch output Aug 20, 2019
.gitignore gitignore typo Jun 18, 2019
LICENSE Create LICENSE Apr 26, 2019
PSL_catalog.json add psl_catalog.json Jul 25, 2019 update readme Jul 19, 2019
environment.yml adjust dependencies Apr 30, 2019 Peter-Metz -> PSLmodels Jul 11, 2019


Tax-Cruncher calculates federal tax liabilities from individual data under different policy proposals.

Tax-Cruncher accepts inputs similar to NBER's TAXSIM Version 27, converts those inputs to a format usable by Tax-Calculator, an open-source microsimulation model of federal individual income and payroll tax law, and uses Tax-Calculator capabilities to analyze the user-specified inputs under various tax policy proposals.

Tax-Cruncher's web application is hosted on COMP. The code that powers the web application can be found in this repository in the compconfig directory.

How to use Tax-Cruncher

Tax-Cruncher can analyze individual data from one filer or multiple filers under different policy proposals. The procedures for the two uses are different. For examples on how to use Tax-Cruncher and the outputs you can expect to generate, explore the Jupyter Notebooks in the docs directory.

To analyze individual data from one filer:

  • First, define your inputs. You may either edit taxcrunch/adjustment_template.json directly in your local repository or create a separate JSON file that includes just the parameters you would like to adjust.

  • Second, pick the policy proposal you would like to analyze. Browse the Tax-Calculator reforms folder for a preset reform, or specify your own reform in a JSON file in accordance with the instructions in the Tax-Calculator repository. Fill out the reform_options field in your adjustment file with the appropriate preset reform name. Do not specify a preset reform if you specified a file path to a custom reform.

  • Third, initiate the Cruncher class. If you modified taxcrunch/adjustment_template.json directly and chose a preset policy reform file, you can initiate the class with c = Cruncher(). Otherwise, initiate the Cruncher class with: c = Cruncher(inputs='ADJUSTMENT_FILE_NAME', custom_reform='REFORM_FILE_NAME').

  • Fourth, analyze your reform. Try out the following methods:

#basic outputs
#marginal tax rates
#detailed outputs with marginal tax rate analysis 
#detailed outputs with difference between reform and baseline

To analyze individual data from multiple filers:

  • First, define your inputs in a csv file. Instructions on how to make this CSV file can be found here.

  • Second, initiate the Batch class. The Batch class can be found in the multi_cruncher module. Initiate the Batch class with b = Batch('INPUT_DATA_FILE')

  • Third, analyze your data. You can analyze your data under current law or under a policy reform using the create_table() method. If you do not pass an argument to the method, the default policy is current law. To analyze your data under a policy reform, pass a JSON reform file, a reform dictionary, or a preset reform from the Tax-Calculator reforms folder to the create_table() method.

#liabilities under current law
#liabilities under reform 

How to install Tax-Cruncher

Install from source:

git clone
cd Tax-Cruncher
conda env create
conda activate taxcrunch-env
pip install -e .

How to cite Tax-Cruncher

Please cite the source of your analysis as "Tax-Cruncher release #.#.#, author's calculations." If you would like to link to Tax-Cruncher, please use

You can’t perform that action at this time.