Classes on Using the Albania Tax Microsimulation Model
Be sure to do the model installation before the first class.
The training is scheduled to begin in September 2021 and will include the following classes:
- Using Tax Model
- Analyzing a Simple Reform
- Analyzing a Compound Reform
- Changing Growth Assumptions
- Assuming Behavior Responses
Each class begins at 15:00 Tirana time (UTC+2) via WebEx and will last two hours.
Each class has reading assignments that should be completed before the class starts.
Each class has three parts:
- a demonstration of model use,
- a project for each trainee to do on his/her computer, and
- a discussion of expected project results.
The trainers will be available (directly on WebEx or via email) to answer questions during the class period when each trainee is doing the project.
After finishing the training, you might want to explore the model's custom tabulation capabilities.
Prerequisite: Installing Tax Model
Install the tax model before the first class:
Follow the three-step model installation instructions to install Python 3.8, Tax-Analyzer-Framework 4.9.4, and ALI-Tax-Analyzer 1.6.0.
Optionally, watch videos of installation of the Malaysia tax model, the first two steps of which are similar to what we are doing.
Direct any installation questions to Najada Xara, who is the Tirane-based trainer.
Confirm a successful installation by getting a
PASSED TESTmessage after entering thealirun --testcommand at the Anaconda Prompt.Confirm that you can start the graphical user interface (GUI) to the tax model by entering the
aliguicommand at the Anaconda Prompt; then click on the GUI Help tab and click on the Show button on the Help page, which should display the help information in your default web browser.
Class 1: Using Tax Model (Mon Sep 27)
Before class: (a) bookmark in your browser the model home page that contains a link to this training syllabus; (b) follow the model GUI instructions including reading the GUI Help page contents.
Class demo: watch execution of a no-reform run using the GUI.
Class project: create a run called
CLPthat simulates current-law policy (that is, no reforms) for all years; execute that run; look at the run specification file and all the 2022 output files for that run, especially the graphs and the tax table for 2022.Class discussion: this is the expected
CLPrun specification file and its 2022 tax table. Why does the 2022 effective tax rate graph show a regressive tax scheme when the income tax on earnings is very progressive?
Class 2: Analyzing a Simple Reform (Tue Sep 28)
Before class: (a) reread the GUI Help page; (b) read the description of all the policy reform parameters known to the model by clicking on the Help button on the GUI Reform page.
Class demo: watch specification and execution of a run that ignores social security contribution taxes and that raises the tax rate on earnings in the top income tax bracket by four percentage points beginning in 2022.
Class project: (a) specify a new run called
demo2that is exactly the same as the run presented in the demo for this class and execute thedemo2run; (b) specify a new run calledproject2that is the same as theCLPrun except that the top rate on earnings is increased by four percentage points beginning in 2022; execute theproject2run; look at 2022 effective tax rate graph and 2022 change in after-tax income graph.Class discussion: this is the expected
demo2run specification file and its 2022 tax table; this is the expectedproject2run specification file and its 2022 tax table. Compare the 2022 effective tax rate graphs for thedemo2andproject2runs. Why do taxpayers in the top income tax bracket, even after raising the top income tax rate by four percentage points, still have lower effective tax rates (in theproject2graph) than taxpayers just below them in the income distribution?
Class 3: Analyzing a Compound Reform (Wed Sep 29)
Before class: read the description of all the text output by clicking on the top Help button on the GUI Output page.
Class demo: watch specification and execution of a run that is same as the
demo2run except that the top of the bottom (zero-rate) income tax bracket is increased by 100,000 ALL beginning in 2022 and only years 2021 and 2022 are simulated.Class project: (a) specify a new run called
demo3that is exactly the same as the run presented in the demo for this class and execute thedemo3run; (b) specify a new run calledproject3that is exactly like thedemo3run; execute and check that results are same asdemo3run (-2.079 billion ALL change in 2022 income tax revenue); then revise theproject3run to lower the top of the zero-rate bracket until the change in aggregate income tax revenue is close to zero (restricting values of the top of the bottom bracket to be multiples of 10,000 ALL for simplicity).Class discussion: this is the expected
demo3run specification file and its 2022 tax table; this is the expected post-calibrationproject3run specification file and its 2022 tax table. What value of the top of the zero-rate bracket produces the results in theproject3run? What kind of reform would target the tax relief for lower income taxpayers more efficiently?
Class 4: Changing Growth Assumptions (Thu Sep 30)
This is an advanced feature of the model.
Before class: (a) read about the baseline growth assumptions currently used by the model; (b) read about how these growth factors are used to extrapolate taxpayer records variables in years beyond 2019 (ignore the discussion about how growth factors are used by the model to extrapolate policy parameters because Albania does not have any inflation-indexed policy parameters that are automatically adjusted each year).
Class demo: watch specification and execution of a run for all years that does not ignore social security contribution taxes, has no reform, and lowers the WAGES growth factor for 2021 by two percentage points (leaving 2022+ growth factors unchanged).
Class project: (a) specify a new run called
demo4that is exactly the same as the run presented in the demo for this class and execute thedemo4run; (b) specify a new run calledproject4that is the same as thedemo4run except that the WAGES growth factor for 2022 is reduced by one percentage point (leaving 2023+ growth factors unchanged), execute, and compare the 2022 tax table results with those generated by thedemo4run.Class discussion: this is the expected
demo4run specification file and its 2022 tax table; this is the expectedproject4run specification file and its 2022 tax table. Under current-law policy and the more pessimistic economic growth assumptions assumed in theproject4run for 2022, what is the percentage decline in income tax revenue? How does that percentage decline compare with the percentage decline in 2022 social security contribution tax revenue? Why is the percentage decline in income tax revenue so much larger than the percentage decline in social security contribution tax revenue?
Class 5: Assuming Behavior Responses (Fri Oct 1)
This is a very advanced feature of the model.
Before class: read about how the model simulates responses to a reform but don't worry if this advanced discussion doesn't make any sense to you.
Class demo: watch two-stage specification and execution of a run for year 2022 that ignores social security contribution taxes, increases the top income tax rate on earnings by four percentage points beginning in 2022, and assumes 0.3 earnings substitution elasticity.
Class project: (a) specify a new run called
demo5that is exactly the same as the final run presented in the demo for this class and execute thedemo5run; (b) specify a new run calledproject5that is the same as thedemo5run except that social security contribution taxes are not ignored; execute; compare 2022 tax table generated by theproject5run with 2022 tax table generated by thedemo5run.Class discussion: this is the expected final
demo5run specification file and its 2022 tax table; this is the expectedproject5run specification file and its 2022 tax table. Why are reform-induced earnings declines more in theproject5run than in thedemo5run even though reforms are the same? What effect do these larger earnings declines have on amount of income tax revenue generated by the reform?
Post-Training: Writing and Tabulating Dump Output
The GUI provides basic tables and several kinds of graphs that show the effects of a reform, so it can meet the needs of most tax reform analysis projects.
However, sometimes there is a need to produce a table or graph that is specific to the reform being analyzed. The model itself has no way of knowing in advance what kind of custom table or graph is needed for a particular reform, so its approach is to provide the basic information required for any custom analysis and let users perform custom analysis using the software of their choice.
Conducting such custom analysis of model output is done in two steps: use the GUI to generate dump output for policies of interest in each year being analyzed, and then use the resulting dump output files to conduct the custom analysis using the software of your choice.
The optional dump output from a model run can be CSV-formatted in a text file (containing output for just the run's reform) or can be in an SQLite database file (containing output for both the reform and current-law policy). You specify which you want on the GUI Run page (just above the Execute button). Remember that these files are quite large and take a while to write to disk, so limit dump output to just the years for which you are planning to conduct custom analysis.
After generating the dump output files, you can analyze them using the software of your choice.
If you know Structured Query Language (SQL), then you might want to tabulate the dump output using the SQLite shell, which is installed on your computer as part of the Anaconda Python distribution. You can copy any custom SQL script to your project folder and use it to analyze dump output from any run using the Tabulate fields at the bottom of the GUI Output page.
If you are more comfortable with procedural languages, then you could conduct the custom tabulations using CSV-formatted output with R, Python, Stata, or SAS. Using software like this has the advantage of having built-in graphing capabilities. If you are interest in this procedural programming approach, you might want to read the extended analysis example included in the documentation of the Malaysia personal income tax microsimulation model.