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

Using Pionex data to Rp2 using dali isn't working. __crypto_sent = unknown #96

Open JasonSimms opened 1 year ago

JasonSimms commented 1 year ago

Using my "for-cointracker.csv" file provided from pionex with dali generates a nice .ods file and config file. The crypto_data.ini file marks crypto_sent = 7 / crypto_data.ods marks column 7 as Crypto In and has a number. When using these with RP2 I am getting 'crypto_sent' has non-numeric value: __unknown. I'm also having trouble with Pionex pair METH -> USD but thats another issue.

Thanks for building this tool, I'm excited to figure it out but having trouble putting in my data.

-------- LOG

INFO: Configuration file: crypto_data.ini INFO: Input file: crypto_data.ods INFO: Processing TRX INFO: Processing USDT ERROR: Fatal exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/rp2/ods_parser.py", line 257, in _process_constructor_argument_pack raise RP2RuntimeError( rp2.rp2_error.RP2RuntimeError: Encountered an unresolved DaLI transaction (read DaLI's documentation / FAQ to learn how to resolve this issue): {'timestamp': '2022-01-28 18:13:59+0000', 'asset': 'USDT', 'from_exchange': '__unknown', 'from_holder': 'unknown', 'to_exchange': 'Pionex', 'to_holder': 'jason', 'spot_price': Decimal('1.00035000000'), 'crypto_sent': 'unknown', 'crypto_received': 7.5, 'unique_id': '421d71f201c970ae7595384da6e9a41febfa7d4bd1e6f8163d1c5e3b0cc9182a', 'notes': 'nearest spot_price read from CCXT-converter plugin;', 'internal_id': 26}

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/rp2/rp2_main.py", line 143, in _rp2_main_internal input_data: InputData = parse_ods(configuration=configuration, asset=asset, input_file_handle=input_file_handle) File "/usr/local/lib/python3.10/dist-packages/rp2/ods_parser.py", line 128, in parse_ods _create_and_process_transaction( File "/usr/local/lib/python3.10/dist-packages/rp2/ods_parser.py", line 168, in _create_and_process_transaction transaction: AbstractTransaction = _create_transaction(configuration, current_table_type, internal_id, row_values) File "/usr/local/lib/python3.10/dist-packages/rp2/ods_parser.py", line 291, in _create_transaction argument_pack = _process_constructor_argument_pack(configuration, argument_pack, internal_id, "IntraTransaction") File "/usr/local/lib/python3.10/dist-packages/rp2/ods_parser.py", line 267, in _process_constructor_argument_pack raise RP2ValueError(f"Argument '{numeric_parameter}' has non-numeric value: {value}") from exc rp2.rp2_error.RP2ValueError: Argument 'crypto_sent' has non-numeric value: __unknown

----- INPUT TABLE EXCERPT

Timestamp Asset Exchange Holder Transaction Type   Spot Price Crypto In Crypto Fee USD In No Fee USD In With Fee USD Fee Unique ID Notes
2022-01-28 18:38:59+0000 TRX Pionex jason Buy   $0.07 0.16000000 0.00008000       __unknown nearest spot_price read from CCXT-converter plugin;
2022-01-28 18:38:59+0000 TRX Pionex jason Buy   $0.07 8.75000000 0.00437500       __unknown nearest spot_price read from CCXT-converter plugin;

---- INPUT crypto_data.ini excerpt [intra_header] timestamp = 0 asset = 1 from_exchange = 2 from_holder = 3 to_exchange = 4 to_holder = 5 spot_price = 6 crypto_sent = 7 crypto_received = 8 unique_id = 12 notes = 13

macanudo527 commented 1 year ago

It looks like you sent USDT to Pionex from somewhere and RP2 doesn't have the other half of the transaction. It only knows what was received by Pionex. You'll have to manually add the crypto_sent in the generated .ods before processing it in RP2. I'm guessing you sent it from a wallet or an exchange that didn't get processed by dali-rp2?

Note that the issue isn't with the transactions you pasted in (INPUT TABLE EXCERPT) but a transfer that occurred before that at 2022-01-28 18:13:59+0000.

JasonSimms commented 1 year ago

Thanks, the real issue then is user error I'm not giving it a complete data set. I was having a big headache with DALI because it didn't know what METH -> USD . I think its supposed to be microEtherium. So I tried to isolate a few lines of a token it did know and run it through the whole process. I better backup and get it working from the beginning. Any advice on transposing or fixing the pairs not found in pair converters?

---LOG FROM DALI on my complete trading data-- 2023-05-09 20:27:37,208/dali/INFO: No pair converter plugins found in configuration file: using default pair converters. 2023-05-09 20:27:37,211/dali/INFO: Reading crypto data using plugin 'dali.plugin.input.csv.pionex' 2023-05-09 20:27:52,366/dali/INFO: Resolving transactions 2023-05-09 20:27:53,740/dali/ERROR: Fatal exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/dali/dali_main.py", line 168, in _dali_main_internal resolved_transactions: List[AbstractTransaction] = resolve_transactions(transactions, dali_configuration, args.read_spot_price_from_web) File "/usr/local/lib/python3.10/dist-packages/dali/transaction_resolver.py", line 246, in resolve_transactions transaction = _update_spot_price_from_web(transaction, global_configuration) File "/usr/local/lib/python3.10/dist-packages/dali/transaction_resolver.py", line 144, in _update_spot_price_from_web raise RP2RuntimeError( rp2.rp2_error.RP2RuntimeError: Spot price for __unknown:2022-01-28 18:38:59+00:00:METH->USD not found on any pair converter plugin 2023-05-09 20:27:53,743/dali/INFO: Log file: ./log/rp2_2023_05_09_20_27_36_718382.log

macanudo527 commented 1 year ago

Oh mETH! I was wondering what METH was. It seems like an unfortunate name for a crypto asset. It might be good for a meme coin though, I guess. :)

This is a known issue that I'm working on eprbell/dali-rp2#140. Unfortunately, I have to implement graph optimization before that. Realistically, it might be another month before we get it done. If you need the reports done now you'll have to manually convert the totals. Sorry about that.

eprbell commented 1 year ago

Haha, mETH is indeed perfect for a meme coin!

@JasonSimms, for the time being you can probably use the manual input plug in to handle unknown transactions.