Portfolio Choice Models 31–35 and Stock Market Participation Rate

Dear Robert,

Currently, portfolio choice models 31–35 focus on stock demand measured by stock share. Do I understand correctly that these models examine unconditional stock share (the average stock share of both stock market participants and nonparticipants) rather than conditional stock share (the average stock share of only stock market participants) in life-cycle simulations?

In addition to stock share, another important measure of stock demand is the stock market participation rate. I need to introduce this new state variable, so I am exploring how to incorporate the stock market participation rate either as a replacement for stock share or as an additional decision variable alongside it. Nice papers with these features are, for example, Fagereng, Gottlieb, and Guiso (2017) [https://onlinelibrary.wiley.com/doi/abs/10.1111/jofi.12484] and Vestman (2019) [Limited Stock Market Participation Among Renters and Homeowners | The Review of Financial Studies | Oxford Academic].

The idea is that all households are initially born as stock market nonparticipants. Over the life cycle, some households become stock market participants. Participation in the stock market is associated with participation costs that households must pay to enter. Finally, the stock market participation rate would likely exhibit an inverse U-shape over the life cycle.

Would it be possible to incorporate the stock market participation rate into portfolio choice models 31–35 without requiring extensive additional programming? I believe it would be valuable for these models to have the ability to examine both the stock market participation rate and stock share over the life cycle.

1 Like

You can certainly measure both in the life-cycle models.

Do I understand correctly that these models examine unconditional stock share (the average stock share of both stock market participants and nonparticipants) rather than conditional stock share (the average stock share of only stock market participants) in life-cycle simulations?

If you want the average division of assets (safe vs risky) among people with assets then just use
FnsToEvaluate.riskyshare=@(savings,riskyshare,a,z) riskyshare;
Together with
simoptions.conditionalrestrictions.invests=@(savings,riskyshare,a,z) (savings>0);

If you then use AllStats or LifeCycleProfiles commands, there will be, e.g.,
AllStats.invests.riskyshare.Mean
will be the mean of ‘riskyshare’ conditional on the population for whom ‘invests’ evaluates to one.
[If I understand correctly, this is what you are after]

For stock market participation, you can measure it as
FnsToEvaluate.stockmarketparticpation=@(savings,riskyshare,a,z) (savings>0)*(riskyshare>0);

Obviously, getting the model to give sensible outcomes for stock market participation is a different question. E.g., you might add that there is a fixed-cost-per-period of investing in the stock market that you deal with in the ReturnFn (if (riskyshare>0) then subtract the fixed cost from income). How you should go about doing this exactly is not something I know the literature well enough to answer. If participation is a cost you pay once to enter stock market it would need to be handled in a different way.

2 Likes

Fagereng, Gottlieb, and Guiso (2017)
“To facilitate comparison with the literature, we use the workhorse portfolio choice model of Cocco, Gomes, and Maenhout (2005), but add two features. First, we allow for a fixed per-period stock market participation cost. This provides a motive for exiting the stock market as people age in addition to inducing limited participation in the stock market at young ages. Second, we allow for a probability of a negative tail (i.e., disaster) event when investing in stocks.”

Okay, so they just do fixed per-period cost. So toolkit can do that easy, just use the ReturnFn to handle the fixed per-period cost. You could also do the ‘disaster’ easily, it is just putting a point into u_grid that is a very bad/negative value, and giving it a probability in pi_u.

By comparison: Vestman (2019) does the participation as a one-off cost \kappa the first time you participate in the stock market, which requires keeping track of ‘participation status’ (denoted I_t, see eqns 7&8 of paper). This is more computationally costly because of need to keep track of I_t.

2 Likes

Thank you very much. I will carefully review your answers and work on implementing your suggestions into the code. I will let you know if I get stuck. :slight_smile:

1 Like

Yes, I was thinking about that (just wanted to mention the conditional stock share case), although I am researching stock demand, measured by stock market participation and unconditional stock share.

2 Likes

I introduced stock market participation as you suggested, and it seems to work well. (I checked the life-cycle path and conducted some simple sensitivity analyses based on different values of selected parameters.)

I introduced a per-period fixed cost into the return function in a very basic way, and it seems to work fine. (I set the fixed cost to 2% of yearly income and multiplied income by 0.98 if households have a stock share > 0. I analysed the sensitivity of stock demand, measured by stock market participation and stock share, to different values of the fixed cost. The results seem nice to me since the model is quite responsive.)

I am trying to figure out how to add a point to u_grid that represents a very bad outcome and assign this point a nonzero probability. Unfortunately, I am not able to model a tail event. Could you please provide me an example of how to do this?

Note: I observed that assets and ages might need to be replaced in some graphs of models 31-35. The parameter sigma may be too low and might need to be multiplied by 10.

1 Like

For adding ‘disaster’ to u.

Currently codes (e.g. life-cycle model 31) creates:

[u_grid, pi_u]=discretizeAR1_FarmerToda(Params.rp,Params.rho_u,Params.sigma_u,n_u);
pi_u=pi_u(1,:)'; % This is iid

Which creates u_grid of size [n_u,1] and pi_u of size [n_u,1], which are the grid points and probabilities, respectively.

Say we want n_u points in u, and now we want the 1st point to be disaster, and the other n_u-1 points to be iid normal.
First, we create the iid normal as usual, but now for just n_u-1 points, so

[u_grid, pi_u]=discretizeAR1_FarmerToda(Params.rp,Params.rho_u,Params.sigma_u,n_u-1);
pi_u=pi_u(1,:)'; % This is iid

(only difference is the last input is now n_u-1)
And then say we want a disaster shock which has a value of -3 and a probability of 1%. Then add it to u_grid as
u_grid=[-3; u_grid];
and put the probability in pi_u as
pi_u=[0.01; (1-0.01)*pi_u];
(note, the iid had sum-of-probabilities of 1, hence the (1-0.01)* as if probability of disaster is 1% then we want prob of the normal dist to be 99%)
It is important that the value and probability of the disaster are in the same element (here the first element of both u_grid and pi_u. Mathematically/computationally could be any, although sensible choices are just the first or the last)

Obviously you need to think about what an appropriate value and probability for the disaster are, I just made up two numbers.

Note: I observed that assets and ages might need to be replaced in some graphs of models 31-35. The parameter sigma may be too low and might need to be multiplied by 10.

I will go clean this up in mid Dec. Thanks for letting me know.

2 Likes

Robert, thank you so much for your detailed answer. I will go through it carefully tomorrow. I’m currently on the way and won’t be able to do any modeling today. :frowning:

1 Like

It works great, thank you! Do I understand correctly that the hypothetical -3 and 1% mean there is a 1% probability that households will experience a stock market disaster in their lifetime, in the sense that excess returns could drop by 300%? (Of course, I will adjust -3 and 1% to values that correspond to the data I am working with.)

2 Likes

Yes, 1% is the probability of the shock. It is the probability each model period (so not in a lifetime). In Life-cycle model 31 it is set up so that the model period is one year, so it would be a 1% probability each year of this disaster shock occurring.

-3 is the value of the shock. Looking at “aprimeFn” in life-cycle model 31 we see
aprime=(1+r)*(1-riskyshare)*savings+(1+r+u)*riskyshare*savings;
so the -3 represents, as you say, a -300% return to the risky asset.

As you say: “Of course, I will adjust -3 and 1% to values that correspond to the data I am working with.” :smiley:

1 Like