%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%
%%%%%%
%%%%%% Artículo "Monetary Policy in Closed and Open Economies"
%%%%%%
%%%%%% UPPSALA UNIVERSITET Master Thesis
%%%%%% Glenn Mickelson
%%%%%%
%%%%%%
%%%%%% 2009-06-04
%%%%%%
%%%%%% Copiado directamente del Anexo del Artículo
%%%%%% http://uu.diva-portal.org/smash/get/diva2:233883/FULLTEXT01
%%%%%%
%%%%%% Esta version es replicada para el caso de una economia
%%%%%% abierta sencilla en Colombia, se extiende para el caso 
%%%%%% VAR Bayesiano. El sector externo puede compararse 
%%%%%% directamente con EEUU
%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


var c c_h im s y y_star i i_star inflation inflation_star n w b a v nx 
inflation_h q ex u z;

varexo Taylor_shock output_shock philip_shock world_output_shock 
inflation_star_shock is_shock;

parameters theta phiy phip phiy_star phip_star kappa_a kappa_y lambda 
disc beta epsilon rhoi rhoy alpha phi psi M mu theta_gamma gamma
etha delta rhoy_star rho_inflation lambda_ex etha_star rho_inflation_1
rho_is;


lambda_ex = 0.1;      %(Formacion de hábitos) Elasticidad Preferencia entre Producto Foráneo/Doméstico Tomado de Gottfries(2003)
etha_star = 3;        %(Formacion de hábitos) Elasticidad de Sustitucion con el resto del Mundo Tomado de Gottfries(2003)
etha = 2;             %(Formacion de hábitos) Elasticidad de sustitucion entre bienes Extranjeros/Domesticos
delta = 0.213;        %(COL)Grado de Apertura Economica, (0 es Econ. Cerrada). Part de las importaciones sobre PIB. Calculos Propios 
disc = 0.01;          %(COL)Parametro que refleja el tiempo de espera Trimestral (Pag 24)
alpha = 0.58;         %(COL)Producto Marginal del Trabajo (dY/dL) Par. de Firmas (Pag 24)
                      %(COL)Productividad del Trabajo tomado de Parra et al (2007) Pag 14 Cuadro 3
gamma = 0.8;           %Parametro tomado de Fuhrer(2000) y  Abel(1999) Pag 23
phi = 5;               %Elasticidad de la Oferta Laboral. Pag 23 Meghir et al (1998)  
psi = 0.01;            %Elasticidad de la tasa libre de Riesgo Doméstica Tomado Post(2007), Beigno(2001) Eq51 Pag18 
rho_inflation_1 = 0.8; %Choque tomado de Svensson (2000) Pag 25
rhoi = 0.5;           %Parametros de choque tasa de interes de Gali(2008)
rhoy = 0.9;           %Parametros de choque tecnologico de Gali(2008)
rhoy_star = 0.8;      %Parametros de choque tecnologico externo tomado de Svensson (2000)
rho_inflation = 0.8;  %Parametros de choque tomado de Svensson (2000)
rho_is = 0.8;         %Parametros de Choque tasa de interes externo tomado de Svensson (2000)
beta = exp(-disc);    %(COL)Factor de Descuento de los Flujos. 
                      %(COL)Tomado del Artículo Puede seguirse a Sandra Moreno (Pag 29, Cuadro 2, Beta (0.910,0.988,0.999,1.000,1.018))
phip = 1.77;          %(COL)Tomados de la regla de Taylor Local (precios) Taylor (1993), para Colombia tomado de Inflation Target in Col(2014) Pag 16
phiy = 0.22;          %(COL)Tomados de la regla de Taylor Local (Producto) Taylor(1993), para Colombia tomado de Inflation Target in Col(2014) Pag 16
phip_star = 1.5;      %(COL)Tomados de la regla de Taylor Externa (precios) Sevensson (2000), para Colombia se deja los de Svensson
phiy_star = 0.5;      %(COL)Tomados de la regla de Taylor Externa (Producto) Svensson(2000)
theta = 6.11;         %Parametro tomado de Fuhrer(2000) y  Abel(1999) Pag 23 Elasticidad de Sust = 1/theta
epsilon = 6;          %(COL)Tomado de Gali(2008) parametro para Firmas (Pag 24)
M = epsilon/(epsilon-1);
mu = log(M);
omega = 0.285;        %(COL)Para las Firmas- precios Domesticos. Duracion temporal antes del cambio de los precios (Pag 24) Adolfson et al (2007) tiene valores para dif países
                      %(COL)Valor tomado del articulo Importancia Rigideces Nominales y Reales para Colombia (2012) Pag 62-63 
theta_gamma = gamma*(theta-1);
lambda = ((1-omega)*(1-beta*omega)/theta)*((1-alpha)/(1-alpha+alpha*epsilon));  % Grado Stickness Precios
kappa_y = lambda*((phi+alpha)/(1-alpha));                                       % Ecuacion 59 Parametros Curva Phillips NK con formacion de habitos
kappa_a = lambda*((phi+1)/(1-alpha));                                           % Ecuacion 59 Parametros Curva Phillips NK con formacion de habitos
dsge_prior_weight = 2.5;

model(linear);

ex = y_star + lambda_ex*etha_star*s + (1-lambda_ex)*(ex(-1)-y_star(-1));  %(34) Funcion de Exportaciones
q = (1-delta)*s;                                                          %(47) Tasa de cambio Real 
inflation = inflation_h + delta*(s-s(-1));                                %(45) Inflacion Consumidor Total
c = (1-delta)*c_h + delta*im;                                             %(32) Consumo Total
c_h = etha*delta*s + c;                                                   %(31) Consumo Doméstico
y = ((1-delta)*etha + lambda_ex*etha_star)*delta*s + (1-delta)*c + 
    delta*y_star + delta*(1-lambda_ex)*(ex(-1)-y_star(-1));               %(43) PNB
i = phip*inflation + phiy*y + v;                                          %(23) Política Monetaria (Regla Taylor)
i = i_star - psi*b + (s(+1)-s) + inflation(+1) - inflation_star(+1);      %(53) Condicion de Disparidad de Tasas de Interés
w = phi*n - gamma*(theta-1)*c(-1) + theta*c;                              %(3.2-12) Funcion de Oferta Laboral
-(theta_gamma + theta)*c + z = -theta_gamma*c(-1) - theta*c(+1) + i - inflation(+1);  %(3.2-13) Ecuación IS Economia Abierta
inflation_h = beta*inflation_h(+1) + kappa_y*y - kappa_a*a - 
    lambda*theta_gamma*c(-1) + lambda*theta*c + lambda*delta*s + u;        %(59) Curva de Phillips/Costo Marginal de las Firmas
(1-alpha)*n = y-a;                                                         %(3.4) Funcion de Produccion  
inflation_star = rho_inflation*inflation_star(-1) + inflation_star_shock; %(3.4) Choque CPI Externo
i_star = phip_star*inflation_star + phiy_star*y_star;                    %(3.4) Regla Taylor Política Externa
b = (1+i(-2)-inflation(-1))*b(-1)+y(-1)-c(-1)-delta*s(-1);               %(49) Dinámica de Inversion en Bonos 
nx = delta*(ex-im);                                                      %(36) Balanza Comercial
v = rhoi*v(-1) + Taylor_shock;                                          %(3.4) Choque Politica Monetaria
a = rhoy*a(-1) + output_shock;                                          %(3.4) Choque Tecnologico
z = rho_is*z(-1) + is_shock;                                             %(3.4) Choque por Demanda
y_star = rhoy_star*y_star(-1) + world_output_shock;                     %(3.4) CHoque de Producto Externo
u = rho_inflation_1*u(-1) + philip_shock;                                %(3.4) Choque por la Curva Phillips

end;

check;

initval;
c=0;
c_h=0;
im=0;
s=0;
y=0;
y_star=0;
i=0;
i_star=0;
inflation=0;
inflation_star=0;
n=0;
w=0;
b=0;
a=0;
v=0;
nx=0;
inflation_h=0;
q=0;
ex=0;
u=0;
z=0;
end;

shocks;
 var is_shock = 0.5;
 var Taylor_shock = 0.5;
 var output_shock = 0.5;
 var philip_shock = 0.5;
 var world_output_shock = 0.5;
 var inflation_star_shock = 0.5;
end;

estimated_params;
  %% stderr is_shock,uniform_pdf,,,0,4;
  %% stderr Taylor_shock,uniform_pdf,,,0,4;
  %% stderr output_shock,uniform_pdf,,,0,4;
  %% stderr philip_shock,uniform_pdf,,,0,4;
  %% stderr world_output_shock,uniform_pdf,,,0,4;
  %% stderr inflation_star_shock,uniform_pdf,,,0,4;
  %% phiy,gamma_pdf,0.22,0.12;
  %% phip,gamma_pdf,1.77,0.10;
  %% phiy_star,gamma_pdf,0.5,0.15;
  %% phip_star,gamma_pdf,1.5,0.10; 
  %% rhoi,uniform_pdf,,,0,1; 
  %% rhoy,uniform_pdf,,,0,1; 
  %% alpha,inv_gamma_pdf,0.58,0.10;
  %%%%phi,gamma_pdf,5,1;
  %%%%gamma,uniform_pdf,,,0,1;
  %% delta,gamma_pdf,0.213,0.10; 
  %% rhoy_star,uniform_pdf,,,0,1; 
  %% rho_inflation,uniform_pdf,,,0,1;
  %% rho_inflation_1,uniform_pdf,,,0,1;
  %% rho_is,uniform_pdf,,,0,1;
    dsge_prior_weight,uniform_pdf,,,0,2;    
end; 

varobs c s y i inflation nx;
estimated_params_init(use_calibration);
end;

%initval;
% y = 0;
% inflation = 0;
%end;

%%steady;
%%check;

%%options_.gradient_method = 3;
%%estimation(datafile=data,mh_nblocks=1,nobs=210,mode_compute=9,mode_check,optim=('MaxIter',1000),mh_replic=5000,bayesian_irf,forecast=8);
estimation(datafile=data,dsge_var,first_obs=50,mh_nblocks=1,nobs=210,mode_compute=4,optim=('MaxIter',1000),mh_replic=5000,bayesian_irf,forecast=8);
%%stoch_simul(periods=210, irf=0); 
%%datatomfile('data',[]);

