What you're describing sounds great and I completely agree with you. I didn't mean to imply that I wouldn't replace forecasted entries with "real" ones when they occur, just that I'd like to avoid continuously fiddling with forecasted entries themselves.
I look forward to such a feature and it will definitely be one of the reasons for me to keep Beancount in mind. - Harpreet "Eli" Sangha On Nov 17, 2014 10:07 AM, "Martin Blais" <[email protected]> wrote: > On Mon, Nov 17, 2014 at 12:54 PM, Harpreet Sangha <[email protected]> > wrote: > >> I'm curious to know how people use Ledger for paycheck budgeting and >> forecasting... >> >> Ideally, I'd like to enter my paycheck as an itemized, recurring >> transaction with each posting in the form of a expression that allow >> calculating how much to deposit into account based it's YTD balance. This >> would be useful, for example, with taxes for which withholding amounts vary >> based on YTD earnings and retirement contributions that have YTD maximums. >> >> To my knowledge, achieving this with automatic transactions is not >> possible, but I'm optimistic that it can be achieved, if necessary, with >> embedded python scripts. Before I go down that road, though, I'd like to >> know what other, more experienced users of Ledger do. My goal, as the the >> subject suggests, is to allow me to budget and forecast. >> >> The obvious "simple" solution seems to be to simply manually enter known >> future transaction, taking the tax withholding and retirement contributions >> into consideration. This approach, however, requires manual maintenance of >> each and ever forecasted transaction when factors change (i.e. bonus pay >> differs from estimated amount, W-4 change, contributions change, etc.). >> >> I look forward to any feedback. Thanks in advance! >> > > I'm not doing this yet with Beancount, but I have built a tiny tiny > proof-of-concept prototype for forecasting: > > https://bitbucket.org/blais/beancount/src/52298ff27387eb8359bedb8a5d0274990ec5354b/src/python/beancount/plugins/forecast.py?at=default > > I think the essential features to build are: > > - Building in some way to express the frequency of future transactions. > This may require some coding (or a simple expression language built on top > of existing Python calendaring code to say, e.g., "every two weeks starting > on the 7th"). > > - Automatically ignoring past history when it is updated, that is, the > code that adds the forecast should automatically figure out the final date > for which matching transactions already exist, and only add transactions in > the future > > - It should be possible to enable/disable the forecast transactions easily > (more easily than commenting out the entries that define them) to generate > reports both with and without them. > > I believe we should recognize that automated transactions are always > approximate, and should never be used to replace "real" history. Historical > transactions nearly always have some amount of small variation that you > need to enter manually. This means that one should always be able to enter > or import real history "over" automatic transactions and that > auto-generated transactions should automatically get out of the way where > real history appears. The last "up-to-date" date of real imported history > can be figured out by looking at the date of the last posting or balance > assertions on key accounts. This is the lens I'm using when looking at > automated transactions for forecasting. In my view, automated transactions > that mix in with real history (as an input convenience) are a distinct type > of feature, and I don't see much of a use case for them (it's unrealistic). > > (As for budgeting, that's a separate topic...) > > -- > > --- > You received this message because you are subscribed to the Google Groups > "Ledger" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- --- You received this message because you are subscribed to the Google Groups "Ledger" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
