112 lines
3.0 KiB
Modula-2
112 lines
3.0 KiB
Modula-2
|
@#define NumberOfCountries = 2
|
||
|
|
||
|
var log_kappa;
|
||
|
@#for Country in 1:NumberOfCountries
|
||
|
var mu@{Country}, logit_l@{Country}, k@{Country}, a@{Country};
|
||
|
@#endfor
|
||
|
|
||
|
parameters alpha beta varrho delta theta rhoA sigmaA;
|
||
|
|
||
|
alpha = 0.3;
|
||
|
beta = 0.99;
|
||
|
varrho = 1.5;
|
||
|
delta = 0.025;
|
||
|
theta = 0.9;
|
||
|
rhoA = 0.95;
|
||
|
sigmaA = 0.05;
|
||
|
|
||
|
@#for Country in 1:NumberOfCountries
|
||
|
varexo epsilonA@{Country};
|
||
|
@#endfor
|
||
|
|
||
|
model;
|
||
|
|
||
|
#kappa = exp( log_kappa );
|
||
|
#LEAD_kappa = exp( log_kappa(+1) );
|
||
|
|
||
|
#min_A = theta ^ ( 1/alpha );
|
||
|
#mean_a = log( 1 - min_A );
|
||
|
|
||
|
@#for Country in 1:NumberOfCountries
|
||
|
|
||
|
#K@{Country} = exp( k@{Country} );
|
||
|
#LAG_K@{Country} = exp( k@{Country}(-1) );
|
||
|
#LEAD_A@{Country} = min_A + exp( a@{Country}(+1) );
|
||
|
#A@{Country} = min_A + exp( a@{Country} );
|
||
|
#LAG_A@{Country} = min_A + exp( a@{Country}(-1) );
|
||
|
#L@{Country} = 1 / ( 1 + exp( -logit_l@{Country} ) );
|
||
|
#LEAD_L@{Country} = 1 / ( 1 + exp( -logit_l@{Country}(+1) ) );
|
||
|
|
||
|
#C@{Country} = kappa ^ ( -1/varrho ) - theta / ( 1-alpha ) * ( A@{Country}*(1-L@{Country}) ) ^ ( 1-alpha );
|
||
|
#LEAD_phi@{Country} = ( 1 - theta * ( LEAD_A@{Country}*(1-LEAD_L@{Country}) ) ^ ( -alpha ) ) * LEAD_kappa;
|
||
|
#I@{Country} = K@{Country} - ( 1-delta ) * LAG_K@{Country};
|
||
|
|
||
|
@#endfor
|
||
|
|
||
|
@#for Country in 1:NumberOfCountries
|
||
|
|
||
|
( a@{Country} - mean_a ) = rhoA * ( a@{Country}(-1) - mean_a ) - sigmaA * epsilonA@{Country};
|
||
|
L@{Country} = min( LAG_K@{Country} / A@{Country}, 1 - theta ^ ( 1/alpha ) / A@{Country} );
|
||
|
kappa - mu@{Country} = beta * ( ( 1-delta ) * ( LEAD_kappa - mu@{Country}(+1) ) + LEAD_phi@{Country} );
|
||
|
kappa = max( beta * ( ( 1-delta ) * ( LEAD_kappa - mu@{Country}(+1) ) + LEAD_phi@{Country} ), ( theta / ( 1-alpha ) * ( A@{Country}*(1-L@{Country}) ) ^ ( 1-alpha )
|
||
|
@#for OtherCountry in 1:NumberOfCountries
|
||
|
+ A@{OtherCountry} * L@{OtherCountry}
|
||
|
@#if OtherCountry != Country
|
||
|
- C@{OtherCountry} - I@{OtherCountry}
|
||
|
@#endif
|
||
|
@#endfor
|
||
|
) ^ ( -varrho ) );
|
||
|
|
||
|
@#endfor
|
||
|
|
||
|
0 = 0
|
||
|
@#for OtherCountry in 1:NumberOfCountries
|
||
|
+ A@{OtherCountry} * L@{OtherCountry}
|
||
|
- C@{OtherCountry} - I@{OtherCountry}
|
||
|
@#endfor
|
||
|
;
|
||
|
|
||
|
end;
|
||
|
|
||
|
steady_state_model;
|
||
|
|
||
|
a = log( 1 - theta ^ ( 1/alpha ) );
|
||
|
mu = 0;
|
||
|
L = 1 - ( 1/theta * ( 2 - 1/beta - delta ) ) ^ ( -1/alpha );
|
||
|
K = L;
|
||
|
I = delta * K;
|
||
|
C = ( 1 - delta ) * L;
|
||
|
|
||
|
kappa_ = ( C + theta / ( 1-alpha ) * ( 1-L ) ^ ( 1-alpha ) ) ^ ( -varrho );
|
||
|
|
||
|
log_kappa = log( kappa_ );
|
||
|
|
||
|
@#for Country in 1:NumberOfCountries
|
||
|
|
||
|
mu@{Country} = mu;
|
||
|
logit_l@{Country} = log( L / ( 1 - L ) );
|
||
|
k@{Country} = log( K );
|
||
|
a@{Country} = a;
|
||
|
|
||
|
@#endfor
|
||
|
|
||
|
end;
|
||
|
|
||
|
steady;
|
||
|
check;
|
||
|
|
||
|
shocks;
|
||
|
|
||
|
var epsilonA1; periods 1; values 2;
|
||
|
@#for Country in 2:NumberOfCountries
|
||
|
var epsilonA@{Country}; periods 1; values 0;
|
||
|
@#endfor
|
||
|
|
||
|
end;
|
||
|
|
||
|
options_.simul.robust_lin_solve=1;
|
||
|
simul( periods = 400 );
|
||
|
|
||
|
if ~oo_.deterministic_simulation.status
|
||
|
error('Model did not solve')
|
||
|
end
|