provinzio / CoinTaxman

Calculate your taxes from cryptocurrency gains
GNU Affero General Public License v3.0
142 stars 31 forks source link

trade and fee resolving edge cases #135

Open jhoogstraat opened 2 years ago

jhoogstraat commented 2 years ago

resolve_trades currently only works when there is exactly one Buy and one Sell op for any particular utc_time. This leaves many cases unhandled, which could result in miscalculated gains. Here are four such cases:

1) Multiple buy/sell-pairs at a particular utc_time 2) Orders not being fulfilled at once, leading to Buy/Sell ops later on. 3) Commissions / Withdrawals / Deposits / Airdrop / CoinLendInterest increasing the op count (more than 2 ops in that case) 4) It can happen that bnb small asset exchange happen at multiple utc_times (sell ops one second before buy ops)

The first case can be resolved for 3 coins if there is a "bridge coin" (sell btc -> usdt, buy eth -> usdt), because usdt is included in both orders. The third case can be resolved by filtering the irrelevant ops.

Binance does provide an order history, which contains the required information to resolve trades correctly, even when multiple trades occur. Maybe that can help us.

pr: #136

provinzio commented 2 years ago

Looks like deposit of eur and direct conversion to BNB. Transaction related should be something like buy/sell

jhoogstraat commented 2 years ago

Ok, you are right, it didn't work because of the Deposit, which was not excluded when resolving trades.