%CONSTRAINTS.M %Equilibrium conditions (constraints of the Ramsey problem) of the model in ``Optimal, Simple, and Implementable Monetary and Fiscal Rules'' by S. Schmitt-Grohe and Martin Uribe (2006) %(c) Stephanie Schmitt-Grohe and Martin Uribe, March 2006 function [constraints_cu, constraints_ba1, constraints_fu1] = constraints; allsyms %CONSTRAINTS_CURRENT ac_cu = iv_cu * (1 - PSSI/2 * (iv_cu/iv_ba1-1)^2); e1_cu = -k_cup + (1-DELTA) * k_cu + ac_cu; e2_cu = - c_cu^(-SIGMA) * (1- h_cu)^(GAMA*(1-SIGMA)) + la_cu * (1 + NUH * (1 - 1/ r_cu)); e3_cu = -GAMA * c_cu / (1- h_cu) + w_cu * (1 - taud_cu) / (1+NUH*(1-1/r_cu)); ac_cup = iv_cup * (1 - PSSI/2 * (iv_cup/iv_cu-1)^2); e4_cu = -la_cu + la_cu * q_cu * diff(ac_cu,'iv_cu') + BETTA * la_cup * q_cup * diff(ac_cup,'iv_cu'); e5_cu = -la_cu * q_cu + BETTA * la_cup * ((1-taud_cup)* u_cup + q_cup * (1-DELTA)); e6_cu = -la_cu + BETTA * r_cu * la_cup / pai_cup; e7_cu = -mc_cu * z_cu * (1-THETA) * (k_cu/h_cu)^THETA + w_cu * (1+ NUF * (1-1/r_cu) ); e8_cu = -u_cu + mc_cu * z_cu * THETA * (k_cu / h_cu )^(THETA-1); e9_cu = -m_cu + NUH * c_cu + NUF * w_cu * h_cu; e10_cu = -1 + ALFA * pai_cu^(-1+ETA) + (1 - ALFA) * ptil_cu^(1-ETA); e11_cu = -x1_cu + ptil_cu^(-1-ETA ) * output_cu * mc_cu + ALFA * BETTA * la_cup / la_cu * pai_cup^(ETA) * (ptil_cu/ ptil_cup)^(-1-ETA) * x1_cup; e12_cu = -x2_cu + ptil_cu^(-ETA) * output_cu + ALFA*BETTA* la_cup / la_cu * pai_cup^(ETA-1) * (ptil_cu/ptil_cup)^(-ETA) * x2_cup; e13_cu = -x2_cu + ETA/(ETA-1) * x1_cu; e14_cu = - s_cup * output_cu + z_cu * k_cu^THETA * h_cu^(1-THETA) - CHI; e15_cu = - output_cu + c_cu + iv_cu + g_cu; e16_cu = -s_cup + (1-ALFA) * ptil_cu^(-ETA) + ALFA* pai_cu^(ETA) * s_cu; %Create vector of current constraints constraints_cu = [e1_cu; -e2_cu; e3_cu; e4_cu; e5_cu; e6_cu; -e7_cu; e8_cu; -e9_cu; e10_cu; -e11_cu; e12_cu; -e13_cu; e14_cu; -e15_cu; -e16_cu]; %CONSTRAINTS_PAST ac_ba1 = iv_ba1 * (1 - PSSI/2 * (iv_ba1/iv_ba2-1)^2); e1_ba1 = -k_ba1p + (1-DELTA) * k_ba1 + ac_ba1; e2_ba1 = - c_ba1^(-SIGMA) * (1- h_ba1)^(GAMA*(1-SIGMA)) + la_ba1 * (1 + NUH * (1 - 1/ r_ba1)); e3_ba1 = -GAMA * c_ba1 / (1- h_ba1) + w_ba1 * (1 - taud_ba1) / (1+NUH*(1-1/r_ba1)); ac_ba1p = iv_ba1p * (1 - PSSI/2 * (iv_ba1p/iv_ba1-1)^2); e4_ba1 = -la_ba1 + la_ba1 * q_ba1 * diff(ac_ba1,'iv_ba1') + BETTA * la_ba1p * q_ba1p * diff(ac_ba1p,'iv_ba1'); e5_ba1 = -la_ba1 * q_ba1 + BETTA * la_ba1p * ((1-taud_ba1p)* u_ba1p + q_ba1p * (1-DELTA)); e6_ba1 = -la_ba1 + BETTA * r_ba1 * la_ba1p / pai_ba1p; e7_ba1 = -mc_ba1 * z_ba1 * (1-THETA) * (k_ba1/h_ba1)^THETA + w_ba1 * (1+ NUF * (1-1/r_ba1) ); e8_ba1 = -u_ba1 + mc_ba1 * z_ba1 * THETA * (k_ba1 / h_ba1 )^(THETA-1); e9_ba1 = -m_ba1 + NUH * c_ba1 + NUF * w_ba1 * h_ba1; e10_ba1 = -1 + ALFA * pai_ba1^(-1+ETA) + (1 - ALFA) * ptil_ba1^(1-ETA); e11_ba1 = -x1_ba1 + ptil_ba1^(-1-ETA ) * output_ba1 * mc_ba1 + ALFA * BETTA * la_ba1p / la_ba1 * pai_ba1p^(ETA) * (ptil_ba1/ ptil_ba1p)^(-1-ETA) * x1_ba1p; e12_ba1 = -x2_ba1 + ptil_ba1^(-ETA) * output_ba1 + ALFA*BETTA* la_ba1p / la_ba1 * pai_ba1p^(ETA-1) * (ptil_ba1/ptil_ba1p)^(-ETA) * x2_ba1p; e13_ba1 = -x2_ba1 + ETA/(ETA-1) * x1_ba1; e14_ba1 = - s_ba1p * output_ba1 + z_ba1 * k_ba1^THETA * h_ba1^(1-THETA) - CHI; e15_ba1 = - output_ba1 + c_ba1 + iv_ba1 + g_ba1; e16_ba1 = -s_ba1p + (1-ALFA) * ptil_ba1^(-ETA) + ALFA* pai_ba1^(ETA) * s_ba1; %Create vector of current constraints constraints_ba1 = [e1_ba1; -e2_ba1; e3_ba1; e4_ba1; e5_ba1; e6_ba1; -e7_ba1; e8_ba1; -e9_ba1; e10_ba1; -e11_ba1; e12_ba1; -e13_ba1; e14_ba1; -e15_ba1; -e16_ba1]; %CONSTRAINTS_FUTURE ac_fu1 = iv_fu1 * (1 - PSSI/2 * (iv_fu1/iv_cu-1)^2); e1_fu1 = -k_fu1p + (1-DELTA) * k_fu1 + ac_fu1; e2_fu1 = - c_fu1^(-SIGMA) * (1- h_fu1)^(GAMA*(1-SIGMA)) + la_fu1 * (1 + NUH * (1 - 1/ r_fu1)); e3_fu1 = -GAMA * c_fu1 / (1- h_fu1) + w_fu1 * (1 - taud_fu1) / (1+NUH*(1-1/r_fu1)); ac_fu1p = iv_fu1p * (1 - PSSI/2 * (iv_fu1p/iv_fu1-1)^2); e4_fu1 = -la_fu1 + la_fu1 * q_fu1 * diff(ac_fu1,'iv_fu1') + BETTA * la_fu1p * q_fu1p * diff(ac_fu1p,'iv_fu1'); e5_fu1 = -la_fu1 * q_fu1 + BETTA * la_fu1p * ((1-taud_fu1p)* u_fu1p + q_fu1p * (1-DELTA)); e6_fu1 = -la_fu1 + BETTA * r_fu1 * la_fu1p / pai_fu1p; e7_fu1 = -mc_fu1 * z_fu1 * (1-THETA) * (k_fu1/h_fu1)^THETA + w_fu1 * (1+ NUF * (1-1/r_fu1) ); e8_fu1 = -u_fu1 + mc_fu1 * z_fu1 * THETA * (k_fu1 / h_fu1 )^(THETA-1); e9_fu1 = -m_fu1 + NUH * c_fu1 + NUF * w_fu1 * h_fu1; e10_fu1 = -1 + ALFA * pai_fu1^(-1+ETA) + (1 - ALFA) * ptil_fu1^(1-ETA); e11_fu1 = -x1_fu1 + ptil_fu1^(-1-ETA ) * output_fu1 * mc_fu1 + ALFA * BETTA * la_fu1p / la_fu1 * pai_fu1p^(ETA) * (ptil_fu1/ ptil_fu1p)^(-1-ETA) * x1_fu1p; e12_fu1 = -x2_fu1 + ptil_fu1^(-ETA) * output_fu1 + ALFA*BETTA* la_fu1p / la_fu1 * pai_fu1p^(ETA-1) * (ptil_fu1/ptil_fu1p)^(-ETA) * x2_fu1p; e13_fu1 = -x2_fu1 + ETA/(ETA-1) * x1_fu1; e14_fu1 = - s_fu1p * output_fu1 + z_fu1 * k_fu1^THETA * h_fu1^(1-THETA) - CHI; e15_fu1 = - output_fu1 + c_fu1 + iv_fu1 + g_fu1; e16_fu1 = -s_fu1p + (1-ALFA) * ptil_fu1^(-ETA) + ALFA* pai_fu1^(ETA) * s_fu1; %Create vector of current constraints constraints_fu1 = [e1_fu1; -e2_fu1; e3_fu1; e4_fu1; e5_fu1; e6_fu1; -e7_fu1; e8_fu1; -e9_fu1; e10_fu1; -e11_fu1; e12_fu1; -e13_fu1; e14_fu1; -e15_fu1; -e16_fu1];