Closed jdebacker closed 9 months 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.
In the end, it maybe worth keeping this parameter around for the point noted above.
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.