Carl's Notes
Life complexity navigation algorithms

Personal Finances

For about 20 years now, I’ve been using some sort of system to manage my personal finances.

It started with a friend’s advice to have a few thousand euros worth of savings on the side, which prompted me to open a second account. After I moved to Berlin in early 2007, I travelled to France and Sweden regularly, which put a strain on my finances. I would often end up at zero several days before the salary would arrive and started to make buckets. I remember having up to three buckets of €150 to finish those months in which I would end up strapped for cash (there were three in case I didn’t manage to top one up in the next month). At the same time, I started recording the amount of money I had in each account almost daily, which eventually gave me enough data to plot an average balance throughout the month that I could use to check how I was doing.

I then extended the buckets system to save up for dedicated expenses or purchases, feeling better about spending money I already had rather than paying with the credit card and wondering how I’d shelve out the money at the end of the month (in Germany, credit cards linked to a current account typically get balanced out in one go at the end of the month, not in monthly rates).

Things got more complex over time: I started buying some ETFs, family expenses had to be managed, and, crucially, the demise of my little whisky business put me under some financial strain that made it necessary to have an even better control over my spending and available money.

Sometime last year, I started using GnuCash to track bank accounts and expenses, and kept the buckets and some analysis in Excel. Tracking expenses also means recording every cash transaction, so I set up a simple Google Form to do that.

In the rest of this post, I want to try to describe what I’ve learned about managing personal finances and sort my thoughts about my system.

The goals

Books

For lack of a better word, I maintain two “books”. One is for my personal expenses, the other is for the family expenses. We have a shared bank account for those, where both of us transfer a set sum every month and from which we pay everything that involves other family members, housing or the car.

The other book is for my personal expenses: my mobile plan, my sports memberships, my going-out expenses (unless it’s with my wife), my own travels etc. It also tracks my personal assets, like my ETFs.

Most of what I describe below applies to both books, but I may highlight some differences if they are relevant.

Principle

Finances for separate entities should be managed separately. Don’t try to mix your personal finances with those of your family or your business. Keep separate bank accounts and separate books for these.

Assets and expenses are tracked in GnuCash

I track my assets and expenses in GnuCash. It can fetch the transactions directly from my bank and provides an efficient way of categorizing each expense. I used to track my account balances in Excel, but if I didn’t do it every day, I’d be missing data. GnuCash just does it all automatically, which is way better.

I try not to go wild on category expenses, but I still ended up with about 50 categories. Many of them were simply defaults provided by GnuCash. I don’t feel like there are too many, though.

More importantly, they are organized hierarchically, up to 3 levels deep. This is something not every software out there can do, and one of the things that has me sticking to GnuCash despite all its flaws.

Monthly budgeting with jars is done in Excel

I recently adopted a system for guiding my spending allocation, with 6 overarching categories, called “jars”, distributed as follows:

Long-term goal means that I should eventually increase my income or decrease my expenditures to reach that percentage.

These jars are represented as top-level accounts (categories) in GnuCash.

I came up with these allocations based on a quick-and-dirty analysis of my/our spending over a few months (this is where having that data really shines) done in Excel, whereas the goals stated above come from various sources and recommendations.

Principle

Analysis of monthly expenditures and, crucially, its feeding back into a budget should be an integral part of the system.

The only thing I really care about budgeting on a day-to-day basis is the guilt-free spending. I would like to always know exactly how much left I have to spend on going out with friends, buying stuff etc. Unfortunately, GnuCash makes it rather difficult to see this, and I’m left using its awkward budgeting feature coupled with the ridiculously primitive reports functionality where I have to wade through a bunch of numbers to find the one I’m interested in.

Principle

Actual vs. budget should be prominently displayed and accessible on the go.

There are a few other categories that I want to look at from time to time, like clothing or gifts, for which I have a monthly allowance, but only spend on occasionally.

Those are the categories I need a budget for. Everything else I don’t really care about. I generally try to be careful with my spending, so I don’t feel the need to ask myself how much I can spend on groceries every time I go to the supermarket.

Necessary vs. guilt-free spending

In theory, there could be some duplication around the notion of necessary vs. “guilt-free” expenses. If I travel, is it to visit my parents (which I would consider necessary, since maintaining healthy relationships is an important part of my own wellbeing) or is it to visit friends? And if milk is necessary, but whisky is a luxury, where does that leave wine or beer, which are regular staples of our meals, at least on the weekend? Is chocolate a necessity?

So far, this hasn’t been a practical issue. Anything I pay for at the supermarket, including chocolate, gets booked as a groceries expenditure under “Necessary” and that’s it. At most, there could maybe be 2-3 categories duplicated between those two groups, but no more. It’s not worth being too pedantic about this, unless there is a good reason to it. If someday I feel like I’m spending an abnormal amount on chocolate, I’ll have to move it to “Guilt-free spending” and split up the transaction in GnuCash, but I have yet to see this happening.

Principle

Introduce an expense category for a good reason, e.g. because you want to keep an eye on it or because it’s relevant for taxes at the end of the year. It’s probably not worth singling out chocolate from other groceries.

Another slight quirk of my system is that I book the lump sum I wire to the shared account for family expenses under “Necessary”, but some of that money, in the other book, goes into necessary expenses, guilt-free spending (like when my wife and I go to the movies) or even savings. I haven’t figured out a good, easy way to deal with that yet, but I suspect it’s just a split transaction away. Another solution could be to deduct that lump sum from my income before calculating the overarching categories.

Managing savings with buckets in Excel

The general idea behind my savings system is to avoid large, unexpected expenses. For me, that limit is at €100. This is because I usually only keep what I will typically need for the month on my current account and move everything else to a savings account. Large, unexpected expenses force me to shuffle money back and forth.

Principle

Buckets can help avoid large, unexpected expenses.

I use various kinds of buckets, that can be divided in two groups:

Obligations. There are things I know I’ll have to pay at some point, usually because there is a contract or at least a commitment on my part: Yearly insurance premiums, landowner tax, the next dental care appointment, etc. These will typically have a due date, a target amount and, from those two, a calculated monthly savings rate. Every month, I add the respective monthly savings amount from whatever additional funds landed in my savings account.

Long-term savings. These are things I want to purchase or think I may have to. Typically, these will have a target amount and a monthly savings rate, and from these two, I will calculate the date at which they will be full (so the opposite of the liabilities above). These can, again, be further subdivided:

Principle

There are multiple forms of savings goals. Some have a fixed target amount and a fixed due date, while others have a fixed target amount and a fixed monthly savings rate. Sometimes, only one of these, or even none, need be given.

Managing this is simple enough in Excel, and I have two tables on the same spreadsheet, to list them. The first table lists the obligations, and the monthly savings column is calculated from the target amount and due date. The second table lists the long-term savings where the due date is called “date reached” and is calculated from the target amount and monthly savings rate.

It is, however, a bit annoying to have to do this in a different software, since some of these are tied quite closely to the expense tracking activity (like transferring back clothing purchases).

It is worth noting that each bucket has a corresponding expense category. It would be ideal if I could just select an expense in GnuCash and say “Transfer this back from this bucket” and have it all done for me.

Principle

Each bucket has a matching category. In other words, the budget (or allowance) is a property of the the expense category. The system should recognize this and display the “actual vs. budget” information automatically for all expense categories that have a budget. If a category with a budget has sub-categories, these should count towards that budget.

Also, “Likely future expenses” and “Monthly allowances” are part of the analysis of monthly spending, so they are an integral part of the “Necessary” or “Guilt-free spending” calculations, and their monthly savings rate should match what I estimate in the analysis, more or less.

Another important point is that for the “Monthly allowances”, the actual expenses are not recorded in GnuCash when the funds are transferred into the savings account at the beginning of the, which would make it look like I spent the same amount on e.g. clothes every month. Instead, they are recorded when I actually buy those things.

I realize that my way of describing this makes it more laborious than it actually is. There is nothing very complicated about this, and the most difficult part is keeping track of expenses that should be taken out of these buckets and actually transferring the money back to the current account.

Managing cash expenses

The most annoying part of all this is dealing with cash. Whenever I buy something using cash, I try to enter it in a Google Form, where I list whether it was a personal expense or a family one. Usually, I pay for it with my own cash and transfer those expenses back from the shared account occasionally. But sometimes, the cash comes directly from the shared account, so I have to keep track of that too.

This is a manual process, and errors accumulate. By now, GnuCash thinks I have over €500 in my wallet. I wish it were so. Every now and then, I just lump these errors up into an “Unknown expenses” category and reset my cash balance to what’s actually in my wallet.

While there is a GnuCash app, it’s not an official one, and it doesn’t sync with my books, so I don’t use it. Also, Google Forms don’t work where I have no cell reception, which is still amazingly common on the German countryside, where I’m more likely to have to pay cash for coffee, bread etc.

Principle

Make managing cash expenses as easy and friction-free as possible.

No need for a balance sheet

GnuCash, reflecting American personal accounting practices I believe, makes a rather big deal of the balance sheet, which compares Liabilities (debt) to Assets (owned) and Equity (net worth). I actually don’t care much about these. They mean nothing to me in the abstract like this, and my system is very much focused on cash-flow instead. Theoretically, looking at the balance sheet would tell me whether I could afford to buy that house near the lake in Geneva, but a quick online credit simulation shows that the cash-flow won’t accomodate the mortgage rates and that’s it.

Principle

My system focuses on cash-flow, not on the balance sheet.

Online banking transactions

With the ability to query the transactions directly from the bank should come the ability to actually initiate transactions.

I find that for random transactions, I’d rather go to my bank’s website, for some reason. However, if I already have all the details of a transaction to be done in my system, I might as well initiate it from there. That’s the case when I e.g. buy clothes and want to transfer back the amount from my savings account. The information about the savings account, the amount and the bucket are all available, so it could do it all for me.

Principle

The system shoudl make it easy to initiate online banking transactions given data already available.

Read another post