Thanks for your thoughts @zako.
- I have around 1100-1200 transactions per year. I thought hledger and emacs to manage the journal file smoothly, I should have to split per year. I have 6 years in hledger. Perhaps it is not necessary...
For 6 years, probably not. When it reaches 20 years.. or when you want to analyse 100 years of historical data..
I could split less often than yearly, but I feel it's better to do it somewhat regularly and get good at it.
- I use subaccounts for lot management (for example,
assets:stocks:amz:2022-01-13-01
). Lots are created and deleted and so hledger's accounts. Every year, when I create a new journal file, I do not declare accounts I do not use anymore. If I had only one journal file, I would have declared a lot of accounts I do no use currently. Perhaps de beancount's solution would be great...
I do the same, redeclaring each year's accounts from scratch. This means increasing duplication of account declarations as time goes on. It's easy enough though.
And, it allows me to include old data from times when the Chart Of Accounts was substantially different, without forcing me to maintain a consistent COA over all time. This flexibility has drawbacks, but I think it's the only scalable way - anticipating future COA needs generally is not practical, and rearranging old data into newer COAs could be risky (I do it a bit with aliases).
- To avoid modifying the accounting of previous years. But VCS such as git solve this and hledger's assertions at the end of the year could be used to avoid mistakes.
Yees.. except if you want to fix/rearrange/clean up old entries, then you will be changing those balance assertions as well. For me, such cleanups and assertion updates happen fairly often..
Handicaps:
- More complex interanual reports. You need to include multiple files. Sometimes you need to exclude the yearly closing and opening transactions to get valid reports (for example with hledger-roi).
Yes. I use clopen:NEWYEAR
tags to match and exclude them - all but the first. A little awkward.
- More complex to begin with a new journal file at the begining of the year.
Splitting files requires setting up starting balances in the new file, yes. And closing AL(E) balances in the old file is another step (optional). Both of these should be fairly easy with hledger close
though - I wonder if you're using that ? My main problem with it is not using it often enough to remember all details (so I script it in a Justfile, but still there's a bit of relearning each year..)
Many times I need to look at the previous journal to copy similar transactions, they are not in the new file. This also affects the autocomplete capabilities of emacs.
Yes. I sometimes include
the previous year, which makes the extra autocompletions available for hledger (i)add, and (maybe?) also for ledger-mode (Or, just having the old file open in Emacs does that.. I am using ledger-mode's and dabbrev-expand). It's not as convenient as being able to search back through all history in the same buffer. (Conversely, it's easier to jump to the start of the current year without getting lost in ancient data..)
- More complex to batch editing/modifying the journal. Sometimes, I need to rename one account or move one subaccount. This is easily done with REGEX in one file but with multiple files is more complex/tedious.
Lately I have been getting brave and using sed -i '/OLD/NEW/' 2*/*.journal
(and reviewing the effect with magit or vs code or git diff) whenever possible. This has been a huge time saver, I should have started doing it sooner.
So, at the end I am closing books because of performance and account cleaning. Perhaps it is senseless... What do you think?
I have a bit of the same feeling at times. It certainly feels tedious when you find errors in some long-past year and then you have to regenerate all subsequent closing/opening entries.
I would like to try a combined balance assignment/balance assertion (balance assumption ? balance assernment ?) that works as a balance assignment when it's the first transaction seen in an account or a balance assertion otherwise. This would make the closing balances transactions unnecessary, at least.
Related: hledger#2151