Optimal Policy

Dynare can compute Ramsey policy and optimal simple rules

Ramsey policy

computes the first order approximation of the policy that maximizes the policy maker objective function submitted to the constraints provided by the equilibrium path of the economy.

Ramsey policy replaces OLR in Dynare version 3:

Example:

var y inflation r;

varexo y_ inf_;

parameters delta sigma alpha kappa gammarr gammax0 gammac0 rbar lambda1 lambda2;

delta = 0.44;

kappa = 0.18;

alpha = 0.48;

sigma = -0.06;

lambda1 = 0.5;

lambda2 = 0.1;

model(linear);

y = delta * y(-1) + (1-delta) * y(+1) + sigma *(r - inflation(+1)) + y_;*

inflation = alpha * inflation(-1) + (1-alpha) * inflation(+1) + kappay + inf_;

end;

shocks;

var y_;

stderr 0.63;

var inf_;

stderr 0.4;

end;

planner_objective inflation^2 + lambda1*y^2 + lambda2*r^2;

ramsey_policy(planner_discount=0.95);

Notes:

There must be less equations than endogenous variables. The difference is the number of instrument to be chosen optimally.

For this reason, you can’t use steady or check before ramsey_policy

Pure Ramsey policy or optimal policy in a timeless perspective depends on the initial values of the Lagrange multipliers, but the recursive equations are the same.

ramsey_policy isn’t limited to linear models or quadratic objective functions.

The default value of planner_discount is one.

ramsey_policy is limited to the first order approximation.

Optimal simple rule

With optimal simple rule (OSR), Dynare searches numerically the best value for the coefficients of some prespecifed policy rule.

Example:

var y inflation r;

varexo y_ inf_;

parameters delta sigma alpha kappa gammarr gammax0 gammac0 gamma_y_ gamma_inf_;

delta = 0.44;

kappa = 0.18;

alpha = 0.48;

sigma = -0.06;

model(linear);

y = delta * y(-1) + (1-delta)*y(+1)+sigma **(r - inflation(+1)) + y_;*

inflation = alpha * inflation(-1) + (1-alpha) * inflation(+1) + kappay + inf_;

r = gammax0y(-1)+gammac0*inflation(-1)+gamma_y_*y_+gamma_inf_*inf_;

end;

shocks;

var y_;

stderr 0.63;

var inf_;

stderr 0.4;

end;

optim_weights;

inflation 1;

y 1;

end;

osr_params gammax0 gammac0 gamma_y_ gamma_inf_;

gammarr = 0;

gammax0 = 0.2;

gammac0 = 1.5;

gamma_y_ = 8;

gamma_inf_ = 3;

osr;

Notes:

There must be as many equations as endogenous variables

Currently, the only objective function is a weighted sum of the variances of some variables of the model

The fragment

gammarr = 0;

gammax0 = 0.2;

gammac0 = 1.5;

gamma_y_ = 8;

gamma_inf_ = 3;

provides numerical initialization for the optimization.

On the forum, otb reports that he/she encountered numerical problems with models that have very small variances. He/she suggests to multiply the weights in the objective function by 100 or 1000

Warning

Don’t call your files osr.mod or osr1.mod because it conflicts with internal Dynare names.