Skip to content

Commit 8a8e173

Browse files
committed
Correctly calculate spot margin borrow collateral
1 parent 948b680 commit 8a8e173

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

exchanges/ftx/ftx_wrapper.go

+7-4
Original file line numberDiff line numberDiff line change
@@ -1555,9 +1555,8 @@ func (f *FTX) calculateTotalCollateralOnline(ctx context.Context, calc *order.To
15551555
lockedN := decimal.NewFromFloat(balances[y].LockedBreakdown.LockedInNFTBids)
15561556
lockedO := decimal.NewFromFloat(balances[y].LockedBreakdown.LockedInSpotOrders)
15571557
lockedFO := decimal.NewFromFloat(balances[y].LockedBreakdown.LockedInSpotMarginFundingOffers)
1558-
lockedSMB := decimal.NewFromFloat(balances[y].SpotBorrow)
1559-
locked := decimal.Sum(lockedS, lockedC, lockedF, lockedN, lockedO, lockedFO, lockedSMB)
1560-
if !locked.IsZero() {
1558+
locked := decimal.Sum(lockedS, lockedC, lockedF, lockedN, lockedO, lockedFO)
1559+
if !locked.IsZero() || balances[y].SpotBorrow > 0 {
15611560
if result.UsedBreakdown == nil {
15621561
result.UsedBreakdown = &order.UsedCollateralBreakdown{}
15631562
}
@@ -1582,8 +1581,8 @@ func (f *FTX) calculateTotalCollateralOnline(ctx context.Context, calc *order.To
15821581
LockedInSpotMarginFundingOffers: lockedFO.Mul(currencyBreakdown.FairMarketValue).Mul(currencyBreakdown.Weighting),
15831582
LockedInSpotOrders: lockedO.Mul(currencyBreakdown.FairMarketValue).Mul(currencyBreakdown.Weighting),
15841583
LockedAsCollateral: lockedC.Mul(currencyBreakdown.FairMarketValue).Mul(currencyBreakdown.Weighting),
1585-
UsedInSpotMarginBorrows: lockedSMB.Mul(currencyBreakdown.FairMarketValue).Mul(currencyBreakdown.Weighting),
15861584
}
1585+
15871586
if resetWeightingToZero {
15881587
currencyBreakdown.Weighting = decimal.Zero
15891588
}
@@ -1592,6 +1591,10 @@ func (f *FTX) calculateTotalCollateralOnline(ctx context.Context, calc *order.To
15921591
}
15931592

15941593
currencyBreakdown.ScaledUsed = locked.Mul(currencyBreakdown.FairMarketValue).Mul(currencyBreakdown.Weighting)
1594+
if balances[y].SpotBorrow > 0 {
1595+
currencyBreakdown.ScaledUsedBreakdown.UsedInSpotMarginBorrows = currencyBreakdown.CollateralContribution.Abs().Add(currencyBreakdown.AdditionalCollateralUsed)
1596+
currencyBreakdown.ScaledUsed = currencyBreakdown.ScaledUsed.Add(currencyBreakdown.ScaledUsedBreakdown.UsedInSpotMarginBorrows)
1597+
}
15951598
if !currencyBreakdown.SkipContribution {
15961599
result.UsedCollateral = result.UsedCollateral.Add(currencyBreakdown.ScaledUsed)
15971600
result.UsedBreakdown.LockedInStakes = result.UsedBreakdown.LockedInStakes.Add(currencyBreakdown.ScaledUsedBreakdown.LockedInStakes)

0 commit comments

Comments
 (0)