From bbfa62a3d2ad583ebeeabee2280b671a5deb73d6 Mon Sep 17 00:00:00 2001
From: Michel Juillard <michel.juillard@mjui.fr>
Date: Sat, 14 May 2016 10:48:39 +0200
Subject: [PATCH] extended_path: adding calibrated shocks

---
 matlab/ep/extended_path.m        | 3 ++-
 matlab/ep/extended_path_shocks.m | 8 +++++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/matlab/ep/extended_path.m b/matlab/ep/extended_path.m
index f8e1f852cf..5205db5943 100644
--- a/matlab/ep/extended_path.m
+++ b/matlab/ep/extended_path.m
@@ -37,7 +37,8 @@ function [ts, DynareResults] = extended_path(initialconditions, samplesize, exog
 [initialconditions, innovations, pfm, ep, verbosity, DynareOptions] = ...
     extended_path_initialization(initialconditions, samplesize, exogenousvariables, DynareOptions, DynareModel, DynareResults);
 
-[shocks, spfm_exo_simul, innovations, DynareResults] = extended_path_shocks(innovations, ep, exogenousvariables, samplesize, DynareResults);
+[shocks, spfm_exo_simul, innovations, DynareResults] = ...
+    extended_path_shocks(innovations, ep, exogenousvariables, samplesize, DynareModel, DynareResults);
 
 % Initialize the matrix for the paths of the endogenous variables.
 endogenous_variables_paths = NaN(DynareModel.endo_nbr,samplesize+1);
diff --git a/matlab/ep/extended_path_shocks.m b/matlab/ep/extended_path_shocks.m
index ab0b8a1842..878f93b0fe 100644
--- a/matlab/ep/extended_path_shocks.m
+++ b/matlab/ep/extended_path_shocks.m
@@ -1,4 +1,5 @@
-function [shocks, spfm_exo_simul, innovations, DynareResults] = extended_path_shocks(innovations, ep, exogenousvariables, sample_size, DynareResults); 
+function [shocks, spfm_exo_simul, innovations, DynareResults] = ...
+    extended_path_shocks(innovations, ep, exogenousvariables, sample_size, DynareModel, DynareResults); 
 
 % Copyright (C) 2016 Dynare Team
 %
@@ -23,6 +24,11 @@ if isempty(exogenousvariables)
       case 'gaussian'
         shocks = transpose(transpose(innovations.covariance_matrix_upper_cholesky)*randn(innovations.effective_number_of_shocks,sample_size));
         shocks(:,innovations.positive_var_indx) = shocks;
+      case 'calibrated'
+        options.periods = sample_size;
+        DynareResults = make_ex_(DynareModel,options,DynareResults);
+        shocks = DynareResults.exo_simul(2:end,:);
+        innovations.positive_var_indx = find(sum(abs(shocks)>0));
       otherwise
         error(['extended_path:: ' ep.innovation_distribution ' distribution for the structural innovations is not (yet) implemented!'])
     end
-- 
GitLab