Added example of perfect forsesight model (julia).

Note that PyPlot package must be installed.
time-shift
Stéphane Adjemian (Hermes) 2016-06-14 11:14:25 +02:00
parent 1e4d934fc7
commit e789cc7d91
1 changed files with 83 additions and 0 deletions

View File

@ -0,0 +1,83 @@
# Modification of the path (for packages). Should be done in ~/.juliarc.jl with a fixed path instead.
if isempty(findin([abspath("../../../julia")], LOAD_PATH))
unshift!(LOAD_PATH, abspath("../../../julia"))
end
# Load Dynare package
importall Dynare
using PyPlot
# Compile the rbc.mod file -> produce a module with the model definition.
@dynare "rbc1.mod"
importall SteadyState
importall PerfectForesightModelSolver
# First call to the steady state routine (analytical)
@time SteadyState.steady!(model_, oo_)
println(oo_.steady_state)
# Initialize paths for the endogenous variables
endogenousvariables = repmat(oo_.steady_state, 1, options_.pfmsolver.periods+2)
# Destroy part of the initial stock of physical capital.
endogenousvariables[1, 1] = .8*endogenousvariables[1, 1]
# Set path for the innovations (no shocks).
exogenousvariables = repmat(oo_.exo_steady_state', options_.pfmsolver.periods+2, 1)
# Simulate the transition to the steady state
@time simulate_perfect_foresight_model!(endogenousvariables, exogenousvariables, oo_.steady_state, model_, options_)
n = 200
dates = collect(0:n-1)
plt[:figure](1)
plot(dates, vec(endogenousvariables[1,1:n]), color="black", linewidth=2.0, linestyle="-")
# Initialize paths for the endogenous variables
endogenousvariables = repmat(oo_.steady_state, 1, options_.pfmsolver.periods+2)
# Destroy part of the initial stock of physical capital...
endogenousvariables[1, 1] = .8*endogenousvariables[1, 1]
# ... and assume that TFP is initially above its steady state level.
endogenousvariables[6, 1] = .5
# Set path for the innovations (no shocks).
exogenousvariables = repmat(oo_.exo_steady_state', options_.pfmsolver.periods+2, 1)
# Simulate the transition to the steady state (we should have an hump shaped transition)
@time simulate_perfect_foresight_model!(endogenousvariables, exogenousvariables, oo_.steady_state, model_, options_)
n = 200
dates = collect(0:n-1)
plot(dates, vec(endogenousvariables[1,1:n]), color="red", linewidth=2.0, linestyle="-")
# Initialize paths for the endogenous variables
endogenousvariables = repmat(oo_.steady_state, 1, options_.pfmsolver.periods+2)
# Set path for the innovations (no shocks).
exogenousvariables = repmat(oo_.exo_steady_state', options_.pfmsolver.periods+2, 1)
# Assume positive expected TFP shock in period 10
exogenousvariables[10+1, 1] = 2
# Simulate the paths for the endogenous variables, given the expected shock
@time simulate_perfect_foresight_model!(endogenousvariables, exogenousvariables, oo_.steady_state, model_, options_)
n = 200
dates = collect(0:n-1)
plt[:figure](2)
subplot(221)
title("Efficiency")
plot(dates, vec(endogenousvariables[5,1:n]), color="black", linewidth=2.0, linestyle="-")
subplot(223)
title("Output")
plot(dates, vec(endogenousvariables[2,1:n]), color="black", linewidth=2.0, linestyle="-")
subplot(222)
title("Consumption")
plot(dates, vec(endogenousvariables[4,1:n]), color="black", linewidth=2.0, linestyle="-")
subplot(224)
title("Labour")
plot(dates, vec(endogenousvariables[3,1:n]), color="black", linewidth=2.0, linestyle="-")
suptitle("Expected positive expected shock")