Here is a start at gathering budgeting-related resources.
- hledger > balance > Budget report, hledger's built-in periodic budget report
- Budgeting and forecasting, a older introduction to these (written for hledger 1.5 in 2018)
- https://github.com/simonmichael/hledger/tree/master/examples/budgeting, annotated examples of journals implementing budgets
- plaintextaccounting.org: Budgeting, more budgeting-related docs, for all PTA tools
- The YNAB (YouNeedABudget) way: Age Your Money
- Some other budgeting tools for comparison: https://github.com/Kickball/awesome-selfhosted#money-budgeting-and-management
<sm> two commands that are roughly equivalent: ledger budget --add-budget expenses, hledger balance --budget -E expenses <sm> they show both budgeted and unbudgeted accounts
--budget has no effect on single-column reports, it requires a reporting interval --budget INTERVAL enables all periodic transactions with that interval; these can be date-limited --budget hides all non-budgeted subaccounts; can be depth-limited more
<sm> there's different ways to do budgeting [16:46] <sm> let me try to count them [16:50] <sm> "envelope budgeting" is analogous to having a set of envelopes containing cash for different purposes. You can model the "envelopes" with a. real-world accounts (eg your bank lets you create arbitrary savings accounts), b. virtual (imaginary) subaccounts of a real-world account (eg your checking account), c. virtual accounts "off to the side" (budget:*) <sm> also you can do the transfers to and from these manually, or generate them with automated posting rules <sm> "goal budgeting" (best name I can come up with) involves setting some inflow/outflow goals per account per period, and then measuring how the actual flows compare with the goals. balance --budget provides this report <sm> I think that's 7 ways
Also search for budgeting links at http://plaintextaccounting.org . You'll see two main approaches discussed:
"envelope budgeting" - sounds more like what you've been doing. Based around explicitly allocating money for each purpose. Good for managing > cashflow. Requires more journal entries. Can be done entirely manually (1a) but many docs advise using automatic posting rules to assist (1b). Many > different ways to handle the details. Requires more thinking.
the other kind ("report-based budgeting" ?). Based around a special budget report provided by Ledger/hledger, which uses periodic transaction > rules to set budget goals. Automatic posting rules might be useful here too, I'm not sure. Provides less enforcement, requires less work. Fewer ways > to do it, perhaps provides simpler/clearer reports.
I often find "budgeting" covers/touches on quite a lot of topics:
- setting earning/spending goals,
- reviewing performance against those goals,
- controlling earning/spending based on the goals,
- allocating funds for short term expenses,
- allocating funds towards savings goals,
- updating allocated funds as transactions occur,
- reallocating funds/balancing the budget,
- end of period actions (roll over ? reset ?),
- forecasting cash balances and managing cashflow,
- forecasting income/expenses...
- create a
time.journalwhich includes your (timedot or timeclock) time log file (assuming you're not tracking time in journal format)
# time.journal include time.timedot
- choose a budget interval, eg daily, weekly or monthly
- if you have some historical timelog data, review average spending on that interval to get a baseline
$ hledger -f time.journal date:thisyear bal -WA
- in time.journal add a periodic transaction rule to allocate budget amounts, similar to baseline, on that interval
~ weekly (adm:time) 1h (ser:some:proj) 4h
- run a budget report, using the same interval:
$ hledger -f time.journal bal --budget -W Balance changes in 2017/11/27w48: || 2017/11/27w48 ===============++=================== adm:time || 0.25h [25% of 1h] ser:some:proj || 0.75h [19% of 4h] ---------------++------------------- || 1.00h
From https://news.ycombinator.com/item?id=19203521, summary of my 2018-2019 time budgeting workflow:
I keep a hledger timedot file open in a hot-key drop-down iTerm window. Each 15-minute chunk is logged with a dot. I group dots into hours for > quick visual scanning.
2019-01-08 fos.hledger.sup . adm.email .. adm.finance .... .... .. fos.plaintextaccounting . fos.hledger.issues.941 .... . has-res ... biz-res ..
I've trained myself to update this often while at the computer, and before walking away. Delayed retroactive logging is also pretty easy. Working in quarter/half/whole hour chunks, and in rhythm with the clock, and having a pane showing recent sleep/wake/timelog-saved events, all help. Not every day is the same; this system has been quick and flexible enough to suit a range of conditions. I can set daily/weekly/monthly time budgets if I want. Some more details at .