Did anybody try dynare++ codes of M.M.Croce "long-run...."

I simulated the dynare++ code of M.M.Croce “long-run productivity risk: a new hope for production-based asset pricing?”(the code is listed on his website). However, I fail to get the proper equity premium in the simulated results. As I figured, the variable “exr” is the equity premium in his model. After simulation, I got 0.0021 as the mean of “exr”. But it reported 5.25 in the table 3 when psi=2 in his paper. So, I do not know whether my understanding about this paper is correct or there is some other procedures that need to be calculated to get the right number. If anybody happened to replicate this paper, please help me! Pretty appreciated!

I attach the paper and code here. If someone happen to see, please help me!
long run production risk.pdf (718 KB)
Approx_10.mod (4.41 KB)

1 Like


I had just a quick look at the paper. I suppose that Croce does some manipulations with the number (0.0021) obtained from the simulation. For instance in table 3 he reports the expected value of a levered excess return according to equation 9 in the paper. Furthermore the model is calibrated at a monthly frequency and in panel B of table 3 he reports all statistics in annual terms. Equation 9 and the annualization would then imply:


But I´m not sure if this is what he does, since this number (5.04) is 21 basis points below the number reported in the paper. Did you check if you´re able to replicate the moments for other variables in table 3? Keep me updated about your progress in solving this issue.



I sent a letter and got the kind reply from M.M.Croce. I attached the letter below.

Let me start from my dynare++ code :

exr = r-rf(-1);
is the UNLEVERED monthly log-excess return.

The levered monthly log-excess return is:
Lev_ExR = LEVERAGEsim_res(dyn_i_exr,:)’ + normrnd(0,1,per,1)((.065)/sqrt(12));
(i) “sim_res” is the output of the matlab simulation routine offered by the dynare++ guys;
(ii) “per” is an index across different sample repetitions;
(iii) the calibration of the dividends-shock is discussed when I introduce equation (9)—see my SSRN WP.

In my table, I give you the statistics for levered excess returns time-aggregated (compounded) to an annual frequency. Both the time-aggregation and the transformation from logs to levels are in done in matlab with a separate simulation code.

From the above letter, I basically figured out the gap between the results of his dynare++ code and the table 3.

Thank’s for this information. I did now run his dynare++ code (3rd oder approximation) and tried to replicate a few statistics in his paper (see attached m-file). My results seem plausible (except for the negative risk free rate(3rd column in output matrix)), but are not the same as in the paper. I did use dynare_simul to obtain what he calls sim_res and after that I did compute the statistics. Did you manage to replicate his numbers, in particular a positive risk-free rate? If yes, I would be glad if you could provide your code.
apsimul.m (1.62 KB)

Given all codes are correctly written, the only thing I can figure out, I am not sure, is that the third order approximation is equivalent to the time-variant volatility. As mentioned in Croce’s paper, he did his job in time-constant volatility. The time-variant volatility may relate to the negative risk free rate in your third order approximation. However, NOW, I can not figure out how the time-variant volatility influence the risk free rate. And, I am not sure whether my explanation really makes sense. That’s the only thing I can figure out now.

Hi everybody, I’m trying to replicate the same paper. Running the dynare++ codes I find “dyn_mean”, with results completely different from the Croce’s results. Maybe is just an annualization problem, but I don’t know how to obtain table 3.
If anybody happened to replicate this paper, please help me.
Thank you!