collateral fee calculations
This commit is contained in:
parent
7a38e8558e
commit
9d191efa54
|
@ -94,6 +94,7 @@ function StakeForm({ token: selectedToken }: StakeFormProps) {
|
|||
borrowBankBorrowRate,
|
||||
leveragedAPY,
|
||||
estimatedNetAPY,
|
||||
collateralFeeAPY
|
||||
} = useBankRates(selectedToken, leverage)
|
||||
const leverageMax = useLeverageMax(selectedToken) * 0.95 // Multiplied by 0.975 becuase you cant actually get to the end of the inifinite geometric series?
|
||||
|
||||
|
@ -146,15 +147,6 @@ function StakeForm({ token: selectedToken }: StakeFormProps) {
|
|||
return borrowAmount
|
||||
}, [leverage, borrowBank, stakeBank, inputAmount])
|
||||
|
||||
const collateralFeeAPY = useMemo(() => {
|
||||
if (!stakeBank) return 0
|
||||
const collateralFee = stakeBank?.collateralFeePerDay * 365 * 100
|
||||
const valueOfPosition = leverage * Number(inputAmount) * stakeBank?.uiPrice
|
||||
const weightedValueOfPosition = valueOfPosition * Number(stakeBank?.maintAssetWeight)
|
||||
const assetsCovered = amountToBorrow / weightedValueOfPosition
|
||||
const collateralFeeUI = collateralFee * assetsCovered
|
||||
return collateralFeeUI
|
||||
}, [stakeBank, amountToBorrow, inputAmount, leverage])
|
||||
|
||||
const handleRefreshWalletBalances = useCallback(async () => {
|
||||
if (!publicKey) return
|
||||
|
@ -383,7 +375,7 @@ function StakeForm({ token: selectedToken }: StakeFormProps) {
|
|||
{borrowBank ? (
|
||||
<>
|
||||
<div className="flex justify-between">
|
||||
<p className="text-th-fgd-4">{`${borrowBank} Borrow Rate`}</p>
|
||||
<p className="text-th-fgd-4">{`${borrowBank?.name} Borrow Rate`}</p>
|
||||
<span
|
||||
className={`font-bold ${
|
||||
borrowBankBorrowRate > 0.01
|
||||
|
|
|
@ -37,11 +37,23 @@ export default function useBankRates(selectedToken: string, leverage: number) {
|
|||
return borrowBankStakeRate ? borrowBankStakeRate * leverage : 0
|
||||
}, [borrowBankStakeRate, leverage])
|
||||
|
||||
const estimatedMaxCollateralFee = useMemo(() => {
|
||||
if(!stakeBank) return 0
|
||||
return (stakeBank?.collateralFeePerDay * 365 * 100)
|
||||
}, [stakeBank])
|
||||
|
||||
const collateralFeeAPY = useMemo(() => {
|
||||
if (!stakeBank) return 0
|
||||
const assetsCovered = ( (leverage - 1)) / leverage * Number(stakeBank?.maintAssetWeight)
|
||||
const collateralFeeUI = estimatedMaxCollateralFee * assetsCovered * leverage
|
||||
return collateralFeeUI
|
||||
}, [stakeBank, leverage, estimatedMaxCollateralFee])
|
||||
|
||||
const estimatedNetAPY = useMemo(() => {
|
||||
return (
|
||||
borrowBankStakeRate * leverage - borrowBankBorrowRate * (leverage - 1)
|
||||
borrowBankStakeRate * leverage - borrowBankBorrowRate * (leverage - 1) - collateralFeeAPY
|
||||
)
|
||||
}, [borrowBankStakeRate, leverage, borrowBankBorrowRate])
|
||||
}, [borrowBankStakeRate, leverage, borrowBankBorrowRate, collateralFeeAPY])
|
||||
|
||||
// useEffect(() => {
|
||||
// set((s) => {
|
||||
|
@ -53,8 +65,7 @@ export default function useBankRates(selectedToken: string, leverage: number) {
|
|||
|
||||
const estimatedMaxAPY = useMemo(() => {
|
||||
return (
|
||||
borrowBankStakeRate * leverageMax -
|
||||
borrowBankBorrowRate * (leverageMax - 1)
|
||||
borrowBankStakeRate * leverageMax - borrowBankBorrowRate * (leverageMax - 1)
|
||||
)
|
||||
}, [borrowBankStakeRate, borrowBankBorrowRate, leverageMax])
|
||||
|
||||
|
@ -65,5 +76,6 @@ export default function useBankRates(selectedToken: string, leverage: number) {
|
|||
leveragedAPY,
|
||||
estimatedNetAPY,
|
||||
estimatedMaxAPY,
|
||||
collateralFeeAPY
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue