Hi,
I ran into a new obstacle while dealing with my crypto:
Because of the eight digits most cryptocurrencies can be divided into, I had to add a default EUR tolerance:
option "inferred_tolerance_default" "EUR:0.001"
E.g.:
option "booking_method" "FIFO"
plugin "beancount.plugins.auto_accounts"
option "inferred_tolerance_default" "EUR:0.001"
2020-07-01 * "" "Buy XRP"
Assets:Cash:Binance -200.00 EUR
Assets:Crypto:XRP:Binance 1,000 XRP {0.2 EUR} @ 0.2 EUR
2020-07-15 * "" "Buy XRP"
Assets:Cash:Binance -214.158 EUR
Assets:Crypto:XRP:Binance 428.3171498 XRP {0.5 EUR} @ 0.5 EUR
The second transaction will fail without the option.
Then I tried to book a transfer manually:
option "booking_method" "FIFO"
plugin "beancount.plugins.auto_accounts"
option "inferred_tolerance_default" "EUR:0.001"
2020-07-15 * "" "Buy XRP"
Assets:Cash:Binance -214.158 EUR
Assets:Crypto:XRP:Binance 428.3171498 XRP {0.5 EUR} @ 0.5 EUR
2020-07-30 * "" "Buy XRP"
Assets:Cash:Binance -200.00 EUR
Assets:Crypto:XRP:Binance 2,000 XRP {0.1 EUR} @ 0.1 EUR
2020-07-31 * "" "Transfer"
Assets:Crypto:XRP:Coinbase-Pro 428.3171487 XRP {0.5 EUR, 2020-07-15} ; reduced by 0.00000011 XRP Assets:Crypto:XRP:Coinbase-Pro 2,000.00000000 XRP {0.1 EUR, 2020-07-30}
; transaction fee leg missing, therefore unbalanced by 0.00000011
The transaction has an assumed fee of 0.00000011 XRP.
I saved the file while creating the transaction. I noticed that beancount didn't yield a warning/error that the transaction doesn't balance, although I didn't add all legs to the transaction and the numbers didn't add up.
That's because of the EUR tolerance. If I delete the line
option "inferred_tolerance_default" "EUR:0.001"
beancount yields me an error because of the incomplete transaction, but then again also for the first transaction.
To sum it up: Without the tolerance option beancount yields me a lot of unbalanced transaction errors where the (real) EUR amounts are off by a tiny fraction of cents. But with the tolerance option set beancount seems to ignore unbalanced crypto lots up to the third decimal digit. E.g.: I could cap the XRP amount to:
2020-07-31 * "" "Transfer"
Assets:Crypto:XRP:Coinbase-Pro 428.317 XRP {0.5 EUR, 2020-07-15}
Assets:Crypto:XRP:Coinbase-Pro 2,000 XRP {0.1 EUR, 2020-07-30}
And there's no warning/error.
If the same kind of problem could occur with BTC the capped 0.0001498 units would sum up to 3,45€.
How can I deal with that?
Regards