From cf66ba40efd9ab4964f2505fd2f0b964572465eb Mon Sep 17 00:00:00 2001 From: asiaznik Date: Wed, 8 Nov 2023 15:45:45 +0100 Subject: [PATCH] fix(trading): fix adjusted fees calculation --- .../components/fees-container/utils.spec.ts | 14 +++++++++----- apps/trading/components/fees-container/utils.ts | 4 +++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/trading/components/fees-container/utils.spec.ts b/apps/trading/components/fees-container/utils.spec.ts index c2b3cd86e..3f618cbdc 100644 --- a/apps/trading/components/fees-container/utils.spec.ts +++ b/apps/trading/components/fees-container/utils.spec.ts @@ -21,7 +21,7 @@ describe('getAdjustedFee', () => { new BigNumber(referralDiscount), ]; - // 1 - 0.5 - 0.5 + // 1 - 0.5 = 0.5 const v = new BigNumber(1).minus(new BigNumber(volumeDiscount)); // 1 - 0.5 = 0.5 @@ -34,13 +34,15 @@ describe('getAdjustedFee', () => { // 0.1 + 0.1 + 0.1 = 0.3 const totalFees = fees.reduce((sum, x) => sum.plus(x), new BigNumber(0)); - // 0.3 * 0.75 = 0.225 - const expected = new BigNumber(totalFees).times(factor).toNumber(); + // (1 - 0.3) * 0.75 = 0.525 + const expected = new BigNumber(totalFees) + .times(new BigNumber(1).minus(factor)) + .toNumber(); expect(getAdjustedFee(fees, discounts)).toBe(expected); }); - it('combines discount factors multiplicativly', () => { + it('combines discount factors multiplicatively', () => { const volumeDiscount = 0.4; const referralDiscount = 0.1; @@ -67,7 +69,9 @@ describe('getAdjustedFee', () => { // summed fees const totalFees = fees.reduce((sum, x) => sum.plus(x), new BigNumber(0)); - const expected = new BigNumber(totalFees).times(factor).toNumber(); + const expected = new BigNumber(totalFees) + .times(new BigNumber(1).minus(factor)) + .toNumber(); expect(getAdjustedFee(fees, discounts)).toBe(expected); }); diff --git a/apps/trading/components/fees-container/utils.ts b/apps/trading/components/fees-container/utils.ts index 93b9e0a4d..68b980035 100644 --- a/apps/trading/components/fees-container/utils.ts +++ b/apps/trading/components/fees-container/utils.ts @@ -103,5 +103,7 @@ export const getAdjustedFee = (fees: BigNumber[], discounts: BigNumber[]) => { const totalFactor = new BigNumber(1).minus(combinedFactors); - return totalFee.times(BigNumber.max(0, totalFactor)).toNumber(); + return totalFee + .times(new BigNumber(1).minus(BigNumber.max(0, totalFactor))) + .toNumber(); };