Here is the long-awaited conclusion to the wonky 4-part discussion of safe retirement spending. We went pretty far down the rabbit hole, and I think the conclusions are useful.
In the last part of our look at dynamic rules for spending in retirement, we discussed how changing the allocation between stocks and bonds affects the maximum sustainable spending rate. We can summarize this relationship by plotting the highest feasible initial spending rate for any acceptable shortfall level.1
The last post discussed a framework for evaluating simple dynamic spending rules.
We found a simple dynamic spending rule could increase lifetime spending vs. a traditional fixed 4% rule, while keeping shortfall risk relatively low (arguably reducing risk by making the worst case more benign, at the cost of increased volatility, lowered starting spending, higher probability of modest shortfalls).
In this post we’ll look at how smoothing spending can improve outcomes, and how changing the equity/bond mix over time affects outcomes.
How much can you safely spend out of a portfolio in retirement? Spend conservatively and you may be unnecessarily curbing the lifestyle and aspirations of you and your loved ones. Overspend and risk a shortfall and painful adjustment – in the extreme, the (hopefully apocryphal) “cat food” diet.
If the 4% rule hasn’t been decisively breached, forward-looking indicators are a bit worrisome. Could a more flexible rule not only be safer, but in favorable circumstances allow a higher level of spending? In this 3-part post, we test dynamic rules that vary withdrawal rates based on age and the size of the portfolio, and vary the composition of the portfolio over time.
It’s not whether you get knocked down, it’s whether you get up. – Vince Lombardi
Playing around with DataNitro, an add-in that lets you run Python in Excel1.
What is the worst that could happen to someone who owns stocks, bonds, bills, over a 1-, 5-, 10-year time-frame? Here are the worst rolling periods for each asset class for 1928-2010, adjusted for inflation.
Worst case real returns for rolling periods from 1 to 30 years, 1928-2010
Over short timeframes, stocks can do quite a bit worse. The worst 2-year period is -52.5% for stocks, v. -26% for bonds and -25% for bills. Around year 8, stocks cross over. The worst 20-year period for stocks sees you up 10.7%, and the worst 30-year period sees you up 243%! When bonds and bills get hurt by inflation, they stay down for very long periods.
Rerunning the analysis for the post-war era doesn’t change much. Most of the worst-case periods for stocks and bonds were after 1946, but bills did worst around the war and better afterwards.
Worst case real returns for rolling periods from 1 to 30 years, 1946-2010
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
import numpy as np # not used in this example, but works! def rolling_return(series, n): "given a series of m returns, compute m-n rolling n-period returns" m = len(series) retarray =  for i in range(m-n+1): rr = 1.0 for j in range(n): rr = rr * (1+ series[i+j]) retarray.append(rr-1) return retarray active_sheet("Returns") stocks = CellRange("Equities").value bonds = CellRange("Bonds").value bills = CellRange("Bills").value cpi = CellRange("CPI").value realbonds = [bonds[i]-cpi[i] for i in range(len(cpi))] realbills = [bills[i]-cpi[i] for i in range(len(cpi))] realstocks = [stocks[i]-cpi[i] for i in range(len(cpi))] active_sheet("Data_1928") for i in range(1,31): tempbonds = rolling_return(realbonds,i) tempbills = rolling_return(realbills,i) tempstocks = rolling_return(realstocks,i) Cell(i+1,2).value = min(tempstocks) Cell(i+1,3).value = min(tempbonds) Cell(i+1,4).value = min(tempbills) active_sheet("Data_1946") realbonds46=realbonds[18:] realbills46=realbills[18:] realstocks46=realstocks[18:] for i in range(1,31): tempbonds = rolling_return(realbonds46,i) tempbills = rolling_return(realbills46,i) tempstocks = rolling_return(realstocks46,i) Cell(i+1,2).value = min(tempstocks) Cell(i+1,3).value = min(tempbonds) Cell(i+1,4).value = min(tempbills)
1Why is Python a good thing? Lots of very powerful packages for data manipulation, optimization, statistical analysis, machine learning are available in Python. Also, Python is a powerful, expressive, readable language that makes it easy to manipulate complex data structures.
If ‘The Graduate’ were made today, Benjamin Braddock might hear a well-meaning uncle stage-whisper ‘Big Data’ instead of ‘Plastics.’ (Runners-up: ‘The Cloud’, ‘Social Discovery’, ‘Gamification’, the list goes on.) ‘Big data’ is a buzzword that people throw around a lot. What does it mean? Large data sets are not new. The IRS, the Census, Walmart, money center banks have always had big data sets.
I didn’t really post as much as I would have liked this year. I envy people whose thoughts come out in a more or less coherent, finished form. When I post something, I always think of what I really wanted to say after hitting ‘publish’.
Today, I’m going to just try to write for an hour and post what comes out, hopefully resisting the temptation to ninja-edit.
The first casualty when war comes is truth. – Hiram Johnson
Everybody talkin’ to their pockets
Everybody wants a box of chocolates
And a long-stemmed rose
– Leonard Cohen
Let’s talk a little about social capital.
According to studies, Greeks work the longest hours in Europe, and their retirement age is in the middle of the pack. Same goes for a lot of developing countries, and even some US inner cities. People work themselves to the bone, and they don’t get ahead.
Why are those countries in such a mess?
The Paul Ryan plan ‘Promotes saving by eliminating taxes on interest, capital gains, and dividends; also eliminates the death tax.’
So people like Mitt Romney, and all his heirs in perpetuity, would never pay another dime in income tax. How sweet is that? How fair is that?
It’s shocking that in this day and age, someone could make such a proposal, and be considered a serious person and politician.
The GOP has come an awful long way from its founder, who said, “Capital is only the fruit of labor, and could never have existed if labor had not first existed. Labor is the superior of capital, and deserves much the higher consideration.” – Abraham Lincoln