On Thu, Jan 5, 2017 at 11:54 PM, Martin Blais <[email protected]> wrote:
> On Thu, Jan 5, 2017 at 12:09 PM, Christopher Singley <[email protected]> > wrote: > >> Hi, I'm writing some accounting applications in Python, and thereby >> stumbled upon beancount. >> >> It occurs to me that you might be interested in my OFX parser: >> >> https://github.com/csingley/ofxtools >> >> It handles a pretty decent subset of the OFX spec, it handles OFX >> versions 1 & 2, and it has no dependencies beyond stdlib. >> > > Thanks for the link. > Looks nice. > > One of the example importers in beancount.ingest does OFX. However, it's > not intended to be a full-fledged OFX thing... it's really just a good > example of how to build a custom importer with some basic and admittedly > sloppy OFX parsing. Ideally people would use something like your library. > > > I'm investigating using beancount as an accounting engine...human-readable >> text files are great. >> >> The main focus of my present work is booking investment transactions from >> data downloads, and from reading your document "Trading with Beancount" I'm >> wondering if it's a good fit. >> > > It's good for personal finance level work. If you're a day trader and are > pumping 20+ trades/day, you'll probably want to make something more > specialized, that takes into account time and that has specialized P/L > reporting. As an example, I use it to track my own portfolio with perhaps > 20 trades/month, across 3-4 accounts, some pre-tax/retirement, some active, > including occasional currency trading/hedging, so not "active" but also a > fair bit more than most people's retirement-only activity. > BTW, while you do your exploration, this comparison of Ledger & Beancount might be useful: https://docs.google.com/document/d/1dW2vIjaXVJAf9hr7GlZVe3fJOkM-MtlVjvCO1ZpNLmg/ The TL;DR is that Ledger doesn't attempt to book reducing lots against specific positions. Furthermore, it doesn't distinguish between currency exchange and positions with a cost basis. Tracking of cost basis is therefore quite limited. AFAIK HLedger repeats those same design choices (though I haven't looked for a while). The way Beancount handles this is mostly explained in this recently written document: https://docs.google.com/document/d/11a9bIoNuxpSOth3fmfuIFzlZtpTJbvw-bPaQCnezQJs/ In short, these are the salient differences in terms of investment tracking. One feature I want add soon is the ability to list trades (for sure before tax time). With changes I made late last year it will be very easy to add this, but I'm tidying up docs and incomplete branches in order to bake a numbered release before I do much else. Also, an example of an investment-related custom application is the listing of information for wash sales, which I do here with a custom script: https://bitbucket.org/blais/beancount/src/397e821a48c5db2700a8a66868c5d4e68ca19bfb/experiments/washsales/?at=default It's not generalized so much yet, I should probably document it better so others can use it. The problem I'm solving with that is that I have some probably incorrectly booked cost basis adjustments from previous years (I book it pessimistically, choosing the worst case for me) because the actual calculation from the IRS is defined ambiguously, and I need to track the adjusted basis of various lots I chose in the past years for future sales. The information isn't available anywhere else, I need to track it carefully for accurate reporting. There's also other fun stuff under experiments/ Have you ever solved the problem of preserving lot opening dates through >> various reorganizations (splits, mergers, spinoffs, basis reductions, >> etc.)? In general, assets can be booked in with an opening date different >> than the transaction date, and it doesn't appear that beancount handles >> that. >> > > Yes. > I've done splits and cost basis adjustments, no problem. > Right now the way to do this is to empty the lot (like you're selling it) > and in the same transaction replace it on another posting. > The replacement lot can accept a date override, which gets carried on the > new lot. > You put the date in the {...} cost specifier. > There's no check that the date matches the other lot... you could put any > date you want, so be careful. > Otherwise, by default, an augmenting lot acquires the date of its > transaction. > > For splits, the current methodology is to keep the same symbol. An > alternative would be to automatically generate appropriate symbols > internally and have some sort of syntax to indicate that the symbol's > "version number" has moved on, but I haven't done work on that yet, nor do > I feel it's a great hindrance so far. The price database does, on the other > hand, have wonky kinks when that happens. > > I don't know about mergers and spinoffs, but I presume the same technique > would work. > > Hope this helps, > > > > > Thanks, >> Chris >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Beancount" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> To view this discussion on the web visit https://groups.google.com/d/ms >> gid/beancount/af40974c-cd6f-4155-a4ea-5d533d4f47b2%40googlegroups.com >> <https://groups.google.com/d/msgid/beancount/af40974c-cd6f-4155-a4ea-5d533d4f47b2%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhMuh6nynKtZh1cD4zjYwVYgT_y6K%3D1SKS_-OK54hnD1zw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
