PSLmodels / OG-Core

An overlapping generations model framework for evaluating fiscal policies.
https://pslmodels.github.io/OG-Core/
Creative Commons Zero v1.0 Universal
65 stars 112 forks source link

Remove the `constant_rates` parameter #834

Closed jdebacker closed 9 months ago

jdebacker commented 1 year ago

There is indicator parameter called constant_rates that sets all ETRs and MTRs to the average the the specific rate across the population of filers in the microsimulation model used. As far as I can tell, this is equivalent to using estimating linear tax functions. Thus I think it's an unnecessary parameter to have. If this is true, it should be removed from OG-Core.

jdebacker commented 1 year ago

How this parameter is used in OG-USA's calibrate.py:

if p.constant_rates:
            print("Using constant rates!")
            # Make all ETRs equal the average
            etr_params = np.zeros(etr_params.shape)
            # set shift to average rate
            etr_params[: p.BW, :, 10] = np.tile(
                dict_params["tfunc_avg_etr"].reshape(p.BW, 1), (1, p.S)
            )
            etr_params[p.BW :, :, 10] = dict_params["tfunc_avg_etr"][-1]

            # # Make all MTRx equal the average
            mtrx_params = np.zeros(mtrx_params.shape)
            # set shift to average rate
            mtrx_params[: p.BW, :, 10] = np.tile(
                dict_params["tfunc_avg_mtrx"].reshape(p.BW, 1), (1, p.S)
            )
            mtrx_params[p.BW :, :, 10] = dict_params["tfunc_avg_mtrx"][-1]

            # # Make all MTRy equal the average
            mtry_params = np.zeros(mtry_params.shape)
            # set shift to average rate
            mtry_params[: p.BW, :, 10] = np.tile(
                dict_params["tfunc_avg_mtry"].reshape(p.BW, 1), (1, p.S)
            )
            mtry_params[p.BW :, :, 10] = dict_params["tfunc_avg_mtry"][-1]

One use I can see is if one wants to keep reading in the same (non-linear) tax functions but do some testing with constant rates.

jdebacker commented 9 months ago

In the end, it maybe worth keeping this parameter around for the point noted above.