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

Incorrect projection of indexed policy parameters in some cases #2851

Closed
martinholmer opened this issue Dec 15, 2024 · 0 comments · Fixed by #2852
Closed

Incorrect projection of indexed policy parameters in some cases #2851

martinholmer opened this issue Dec 15, 2024 · 0 comments · Fixed by #2852
Assignees
Labels

Comments

@martinholmer
Copy link
Collaborator

The Policy class uses grow-factor values (for the ACPIU and AWAGE factors) to project indexed tax policy parameters beyond the Policy.LAST_KNOWN_YEAR. In most cases this is done correctly. However, since the Policy class was rewritten to use ParamTools in PR #2401 the projection of indexed parameters is done incorrectly is some cases. The most common case is when the Policy class constructor is passed a GrowFactors object that contains ACPIU or AWAGE values that differ from the values in the taxcalc/growfactors.csv file, which is generated in the taxdata repository for use with the CPS and PUF input data that are generated in that repository. The different grow-factor values could represent some kind of macroeconomic response to a tax reform that is thought to change future price-inflation rates or wage-growth rates. Or the different grow-factor values could be those used by the TMD data, which include their own tmd_growfactors.csv file that may differ from the CPS- and PUF-related growfactors.csv file included in the taxcalc package.

In all these cases, the Policy constructor is passed a GrowFactors object that is different from the default object created by the GrowFactors constructor (that is, by using GrowFactors()). The buggy logic is in the Policy.set_rates method

self._gfactors = GrowFactors()
and in the Parameters.adjust_with_indexing method
self._gfactors = GrowFactors()
where the custom self._gfactors object passed to the Policy constructor is overwritten by self._gfactors = GrowFactor() statement. This overwriting incorrectly changes the custom grow-factor values to the default grow-factor values. This mistake means that in these cases, the wrong values of ACPIU and AWAGE are being used to project indexed policy parameters beyond Policy.LAST_KNOWN_YEAR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant