‘Cat Food’ revisited – testing dynamic spending rules – Part 3

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

‘Cat Food’ revisited – testing dynamic spending rules – Part 2

The last post discussed a framework for evaluating simple dynamic spending rules.

  • We defined a spending factor s as spending each year at a rate of s/(remaining life expectancy); and lifetime spending expectancy as the total amount you could expect to spend over your lifetime.
  • We showed how, as you increase the spending factor, lifetime spend expectancy initially increases rapidly, but the curve flattens out as spending rate increases.
  • We showed how, as you increase the spending factor, shortfall risk initially increases slowly, but the curve steepens as spending rate increases.

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.

‘Cat Food’ revisited – testing dynamic spending rules – Part 1

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.

A traditional rule of thumb is a fixed 4% per year of your starting portfolio, adjusted each year for inflation. A previous post discussed why this rule may not be safe:

  • Low bond yields – 1.8% for 10-year Treasurys and negative TIPS out to 10 years – mean historical bond returns are mathematically unobtainable.1
  • 2.2% real returns since 2000 on a 60/40 blended portfolio suggest that long-run return expectations need to be revisited. Low long-term interest rates are a forecast of low future returns, ie low growth and inflation expectations. To the extent equity risk premiums haven’t widened, they forecast lower than normal equity returns.
  • Taxes and investment expenses must be included. Work supporting 4% tends to ignore them.
  • US demographics are not very positive for growth, inflation, tax rates, and hence, real after-tax investment returns (which is reflected in the US fiscal position). The US dependency ratio is forecast to rise by 15 points over the next 20 years.

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.

What’s the worst that could happen?

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.

Stocks Bonds Bills
1-year -38.2% 1937, 1974 -15.5% 1980 -17.8% 1946
2-year -52.5% 1972-1974 -26.2% 1978-1980 -24.6% 1945-1947
5-year -44.7% 1936-1941 -37.5% 1976-1981 -27.3% 1945-1950
10-year -37.5% 1964-1974 -43.2% 1971-1981 -43.9% 1940-1950
20-year 10.7% 1961-1981 -40.8% 1961-1981 -48.9% 1932-1952
30-year 243.5% 1964-1994 -39.3% 1950-1980 -43.4% 1932-1962


Worst case real returns for rolling periods from 1 to 30 years, 1928-2010

Worst rolling returns

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

Worst Case real returns, 1946-2010

Spreadsheet here.

?View Code PYTHON
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])
    return retarray
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))]
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)
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.

‘Big Data’

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.

What’s changed?

What I Learned

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.

My buddy Josh does a post with quotes where a bunch of people say what they learned over the last year. So what did I learn?

Social capital – or, the lost art of not taking a dump in the community pool

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?

Broken Windows

So, some people are talking about Hurricane Sandy putting people back to work, and others are pointing out that this is the ‘broken windows fallacy.’ True, a massive superstorm is usually not a good thing. Nevertheless, three quick points.

English: Aerial view of roadbed collapse near ...

English: Aerial view of roadbed collapse near the interface of the cantilevered truss sections of the San Francisco-Oakland Bay Bridge. View northwestward. Cropped from original version to better fit San Francisco–Oakland Bay Bridge article. (Photo credit: Wikipedia)


The Paul Ryan plan

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

A Target2 Thought Experiment

Suppose a Greek shipping magnate decides he’s not comfortable keeping his wealth in Greece, and decides to buy some nice real estate in Berlin. (As if most of the Greek wealthy hadn’t removed as much as possible to Germany, the US and UK long ago.) He writes a check for €1m on his Greek bank to the buyer, who deposits it at Deutsche Bank. To settle the check, the Greek bank wires the funds from its reserve account at the Greek central bank, the Bank of Greece. The Bank of Greece instructs the Bundesbank to credit Deutsche Bank’s reserve account at the Bundesbank. Then the Bundesbank is owed €1m by the ECB, and the Bank of Greece owes €1m under the Target2 system (corrected).

There has been a lot of controversy about this process, and the notion that Germany will get stuck with massive losses if, following massive capital flight now in progress to Germany, the peripheral countries leave the euro.

A thought experiment:

I am free, no matter what rules surround me. If I find them tolerable, I tolerate them; if I find them too obnoxious, I break them. I am free because I know that I alone am morally responsible for everything I do. - Robert A. Heinlein

StreetEYE Twitter

26 queries in 0.469 seconds.