New issue 230: cost of inventory needs to take tolerance rounding into account
https://bitbucket.org/blais/beancount/issues/230/cost-of-inventory-needs-to-take-tolerance

Martin Michlmayr:

Let's say I buy 10.01 of some share (GB00B80QFW04 in this case) at a price of 
3.382 GBP each.  10.01 * 3.382 = 33.85382.  I'm charged 33.85 GBP for it.  Due 
to inferred_tolerance_default, the transaction balances.

Ok, so we know that I paid 33.85 GBP.  Let's repeat this transaction 3 times 
(as separate transactions).  I know I paid 33.85 * 3 = 101.55.

I now sell the 10.01 * 3 for 4.00 GBP each, or 30.03 * 4 = 120.12

I made a gain of 120.12 - 101.55 = 18.57

beancount correctly shows that I spent 101.55 for all purchases (Assets:Cash1 
in the example below) and that I gained 120.12 in the sale (Assets:Cash2).  But 
it says that the capital gain was -18.56 rather than -18.57

This is because the cost of the inventory doesn't take into consideration the 
rounding that took place.  There should be some way for this to be taken into 
account, e.g. through an option that sets a flag.  I think bean-count should 
retain 3.382 as the cost instead of calculating the "true" cost (after 
rounding) of 33.85 / 10.01 = 3.381618381618382 simply because users should 
still be able to refer to the lot with 3.382 as the price.  But if the flag is 
set, it should calculate 3.381618381618382 when actually using the cost.  
(Maybe with an option)

Another approach would be to store both the cost per share and the total cost 
(i.e. 3.382 per share, but 33.85 as the total rather than 33.85382), but it 
seems Martin doesn't like this approach. (Personally, I like it.)

BTW, while not the same this is related to issue #194 (about specifying total 
cost with @@).

Example:

```
option "inferred_tolerance_default" "GBP:0.01"

2018-01-01 open Assets:Investments
2018-01-01 open Assets:Cash1
2018-01-01 open Assets:Cash2
2018-01-01 open Income:CapitalGains

2018-03-08 * "Bought GB00B80QFW04 (HSBC FTSE All Share Index)"
    Assets:Investments           10.01 GB00B80QFW04 {3.382 GBP, "lot1"}
    Assets:Cash1                -33.85 GBP

2018-03-08 * "Bought GB00B80QFW04 (HSBC FTSE All Share Index)"
    Assets:Investments           10.01 GB00B80QFW04 {3.382 GBP, "lot2"}
    Assets:Cash1                -33.85 GBP

2018-03-08 * "Bought GB00B80QFW04 (HSBC FTSE All Share Index)"
    Assets:Investments           10.01 GB00B80QFW04 {3.382 GBP, "lot3"}
    Assets:Cash1                -33.85 GBP

2018-03-10 * "Sold GB00B80QFW04 (HSBC FTSE All Share Index)"
    Assets:Investments          -30.03 GB00B80QFW04 {3.382 GBP} @ 4.00 GBP
    Assets:Cash2                 120.12 GBP
    Income:CapitalGains
```

bean-query:

```
beancount> SELECT account, units(sum(position)), cost(sum(position)) GROUP BY 1;
      account       units_sum_p cost_sum_po
------------------- ----------- -----------
Assets:Cash1        -101.55 GBP -101.55 GBP
Assets:Cash2         120.12 GBP  120.12 GBP
Assets:Investments                         
Income:CapitalGains  -18.56 GBP  -18.56 GBP
beancount> 
```


-- 
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/20180311004237.19634.47523%40celery-worker-106.ash1.bb-inf.net.
For more options, visit https://groups.google.com/d/optout.

Reply via email to