scauligi / refried

A collection of plugins and scripts for beancount and fava.
GNU General Public License v3.0
42 stars 7 forks source link

General clarifications #5

Open hunner opened 3 years ago

hunner commented 3 years ago

Hello, as a long-time YNAB user and a newcomer to beancount, this is a great set of plugins a extensions! I love the familiar fava page. I had a few questions as I shift my few-years-worth of transactions (2017-2021) over to beancount and refried.

Thanks for making these plugins, and thanks for any help as I learn this :).

scauligi commented 2 years ago

Awesome, thanks for checking my plugins out! It's been a bit busy for me recently, but hopefully you're still interested in using these plugins.

Should the Income:ToBeBudgeted account basically always be zero?

Basically yes: It should be zero if you've budgeted all your income; if you want to enforce that you've budgeted absolutely everything then you can use that zero balance assertion. I usually don't though, since I always leave future-budgeted income unallocated until just before the month starts.

Is it best just to create a throw-away budget for the sum totals on the previous month?

If I understand your question, then yeah, a throw-away budget to get the available balances where you want them would probably be the easiest route. I imported all of my monthly budgets along with my transactions when I moved to beancount, so I never really worked anything out for this.

I have transactions that moves money between two tracking accounts...

So I'll be honest, I never got around to including my tracking accounts in my beancount ledger, so I still haven't ironed out how I want transfers between on- and off-budget accounts to work.

Right now, rebudget requires that on-budget accounts form a closed system, so all on-budget postings must balance separately from the off-budget postings. So if you transfer money between two off-budget accounts, the leftover expense either has to be an off-budget expense itself (you need to declare Expenses:Crypto:Fees as an off-budget expense account, or have a sub-account like Expenses:Crypto:Fees:Off-Budget to help with getting a combined report).

Alternatively, if you want to keep the fee on-budget, then the amount needs to be reflected in another on-budget account (this is kind of a kludge though):

2021-07-17 * "Bought 0.00150338 BTC for $50.00 USD"
  Assets:Coinbase:USD                         -50.00 USD ; Off-budget
  Assets:Coinbase:BTC                           0.00150338 BTC {31934.71} ; Off-budget
  Expenses:Crypto:Fees                          1.99 USD ; On-budget
  Assets:Crypto:Fees                           -1.99 USD ; fake on-budget account to capture the reduction in budgetable money
  Equity:Tracking                               1.99 USD ; fake off-budget account to balance out the transaction

Assets:Crypto:Fees could also be a Liabilities: depending on how you want to think of it. Or, if you don't actually want to reduce your budgetable money, you could have it be an Income: account and then just re-budget the money again in a separate transaction. I don't think I would recommend any of these practices though; in my opinion, if you're moving money between off-budget accounts, then you should keep the fees in off-budget expense accounts. After all, you're spending money you haven't actually budgeted anywhere.

Although, if you have other suggestions, I'm happy to hear them!

hunner commented 2 years ago

It should be zero if you've budgeted all your income; [...] I always leave future-budgeted income unallocated until just before the month starts.

I bet this would play nicely with effective_date postings as the TBB would still remain zero until the target date, and if I have a balance entry for that date, it will still remain zero. I'll try that sometime.

I never got around to including my tracking accounts in my beancount ledger, so I still haven't ironed out how I want transfers between on- and off-budget accounts to work.

I think your tracking tag still made normal on-and-off-budget entries with two legs pretty easy, once I figured out how to make it work; like this:

2020-01-02 * "FIDELITY    INVESTMENT311219 / Investments"
  Assets:Chase:Checking                      -100.00 USD
  Assets:Fidelity:Checking                    100.00 USD
    tracking: Expenses:Investments:Fidelity

I wanted to track the fees just for a P&L perspective, but perhaps that's all I need... track the fees as tracking accounts since I've already budgeted for the expense via the tracking tag. (More below)

you should keep the fees in off-budget expense accounts

That worked nicely. I guess I was thinking incorrectly about budgeting for the fees; I was actually budgeting for the original total outflow as described above, and the fees budget on top of that would be double-counting.

Right now, rebudget requires that on-budget accounts form a closed system, so all on-budget postings must balance separately from the off-budget postings.

This made several things click for me. I was having the hardest time balancing my "budget reset" entry for when I wanted to start having accurate refried budgets, as either the entry was balanced, or the tracking/budget check was balanced, but I couldn't get both at the same time until I noticed I was using income from on-budget accounts to budget for tracking accounts without counting the transfer. It might be nice if I wrote a "budget reset" plugin than can zero-balance all budget categories from a given TBB category for like YNAB "fresh starts" and for people like me who didn't import YNAB csvs :).

A question I have now: tracking expenses show up on the Budget tab, but it seems like they shouldn't? If my tracking expenses accumulate, I don't think I would need to balance them? To balance them I would have to pull money from ... where? Equity? Maybe I don't understand this well enough yet.