# Simulating Long-Run Risk Model

**URL:** <https://forum.dynare.org/t/simulating-long-run-risk-model/4987>\
**Category:** Replication Attempts\
**Created:** [14 September 2015 20:50 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987 "2015-09-14T20:50:56Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![joeytobin](https://forum.dynare.org/letter_avatar_proxy/v4/letter/j/ea5d25/32.png) [@joeytobin](https://forum.dynare.org/u/joeytobin)\
**Post date:** [14 September 2015 20:50 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/1 "2015-09-14T20:50:56Z")

</div>

I am trying to simulate the Bansal/Yaron (2004) long-run risk model, and have it set up with their equations and parameter values. Although the model is simulated at monthly frequency, according to them the simulations should imply an annualized first-order autocorrelation of consumption of around .49. Yet when I simulate it using the code below, consumption has a first-order autocorrelation of only .03. I’d be really grateful if anyone could perhaps suggest where I am going wrong. Thanks.

var x y vol rf ;  
varexo e\_x e\_u e\_v ;

parameters rho sigma\_x mu\_y mu\_v v sigma\_v ;

mu\_y = 0.0015;  
rho = 0.979;  
sigma\_x = .044;  
mu\_v = 0.00788;  
v = 0.987;  
sigma\_v = 0.0000023;  
phi=3;

model;  
x=rho_x(-1) + sigma\_x_vol(-1)_e\_x;  
y=mu\_y + x(-1) + vol(-1)e\_u;  
vol^2=mu\_v^2+v(vol(-1)^2-mu\_v^2)+sigma\_v_e\_v;

(1+y(+1))^(-1/2)_(1+rf)_.99=1;  
end;

initval;  
x=0;  
y=mu\_y;  
vol=mu\_v;  
end;

steady;

shocks;  
var e\_x;  
stderr 1;  
var e\_u;  
stderr 1;  
var e\_v;  
stderr 1;  
var e\_d;  
stderr 1;  
end;

stoch\_simul(periods=15000, drop=100, irf=30, order=3, pruning, nograph);

---

<div class="post-metadata">

**Author:** ![jpfeifer](https://forum.dynare.org/user_avatar/forum.dynare.org/jpfeifer/32/5044_2.png) [@jpfeifer](https://forum.dynare.org/u/jpfeifer)\
**Post date:** [17 September 2015 20:42 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/2 "2015-09-17T20:42:28Z")

</div>

It is hard to follow which case and which equations you actually implemented. Could you please add the information to the mod-file using comments. Also, what is the hard-coded 0.99?

---

<div class="post-metadata">

**Author:** ![dynevol](https://forum.dynare.org/letter_avatar_proxy/v4/letter/d/4bbf92/32.png) [@dynevol](https://forum.dynare.org/u/dynevol)\
**Post date:** [5 April 2023 08:17 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/3 "2023-04-05T08:17:21Z")

</div>

I have the same problem. Can you explain me why? I am attaching my mod file  
[growth.mod](https://forum.dynare.org/uploads/short-url/uyzRSovIIuxld6pdFsgETo3SR1C.mod) (976 Bytes)

---

<div class="post-metadata">

**Author:** ![jpfeifer](https://forum.dynare.org/user_avatar/forum.dynare.org/jpfeifer/32/5044_2.png) [@jpfeifer](https://forum.dynare.org/u/jpfeifer)\
**Post date:** [6 April 2023 14:38 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/4 "2023-04-06T14:38:07Z")

</div>

It should be along the lines of

```auto
// Variables and Parameters
var         
    g 
    g_d
    x
;

varexo ec
    ex
    ed
;

parameters mu mu_d phi rho phi_d phi_e siggma;

mu = 0.0015; // Long run mean of consumption growth
mu_d = 0.0015; // Long run mean of consumption growth
rho = 0.979; // Persistence of long run shock
siggma=0.0078;
phi = 3; // Aggregate dividend loading on LRR
phi_e=0.044;
phi_d=4.5;

// Model
model;
// Exogenuous processes
x = rho*x(-1)+phi_e*siggma*ex;
g = mu+x(-1)+siggma*ec;
g_d = mu_d+phi*x(-1)+phi_d*siggma*ed;

end;

// Initital Values
initval;
x = 0;
g = mu;
g_d = mu;
end;

shocks;
var ec=1;
var ex=1;
var ed=1;
end;

stoch_simul(order=1,periods=840,simul_replic=1000);
[simulated_series]=get_simul_replications(M_,options_);

%% get info about dimensions
replications=size(simulated_series,3);
n_years=floor(size(simulated_series,2)/12);

g_annual=NaN(replications,n_years);
%g_annual_geo=NaN(replications,n_years);
g_d_annual=NaN(replications,n_years);

for ii=1:n_years
    g_annual(:,ii)=squeeze(sum(simulated_series(strmatch('g',M_.endo_names,'exact'),(ii-1)*12+1:ii*12,:)));
    %g_annual_geo(:,ii)=squeeze(prod(1+simulated_series(strmatch('g',M_.endo_names,'exact'),(ii-1)*12+1:ii*12,:),2))-1;

    g_d_annual(:,ii)=squeeze(sum(simulated_series(strmatch('g_d',M_.endo_names,'exact'),(ii-1)*12+1:ii*12,:)));
end

g_std=std(g_annual,0,2);
%g_std_geo=std(g_annual_geo,0,2);
g_autocorr=NaN(replications,1+10);
for ii=1:replications
    g_autocorr(ii,:)=autocorr(g_annual(ii,:),10);
end
g_autocorr(:,1)=[]; %remove 0th autocorrelation
mean(g_autocorr)
quantile(g_autocorr,[0.95,0.05])

mean(g_std)
quantile(g_std,[0.95,0.05])
g_d_std=std(g_d_annual,0,2);
mean(g_d_std)
quantile(g_d_std,[0.95,0.05])
g_d_autocorr=NaN(replications,1+1);
for ii=1:replications
    g_d_autocorr(ii,:)=autocorr(g_d_annual(ii,:),1);
end
g_d_autocorr(:,1)=[]; %remove 0th autocorrelation
mean(g_d_autocorr)
quantile(g_d_autocorr,[0.95,0.05])

corr_g_g_d=diag(corr(g_annual',g_d_annual'));
mean(corr_g_g_d)
quantile(corr_g_g_d,[0.95,0.05])

```

but the overall results do not perfectly fit. You will need the file at [DSGE\_mod/Hansen\_1985 at master · JohannesPfeifer/DSGE\_mod · GitHub](https://github.com/JohannesPfeifer/DSGE_mod/tree/master/Hansen_1985)

---

<div class="post-metadata">

**Author:** ![dynevol](https://forum.dynare.org/letter_avatar_proxy/v4/letter/d/4bbf92/32.png) [@dynevol](https://forum.dynare.org/u/dynevol)\
**Post date:** [7 April 2023 16:58 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/8 "2023-04-07T16:58:30Z")

</div>

[fst.mod](https://forum.dynare.org/uploads/short-url/zp9lCPtDt8DfL3Hz48UmRxcUX6C.mod) (3.5 KB)

 ![Screenshot 2023-04-07 151404](https://forum.dynare.org/uploads/default/original/3X/7/3/739b38f24c6364c56d031015626e65e91c33fe13.png)

I have this.  
Note: numbers do not add up to 100 due to i) non-zero correlation of simulated shocks in small samples and ii) nonlinearity

Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side  
is 1000-by-1.

Error in fst.driver (line 317)  
g\_annual(:,ii)=squeeze(sum(simulated\_series(strmatch(‘g’,M\_.endo\_names,‘exact’),(ii-1)_12+1:ii_12,:)));

Error in dynare (line 278)  
evalin(‘base’,[fname ‘.driver’]);

---

<div class="post-metadata">

**Author:** ![jpfeifer](https://forum.dynare.org/user_avatar/forum.dynare.org/jpfeifer/32/5044_2.png) [@jpfeifer](https://forum.dynare.org/u/jpfeifer)\
**Post date:** [11 April 2023 12:25 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/9 "2023-04-11T12:25:49Z")

</div>

It must be

```auto
replications=size(simulated_series,3);

```

not

```auto
replications=size(simulated_series,4);

```

---

<div class="post-metadata">

**Author:** ![dynevol](https://forum.dynare.org/letter_avatar_proxy/v4/letter/d/4bbf92/32.png) [@dynevol](https://forum.dynare.org/u/dynevol)\
**Post date:** [11 April 2023 12:47 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/10 "2023-04-11T12:47:59Z")

</div>

The problem i have when i consider order 3 (since in BY2004 I have stochastic volatility) is the following ones  
[fst.mod](https://forum.dynare.org/uploads/short-url/iwzvEU9FUM1W9SK7BpzOaqvwOUW.mod) (3.6 KB)

dynare\_simul\_ must have at least 12 input parameters and exactly 2 output arguments.

Error using reshape  
Number of elements must not change. Use [] as one of the size inputs to automatically calculate the  
appropriate size for that dimension.

Error in get\_simul\_replications (line 41)  
sim\_array=reshape(simulations,[M\_.endo\_nbr options\_.periods options\_.simul\_replic]);

Error in fst.driver (line 312)  
[simulated\_series]=get\_simul\_replications(M\_,options\_);

Error in dynare (line 278)  
evalin(‘base’,[fname ‘.driver’]);

---

<div class="post-metadata">

**Author:** ![jpfeifer](https://forum.dynare.org/user_avatar/forum.dynare.org/jpfeifer/32/5044_2.png) [@jpfeifer](https://forum.dynare.org/u/jpfeifer)\
**Post date:** [11 April 2023 13:21 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/11 "2023-04-11T13:21:36Z")

</div>

Are you using Dynare 5.4?

---

<div class="post-metadata">

**Author:** ![dynevol](https://forum.dynare.org/letter_avatar_proxy/v4/letter/d/4bbf92/32.png) [@dynevol](https://forum.dynare.org/u/dynevol)\
**Post date:** [11 April 2023 14:53 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/12 "2023-04-11T14:53:58Z")

</div>

Yes

---

<div class="post-metadata">

**Author:** ![jpfeifer](https://forum.dynare.org/user_avatar/forum.dynare.org/jpfeifer/32/5044_2.png) [@jpfeifer](https://forum.dynare.org/u/jpfeifer)\
**Post date:** [11 April 2023 14:59 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/13 "2023-04-11T14:59:16Z")

</div>

But for some reason, there must be a version conflict given the message

> dynare\_simul\_ must have at least 12 input parameters and exactly 2 output arguments

---

<div class="post-metadata">

**Author:** ![dynevol](https://forum.dynare.org/letter_avatar_proxy/v4/letter/d/4bbf92/32.png) [@dynevol](https://forum.dynare.org/u/dynevol)\
**Post date:** [11 April 2023 15:45 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/14 "2023-04-11T15:45:05Z")

</div>

In the matlab folder there is no file called dynare\_simul\_. Is this a possibile reason?

---

<div class="post-metadata">

**Author:** ![jpfeifer](https://forum.dynare.org/user_avatar/forum.dynare.org/jpfeifer/32/5044_2.png) [@jpfeifer](https://forum.dynare.org/u/jpfeifer)\
**Post date:** [11 April 2023 18:31 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/15 "2023-04-11T18:31:31Z")

</div>

There should be a `mex`-file.

---

<div class="post-metadata">

**Author:** ![dynevol](https://forum.dynare.org/letter_avatar_proxy/v4/letter/d/4bbf92/32.png) [@dynevol](https://forum.dynare.org/u/dynevol)\
**Post date:** [11 April 2023 18:40 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/16 "2023-04-11T18:40:30Z")

</div>

I fix it. Thank you. The problem is that I cannot still match the simulated moments by a lot from the table above. Am i still doing something wrong? Are the equations wrong?  
[fst.mod](https://forum.dynare.org/uploads/short-url/qTrlHYmdCjxvuwVw4DZNIks32bD.mod) (3.9 KB)  
(in excret\_annual i have in the first year -6 which makes nosense)

---

<div class="post-metadata">

**Author:** ![jpfeifer](https://forum.dynare.org/user_avatar/forum.dynare.org/jpfeifer/32/5044_2.png) [@jpfeifer](https://forum.dynare.org/u/jpfeifer)\
**Post date:** [24 April 2023 20:08 UTC](https://forum.dynare.org/t/simulating-long-run-risk-model/4987/17 "2023-04-24T20:08:06Z")

</div>

That is hard to tell. Have other papers replicated the original numbers. It’s striking that already the numbers for the exogenous processes are quite off. Also note that Barrilas et al’s “Practicing Dynare” contained the Bansal/Yaron model, see [Practicing Dynare\_2019(updated version)](https://forum.dynare.org/t/practicing-dynare-2019-updated-version/13389)  
But I don’t know whether that one was correct either.
