Question on endogenous labour


Author: Fridmund K. Shunsaku


I have went on to modify the Aiyagari model to include an endogenous labour choice,
following a utility function that is log© + eta log(leisure) , leisure = 1-L

Using the coleman operator, there seem to be a bound for eta, i.e. not all eta has a solution.
specifically any eta greater than 0.1 gives me the error:

ValueError: f(a) and f(b) must have different signs

is that suppose to be the case (that only some values of eta converges) or have I made a mistake?

The method, follows first searching a range 0 to max a’ and then for each a’,
search for the optimal labour (L) between a range 0 to 1.
(a scipy brentq searching for the optimal L nested in the main scipy brentq)

Generally speaking:
for each i in {0,…, zL+Ra}
find optimal L between [0,1]

If there is a bound on eta, is there a way (hint/web link/reference) to calculate it / proof that it exists?
Or have I made an error in the code and theoretically any value of eta should actually work?

I also noticed that changing the grid maximum also changes the maximum value of eta.
And have tried a different utility specification but they all have some kind of a limit on eta
log( ceta * leisure(1-eta) )


Hi Fridmund,

That’s actually a hard question that I don’t know the answer to. The state of my own knowledge is this set of results here:

Whether or not those results can be extended to endogenous labor is an important and interesting question that, to the best of my knowledge, has not yet been answered.

Regards, John.


A bit late,

but this paper may be relevant

it proves the existence of stationary eqm. under somewhat general assumptions on labour-leisure choice.


For the record, I find a solution with eta over .1, namely 1 -2. I do not use Coleman iteration, however, and opt for the Bellman equation as I felt it more intuitive to tweak scipy.optimize. There are issues at agents with low shocks and low assets. (I suspect, Marcet et. al. 2007 elude similar issues and make a lower bound of 2.5!). However, you can get around that by increasing the step size of the Jacobian everytime an error comes up (etol parameter is scipy.minimize). I had 1e-4 also my lower bound for assets and labour rather than zero — this seems to be critical. In any case, income fluctuation with endogenous labour requires a lot more study…

Also, in the log-log case, there is an analytical solution I think for labour in terms of c. so we only need to do one root finding?

One other consideration: you may have a corner solution. If the consumer does not like the uncertainty, they can just get rid of it but not working at all and only enjoying leisure + certain asset returns. I thought this would only happen for r = (1+b)^-1, but it seems to happen for r < (1+b)^-1.