4 ms·
I can really recommend doing this for your personal finances! Tools like ledger are really powerful, and properly accounting is a great way to save on money. I
by OskarS 6y ago
I can really recommend doing this for your personal finances! Tools like ledger are really powerful, and properly accounting is a great way to save on money. I can very easily go into my personal ledger and (say) get a report on "How much money did i spend daily on groceries last month" or "List all subscription services i pay for and how much they cost each month" or whatever. It gives you a great view into where your money is going and helps you plan for the future. It's very satisfying to run the command "ledger reg -Mn Assets Liabilities", which is "show me my net wealth (i.e. the sum of Assets and Liabilities) for every month in the ledger", and see your personal wealth grow over time.
But almost more importantly: if you're a programmer, it's really very fun! Like, i have my own system where I download my bank statement as a CSV and process it in AWK together with an org-mode table of payees that map each line on the bank statement to an account, which then generates a ledger file. Since it's just you using it, you can make it so it works however you like, and it quite satisfying to see it all come together.
It's also a great way to learn about accounting. Turns out, I really kinda like accounting! It has many of the same pleasures of programming or math, and seeing everything balance is very satisfying. In short: if you're a programmer who feels like they haven't quite got a handle on their finances, I can't recommend plain text accounting highly enough.
- gen220 6y agoI think myself and many others could have written the same comment. I’ll add that it’s also delightfully easy to get started. As an application, Accounting is kind of like Vim or Excel or other tools with steep learning curves and nirvana at the end of them. You can start by just tracking one bank account by hand which is easy enough and fun, because you’re still learning how this accounting thing works. Pretty soon you’ll be tracking your investments, ISOs, taxes, credit card points, and so on as absurdum. You’ll be the person who finds the bug in your employer’s W-2 generator... It’s a steep time investment, but once you’ve written the automations, it’ll take you maybe 30 minutes each month. And you’ll never experience the feeling of “not being in control” of your finances again.
- wasdfff 6y agoDo banks have anything you can use to automate getting data off their websites? My annoyances lie in generating the csv files. My checking account outputs an arbitrary range of dates, however many transactions fit on pg 1, while my credit card from the same bank outputs csvs by billing cycle. It makes it a little annoying going into the bank website and generating these files across relevant date ranges.
- gen220 6y agoIn my experience (USA), most banks will give you the option of downloading a CSV for the last two years of transactions. Beyond that, it’s a challenge. Some investment brokers will only give you PDFs with tables in them. But there are some pretty amazing libraries for converting these into CSVs, that have worked well for me. Some people use plaid, but I didn’t like the idea of introducing a middleman-dependency. What I’ve been doing over time is downloading all of the raw transaction history I can get, and storing it in a git repo. Each month when I “top it off”, I just use git add -p to add only the latest bits. The most annoying part is when they change their CSV format on you (Chase did this recently) and you need to reformat all of your historical data to match.
- sundarurfriend 6y ago> Do banks have anything you can use to automate getting data off their websites? There's an Open Financial Exchange (OFX) standard that's supposed to be for this, I think. I came across it when someone mentioned the ledger-autosync [1] tool that tries to use it to get your data from your bank automatically. If I understand correctly (no guarantee on that), this automation would work for institutions listed here [2]. [1] https://github.com/egh/ledger-autosync https://github.com/egh/ledger-autosync [2] http://www.ofxhome.com/index.php/home/directory/successfulRequests http://www.ofxhome.com/index.php/home/directory/successfulRe...
- jonathanoliver 6y agoI just got started using the ofxget command in the ofxtools package. It was a simple "pip install --user ofxtools". After that, I read some of the docs for ofxget and configured these with the settings from ofxhome.com and I've got automated ability to pull in my transactions for credit cards, checking accounts, and even long-term investment accounts. It's really cool to interact at this low level because there's so much control compared to QuickBooks/Quicken.
- EvanAnderson 6y agoBesides having a solid payoff for your personal finances, a 100-level knowledge of bookkeeping and accounting, I'd argue, confer near "super powers" when it comes to dealing with finance and accounting people. Bookkeeping is one of the oldest and longest-practiced IT disciplines. Your work probably touches revenue / expenses for your employer and someday you'll need to interface with accounting or finance people. Being able to speak the language, even poorly, has helped me gain trust and credibility that I don't believe speaking only in IT terms would have.
- gen220 6y agoBig plus one. Especially if your software work is even remotely finance-adjacent. The moment I start talking in terms of liabilities, virtual accounts, etc. their eyes light up! Incidentally, Accounting and Software have a lot in common. They both build and apply abstractions to the "real world" (flipping-bits), in order to give the abstraction-wielder more power and insight.
- bradleybuda 6y agoI took this course about three years ago (which, coincidentally, starts today!) and I completely agree - a basic knowledge of bookkeeping is an incredibly handy skill in all sorts of real-world situations: https://www.coursera.org/learn/wharton-accounting https://www.coursera.org/learn/wharton-accounting
- zenlot 6y agoMost of the Coursera courses "starts today". Check tomorrow, you'll still see the same message.
- tsjq 6y agoHow do they manage it possible ?
- deathtrader666 6y ago
- mikepurvis 6y ago> How much money did i spend daily on groceries last month Can you expand on this slightly? One of my frustrations with personal finance tools that I have tried in the past is that they're really bad at modelling occasional expenses— for example as a low-car family, we only fuel our vehicle once every 4-5 weeks, so some months the "gas budget" goes unused, whereas other months if we take a trip, we'll completely blow the gas budget because we fuel up twice or three times. I wish it were possible to "smooth" those kinds of expenses into an average daily amount, but also have a way of indicating that a particular chunk of them should actually be extracted from the smoothing and assigned to a different category altogether (eg, the gas used on the trip should go to "vacations", not "vehicle"). A similar thing applies with other bursty things like home repair expenses, where I'd like my Home Depot receipts amortized over a time period that I specify rather than counted right at the moment of purchase.
- davchana 6y agoI use a spreadsheet, two adjacent columns, one for incoming, one for spending. The column pair is titled as Gas, Registration, Repair. I look back at 1 year history, average those per paycheck, put money in each column from each paycheck. I minus them when I spend. Each row starts with the dare of transaction.
- smichael 6y agoI had the same wish, you might be interested in https://github.com/simonmichael/hledger/blob/master/bin/hledger-smooth.hs https://github.com/simonmichael/hledger/blob/master/bin/hled... However, reporting average expenses is easy, and sometimes enough..
- gen220 6y ago> modelling occasional expenses I would say it's very hard to budget for bursty things on a monthly cadence. You can have a "virtual account" for this stuff, that fills on months with little activity and drains on months with more activity. But this is kind of complicated and might not be worth it. I'd try answering the question: what is your goal in budgeting for gas, for example? Is it to keep gas spending under control? Or to understand how much you spend on gas? And if you want to understand, why? Budgeting is a solution to some answers to these questions, but not all of them. Personally, I find it more useful to track these things, than to budget them, if that makes sense. For example, I want to know how much I spent on rental cars in 2020, because that impacts our decision to lease a car in 2021. > a way of indicating that a particular chunk of them should actually be extracted from the smoothing and assigned to a different category altogether In GNU Ledger, you can apply arbitrary categories to each expense, and you can also "tag" line-items. For example, if you think 80% of your last refill was from a trip, you can do as follows: 20201/01/12 * Chevron Expenses:Travel:Car:Gas $16.00 ; :vacation: Expenses:Travel:Car:Gas $4.00 ; :commuting: Liabilities:CreditCards:AppleCard $-20.00 You can then do queries to see which of your gas came from commuting, and which came from vacation. You can remove vacation from your reports altogether, and you can also focus exclusively on each vacation. You can even tag vacations, if you so choose. ; :vacation:lasvegas2021: > amortized over a time period that I specify rather than counted right at the moment of purchase You can achieve this behavior by specifying "effective dates" for certain purchases. For example, when I buy plane tickets, I like to amortize the cost of that ticket over each day I'm at my destination (similar to your home depot example). 2020/01/11 * American Airlines ; three-day trip to Colorado Expenses:Travel:Plane $80.00 ; [=2020/02/01] Expenses:Travel:Plane $80.00 ; [=2020/02/02] Expenses:Travel:Plane $80.00 ; [=2020/02/03] Liabilities:CreditCards:Apple $240.00 The dates in the comment are called "Effective dates". You can ask for reports to be presented with either effective dates or transaction dates, at query-time. Note that the credit card payment's effective date is identical to the transaction date. Let me know if you have any further questions! It's a fun topic.
- npsimons 6y agoI used to used GNUCash heavily with double-entry bookkeeping; nowadays I use org-tables' spreadsheets functionality. I've also done a bit of tax calculation using CL, and always meant to look into ledger, and it sounds like it might fit the flexibility requirements I have come to (ab)use in org-mode.
- tarsinge 6y agoI agree with the fun part. I found this to be a nice intro to the concepts of double entry accounting: https://martin.kleppmann.com/2011/03/07/accounting-for-computer-scientists.html https://martin.kleppmann.com/2011/03/07/accounting-for-compu... Previous HN submission : https://news.ycombinator.com/item?id=2298471 https://news.ycombinator.com/item?id=2298471
- corytheboyd 6y agoI’ve been waiting for the perfect reason to start running my finances like I run the other things I enjoy, and this might be it. If I can make it fun, I think I could stick to it. I’ve tried some of the apps and... I just don’t get enough out of them to warrant throwing that much of my sensitive data at them for free... in fact summarizing it here makes it sound insane. Thank you kind hacker news commenter for sharing your wisdom :)
- OskarS 6y agoThis is another excellent reason for using ledger: you are in total control of your financial data. It’s just text-files, you don’t have to share them with any service, they are not in some weird binary format, and you can use standard tools like git to work with them if you want. You can also collect all the information from every financial service you interact with (banks, credit unions, credit card companies, brokerages, whatever) in one place and get reports on all of them at the same time. It’s the bee’s knees!
- chrislloyd 6y agoI've found being "fun for programmers" to be undervalued. Using Ledger is fun, which has caused me to spend more time thinking and understanding my personal finances which have in turn improve my personal finances. I haven't cared as much using less hackable tools.
- uryga 6y agosame! apparently i tricked myself into caring about my finances in this exact way
- js2 6y ago> properly accounting is a great way to save on money The submitted page links back to a previous discussion on HN: https://news.ycombinator.com/item?id=12119050 https://news.ycombinator.com/item?id=12119050 Funny enough the top comment on that discussion concludes: > I now focus my efforts on income expansion rather than cost control. Some of you may say, recording costs is not controlling it. In that case, I find accounting, even less useful (once I have arrived at approximate cash outflow). Income expansion, puts me in a different frame, which I find strangely empowering. Even more so than the satisfaction that comes from having controlled costs.