dali-rp2 icon indicating copy to clipboard operation
dali-rp2 copied to clipboard

Handling dead coins

Open iloveitaly opened this issue 2 years ago • 9 comments

I'm running into a case where the coin is dead and there's no historical spot price provided by the exchange. The easiest thing to do would be to mark it down to zero or ignore it. what's the best way to do this?

iloveitaly avatar Aug 11 '22 03:08 iloveitaly

Interesting case. Probably you can use 0 as the sale price if the coin is dead, but you still need to know historical prices so that RP2 can compute the cost basis. Have you tried using the -s command line option to read prices via a pair converter plugin? Currently only the Historic-Crypto-based pair converter (which reads from Coinbase) is supported, but @macanudo527 is working on a much more powerful CCXT-based pair converter (see #53) that will be able to read from multiple different services: this plugin is not merged yet, but it's in advanced state of development, so perhaps it could be worth a try.

eprbell avatar Aug 11 '22 04:08 eprbell

I think it depends on your definition of dead. There are a lot of projects people have labeled 'dead', but are kind of zombie coins. They still keep living on even after being completely abandoned by the devs.

I think you need to ask yourself two questions:

  1. Do you have control over the asset? Basically, can you transfer it somewhere?
  2. Is the asset worth something to someone?

If the answer is yes to those questions, then I wouldn't think the IRS would consider it dead. If you still have control over it, I would sell it, donate it, or burn it just to even things out. If you don't have control over it, I would think you are kind of stuck with it.

I mean this is crypto after all, and someone might revive the chain, fork it into a meme coin worth millions tomorrow. You never know. :P

So, how dead is it? Are you okay with telling us the asset name?

macanudo527 avatar Aug 11 '22 06:08 macanudo527

The conversion is:

  • EOP->USD
  • GUSD->USD

Historical data for both of these doesn't seem to exist on any of the exchanges that I've tried (kraken, liquid, binance{com,us}, coinbase).

is working on a much more powerful CCXT-based pair converter (see https://github.com/eprbell/dali-rp2/pull/53) that will be able to read from multiple different services: this plugin is not merged yet,

I have this branch merged into my local installation. I've tried pulling the price from all of the exchanges supported right now. No luck.

Probably you can use 0 as the sale price if the coin is dead, but you still need to know historical prices so that RP2 can compute the cost basis

This is my problem right now: there doesn't seem to be an easy way to do this. Ideally there would be some sort of manual price definition. Maybe this could be defined via some manual CSV file or something?

The alternative here is some sort of "skip" flag on the transaction hints. But this would cause issues when a unique ID isn't present.

iloveitaly avatar Aug 11 '22 11:08 iloveitaly

For the EOP -> USD conversion, in order to claim it as dead, I think you will have to burn it, at least according to this article. That way you can claim it as an abandonment loss. Then, you'll have to manually look up the price of when you gained dominion of it on Coingecko.com.

We might also want to implement a coingecko pair converter or alternatively, fix the one proposed for CCXT, and get it pushed through for assets that just don't have a reliable market.

@eprbell should we add a BURN transaction type for this use case?

As for GUSD->USD, there is a market on CEX.IO, which should be supported by the pair converter plugin. I'll have to add the exchange and market to the plugin. If you can wait about a week or so, I should be able to address all the current issues and update it with the alternative market.

macanudo527 avatar Aug 11 '22 13:08 macanudo527

The Cointracker article is helpful. Yes, probably adding a new BURN transaction type (and a FAQ) is the best way to capture this case properly.

eprbell avatar Aug 11 '22 15:08 eprbell

@iloveitaly The GUSD -> USD conversion should work with the latest version of the ccxt pair converter I just pushed.

macanudo527 avatar Aug 11 '22 15:08 macanudo527

@iloveitaly would you be able to add the new BURN transaction type to both RP2 and DaLI?

eprbell avatar Aug 12 '22 21:08 eprbell

@eprbell Probably not :( I'm running out of time for this project, I'm nearly done getting it to work for my use-case and then I won't be able to contribute anymore, unfortunately. Since I don't have BURN transactions in my current data, it doesn't make sense for me to add the transaction type right now.

iloveitaly avatar Aug 13 '22 21:08 iloveitaly

No worries and thanks for contributing!

eprbell avatar Aug 13 '22 23:08 eprbell