Closed jdebacker closed 4 years ago
We changed the decomposition to the following. Define the baseline and reform time series as baseline
and reform
. The reform
includes tax changes tax
, macroeconomic changes macro
, and individual and firm behavioral changes behavior
. As such, we can decompose the total change from baseline
to reform
into three effects: (1) tax
, (2) behavior
, and (3) macro
.
Total effect. (reform
- baseline
) / baseline
.
Tax effect. Take the baseline
time series behavior and calculate the tax.total_taxes()
using the reform tax rates. Call this time series tax
. The percent (or simple difference) change is (tax
- baseline
) / baseline
.
Behavior effect. The behavior effect is calculated by taking the baseline macroeconomic time series r_t
, w_t
, BQ_t
, and TR_t
and adding the reform behavior along with the reform taxes to the calculation of total tax liability using tax.total_taxes()
. Call this time series behavior
. The macroeconomic effect is (behavior
- tax
) / tax
.
Macro effect. The macroeconomic effect simply adds the reform macroeconomic time series r_t
, w_t
, BQ_t
, and TR_t
to the behavior effect in the previous step. This is simply the reform
. So the macro effect is (reform
- behavior
) / behavior
.
cc: @jdebacker @benrpage1
Following up on @rickecon - we are now using a more thorough decomposition. However, in PR #570, I have changed the order so that the macro effects are computed last (after behavior). I think this makes the decomposition more useful as one can get the macro effect after behavior and rate changes to layer on top of a traditional revenue estimate (which would include the rate and behavioral changes (albeit, behavioral changes that aren't derived in the same way)).
@jdebacker. I am fine with the order change of the respective macroeconomic and behavioral changes. Either way is arbitrary, and the order makes a difference in the magnitude of the effect. So let's just go with whichever order we like best and then just be explicit about the order of calculation.
I just updated my previous comment to reflect the order used in PR #570.
PR #570 has now been merged to decompose dynamic revenue estimates in the way suggested here.
This issue is to discuss how to best create a function to decompose static and dynamic revenue estimates.
Here's the how we might envision the decomposition taking place: 1) Simulate the baseline and reform in OG-USA. Save the resulting series of tax revenues. Call these series for the baseline and reform A and B, respectively. 2) Create a third revenue series that is computed using the baseline behavior (i.e.,
bmat_s
,n_mat
,K
, etc) and factor prices, but with the tax functions estimated on the reform tax policy. Call this series C. 3) Calculate the percentage difference between that C and B and interpret that as percentage "macro feedback" on revenue under the policy. 4) Apply the percentage difference in (3) to the microsimulation model ("static") revenue estimate from the policy change to produce an estimate of the revenue including macro feedback.Perhaps this function would just be in the
output_tables.py
module. The series C can be computed with thetax.total_taxes()
and the results from the baseline and reform runs (including the tax function parameter estimates). From there it's a simple calculation using the microsimulation results, which would need to be an input to the function.One could imagine further decompositions of behavioral and economic changes, but that proposed above maybe a good place to start.
cc @rickecon, @benrpage1