Closed alanlujan91 closed 1 year ago
Do not merge.
@Mv77 I am trying to add the ability to use PortfolioConsumerType with this code. However, the results don't seem to be coming out great.
I just realized I forgot to add the graphs for the Portfolio run.
@Mv77 do you have any idea what could be going wrong?
changing the grid parameters seems to improve the sensitivity output, but makes the contour output much worse.
Looks like the objective function is returning NaN for some parameter convos. You have to figure out why.
The alternatives are: A) An error in the agent type is preventing the model from generating simulations under some parameter combinations. This would be pretty bad.
B) an error in the objective function is preventing it from transforming simulated data into moments and a loss for some parameter values. E.g., for some discount factors everyone is hand to mouth and this turns into a division by zero somehow. This would be easier to fix.
I'm unfortunately leaning toward A)
sim_w_history = agent.history["bNrm"]
under some simulations, the line above has nan bank balances.
Some aLvlPrev are nan... trying to figure out why...
In some instances... cNrm = nan.. are the solutions wrong under some parameters?
self.state_now["mNrm"][np.isnan(self.controls["cNrm"])] Out[5]: array([-1.58754814e+06, -5.45254711e+11, -9.76738291e+02, -6.22966535e+05, -1.44951519e+02])
cNrm is nan when mNrm is negative. But in this model mNrm should never be negative... unless aNrm is negative or return is negative?
Interesting.... This seems like a major bug because effective R in portfolio should never be negative
np.sum(ReffNow < 0) Out[6]: 5
I think I have found the problem, sometimes Share is less than 0
self.controls["Share"][self.controls["Share"] <0] Out[9]: array([-1.58137652e+01, -1.22690789e+03, -1.21129003e+00, -1.27012186e+01, -4.84300986e-01])
Yeah that's weird.
We should create an issue to look it up. Must be an easy fix
I just took a look at the code.
I think the issue is that we are identifying "constrained top" (s==1.0) and constrained bottom (s==0.0) agents. We are manually replacing the s==1's but I do not think we are doing it for s==0's.
Thank you! I'll review this.
I think because there is a share_limit > 0, I didn't think we needed to really fix constrained at bottom since none would go under that level, but this estimation is really pushing the boundaries of that assumption.
Ah i see. i didn't remember that
@llorracc same exercise but using PortfolioConsumerType There are some issues as you can see from the graphical results.