Skip to content

ERROR: LoadError: UndefVarError: x not defined #88

@gpetrini

Description

@gpetrini

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?

original matlab code

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions