Skip to content

Commit 6101012

Browse files
committed
add fevd to generate plots script
1 parent 92b380b commit 6101012

File tree

1 file changed

+267
-0
lines changed

1 file changed

+267
-0
lines changed

docs/generate_plots.jl

Lines changed: 267 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -972,3 +972,270 @@ plot_solution(Backus_Kehoe_Kydland_1992, "K{H}",
972972

973973
# ![Backus IRF - E{H} shock with rename dictionary](../assets/rename_dict_irf__Backus_Kehoe_Kydland_1992__E{H}__1.png)
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

Comments
 (0)