Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Epstein-Zin example #141

Open
eloualiche opened this issue Jul 19, 2018 · 2 comments
Open

Epstein-Zin example #141

eloualiche opened this issue Jul 19, 2018 · 2 comments

Comments

@eloualiche
Copy link

eloualiche commented Jul 19, 2018

I am wondering if you could add an example where the utility function is non time separable, for example of the Epstein-Zin type.

It would make the package a lot more useful especially to the asset-pricing community which uses the preferences routinely within larger macroeconomic models.

I know that Jarda Borovicka has an example within his toolbox of how to implement it in dynare in the code attached to his paper: Examining Macroeconomic Models through the Lens of Asset Pricing.
The utility function is simply specified as:

exp((1-GAMMA)*ev) = exp( (1-GAMMA)*(v(+1)) );
exp(v) = ( (1-BETA)*exp((1-RHO)*c) + BETA*exp((1-RHO)*ev) )^(1/(1-RHO));
sdf_household = log(BETA) - RHO*(c-c(-1)) + (RHO-GAMMA)*(v - ev(-1));

where GAMMA is risk aversion, RHO is the inverse of the elasticity of intertemporal substitution and BETA is the rate of time preference.
v is the value function, ev is the certainty equivalent of the value next period, and c is consumption (all in logs).

I am not quite sure how to specify the value function like such in dolo using felicity and value.
Maybe (but I am not quite sure of the risk adjustment depending on how expectations are taken on the expressions):

felicity:
    - F =  cons^(1-GAMMA)/(1-GAMMA)
value:
    - EV_GAMMA = V^(1-GAMMA)               # this is the risk adjustment
    - EV = EV_GAMMA(1)^(1/(1-GAMMA))
    - V = ( (1-BETA) * cons^(1-RHO) + BETA * EV^(1-RHO) )^(1/(1-RHO))

I think eventually an example that reproduces the Ai, Croce & Li simulation would be ideal but simply specifying EZ preferences would be a good start.


See the original dynare mod file:
aicroceli_final.mod.txt

@albop
Copy link
Member

albop commented Jul 23, 2018

Hi @eloualiche, thanks for your interest.
If you use time-iteration you can use epstein-zin preferences by:

  • adding two control variables V and EV representing value and expected value respectively
  • adding recursive formulas as arbitrage equations. In one of my paper I have:
- -( ew )**(1-gamma) + (  w(1) )**(1-gamma)
- beta*(ew )**(1-psi) - w**(1-psi) + (1-beta)*(c)**(1-psi)

and adapt the stochastic discount factor accordingly. In my case it is: (beta*( w(1)/ew )**(psi-gamma) * (c(1)/c)**(-psi)
This should be enough for basic asset pricing. I can provide a full example if needed.

So far, Dolo.jl cannot solve a model that has non-separable utility using value iteration. There is however some plans to do so. As you have noted there are two different function types:

  • felicity: with a discount parameter, represents a separable utility and can be used for vfi
  • value: it is a more general updating formula v=f(m,s,x,v,M,S,X,V) which potentially include epstein-zin. However the solution algorithm is not coded up yet. there was something on the python side, but I"m not sure it has been used recently...
    I'll keep this issue open, as a reminder to implement it in Julia.

@eloualiche
Copy link
Author

Thanks a lot @albop. This is super useful.

This wasn't immediately clear to me from the doc. This explains a few of the error message I received while trying to implement vfi bypassing the separable utility condition.

I am not sure what you mean by "basic asset pricing"? It does look defining the auxiliary variables EV and V through the (no-)arbitrage equation is clever but then does that mean we are restricted to local perturbation methods to solve the model or would time iteration actually work?

Is the python implementation ahead of julia so far or the two projects are moving in tandem?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants