% Revision 3: This version corrects for the typo in the law of motion for adopted innovations % Diffusion with a two period flat lag for A, and for Z R&D and variable externality in diffusion % Wage Markup shocks and similar production in K and Y % growth in embodied. % introduces countercyclical markups in capital producing sector % and variable capacity utilization through the effect on depreciation % ENDOGENOUS EMBODIED TECHNOLOGICAL GROWTH % overhead costs that do not depends on mt % CAPITAL UTILIZATION % lifecycle % MODEL SET FOR THE ENTRY COST SHOCKS global mode plotflag = 0; % Set to one if you want to see plots % Hit escape to get out of a plot nimpstep = 500; % number of steps in impulse response % Model Parameters bet = 0.95; % discount factor del = 0.08; % depreciation rate fi = 1; % labor supply curvature al = 1/3; % k share g_y = 0.2*0.7; % ss g/y ratio th = 1/0.6; % elasticity of substitution intermediate good sector rho = 0.9; % parameter embodied technology eta = 0.0; theta = 1/0.6; muw = 1.2; % ss wage markup muc = 1.1; nc = 1; nk = 1; dmuc = -muc; etamuc = dmuc*nc/muc; boc = (muc-1)/muc; muk = 1.2; etamuk = etamuc; lamk = 0.1; lamc = 0.1; elk = 0.9; elc = 0.9; ellk = elk-1; ellc = elc-1; o = 0.03; oz = 0.03; oc = 0.03; ok = 0.03; phic = 1-oc; phik = 1-ok; bb = 0.5; % intermediate share in final output % Nonstochastic steady state gpk = -0.026; gy = 0.024; gk = gy - gpk; gzc = (gy-al*gk)/bb*(1-bb)/(theta-1); gzk = (gpk-gzc*bb*(theta-1))/(bb*(1-th)); gtfp = gy-al*gk+gzk*(al*bb*(th-1))/(1-al*(1-bb)); measbls = (0.014-gy+al*gk)/(gzk*(al*bb*(th-1))/(1-al*(1-bb))); gv = gy; gvz = gy; R = (1+gy)/bet; d_pk = R-(1+gpk); % definition of R yc_pkkc = muc/(al*(1-bb))*(d_pk+del); % foc for k yk_kk = muk/(al*(1-bb))*(d_pk+del); % new capital to capital in capital production sector yk_k = (gk+del)/(1+gk); % new capital to capital ratio kk_k = yk_k/yk_kk; % share of capital in capital production. kc_k = 1-kk_k; kk_kc = kk_k/kc_k; lk_lc = kk_kc; lk_l = lk_lc/(lk_lc+1); lc_l = 1-lk_l; pkyk_yc= kk_kc*muk/muc; mk_yc = bb*1/th*pkyk_yc/muk; mc_yc = bb*1/theta/muc; pkk_yc = inv(yc_pkkc)/kc_k; pik_yc = pkk_yc*muc/muk; % value of total capital stock removing fluctuations in relative price of capital due to markup variations prk_yc = pkyk_yc*(1-1/th)*bb/muk; prc_yc = (1-1/theta)*bb/muc; prk_vk = 1-(1+gv)*phik/((1+gzk)*R); % bellman for va prc_vc = 1-(1+gvz)*phic/((1+gzc)*R); % bellman for vz yc_vk = prk_vk*inv(prk_yc); yc_vc = prc_vc*inv(prc_yc); zk_ak = ((gzk+ok)/(lamk*phik)+1); zc_ac = ((gzc+oc)/(lamc*phic)+1); ac_zc = inv(zc_ac); ak_zk = inv(zk_ak); ra = (1+gy)/(1+gzk); rz = (1+gy)/(1+gzc); jk_yc = inv(1-elk*phik*lamk*ra/R-(1-lamk)*phik*ra/R)*(1-elk)*phik*lamk*ra*zk_ak/R*inv(yc_vk); % zk * jk /yc bellman for not adopted innov jc_yc = inv(1/phic-elc*lamc*rz/R-(1-lamc)*rz/R)*(1-elc)*lamc*rz*zc_ac/R*inv(yc_vc); % zc*jc/yc bellman for not adopted innov hk_yc = phik*elk*lamk*ra/R*(inv(yc_vk)*zk_ak-jk_yc); % zk *hk/yc hc_yc = phic*elc*lamc*rz/R*(inv(yc_vc)*zc_ac-jc_yc); % zc *hc/yc sk_yc = jk_yc*(gzk+o)*(1+gv)*inv((1+gzk)*R); % from free entry cond't sc_yc = jc_yc*(gzc+oz)*(1+gvz)*inv((1+gzc)*R); hc_jc = hc_yc/jc_yc; hk_jk = hk_yc/jk_yc; vc_jc = inv(yc_vc)/jc_yc; vk_jk = inv(yc_vk)/jk_yc; jc_vc=inv(vc_jc); jk_vk=inv(vk_jk); bock = boc*pkyk_yc*(muk-1)*muc/(muk*(muc-1)); occ_yc=boc*pik_yc; ock_yc=bock*pik_yc; oc_yc=occ_yc+ock_yc; c_yc = 1-oc_yc-g_y-mc_yc-mk_yc-sk_yc-sc_yc-((phic/(1+gzc))^2-inv(zc_ac))*hc_yc-((phik/(1+gzk))^2-inv(zk_ak))*hk_yc; pi_yc=(muc-1)/muc-oc_yc; u=.8; edu=al*(1-bb)*yc_pkkc/(muc*del); % from foc wrt utilization, edu = elasticity of depreciation with respect to capacity edup=0; % partial of edu wrt u edp=1/3;%(edu)-1+edup/(edu*u); % elasticity of del' (i.e. elasticity of delta prima) actualhk_yc=hk_yc*(1-ak_zk); % total expenses in adoption of capital specific innovations actualhc_yc=hc_yc*(1-ac_zc); % total expenses in adoption of consumption specific innovations inv_Y=pkyk_yc/(pkyk_yc+1-mc_yc-mk_yc-occ_yc-ock_yc); % investment output ratio Y_yc=pkyk_yc/inv_Y; ynet_yc=1-oc_yc; % Coefficients for the log-linearization qcof = (1-del)*(1+gpk)/R; jcof = (1-del)/(1+gk); vcof = (1+gy)/((1+gzk)*R); vzcof= (1+gy)/((1+gzc)*R); mucof= muc-1; mukcof=muk-1; ycof1=ynet_yc*(ynet_yc-mc_yc-mk_yc+pkyk_yc-actualhk_yc-actualhc_yc-sk_yc-sc_yc)^(-1); ycof2=mc_yc*(ynet_yc-mc_yc-mk_yc+pkyk_yc-actualhk_yc-actualhc_yc-sk_yc-sc_yc)^(-1); ycof3=mk_yc*(ynet_yc-mc_yc-mk_yc+pkyk_yc-actualhk_yc-actualhc_yc-sk_yc-sc_yc)^(-1); ycof4=pkyk_yc*(ynet_yc-mc_yc-mk_yc+pkyk_yc-actualhk_yc-actualhc_yc-sk_yc-sc_yc)^(-1); ycof=(ynet_yc-mc_yc-mk_yc+pkyk_yc-actualhk_yc-actualhc_yc-sk_yc-sc_yc)^(-1); ynetmcons=1-oc_yc-mc_yc-mk_yc; % fraction of ynetm in y % Shock to Embodied Technology rhochi = (0.7)^4; % autoregressive component chisigma = 0.01; % standard deviation % Disembodied Technology Shock rhochiz = (0.7)^4; % autoregressive component chizsigma = 0.01; % standard deviation % Wage markup shock rhomuw = 0.60; % autoregressive component muwsigma = 0.01; % standard deviation % Chik shock rhochik = 0.8; % autoregressive component chiksigma = 0.01; % standard deviation %****************************************************************** %**** Begin setup for constructing log-linear system coef matrix ** %****************************************************************** nlead = 1; % Number of leads in system nlag = 1; % Number of lags in system % Coefficient indicators: % (note xnames is not used for anything right now except to determine number of equations "neq" ) % 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 xnames = strvcat('yc','c','sk','sc','r','pk','hk','d','k','l','prk','prc','w','vc','vk','zk','zc','muc','nc', 'muk','nk','u', 'kl', 'ynet','sf', 'yT', 'hc','jk', 'jc', 'ak', 'ac'... , 'chi','chiz','muw', 'echi','echiz','emuw', 'ly', 'yk', 'ynetm', 'chik', 'echik'); % 32 33 34 35 36 37 38 39 40 41 42 xnum = length(xnames); % Number of variables in system neq = xnum; % Number of equations (same) % Ordering contemporaneous variables: % These are position indicators for leads and lags in constructing the coefficient matrix % % Note: All shock variables must be placed last in the system! ycpos = 1; cpos = 2; skpos = 3; scpos = 4; rpos = 5; pkpos = 6; hkpos = 7; dpos = 8; kpos = 9; lpos = 10; prkpos = 11; prcpos = 12; wpos = 13; vkpos = 14; vcpos = 15; zkpos = 16; zcpos = 17; mucpos = 18; ncpos = 19; mukpos = 20; nkpos = 21; upos = 22; klpos = 23; ynetpos = 24; sfpos = 25; yTpos = 26; hcpos = 27; jkpos = 28; jcpos = 29; akpos = 30; acpos = 31; lypos = 32; ykpos = 33; ynetmpos = 34; chipos = 35; chizpos = 36; muwpos = 37; chikpos = 38; echipos = 39; echizpos = 40; emuwpos = 41; echikpos = 42; collag = 0; % Position counter for start of lag coefs colzero = xnum; % Position counter for start of contemp. coefs % i.e. if there is one lag and 5 equations then the "first" % contemporaneous variable is at position 6 (6 = 1*5+cpos) collead = xnum+xnum; % Position counter for start of lead coefs % Indicators for contemporanous coefs for each variable: yczero = colzero+ycpos; czero = colzero+cpos; skzero = colzero+skpos; hkzero = colzero+hkpos; rzero = colzero+rpos; pkzero = colzero+pkpos; dzero = colzero+dpos; kzero = colzero+kpos; lzero = colzero+lpos; prkzero = colzero+prkpos; wzero = colzero+wpos; vkzero = colzero+vkpos; % average value of a new capital good firm prior to the vintage adjustment zkzero = colzero+zkpos; zczero = colzero+zcpos; sczero = colzero+scpos; prczero = colzero+prcpos; vczero = colzero+vcpos; muczero = colzero+mucpos; nczero = colzero+ncpos; mukzero = colzero+mukpos; nkzero = colzero+nkpos; uzero = colzero+upos; klzero = colzero+klpos; % klzero(t) = j(t-1) ynetzero = colzero+ynetpos; % Yt-total overhead costs(t) sfzero = colzero+sfpos; yTzero = colzero+yTpos; % this is the total GDP in the economy accounting for the value added created at the capital producings ector. hczero = colzero+hcpos; jkzero = colzero+jkpos; jczero = colzero+jcpos; akzero = colzero+akpos; aczero = colzero+acpos; chizero = colzero+chipos; chizzero = colzero+chizpos; muwzero = colzero+muwpos; echizero = colzero+echipos; echizzero = colzero+echizpos; emuwzero = colzero+emuwpos; lyzero = colzero +lypos; ykzero = colzero +ykpos; ynetmzero = colzero + ynetmpos; chikzero = colzero + chikpos; echikzero = colzero + echikpos; % Indicators for lead coefficients for each variable: yclead = collead+ycpos; clead = collead+cpos; sklead = collead+skpos; hklead = collead+hkpos; rlead = collead+rpos; pklead = collead+pkpos; dlead = collead+dpos; klead = collead+kpos; llead = collead+lpos; prklead = collead+prkpos; wlead = collead+wpos; vklead = collead+vkpos; zklead = collead+zkpos; zclead = collead+zcpos; sclead = collead+scpos; prclead = collead+prcpos; vclead = collead+vcpos; muclead = collead+mucpos; nclead = collead+ncpos; muklead = collead+mukpos; nklead = collead+nkpos; ulead = collead+upos; kllead = collead+klpos; ynetlead = collead+ynetpos; sflead= collead+sfpos; yTlead = collead+yTpos; hclead = collead+hcpos; jklead = collead+jkpos; jclead = collead+jcpos; aklead = collead+akpos; aclead = collead+acpos; chilead = collead+chipos; chizlead = collead+chizpos; muwlead = collead+muwpos; echilead = collead+echipos; echizlead = collead+echizpos; emuwlead = collead+emuwpos; lylead = collead+lypos; yklead = collead +ykpos; ynetmlead = collead +ynetmpos; chiklead = collead + chikpos; echiklead = collead + echikpos; % Indicators for lag coefficients for each variable: yclag = collag+ycpos; clag = collag+cpos; sklag = collag+skpos; hklag = collag+hkpos; rlag = collag+rpos; pklag = collag+pkpos; dlag = collag+dpos; klag = collag+kpos; llag = collag+lpos; prklag = collag+prkpos; wlag = collag+wpos; vklag = collag+vkpos; zklag = collag+zkpos; zclag = collag+zcpos; sclag = collag+scpos; prclag = collag+prcpos; vclag = collag+vcpos; muclag = collag+mucpos; nclag = collag+ncpos; muklag = collag+mukpos; nklag = collag+nkpos; ulag = collag+upos; kllag = collag+klpos; ynetlag = collag+ynetpos; sflag=collag+sfpos; yTlag=collag+yTpos; hclag = collag+hcpos; jklag = collag+jkpos; jclag = collag+jcpos; aklag = collag+akpos; aclag = collag+acpos; chilag = collag+chipos; chizlag = collag+chizpos; muwlag = collag+muwpos; echilag = collag+echipos; echizlag = collag+echizpos; emuwlag = collag+emuwpos; lylag = collag+lypos; yklag = collag +ykpos; ynetmlag = collag +ynetmpos; chiklag = collag + chikpos; echiklag = collag + echikpos; % Now I have one vector with all of the leads, leads, etc in one column and contemporaneous % Determine number of coefficients per equation: ncoef = neq*(nlag+nlead+1); cof = zeros(neq,ncoef); % Coef matrix --- Each row is an equation % Fill in the coefficient matrix (cof) % * Resource constraint % 0 = ynet(t) -1/(1-oc_y)*c_y*c(t) - 1/(1-oc_y)*th*inv_y/muk*inv(t)... % - g_y*g(t) - 1/(1-oc_y)*s_y*s(t) - 1/(1-oc_y)*s_z*sz(t) - 1/(1-oc_y)*(1-za_z)*xz_y*xz(t)... % +1/(1-oc_y)*za_z*xz_y*za(t) - 1/(1-oc_y)*za_z*xz_y*z(t) - 1/(1-oc_y)*(1-aa_a)*x_y*x(t)... %+1/(1-oc_y)*aa_a*x_y*aa(t) - 1/(1-oc_y)*aa_a*x_y*a(t) cof(1,ynetmzero) = 1; cof(1,czero) = -c_yc/(ynetmcons); %cof(1,gzero) = -g_y/(1-oc_y); %cof(1,sfzero) = -.2; cof(1,skzero) = -sk_yc/(ynetmcons); cof(1,sczero) = -sc_yc/(ynetmcons); cof(1,hczero) = - actualhc_yc/(ynetmcons); cof(1,zczero) = -ac_zc/(1-ac_zc)*actualhc_yc/(ynetmcons); cof(1,aczero) = inv(zc_ac-1)*actualhc_yc/(ynetmcons); %cof(1,zllzero) = -inv(1-za_z)*actualxz_y/(ynetmcons); cof(1,hkzero) = - actualhk_yc/(ynetmcons); cof(1,zkzero) = -ak_zk/(1-ak_zk)*actualhk_yc/(ynetmcons); cof(1,akzero) = inv(zk_ak-1)*actualhk_yc/(ynetmcons); %cof(1,allzero) = -inv(1-aa_a)*actualx_y/(ynetmcons); % Euler equation % 0 = c(t) - c(t+1) + r(t) cof(2,czero) = 1; cof(2,clead) = -1; cof(2,rzero) = 1; % Aggregate production function % 0 = y(t) - chiz(t) al*(j(t-1)) - (1-al)*l(t) -(1/theta-1)*za(t) - (mu-1)*m(t) - (mu*log(M))*mu(t)-al*u(t) cof(3,yczero) = 1; cof(3,chizzero) = -1/(1-bb); cof(3,klag) = -al; cof(3,lzero) = al; cof(3,lyzero) = -1; cof(3,nczero) = -(muc-1)/(1-bb); cof(3,muczero) = (bb+muc*log(nc))/(1-bb); cof(3,uzero) = -al; cof(3,aczero) = -bb/(1-bb)*(theta-1); %cof(3,Hyzero) = -bb; % * demand of capital % 0 = y(t) - jy(t) - mu(t) - (1/(1+del*q_pk)) * pk(t) - (1/(pk_q/del+1)) * ( q(t) + edu * u(t)) cof(4,yczero) = 1; cof(4,klzero) = -1; cof(4,lzero) = 1; cof(4,lyzero) = -1; cof(4,muczero) = -1; cof(4,dzero) = - (1/(1+del/d_pk)); cof(4,pkzero) = - (del/(d_pk+del)); cof(4,uzero) = -edu*(1/(d_pk/del+1)); % * capacity choice % 0 = y(t) -(1+edp)*u(t) -mu(t) -jy(t) -q(t) cof(5,yczero) = 1; cof(5,uzero) = -(1+edp); cof(5,muczero) = -1; cof(5,klzero) = -1; cof(5,lzero) = 1; cof(5,lyzero) = -1; cof(5,pkzero) = -1; % * labor demand in final output % 0 = y(t) -ly(t) - mu(t) -w(t) cof(6,yczero) = 1; cof(6,muczero) = -1; cof(6,lyzero) = -1; cof(6,wzero) = -1; % * production of new investment goods % 0 = newj(t) - chi(t) - al*(1-bbk) * (jk(t) + u(t)) -(1-al)*(1-bbk)*lk(t)- bbk * Hk(t) -(muk-1) muk(t) + (muk*log(Mk)) muk(t) cof(7,ykzero) = 1; cof(7,chizero) = -1/(1-bb); cof(7,klzero) = - al; cof(7,lzero) = al-1/(1-lc_l); cof(7,uzero) = - al; cof(7,lyzero) = lc_l/(1-lc_l); cof(7,nkzero) = -(muk-1)/(1-bb); cof(7,mukzero) = (bb+muk*log(nk))/(1-bb); cof(7,pkzero) = -bb/(1-bb); cof(7,akzero) = -bb/(1-bb)*(th-1); % Real wage % 0 = w(t) - fi*l(t) - c(t) - muw(t) cof(8,wzero) = 1; cof(8,lzero) = -fi; cof(8,czero) = -1; cof(8,muwzero) = -1; % * Profits embodied % 0 = pr(t) - newj(t) - q(t) + muk(t) cof(9,prkzero) = 1; cof(9,ykzero) = -1; cof(9,pkzero) = -1; cof(9,mukzero) = 1; % * Profits disembodied % 0 = prz(t) - y(t) + mu(t) cof(10,prczero) = 1; cof(10,yczero) = -1; cof(10,muczero) = 1; % Value of an adopted innovation for embodied % 0 = v(t) - (1-vcof)*pr(t) - vcof*(v(t+1) - a(t) + a(t-1) - r(t)) cof(11,vkzero) = 1; cof(11,akzero) = -(1-prk_vk); cof(11,prkzero) = -prk_vk; cof(11,vklead) = -(1-prk_vk); cof(11,aklead) = (1-prk_vk); cof(11,rzero) = (1-prk_vk); % Value of an adopted innovation for disembodied % 0 = vz(t) - (1-vzcof)*prz(t) - vzcof*(vz(t+1) - z(t) + z(t-1) - r(t)) cof(12,vczero) = 1; cof(12,aczero) = -(1-prc_vc); cof(12,prczero) = -prc_vc; cof(12,vclead) = -(1-prc_vc); cof(12,aclead) = (1-prc_vc); cof(12,rzero) = (1-prc_vc); % * Capital accumulation % 0 = j(t) + edu*del/(1+gj)* u(t) - jcof*j(t-1) - (1-jcof)*newj(t) cof(13,kzero) = 1; cof(13,uzero) = edu*del/(1+gk); cof(13,klag) = -jcof; cof(13,ykzero) = -(1-jcof); % Law of motion for embodied productivity cof(14,zkzero) = 1; cof(14,zklag) = -1; cof(14,sklag) = -rho*(gzk+ok)/(1+gzk); cof(14,sflag) = rho*(gzk+ok)/(1+gzk); cof(14,chiklag) = -(gzk+ok)/(1+gzk); % Law of motion for disembodied productivity cof(15,zczero) = 1; cof(15,zclag) = -1; cof(15,sclag) = -rho*(gzc+oc)/(1+gzc); cof(15,sflag) = rho*(gzc+oc)/(1+gzc); % Free entry for embodied % 0 = (1-rho)*s(t) - a(t-1) + rho*(q(t)+j(t-1)) - chi(t) - wa(t+1) + r(t) cof(16,skzero) = 1-rho; cof(16,zkzero) = -1; cof(16,sfzero) = rho; cof(16,jklead) = -1; cof(16,zklead) = 1; cof(16,rzero) = 1; % Free entry for disembodied % 0 = (1-rho)*sz(t) - z(t-1) + rho*(q(t)+j(t-1)) - chiz(t) - wz(t+1) + r(t) cof(17,sczero) = 1-rho; cof(17,zczero) = -1; cof(17,sfzero) = rho; cof(17,jclead) = -1; cof(17,zclead) = 1; cof(17,rzero) = 1; % Bellman for not adopted disemb innovation cof(18,jczero) = -1; cof(18,hczero) = -(hc_jc+phic*elc*lamc/R*rz*(1-zc_ac*vc_jc)); cof(18,rzero) = -(1+hc_jc); cof(18,zczero) = phic*rz*((1-lamc)+lamc*zc_ac*vc_jc)/R; cof(18,aclead) = -phic*lamc*rz*zc_ac*vc_jc/R; cof(18,vclead) = phic*lamc*rz*zc_ac*vc_jc/R; cof(18,sfzero) = -phic*elc*lamc*rz/R*(zc_ac*vc_jc-1); cof(18,zclead) = -phic*rz*(1-lamc)/R; cof(18,jclead) = phic*rz*(1-lamc)/R; % law of motion for adopted disembodied innvo cof(19,aczero) = 1; cof(19,aclag) = -phic*(1-lamc)/(1+gzc); cof(19,hclag) = -elc*lamc*((phic/(1+gzc))*zc_ac-phic/(1+gzc)); cof(19,sflag) = elc*lamc*((phic/(1+gzc))*zc_ac-phic/(1+gzc)); cof(19,zclag)= -(1-phic*(1-lamc)/(1+gzc)); % optimal investment in adoption of disemb innov cof(20,zczero) = 1; cof(20,sfzero) = -(1+ellc); cof(20,rzero) = -1; cof(20,hczero) = ellc; cof(20,vclead) = 1/(1-jc_vc*ac_zc); cof(20,aclead) = -1/(1-jc_vc*ac_zc); cof(20,jclead) = -1/(vc_jc*zc_ac-1); cof(20,zclead) =1/(vc_jc*zc_ac-1); % Bellman for not adopted emb innovation cof(21,jkzero) = -1; cof(21,hkzero) = -(hk_jk+(1-ok)*elk*lamk/R*ra*(1-zk_ak*vk_jk)); cof(21,rzero) = -(1+hk_jk); cof(21,zkzero) = phik*ra*((1-lamk)+lamk*zk_ak*vk_jk)/R; cof(21,aklead) = -phik*lamk*ra*zk_ak*vk_jk/R; cof(21,vklead) = phik*lamk*ra*zk_ak*vk_jk/R; cof(21,sfzero) = - phik*elk*lamk*ra/R*(zk_ak*vk_jk-1); cof(21,zklead) = -phik*ra*(1-lamk)/R; cof(21,jklead) = phik*ra*(1-lamk)/R; % law of motion for adopted embodied innvo cof(22,akzero) = 1; cof(22,aklag) = -phik*(1-lamk)/(1+gzk); cof(22,hklag) = -elk*lamk*((phik/(1+gzk))*zk_ak-phik/(1+gzk)); cof(22,sflag) = elk*lamk*((phik/(1+gzk))*zk_ak-phik/(1+gzk)); cof(22,zklag)= -(1-phik*(1-lamk)/(1+gzk)); % optimal investment in adoption of emb innov cof(23,zkzero) = 1; cof(23,sfzero) = -(1+ellk); cof(23,rzero) = -1; cof(23,hkzero) = ellk; cof(23,vklead) = 1/(1-jk_vk*ak_zk); cof(23,aklead) = -1/(1-jk_vk*ak_zk); cof(23,jklead) = -1/(vk_jk*zk_ak-1); cof(23,zklead) =1/(vk_jk*zk_ak-1); % Arbitrage % 0 = q(t) + r(t) - (R-1-gq)/R*pk(t) - (1+gq)/R*q(t+1) cof(24,pkzero) = 1; cof(24,rzero) = 1; cof(24,dlead) = - (R-1-gpk)/R; cof(24,pklead) = -(1+gpk)/R; % entry into final goods sector % 0 = mu(t) + mucof*(yf(t)+(kapa-1)*y(t)-(a+1-kapa)*m(t)-kapa*(q(t)+kl(t));+eps(t) cof(25,muczero) = 1; cof(25,yczero) = mucof; cof(25,sfzero) = -mucof; cof(25,nczero) =-mucof; % m % 0 = mu(t) -etamu*m(t); cof(26,muczero)=1; cof(26,nczero)=-etamuc; % entry into capital goods sector % 0 = muk(t) + mukcof*(inv-(a+1)*mk(t)-kapa*(q(t)+kl(t));+eps(t) cof(27,mukzero) = 1; cof(27,ykzero) = mukcof; cof(27,pkzero) = mukcof; cof(27,sfzero) = -mukcof; cof(27,nkzero) =-mukcof; %cof(29,epszero) =-mucof; % mk % 0 = muk(t) - etamuk * mk(t); cof(28, mukzero) = 1; cof(28, nkzero) = -etamuk; % equivalence between klzero and jlag cof(29,klzero)=1; cof(29,klag)=-1; % Definition of output net of total overhead costs % 0 = ynet(t) -1/(1-oc_y)*y(t) + oc_y/(1-oc_y)*capsi(t)+ a/(1-exp(-a))*ocf_y)/(1-oc_y)*m(t) + a/(1-exp(-a))*ock_y)/(1-oc_y)*mk(t); cof(30,ynetzero) = 1; cof(30,yczero) = -1/(1-oc_yc); cof(30,nczero) = occ_yc/(1-oc_yc); cof(30,nkzero) = ock_yc/(1-oc_yc); cof(30,sfzero) = oc_yc/(1-oc_yc); % definition of scaling factor % 0= sf(t) -q(t) - k(t-1) +(1-muk*log(mk)) muk(t)- (muk-1) mk(t) cof(31,sfzero) = 1; %cof(43, qzero) = -1; cof(31, klzero) = -1; cof(31, akzero) = -bb*(1-th); cof(31, aczero) = bb*(1-theta); % definition of ynetm % 0 = ynetm(t) cof(32,ynetmzero) = 1; cof(32,ynetzero) = - 1/(1-mc_yc*inv(ynet_yc)-mk_yc*inv(ynet_yc)); cof(32,yczero) = mc_yc/ynetmcons; cof(32,muczero) = -mc_yc/ynetmcons; cof(32,pkzero) = mk_yc/ynetmcons; cof(32,ykzero) = mk_yc/ynetmcons; cof(32,mukzero) = -mk_yc/ynetmcons; % * Definition of total value added % 0 = yT(t) - ycof1 * ynet(t) - ycof2 * inv(t) - ycof3* muk(t) cof(33,yTzero) =1; cof(33,ynetmzero) =-ynetmcons/(ynetmcons+pkyk_yc); cof(33,pkzero) = -pkyk_yc/(ynetmcons+pkyk_yc); cof(33,ykzero)= -pkyk_yc/(ynetmcons+pkyk_yc); % labor demand in capital goods production % 0 = newj(t) +q(t) -muk(t) - w(t) - 1/(1-ly_l) * l(t) + ly_l/(1-ly_l) * ly(t); cof(34,ykzero) = 1; cof(34,pkzero) = 1; cof(34,mukzero) = -1; cof(34,wzero) = -1; cof(34,lzero) = - 1/(1-lc_l); cof(34,lyzero) = lc_l/(1-lc_l); % embodied productivity shock process % 0 = chi(t)-rhochi*chi(t-1)-echi(t) cof(35,chizero) = 1; cof(35,chilag) = -rhochi; cof(35,echizero) = -1; % Labor augmenting technology shock process % 0 = chiz(t)-rhochiz*chiz(t-1)-echiz(t) cof(36,chizzero) = 1; cof(36,chizlag) = -rhochiz; cof(36,echizzero) = -1; % Wage markup shock process % 0 = muw(t)-rhomuw*muw(t-1)-emuw(t) cof(37,muwzero) = 1; cof(37,muwlag) = -rhomuw; cof(37,emuwzero) = -1; % Wage markup shock process % 0 = muw(t)-rhomuw*muw(t-1)-emuw(t) cof(38,chikzero) = 1; cof(38,chiklag) = -rhochik; cof(38,echikzero) = -1; % 0 = echi(t) cof(39,echizero) = 1; % 0 = echiz(t) cof(40,echizzero) = 1; % 0 = emuw(t) cof(41,emuwzero) = 1; % 0 = emuw(t) cof(42,echikzero) = 1; %*************Begin Solution Algorithm *************************** %***************************************************************** % % Solve a linear perfect foresight model using the gauss eig % function to find the invariant subspace associated with the big % roots. This procedure will fail if the companion matrix is % defective and does not have a linearly independent set of % eigenvectors associated with the big roots. % % Input arguments: % % h Structural coef matrix (neq,neq*(nlag+1+nlag)). % neq Number of equations. % nlag Number of lags. % nlag Number of lags. (check!)!!!!!!!!!!!!!!!! % condn lag tolerance used as a condition number test % by numeric_shift and reduced_form. % uprbnd Inclusive upper bound for the modulus of roots % allowed in the reduced form. % % Output arguments: % % cofb Reduced form coefficient matrix (neq,neq*nlag). % scof Observable Structure % amat Companion form matrix % b Contemporaneous coefficient matrix % Model satisfies: % % z(t) = amat*z(t-1) + b*e(t) % % where the first neq elements of z(t) are the contemporaneous % values of the variables in the model % and e(t) is the shock vector of conformable dimension % % rts Roots returned by eig. % ia Dimension of companion matrix (number of non-trivial % elements in rts). % nexact Number of exact shiftrights. % nnumeric Number of numeric shiftrights. % lgroots Number of roots greater in modulus than uprbnd. % mcode Return code: see function aimerr. %***************************************************************** % Use AIM procedure to solve model: uprbnd = 1+1e-8; % Tolerance values for AIM program condn = 1e-8; % --------------------------------------------------------------------- % Run AIM % --------------------------------------------------------------------- [cofb,rts,ia,nex,nnum,lgrts,mcode] = ... aim_eig(cof,neq,nlag,nlead,condn,uprbnd); scof = obstruct(cof,cofb,neq,nlag,nlead); % need to calculate amat and b % =============================== s0 = scof(:,(neq*nlag+1):neq*(nlag+1)); %Contemp. coefs from obs. structure amat=zeros(neq*nlag,neq*nlag); % Initialize A matrix bmat=cofb(1:neq,((nlag-1)*neq+1):nlag*neq); % Lag 1 coefficients i=2; while i<=nlag; bmat=[bmat cofb(1:neq,((nlag-i)*neq+1):(nlag-i+1)*neq)]; % Lag i coefs i=i+1; end; amat(1:neq,:)=bmat; % Coefs for equations if nlag>1; amat((length(cofb(:,1))+1):length(amat(:,1)),1:neq*(nlag-1))=eye(neq*(nlag-1)); end; b = zeros(length(amat(:,1)),length(s0(1,:))); b(1:length(s0(:,1)),1:length(s0(1,:))) = inv(s0); % Store coefs %b=b(:,shockvec); % COMPUTE THE COVARIANCE MATRIX FOR THE MODEL -- THEN GET CORRELATIONS shockvar = zeros(xnum,xnum); shockvar(echipos,echipos) = chisigma^2; % variance of the shock shockvar(echizpos,echizpos) = chizsigma^2; % variance of the shock %shockvar(egpos,egpos) = gsigma^2; %shockvar(eepspos,eepspos) = epssigma^2; shockvar(emuwpos,emuwpos) = muwsigma^2; omega = yvarmod(amat,b,shockvar); % the variance covariance matrix. domega = diag(omega)+1e-30; % a vector of variances sdo = domega.^0.5; denom = sdo*sdo'; omcorr = omega./denom; % correlation coefficients sdratio = sdo/sdo(ycpos); sdo = 100*sdo; %disp(['output standard deviation (deviations) = ' num2str(sdo(ypos))]); %disp(['consumption standard deviation (%) = ' num2str(sdo(cpos))]); %disp(['investment standard deviation (%) = ' num2str(sdo(invpos))]); %disp(['consumption/output std dev ratio = ' num2str(sdratio(cpos))]); %disp(['investment/output std dev ratio = ' num2str(sdratio(invpos))]); % ======================================================== % Compute Impulse response function using companion form % solution matrix amat and contemporaneous matrix b obtained % from aim_run procedure: % ======================================================== % Shock to Embodied Technology shock = zeros(neq,1); % Shock vector @ shock(echipos,1) = 1; % Shock variable, size of shock @ impchi = impf(amat,b,shock,nimpstep,neq); % Call impulse respons proc @ nplot = 20; % periods to be plotted dat=(1:nplot)'; % Date variable for plotting if shock(echipos,1)~=0; if plotflag==1; figure(1); tfpchi=impchi(1:nplot,yTpos)-(1-al)*impchi(1:nplot,lpos)-al*impchi(1:nplot,klpos)+(1-measbls)*al*bb*(th-1)/(1-al*(1-bb))*impchi(1:nplot,akpos); himpchi=hc_yc/(hc_yc+hk_yc)*(impchi(1:nplot,hcpos)-ac_zc/(1-ac_zc)*(impchi(1:nplot,acpos)-impchi(1:nplot,zcpos)))+ hk_yc/(hc_yc+hk_yc)*(impchi(1:nplot,hkpos)-ak_zk/(1-ak_zk)*(impchi(1:nplot,akpos)-impchi(1:nplot,zkpos))); subplot(3,3,1);plot(dat,impchi(1:nplot,yTpos),'-');legend('Y'); subplot(3,3,2);plot(dat,impchi(1:nplot,ykpos),'-');legend('Real I'); subplot(3,3,3);plot(dat,impchi(1:nplot,lpos),'-');legend('L'); subplot(3,3,4);plot(dat,impchi(1:nplot,pkpos),'-');legend('P^K'); subplot(3,3,5);plot(dat,impchi(1:nplot,yTpos)-impchi(1:nplot,lpos),'-');legend('Y/L'); subplot(3,3,6);plot(dat,tfpchi,'-');legend('TFP'); subplot(3,3,7);plot(dat,sk_yc/(sk_yc+sc_yc)*impchi(1:nplot,skpos)+sc_yc/(sk_yc+sc_yc)*impchi(1:nplot,scpos),'-');legend('S'); subplot(3,3,8);plot(dat,himpchi,'-');legend('h'); subplot(3,3,9);plot(dat,impchi(1:nplot,upos),'-');legend('U'); end; end; % Shock to Disembodied Technology shock = zeros(neq,1); % Shock vector @ shock(echizpos,1) = 1; % Shock variable, size of shock @ impz = impf(amat,b,shock,nimpstep,neq); % Call impulse respons proc @ nplot = 20; % periods to be plotted dat=(1:nplot)'; % Date variable for plotting if shock(echizpos,1)~=0; if plotflag==1; figure(2); tfpz=impz(1:nplot,yTpos)-(1-al)*impz(1:nplot,lpos)-al*impz(1:nplot,klpos)+(1-measbls)*al*bb*(th-1)/(1-al*(1-bb))*impz(1:nplot,akpos); himpz=hc_yc/(hc_yc+hk_yc)*(impz(1:nplot,hcpos)-ac_zc/(1-ac_zc)*(impz(1:nplot,acpos)-impz(1:nplot,zcpos)))+ hk_yc/(hc_yc+hk_yc)*(impz(1:nplot,hkpos)-ak_zk/(1-ak_zk)*(impz(1:nplot,akpos)-impz(1:nplot,zkpos))); subplot(3,3,1);plot(dat,impz(1:nplot,yTpos),'-');legend('Y'); subplot(3,3,2);plot(dat,impz(1:nplot,ykpos),'-');legend('Real Investment'); subplot(3,3,3);plot(dat,impz(1:nplot,lpos),'-');legend('L'); subplot(3,3,4);plot(dat,impz(1:nplot,pkpos),'-');legend('P^K'); subplot(3,3,5);plot(dat,impz(1:nplot,yTpos)-impchi(1:nplot,lpos),'-');legend('Y/L'); subplot(3,3,6);plot(dat,tfpz,'-');legend('TFP'); subplot(3,3,7);plot(dat,sk_yc/(sk_yc+sc_yc)*impz(1:nplot,skpos)+sc_yc/(sk_yc+sc_yc)*impz(1:nplot,scpos),'-');legend('S'); subplot(3,3,8);plot(dat,himpz,'-');legend('H'); subplot(3,3,9);plot(dat,impz(1:nplot,upos),'-');legend('U'); end; end; % Wage markup shock shock = zeros(neq,1); % Shock vector @ shock(emuwpos,1) = 1; % Shock variable, size of shock @ impmuw = impf(amat,b,shock,nimpstep,neq); % Call impulse respons proc @ nplot = 20; % periods to be plotted dat=(1:nplot)'; % Date variable for plotting if shock(emuwpos,1)~=0; if plotflag==1; figure(3); tfpmuw = impmuw(1:nplot,yTpos)-(1-al)*impmuw(1:nplot,lpos)-al*impmuw(1:nplot,klpos)+(1-measbls)*al*bb*(th-1)/(1-al*(1-bb))*impmuw(1:nplot,akpos); tfpmunomis = impmuw(1:nplot,yTpos)-(1-al)*impmuw(1:nplot,lpos)-al*impmuw(1:nplot,klpos); hmuw = hc_yc/(hc_yc+hk_yc)*(impmuw(1:nplot,hcpos)-ac_zc/(1-ac_zc)*(impmuw(1:nplot,acpos)-impmuw(1:nplot,zcpos)))+ hk_yc/(hc_yc+hk_yc)*(impmuw(1:nplot,hkpos)-ak_zk/(1-ak_zk)*(impmuw(1:nplot,akpos)-impmuw(1:nplot,zkpos))); markup = 1/(1+pkyk_yc)*impmuw(1:nplot,mucpos)+pkyk_yc/(1+pkyk_yc)*impmuw(1:nplot,mukpos)+impmuw(1:nplot,muwpos); impwlk = elk*(impmuw(1:nplot,hkpos)-impmuw(1:nplot,sfpos)); impwlc = elc*(impmuw(1:nplot,hcpos)-impmuw(1:nplot,sfpos)); impwl = hk_yc/(hc_yc+hk_yc)*impwlk + hc_yc/(hc_yc+hk_yc)*impwlc; tfp_net_u = tfpmuw - al*impmuw(1: nplot, upos); pI = impmuw(1: nplot, sfpos) - impmuw(1: nplot, klpos); subplot(4, 3, 1);plot(dat,impmuw(1:nplot,yTpos),'-');title('Y'); subplot(4, 3, 2);plot(dat,impmuw(1:nplot,klpos),'-');title('K'); subplot(4, 3, 3);plot(dat,impmuw(1:nplot,lpos), '-');title('L'); subplot(4, 3, 4);plot(dat,tfpmuw, '-');title('TFP'); subplot(4, 3, 5);plot(dat,impmuw(1:nplot,pkpos),'-');title('P^K'); subplot(4, 3, 6);plot(dat,impmuw(1:nplot,yTpos)-impmuw(1:nplot,lpos),'-');title('Y/L'); subplot(4, 3, 7);plot(dat,sk_yc/(sk_yc+sc_yc)*impmuw(1:nplot,skpos)+sc_yc/(sk_yc+sc_yc)*impmuw(1:nplot,scpos),'-');title('S'); subplot(4, 3, 8);plot(dat,impwl,'-');title('\lambda'); subplot(4, 3, 9);plot(dat,impmuw(1:nplot,upos),'-');title('U'); subplot(4, 3,10);plot(dat,impmuw(1:nplot,muwpos),'-');title('\mu^w'); figure (4); subplot(3,3,1);plot(dat,elk*(impmuw(1:nplot,hkpos)-impmuw(1:nplot,sfpos)),'--');legend('\lambdak'); subplot(3,3,2);plot(dat,elc*(impmuw(1:nplot,hcpos)-impmuw(1:nplot,sfpos)),'--');legend('\lambdac'); subplot(3,3,3);plot(dat,impmuw(1:nplot,akpos)-impmuw(1:nplot,zkpos),'-');legend('Ak/Zk'); subplot(3,3,4);plot(dat,impmuw(1:nplot,acpos)-impmuw(1:nplot,zcpos),'-');legend('Ac/Zc'); subplot(3,3,5);plot(dat,impmuw(1:nplot,jkpos)-impmuw(1:nplot,zkpos),'-');legend('jki'); subplot(3,3,6);plot(dat,impmuw(1:nplot,vkpos)-impmuw(1:nplot,akpos),'-');legend('vki'); %subplot(3,3,6);plot(dat,impmuw4(1:nplot,szpos),'--');legend('Sz'); subplot(3,3,7);plot(dat,impmuw(1:nplot,mukpos),'--');legend('\muk'); subplot(3,3,8);plot(dat,impmuw(1:nplot,hkpos)-ak_zk/(1-ak_zk)*(impmuw(1:nplot,akpos)-impmuw(1:nplot,zkpos)),'-');legend('Total Hk'); subplot(3,3,9);plot(dat,impmuw(1:nplot,yTpos)-(1+fi)*impmuw(1:nplot,lpos)-impmuw(1:nplot,cpos),'--');legend('Total Markup'); figure (5); subplot(3,3,1);plot(dat,impmuw(1:nplot,klpos),'-');legend('K'); subplot(3,3,2);plot(dat,impmuw(1:nplot,lypos),'-');legend('Ly'); subplot(3,3,3);plot(dat,impmuw(1:nplot,mucpos),'-');legend('\muc'); subplot(3,3,4);plot(dat,impmuw(1:nplot,sfpos),'-');legend('SF'); subplot(3,3,5);plot(dat,impmuw(1:nplot,prkpos),'-');legend('\Pi'); subplot(3,3,6);plot(dat,impmuw(1:nplot,prcpos),'-');legend('\Piz'); subplot(3,3,7);plot(dat,impmuw(1:nplot,akpos),'-');legend('Ak'); subplot(3,3,8);plot(dat,impmuw(1:nplot,acpos),'-');legend('Ac'); subplot(3,3,9);plot(dat,impmuw(1:nplot,ycpos)-impmuw(1:nplot,mucpos),'-');legend('mc'); figure (6); markup=1/(1+pkyk_yc)*impmuw(1:nplot,mucpos)+pkyk_yc/(1+pkyk_yc)*impmuw(1:nplot,mukpos)+impmuw(1:nplot,muwpos); subplot(3,3,1);plot(dat,impmuw(1:nplot,pkpos)+impmuw(1:nplot,ykpos)-impmuw(1:nplot,mukpos),'-');legend('hk'); subplot(3,3,2);plot(dat,impmuw(1:nplot,sfpos)+impmuw(1:nplot,ncpos)*(occ_yc/oc_yc)+impmuw(1:nplot,nkpos)*(ock_yc/oc_yc),'-');legend('oc'); subplot(3,3,3);plot(dat,impmuw(1:nplot,cpos),'-');legend('C'); subplot(3,3,4);plot(dat,impmuw(1:nplot,nkpos),'-');legend('Nk'); subplot(3,3,5);plot(dat,impmuw(1:nplot,ncpos),'-');legend('Nc'); subplot(3,3,6);plot(dat,markup,'-');legend('Markup'); %subplot(3,3,7);plot(dat,newY,'-');legend('New Y'); subplot(3,3,7);plot(dat,impmuw(1:nplot,wpos),'-');legend('w'); end; end; % Chik: shock to production of new capital inventions shock = zeros(neq,1); % Shock vector shock(echikpos,1) = 1; % Shock variable, size of shock impchik = impf(amat,b,shock,nimpstep,neq); % Call impulse respons proc nplot = 20; % periods to be plotted dat=(1:nplot)'; % Date variable for plotting if plotflag == 1 figure(7); tfpchik = impchik(1:nplot,yTpos) ... -(1-al)*impchik(1:nplot,lpos)-al*impchik(1:nplot,klpos) ... +(1-measbls)*al*bb*(th-1)/(1-al*(1-bb))*impchik(1:nplot,akpos); impwlk = elk*(impchik(1:nplot,hkpos)-impchik(1:nplot,sfpos)); impwlc = elc*(impchik(1:nplot,hcpos)-impchik(1:nplot,sfpos)); impwl = hk_yc/(hc_yc+hk_yc)*impwlk + hc_yc/(hc_yc+hk_yc)*impwlc; subplot(4,3,1); plot(dat,impchik(1:nplot,yTpos),'-');legend('Y'); subplot(4,3,2); plot(dat,impchik(1:nplot,kpos),'-');legend('K'); subplot(4,3,3); plot(dat,impchik(1:nplot,lpos),'-');legend('L'); subplot(4,3,4); plot(dat,tfpchik,'-');legend('TFP'); subplot(4,3,5); plot(dat,impchik(1:nplot,pkpos),'-');legend('P^K'); subplot(4,3,6); plot(dat,impchik(1:nplot,yTpos)-impchik(1:nplot,lpos),'-');legend('Y/L'); subplot(4,3,7); plot(dat,sk_yc/(sk_yc+sc_yc)*impchik(1:nplot,skpos)+sc_yc/(sk_yc+sc_yc)*impchik(1:nplot,scpos),'-');legend('S'); subplot(4,3,8); plot(dat,impwl,'-');legend('\lambda'); subplot(4,3,9); plot(dat,impchik(1:nplot,upos),'-');legend('U'); subplot(4,3,10);plot(dat,impchik(1:nplot,zkpos),'-');legend('Z_k'); subplot(4,3,11);plot(dat,impchik(1:nplot,jkpos),'-');legend('J_k'); subplot(4,3,12);plot(dat,impchik(1:nplot,chikpos),'-');legend('\chi_k'); end % Simulate the Model -------------------------------- simstep = 54; % Number of simulated periods % Note: 0.025 normalization is necessary! - to minimize bandpass filter error simshock = 0.025*randn(1, simstep); % load simshock3.txt; % simshock = simshock3; ysim3 = simffix(amat,b,simstep,simshock,emuwpos,emuwpos); evalnewrevis_v; % data for cross-correlations data(:, 1) = fy2200(:, yTpos); data(:, 2) = fy2200(:, yTpos) - fy2200(:, lpos); data(:, 3) = ftfp2200; data(:, 4) = fy2200(:, lpos); data(:, 5) = fy2200(:, cpos); data(:, 6) = fy2200(:, ykpos); data(:, 7) = fs2200; data(:, 8) = fy2200(:, pkpos); data(:, 9) = fmk12200; data(:,10) = fy2200(:, upos);