Author Archives: Lou Franco

The Net Worth Spreadsheet in Vanilla Python

This article is based on the spreadsheet I made to estimate net worth over time.

I think that Excel is basically a programming language, and I have an interest in bridging the gap from it to more traditional languages. And I needed an excuse to get matplotlib working on my machine.

Luckily, procrastination worked in my case. If I had tried it a few months ago, numpy was not yet working on M1 macs, but as of python 3.9.4, it installs normally using pyenv and pip.

I started a GitHub repo to hold the Excel spreadsheet and python port — I’ll be posting more ports to various frameworks. I like it as a simple example because it has conditionals, loops, arrays and is a pretty useful thing to know.

It’s also a good starting point for learning more programming. Excel is great, and there’s a lot you can do, but with the python version, I could add the following features.

  1. Instead of using constants for the various inputs (like market rate), use a lambda and define different ways the market could move rather than constant
  2. Do similar things with spending models in retirement, inflation, etc.
  3. Make it easier to have more lumpy spending/saving — meaning, assume aggressive spending in youth, then a period where you might have children and buying a house, then a house sale in the future, etc.
  4. Make it possible to show many more scenarios at once (like 30 historical market curves effect on your plan)

To be fair, all of this is very possible in Excel. It’s just a lot easier in python.

Write While True Episode 9: Deprivation

I don’t use a lot of social media, but if I don’t plan my time intentionally, I’ll find myself watching a lot of YouTube.

It’s not that I think that my life should be 100% dedicated to making new things or in solitary contemplation. But, there are times when I notice that level of output isn’t where I want it to be, and so I take a good look at how I am spending my time.

Transcript

The Net Worth Spreadsheet Documentation

Yesterday, I posted a spreadsheet to help you explore how savings rate relates to eventual net worth in retirement.

It’s a very simple spreadsheet with a simple model, so I wanted to document it here in case you want to play the formulas.

Here is a description of the inputs and how they are used.

Age/A2: Your age. You can set this to your current age, or a past age if you want to figure out a benchmark

Year/B2: The year associated with the age in A2.

The sheet allows you to compare two scenarios. I1:I8 corresponds to Scenario A (the blue line) and K1:K8 corresponds to Scenario B (the red line)

Starting Net Worth/I2/K2: Your net worth at the age in A2

Market Return/I3/K3: The market return that will be applied to your net worth at the end of each year to determine the starting point for the next year. Obviously, this is simplistic. I recommend keeping this conservative—Use the nominal return (not the return after inflation).

Starting Salary/I4/K4: The gross salary (or income) at your age in A2

Inflation/I5/K5: The rate of inflation to use on expenses after retirement.

Raises/I6/K6: The expected % raise to your salary you will get each year. I set this a little over inflation. It is expected that your expenses and savings increase proportionally such that your saving rate stays constant.

Retirement Age/I7/K7: The age you plan to retire. At this point, you start to draw down against savings. Inflation is applied to the expenses every year. The starting expense amount is estimated based on your savings rate.

Savings Rate/I8/K8: The % of your gross income that you save.

Things this spreadsheet does not try to model:

  • Big expenses like houses and college tuition
  • Increasing expenses because of children
  • Volatile markets
  • Windfalls

Very Simple Net Worth Estimator

Yesterday, I wrote about my first lesson in personal finance where I saw what the effect of savings rate had on retirement outcomes. I focused on the binary result of your net worth growing or shrinking after retirement.

I made a simple spreadsheet if you want to play with this yourself.

Here’s a link to a Google Sheet you can copy.

And here’s an Excel version.

To use it

  1. Put your age in A2
  2. Put your current net worth in I2 and K2
  3. Put your current salary in I4 and K4

I would leave market return, inflation, etc alone and concentrate on seeing the effect of different savings rates. You can see the actual saving amounts in Columns D and F.

Of course, you should not take this as financial advice or even assume these spreadsheets are correct — check the math (let me know if you see an issue).

They are not meant to be accurate models, they are a very simple way of looking at it.

Remember, you can’t really control a lot of the variables on this spreadsheet except saving rate, which you have a lot of control over.

I’ll soon talk about income, which is the other big variable you can control. In this spreadsheet, I have assumed that you get raises slightly more than inflation.

The Day I Learned About Personal Finance

When I was in my early twenties, I got a call from a financial advisor asking if we could have a meeting to discuss my finances. I would say at that point (compared to now) I knew very little, but I did save a lot, maxed out my 401k, and didn’t have any debt. But, aside from the 401k, my money was just in a bank.

I agreed to have coffee with him.

Over the phone he took a bunch of information from me. My age, my salary, my savings, etc, and then at the meeting, he brought a small spiral bound book with a personalized plan.

I can tell you right now, that that plan was probably not good. He, almost certainly, was not a fiduciary, and the mutual funds he wanted to put me in probably had high fees.

One page of that book, though, changed my life.

It was a line graph. The x-axis went from 1995 to 2055 or age 25 to 85. The y-value was my predicted net-worth. This was the result of using my expected salary growth, my savings rate, expense growth, my current net worth, inflation guesses, expected return, etc. You can find many such calculators on the web or do it yourself in Excel.

It was as you would imagine, an exponential growth curve that results from compound interest as long as returns and savings grow with respect to expenses and inflation.

The part that surprised me was that at 2035, when I would turn 65 and presumably retire, the curve had a noticeable notch, but still basically grew, but on a different exponential curve.

I asked how it could still go up after I retire, and he explained that at that point my investments would make more each year than I needed to spend, so they would keep growing.

I recreated the shape here.

In my mind, the red line was what I was going for—it’s not a bad outcome. He showed me that the blue line was not only possible, but actually, I was already headed there if I kept my savings rate. Most of the assumptions were fairly conservative. The only difference between those lines is expense growth (or, in other words, savings growth).

I honestly didn’t hear anything else he said that day. Look at what a difference it makes.

Assuming that you are not a stock-picking genius (spoiler alert: you’re not), and you are getting market returns from index funds, the only variable you control is savings rate. Of course, there are several components of savings rate, which I’ll talk about soon.

Waiting to Promote Until You Are Sure is Wage-Theft

If you wait to promote people who are “already doing the job”, I think you’ll find that you don’t retain your best people. And if you are hiring people into senior positions instead of promoting, you don’t deserve to.

Even if you do, it’s a kind of wage-theft to not pay people for the work they are doing. A few months is ok, a year is absolutely not if you have the positions. If you’ve already done this, consider a bonus at promotion time.

If you have the positions, but people don’t seem ready, that’s on you. You should have supported and developed them before they were needed. If the opportunity is there, you should take the chance and responsibility for their success.

Meaning, if it doesn’t work out, you were the failure. You failed to develop them in time, and you failed to support them so that they were successful.

Applying The ONE Thing

I recently read The One Thing [amazon affiliate link] by Keller and Papasan. I recommend it, but the current VP of The ONE Thing was on an episode of Afford Anything, and it’s a very good introduction to the concept, if you want something quicker to digest.

The crux is that the authors ask you to focus on one question:

What’s the ONE Thing you can do such that by doing it everything else will be easier or unnecessary?

In a “five-why” fashion, you could start with your big goals and work backwards until you have the very first thing you need to do. They recommend dedicating a huge chunk of your time to that one thing, accomplishing it, and then moving on to the next ONE thing … ONE thing at a time.

For example, you might start with a goal to “Lose 10 pounds”, but end up with a ONE Thing like — learn how to cook five healthy, low calorie density, one-pot, bulk meals.

Don’t stop there, though. They want you to keep going—what is the one thing that would make that easier? Maybe you can find a local chef to come to your house and make them with you for the first three weeks. Perhaps you can get four friends to each learn one and teach the others (or swap freezer bags each week).

When I finished the book, I thought that my current ONE thing was to build up the number of tutorials on App-o-Mat, so I have been doing that. The eventual goal with App-o-Mat is to sell some kind of product there, but before that I need an audience, and you can’t get an audience unless you have useful content.

But, I am supposed to keep digging.

What is the The ONE Thing I could do to make making tutorials on App-o-Mat easier. One thing that has helped is having Sprint-o-Mat, because I just take code out of it as a basis for the tutorial. If I didn’t have that, making the app might be important.

But, if I break it down to something like this: I want 100 more articles on App-o-Mat by the end of July, then I see that I can only write about 25 of them at my current pace. What would make that easier?

Obviously, more writers. But 75 articles would cost about $15,000. So, is the real next ONE thing to get $15,000 of revenue? Or at least $5,000 in May?

I’m still working through this. If App-o-Mat were a serious business, investing $15,000 would be a no-brainer, but honestly, it’s not. Right now, I want to have the experience of writing, and I don’t want to manage and edit a bunch of writers.

But, I do think that a trickle of articles by others would be ok, so I will explore that. I also think that if I doubled-down on the time I spend writing articles, I could do a lot more, which means dropping some other things or just getting more disciplined.

Keller would say to break down “getting more disciplined” first because he’s kind of annoying that way.

So, to do that, I am going to make my One thing to come up with article series ideas that could each have many articles in them. Because then, I’d at least have a checklist I could work from and could put them on a schedule. I think I’d see the possibility of outsourcing better as well.

Write While True Episode 8: Lower the Bar

This episode is about lowering the bar, and I’m tempted to just say to go do it and sign off.

I won’t do that, but I am going to keep the bar on this episode pretty low. Now, you’re probably thinking — Lou, I thought the bar for Write While True episodes was pretty low already.

Transcript

Gerry Sussman on Biological Systems

Yesterday, I lamented that our computer systems are so short-lived, as opposed to biological systems (like humans) which routinely live lives twice as long as the longest-lived computer system.

I want to be clear that I am talking about the uptime/runtime of a mostly static system, not something like UNIX that is constantly maintained (unless there’s a 3B2 in Bell Labs somewhere running UNIX from the 70’s processing payroll or something).

I was reminded about this talk from Gerry Sussman titled We Really Don’t Know How to Compute.

My main takeaway has to do with types and correctness. Basically, that they are a dead-end. They are very useful (I use them!), but correctness isn’t an interesting goal for a long-lived system.

Sussman brings up biology—and one point he stresses is adaptability.

If adaptability is a key to long-livedness, then type-systems and correctness appear to be in opposition to that. As do runtime assertions. Imagine if humans “crashed” if they got unexpected input. Or what if humans simply refused to “boot” if they had a minor gene “incorrectness” (admittedly, they do refuse to boot with major gene defects).

Here’s an example of adaptivity in humans: we take food as input. We were designed by evolution to use whole plants and maybe some meat as optimal fuel.

However, a modern human can live on processed food, much more meat and dairy, oils, refined sugar, and many things that did not exist when we were designed. We don’t crash immediately on that input or even reject it. We get fat, we develop heart-disease, diabetes, etc.

In other words, we get feedback that the input is bad—eventually the system will end earlier than it would have with better input, but there are many examples of long-lived humans that have never had perfect input.

Is the Human system “correct”? How would you use Domain Driven Design and types to describe the input to this system?

The reality is that the input is essentially infinite and unknown, and what matters more is the adaptability and feedback.

Gerry’s talk has something to say about what kind of programming language you need for this (Spoiler Alert: Scheme), but generally more dynamic, more data-driven languages will work better.