Live data from Hacker News

10 years of personal finances in plain text files

sgoel.dev

181–190 of 199 posts

Re: 10 years of personal finances in plain text files

#181
In the 2010s I had used virtually all existing Personal Finances software on the internet and ended up building my own [1] that I still maintain and use to this day.

A ton of software out there was too US-centric, sometimes not even supporting multi-currency, or the UI being terrible to a newcomer. I've recently tried Beancount, but it still didn't convince me to switch over, because:

1) Double-entry bookkeeping is about what happened, and I want the software to tell me what's coming up. I can still handle that in Beancount, but it's unaware of $CURRENT_DATE, making it labour intensive: if you post an expense for the next week, it will already deduct it from your balance, you'd have to post the item as a liability, and then later move the liability to an expense once it actually hit the bank account (and you have to do that manually);

2) I matured my personal finances by following the YNAB method, and I'm not sure how to apply that to DEBK;

3) I think most people use a Personal Finances software differently than me. I see discussions about importing transactions and monthly reconciling. I open it nearly daily to check what is coming up, and I post transactions as soon as they happen. I want to know how much clothing/groceries/restaurant budget I have left before I leave home;

Any tips on how to handle those things on Beancount/DEBK, or that's just not for me?

1: https://www.kassner.com.br/projects/money/

Re: 10 years of personal finances in plain text files

#182
post #180

I go a step further than this, which is to make the beancount files 100% generated by a program - no manual edits allowed at all. I have a version-controlled directory with the raw data (csvs, pdfs, weird text formats) from a bunch of different sources (bank accounts, payslips, pension funds, mortgage statements, and stock market price data). The process is then just an ETL pipeline to an intermediate data structure.…

How do you deal with one of transactions? How do you assign them to the right account?

For checking accounts, I have a list of rules that each transaction passes through. If a rule matches it generates the double-entry transaction going from the checking account to the account listed in the rule (or vice versa if the amount is positive). Earlier rules take precedence over later rules. If no rule matches it errors and prints out the transaction so I can add a new rule.

The main account I use for day to day spending is Monzo, they correctly categorise 99% of my transactions for me (and this is included in the csv export) which makes this way easier.

Re: 10 years of personal finances in plain text files

#183
My wife and I work. We are blessed that we make enough that we buy ~anything reasonable we want, have 2 kids in private school, and max out our 401k/roths/backdoor every year.

What is the value in detailed tracking of personal finance? We audit ~every credit card bill when it comes in for oddities, but don't really pay attention where everything goes as long as more comes in than goes out.

Re: 10 years of personal finances in plain text files

#184
post #38

+1 to OP's book, which is the best beginner guide I've found for understanding Beancount / plaintext accounting. I was also confused about double-entry accounting for most of my life until I read the article, "Accounting for Computer Scientists"[0] by Martin Kleppman (author of Designing Data-Intensive Applications ). It explains double entry accounting in a surprisingly accessible way by putting it in terms of graph…

What did you find hard to understand about double entry accounting? Seems pretty straightforward. Every transaction affects at least two accounts, and the total debits must equal the total credits. I can't imagine how introducing graph theory simplifies it, although I trust there are interesting insights none-the-less.

I was confused about it for a long time, though. I recall the confusion centered around terminology. I'm from Denmark and there we say "aktiver" (actives) must equal "passiver" (passives/liabilities) - which seemed very unintuitive. Why would they be equal - and exactly equal (down to the last cent)? I mean, what if I buy a piece of candy and then eat it? Even if we accept that buying it turns it into an asset, wouldn't eating it cause a reduction in assets and thereby make the two sides diverge? Surely when eaten, something is lost, so again how can they be equal? I saw the 'light' when I started tracking my own finances in a spreadsheet. I started tracking the value of all accounts in a separate sheet, summing them to see how much money I had. Then, I started tracking all expenses to see in detail how much I spent each month. Eventually, it dawned on me to connect these subsheets to check that I hadn't forgotten an expense or typed a wrong number. It worked like this: every month I summed up the accounts and made a note. At the end of the next month, I would update the account values with new balances from the bank, and then verify that the change in balance matched exactly the sum of the spending (plus income). Then I realized: hey, maybe this is what double entry accounting is all about. It is mostly a terminology question; the "assets equal liabilities" phrasing is what trips people up, and the candy mystery is of course explained by just having various entries accounting for this. While I do know graph theory, I don't see the relation to double entry accounting. I can't imagine how introducing graph theory simplifies it, though maybe I don't truly understand it after all ;)

Re: 10 years of personal finances in plain text files

#185
post #183

My wife and I work. We are blessed that we make enough that we buy ~anything reasonable we want, have 2 kids in private school, and max out our 401k/roths/backdoor every year. What is the value in detailed tracking of personal finance? We audit ~every credit card bill when it comes in for oddities, but don't really pay attention where everything goes as long as more comes in than goes out.

For me I wanted to know how much I'm spending spend in different categories - not just for the phone bill where you can just see what it is every month, but for more irregular expenses: travel, repairs, appliances etc.

So why is this interesting to know? It gives you a better picture of where your money goes, what your bur rate is, how much of your spend is on mandatory stuff (food, rent/mortage etc.) and how much is on things you could potentially cut if need be. It makes it possible to know how far you are from various levels (/lifestyles) of financial independence. I have a pretty good idea that I could make it to retirement even if I permanently lost my job and I know what that lifestyle would roughly be like.

This also makes it possible to do proper budgeting by setting aside realistic amounts even for irregular expenses, so you're essentially 'saving up' for the irregular expenses. Done right, your "expenses" (money set aside in budget) are exactly the same month after month even though your actual money outflows in some months may be much higher. This is both true for the irregular expenses like travel, but also for semi-regular expenses that may come due only annually or every three months (mortgage etc.).

For me personally, it made me feel much more comfortable about spending larger amounts on travel etc. because I've already saved up the money via budgeting and I've never seen it as savings that goes away. Savings are per definition the difference in monthly income vs month set aside in budget. I make sure to be a bit conservative, so I actually also build a buffer on the savings account, usable for truly extraordinary expenses.

But your current situation sounds healthy - and if you have amble cushion, and you're confident it will continue that way and you have no desire to change it yourself, the above is of course less relevant.

Re: 10 years of personal finances in plain text files

#186
post #54

I've tried to track personal finances several times, but it only started to work when I've discovered the idea (from https://github.com/adept/full-fledged-hledger ) that you need to treat the whole PTA story more like a project compilation: - Everything is managed by build system that is able to track dependencies - Inputs from financial institutions are kept in the repo as is - Those inputs are converted by your scr…

Thank you! I’ve always procrastinated tracking finances, but as a programmer who believes in reproducible builds, this just clicked.

I just downloaded a bunch of qfx and csv files, and got Claude Code to do this. Took an hour to create the whole system from nothing. Then of course I stayed up until 2am getting CC to create Python rules to categorize things better, and trying to figure out what BEENVERI on my bank statement means

(If you do this, make Claude generate fingerprints for each transaction so it’s easy to add individual overrides…)

Getting Claude to write a FastAPI backend to serve up a “Subscriptions” dashboard took about 3 minutes, plus another minute or two to add an svg bar graph and change ordering.

Crazy times.

Re: 10 years of personal finances in plain text files

#187

I've been beancount'ing for years now As we've crossed into the new year I've switched to a similar directory setup as the OP with 1 file per year. Previously I just had one file that was from 2022 which ended up being like 2 million lines of text, which was starting to bog down the emacs plugin. What I appreciate the most about this approach to personal finances is it just tracks everything. Investments, pensions, R…

I have my electricity bills tracking into a KWH commodity. It has been... effectively useless :D.

How do you do this? I am just getting into hledger and am curious about tracking this kind of stuff to see how much we would really save with a different electric supplier.

Re: 10 years of personal finances in plain text files

#188
post #5

I have 14 years of personal (and 2 years of sole proprietorship) finance data in beancount. I tried all the available personal finance apps there are, from cloud/online offerings to offline apps. Eventually, I settled on beancount because it is the most versatile file format. In addition to tracking finances, I can track stocks, unvested RSU grants, vacation hours, and even personal training I have paid for but yet t…

Do you manage your beancount files in version control? Or just keep free floating files around? I'm intrigued by this and now thinking I should start doing it. Just start with a clean slate for 2026 and see how I go.

I have a git setup and I commit once a week, but don't currently push it anywhere. I do want to install a git server on my home server at some point, as I don't intend to push my financial data to any of the SaaS git offerings.

Re: 10 years of personal finances in plain text files

#189
post #157

Earlier quoted context omitted.

I have my electricity bills tracking into a KWH commodity. It has been... effectively useless :D.

You may be able to convert it to CO2 emissions to track your impact :) but for that you'd also need to track how those kWh of electricity were produced ^^

Ooh hmm that's an interesting idea. I have wanted a reason to buy an Emporia Vue or something like that.

Re: 10 years of personal finances in plain text files

#190

Earlier quoted context omitted.

I have my electricity bills tracking into a KWH commodity. It has been... effectively useless :D.

How do you do this? I am just getting into hledger and am curious about tracking this kind of stuff to see how much we would really save with a different electric supplier.

In my case (with beancount) an example transaction looks like:

  2025-12-04 * "CON ED OF NY CECONY 251203~ Tran: ACHDW"
    Assets:Schwab:Checking                                                                       -72.33 USD
    Expenses:Utilities:Electric:Supply:Rate                                                      143.00 KWH @@ 18.06 USD ; Supply 143.00 kWh @12.629¢/kWh
    Expenses:Utilities:Electric:Supply:Fees                                                        0.68 USD             ; Supply Merchant Function Charge
    Expenses:Taxes:Other                                                                           0.45 USD             ; Supply GRT & other tax surcharges
    Expenses:Taxes:Sales                                                                           0.86 USD             ; Supply Sales tax @4.5%
    Expenses:Utilities:Electric:Delivery:Service                                                  21.95 USD             ; Delivery Basic service charge
    Expenses:Utilities:Electric:Delivery:Rate                                                    143.00 KWH @@ 25.08 USD ; Delivery 143.00 kWh @17.539¢/kWh
    Expenses:Utilities:Electric:Delivery:Fees:Benefit                                            143.00 KWH @@ 0.71 USD ; Delivery System Benefit Charge @0.497¢/kWh
    Expenses:Taxes:Other                                                                           2.29 USD            ; Delivery GRT & other tax surcharges
    Expenses:Taxes:Sales                                                                           2.25 USD            ; Delivery Sales tax @4.5%

which I extract from the PDF bill I get from them.
Post reply on HN