I write this to combine all simulators in the same post. We consider various models for annual total returns (nominal/real) studied in previous blog posts. I carefully checked goodness-of-fit for each regression in each model, so one can trust that innovations are independent identically distributed. Unfortunately, we cannot always guarantee innovations are Gaussian. But for returns, and often for other regressions, they in fact are Gaussian. For other regressions, they are close.
In each version, we run Monte Carlo simulations 1000 times. We allow for choice of time horizon (how many years), annual withdrawals or contributions, initial wealth, and choice of innovations: multivariate Gaussian simulation (which is not exactly true, see above) or kernel density estimation. We compute the following quantities:
- Ruin probability
- Average final wealth
- The probability of the final wealth exceeding its average
- Average total returns over the paths which do not result in ruin
We also plot five paths which end in wealth ranked bottom 10%, bottom 30%, median (50% quantile), top 30%, and top 10%. This way we give a range of all plausible outcomes. I think that plotting 5% or 1% quantiles will give an unrealistic picture.
So far I have done the following versions:
- Volatility only, see this blog post and GitHub repository
- Volatility and trailing (log) earnings yield, see this GitHub repository file log-window.py
- Volatility and three spreads: BAA-AAA, AAA-Long, Long-Short, see this GitHub repository files only-rates-sim.py and only-rates.py
- Volatility, three spreads, and trailing log earnings yield, see this GitHub repository files simulator.py and 3spreads-CAPE-returns.py
- Volatility and the new valuation measure, see this GitHub repository file new-measure.py
For some but not all, I allowed initial conditions to be changed. I think it’s the best to allow index level, bond spreads, and volatility but not earnings to change. Earnings are trailing, they are a bit hard to find online, and they are updated infrequently. But the other information is updated daily.
Future work will include:
- Allowing these initial conditions (index, spreads, volatility) to be changed by the user.
- Updating all Python files so that all use the same notation and the same data file century.xlsx.
- Upload this data file to my web page.
- Test the model with this new valuation measure and the three spreads, and create a simulator for this.
- Also include both trailing earnings yield and the new valuation measure in the same regression for returns.
We need to add the following features in this simulator: Choose actions by the investor to make sure that the following events happen with given probability
- I need a given amount
in a given number of
years. How much do I invest now, if I contribute only at the initial time?
- I need a given amount
in a given number of
years. How much do I contribute per year, if I do not invest at the initial time?
- Starting from now, I need to withdraw
per year during
years. Here and below, we can have
so we can use this money infinitely long. How much to invest now?
- In
years I need to withdraw
per year during
years. How much to invest now, if I invest only at the initial time?
- In
years I need to withdraw
per year during
years. How much to contribute in each of these
years?
- I have
now and plan to spend it for
years. How much to withdraw per year?
- I have amount
now and plan to contribute/withdraw
per year during
years. How much will I have at the end?
Leave a reply to Returns vs Bubble and Spreads – My Finance Cancel reply