A Rough Guide to Getting Inequality in OLGs

I’ve implemented a rough version of Chen (2010) baseline model. I was doing divide-and-conquer for two endogenous states and figured this might be a nice test to see how the new codes works in practice.

Codes are a bit rough, but 90% there.

There were three tricks to solving the model, first is relevant to VFI Toolkit, other two are general.
i) If you look closely at model, the distinction between “renter” and “owner” is just that a renter is someone choosing hprime=0 (zero next period housing) and an owner is someone choosing hprime>0. This can be easily handled by VFI Toolkit with an if-else statement inside the ReturnFn. Hence the state-space of the model is just (a,h,z,j)
ii) Renters choose how much to spend on consumption, c, and how much on housing services, d. It is possible to define cspend=c+pd. Then budget constraint can be used to calculate cspend, and the split of cspend into c and d can be solved analytically. See pdf in the github repo, as that does the derivation, the formula is then used in the ReturnFn.
iii) Paper describes the utility function as a combining c and hprime: u(c,x)=\frac{[(\theta c^\upsilon + (1-\theta) x^\upsilon)^{1/\upsilon}]^{1-\sigma}}{1-\sigma}, where x is the housing services (x=h' for owners and x=d for renters). But then calibrates \upsilon=0. \upsilon=0 means the formula in the paper (the inner part) will just be incorrect, and it should be simplified to a Cobb-Douglas. So the actual utility function becomes u(c,x)=\frac{[( c^\theta x^{1-\theta}]^{1-\sigma}}{1-\sigma}

Some further comments:

  • I renamed two things: eta I rename z (the AR(1) process on earnings), and epsilonj I rename kappaj (the deterministic process on earnings).
  • The earnings seems a bit weird. The standard deviation of the initial earnings seems to be so large that everyone starts near edges of grid on z and then earnings dispersion decreases with age. This might be that I just misunderstand how exactly Chen2010 intends for initial earnings to be done.
  • Model has deterministic productivity growth g, this just means a simple renormalization of the model before solving. But I can’t be bothered so I just solve it as though g=0. (Intro to Life-Cycle Models explains what to do in model 22; and Intro to OLG Models in model 8.) [If anyone does this, I am happy to update repo based on what your fix]
  • Paper Table 2 reports Gini of Financial Wealth. But I interpret financial wealth as asset a, and this can take negative values so the Gini is not well defined. Maybe paper just does Gini for positive a?
  • Codes require a pretty solid GPU. I can run it on my desktop with GPU with 8gb GDDR (gpu memory). But really it should be run with larger grids.
  • It is using divide-and-conquer “DC2B”, so it only does divide-and-conquer in the first endogenous state but does all the points in the second endogenous state. This will give the correct answer as long as the first endogenous state is monotone (conditional on the other endogenous state, and on any decision and exogenous state variables).

PS. Trick (ii) I have seen before, so I knew the trick and just had to work through the algebra to derive the formula. But I only realised (iii) after the results looked stupid. I don’t think paper mentions either of them (that I saw).
PPS. The two endo state divide-and-conquer was only implemented yesterday (which is why I wanted to try it out on this model today). Should get some public documentation later this month.

@jake88

2 Likes