Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Review Accounting After a Cash Sync #8010

Open
4 tasks done
AlexCatarino opened this issue May 9, 2024 · 2 comments
Open
4 tasks done

Review Accounting After a Cash Sync #8010

AlexCatarino opened this issue May 9, 2024 · 2 comments
Labels
bug live-trading Live trading related issues.

Comments

@AlexCatarino
Copy link
Member

Expected Behavior

After a cash sync, the cashbook shouldn't change a lot.

Actual Behavior

The live deployment to Kraken starts with:

CashBook Total Value:                ₿0.24
2024-04-05T00:00:49.7808038Z TRACE:: Total margin information: TotalMarginUsed: 0.18, MarginRemaining: 0.06

Then we have a cash sync where the margin information jumps:

2024-04-05T11:45:00.0572082Z TRACE:: Brokerage.PerformCashSync(): Sync cash balance
2024-04-05T11:45:10.4329261Z TRACE:: Total margin information: TotalMarginUsed: 0.13, MarginRemaining: 0.32

Potential Solution

N/A

Checklist

  • I have completely filled out this template
  • I have confirmed that this issue exists on the current master branch
  • I have confirmed that this is not a duplicate issue by searching issues
  • I have provided detailed steps to reproduce the issue
@AlexCatarino AlexCatarino added bug live-trading Live trading related issues. labels May 9, 2024
@Martin-Molinero
Copy link
Member

5 is pretty big in BTC which is what the user is using, so it should be relative to the TPV I think

image

kraken, sounds like it accounting for the holdings again on each cash sync but should be the first only really

image

@Marinovsky
Copy link
Collaborator

After doing some research about this bug I found the following things:

  1. 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:
    image
    image
    image

  2. 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:
    image
    KrakenCashBalanceBugLogs.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug live-trading Live trading related issues.
Projects
None yet
Development

No branches or pull requests

3 participants