Apologies is this is an overly naive take. It is clear from other threads about GE that there are very well-understood solutions to very specific problems. But I think I discovered something while studying OLGModel14.
As writen, OLGModel14 has these GE parameters:
GEPriceParamNames={'r','pension','AccidentBeq','G','w','firmbeta','D','P0','Lhscale'};
r is a rate of return of the market, whereas D is the dividend paid to households. These are highly correlated variables, and when fsolve starts randomly perturbing these variables, half of the time the signals are canceling and confusing the solver.
Similarly, w and Lhscale are affecting household labor supply. And again, they have a correlated behavior on the effect of labor, producing confounding results half the time.
I have modified OLGModel14 so that r and Lhscale are exogenous, non-equilibrium variables. And now, when w moves, it sends a non-confusing signal to both household labor supply and firm labor demand which is neither contradicted nor counteracted by changes to Lhscale.
I have also introduced the D parameter to the firmās ReturnFn. Consider this original code:
% Firms financing constraint gives the new equity issuance
s=dividend+invest+capitaladjcost-(profit-tau_corp*T);
% Firms per-period objective
if s>=0 % enforce that 'no share repurchases allowed'
F=((1-tau_d)/(1-tau_cg))*dividend-s;
end
Now, it happens that tau_d and tau_cg are both 0.2 in the model, which means that ((1-tau_d)/(1-tau_cg)) equals 1.
If we expand s with the above algebraic simplification specific to our model, we see that that F can be simplified:
F=1*dividend-(dividend+invest+capitaladjcost-(profit-tau_corp*T))
And further:
F=-invest-capitaladjcost+(profit-tau_corp*T))
Which then raises the question: just what sort of decision variable is dividend from the Firmās perspective? Hopefully we are not paying the firmsā CEOs a high salary to finely tune that decision variable!!
On the other handā¦it makes a ton of sense that the firms pay a dividend thatās in line with what the market is expecting to be paid. And thatās D. So we can make (D-dividend)^2 a figure of demerit in our return function calculation. And in so doing it makes the firms and the households productively bargain for a fair rate, with the solver making suggestions for potential returns and the firms responding yeah/nah, depending on how it moves the equilibrium.
Finally, I looked for, but could not find, a similar way to do things with L_h and L_f. Yes, we do now have wages tying these together more deterministically. And yes, we do have a GE equation thatās part of the chorus of complaints when the equilibrium is not zero. But itās very slow going for the solver to iterate through all the many possible perturbations of prices to hit upon the correct answer.
I thought about trying to expose L_h as a GE price, but as I learned, the return functions have their own ideas about what the value of such is (itās the specific result of a specific calculation) and the GE prices float according to the whims of the solvers. Two different L_h variables not interacting with one another does not help to produce a convergent result.
All in all, the above changes provide a far more credible equilibrium and search than anything I have seen previously.
Finally, I note that the original grid sizes are pretty large, and to my eyes not very efficient. Iāve reshaped and resized the grids. Iād be happy to receive instruction as to whether or how these grids could be further improved. Iām also holding back on using grid interpolation due to a bug Iāve reported in GitHub.