Closed AlexCatarino closed 2 months ago
5 is pretty big in BTC which is what the user is using, so it should be relative to the TPV I think
kraken, sounds like it accounting for the holdings again on each cash sync but should be the first only really
After doing some research about this bug I found the following things:
I found that the Margin Remaining value changes even without applying the balances values obtained from Kraken API each time the method KrakenBrokerage.GetCashBalance()
is called. To find that I ran the algo BasicTemplateCryptoAlgorithm
using live-kraken environment and USD as account currency, and commented the following line (531) so that the new balance cash amount wasn't applied to the algorithm's Cashbook:
Martin and I thought that the MarginReamining value could have been changing since Kraken was taking into account the profit/loss of an open position so that KrakenBrokerage.GetCashBalance()
was always adjusting to the current price, profit/loss included, but LEAN wasn't. In order to see if our hypothesis was right we took 2 snapshots (with a difference of 10 minutes between them) of the state of the LEAN Holdings, Cashbook and TPV as well as the Holdings and Cash balances from Kraken API responses. After comparing those snapshots we found that the responses from the Kraken API changed just in two fields (value
and net
) but those weren't used when computing the cash balances for LEAN. Below is a screenshot of the difference between the Kraken resposes as well as the file with the two snapshots:
KrakenCashBalanceBugLogs.txt
Shipping fix at https://github.com/QuantConnect/Lean.Brokerages.Kraken/pull/48, starting from version 16546
Expected Behavior
After a cash sync, the cashbook shouldn't change a lot.
Actual Behavior
The live deployment to Kraken starts with:
Then we have a cash sync where the margin information jumps:
Potential Solution
N/A
Checklist
master
branch