Another question on your two examples... If it's set to FIFO...
What if you have multiple Assets accounts for ETH? For example - if you had 100 ETH in Assets:Coinbase:ETH and another 100 ETH in Assets:BItstamp:ETH would the transactions below still pull FIFO from both of those accounts or do they all have to be on the same account? https://github.com/ericaltendorf/magicbeans/blob/master/data/magicbeans_example.beancount#L101 2020-06-10 * "Exchange 20.0000 ETH for 4943.2960 USDT" Assets:Account:USDT 4943.296022386568059164501299 USDT {1.0006 USD} Assets:Account:ETH -20 ETH {} @ 247.3131 USD Income:CapGains On Sunday, March 17, 2024 at 1:35:40 PM UTC-4 erical...@gmail.com wrote: > TLDR: it's a hack to try to get beancount to carry cost basis along if > that position is ever transferred to another account. > > There have been a bunch of discussions about this and to be honest, I'm > not 100% confident in the current state of affairs. > > In general, beancount is not very reliable about carrying cost basis along > with transfers. Asset transfers are a very uncommon pattern in general > beancount usage, it seems of concern mostly to crypto traders (who > frequently transfer between exchanges and wallets). So it's not a > well-exercised or supported functionality. See e.g. > https://github.com/beancount/beancount/issues/476 > https://groups.google.com/g/beancount/c/WF3Ta9yVQVo > (and many more crypto discussions on the list) > > There have been a couple workarounds discussed. It looks like what I > eventually got working for me was inserting an empty cost spec: > > https://github.com/ericaltendorf/magicbeans/blob/4a0856aa0558abb5dc1b78123ea4feff263646cd/src/magicbeans/common.py#L102 > > It is possible this depends on this tweak I made to beancount core: > > https://github.com/beancount/beancount/compare/master...ericaltendorf:beancount:cost-transfer > > However like I said I have seen inconsistent behavior and so I don't have > confidence in my mental model of what beancount is actually doing here. It > would be really nice to get this rigorously understood and supported. > > > > On Sun, Mar 17, 2024 at 8:44 AM CD <doc...@gmail.com> wrote: > >> Thank you for this. >> >> I figured out the USD price importing (I downloaded price histories from >> Yahoo and put them all in a folder that my script references) but I am not >> clear on what the empty {} does >> >> >> I understand if I want to book the price I purchased at in the database I >> want to use something like this... >> >> Assets:XRP 1107.10301990 XRP {0.66587 USD} >> >> But in your example.... >> >> 2020-04-10 * "Exchange 1483.9889 USDT for 9.4000 ETH" >> Assets:Account:ETH 9.4 ETH {158.1869 USD} >> Assets:Account:USDT -1483.988882235528942115768463 USDT {} @ 1.0020 USD >> Income:CapGains >> >> What does the USDT {} @ 1.0020 USD part do? >> >> >> Thank you for the reply. I saw that you replied in the other thread, I >> will be checking that out in the next few days once I get this sorted. >> On Saturday, March 16, 2024 at 6:16:35 PM UTC-4 erical...@gmail.com >> wrote: >> >>> All of the following is not tax or accounting advice, but simply my >>> understanding. Feedback from other beancounters would be welcome. >>> >>> I think you have to figure out the USD values yourself, based on your >>> assessment of the FMV. Here's some examples of how I structure exchanges. >>> (Reminder: this is a generated file with fake data) >>> >>> >>> https://github.com/ericaltendorf/magicbeans/blob/master/data/magicbeans_example.beancount#L69 >>> 2020-04-10 * "Exchange 1483.9889 USDT for 9.4000 ETH" >>> Assets:Account:ETH 9.4 ETH {158.1869 USD} >>> Assets:Account:USDT -1483.988882235528942115768463 USDT {} @ 1.0020 >>> USD >>> Income:CapGains >>> >>> >>> https://github.com/ericaltendorf/magicbeans/blob/master/data/magicbeans_example.beancount#L101 >>> 2020-06-10 * "Exchange 20.0000 ETH for 4943.2960 USDT" >>> Assets:Account:USDT 4943.296022386568059164501299 USDT {1.0006 USD} >>> Assets:Account:ETH -20 ETH {} @ 247.3131 >>> USD >>> Income:CapGains >>> >>> I do this in my importers. For example, the coinbase pro importer, when >>> a transaction has an increase leg, looks up the USD price of the increasing >>> currency: >>> >>> https://github.com/ericaltendorf/magicbeans/blob/master/src/magicbeans/importers/coinbasepro.py#L238 >>> See also the gateio importer: >>> >>> https://github.com/ericaltendorf/magicbeans/blob/master/src/magicbeans/importers/gateio.py#L265 >>> I am sad I never had the time to clean all this up and create an elegant >>> and consistent code path for handling both of these. :( >>> >>> Regarding prices, I wrote my own code for price fetching (rationale in >>> the header of the file): >>> >>> https://github.com/ericaltendorf/magicbeans/blob/master/src/magicbeans/prices.py >>> >>> Then for tax reporting you want to report the value of the proceeds in >>> USD. Take a look at the last entry in the Disposals table on page 5 of the >>> example PDF report: >>> https://github.com/ericaltendorf/magicbeans/blob/master/data/magicbeans_example.pdf >>> >>> There was an exchange, where there was a disposal of 20 ETH and an >>> acquisition of 4943.2960 USDT, but the "proceeds" (i.e., USD value on which >>> taxes might be assessed) was 4946.26 (because 1 USDT ~= 1.0006 USD at the >>> time). >>> >>> hope this helps. i am sorry i haven't had a chance to get back to you on >>> the other thread yet. >>> >>> >>> On Sat, Mar 16, 2024 at 12:45 PM CD <doc...@gmail.com> wrote: >>> >>>> Two random transactions that I created based from an old Poloniex >>>> export a friend gave me... >>>> >>>> 2018-01-03 * "Crypto Buy" "Order number: xxxxxxxxx" >>>> Assets:DGB 5171.00018694 DGB @ 0.00000447 BTC >>>> Assets:BTC -0.02317230 BTC >>>> Expenses:TradingFees 12.95990021 DGB @ 0.00000447 BTC >>>> >>>> 2018-01-08 * "Crypto Sell" "Order number: xxxxxx" >>>> Assets:ETC -13.30376940 ETC @ 0.00225500 BTC >>>> Assets:BTC 0.02995500 BTC >>>> Expenses:TradingFees 0.00004499 BTC >>>> >>>> >>>> Poloniex at the time only had transactions made between different >>>> cryptocurrencies, so there are no USD trades. Everything is priced in one >>>> half of the pair ie BTC/ETC DGB/BTC in the above examples. >>>> >>>> How does one go about making everything into USD in reporting (cost >>>> basis, etc) >>>> >>>> I'm baffled. >>>> >>>> If I set price directives for the different cryptos before each >>>> transaction will that do it? Or am I going about it all wrong? >>>> >>>> There doesn't seem to be a way to do double @ either. So for example I >>>> couldn't do 5171.00018694 DGB @ 0.00000447 BTC @ 21000.00 USD right? >>>> >>>> Is there some way to set up the cost basis in USD in the initial >>>> transaction or using price directives? >>>> >>>> >>>> -- >>>> 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 view this discussion on the web visit >>>> https://groups.google.com/d/msgid/beancount/a537f66b-f03b-4aac-bd50-deda8584a179n%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/beancount/a537f66b-f03b-4aac-bd50-deda8584a179n%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 beancount+...@googlegroups.com. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/beancount/8b39f184-1692-434c-b6b9-e5133369b92en%40googlegroups.com >> >> <https://groups.google.com/d/msgid/beancount/8b39f184-1692-434c-b6b9-e5133369b92en%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 beancount+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/39dffa99-1f68-42fc-b334-21a523b0a2b3n%40googlegroups.com.