diff --git a/tests/Makefile.am b/tests/Makefile.am index c64c408933a7db865f87b3b8a8882f989195d808..d564063786e34e20f5d2411db76ee5a564d118d8 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -20,6 +20,7 @@ MODFILES = \ t_sgu_ex1.mod \ osr_example.mod \ optimal_policy/osr_example_objective_correctness.mod \ + optimal_policy/osr_example_objective_correctness_non_stationary_vars.mod \ optimal_policy/ramsey.mod \ optimal_policy/nk_ramsey.mod \ optimal_policy/nk_ramsey_expectation.mod \ diff --git a/tests/optimal_policy/osr_example_objective_correctness_non_stationary_vars.mod b/tests/optimal_policy/osr_example_objective_correctness_non_stationary_vars.mod new file mode 100644 index 0000000000000000000000000000000000000000..4720a2566f7c49c7418b379acb59cb6fb2db49f8 --- /dev/null +++ b/tests/optimal_policy/osr_example_objective_correctness_non_stationary_vars.mod @@ -0,0 +1,636 @@ +//This mod-file tests the value of the objective function in the presence of non-stationary variables + +Var + + +p_U_Hat + +pi_U_Hat +r_Hat +r_Gap +r_Eff +realrate_U_Hat +realrate_U_Eff +realrate_U_Gap + + +c_U_Gap +c_U_Eff +c_U_Hat +g_U_Gap +g_U_Eff +g_U_Hat + +y_U_Gap +y_U_Eff +y_U_Hat + +l_U_Gap +l_U_Eff +l_U_Hat + +a_U_Hat + + + +p_A_Hat +pc_A_Hat + +tt_A_Hat +tt_A_Gap +tt_A_Eff + +pi_A_Hat +pic_A_Hat +c_A_Gap +c_A_Eff +c_A_Hat + +g_A_Gap +g_A_Eff +g_A_Hat + +realrate_A_Hat + +l_A_Gap +l_A_Eff +l_A_Hat + +muW_A_Hat +y_A_Gap +y_A_Eff +y_A_Hat + +a_A_Hat +mc_A_Hat + +tau_A_Hat +tau_A_Gap +tau_A_Eff + +Kdebt_A + + + + + + +p_B_Hat +pc_B_Hat + +tt_B_Hat +tt_B_Gap +tt_B_Eff + +pi_B_Hat +pic_B_Hat +c_B_Gap +c_B_Eff +c_B_Hat + +g_B_Gap +g_B_Eff +g_B_Hat + +realrate_B_Hat + +l_B_Gap +l_B_Eff +l_B_Hat + +muW_B_Hat +y_B_Gap +y_B_Eff +y_B_Hat + +a_B_Hat +mc_B_Hat + +tau_B_Hat +tau_B_Gap +tau_B_Eff + +Kdebt_B + + +; + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%DECLARATION OF EXOGENOUS VARIABLES%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Varexo + +eps_muW_A +eps_a_A + +eps_muW_B +eps_a_B + +; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%DECLARATION OF PARAMETERS%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +parameters +n +alpha +beta +rho +lambdaA +lambdaB +sigma +chi +psi + +epsilon +muP +gamma +ell +phi_GY +phi_caps + +theta_A + +theta_B + +phi_A +phi_B + + +%%%%%% +//Rule Parameters + +ruleR_U_y +ruleR_U_pi +ruleR_U_debt + +ruleG_A_y +ruleG_A_tt +ruleG_A_debt + + +ruleG_B_y +ruleG_B_tt +ruleG_B_debt + + + +ruleT_A_y +ruleT_A_tt +ruleT_A_debt + + + +ruleT_B_y +ruleT_B_tt +ruleT_B_debt + +%%%%%% + + + +rho_a_A +rho_a_B +rho_muW_A +rho_muW_B +rho_mp + + + +r_SS + +muW_SS +tau_A_SS +DebtOutput_A_SS + + +tau_B_SS +DebtOutput_B_SS + + +; + + +%%%%%%%%%%%%%%%%%%%%%%%% +%%SET PARAMETER VALUES%% +%%%%%%CALIBRATION%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%% +n = 0.5; +alpha = 0.4; +beta = 0.99 ; +rho = -log(beta); +lambdaA = 1-(1-n)*alpha; +lambdaB = 1-n*alpha; +sigma = 0.4; +chi = 3; +psi = 0.4; + +epsilon = 11; +muP = 1/(epsilon - 1); +gamma = 4.5; +ell = 11; + +phi_GY = 0.25; +phi_caps = alpha*(gamma-(1-alpha)*(-gamma+sigma)); + +theta_A = 0.75; +theta_B = 0.75; +phi_A = (1 - theta_A*beta)*(1 - theta_A)/(theta_A*(1 + epsilon*chi)); +phi_B = (1 - theta_B*beta)*(1 - theta_B)/(theta_B*(1 + epsilon*chi)); + + + + +//Rule Parameters + +ruleR_U_y = 0.5; +ruleR_U_pi = 1.5; +ruleR_U_debt = 0; + + +ruleG_A_y = 0; +ruleG_A_tt = 0; +ruleG_A_debt = -0.05; + + +ruleG_B_y = ruleG_A_y; +ruleG_B_tt = 0; +ruleG_B_debt = ruleG_A_debt; + + +ruleT_A_y = 0; +ruleT_A_tt = 0; +ruleT_A_debt = 0.05; + + +ruleT_B_y = ruleT_A_y; +ruleT_B_tt = 0; +ruleT_B_debt = ruleT_A_debt; + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +rho_a_A = 0.85; +rho_a_B = 0.85; +rho_muW_A = 0; +rho_muW_B = 0; +rho_mp = 0; + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%% STEADY STATE VALUES %%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +muW_SS = 1/(ell - 1); + +r_SS = log(1/beta); + +DebtOutput_A_SS = 4*0.6; + +DebtOutput_B_SS = 4*0.6; + + +tau_A_SS = phi_GY + r_SS*DebtOutput_A_SS; +tau_B_SS = phi_GY + r_SS*DebtOutput_B_SS; + + + + + + + +model(linear); + + +p_U_Hat = n*p_A_Hat + (1-n)*p_B_Hat; +pi_U_Hat = n*pi_A_Hat + (1-n)*pi_B_Hat; + + +c_U_Gap = c_U_Gap(+1)- sigma*(r_Gap - pi_U_Hat(+1)); + + +realrate_U_Gap = realrate_U_Hat - realrate_U_Eff; +realrate_U_Eff = ((1 + chi)/(1 + chi*(phi_GY*psi + (1 - phi_GY)*sigma)))*(a_U_Hat(+1) - a_U_Hat); + +realrate_U_Hat = r_Hat - pi_U_Hat(+1); + + +r_Eff = ((1 + chi)/(1 + chi*(phi_GY*psi + (1 - phi_GY)*sigma)))*(a_U_Hat(+1) - a_U_Hat); +r_Hat = r_Gap + r_Eff; + + + +// Interest rate rule +r_Gap = ruleR_U_y*y_U_Gap(-1) + ruleR_U_pi*pi_U_Hat(-1) + ruleR_U_debt*(n*Kdebt_A(-1) + (1-n)*Kdebt_B(-1)); + + + + +c_U_Gap = n*c_A_Gap + (1-n)*c_B_Gap; +c_U_Eff = n*c_A_Eff + (1-n)*c_B_Eff; +c_U_Hat = n*c_A_Hat + (1-n)*c_B_Hat; + +g_U_Gap = n*g_A_Gap + (1-n)*g_B_Gap; +g_U_Eff = n*g_A_Eff + (1-n)*g_B_Eff; +g_U_Hat = n*g_A_Hat + (1-n)*g_B_Hat; + + +y_U_Gap = n*y_A_Gap + (1-n)*y_B_Gap; +y_U_Eff = n*y_A_Eff + (1-n)*y_B_Eff; +y_U_Hat = n*y_A_Hat + (1-n)*y_B_Hat; + +l_U_Gap = n*l_A_Gap + (1-n)*l_B_Gap; +l_U_Eff = n*l_A_Eff + (1-n)*l_B_Eff; +l_U_Hat = n*l_A_Hat + (1-n)*l_B_Hat; + +a_U_Hat = n*a_A_Hat + (1-n)*a_B_Hat; + + +tt_A_Hat = (p_U_Hat - p_A_Hat)/(1-n); + +pi_A_Hat = p_A_Hat - p_A_Hat(-1); +pic_A_Hat = pc_A_Hat - pc_A_Hat(-1); + + +pic_A_Hat = pi_A_Hat + (1-lambdaA)*(tt_A_Hat - tt_A_Hat(-1)); + + + +c_A_Eff = (((1 + chi)*sigma)/(1 + chi*(phi_GY*psi + (1 - phi_GY)*sigma)))*a_U_Hat + (((1 - alpha)*(1 + chi)*sigma)/(1 + chi*(phi_GY*psi + (1 - phi_GY)*(gamma + (sigma - gamma)*(1 - 2*alpha + alpha*alpha)))))*(a_A_Hat - a_U_Hat); + +g_A_Eff = (((1 + chi)*psi)/(1 + chi*(phi_GY*psi + (1 - phi_GY)*sigma)))*a_U_Hat + (((1 + chi)*psi)/(1 + chi*(phi_GY*psi + (1 - phi_GY)*(gamma + (sigma - gamma)*(1 - 2*alpha + alpha*alpha)))))*(a_A_Hat - a_U_Hat); + +y_A_Eff = (((1 + chi)*(phi_GY*psi + (1 - phi_GY)*sigma))/(1 + chi*(phi_GY*psi + (1 - phi_GY)*sigma)))*a_U_Hat + (((1 + chi)*(phi_GY*psi + (1 - phi_GY)*(gamma + (sigma - gamma)*(1 - 2*alpha + alpha*alpha))))/(1 + chi*(phi_GY*psi + (1 - phi_GY)*(gamma + (sigma - gamma)*(1 - 2*alpha + alpha*alpha)))))*(a_A_Hat - a_U_Hat); + +l_A_Eff = y_A_Eff - a_A_Hat; + + +realrate_A_Hat = r_Hat - pic_A_Hat(+1); + + +tt_A_Gap = tt_A_Hat - tt_A_Eff; +tt_A_Eff = ((1 + chi)/(1 + chi*(phi_GY*psi + (1 - phi_GY)*(gamma + (sigma - gamma)*(1 - 2*alpha + alpha*alpha)))))*((a_A_Hat - a_U_Hat)/(1-n)); + + +y_A_Gap = l_A_Gap; + + +pi_A_Hat = beta*pi_A_Hat(+1)+ phi_A*mc_A_Hat; + +mc_A_Hat = tau_A_Gap/(1 - tau_A_SS) +(chi + 1/((1- phi_GY)*(phi_caps+sigma*(1-alpha))))* y_A_Gap - (phi_GY /((1- phi_GY)*(phi_caps+sigma*(1-alpha))))*g_A_Gap + (1/(sigma*(1- phi_GY))- 1/((1- phi_GY)*(phi_caps+sigma*(1-alpha))))* y_U_Gap - phi_GY *(1/(sigma*(1 - phi_GY)) - 1/((1- phi_GY)*(phi_caps+sigma*(1-alpha))))*g_U_Gap; + + +tau_A_Hat = tau_A_Gap + tau_A_Eff; +tau_A_Eff = - (1 - tau_A_SS)*muW_A_Hat; + + +y_A_Gap = (1- phi_GY)*c_U_Gap + (1 - phi_GY)*(sigma*(1 - alpha) + phi_caps)*(1-n)*tt_A_Gap + phi_GY*g_A_Gap; + + + +Kdebt_A - ((1 + r_SS)/r_SS)*(tau_A_SS - phi_GY)*r_Hat= (1/beta)*(Kdebt_A(-1) - ((1 + r_SS)/r_SS)*(tau_A_SS - phi_GY)*pi_A_Hat + (phi_GY*g_A_Gap - tau_A_SS*y_A_Gap - tau_A_Gap)) + (1/beta)*(phi_GY*g_A_Eff - tau_A_SS*y_A_Eff + (1 - tau_A_SS)*muW_A_Hat) + (1/beta)*((1 + r_SS)/r_SS)*(tau_A_SS - phi_GY)*alpha*(1-n)*(tt_A_Gap(-1) -(1/(1 + r_SS))*tt_A_Gap) + (1/beta)*((1 + r_SS)/r_SS)*(tau_A_SS - phi_GY)*alpha*(1-n)*(tt_A_Eff(-1) -(1/(1 + r_SS))*tt_A_Eff); + + + +//FISCAL RULES + +g_A_Gap = ruleG_A_y*(y_A_Gap(-1) - y_U_Gap(-1)) + ruleG_A_tt*tt_A_Gap(-1) + ruleG_A_debt*Kdebt_A(-1); + +tau_A_Gap = ruleT_A_y*(y_A_Gap(-1) - y_U_Gap(-1)) + ruleT_A_tt*tt_A_Gap(-1)+ ruleT_A_debt*Kdebt_A(-1); + + +c_A_Hat = c_A_Gap + c_A_Eff; +g_A_Hat = g_A_Gap + g_A_Eff; +y_A_Hat = y_A_Gap + y_A_Eff; +l_A_Hat = l_A_Gap + l_A_Eff; + + + + + + + +tt_B_Hat = (p_U_Hat - p_B_Hat)/n; + +pi_B_Hat = p_B_Hat - p_B_Hat(-1); +pic_B_Hat = pc_B_Hat - pc_B_Hat(-1); + +pic_B_Hat = pi_B_Hat + (1-lambdaB)*(tt_B_Hat - tt_B_Hat(-1)); + + +c_B_Eff = (((1 + chi)*sigma)/(1 + chi*(phi_GY*psi + (1 - phi_GY)*sigma)))*a_U_Hat + (((1 - alpha)*(1 + chi)*sigma)/(1 + chi*(phi_GY*psi + (1 - phi_GY)*(gamma + (sigma - gamma)*(1 - 2*alpha + alpha*alpha)))))*(a_B_Hat - a_U_Hat); + +g_B_Eff = (((1 + chi)*psi)/(1 + chi*(phi_GY*psi + (1 - phi_GY)*sigma)))*a_U_Hat + (((1 + chi)*psi)/(1 + chi*(phi_GY*psi + (1 - phi_GY)*(gamma + (sigma - gamma)*(1 - 2*alpha + alpha*alpha)))))*(a_B_Hat - a_U_Hat); + +y_B_Eff = (((1 + chi)*(phi_GY*psi + (1 - phi_GY)*sigma))/(1 + chi*(phi_GY*psi + (1 - phi_GY)*sigma)))*a_U_Hat + (((1 + chi)*(phi_GY*psi + (1 - phi_GY)*(gamma + (sigma - gamma)*(1 - 2*alpha + alpha*alpha))))/(1 + chi*(phi_GY*psi + (1 - phi_GY)*(gamma + (sigma - gamma)*(1 - 2*alpha + alpha*alpha)))))*(a_B_Hat - a_U_Hat); + +l_B_Eff = y_B_Eff - a_B_Hat; + + +realrate_B_Hat = r_Hat - pic_B_Hat(+1); + + +c_A_Gap = c_B_Gap + sigma*(1 - alpha)*((1-n)*tt_A_Gap-n*(tt_B_Gap)); + + +tt_B_Gap = tt_B_Hat - tt_B_Eff; +tt_B_Eff = ((1 + chi)/(1 + chi*(phi_GY*psi + (1 - phi_GY)*(gamma + (sigma - gamma)*(1 - 2*alpha + alpha*alpha)))))*((a_B_Hat - a_U_Hat)/n); + + +y_B_Gap = l_B_Gap; //l_B_Gap = y_B_Gap + z_B , up to a first order approximation z_B=0 + + +pi_B_Hat = beta*pi_B_Hat(+1)+ phi_B*mc_B_Hat; + +mc_B_Hat = tau_B_Gap/(1 - tau_B_SS) +(chi + 1/((1- phi_GY)*(phi_caps+sigma*(1-alpha))))* y_B_Gap - (phi_GY /((1- phi_GY)*(phi_caps+sigma*(1-alpha))))*g_B_Gap + (1/(sigma*(1- phi_GY))- 1/((1- phi_GY)*(phi_caps+sigma*(1-alpha))))* y_U_Gap - phi_GY *(1/(sigma*(1 - phi_GY)) - 1/((1- phi_GY)*(phi_caps+sigma*(1-alpha))))*g_U_Gap; + + +tau_B_Hat = tau_B_Gap + tau_B_Eff; +tau_B_Eff = - (1 - tau_B_SS)*muW_B_Hat; + + +y_B_Gap = (1- phi_GY)*c_U_Gap + (1 - phi_GY)*(sigma*(1 - alpha) + phi_caps)*n*tt_B_Gap + phi_GY*g_B_Gap; + + +Kdebt_B - ((1 + r_SS)/r_SS)*(tau_B_SS - phi_GY)*r_Hat= (1/beta)*(Kdebt_B(-1) - ((1 + r_SS)/r_SS)*(tau_B_SS - phi_GY)*pi_B_Hat + (phi_GY*g_B_Gap - tau_B_SS*y_B_Gap - tau_B_Gap)) + (1/beta)*(phi_GY*g_B_Eff - tau_B_SS*y_B_Eff + (1 - tau_B_SS)*muW_B_Hat) + (1/beta)*((1 + r_SS)/r_SS)*(tau_B_SS - phi_GY)*alpha*n*(tt_B_Gap(-1) -(1/(1 + r_SS))*tt_B_Gap) + (1/beta)*((1 + r_SS)/r_SS)*(tau_B_SS - phi_GY)*alpha*n*(tt_B_Eff(-1) -(1/(1 + r_SS))*tt_B_Eff); + + + + +//FISCAL RULES + +g_B_Gap = ruleG_B_y*(y_B_Gap(-1) - y_U_Gap(-1)) + ruleG_B_tt*tt_B_Gap(-1) + ruleG_B_debt*Kdebt_B(-1); // function of domestic inflation since government spending is oriented only to domestic production + +tau_B_Gap = ruleT_B_y*(y_B_Gap(-1) - y_U_Gap(-1)) + ruleT_B_tt*tt_B_Gap(-1) + ruleT_B_debt*Kdebt_B(-1); // function of domenstic inflation(!?) + + + +c_B_Hat = c_B_Gap + c_B_Eff; +g_B_Hat = g_B_Gap + g_B_Eff; +y_B_Hat = y_B_Gap + y_B_Eff; +l_B_Hat = l_B_Gap + l_B_Eff; + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%% Exogenous processes %%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +a_A_Hat = rho_a_A* a_A_Hat(-1) + eps_a_A; +a_B_Hat = rho_a_B* a_B_Hat(-1) + eps_a_B; + +muW_A_Hat = rho_muW_A*muW_A_Hat(-1) + eps_muW_A; +muW_B_Hat = rho_muW_B*muW_B_Hat(-1) + eps_muW_B; + + +end; + + + +shocks; + +var eps_a_B; stderr 1; +var eps_a_A; stderr 1; + +var eps_muW_B; stderr 1; +var eps_muW_A; stderr 1; + +end; + + +steady; +//check; //do not use this command under optimal policy!!! + +//stoch_simul(order=1, irf=100); + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Optimized Simple Rule (osr) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +optim_weights; + //for country A + +pi_A_Hat (1/2)*n*(epsilon/phi_A); +c_A_Gap (1/2)*n*(1 - phi_GY)*(1/sigma + (1 - phi_GY)*chi); +g_A_Gap (1/2)*n*phi_GY*(1/psi + phi_GY*chi); +tt_A_Gap (1/2)*n*(1 - phi_GY)*(gamma*alpha*(alpha - 2) + 2*phi_caps + (1 - phi_GY)*(phi_caps^2)*chi)*((1-n)^2); + +c_A_Gap, g_A_Gap (1/2)*(1/2)*n*2*phi_GY*(1 - phi_GY)*chi; +c_A_Gap, tt_A_Gap (1/2)*(1/2)*n*(1 - phi_GY)*(2*alpha + 2*(1 - phi_GY)*phi_caps*chi)*(1-n); +g_A_Gap, tt_A_Gap (1/2)*(1/2)*n*2*phi_GY*(1 - phi_GY)*phi_caps*chi*(1-n); + +g_A_Gap, c_A_Gap (1/2)*(1/2)*n*2*phi_GY*(1 - phi_GY)*chi; +tt_A_Gap, c_A_Gap (1/2)*(1/2)*n*(1 - phi_GY)*(2*alpha + 2*(1 - phi_GY)*phi_caps*chi)*(1-n); +tt_A_Gap, g_A_Gap (1/2)*(1/2)*n*2*phi_GY*(1 - phi_GY)*phi_caps*chi*(1-n); + + + + //now, the same for country B +pi_B_Hat (1/2)*(1-n)*(epsilon/phi_B); +c_B_Gap (1/2)*(1-n)*(1 - phi_GY)*(1/sigma + (1 - phi_GY)*chi); +g_B_Gap (1/2)*(1-n)*phi_GY*(1/psi + phi_GY*chi); +tt_B_Gap (1/2)*(1-n)*(1 - phi_GY)*(gamma*alpha*(alpha - 2) + 2*phi_caps + (1 - phi_GY)*(phi_caps^2)*chi)*(n^2); + +c_B_Gap, g_B_Gap (1/2)*(1/2)*(1-n)*2*phi_GY*(1 - phi_GY)*chi; +c_B_Gap, tt_B_Gap (1/2)*(1/2)*(1-n)*(1 - phi_GY)*(2*alpha + 2*(1 - phi_GY)*phi_caps*chi)*n; +g_B_Gap, tt_B_Gap (1/2)*(1/2)*(1-n)*2*phi_GY*(1 - phi_GY)*phi_caps*chi*n; + +g_B_Gap, c_B_Gap (1/2)*(1/2)*(1-n)*2*phi_GY*(1 - phi_GY)*chi; +tt_B_Gap, c_B_Gap (1/2)*(1/2)*(1-n)*(1 - phi_GY)*(2*alpha + 2*(1 - phi_GY)*phi_caps*chi)*n; +tt_B_Gap, g_B_Gap (1/2)*(1/2)*(1-n)*2*phi_GY*(1 - phi_GY)*phi_caps*chi*n; + +end; + + + +osr_params + + +ruleR_U_y +ruleR_U_pi +ruleR_U_debt + + + + +ruleG_A_y +ruleG_A_tt +ruleG_A_debt + + + +ruleG_B_y +ruleG_B_tt +ruleG_B_debt + + + +ruleT_A_y +ruleT_A_tt +ruleT_A_debt + + + +ruleT_B_y +ruleT_B_tt +ruleT_B_debt + +; + +osr(irf=5,maxit=10000, nograph); + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +asymptotic_loss=((1/2)*n*(epsilon/phi_A))... + *oo_.var(strmatch('pi_A_Hat',M_.endo_names,'exact'),strmatch('pi_A_Hat',M_.endo_names,'exact'))+... + ((1/2)*n*(1 - phi_GY)*(1/sigma + (1 - phi_GY)*chi))... + *oo_.var(strmatch('c_A_Gap',M_.endo_names,'exact'),strmatch('c_A_Gap',M_.endo_names,'exact'))+... + ((1/2)*n*phi_GY*(1/psi + phi_GY*chi))... + *oo_.var(strmatch('g_A_Gap',M_.endo_names,'exact'),strmatch('g_A_Gap',M_.endo_names,'exact'))+... + ((1/2)*n*(1 - phi_GY)*(gamma*alpha*(alpha - 2) + 2*phi_caps + (1 - phi_GY)*(phi_caps^2)*chi)*((1-n)^2))... + *oo_.var(strmatch('tt_A_Gap',M_.endo_names,'exact'),strmatch('tt_A_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1/2)*n*2*phi_GY*(1 - phi_GY)*chi)... + *oo_.var(strmatch('c_A_Gap',M_.endo_names,'exact'),strmatch('g_A_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1/2)*n*(1 - phi_GY)*(2*alpha + 2*(1 - phi_GY)*phi_caps*chi)*(1-n))... + *oo_.var(strmatch('c_A_Gap',M_.endo_names,'exact'),strmatch('tt_A_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1/2)*n*2*phi_GY*(1 - phi_GY)*phi_caps*chi*(1-n))... + *oo_.var(strmatch('g_A_Gap',M_.endo_names,'exact'),strmatch('tt_A_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1/2)*n*2*phi_GY*(1 - phi_GY)*chi)... + *oo_.var(strmatch('g_A_Gap',M_.endo_names,'exact'),strmatch('c_A_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1/2)*n*(1 - phi_GY)*(2*alpha + 2*(1 - phi_GY)*phi_caps*chi)*(1-n))... + *oo_.var(strmatch('tt_A_Gap',M_.endo_names,'exact'),strmatch('c_A_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1/2)*n*2*phi_GY*(1 - phi_GY)*phi_caps*chi*(1-n))... + *oo_.var(strmatch('tt_A_Gap',M_.endo_names,'exact'),strmatch('g_A_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1-n)*(epsilon/phi_B))... + *oo_.var(strmatch('pi_B_Hat',M_.endo_names,'exact'),strmatch('pi_B_Hat',M_.endo_names,'exact'))+... + ((1/2)*(1-n)*(1 - phi_GY)*(1/sigma + (1 - phi_GY)*chi))... + *oo_.var(strmatch('c_B_Gap',M_.endo_names,'exact'),strmatch('c_B_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1-n)*phi_GY*(1/psi + phi_GY*chi))... + *oo_.var(strmatch('g_B_Gap',M_.endo_names,'exact'),strmatch('g_B_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1-n)*(1 - phi_GY)*(gamma*alpha*(alpha - 2) + 2*phi_caps + (1 - phi_GY)*(phi_caps^2)*chi)*(n^2))... + *oo_.var(strmatch('tt_B_Gap',M_.endo_names,'exact'),strmatch('tt_B_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1/2)*(1-n)*2*phi_GY*(1 - phi_GY)*chi)... + *oo_.var(strmatch('c_B_Gap',M_.endo_names,'exact'),strmatch('g_B_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1/2)*(1-n)*(1 - phi_GY)*(2*alpha + 2*(1 - phi_GY)*phi_caps*chi)*n)... + *oo_.var(strmatch('c_B_Gap',M_.endo_names,'exact'),strmatch('tt_B_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1/2)*(1-n)*2*phi_GY*(1 - phi_GY)*phi_caps*chi*n)... + *oo_.var(strmatch('g_B_Gap',M_.endo_names,'exact'),strmatch('tt_B_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1/2)*(1-n)*2*phi_GY*(1 - phi_GY)*chi)... + *oo_.var(strmatch('g_B_Gap',M_.endo_names,'exact'),strmatch('c_B_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1/2)*(1-n)*(1 - phi_GY)*(2*alpha + 2*(1 - phi_GY)*phi_caps*chi)*n)... + *oo_.var(strmatch('tt_B_Gap',M_.endo_names,'exact'),strmatch('c_B_Gap',M_.endo_names,'exact'))+... + ((1/2)*(1/2)*(1-n)*2*phi_GY*(1 - phi_GY)*phi_caps*chi*n)... + *oo_.var(strmatch('tt_B_Gap',M_.endo_names,'exact'),strmatch('g_B_Gap',M_.endo_names,'exact')); + +if abs(asymptotic_loss-oo_.osr.objective_function)>1e-10 + error('Objective Function with Non-stationary Variables is wrong') +end + + \ No newline at end of file