eprbell / rp2

Privacy-focused, free, open-source cryptocurrency tax calculator for multiple countries: it handles multiple coins/exchanges and computes long/short-term capital gains, cost bases, in/out lot relationships/fractioning, and account balances. It supports FIFO, LIFO, HIFO and it outputs in form 8949 format. It has a programmable plugin architecture
https://pypi.org/project/rp2/
Apache License 2.0
256 stars 42 forks source link

Investment Expenses can no longer be used for Deductions #87

Closed macanudo527 closed 1 year ago

macanudo527 commented 1 year ago

It seems like according to the Tax Cuts and Jobs Act (TCJA) of 2017 itemized investment expenses can no longer be used. Form 4952 (https://www.irs.gov/pub/irs-pdf/f4952.pdf) can be used for Investment Interest Deductions (like for margin trading) but not other expenses. The fees will need to be applied to the cost basis and deducted from the proceeds according to this article. I think the tax_report_us report will need to be revised to reflect this, right?

eprbell commented 1 year ago

Trade fees are already applied to the transaction in RP2: buy fee adds to the cost bases and sell fee deducts from the proceeds, as the article describes (an example that is part of unit tests is input/test_data3.ods, sheet B1). Is there anything specifically that you think should change?

macanudo527 commented 1 year ago

Ok, for some reason I got in my head that Investment Expenses were used for deductions after calculating capital gains. Maybe it's just my misunderstanding. So, the Investment Expenses tab in the US tax report is basically just there for information purposes only? or would this be used if I were operating a business?

I understand I should be consulting a tax accountant and DYOR and you are NFA.

eprbell commented 1 year ago

Got it, no, trading fees are already considered when computing capital gains (they affect cost basis and proceeds). The investment expenses tab contains two things currently (see https://github.com/eprbell/rp2/blob/main/src/rp2/plugin/report/us/tax_report_us.py#L57):

As you mentioned, how to tax these and which forms to use is indeed a question for a CPA.

macanudo527 commented 1 year ago

Oh, no. I've made an error with one of the plugins, then. For some reason, spot trading fees appear to be showing up in that tab.

eprbell commented 1 year ago

Are they Fee only transactions (transaction type == Fee)?

macanudo527 commented 1 year ago

Yeah, I'll have to look at my code.

macanudo527 commented 1 year ago

OK, I got it now. Pionex and Binance charge a fee in the crypto asset when purchasing it with USDT. The report generator is creating artifical transactions but these should actually be used for cost basis.

For example, I buy 1 BTC for $9000, and they charge a 0.1 BTC fee. There should be a 0.9 BTC InTransaction. And the cost basis for that BTC should be $10000/BTC.

However, right now the cost basis is $9000/BTC and a fee is generated to be used to reduce my capital gains. I think it all works out in the end, but it's not the correct accounting.

eprbell commented 1 year ago

Ah, yes, because it's a conversion, which is modeled as one in-transaction with crypto fee + one USDT out transaction. RP2 represents the in-transaction with crypto fee as 2 transactions in the output:

I think accounting is OK as-is, because the in-transaction has a fiat fee (equivalent to the crypto fee) which affects the cost basis as discussed above. The artificial FEE transaction is added only to capture the fact that some crypto went out to pay the fee (this affects the out flow of crypto). See test_data4.ods, sheet B1 as an example. Hope this helps.

eprbell commented 1 year ago

@macanudo527 is this issue resolved?

eprbell commented 1 year ago

Closing for now, but if you have more to add we'll reopen.