-
Notifications
You must be signed in to change notification settings - Fork 17
Description
Hi,
I am trying to replicate the model of this paper here which was originally written in matlab (attached as txt, but it is .m). I am not proficient in neither matlab, julia, or even DSGE. As a test, I replicate the RBC model (under RBC folder) and achieve the same results as the matlab code. However, I got the following error when running the baseline model: ERROR: LoadError: UndefVarError: μᶜ not defined
I tried to run a debugger and expand the macros, but no success in finding the problem. Do you have suggestions to debug it?
PS1: the evaluation is considerably slow in comparisson with other codes that I tried
PS2: the original paper uses AIM algorith to solve the model
PS3: Thanks for the package :)
Model
Here is the complete code of the model:
@model Baseline begin
## Resource constraint
ynet[0] = (c_yc/(ynetmcons)) * c[0] + (sk_yc/(ynetmcons)) * sk[0] + (sc_yc/(ynetmcons)) * sc[0] + actualhc_yc/(ynetmcons) * hc[0] + (ac_zc/(1-ac_zc)*actualhc_yc/(ynetmcons)) * zc[0] - (inv(zc_ac-1)*actualhc_yc/(ynetmcons)) * ac[0] + (actualhk_yc/(ynetmcons)) * hk[0] + (ak_zk/(1-ak_zk)*actualhk_yc/(ynetmcons)) * zk[0] - (inv(zk_ak-1)*actualhk_yc/(ynetmcons)) * ak[0]
# ## Euler equation
c[0] = c[1] - r[0]
# ## Aggregate production function FIXME 0 or ss?
yc[0] = (1/(1-bb)) * chiz[0] + α * k[-1] - α * l[0] + ly[0] + ((μᶜ[0] - 1)/(1 - bb)) * Nᶜ[0] - ((bb+μᶜ[0]*log(Nᶜ[0]))/(1-bb)) * μᶜ[0] + α * u[0] + (bb/(1-bb)*(θ-1)) * ac[0]
# ## demand of capital
yc[0] = kl[0] - l[0] + ly[0] + μᶜ[0] + d[0] * (1/(1+δ/d_pk)) + pk[0] * ((δ/(d_pk+δ))) + u[0] * edu*(1/(d_pk/δ+1))
# ## capacity choice
yc[0] = (1 + edp) * u[0] + μᶜ[0] + kl[0] - l[0] + ly[0] + pk[0]
# ## labor demand in final output
yc[0] = μᶜ[0] + ly[0] + w[0]
# ## production of new investment goods FIXME 0 or ss?
yk[0] = chi[0] * (1 / ( 1 - bb)) + α * kl[0] - l[0] * (α-1/(1-lc_l)) + u[0] * α - ly[0] * (lc_l/(1-lc_l)) + Nᵏ[0] * ((μᵏ[0]-1)/(1-bb)) - ((bb+μᵏ[0]*log(Nᵏ[0]))/(1-bb)) * μᵏ[0] + pk[0] * (bb/(1-bb)) + ak[0] * (bb/(1-bb)*(θ-1))
# ## Real wage
w[0] = ζ * l[0] + c[0] + μʷ[0]
# ## Profits embodied
prk[0] = yk[0] + pk[0] - μᵏ[0]
# ## Profits disembodied
prc[0] = yc[0] - μᶜ[0]
# ## Value of an adopted innovation for embodied
vk[0] = ak[0] * ((1-prk_vk)) + prk[0] * prk_vk + vk[1] * (1 - prk_vk)
# ## Value of an adopted innovation for disembodied
vc[0] = ac[0] * (1-prc_vc) + prc[0] * (prc_vc) + vc[1] * (1 - prc_vc) - ac[1] * ((1-prc_vc)) - r[0] * ((1-prc_vc))
# ## Capital accumulation
k[0] = - u[0] * (edu*δ/(1+gk)) + k[-1] * jcof + yk[0] * (1 - jcof)
# ## Law of motion for embodied productivity
zk[0] = zk[-1] + sk[-1] * (ρ*(gzk+ok)/(1+gzk)) - sf[1] * (ρ*(gzk+ok)/(1+gzk)) + chik[1] * ((gzk+ok)/(1+gzk))
# ## Law of motion for disembodied productivity
zc[0] = zc[-1] + sc[1] * (ρ*(gzc+oc)/(1+gzc)) - sf[1] * (ρ*(gzc+oc)/(1+gzc))
# ## Free entry for embodied
sk[0] * (1 - ρ) = zk[0] - sf[0] * (ρ) + jk[1] - zk[1] - r[0]
# ## Free entry for disembodied
sc[0] * (1 - ρ) = zc[0] - sf[0] * (ρ) + jc[1] - zc[1] - r[0]
# ## Bellman for not adopted disemb innovation
- jc[0] = hc[0] * (hc_jc+ϕᶜ*elc*λᶜ/R*rz*(1-zc_ac*vc_jc)) + r[0] * ((1+hc_jc)) - zc[0] * (ϕᶜ*rz*((1-λᶜ)+λᶜ*zc_ac*vc_jc)/R) + ac[1] * (ϕᶜ*λᶜ*rz*zc_ac*vc_jc/R) - vc[1] * (ϕᶜ*λᶜ*rz*zc_ac*vc_jc/R) + sf[0] * (ϕᶜ*elc*λᶜ*rz/R*(zc_ac*vc_jc-1)) + zc[1] * (ϕᶜ*rz*(1-λᶜ)/R) - jc[1] * (ϕᶜ*rz*(1-λᶜ)/R)
# ## law of motion for adopted disembodied innvo
ac[0] = ac[-1] * (ϕᶜ*(1-λᶜ)/(1+gzc)) + hc[-1] * (elc*λᶜ*((ϕᶜ/(1+gzc))*zc_ac-ϕᶜ/(1+gzc))) - sf[-1] * (elc*λᶜ*((ϕᶜ/(1+gzc))*zc_ac-ϕᶜ/(1+gzc))) + zc[-1] * ((1-ϕᶜ*(1-λᶜ)/(1+gzc)))
# ## optimal investment in adoption of disemb innov
zc[0] = sf[0] * (1+ℓᶜ) + r[0] - hc[0] * ℓᶜ - vc[1] * (1/(1-jc_vc*ac_zc)) + ac[1] * (1/(1-jc_vc*ac_zc)) + jc[1] * (1/(vc_jc*zc_ac-1)) - zc[1] * (1/(vc_jc*zc_ac-1))
# ## Bellman for not adopted emb innovation
- jk[0] = hk[0] * ((hk_jk+(1-ok)*elk*λᵏ/R*ra*(1-zk_ak*vk_jk))) + r[0] * ((1+hk_jk)) - zk[0] * (ϕᵏ*ra*((1-λᵏ)+λᵏ*zk_ak*vk_jk)/R) + ak[1] * (ϕᵏ*λᵏ*ra*zk_ak*vk_jk/R) - vk[1] * (ϕᵏ*λᵏ*ra*zk_ak*vk_jk/R) + sf[0] * (ϕᵏ*elk*λᵏ*ra/R*(zk_ak*vk_jk-1)) + zk[1] * (ϕᵏ*ra*(1-λᵏ)/R) - jk[1] * (ϕᵏ*ra*(1-λᵏ)/R)
# ## law of motion for adopted embodied innvo
ak[0] = ak[-1] * (ϕᵏ*(1-λᵏ)/(1+gzk)) + hk[-1] * (elk*λᵏ*((ϕᵏ/(1+gzk))*zk_ak-ϕᵏ/(1+gzk))) - sf[-1] * (elk*λᵏ*((ϕᵏ/(1+gzk))*zk_ak-ϕᵏ/(1+gzk))) + zk[-1] * ((1-ϕᵏ*(1-λᵏ)/(1+gzk)))
# ## optimal investment in adoption of emb innov
zk[0] = sf[0] * ((1+ℓᵏ)) + r[0] - hk[0] * (ℓᵏ) - vk[1] * (1/(1-jk_vk*ak_zk)) + ak[1] * (1/(1-jk_vk*ak_zk)) + jk[1] * (1/(vk_jk*zk_ak-1)) - zk[1] * (1/(vk_jk*zk_ak-1))
# ## Arbitrage
pk[0] = -r[0] + d[1] * ((R-1-gpk)/R) + pk[1] * ((1+gpk)/R)
# ## entry into final goods sector
μᶜ[0] = - yc[0] * mucof + sf[0] * mucof + Nᶜ[0] * mucof
# ## m
μᶜ[0] = Nᶜ[0] * ημᶜ
# ## entry into capital goods sector
μᵏ[0] = - mukcof * yk[0] - pk[0] * mukcof + sf[0] * mukcof + Nᵏ[0] * mukcof
# ## mk
μᵏ[0] = Nᵏ[0] * ημᵏ
# ## equivalence between klzero and jlag
kl[0] = k[-1]
# ## Definition of output net of total overhead costs
ynet[0] = yc[0] * (1/(1-oc_yc)) - Nᶜ[0] * (occ_yc/(1-oc_yc)) - Nᵏ[0] * (ock_yc/(1-oc_yc)) - sf[0] * (oc_yc/(1-oc_yc))
# ## definition of scaling factor
sf[0] = kl[0] + ak[0] * (bb*(1-θ)) - ac[0] * (bb*(1-θ))
# ## definition of ynetm
ynetm[0] = ynet[0] * (1/(1-mc_yc*inv(ynet_yc)-mk_yc*inv(ynet_yc))) - yc[0] * (mc_yc/ynetmcons) + μᶜ[0] * (mc_yc/ynetmcons) - pk[0] * (mk_yc/ynetmcons) - yk[0] * (mk_yc/ynetmcons) + μᵏ[0] * (mk_yc/ynetmcons)
# ## Definition of total value added
yT[0] = ynetm[0] * (ynetmcons/(ynetmcons+pkyk_yc)) + pk[0] * (pkyk_yc/(ynetmcons+pkyk_yc)) + yk[0] * (pkyk_yc/(ynetmcons+pkyk_yc))
# ## labor demand in capital goods production
yk[0] = - pk[0] + μᵏ[0] + w[0] + l[0] * (1/(1-lc_l)) - ly[0] * (lc_l/(1-lc_l))
# ## embodied productivity shock process
chi[0] = ρᵡ * chi[-1] + σᵡ* eps_chi[x]
# ## Labor augmenting technology shock process
chiz[0] = ρᶻᵪ * chiz[-1] + σᶻᵪ * eps_chi_z[x]
# ## Wage markup shock process
μʷ[0] = μʷ[-1] * ρᵐʷ + σᵐʷ * eps_muw[x]
# ## Wage markup shock process
chik[0] = ρᵏᵪ * chik[-1] + σᵏᵪ * eps_chi_k[x]
end
@parameters Baseline simplify = false guess = Dict(:μʷ => 1.2, :μᶜ => 1.1, :μᵏ => 1.2, :Nᶜ => 1, :Nᵏ => 1, :u => 0.8) begin
β = 0.95 # discount factor (bet)
δ = 0.08 # depreciation rate
ζ = 1 # labor supply curvature (fi)
α = 1/3 # k share (al)
g_y = 0.2 * 0.7 # ss g/y ratio
ν = 0.6 # FIXME Comment
θ = 1 / ν # elasticity of substitution intermediate good sector (th)
ρ = 0.9 # parameter embodied technology
η = 0.0
# μʷ[ss] = 1.2 # ss wage markup (muw)
# μᶜ[ss] = 1.1 # ss wage markup (muc)
# Nᶜ[ss] = 1 # (nc)
# Nᵏ[ss] = 1 # (nk)
dμᶜ = μᶜ[ss] # (dmuc)
ημᶜ = (dμᶜ / μᶜ[ss]) * Nᶜ[ss]
boc = (μᶜ[ss] - 1)/μᶜ[ss]
# μᵏ[ss] = 1.2
ημᵏ = ημᶜ
λᵏ = 0.1 # (lamk)
λᶜ = 0.1 # (lamc)
elk = 0.9
elc = 0.9
ℓᵏ = elk - 1 # elasticity of λ wrt H
ℓᶜ = elc - 1 # elasticity of λ wrt H
o = 0.03
oz = 0.03
oc = 0.03
ok = 0.03
ϕᶜ = 1 - oc # (phic)
ϕᵏ = 1 - ok # (phic)
bb = 0.5 # intermediate share in final output
## Nonstochastic steady state
gpk = -0.026
gy = 0.024
gk = gy - gpk
gzc = (gy-α*gk)/bb*(1-bb)/(θ-1)
gzk = (gpk-gzc*bb*(θ-1))/(bb*(1-θ))
gtfp = gy-α*gk+gzk*(α*bb*(θ-1))/(1-α*(1-bb))
measbls = (0.014-gy+α*gk)/(gzk*(α*bb*(θ-1))/(1-α*(1-bb)))
gv = gy
gvz = gy
R = (1+gy)/β
d_pk = R-(1+gpk) # definition of R
yc_pkkc = μᶜ[ss]/(α*(1-bb))*(d_pk+δ) # foc for k
yk_kk = μᵏ[ss]/(α*(1-bb))*(d_pk+δ) # new capital to capital in capital production sector
yk_k = (gk+δ)/(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*μᵏ[ss]/μᶜ[ss]
mk_yc = bb*1/θ*pkyk_yc/μᵏ[ss]
mc_yc = bb*1/θ/μᶜ[ss]
pkk_yc = inv(yc_pkkc)/kc_k
pik_yc = pkk_yc*μᶜ[ss]/μᵏ[ss] # value of total capital stock removing fluctuations in relative price of capital due to markup variations
prk_yc = pkyk_yc*(1-1/θ)*bb/μᵏ[ss]
prc_yc = (1-1/θ)*bb/μᶜ[ss]
prk_vk = 1-(1+gv)*ϕᵏ/((1+gzk)*R) # bellman for va
prc_vc = 1-(1+gvz)*ϕᶜ/((1+gzc)*R) # bellman for vz
yc_vk = prk_vk*inv(prk_yc)
yc_vc = prc_vc*inv(prc_yc)
zk_ak = ((gzk+ok)/(λᵏ*ϕᵏ)+1)
zc_ac = ((gzc+oc)/(λᶜ*ϕᶜ)+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*ϕᵏ*λᵏ*ra/R-(1-λᵏ)*ϕᵏ*ra/R))*(1-elk)*ϕᵏ*λᵏ*ra*zk_ak/R*inv(yc_vk) # zk * jk /yc bellman for not adopted innov
jc_yc = (inv(1/ϕᶜ-elc*λᶜ*rz/R-(1-λᶜ)*rz/R))*(1-elc)*λᶜ*rz*zc_ac/R*inv(yc_vc) # zc*jc/yc bellman for not adopted innov
hk_yc = ϕᵏ*elk*λᵏ*ra/R*(inv(yc_vk)*zk_ak-jk_yc) # zk *hk/yc
hc_yc = ϕᶜ*elc*λᶜ*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*(μᵏ[ss]-1)*μᶜ[ss]/(μᵏ[ss]*(μᶜ[ss]-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-((ϕᶜ/(1+gzc))^2-inv(zc_ac))*hc_yc-((ϕᵏ/(1+gzk))^2-inv(zk_ak))*hk_yc
pi_yc=(μᶜ[ss]-1)/μᶜ[ss]-oc_yc
# u[ss]=.8
edu=α*(1-bb)*yc_pkkc/(μᶜ[ss]*δ) # 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
# NOTE Coefficients for the log-linearization
qcof = (1-δ)*(1+gpk)/R
jcof = (1-δ)/(1+gk)
vcof = (1+gy)/((1+gzk)*R)
vzcof= (1+gy)/((1+gzc)*R)
mucof= μᶜ[ss]-1
mukcof=μᵏ[ss]-1
ycof1=ynet_yc*inv(ynet_yc-mc_yc-mk_yc+pkyk_yc-actualhk_yc-actualhc_yc-sk_yc-sc_yc)
ycof2=mc_yc*inv(ynet_yc-mc_yc-mk_yc+pkyk_yc-actualhk_yc-actualhc_yc-sk_yc-sc_yc)
ycof3=mk_yc*inv(ynet_yc-mc_yc-mk_yc+pkyk_yc-actualhk_yc-actualhc_yc-sk_yc-sc_yc)
ycof4=pkyk_yc*inv(ynet_yc-mc_yc-mk_yc+pkyk_yc-actualhk_yc-actualhc_yc-sk_yc-sc_yc)
ycof=inv(ynet_yc-mc_yc-mk_yc+pkyk_yc-actualhk_yc-actualhc_yc-sk_yc-sc_yc)
ynetmcons=1-oc_yc-mc_yc-mk_yc # fraction of ynetm in y
# NOTE Shock to Embodied Technology
ρᵡ = (0.7)^4 # autoregressive component
σᵡ = 0.01 # standard deviation
# Disembodied Technology Shock
ρᶻᵪ = (0.7)^4
σᶻᵪ = 0.01
# Wage markup shock
ρᵐʷ = 0.60 # (rhow)
σᵐʷ = 0.01
# Chik shock
ρᵏᵪ = 0.8
σᵏᵪ = 0.01
end
Log message
Take symbolic derivatives up to first order: 1598.541 seconds
Find non stochastic steady state: ERROR: LoadError: UndefVarError: `μᶜ` not defined
Stacktrace:
[1] macro expansion
@ ~/.julia/packages/MacroModelling/oKvYN/src/MacroModelling.jl:3501 [inlined]
[2] macro expansion
@ ~/.julia/packages/RuntimeGeneratedFunctions/M9ZX8/src/RuntimeGeneratedFunctions.jl:163 [inlined]
[3] macro expansion
@ ./none:0 [inlined]
[4] generated_callfunc
@ ./none:0 [inlined]
[5] (::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{…})(::Vector{…}, ::MacroModelling.ℳ, ::Bool, ::Bool, ::Vector{…})
@ RuntimeGeneratedFunctions ~/.julia/packages/RuntimeGeneratedFunctions/M9ZX8/src/RuntimeGeneratedFunctions.jl:150
[6] macro expansion
@ ~/.julia/packages/MacroModelling/oKvYN/src/macros.jl:1518 [inlined]
[7] top-level scope
@ ~/Documents/KS_vs_DSGE/code/DSGE/Comin_Gertler_2006/Baseline.jl:1513
[8] include(fname::String)
@ Base.MainInclude ./client.jl:489
[9] top-level scope
@ REPL[1]:1
[10] top-level scope
@ none:1
in expression starting at /home/gpetrini/Documents/KS_vs_DSGE/code/DSGE/Comin_Gertler_2006/Baseline.jl:102