diff --git a/tests/ep/mean_preserving_spread.m b/tests/ep/mean_preserving_spread.m new file mode 100644 index 0000000000000000000000000000000000000000..9d988fe1281b9fc4d2f734c7232e88ad05b49d49 --- /dev/null +++ b/tests/ep/mean_preserving_spread.m @@ -0,0 +1,18 @@ +function m = mean_preserving_spread(autoregressive_parameter) +% Computes the mean preserving spread for first order autoregressive process. +% +% The mean preserving spread m is a constant such that the mean of the process +% +% X_t = X^{\star} * e^{x_t - m} +% x_t = \rho x_{t-1} + \varepsilon_t +% \varepsilon_t \sim N(0,\sigma^2) +% +% is X^{\star}. This constant is such that the unconditional expectation of X_t is equal +% to the deterministic steady state of X_t +% +% AUTHOR(S) +% stephane DOT adjemian AT univ DASH lemans DOT fr +% frederic DOT karame AT univ DASH evry DOT fr +global M_ + +m = M_.Sigma_e/(1-autoregressive_parameter*autoregressive_parameter); \ No newline at end of file diff --git a/tests/ep/rbc.mod b/tests/ep/rbc.mod new file mode 100644 index 0000000000000000000000000000000000000000..304dc76fa59c43b9eb57e46b85f120702b6c89c3 --- /dev/null +++ b/tests/ep/rbc.mod @@ -0,0 +1,52 @@ +var Capital, Output, Labour, Consumption, Efficiency, efficiency; + +varexo EfficiencyInnovation; + +parameters beta, theta, tau, alpha, psi, delta, rho, effstar, sigma2; + +/* +** Calibration +*/ + + +beta = 0.990; +theta = 0.357; +tau = 2.000; +alpha = 0.450; +psi = -0.500; +delta = 0.020; +rho = 0.950; +effstar = 1.000; +sigma2 = 0.001; + +external_function(name=mean_preserving_spread); + +model(block,bytecode); + + // Eq. n°1: + efficiency = rho*efficiency(-1) + EfficiencyInnovation; + + // Eq. n°2: + Efficiency = effstar*exp(efficiency-mean_preserving_spread(rho)); + + // Eq. n°3: + Output = Efficiency*(alpha*(Capital(-1)^psi)+(1-alpha)*(Labour^psi))^(1/psi); + + // Eq. n°4: + Consumption + Capital - Output - (1-delta)*Capital(-1); + + // Eq. n°5: + ((1-theta)/theta)*(Consumption/(1-Labour)) - (1-alpha)*(Output/Labour)^(1-psi); + + // Eq. n°6: + (((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption - beta*((((Consumption(1)^theta)*((1-Labour(1))^(1-theta)))^(1-tau))/Consumption(1))*(alpha*((Output(1)/Capital)^(1-psi))+1-delta); + +end; + +shocks; +var EfficiencyInnovation = sigma2; +end; + +steady; + +ts = extended_path([],100); \ No newline at end of file diff --git a/tests/ep/rbc_steadystate.m b/tests/ep/rbc_steadystate.m new file mode 100644 index 0000000000000000000000000000000000000000..9692aef392bcd60f67254d47f8205023285bfcab --- /dev/null +++ b/tests/ep/rbc_steadystate.m @@ -0,0 +1,46 @@ +function [ys, info] = rbc_steadystate(ys, exogenous) +% Steady state routine for rbc.mod (Business Cycle model with endogenous labour and CES production function) + + +% AUTHOR(S) +% stephane DOT adjemian AT univ DASH lemans DOT fr +% frederic DOT karame AT univ DASH evry DOT fr + +% Output_per_unit_of_Capital = (((1/beta)-1+delta)/alpha)^(1/(1-psi)); +% Consumption_per_unit_of_Capital = Output_per_unit_of_Capital - delta; +% Labour_per_unit_of_Capital = (((Output_per_unit_of_Capital/effstar)^psi-alpha)/(1-alpha))^(1/psi); +% Output_per_unit_of_Labour = Output_per_unit_of_Capital/Labour_per_unit_of_Capital; +% Consumption_per_unit_of_Labour = Consumption_per_unit_of_Capital/Labour_per_unit_of_Capital; +% SteadyStateLabour = 1/(1 + Consumption_per_unit_of_Labour/((theta*(1-alpha)/(1-theta))*(Output_per_unit_of_Labour^(1-psi)))); +% SteadyStateConsumption = Consumption_per_unit_of_Labour*SteadyStateLabour; +% SteadyStateCapital = SteadyStateLabour/Labour_per_unit_of_Capital; +% SteadyStateOutput = Output_per_unit_of_Capital*SteadyStateCapital; +% ShareOfCapital = alpha/(alpha+(1-alpha)*Labour_per_unit_of_Capital^psi); + +global M_ + +info = 0; + +% Compute steady state ratios. +Output_per_unit_of_Capital=((1/M_.params(1)-1+M_.params(6))/M_.params(4))^(1/(1-M_.params(5))); +Consumption_per_unit_of_Capital=Output_per_unit_of_Capital-M_.params(6); +Labour_per_unit_of_Capital=(((Output_per_unit_of_Capital/M_.params(8))^M_.params(5)-M_.params(4))/(1-M_.params(4)))^(1/M_.params(5)); +Output_per_unit_of_Labour=Output_per_unit_of_Capital/Labour_per_unit_of_Capital; +Consumption_per_unit_of_Labour=Consumption_per_unit_of_Capital/Labour_per_unit_of_Capital; + +% Compute steady state share of capital. +ShareOfCapital=M_.params(4)/(M_.params(4)+(1-M_.params(4))*Labour_per_unit_of_Capital^M_.params(5)); + +% Compute steady state of the endogenous variables. +SteadyStateLabour=1/(1+Consumption_per_unit_of_Labour/((1-M_.params(4))*M_.params(2)/(1-M_.params(2))*Output_per_unit_of_Labour^(1-M_.params(5)))); +SteadyStateConsumption=Consumption_per_unit_of_Labour*SteadyStateLabour; +SteadyStateCapital=SteadyStateLabour/Labour_per_unit_of_Capital; +SteadyStateOutput=Output_per_unit_of_Capital*SteadyStateCapital; + +% Fill returned argument ys with steady state values. +ys(2)=SteadyStateOutput; +ys(4)=SteadyStateConsumption; +ys(1)=SteadyStateCapital; +ys(3)=SteadyStateLabour; +ys(5)=M_.params(8); +ys(6)=0; \ No newline at end of file