Hi Robert,
I am trying to model a small probability that retirement income drops drastically. A household may consider such disaster due:
i.) Death of a spouse: If one member of the couple passes away, the household’s average income drops significantly and does not recover until the death of the surviving spouse.
ii.) Health expenses due to illness or entry into a retirement home: Expenses due to illness may be temporary or permanent, while expenses related to entering a retirement home are likely to be permanent.
I aim to introduce uncertain retirement income into the portfolio model, which already works well and accounts for persistent (z1) and transitory (z2) shocks to labor income, as well as the possibility of a stock return disaster. Now, I want to consider two scenarios separately:
a.) A tail event resulting in a temporary drop in retirement income (e.g., temporary illness expenses).
b.) A tail event resulting in a permanent drop in retirement income (e.g., permanent illness expenses or/and death of a spouse or/and entry into a retirement home).
I believe I conceptually understand how to model the disastrous event in scenario a). Unfortunately, I am struggling to set up the more interesting and important concept in scenario b).
Finally, my issues are:
1.) I receive an error message when I start modeling scenario a), and I am unsure why. Specifically, I am introducing a temporary shock using e and connecting it to retirement income in the return function. After that, I planned to introduce a small probability of disaster with
p and a normal process with 1−p (similar to the stock disaster case modeled on the stochastic error u).
Setup:
n_e=3;
Params.sigma_epsilon_e=0.1
[e_grid,pi_e]=discretizeAR1_FarmerToda(0,0,Params.sigma_epsilon_e,n_e);
e_grid=exp(e_grid);
pi_e=pi_e(1,:)';
mean_e=pi_e'*e_grid;
e_grid=e_grid./mean_e;
vfoptions.n_e=n_e;
vfoptions.e_grid=e_grid;
vfoptions.pi_e=pi_e;
simoptions.n_e=vfoptions.n_e;
simoptions.e_grid=vfoptions.e_grid;
simoptions.pi_e=vfoptions.pi_e;
% + I add e in return function …
Error:
Unrecognized function or variable 'e_gridvals_J'.
Error in ValueFnIter_Case1_FHorz_RiskyAsset (line 69)
[VKron, PolicyKron]=ValueFnIter_Case1_FHorz_RiskyAsset_noa1_e_raw(n_d,n_a2,n_z,vfoptions.n_e,n_u, N_j, d_grid, a2_grid, z_gridvals_J, e_gridvals_J, u_grid, pi_z_J, pi_e_J, pi_u, ReturnFn, aprimeFn, Parameters, DiscountFactorParamNames, ReturnFnParamNames, aprimeFnParamNames, vfoptions);
Error in ValueFnIter_Case1_FHorz (line 596)
[V,Policy]=ValueFnIter_Case1_FHorz_RiskyAsset(n_d,n_a1,n_a2,n_z,vfoptions.n_u, N_j, d_grid, a1_grid, a2_grid, z_gridvals_J, vfoptions.u_grid, pi_z_J, vfoptions.pi_u, ReturnFn, vfoptions.aprimeFn, Parameters, DiscountFactorParamNames, ReturnFnParamNames, vfoptions);
Error in LifeCycleModel31_11A_Stock_disaster_ret (line 196)
[V, Policy]=ValueFnIter_Case1_FHorz(n_d,n_a,n_z,N_j,d_grid, a_grid, z_grid, pi_z, ReturnFn, Params, DiscountFactorParamNames, [], vfoptions);
2.) Any example, advice or instructions on how to set up the code to model scenario b) would be very helpful to me.
Thank you so much!