Advertisement
Guest User

Untitled

a guest
Feb 7th, 2019
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.43 KB | None | 0 0
  1. %% Basic RBC model %%
  2. %% By Ryo Kato, modified January, 2004
  3. %% modified June 2005
  4. %% variable elastic labor supply
  5.  
  6. %% This code is written by Ryo Kato (genmac@hotmail.co.jp)
  7. %% You can use/rewrite this code without my permission.
  8. %% I will not be responsible for any damage/liability
  9. %% induced by running this conde.
  10.  
  11. %% ATTENTION!!
  12. %% Labor disutility ==> -myu*(lt^(1+lamda))/(1+lamda)
  13.  
  14.  
  15. %% ------------------- [1] Parameter proc ------------------------
  16. sigma = 1.5; % CRRA
  17. alpha = 0.3; % Cobb-Doug
  18. myu = 1; % labor-consumption supply
  19. beta = 0.99; % discount factor
  20. delta = 0.025; % depreciation
  21. lamda = 2; % labor supply elasticity >1
  22. phi = 0.8; % AR(1) in tech
  23.  
  24.  
  25. %% --------------------- [2] Steady State proc >> -----------------------
  26. % SS capital & ss labor
  27. % (1) real rate (By SS euler)
  28. kls = (((1/beta)+delta-1)/alpha)^(1/(alpha-1));
  29. % (2) wage
  30. wstar = (1-alpha)*(kls)^alpha;
  31. % (3) Labor and goods market clear
  32. clstar = kls^alpha - delta*kls;
  33. lstar = ((wstar/myu)*(clstar^(-sigma)))^(1/(lamda+sigma)) ;
  34. kstar = kls*lstar ;
  35. cstar = clstar*lstar ;
  36. vstar = 1;
  37. Ystar = (kstar^alpha)*(lstar^(1-alpha));
  38.  
  39. ssCKoLY = [ cstar kstar ; lstar Ystar ] ; % show SS values
  40.  
  41.  
  42. %% --------------------------[2] MODEL proc-----------------------------%%
  43. % Define endogenous vars ('a' denotes t+1 values)
  44. syms ct kt lt rt vt ca ka la ra va ;
  45. % Eliminate Price
  46. ra = (va*alpha*(ka/la)^(alpha-1)) ;
  47. wt = (1-alpha)*vt*(kt/lt)^alpha;
  48. % Optimal Conditions & state transition
  49. labor = lt^lamda-wt/(myu*ct^sigma) ; % LS = LD
  50. euler = ct^(-sigma) -(ca^(-sigma))*beta*(1+ra-delta) ; % C-Euler
  51. capital = ka - (1-delta)*kt-vt*(kt^alpha)*(lt^(1-alpha))+ct ; % K-trans
  52. tech = va - phi*vt;
  53.  
  54. optcon = [labor ; euler ; capital ; tech];
  55.  
  56. % GDP (Optional) %
  57. Yt = vt*(kt^alpha)*(lt^(1-alpha));
  58.  
  59.  
  60. %% ------------------ [3] Linearization proc ------------------------%%
  61. % Differentiation
  62. xx = [la ca ka va lt ct kt vt] ; % define vars
  63. jopt = jacobian(optcon,xx)
  64.  
  65. % For GDP (Optipnal)
  66. xr = [lt kt vt];
  67. jy = jacobian(Yt,xr);
  68.  
  69. % Evaluate each derivative
  70. kt = kstar; ka=kstar;
  71. ct = cstar; ca = cstar;
  72. la = lstar; lt = lstar;
  73. vt = vstar; va = vstar;
  74.  
  75. % Define Linear Coefficients
  76. ## coef = eval(jopt);
  77. fh=function_handle (jopt)
  78. coef=fh (cstar,cstar,kstar,kstar,lstar,lstar,vstar,vstar)
  79.  
  80.  
  81. % For GDP (optional)
  82. ## coy = eval(jy);
  83. fh2=function_handle (jy)
  84. coy=fh2 ( kstar,lstar,vstar)
  85.  
  86. % In terms of % deviations from ss
  87. vo = [ lstar cstar kstar vstar ] ;
  88. TW = [ vo ; vo ; vo ; vo ] ;
  89. B = ( -coef(:,1:4) ).*TW ;
  90. C = ( coef(:,5:8) ).*TW ;
  91. % B[c(t+1) l(t+1) k(t+1) z(t+1)] = C[c(t) l(t) k(t) z(t)]
  92. A = inv(C)*B; %(Linearized reduced form );
  93.  
  94. % For GDP( optional)
  95. ve = [lstar kstar vstar ];
  96. NOM = [Ystar Ystar Ystar ];
  97. PPX = coy.*ve./NOM;
  98.  
  99. %% =========== [4] Solution proc (Do NOT touch!!) ============== %%
  100. % EIGEN DECOMPOSITION
  101. [W, V] = eig(A);
  102. Q = inv(W);
  103. %W*V*Q;
  104. theta = diag(V);
  105. % Extract stable vectors
  106. SQ = []; jw = 1;
  107. for j = 1:length(theta)
  108. if abs(theta(j)) >1.000000001
  109. SQ(jw,:) = Q(j,:);
  110. jw = jw+1;
  111. end
  112. end
  113. % Extract unstable vectors
  114. UQ = []; jjw = 1;
  115. for jj = 1:length(theta)
  116. if abs(theta(jj))<0.9999999999
  117. UQ(jjw,:) = Q(jj,:);
  118. jjw = jjw+1;
  119. end
  120. end
  121. % Extract stable roots
  122. VLL = []; jjjw = 1;
  123. for jjj = 1:length(theta)
  124. if abs(theta(jjj)) >1.0000000001
  125. VLL(jjjw,:) = theta(jjj,:);
  126. jjjw = jjjw+1;
  127. end
  128. end
  129.  
  130. % Show Eigen Vectors on U-S Roots
  131. UQ; % n x n+k
  132. SQ; % k x n+k
  133.  
  134. % [3] ELIMINATING UNSTABLE VECTORS
  135. k = min(size(SQ)); % # of predetermined vars
  136. n = min(size(UQ)); % # of jump vars
  137. nk = [n k];
  138. % Stable V (eig mat)
  139. VL = inv(diag(VLL));
  140.  
  141. % Elements in Q
  142. PA = UQ(1:n,1:n); PB = UQ(1:n,n+1:n+k);
  143. PC = SQ(1:k,1:n); PD = SQ(1:k,n+1:n+k);
  144. P = -inv(PA)*PB ; % X(t) = P*S(t)
  145. PE = PC*P+PD ;
  146.  
  147. % SOLUTION
  148. PX = inv(PE)*VL*PE;
  149. AA = real(PX);
  150.  
  151.  
  152. %% ------------------ [5] SIMULATION proc ----------------- %%
  153. % [4] TIME&INITIAL VALUES
  154.  
  155. t = 24; % Time span
  156.  
  157. % Initial Values
  158. % state var + e
  159. S1 = [ 0 0.06 ]' ;
  160.  
  161.  
  162. % [5] SIMULATION
  163. Ss = S1;
  164. S = zeros(t,k) ;
  165. for i = 1:t
  166. q = AA*Ss ;
  167. S(i,:) = q';
  168. Ss = S(i,:)';
  169. end
  170. SY = [S1' ;S] ;
  171. X = (real(P)*SY')';
  172.  
  173. % Re-definition
  174. li = X(:,1);
  175. ci = X(:,2);
  176. ki = SY(:,1);
  177. vi = SY(:,2);
  178.  
  179. XI = [li ki vi];
  180. Yi = (PPX*XI')';
  181. % [6] DRAWING FIGURES
  182. figure(1)
  183. subplot(2,1,1);
  184. plot( Yi );
  185. ylabel('Output')
  186. xlabel('time');
  187. subplot(2, 1,2);
  188. plot([ci li] );
  189. ylabel('Concumption(bl) Labor(grn)')
  190. xlabel('time');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement