My understanding is that plugins cannot help Beancount parse entries, so what I was hoping to do was use comments or tags to "activate" a custom plugin and pass it relevant information, for particular postings. What I've found is that tags can't be associated with postings and comments aren't available to plugins. Is there an option I'm overlooking?
What am I trying to do?
Well, for any stock trade, I want to record *all* the information provided to me by my broker: share count, share price, and transaction amount. Beancount only allows me to record share count and any one of price or amount. Additionally, I want my plugin to replace the posting with a posting where one of the three values is calculated using the other two, based on a parameter attached to the posting (or preferably the account).
Thanks,
- Harpreet "Eli" Sangha
My understanding is that plugins cannot help Beancount parse entries,
so what I was hoping to do was use comments or tags to "activate" a custom plugin and pass it relevant information, for particular postings. What I've found is that tags can't be associated with postings and comments aren't available to plugins. Is there an option I'm overlooking?
What am I trying to do?
Well, for any stock trade, I want to record *all* the information provided to me by my broker: share count, share price, and transaction amount. Beancount only allows me to record share count and any one of price or amount.
Additionally, I want my plugin to replace the posting with a posting where one of the three values is calculated using the other two, based on a parameter attached to the posting (or preferably the account).
Thanks,
- Harpreet "Eli" Sangha
--
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/CAKU2X8Y0X%2Bvr%2BVP9jDYOKWjBjZW-kOp%3DrUjBgaDO%3D24NQo2axw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
On Thu, Nov 20, 2014 at 12:50 PM, ELI <eli...@gmail.com> wrote:My understanding is that plugins cannot help Beancount parse entries,
Not yet, but I have sketched a plan to make all directives (except Transactions) definable via plugins. Down the very very long road, all directives could be defined by plugins eventually. The plugin would provide a definition of expected data types, to be validated by the parser in Python.so what I was hoping to do was use comments or tags to "activate" a custom plugin and pass it relevant information, for particular postings. What I've found is that tags can't be associated with postings and comments aren't available to plugins. Is there an option I'm overlooking?
What you want is support for metadata. Here's what I have in mind: I will add support for metadata objects (LISP style, as an attached dict of arbitrary objects) on all transactions and postings. The metadata would be accessible via the Python data structures for you to build custom reports or whatever, and also usable from the SQL interface. There would otherwise be no other semantics associated with it--it would be there for you to use, as extensions (it would support strings, numbers, amounts (number + currency), currency, date, data types.Now, where is it at? Well, I have already built a prototype that defines a nice syntax and parses the metadata (see branch "metadata"). I haven't yet done the complete work to make it attached to the objects. What I can _quickly_ do is give you parsing capability by merging my branch and this would allow you to immediately start entering all the data in your input file. Attaching the metadata requires some not-so-difficult changes, yet changes that would impact a fair bit of the codebase, so I would rather do that later in a second step.Would this work for now?
What am I trying to do?
Well, for any stock trade, I want to record *all* the information provided to me by my broker: share count, share price, and transaction amount. Beancount only allows me to record share count and any one of price or amount.
The share count, share price and transaction amounts should already be on your transactions. You can place _both_ cost and price on a single posting (but you don't have to):2014-05-02 * "Sell stock"Assets:US:Investments:GOOGL -10 GOOGL {606.12 USD} @ 545.37 USDAssets:US:Investments:Cash 5453.70 USDIncome:CapitalGains
Note that you may also already use the "link" feature to attach other infos, e.g. a document filename:2014-05-02 * "Sell stock" ^2014-05-02.schwab.pdfAssets:US:Investments:GOOGL -10 GOOGL {606.12 USD} @ 545.37 USDAssets:US:Investments:Cash 5453.70 USDIncome:CapitalGainsAdditionally, I want my plugin to replace the posting with a posting where one of the three values is calculated using the other two, based on a parameter attached to the posting (or preferably the account).
Can you provide a use case? What I think you may be trying to do sounds like it might be better done as a reporting function. The Inventory object has functions to extract number of units, cost, average cost, and market value, that you can use. Let me know what your desired output is.
This also makes me think of an idea I've had for a plugin: a plugin that further verifies that the sum of postings EXCLUDING postings on Income accounts balance to the sum of the postings' "weight" but where the values of postings held-at-cost are calculated using the price instead of the cost value. This would provide yet another check that the input data is calculated correctly, but I'm not sure it's super general yet. It would be an optional feature you could enable through a plugin. Right now, prices on postings held-at-cost are ignored for the purpose of balancing, but they're inserted in the price database (they translate into a Price directive). Is this what you have in mind?
If it's 13.867, then I'd record your purchase as 4.622379 since that's
what you got and Vanguard just didn't show all digits.
If it's 13.866, you may think you got 4.622379 but in reality you got
4.622 due to rounding. Vanguard may say the price is 49.60 USD but
due to rounding what you paid is really 49.6040675...
I don't know anything about VTSAX or US-based Vanguard funds, but at
least in the UK the fraction you can own is usually limited to a
certain digit... so assuming you can only own a fraction with 3 digits
(e.g. 4.622 and next is 4.623), your $229.27 will only get you 4.622
because 4.623 would have cost $229.30.
- Harpreet "Eli" SanghaOn Thu, Nov 20, 2014 at 12:58 PM, Martin Blais <bl...@furius.ca> wrote:On Thu, Nov 20, 2014 at 12:50 PM, ELI <eli...@gmail.com> wrote:My understanding is that plugins cannot help Beancount parse entries,
Not yet, but I have sketched a plan to make all directives (except Transactions) definable via plugins. Down the very very long road, all directives could be defined by plugins eventually. The plugin would provide a definition of expected data types, to be validated by the parser in Python.so what I was hoping to do was use comments or tags to "activate" a custom plugin and pass it relevant information, for particular postings. What I've found is that tags can't be associated with postings and comments aren't available to plugins. Is there an option I'm overlooking?
What you want is support for metadata. Here's what I have in mind: I will add support for metadata objects (LISP style, as an attached dict of arbitrary objects) on all transactions and postings. The metadata would be accessible via the Python data structures for you to build custom reports or whatever, and also usable from the SQL interface. There would otherwise be no other semantics associated with it--it would be there for you to use, as extensions (it would support strings, numbers, amounts (number + currency), currency, date, data types.Now, where is it at? Well, I have already built a prototype that defines a nice syntax and parses the metadata (see branch "metadata"). I haven't yet done the complete work to make it attached to the objects. What I can _quickly_ do is give you parsing capability by merging my branch and this would allow you to immediately start entering all the data in your input file. Attaching the metadata requires some not-so-difficult changes, yet changes that would impact a fair bit of the codebase, so I would rather do that later in a second step.Would this work for now?Sure this works for me. I also wouldn't mind getting my hands dirty and living on a branch that incorporates with work-in-progress for the purpose of evaluating and providing feedback/contributions.
What am I trying to do?
Well, for any stock trade, I want to record *all* the information provided to me by my broker: share count, share price, and transaction amount. Beancount only allows me to record share count and any one of price or amount.
The share count, share price and transaction amounts should already be on your transactions. You can place _both_ cost and price on a single posting (but you don't have to):2014-05-02 * "Sell stock"Assets:US:Investments:GOOGL -10 GOOGL {606.12 USD} @ 545.37 USDAssets:US:Investments:Cash 5453.70 USDIncome:CapitalGainsDoesn't the above syntax imply that stock bought at 606.12 USD/GOOGL is being sold at 545.37 USD/GOOGL. What I mean to record is, for example, how many shares my broker reported that I sold, the price they were reportedly sold at, and the reported amount of the total transaction:2014-05-02 * "Sell stock"Assets:US:Investments:GOOGL -10 GOOGL @ 545.37 USD @@ 5,453.70 USDAssets:US:Investments:Cash 5453.70 USD
Note that you may also already use the "link" feature to attach other infos, e.g. a document filename:2014-05-02 * "Sell stock" ^2014-05-02.schwab.pdfAssets:US:Investments:GOOGL -10 GOOGL {606.12 USD} @ 545.37 USDAssets:US:Investments:Cash 5453.70 USDIncome:CapitalGainsAdditionally, I want my plugin to replace the posting with a posting where one of the three values is calculated using the other two, based on a parameter attached to the posting (or preferably the account).
Can you provide a use case? What I think you may be trying to do sounds like it might be better done as a reporting function. The Inventory object has functions to extract number of units, cost, average cost, and market value, that you can use. Let me know what your desired output is.The use case is for brokerages that allow the purchase of fractional shares, and purchases are made by specifying a dollar amount as opposed to a number of shares.2014-09-23 * "Dividend"Assets:Vanguard:Taxable:Mutual-Fund +4.622 VTSAX @ 49.60 USD @@ 229.27 USDAssets:US:Investments:Cash -229.27 USDThe "truth" of the transaction is that Vanguard purchased 229.27 USD for me in fund that cost 49.60 USD, and acquired 4.622379 shares, but reported it as 4.622 shares. Thus, the goal would be to enter into the bean file these above values that came from my statement, but to tell my plugin to replace this posting with one where the number of shares is calculated by the transaction amount divided by the price per share (229.27/49.60).
This also makes me think of an idea I've had for a plugin: a plugin that further verifies that the sum of postings EXCLUDING postings on Income accounts balance to the sum of the postings' "weight" but where the values of postings held-at-cost are calculated using the price instead of the cost value. This would provide yet another check that the input data is calculated correctly, but I'm not sure it's super general yet. It would be an optional feature you could enable through a plugin. Right now, prices on postings held-at-cost are ignored for the purpose of balancing, but they're inserted in the price database (they translate into a Price directive). Is this what you have in mind?I'm not entirely sure I understand this, maybe you can tell me if it relates based on my description above.
* ELI <eli...@gmail.com> [2014-11-20 13:54]:
> 2014-05-02 * "Sell stock"
> Assets:US:Investments:GOOGL -10 GOOGL @ 545.37 USD @@ 5,453.70 USD
> Assets:US:Investments:Cash 5453.70 USD
FWIW, I remember asking a few years ago if this was possible in ledger
(it wasn't). For some reason, I thought it was a good idea to record
both the share price quoted for one share and the total price (the two
aren't always exactly the same due to rounding).
However, I'm no longer sure there's much value in that. For all
intends and purposes, the total price you paid is what matters and the
price for one share is realy total/quantity and not whatever share
price was quoted.
What I do is to add the share price as a comment just to make it more
readable:
Assets:Pension 35.3414 "World ex UK" @@ 288.28 GBP ; @ 8.1570 GBP
> 2014-09-23 * "Dividend"
> Assets:Vanguard:Taxable:Mutual-Fund +4.622 VTSAX @ 49.60 USD @@ 229.27
> USD
> Assets:US:Investments:Cash -229.27 USD
>
> The "truth" of the transaction is that Vanguard purchased 229.27 USD for me
> in fund that cost 49.60 USD, and acquired 4.622379 shares, but reported it
> as 4.622 shares. Thus, the goal would be to enter into the bean file these
> above values that came from my statement, but to tell my plugin to replace
> this posting with one where the number of shares is calculated by the
> transaction amount divided by the price per share (229.27/49.60).
Are you sure you received 4.622379 shares and not 4.622 shares?
In other words, if you do this transaction three times, does Vanguard
report 13.866 or 13.867 VTSAX? (4.622 * 3 = 13.866; 4.622379 * 3 =
13.867137).
If it's 13.867, then I'd record your purchase as 4.622379 since that's
what you got and Vanguard just didn't show all digits.
If it's 13.866, you may think you got 4.622379 but in reality you got
4.622 due to rounding. Vanguard may say the price is 49.60 USD but
due to rounding what you paid is really 49.6040675...
I don't know anything about VTSAX or US-based Vanguard funds, but at
least in the UK the fraction you can own is usually limited to a
certain digit... so assuming you can only own a fraction with 3 digits
(e.g. 4.622 and next is 4.623), your $229.27 will only get you 4.622
because 4.623 would have cost $229.30.
* Martin Blais <bl...@furius.ca> [2014-11-20 15:58]:
> Can you provide a use case?
I still haven't tried beancount, but since you're looking for use
cases, I have a use case relaed to custom data that ledger doesn't
support. I hope beancount will.
http://bugs.ledger-cli.org/show_bug.cgi?id=1042
The basic idea is that I want to be able to use a meta tag as the
account, so I can run queries on it.
I just had a call with Vanguard. They track holdings to 4 decimal places internally.
How I would apply this to my plugin, in the absence of native support:
- Record shares transacted, price per share, and transaction amount as reported on my statement (if for no other reason, for bookkeeping and my OCD).
- Add meta data to my Vanguard account that tells the plugin to calculate the number shares transacted to 4 decimal places.
- Have the plugin modify the posting with one that uses a calculated share count and the specified price per share.
Replacing this:
- Harpreet "Eli" Sangha
> I just had a call with Vanguard. They track holdings to 4 decimal places internally.
Thanks for calling Eli!
So this solves some of our problems, we can simply enter the data to four decimal places. We just have to find some way to get it without having to do any calculations.
How I would apply this to my plugin, in the absence of native support:
- Record shares transacted, price per share, and transaction amount as reported on my statement (if for no other reason, for bookkeeping and my OCD).
- Add meta data to my Vanguard account that tells the plugin to calculate the number shares transacted to 4 decimal places.
- Have the plugin modify the posting with one that uses a calculated share count and the specified price per share.
Replacing this:
2014-09-23 * "Investment"Assets:US:Investments:VIIIX +3.532 VIIIX @ 188.74 USD @@ 666.67 USDAssets:US:Investments:VEMPX +2.031 VEMPX @ 164.14 USD @@ 333.33 USDAssets:US:Investments:Cash -1,000.00 USDWith this:2014-09-23 * "Investment"Assets:US:Investments:VIIIX +3.5322 VIIIX @ 188.74 USDAssets:US:Investments:VEMPX +2.0308 VEMPX @ 164.14 USDAssets:US:Investments:Cash -1,000.00 USDIncome:RoundingGain -0.01 USD
2014-09-23 open Assets:US:Investments:Cash
2014-09-23 open Assets:US:Investments:VEMPX
2014-09-23 open Assets:US:Investments:VIIIX
2014-09-23 * "Investment"
Assets:US:Investments:VIIIX +3.5322 VIIIX @ 188.74 USD
Assets:US:Investments:VEMPX +2.0308 VEMPX @ 164.14 USD
Assets:US:Investments:Cash -1,000.00 USD
However, if you want to accumulate all the crumbs (Nathan Grigg, another Googler, recently came up with an idea) automatically adding the remainders to a configurable Equity:Rounding account and I agreed to do that. You wouldn't have to add a posting manually.
If you really want to add rounding postings _explicitly_ only for particular accounts, you could do that with a plugin you write.
Would this work for now?Sure this works for me. I also wouldn't mind getting my hands dirty and living on a branch that incorporates with work-in-progress for the purpose of evaluating and providing feedback/contributions.Thanks Eli,Right now, that branch would be "metadata" but it's massively out-of-date and I'll just update it and merge it in. It should be harmless to merge into default once I update it, I just have to add a few unit tests for it.
> I just had a call with Vanguard. They track holdings to 4 decimal places internally.
Thanks for calling Eli!
So this solves some of our problems, we can simply enter the data to four decimal places. We just have to find some way to get it without having to do any calculations.
On Fri, Nov 21, 2014 at 2:07 PM, ELI <eli...@gmail.com> wrote:How I would apply this to my plugin, in the absence of native support:
- Record shares transacted, price per share, and transaction amount as reported on my statement (if for no other reason, for bookkeeping and my OCD).If you really want the total amount recorded separately from the cash deposit (it'll be redundant most of the time) you could attach it as metadata, or stash it in the narration.
- Add meta data to my Vanguard account that tells the plugin to calculate the number shares transacted to 4 decimal places.
You wouldn't need to do that. If you enter four decimal places, it'll just work, no plugin required.
- Have the plugin modify the posting with one that uses a calculated share count and the specified price per share.
Replacing this:
2014-09-23 * "Investment"Assets:US:Investments:VIIIX +3.532 VIIIX @ 188.74 USD @@ 666.67 USDAssets:US:Investments:VEMPX +2.031 VEMPX @ 164.14 USD @@ 333.33 USDAssets:US:Investments:Cash -1,000.00 USDWith this:2014-09-23 * "Investment"Assets:US:Investments:VIIIX +3.5322 VIIIX @ 188.74 USDAssets:US:Investments:VEMPX +2.0308 VEMPX @ 164.14 USDAssets:US:Investments:Cash -1,000.00 USDIncome:RoundingGain -0.01 USDYes, but you don't need the RoundingGain posting: the sum of those transactions is 1000.00294 USD which is within the accepted tolerance (currently 0.01, but eventually will be automatically inferred from the "1,000.00" number see as 0.005 (half of the last digit's precision).This currently checks:2014-09-23 open Assets:US:Investments:Cash
2014-09-23 open Assets:US:Investments:VEMPX
2014-09-23 open Assets:US:Investments:VIIIX
2014-09-23 * "Investment"
Assets:US:Investments:VIIIX +3.5322 VIIIX @ 188.74 USD
Assets:US:Investments:VEMPX +2.0308 VEMPX @ 164.14 USD
Assets:US:Investments:Cash -1,000.00 USD
However, if you want to accumulate all the crumbs (Nathan Grigg, another Googler, recently came up with an idea) automatically adding the remainders to a configurable Equity:Rounding account and I agreed to do that. You wouldn't have to add a posting manually.
* Martin Blais <bl...@furius.ca> [2014-11-21 15:17]:
> See the example unittests under beancount.parser.parser_test.TestMetaData
> for syntax.
> (This is just a preliminary syntax proposal, we can always review later.)
Does this mean tags are not possible or would you simply give an empty
value (e.g. test:).
One more example: a lot of my trips are for my employer, so I don't
pay for them, but I earn the points. So there's absolutely no
justification for tracking the amount spent on a flight or hotel in my
ledger, but sometimes I wonder what the average spend per point is and
for that having the price in some meta info would be useful.
I don't know if these examples make sense to you, but for me there's
value in separating the financial transaction from additional
information about the transaction. Yet, sometimes I want to run
queries over this non-financial info.
> What you could eventually do in Beancount is write a plugin that
> transforms the postings by copying the days from the metadata into
> new postings (or perhaps even replacing the ones that are there) and
> then use the usual aggregation methods to produce your reports.
Yes, this sounds like what I want. I'm not familiar with the
beancount architecture, but my concern when I hear the word "plugin"
is that everyone will write custom plugins for everything instead of
having generic plugins that everyone can use and are shipped as part
of beancount. I believe my request could be met in a generic plugin
that would be useful to others.
I'm not sure if the question of official plugins shipped with
beancount vs unofficial ones has been discussed already.
* Martin Blais <bl...@furius.ca> [2014-11-21 15:11]:
> However, if you want to accumulate all the crumbs (Nathan Grigg, another
> Googler, recently came up with an idea) automatically adding the
> remainders to a configurable Equity:Rounding account and I agreed to do
> that. You wouldn't have to add a posting manually.
Will this feature be optional?
Just so I understand this fully.
Let's say I buy 35.3414 units of AAA for 8.1570 each at a total of 288.28
If I say 35.3414 @ 8.1570 with this feature turned on, will you store
this internally as 288.2797998 and then always tell me that the cost
of one unit was 8.1570?
Whereas if I say 35.3414 @ 8.1570 with this feature turned off, it
will store 288.28 internally as the cost, showing a unit price of
8.157005664744464?
Is this how it will work?
I wonder which one I'd prefer. I've started tracking fund purchases
as the total price with @@ since I feel that what I actually paid is
what matters and not some fictional unit price quoted (i.e. the 8.1570
quoted rather than the 8.157005664744464 I actually paid).
Then again, I like the simplicity of 8.1570 :-)
Actually, I'm wondering if I misunderstood. Maybe it will show the
same results in both cases but only in one is something posted to
Equity whereas in the other it's posted nowhere. But this cannot be
true as things would stop balancing at some point.
- Harpreet "Eli" Sangha
On Fri, Nov 21, 2014 at 12:11 PM, Martin Blais <bl...@furius.ca> wrote:> I just had a call with Vanguard. They track holdings to 4 decimal places internally.
Thanks for calling Eli!
So this solves some of our problems, we can simply enter the data to four decimal places. We just have to find some way to get it without having to do any calculations.
On Fri, Nov 21, 2014 at 2:07 PM, ELI <eli...@gmail.com> wrote:How I would apply this to my plugin, in the absence of native support:
- Record shares transacted, price per share, and transaction amount as reported on my statement (if for no other reason, for bookkeeping and my OCD).If you really want the total amount recorded separately from the cash deposit (it'll be redundant most of the time) you could attach it as metadata, or stash it in the narration.Yeah, I'd be happy keeping a record of "what the statement said" as metadata or even a comment. I prefer to have it somewhere accessible to plugins to quench my scripting whims. :-)
In the example below, though, where the share count is going to be calculated because the statement doesn't give the true precision, isn't the total for each investment *needed* since the cash portion dosn't indicate how much was allocated to each fund?
- Add meta data to my Vanguard account that tells the plugin to calculate the number shares transacted to 4 decimal places.
You wouldn't need to do that. If you enter four decimal places, it'll just work, no plugin required.The problem is I don't have visibility on fourth decimal place.
Regarding the last piece on which there seems to be a misunderstanding between you and I, let me provide an standalone example, outside the context of the plugin. Since Vanguard only makes three decimal places of precision available me, I need to have the actual share count calculated from the price and transaction amount.For example, I have a transaction on my activities page with these details:Shares Transacted: 0.000Share Price: 48.62Amount: 0.02
The only way to enter this transaction and have it balance would be to manually calculate the Shares Transacted with four decimal places of precision. My preferred way of entering this would be to enter the Share Price and Amount and have Beancount calculate Shares Transacted to a precision associated with my Vanguard account. Additionally, as metadata, I'd record "Shares Transacted: 0.000" as history of "what the statement said".
Maybe you can give me your thoughts on how such a case would be addressed with planned Beancount features or as a plugin I could right?
Thanks,- Harpreet "Eli" SanghaOn Sat, Nov 22, 2014 at 11:51 AM, Martin Blais <bl...@furius.ca> wrote:I absolutely don't mind at all, on the contrary. Questions are a sign that people are using it and are interested. There are no bad questions IMO. I expect the number of questions to grow over time, and there are still a few rough edges to polish, and it gives me motivation to finish things that aren't as fun as say, computing portfolio returns.On Fri, Nov 21, 2014 at 10:22 PM, ELI <eli...@gmail.com> wrote:Awesom! Thanks! I hope to eventually provide useful feedback and contributions. I hope you don't mind putting up with my questions in the mean time. :-)- Harpreet "Eli" SanghaOn Fri, Nov 21, 2014 at 12:17 PM, Martin Blais <bl...@furius.ca> wrote:Would this work for now?Sure this works for me. I also wouldn't mind getting my hands dirty and living on a branch that incorporates with work-in-progress for the purpose of evaluating and providing feedback/contributions.Thanks Eli,Right now, that branch would be "metadata" but it's massively out-of-date and I'll just update it and merge it in. It should be harmless to merge into default once I update it, I just have to add a few unit tests for it.I just updated and merged branch "metadata" into default.See the example unittests under beancount.parser.parser_test.TestMetaData for syntax.(This is just a preliminary syntax proposal, we can always review later.)
--
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/CAKU2X8ZZTTUtnMDP9bWAqFc6snjESef%2B014sUnbp6wUbT3nbdg%40mail.gmail.com.
Alright, some more data points about this:- I looked at my Vanguard history, and the data I imported from the OFX download includes up to 6 digits of precision. I have numbers like "48.701290" in them. So I think the full precision data is definitely available for download. You just need to download the OFX format. Let me know if your downloads don't contain the precision, I can produce more precise and specific download instructions (there are many options).
- But... because I don't have the average cost booking syntax yet, I have been living with the fees transactions like the one you described as commented out, and the balance checks also commented out. So I figured I'd test out my data and uncomment those imported-but-so-far-commented-out transactions and make necessary changes to the code to allow summing positive and negative balances, and at least the number of units on the balances should assert correctly, even if there is a mix of positive and negative lots.So I disabled the balance checks that Beancount applies by commenting out code, which essentially allows a mix of positive and negative units in the same inventory. This results in a model similar to how Ledger accumulates positions.I'm happy to report that over my two years of data, uncommenting all the fees transactions and balance assertions, all the balance checks pass (!). This gives me a very warm and very fuzzy feeling that my input data is correct :-) Also, it validates the method and the fact that you can easily automate the process of importing transactions from Vanguard (those are for me pretty much fully automated, I never need to edit those, I used the OFX importer from LedgerHub).
- The inventory booking proposal for average booking won't be implemented in the next few weeks... I'm tempted to think that maybe I should provide a way to disable the strict balance checks in the interim. This way we could enter the transactions without matching lots strictly... at least all the data would be present and the balance checks would work. Would people think it's a good idea? I would do this by extending the default value for the type of booking is intended to take place (as in the inventory proposal) and add a new value for it, i.e,. in addition to STRICT, FIFO, LIFO, AVERAGE, AVERAGE_ONLY, I would add NONE. I would use the proposed syntax extension for the Open directive, e.g.2014-08-84 open Assets:US:Vanguard:VIIPX VIIPX "NONE"This also means that you could setup all your accounts to remove all inventory booking, which results in a booking method similar to Ledger (no checks and no errors), by setting the default value for it, like this:option "booking_method" "NONE"This could appeal to those who would like less checks, like Ledger, or who are converting their Ledger ledgers to Beancount.Down the road, the inventory booking would use that and implement all methods, but for now, only the balance check would consult that value and disable the check if the default booking method is "NONE". I think I could easily hack that in in a few hours.What do you think? Opinions?
- The inventory booking proposal for average booking won't be implemented in the next few weeks... I'm tempted to think that maybe I should provide a way to disable the strict balance checks in the interim. This way we could enter the transactions without matching lots strictly... at least all the data would be present and the balance checks would work. Would people think it's a good idea? I would do this by extending the default value for the type of booking is intended to take place (as in the inventory proposal) and add a new value for it, i.e,. in addition to STRICT, FIFO, LIFO, AVERAGE, AVERAGE_ONLY, I would add NONE. I would use the proposed syntax extension for the Open directive, e.g.2014-08-84 open Assets:US:Vanguard:VIIPX VIIPX "NONE"This also means that you could setup all your accounts to remove all inventory booking, which results in a booking method similar to Ledger (no checks and no errors), by setting the default value for it, like this:option "booking_method" "NONE"This could appeal to those who would like less checks, like Ledger, or who are converting their Ledger ledgers to Beancount.Down the road, the inventory booking would use that and implement all methods, but for now, only the balance check would consult that value and disable the check if the default booking method is "NONE". I think I could easily hack that in in a few hours.What do you think? Opinions?Sounds like a useful option to me.