Turns out this idea is pretty powerful in personal budgeting too. I have a Google Sheets document with these columns (item + months):
Item|1|2|3|4..|11|12|Year
And I split the item categories into Income, Expenses, and Once-off expenses. I put all my recurring inflows into income, recurring outflows into Expenses, and Once-offs is a free form where I enter non-recurring purchases like a new computer or such.
On top of each month column I carry over the previous month's net income, then add income minus expenses minus once-off expenses. This is "cash flow". The goal is to aim to be cash-flow positive every month, and also to maximize the year-end net income -- which then gets invested or carried over to next year.
It then becomes a game to try to optimize the year end net income by doing course corrections every month, while maintaining a non-negative monthly net income.
(incidentally this is also how many businesses are run; well the conservative ones anyway)
I just started my third calendar year of this system on January 1st. It's working out pretty well. I like it more than an off the shelf budget app because I can customize it however I want. I use to keep track of other things like the last time I vacuumed my apartment.
My inspiration is actually not from accounting or finance, but a simple mass balance equation:
In - Out = Accumulation
Just keep the accumulation positive every month (constraint), and maximize it at year end (objective function).
Also I don't track spend below a certain dollar value. I know people like transaction-level granularity (every chocolate bar, every cup of coffee), but me, I just set aside a monthly buffer for incidentals and forget about it.
Some financial journalists make a big deal of how much you can save by not buying that cup of $2.75 Starbucks coffee every morning, but at my income level it's a rounding error not worth sweating over -- I'd rather focus my time increasing my topline growth i.e. learn and grow into positions with more responsibilities.
(But I also get free coffee at work so there's that :)
That said, making that viable has involved a slowly-evolving ecosystem of supporting tools. For example, I wrote a set of libraries that leverage the free Plaid tier ( https://plaid.com/ ) to automatically fetch bank and credit card transactions, and apply them to the ledger journal. I also wrote a script that takes a schedule and projects out future transactions to the journal, so I can define recurring transactions and view their impact on accounts projected into the future.
The combination of this means that viewing my current reality is easy, and viewing the impact of known future expenses (largely recurring bills/obligations) is easy. That’s been the single largest factor in enabling my long-term money management, because it’s given me confidence in the numbers, which has let me tune things like automatic 401k payments and automatic transfers to savings. I can move the maximum amount of money into long-term-storage because I always have a clear picture of “how much money do I need to keep out to account for my bills/expenses”
Yup. Other than the actual journal files, my full set of scripts is on GitHub. The documentation isn’t necessarily stellar, and there’s some sprawl due to the organic nature of the scripts, but I’ll try to call out the interesting pieces:
For starters, I have a relatively lightweight Ruby library for interacting with Ledger journal entries: http://github.com/akerl/libledger . Definitely doesn’t support the full ledger entry spec, I’ve basically expanded it as-necessary to be used by the following 2 tools.
Ballista ( https://github.com/akerl/ballista ) handles future projections. It consumes a YAML description of recurring expenses (shown in the readme) and can project them as ledger transactions. My projection YAML has recurring bills.
Burglar ( https://github.com/akerl/burglar ) handles posted transactions on my bank accounts. The docs are slightly out of date but correct-in-spirit; it now supports a “Plaid” module instead of the older Ally/Amex modules, and given that Plaid has support for all my banks, I use that module for 100% of the transaction parsing, with this config file: https://gist.github.com/akerl/ce93d9584f6cf2fd2948eed6fe93cb... . The creds get stored separately. Burglar, based on that config, fetches all transactions for my credit/checking/savings accounts.
Both those tools can technically work alone, but they’re limited by not knowing how somebody’s particular ledger journals are set up. I store mine as one-file-per-month, one-directory-per-year, and I’ve written a little script that uses Ballista and Burglar and applies them to my journals ( https://github.com/akerl/ledgerhelpers/blob/master/ldgprojec... ). It basically takes all the already-posted content in the journals, the posted content burglar returns, and the projected content ballista generates, and sorts them out into the appropriate files.
My rough process for using this is pretty straightforward. I run ldgproject and check the git diff to see what it’s changed. Burglar uses Ledger’s built-in “xact” function to try to guess the correct expense category for transactions (for example, it knows that Starbucks for me is Expenses:Food:fastsolo and Hilton is Expenses:Travel:hotel), but I generally scroll through and correct a couple it’s gotten wrong. I also have to manually merge transactions that touch multiple accounts. For example, when I pay a credit card, the credit card payment appears on my checking and credit accounts. I have to merge the transaction_id fields onto a single transaction. I’ve considered making it smarter about IDing these kinds of transfer transactions, but it hasn’t yet bothered me enough to cause me to dig in and do it. There are also some specific transactions that I fix to be more specific than the Burglar estimation (mostly, this is my paychecks, which I break out to account for tax withholding and other pre-tax bits).
From there, I’ve got a couple helper aliases in bash that amount to “the questions I usually ask about my money”: https://github.com/akerl/dotfiles/blob/0f4e9521cbb1f087b7495...
`prj` gives me “what’s all my credit card usage mapped against my personal checking account”, which basically amounts to “not including bills and my automatic savings, am I overspending on other stuff”.
`bills` gives me “how’s the account where all my bills get auto-paid from looking”
`freg` is a generic helper for forward-projection of “what does this account look like, now and in the past/future”
`bal` shows a balance report for $right_now
`aj` is a helper to open the active journal (this month’s)
I also have a tab completion written for zsh for ledger, that will autocomplete based on account names in your journals: https://github.com/akerl/dotfiles/blob/0f4e9521cbb1f087b7495...
Beyond that, if you’re new to the ledger CLI, I highly recommend https://devhints.io/ledger as a great quick-reference. The actual upstream docs at https://www.ledger-cli.org/3.0/doc/ledger3.html are comprehensive, but if you need to find something, take a moment to skim the introduction to make sure you understand how ledger uses various terms like account/transaction/payee/etc, since it will make searching the page much saner.
If you’re still not bored, I also have a slightly outdated blog post on using the ledger files to calculate US tax liability, by taking advantage of the aforementioned splitting of paycheck transactions into net income / tax withholding / etc: https://blog.akerl.org/2016/04/27/code-and-taxes-totally-exc...
This december I decided to give YNAB [1] a try.
I was skeptical at first, but now I'm a convert. They have a lot of material on how to budget in a very simple way. But I think the moment their system clicked for me was when I noticed I was using Categories "wrong". Let me give an example.
Say my wife and I go out for dinner and movies. Previously, my expenses would look like:
Transportation - $20
Cinema - $40
Restaurant - $60
The categories are directly tied to what was purchased. That made sense, but this is focusing on the wrong level IMHO. It's not what was purchased, but why? With YNAB, my expenses look like:
Date Night - $120
The important isn't where the money was spent, but the reason you spent it. Paying a taxi to go to work is different than paying a taxi to go on a date.
This seemingly simple difference changed the way I view my budget. The categories are meaningful for me, and not just the standard "Groceries", "Transportation", "Rent", etc.
I have been using it just for one month, but I love it! I highly recommend you to give it a try.
For those interested in an alternative that works in a similar manner, there's Buckets ( https://www.budgetwithbuckets.com/ ) which is also "pay once" and even offers an unlimited trial period.
If you spend frivolously, I agree. Otherwise, credit cards can be a good tool in building a payment history. I am in my mid-30s and have almost no credit history due to paying for everything in cash. While the credit score itself is not bad, my payment history is so limited that lenders appear to consider it a slight gamble.
Categories would be housing(includes utilities), transport, food, children(or pets or parents or ‘others’, if any), fun, medical/emergency(if not covered), taxes and insurance, savings.
You will see that some are fixed and some can be variable. You can only trim those that are variable.
Automatic transfers for the fixed and recurring expenses.(these can have a fixed ceiling. Like for utilities or gas etc).
For the variables like food and fun, assign different credit cards to them. That way you can track exactly how much you spend on food and when you change your behavior, you can figure out if it’s working for you and even make changes in the short term.
What I notice she does is some sort of 'envelope' method, where she has many envelopes, and for every bill she puts the amount needed, in cash, in the envelope. This way you know you have all your bills paid and anything left in your accounts you can use to invest or have fun with. When it comes time to pay a bill, you can either pay it with the cash, deposit it into your account and write a check or put it in before you pay online/phone or however you pay your bills.
She can re-use the same envelope for each month on reoccurring bills, and have some for special events/budgets or a vacation fund envelope. Birthday funds, Christmas etc.
I think physically seeing the bill money separated out of the accounts really helps you know how much left over you have every month to play with.
- Works on the phone and on the computer.
- The data can be synced to a server which stores it encrypted by your password.
- Cheap or single payment.
While some comments are suggesting YNAB and it looks great, $12 is a bit expensive for a personal budget app, also, they encrypt their data on their servers instead of encrypting it with our password before uploading the data.
budgetwithbuckets.com also looks promising, I like the unlimited free trial and it's single payment model, but it doesn't have mobile apps, which makes not much difference than storing the data on excel.
https://www.personalcapital.com/
https://www.reddit.com/r/personalfinance/comments/4gdlu9/how...
https://i.imgur.com/u0ocDRI.png
The best tools and processes are the ones you'll stick to.
There are, of course, a few free options that do a lot of the same things, but YNAB has been working for me for a long time and is well worth the money.
The project isn't quite where I want it to be, but it's getting close. The next thing to improve is support for banks that only allow users to download an N month window of transactions. Probably I will save each download to a timestamped file then merge them in-memory before the next stage in the pipeline. The source code for all of this is here: github.com/tmerr/bank_wrangler. I don't expect it to be useful for anyone else verbatim but it might give you some ideas or something to fork from. Disclaimer: banks might not be happy about web scraping / using undocumented APIs, so don't mindlessly fetch data without understanding that risk.
Maybe once a month or a quarter, I'll look at my savings and redistribute to investments or splurge on something nice.
All of that said, I really don't spend a lot of money. My biggest expense is that I buy lunch 5 days a week. I don't buy a lot of other things... so I guess this works for me.
If you want to know more about how all of this works, I recommend "I Will Teach You To Be Rich" by Ramit Sethi. It's pretty easy to read and walks you through all of the above. Worth more than it's $10 or whatever.
I make a spreadsheet called 'Budget YYYY', typically some time between October and December I make the next year's version, and then these for each month.
The control panel tracks income, where it goes, what was budgeted and what was actually spent.
The Credit Card Balance sheets I use twice a month to get all balances, prompt me to review all statements, and mark all of that off. It’s self-contained and doesn’t impact the rest of the budget.
Income this period gets money added in when I get it.
For spending, I track a couple of categories:
- Yearly / Bi-Annual Bills: Anything that happens not monthly. Domain registrations, car insurance, etc.
- Variable recurring bills: things that I have to pay, but don’t know how much they will be. Electric bill, water bill, etc. I rough-estimate these, and the longer I’ve lived at a place the more accurate I get.
- Static Recurring Bills: Things that are the same every month. Rent, subscription services,
- Grocery Expenses: Anything related to grocery shopping for food / household supplies.
- Restaurants: I explicitly break restaurants out into its own category to better let me see how much money I spend eating out, this is new this year.
- Travel Expenses: When I travel for work, I track things here, and then track the reimbursement.
- Other: Random spending money.
Then for savings I have boxes for:
Savings Account Deposits: I keep a number of savings account set aside for specific purposes, I record deposits into them here.
Savings Account Withdrawls: If I’m using extra money this month for something, I add it as income, and then debt it as a savings account withdrawl. For example, Christmas I made a withdrawal for money from savings, then added it as income, then recording the items bought under “Other”.
Thinking of giving up and just using GnuCash on desktop now.
PocketSmith holds my personal budget. It takes some getting used to and dedicated time to learn, but it’s been well worth it to me. YNAB was too simplistic for my needs, however it may be just the right fit for someone else.