@@ -972,3 +972,270 @@ plot_solution(Backus_Kehoe_Kydland_1992, "K{H}",
972972
973973# 
974974
975+
976+ # Conditional Variance Decomposition
977+ @model Smets_Wouters_2007_linear begin
978+ a[0 ] = calfa * rkf[0 ] + (1 - calfa) * wf[0 ]
979+ zcapf[0 ] = rkf[0 ] * 1 / (czcap / (1 - czcap))
980+ rkf[0 ] = wf[0 ] + labf[0 ] - kf[0 ]
981+ kf[0 ] = zcapf[0 ] + kpf[- 1 ]
982+ invef[0 ] = qs[0 ] + 1 / (1 + cgamma * cbetabar) * (pkf[0 ] * 1 / (csadjcost * cgamma ^ 2 ) + invef[- 1 ] + invef[1 ] * cgamma * cbetabar)
983+ pkf[0 ] = b[0 ] * (1 / ((1 - chabb / cgamma) / (csigma * (1 + chabb / cgamma)))) - rrf[0 ] + rkf[1 ] * (crk / (crk + (1 - ctou))) + pkf[1 ] * ((1 - ctou) / (crk + (1 - ctou)))
984+ cf[0 ] = b[0 ] + cf[- 1 ] * chabb / cgamma / (1 + chabb / cgamma) + cf[1 ] * 1 / (1 + chabb / cgamma) + (labf[0 ] - labf[1 ]) * ((csigma - 1 ) * cwhlc / (csigma * (1 + chabb / cgamma))) - rrf[0 ] * (1 - chabb / cgamma) / (csigma * (1 + chabb / cgamma))
985+ yf[0 ] = g[0 ] + cf[0 ] * ccy + invef[0 ] * ciy + zcapf[0 ] * crkky
986+ yf[0 ] = cfc * (a[0 ] + calfa * kf[0 ] + (1 - calfa) * labf[0 ])
987+ wf[0 ] = labf[0 ] * csigl + cf[0 ] * 1 / (1 - chabb / cgamma) - cf[- 1 ] * chabb / cgamma / (1 - chabb / cgamma)
988+ kpf[0 ] = kpf[- 1 ] * (1 - cikbar) + invef[0 ] * cikbar + qs[0 ] * csadjcost * cgamma ^ 2 * cikbar
989+ mc[0 ] = calfa * rk[0 ] + (1 - calfa) * w[0 ] - a[0 ]
990+ zcap[0 ] = 1 / (czcap / (1 - czcap)) * rk[0 ]
991+ rk[0 ] = w[0 ] + lab[0 ] - k[0 ]
992+ k[0 ] = zcap[0 ] + kp[- 1 ]
993+ inve[0 ] = qs[0 ] + 1 / (1 + cgamma * cbetabar) * (pk[0 ] * 1 / (csadjcost * cgamma ^ 2 ) + inve[- 1 ] + inve[1 ] * cgamma * cbetabar)
994+ pk[0 ] = pinf[1 ] - r[0 ] + b[0 ] * 1 / ((1 - chabb / cgamma) / (csigma * (1 + chabb / cgamma))) + rk[1 ] * (crk / (crk + (1 - ctou))) + pk[1 ] * ((1 - ctou) / (crk + (1 - ctou)))
995+ c[0 ] = b[0 ] + c[- 1 ] * chabb / cgamma / (1 + chabb / cgamma) + c[1 ] * 1 / (1 + chabb / cgamma) +
996+ (lab[0 ] - lab[1 ]) * ((csigma - 1 ) * cwhlc / (csigma * (1 + chabb / cgamma))) - (r[0 ] - pinf[1 ]) * (1 - chabb / cgamma) / (csigma * (1 + chabb / cgamma))
997+ y[0 ] = g[0 ] + c[0 ] * ccy + inve[0 ] * ciy + zcap[0 ] * crkky
998+ y[0 ] = cfc * (a[0 ] + calfa * k[0 ] + (1 - calfa) * lab[0 ])
999+ pinf[0 ] = spinf[0 ] + 1 / (1 + cindp * cgamma * cbetabar) * (cindp * pinf[- 1 ] + pinf[1 ] * cgamma * cbetabar + mc[0 ] * (1 - cprobp) * (1 - cprobp * cgamma * cbetabar) / cprobp / (1 + (cfc - 1 ) * curvp))
1000+ w[0 ] = sw[0 ] + w[- 1 ] * 1 / (1 + cgamma * cbetabar) + w[1 ] * cgamma * cbetabar / (1 + cgamma * cbetabar) + pinf[- 1 ] * cindw / (1 + cgamma * cbetabar) - pinf[0 ] * (1 + cindw * cgamma * cbetabar) / (1 + cgamma * cbetabar) + pinf[1 ] * cgamma * cbetabar / (1 + cgamma * cbetabar) + (csigl * lab[0 ] + c[0 ] * 1 / (1 - chabb / cgamma) - c[- 1 ] * chabb / cgamma / (1 - chabb / cgamma) - w[0 ]) * 1 / (1 + (clandaw - 1 ) * curvw) * (1 - cprobw) * (1 - cprobw * cgamma * cbetabar) / (cprobw * (1 + cgamma * cbetabar))
1001+ r[0 ] = pinf[0 ] * crpi * (1 - crr) + (1 - crr) * cry * (y[0 ] - yf[0 ]) + crdy * (y[0 ] - yf[0 ] - y[- 1 ] + yf[- 1 ]) + crr * r[- 1 ] + ms[0 ]
1002+ a[0 ] = crhoa * a[- 1 ] + z_ea * ea[x]
1003+ b[0 ] = crhob * b[- 1 ] + z_eb * eb[x]
1004+ g[0 ] = crhog * g[- 1 ] + z_eg * eg[x] + z_ea * ea[x] * cgy
1005+ qs[0 ] = crhoqs * qs[- 1 ] + z_eqs * eqs[x]
1006+ ms[0 ] = crhoms * ms[- 1 ] + z_em * em[x]
1007+ spinf[0 ] = crhopinf * spinf[- 1 ] + epinfma[0 ] - cmap * epinfma[- 1 ]
1008+ epinfma[0 ] = z_epinf * epinf[x]
1009+ sw[0 ] = crhow * sw[- 1 ] + ewma[0 ] - cmaw * ewma[- 1 ]
1010+ ewma[0 ] = z_ew * ew[x]
1011+ kp[0 ] = kp[- 1 ] * (1 - cikbar) + inve[0 ] * cikbar + qs[0 ] * csadjcost * cgamma ^ 2 * cikbar
1012+ dy[0 ] = ctrend + y[0 ] - y[- 1 ]
1013+ dc[0 ] = ctrend + c[0 ] - c[- 1 ]
1014+ dinve[0 ] = ctrend + inve[0 ] - inve[- 1 ]
1015+ pinfobs[0 ] = constepinf + pinf[0 ]
1016+ robs[0 ] = r[0 ] + conster
1017+ dwobs[0 ] = ctrend + w[0 ] - w[- 1 ]
1018+ labobs[0 ] = lab[0 ] + constelab
1019+ end
1020+
1021+ @parameters Smets_Wouters_2007_linear begin
1022+ ctou = .025
1023+ clandaw = 1.5
1024+ cg = 0.18
1025+ curvp = 10
1026+ curvw = 10
1027+ calfa = .24
1028+ csigma = 1.5
1029+ cfc = 1.5
1030+ cgy = 0.51
1031+ csadjcost = 6.0144
1032+ chabb = 0.6361
1033+ cprobw = 0.8087
1034+ csigl = 1.9423
1035+ cprobp = 0.6
1036+ cindw = 0.3243
1037+ cindp = 0.47
1038+ czcap = 0.2696
1039+ crpi = 1.488
1040+ crr = 0.8762
1041+ cry = 0.0593
1042+ crdy = 0.2347
1043+ crhoa = 0.9977
1044+ crhob = 0.5799
1045+ crhog = 0.9957
1046+ crhoqs = 0.7165
1047+ crhoms = 0
1048+ crhopinf = 0
1049+ crhow = 0
1050+ cmap = 0
1051+ cmaw = 0
1052+ constelab = 0
1053+ constepinf = 0.7
1054+ constebeta = 0.7420
1055+ ctrend = 0.3982
1056+ z_ea = 0.4618
1057+ z_eb = 1.8513
1058+ z_eg = 0.6090
1059+ z_em = 0.2397
1060+ z_ew = 0.2089
1061+ z_eqs = 0.6017
1062+ z_epinf = 0.1455
1063+ cpie = 1 + constepinf / 100 # gross inflation rate
1064+ cgamma = 1 + ctrend / 100 # gross growth rate
1065+ cbeta = 1 / (1 + constebeta / 100 ) # discount factor
1066+ clandap = cfc # fixed cost share/gross price markup
1067+ cbetabar= cbeta * cgamma ^ (- csigma) # growth-adjusted discount factor in Euler equation
1068+ cr = cpie / cbetabar # steady state gross real interest rate
1069+ crk = 1 / cbetabar - (1 - ctou) # steady state rental rate
1070+ cw = (calfa ^ calfa * (1 - calfa) ^ (1 - calfa) / (clandap * crk ^ calfa)) ^ (1 / (1 - calfa)) # steady state real wage
1071+ cikbar = 1 - (1 - ctou) / cgamma # (1-k_1) in equation LOM capital, equation (8)
1072+ cik = cikbar * cgamma # i_k: investment-capital ratio
1073+ clk = (1 - calfa) / calfa * crk / cw # labor to capital ratio
1074+ cky = cfc * clk ^ (calfa - 1 ) # k_y: steady state output ratio
1075+ ciy = cik * cky # investment-output ratio
1076+ ccy = 1 - cg - cik * cky # consumption-output ratio
1077+ crkky = crk * cky # z_y=R_{*}^k*k_y
1078+ cwhlc = (1 / clandaw) * (1 - calfa) / calfa * crk * cky / ccy # W^{h}_{*}*L_{*}/C_{*} used in c_2 in equation (2)
1079+ conster = (cr - 1 ) * 100 # steady state federal funds rate ($\bar r$)
1080+ end
1081+
1082+
1083+ plot_conditional_variance_decomposition (Smets_Wouters_2007_linear,
1084+ save_plots = true , save_plots_format = :png , save_plots_path = " ./docs/src/assets" )
1085+
1086+
1087+ plot_fevd (Smets_Wouters_2007_linear, periods = 12 ,
1088+ save_plots = true , save_plots_format = :png , save_plots_path = " ./docs/src/assets" , save_plots_name = :short_period )
1089+
1090+
1091+ plot_fevd (Smets_Wouters_2007_linear,
1092+ variables = [:inve , :c , :y , :pinf , :w , :lab ],
1093+ save_plots = true , save_plots_format = :png , save_plots_path = " ./docs/src/assets" , save_plots_name = :var_select )
1094+
1095+
1096+
1097+ @model FS2000 begin
1098+ dA[0 ] = exp (gam + z_e_a * e_a[x])
1099+ log (m[0 ]) = (1 - rho) * log (mst) + rho * log (m[- 1 ]) + z_e_m * e_m[x]
1100+ - P[0 ] / (c[1 ] * P[1 ] * m[0 ]) + bet * P[1 ] * (alp * exp ( - alp * (gam + log (e[1 ]))) * k[0 ] ^ (alp - 1 ) * n[1 ] ^ (1 - alp) + (1 - del) * exp ( - (gam + log (e[1 ])))) / (c[2 ] * P[2 ] * m[1 ])= 0
1101+ W[0 ] = l[0 ] / n[0 ]
1102+ - (psi / (1 - psi)) * (c[0 ] * P[0 ] / (1 - n[0 ])) + l[0 ] / n[0 ] = 0
1103+ R[0 ] = P[0 ] * (1 - alp) * exp ( - alp * (gam + z_e_a * e_a[x])) * k[- 1 ] ^ alp * n[0 ] ^ ( - alp) / W[0 ]
1104+ 1 / (c[0 ] * P[0 ]) - bet * P[0 ] * (1 - alp) * exp ( - alp * (gam + z_e_a * e_a[x])) * k[- 1 ] ^ alp * n[0 ] ^ (1 - alp) / (m[0 ] * l[0 ] * c[1 ] * P[1 ]) = 0
1105+ c[0 ] + k[0 ] = exp ( - alp * (gam + z_e_a * e_a[x])) * k[- 1 ] ^ alp * n[0 ] ^ (1 - alp) + (1 - del) * exp ( - (gam + z_e_a * e_a[x])) * k[- 1 ]
1106+ P[0 ] * c[0 ] = m[0 ]
1107+ m[0 ] - 1 + d[0 ] = l[0 ]
1108+ e[0 ] = exp (z_e_a * e_a[x])
1109+ y[0 ] = k[- 1 ] ^ alp * n[0 ] ^ (1 - alp) * exp ( - alp * (gam + z_e_a * e_a[x]))
1110+ gy_obs[0 ] = dA[0 ] * y[0 ] / y[- 1 ]
1111+ gp_obs[0 ] = (P[0 ] / P[- 1 ]) * m[- 1 ] / dA[0 ]
1112+ log_gy_obs[0 ] = log (gy_obs[0 ])
1113+ log_gp_obs[0 ] = log (gp_obs[0 ])
1114+ end
1115+
1116+ @parameters FS2000 begin
1117+ alp = 0.356
1118+ bet = 0.993
1119+ gam = 0.0085
1120+ mst = 1.0002
1121+ rho = 0.129
1122+ psi = 0.65
1123+ del = 0.01
1124+ z_e_a = 0.035449
1125+ z_e_m = 0.008862
1126+ end
1127+
1128+ plot_fevd (FS2000,
1129+ variables = :all_excluding_obc ,
1130+ save_plots = true , save_plots_format = :png , save_plots_path = " ./docs/src/assets" , save_plots_name = :aux )
1131+
1132+
1133+ plot_fevd (Smets_Wouters_2007_linear,
1134+ parameters = :constebeta => 1 ,
1135+ save_plots = true , save_plots_format = :png , save_plots_path = " ./docs/src/assets" , save_plots_name = :param_change )
1136+
1137+
1138+ plot_fevd (Smets_Wouters_2007_linear,
1139+ parameters = (:constebeta => 1.5 , :crpi => 1.75 ),
1140+ save_plots = true , save_plots_format = :png , save_plots_path = " ./docs/src/assets" , save_plots_name = :param_change_2 )
1141+
1142+
1143+ ec_color_palette =
1144+ [
1145+ " #FFD724" , # "Sunflower Yellow"
1146+ " #353B73" , # "Navy Blue"
1147+ " #2F9AFB" , # "Sky Blue"
1148+ " #B8AAA2" , # "Taupe Grey"
1149+ " #E75118" , # "Vermilion"
1150+ " #6DC7A9" , # "Mint Green"
1151+ " #F09874" , # "Coral"
1152+ " #907800" # "Olive"
1153+ ]
1154+
1155+
1156+ plot_fevd (Smets_Wouters_2007_linear,
1157+ plot_attributes = Dict (:palette => ec_color_palette),
1158+ save_plots = true , save_plots_format = :png , save_plots_path = " ./docs/src/assets" , save_plots_name = :color_palette )
1159+
1160+
1161+
1162+ plot_fevd (Smets_Wouters_2007_linear,
1163+ plot_attributes = Dict (:fontfamily => " computer modern" ),
1164+ save_plots = true , save_plots_format = :png , save_plots_path = " ./docs/src/assets" , save_plots_name = :font_family )
1165+
1166+
1167+ plot_fevd (Smets_Wouters_2007_linear,
1168+ plot_attributes = Dict (:fillalpha => .5 ),
1169+ save_plots = true , save_plots_format = :png , save_plots_path = " ./docs/src/assets" , save_plots_name = :fill_alpha )
1170+
1171+
1172+
1173+ plot_fevd (Smets_Wouters_2007_linear,
1174+ variables = [:inve , :c , :y , :pinf , :w , :lab ],
1175+ plots_per_page = 4 ,
1176+ save_plots = true , save_plots_format = :png , save_plots_path = " ./docs/src/assets" , save_plots_name = :four_per_page )
1177+
1178+
1179+
1180+ plot_fevd (Smets_Wouters_2007_linear,
1181+ rename_dictionary = Dict (:y => " Output" , :pinfobs => " Inflation" , :robs => " Interest Rate" , :inve => " Investment" , :c => " Consumption" , :w => " Wages" , :lab => " Labor" ),
1182+ save_plots = true , save_plots_format = :png , save_plots_path = " ./docs/src/assets" , save_plots_name = :rename_dict_fevd )
1183+
1184+ @model Backus_Kehoe_Kydland_1992 begin
1185+ for co in [H, F]
1186+ Y{co}[0 ] = ((LAMBDA{co}[0 ] * K{co}[- 4 ]^ theta{co} * N{co}[0 ]^ (1 - theta{co}))^ (- nu{co}) + sigma{co} * Z{co}[- 1 ]^ (- nu{co}))^ (- 1 / nu{co})
1187+ K{co}[0 ] = (1 - delta{co})* K{co}[- 1 ] + S{co}[0 ]
1188+ X{co}[0 ] = for lag in (- 4 + 1 ): 0 phi{co} * S{co}[lag] end
1189+ A{co}[0 ] = (1 - eta{co}) * A{co}[- 1 ] + N{co}[0 ]
1190+ L{co}[0 ] = 1 - alpha{co} * N{co}[0 ] - (1 - alpha{co})* eta{co} * A{co}[- 1 ]
1191+ U{co}[0 ] = (C{co}[0 ]^ mu{co}* L{co}[0 ]^ (1 - mu{co}))^ gamma{co}
1192+ psi{co} * mu{co} / C{co}[0 ]* U{co}[0 ] = LGM[0 ]
1193+ psi{co} * (1 - mu{co}) / L{co}[0 ] * U{co}[0 ] * (- alpha{co}) = - LGM[0 ] * (1 - theta{co}) / N{co}[0 ] * (LAMBDA{co}[0 ] * K{co}[- 4 ]^ theta{co}* N{co}[0 ]^ (1 - theta{co}))^ (- nu{co})* Y{co}[0 ]^ (1 + nu{co})
1194+
1195+ for lag in 0 : (4 - 1 )
1196+ beta{co}^ lag * LGM[lag]* phi{co}
1197+ end +
1198+ for lag in 1 : 4
1199+ - beta{co}^ lag * LGM[lag] * phi{co} * (1 - delta{co})
1200+ end = beta{co}^ 4 * LGM[+ 4 ] * theta{co} / K{co}[0 ] * (LAMBDA{co}[+ 4 ] * K{co}[0 ]^ theta{co} * N{co}[+ 4 ]^ (1 - theta{co})) ^ (- nu{co})* Y{co}[+ 4 ]^ (1 + nu{co})
1201+
1202+ LGM[0 ] = beta{co} * LGM[+ 1 ] * (1 + sigma{co} * Z{co}[0 ]^ (- nu{co}- 1 )* Y{co}[+ 1 ]^ (1 + nu{co}))
1203+ NX{co}[0 ] = (Y{co}[0 ] - (C{co}[0 ] + X{co}[0 ] + Z{co}[0 ] - Z{co}[- 1 ]))/ Y{co}[0 ]
1204+ end
1205+
1206+ (LAMBDA{H}[0 ]- 1 ) = rho{H}{H}* (LAMBDA{H}[- 1 ]- 1 ) + rho{H}{F}* (LAMBDA{F}[- 1 ]- 1 ) + Z_E{H} * E{H}[x]
1207+ (LAMBDA{F}[0 ]- 1 ) = rho{F}{F}* (LAMBDA{F}[- 1 ]- 1 ) + rho{F}{H}* (LAMBDA{H}[- 1 ]- 1 ) + Z_E{F} * E{F}[x]
1208+
1209+ for co in [H,F] C{co}[0 ] + X{co}[0 ] + Z{co}[0 ] - Z{co}[- 1 ] end = for co in [H,F] Y{co}[0 ] end
1210+ end
1211+
1212+ @parameters Backus_Kehoe_Kydland_1992 begin
1213+ K_ss = 11
1214+ K[ss] = K_ss | beta
1215+
1216+ mu = 0.34
1217+ gamma = - 1.0
1218+ alpha = 1
1219+ eta = 0.5
1220+ theta = 0.36
1221+ nu = 3
1222+ sigma = 0.01
1223+ delta = 0.025
1224+ phi = 1 / 4
1225+ psi = 0.5
1226+
1227+ Z_E = 0.00852
1228+
1229+ rho{H}{H} = 0.906
1230+ rho{F}{F} = rho{H}{H}
1231+ rho{H}{F} = 0.088
1232+ rho{F}{H} = rho{H}{F}
1233+ end
1234+
1235+ # Backus model example showing String to String mapping
1236+ plot_fevd (Backus_Kehoe_Kydland_1992,
1237+ rename_dictionary = Dict (" K{H}" => " Capital (Home)" ,
1238+ " K{F}" => " Capital (Foreign)" ,
1239+ " Y{H}" => " Output (Home)" ,
1240+ " Y{F}" => " Output (Foreign)" ),
1241+ save_plots = true , save_plots_format = :png , save_plots_path = " ./docs/src/assets" , save_plots_name = :rename_dict_string )
0 commit comments