On Mon, Jan 4, 2021 at 10:40 AM Peter <[email protected]> wrote:
> To be frank, I think I don't fully understand your reply to the problem.
>
Just showing how to debug the issue.
>
> The context of the first transaction is just fine, yes.
> The only USDT lot in the Assets:Crypto:USDT:Binance account is reduced by
> the 0.134… USDT and expenses are correctly set.
>
These are the changes you're applying to that account:
Assets:Crypto:USDT:Binance 134.40876000 USDT {0.83159490 EUR} @
0.83159490 EUR
Assets:Crypto:USDT:Binance -0.13440876 USDT {0.83159490 EUR} @
0.83159490 EUR
Assets:Crypto:USDT:Binance 436.86293686 USDT {0.83161458 EUR} @
0.83161458 EUR
Assets:Crypto:USDT:Binance -0.43686294 USDT {0.83161458 EUR} @
0.83161458 EUR
The problem is a subtle issue with self-reductions (reductions of a
position added within the transaction itself).
Reductions are applied on the inventories before the transaction, and not
in order.
It's a very long explanation why in the general case it's not trivial to
just apply them within the transaction, but I think that's the problem, the
4th posting is attempting to reduce the inventory resulting from the first
two, it doesn't see the 3rd one.
I'd like to come up with a better (and still general) booking algorithm in
v3, which handles this.
>
> But it's not just about bean-context/the context of the first txn. I
> imported several transactions of this "type".
> This "breaks" the whole file (I'm getting a "bazillion" errors of this
> type) and thus a proper calculation of PnL and remaining lots, etc — or am
> I mistaken?
>
Yes if you do the same everywhere you'll encounter the same issue
> I don't understand why beancount isn't able to find the lot in the second
> txn. I mean, it did find the right one in the first txn?
>
> Isn't there anything I could do? Except separating the txn into an "actual
> txn" and fee txn?
> Having to rewrite all of the txn to separate the actual transaction and
> the fees would be cumbersome and I really dislike the idea to have
> separated trade and fee expense transactions.
>
Not sure I have a great solution for you right now
Wait for v3
Or split them
>
>
>
> ards
>
> [email protected] schrieb am Montag, 4. Januar 2021 um 15:15:37 UTC+1:
>
>> The context command will not work on the last txn because of the way
>> errors are handled right now (will be fixed in v3 with parser changes), but
>> you can get context on the prior transaction to see the remaining
>> inventory's balances which are going to be the input to the last
>> transaction to match against.
>>
>>
>> bean-doctor context btc2.beancount 17
>> Hash:64d489e8797bf562fdc15f7a890fe5e5
>> Location: /home/blais/r/q/beancount-data/user/tobiash/btc2.beancount:10
>>
>> ------------ Balances before transaction
>>
>> Assets:Crypto:BTC:Binance 0.1 BTC {16000 EUR,
>> 2020-12-15}
>>
>> Assets:Cash:Binance
>>
>> Assets:Crypto:USDT:Binance
>>
>> Expenses:Commission:Binance
>>
>> Income:Day-trading
>>
>>
>> ------------ Transaction
>>
>>
>> 2020-12-17 * "Trade BTCUSDT: SELL BTC for USDT"
>> orderId: "123456789-01"
>> time: "08:50 "
>> Assets:Cash:Binance 111.77364000 EUR
>> ; 111.77364000 EUR
>> Assets:Crypto:BTC:Binance -0.00600000 BTC {16000.00000000 EUR,
>> 2020-12-15} @ 18628.94000000 EUR ; -96.00000000 EUR
>> Assets:Crypto:USDT:Binance 134.40876000 USDT {0.83159490 EUR,
>> 2020-12-17} @ 0.83159490 EUR ; 111.7736393313240000 EUR
>> Assets:Cash:Binance -111.77364000 EUR
>> ; -111.77364000 EUR
>> Assets:Crypto:USDT:Binance -0.13440876 USDT {0.83159490 EUR,
>> 2020-12-17} @ 0.83159490 EUR ; -0.1117736393313240 EUR
>> Expenses:Commission:Binance 0.13440876 USDT @ 0.83159490 EUR
>> ; 0.1117736393313240 EUR
>> Income:Day-trading -15.77363933 EUR
>> ; -15.77363933 EUR
>>
>>
>> Residual: (0.0000000013240000 EUR)
>> Tolerances: BTC=5E-9, EUR=5E-9, USDT=5E-9
>> Basis: (15.6618656919926760 EUR)
>>
>> ------------ Balances after transaction
>>
>> * Assets:Crypto:BTC:Binance 0.09400000 BTC {16000 EUR,
>> 2020-12-15}
>>
>> Assets:Cash:Binance
>>
>> * Assets:Crypto:USDT:Binance 134.27435124 USDT {0.83159490 EUR,
>> 2020-12-17}
>>
>> * Expenses:Commission:Binance
>> 0.13440876 USDT
>>
>> * Income:Day-trading
>> -15.77363933 EUR
>>
>>
>> On Mon, Jan 4, 2021 at 8:56 AM Peter <[email protected]> wrote:
>>
>>> Hi,
>>>
>>> having the following example file, I'm getting the error:
>>>
>>> Test.bean:21: No position matches
>>> "Posting(account='Assets:Crypto:USDT:Binance', units=-0.43686294 USDT,
>>> cost=CostSpec(number_per=Decimal('0.83161458'), number_total=None,
>>> currency='EUR', date=None, label=None, merge=False), price=0.83161458 EUR,
>>> flag=None, meta={'filename':
>>> '/media/Daten/03-Finanzen/00-Beancount/Test.BTCUSDT2.bean', 'lineno': 28})"
>>> against balance (134.27435124 USDT {0.83159490 EUR, 2020-12-17})
>>>
>>> *File*
>>>
>>> option "booking_method" "FIFO"
>>> option "operating_currency" "EUR"
>>> plugin "beancount.plugins.auto_accounts"
>>>
>>> 2020-12-15 * "" "Trade BTCUSDT: SELL BTC for USDT"
>>> Assets:Crypto:BTC:Binance 0.1 BTC {16000 EUR} @ 16000
>>> EUR
>>> Equity:Opening -0.1 BTC {16000 EUR} @ 16000
>>> EUR
>>>
>>> 2020-12-17 * "" "Trade BTCUSDT: SELL BTC for USDT"
>>> time: "08:50 "
>>> orderId: "123456789-01"
>>> Assets:Cash:Binance 111.77364000 EUR
>>> Assets:Crypto:BTC:Binance -0.00600000 BTC {} @ 18628.94000000
>>> EUR
>>> Assets:Crypto:USDT:Binance 134.40876000 USDT {0.83159490 EUR} @
>>> 0.83159490 EUR
>>> Assets:Cash:Binance -111.77364000 EUR
>>> Assets:Crypto:USDT:Binance -0.13440876 USDT {0.83159490 EUR} @
>>> 0.83159490 EUR
>>> Expenses:Commission:Binance 0.13440876 USDT @ 0.83159490 EUR
>>> Income:Day-trading
>>>
>>>
>>> 2020-12-17 * "" "Trade BTCUSDT: SELL BTC for USDT"
>>> time: "08:50 "
>>> orderId: "123456789-02"
>>> Assets:Cash:Binance 363.30158788 EUR
>>> Assets:Crypto:BTC:Binance -0.01950200 BTC {} @ 18628.94000000
>>> EUR
>>> Assets:Crypto:USDT:Binance 436.86293686 USDT {0.83161458 EUR} @
>>> 0.83161458 EUR
>>> Assets:Cash:Binance -363.30158788 EUR
>>> Assets:Crypto:USDT:Binance -0.43686294 USDT {0.83161458 EUR} @
>>> 0.83161458 EUR
>>> Expenses:Commission:Binance 0.43686294 USDT @ 0.83161458 EUR
>>> Income:Day-trading
>>>
>>> I can't figure out why I'm gettig the error because the transaction is
>>> basically the same as the first one. And the first transaction parses
>>> without error.
>>> Furthermore, if I "split" the second transaction and move the commission
>>> expenses into a seperate transaction, I'm getting no error:
>>>
>>> option "booking_method" "FIFO"
>>> option "operating_currency" "EUR"
>>> plugin "beancount.plugins.auto_accounts"
>>>
>>> 2020-12-15 * "" "Trade BTCUSDT: SELL BTC for USDT"
>>> Assets:Crypto:BTC:Binance 0.1 BTC {16000 EUR} @ 16000
>>> EUR
>>> Equity:Opening -0.1 BTC {16000 EUR} @ 16000
>>> EUR
>>>
>>> 2020-12-17 * "" "Trade BTCUSDT: SELL BTC for USDT"
>>> time: "08:50 "
>>> orderId: "123456789-01"
>>> Assets:Cash:Binance 111.77364000 EUR
>>> Assets:Crypto:BTC:Binance -0.00600000 BTC {} @ 18628.94000000
>>> EUR
>>> Assets:Crypto:USDT:Binance 134.40876000 USDT {0.83159490 EUR} @
>>> 0.83159490 EUR
>>> Assets:Cash:Binance -111.77364000 EUR
>>> Assets:Crypto:USDT:Binance -0.13440876 USDT {0.83159490 EUR} @
>>> 0.83159490 EUR
>>> Expenses:Commission:Binance 0.13440876 USDT @ 0.83159490 EUR
>>> Income:Day-trading
>>>
>>>
>>> 2020-12-17 * "" "Trade BTCUSDT: SELL BTC for USDT"
>>> time: "08:50 "
>>> orderId: "123456789-02"
>>> Assets:Cash:Binance 363.30158788 EUR
>>> Assets:Crypto:BTC:Binance -0.01950200 BTC {} @ 18628.94000000
>>> EUR
>>> Assets:Crypto:USDT:Binance 436.86293686 USDT {0.83161458 EUR} @
>>> 0.83161458 EUR
>>> Assets:Cash:Binance -363.30158788 EUR
>>> ; Assets:Crypto:USDT:Binance -0.43686294 USDT
>>> {0.83161458 EUR} @ 0.83161458 EUR
>>> ; Expenses:Commission:Binance 0.43686294 USDT @ 0.83161458 EUR
>>> Income:Day-trading
>>>
>>> 2020-12-17 * "" "Trade BTCUSDT: SELL BTC for USDT"
>>> Assets:Crypto:USDT:Binance -0.43686294 USDT {0.83161458 EUR} @
>>> 0.83161458 EUR
>>> Expenses:Commission:Binance 0.43686294 USDT @ 0.83161458 EUR
>>>
>>> What am I doing wrong in the second transaction that beancount can't
>>> figure out the correspoding lot?
>>>
>>> Regards
>>>
>>> --
>>> 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/aa5b7b54-9bd1-4308-b872-7d3e52b1ef71n%40googlegroups.com
>>> <https://groups.google.com/d/msgid/beancount/aa5b7b54-9bd1-4308-b872-7d3e52b1ef71n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
> 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/67084077-9fca-4135-9edc-a13985fd36can%40googlegroups.com
> <https://groups.google.com/d/msgid/beancount/67084077-9fca-4135-9edc-a13985fd36can%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
--
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/CAK21%2BhP6K1eDQ78detrAo93cPCD-w_d2RT57mbjx_kmy8jJEmg%40mail.gmail.com.