On 19/07/23 00:12, Eric Altendorf wrote:
I seem to not understand how tolerances are used.  I have this beancount:

   1 2018-01-01 open Assets:Alpha:ABC ABC
   2 2018-01-01 open Assets:Beta:ABC ABC
   3
   4 2018-01-02 * "synthesize a position with zero cost basis"
   5   Assets:Alpha:ABC        1.0 ABC {0.00 USD}

This is not a valid transaction. All transactions needs to have at least two postings. It is a fundamental requirement of double entry accounting.

   6
   7 2018-01-03 balance Assets:Alpha:ABC 1.0 ABC  ;; Assertion passes
   8
   9 2018-01-04 * "Transfer from alpha to beta"
  10   Assets:Alpha:ABC    -0.1 ABC
  11   Assets:Beta:ABC      0.1 ABC
  12
  13 2018-01-05 balance Assets:Alpha:ABC 1.0 ABC  ;; Does not fail!
  14
  15 2018-01-06 * "Transfer from alpha to beta"
  16   Assets:Alpha:ABC    -0.5 ABC
  17   Assets:Beta:ABC      0.5 ABC
  18
  19 2018-01-07 balance Assets:Alpha:ABC 1.0 ABC  ;; Does fail.

I can't get the balance assertion on line 13 to fail.

This is because the inferred tolerance on the ABC commodity is 0.1. If you want the tolerance inference algorithm to infer a lower tolerance, you need to write your numbers with more decimal digits. If you write them with two decimal digits, the balance assertion correctly fails.

  I've tried both the "inferred_tolerance_default" option and the "Explicit Tolerances on Balance Assertions" (e.g., "~ 0.00001 ABC").

How did you test this? Specifying an explicitly tolerance correctly triggers the balance assertion for me. "inferred_tolerance_default" is not relevant here because the ledger contains enough data to derive a tolerance (although it is not the one you expect).

Cheers,
Dan

--
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/beancount/738a382a-2b20-639a-f676-a4179833b07a%40grinta.net.

Reply via email to