Optimal fiscal policy

Dear Prof Pfeifer,
I am working on a DSGE paper to analyse an optimal tax policy under commitment. In this regard, I assume government levies three different taxes (consumption, labor income tax and capital income tax). I want to use Ramsey approach on dynare to perform the analysis. However, from my reckoning, there are few papers accounting for three tax rates. All I could see in the literature covers only capital and labor tax rates. I set the problem but I have difficulty coding it in dynare.
I would appreciate if you could provide any hint on the issue.

What exactly is the problem? This sounds like a standard Ramsey problem, but with three instruments.

Hello Professor,
I set the problem as you guess it with three instruments (tax rates). My problem is that the code can not find the steady-state. The error message indicates that the initial values are far from the steady state. Subsequently, it requires me to write a specific code to find the steady state.

In complicated nonlinear problems like that you will almost surely have to provide a conditional steady state file

Hello professor,
providing a conditional steady state file is a dig challenging. Could you provide me with more hint on that process? I tried to compute the static model by finding steady state value for some endogenous variable as function of parameters and instruments (the three tax rate) but not all endogenous variables are pinned down that way. From this step, how should I go about providing the conditional steady state file?

Hello Professor!
I wrote in my code the steady state model block where I put the static model (steady state expression) for the endogenous variables (6 out of 11 endogenous excluding instruments). I then set initial value for the remaining 5 endogenous variables and the three instruments but the code cannot find the steady state. The error message is as follows:
{Error using print_info (line 152)
Ramsey: The steady state file does not solve the static first order conditions conditional on
the instruments.}

You need to approach this more systematically. Obviously, this is a challenging problem. What to do you mean with

?
If you are not able to find a steady state this way, how is Dynare supposed to find one?

Hello!
In fact, i mean I could not find an analytical expression for all endogenous variables as function of instruments and parameter. I was able to solve for 6 endogenous and set initial values for the remaining. The error message is this:
Error using print_info (line 150)
Ramsey: The steady state file computation for the Ramsey problem resulted in NaNs at the initial values of the instruments
I set the initial values to 0 for the three instruments.

Check the results for your computations if you use the initial values. You may have to solve for the remaining variables numerically.

Dear Professor,
My model has 11 endogenous and three instruments. Hence the model has 11 equations. In the steady-state model, I solved the static model and got the analytical expression for some endogenous variables. but for the remaining, it is very hard to get the analytical solution. That is why I set initial values for them and for the three instruments. In principle, these initial values should solve the system of equations in the steady state model and find out the steady state values for the endogenous. But unfortunately, the code does not run. the error message is that the initial value for the instruments cannot solve for the steady state.

You need to write a proper file. For any value of the instruments, compute the value of the other variables. That may require using a numerical solver in your steady state file.

Dear Professor,
I am back again with the issue of finding the steady state of the Ramsey optimal fiscal policy with three tax. As you recommended, I tried to write a steady state file to solve the model but the file does not work. The error message is the following:
Index exceeds matrix dimensions.

Error in Benin_static (line 44)
T119 = params(4)*exp(y(12))*getPowerDeriv(y(7),params(4)-1,1);

Error in evaluate_static_model (line 63)
residuals = feval(fh_static,ys,exo_ss,params);

Error in evaluate_steady_state_file (line 140)
[residuals, check] = evaluate_static_model(ys, exo_ss, params, M, options);

Error in evaluate_steady_state (line 59)
[ys,params,info] = evaluate_steady_state_file(ys_init,exo_ss,M, …

Error in resol (line 104)
[dr.ys,M.params,info] =
evaluate_steady_state(oo.steady_state,M,options,oo,~options.steadystate.nocheck);

Error in stoch_simul (line 89)
[oo_.dr,info,M_,options_,oo_] = resol(0,M_,options_,oo_);

Error in ramsey_policy (line 42)
info = stoch_simul(var_list);

Error in Benin (line 298)
ramsey_policy(var_list_);

Error in dynare (line 235)
evalin(‘base’,fname) ;
I will appreciate any hint you could provide me with.

I would need to see the file.

Dear Professor,
Thses are the files for the codes. I have attached the .mod file as well as the steady state file for your perusalfiscal_opt.mod (3.9 KB) fiscal_opt_steadystate.m (1.7 KB)
Thanks

Please us a proper steady state file. See e.g. Index Exceeds Matrix Dimensions

1 Like

Dear Professor,Benin_steadystate.m (2.7 KB) Benin.mod (4.0 KB)

I still have problem finding the steady state of the Ramsey problem even after the implementation of the procedure you recommended to me. I mean I have written a proper steady state file using your code btl_old_ramsey_steadystate.m adapted to my model. When I run my command, the error message is this:

{Using 32-bit preprocessor
Starting Dynare (version 4.5.7).
Starting preprocessing of the model file …
Ramsey Problem: added 12 Multipliers.***Benin.mod (4.0 KB)
Found 12 equation(s).
Found 27 FOC equation(s) for Ramsey Problem.
Evaluating expressions…done
Computing static model derivatives:
*** - order 1

Computing dynamic model derivatives:
*** - order 1***
*** - order 2***
Computing static model derivatives:
*** - order 1***
*** - order 2***
*** - order 3***
Processing outputs …
done
Preprocessing completed.
error: ‘M_’ undefined near line 6 column 12}

I do not really know where the error in my steady state file is.

I attached the .mod file and the . file for your perusal.

Thanks

You are missing a space in
global M_lgy_