diff --git a/sdk/src/math/insurance.ts b/sdk/src/math/insurance.ts index 6524b5d86c..3e0baa0774 100644 --- a/sdk/src/math/insurance.ts +++ b/sdk/src/math/insurance.ts @@ -17,7 +17,7 @@ export function nextRevenuePoolSettleApr( SpotBalanceType.DEPOSIT ); - const payoutRatio = 0.1; + const payoutRatioDenominator = 10; const ratioForStakers = spotMarket.insuranceFund.totalFactor > 0 && spotMarket.insuranceFund.userFactor > 0 && @@ -30,15 +30,16 @@ export function nextRevenuePoolSettleApr( const revSettlePeriod = spotMarket.insuranceFund.revenueSettlePeriod.toNumber() * 1000; - const settlesPerYear = 31536000000 / revSettlePeriod; - const projectedAnnualRev = revenuePoolBN - .muln(settlesPerYear) - .muln(payoutRatio); + .mul(new BN(31536000000)) + .div(new BN(revSettlePeriod)) + .divn(payoutRatioDenominator); + + const delta = amount ?? ZERO; - const uncappedApr = vaultBalance.add(amount).eq(ZERO) + const uncappedApr = vaultBalance.add(delta).eq(ZERO) ? 0 - : projectedAnnualRev.muln(1000).div(vaultBalance.add(amount)).toNumber() * + : projectedAnnualRev.muln(1000).div(vaultBalance.add(delta)).toNumber() * 100 * 1000; const cappedApr = Math.min(uncappedApr, MAX_APR.toNumber());