No, I actually meant experiment_booking_algorithm. Here, in the source code: https://bitbucket.org/blais/beancount/src/e18ee90ebdd52b26d7a1b5ba2c0460c485bb804e/src/python/beancount/parser/options.py?at=default&fileviewer=file-view-default#options.py-457
On Sun, Oct 16, 2016 at 10:56 AM, Budric Bundy <bud...@gmail.com> wrote: > The "experimental_booking_algorith" still wouldn't work, so I did some > grepping on the source and the option is: "experiment_booking_method". > That seems to work great. Thanks. > > > On Fri, Oct 14, 2016 at 9:20 PM, Martin Blais <bl...@furius.ca> wrote: > >> On Fri, Oct 14, 2016 at 8:43 PM, <bud...@gmail.com> wrote: >> >>> When trying to use the book_algorithm option, I get an error: Invalid >>> option: 'booking_algorithm' . >>> I installed beancount from repository (hg id shows 5e2dcbfc81b1) using >>> pip install. Not sure what I'm doing wrong. >>> >>> The head of beancount file verbatim is: >>> ;; -*- mode: org; mode: beancount; coding: utf-8; fill-column: 400; -*- >>> option "title" "Trading" >>> option "operating_currency" "CAD" >>> option "booking_algorithm" "FULL" >>> >>> 2016-01-01 open Assets:Broker:Cash CAD >>> 2016-01-01 open Equity:OpeningBalance CAD >>> 2016-01-01 open Assets:Broker:ABC ABC "FIFO" >>> 2016-01-01 open Income:Broker:PnL CAD >>> >> >> Sorry I meant "experimental_booking_algorithm." >> I was leaping ahead, I'm in the process of normalizing that and making it >> "booking_algorithm". >> >> >> >>> >>> In some accounts I don't need to report capital gains so I'm very happy >>> to use LIFO or FIFO approach strctly for personal record keeping of >>> profit/loss. So if I could get the booking_algorithm working that solves >>> half of my problems. >>> >>> For other accounts subject to capital gains in Canada I need to keep >>> track of "Adjusted" cost. First type of adjustment is averaging the price >>> of stock when you buy more (http://www.adjustedcostbase.c >>> a/blog/how-to-calculate-adjusted-cost-base-acb-and-capital-gains/ >>> although this formula includes broker fees in the cost adjustment I think >>> it all still works out if I record those fees separately as Expense). >>> >> >> Okay, this gets a bit more hairy. Two things: >> >> 1. This corresponds to holding positions at average cost. Beancount will >> _eventually_ support an "AVERAGE" method which will do exactly that: before >> and after any reduction of an inventory (a reduction is a sale, a trade), >> all the existing lots for that currency will be merged and the cost >> averaged. This should cover the case of Canada. >> >> 2. However, reducing by the expenses / fees / commission cannot currently >> be done at that time. The best way to do that will be to post-process the >> trades and distribution the fees at the moment of sale. This would allow >> one to deduct the correct portion of the fee for the subset of stock sold >> (this is the correct calculation AFAIK). For example, if you buy 100 shares >> and pay an $8 fee, selling 40 shares should deduct $3.20 from the P/L. >> >> This would have to be done with some custom code. Currently I deal with >> this once / year in calculating wash sales with a custom script, which you >> can find under experiments (it's unlikely to just be reusable, last year I >> didn't have the full booking method implemented yet and I had to hack a >> kludge in order to get the dates on each lot carried through; at this >> moment, with the FULL method, the dates are always attached and next year >> tax season I'll have this in the main branch). >> >> In other words, if you really care about correct calculation of fees, >> you'll have to write at least some code, because I haven't yet made that >> reusable. This is the bad news. The good news is that the data is there and >> there's Python, so if you do care... it's doable. >> >> >> >>> Other types of cost adjustments involve return of capital by an exchange >>> traded fund (ETF) (http://www.adjustedcostbase.c >>> a/blog/return-of-capital-and-how-it-affects-adjusted-cost-base/) which >>> decreases the cost basis uniformly for all units owned, and reinvested >>> distribution which increases the cost basis uniformly accross all units >>> owned (http://www.adjustedcostbase.ca/blog/phantom-distributions-a >>> nd-their-effect-on-adjusted-cost-base/). >>> >> >> That's different. How you handle a cost basis adjustment is by "selling" >> the entire lot and replacing it in the same transaction, carrying the >> original date manually, e.g. >> >> 2013-08-01 * "Purchase" >> ... >> >> 2015-04-03 * "Cost basis adjustment" >> Assets:Investments:XSP -235 XSP {45.32 CAD} >> Assets:Investments:XSP 235 XSP {48.23 CAD, 2013-08-01} >> >> Maintaining the original date is done on the augmenting lot (the posting >> with +235 above) by providing an explicit date. The default is to attach >> the date of the transaction. I have a few of those in my own file; this >> works. >> >> >> >> I'm trying to figure out a way to keep track of the adjustments above in >>> dual-entry ledger in general, and in beancount in particular. >>> 2015-01-01 * "Opening Balance" >>> Assets:Broker:Cash 1000 CAD >>> Equity:OpeningBalance -1000 CAD >>> >>> 2015-01-01 * "Purchase abc" >>> Assets:Broker:Cash -1100 CAD >>> Assets:Broker:ABC 100 ABC {11.0 CAD} >>> >>> 2015-01-02 * "Purchase abc" >>> Assets:Broker:Cash -1000 CAD >>> Assets:Broker:ABC 100 ABC {10.0 CAD} >>> >>> 2015-01-02 * "Return of capital (1 cent per share)" >>> Assets:Broker:ABC -100 ABC {10 CAD) >>> Assets:Broker:ABC -100 ABC {11 CAD) >>> Assets:Broker:ABC 100 ABC {10.50 CAD} >>> >> >> Yes but I'd put one of the two dates above. >> >> >>> >>> 2016-01-11 * "Selling some ABC" >>> Assets:Broker:ABC -100 ABC {10 CAD} ; this can be {*} >>> or nothing when FIFO works? >>> Assets:Broker:Cash 500.05 CAD >>> Income:Broker:PnL >>> >> >> You can leave it as {} if you use the FULL booking algorithm, and it will >> apply the default booking method for that account. The default booking >> method is "STRICT" which fails when the list of matching lots is ambiguous >> (and "{}" selects all existing lots, so you have two); using "FIFO" will >> simply select the old lots. >> >> I hope this helps, >> >> >> >> >>> Thanks for any suggestions. >>> >>> On Friday, October 14, 2016 at 7:00:12 PM UTC-4, Martin Blais wrote: >>>> >>>> On Fri, Oct 14, 2016 at 4:58 PM, <bud...@gmail.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> Thank you for writing beancount as well as exellent documentation in >>>>> terms of introduction to accounting and beancount as a software package. >>>>> I >>>>> have read several of them like Getting Started Guide, Trading with >>>>> Beancount, Cookbook. I still have a few questions as I'm coming to grips >>>>> with using the software effectively. >>>>> >>>>> Is there a way to define default currency so I don't have to enter it >>>>> beside a very large portion (over 50%) of entries? >>>>> >>>> >>>> Beancount does not have a concept of "default currency". >>>> >>>> >>>> When selling stocks, is there a quick way to generate credit entries >>>>> for the stocks with their book vaule? For example if I purchase a stock >>>>> 10 >>>>> times, 20 stocks at a time, when I want to record the sale of 181 units I >>>>> need to track down all previous purchases to figure out book value of >>>>> each, >>>>> and type 10 with book value in {}. What's the quickest way to make this >>>>> type of entry? If there's an "automatic" way to express this in beancount >>>>> language assume I don't care how stocks are picked - LIFO or FIFO. >>>>> >>>> >>>> Yes; see the booking_algorithm to FULL and make the default booking >>>> method on those accounts to e.g. "FIFO". Like this: >>>> >>>> option "booking_algorithm" "FULL" >>>> >>>> ... >>>> >>>> 2015-01-01 open Assets:JTrade:MSFT MSFT "FIFO" >>>> >>>> The new, "FULL" booking algorithm (as opposed to the older "SIMPLE", >>>> inferior one) will become the default at some point hopefully soon (I >>>> started to make that happen earlier this week but I still need to port a >>>> number of unit tests over to it). >>>> >>>> >>>> >>>>> I need to calculate adjusted cost base in some cases when selling >>>>> stock. >>>>> >>>> >>>> "Adjusted" is a heavily overloaded term. Could you be more specific? >>>> >>>> >>>> >>>>> Does anyone have any suggestions on the most effective way to do ths? >>>>> For example can you help me write a query/report to generate book value >>>>> for >>>>> each purchase trade, since the last time stock count was 0. The reason I >>>>> had 0 in there is for example if I purchase 5 stock, sell 5 stock, >>>>> purchase >>>>> 10 stock, then another 10. I'm only interested in the last 2 transactions >>>>> for this calculation, the fact that I previously had 5 stock at some price >>>>> is not relevant to current ACB calculation. >>>>> >>>> >>>> If you had this pattern, after the sale of 5 you'd have an empty >>>> inventory. Sales further on could only match on more recent purchases. >>>> >>>> Tell us what ACB calculation you'd expect and we can help. >>>> >>>> Once the booking_algorithm will be "FULL" by default I plan to >>>> automatically add metadata to link buy/sell pairs so you can easily produce >>>> lists of trades by any period. >>>> >>>> >>>> >>>> Thank you. >>>>> >>>>> >>>>> >>>>> -- >>>>> 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 beancount+...@googlegroups.com. >>>>> To post to this group, send email to bean...@googlegroups.com. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/beancount/cb10e18b-6711-48 >>>>> e6-b301-5ebe8131080f%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/beancount/cb10e18b-6711-48e6-b301-5ebe8131080f%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 beancount+unsubscr...@googlegroups.com. >>> To post to this group, send email to beancount@googlegroups.com. >>> To view this discussion on the web visit https://groups.google.com/d/ms >>> gid/beancount/9b828ca0-2ea1-4fad-8530-5d399c904780%40googlegroups.com >>> <https://groups.google.com/d/msgid/beancount/9b828ca0-2ea1-4fad-8530-5d399c904780%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 a topic in the >> Google Groups "Beancount" group. >> To unsubscribe from this topic, visit https://groups.google.com/d/to >> pic/beancount/VdK8VCFPHLI/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> beancount+unsubscr...@googlegroups.com. >> To post to this group, send email to beancount@googlegroups.com. >> To view this discussion on the web visit https://groups.google.com/d/ms >> gid/beancount/CAK21%2BhNvb%3DRFO9CX%2B0%3D3%3DDatmzviJLceJmn >> OBKkSUNVRLpv0jw%40mail.gmail.com >> <https://groups.google.com/d/msgid/beancount/CAK21%2BhNvb%3DRFO9CX%2B0%3D3%3DDatmzviJLceJmnOBKkSUNVRLpv0jw%40mail.gmail.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 beancount+unsubscr...@googlegroups.com. > To post to this group, send email to beancount@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/beancount/CADH3QDhtorgxVohXVZbw0FqX3Xyp1fe2n5gY6rtRr8tWc%2BWA6Q% > 40mail.gmail.com > <https://groups.google.com/d/msgid/beancount/CADH3QDhtorgxVohXVZbw0FqX3Xyp1fe2n5gY6rtRr8tWc%2BWA6Q%40mail.gmail.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 beancount+unsubscr...@googlegroups.com. To post to this group, send email to beancount@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhMkXyeK_OPdOFSvOotfFO0iy4xKxQcJhCUmfqM2Z7Y4gA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.