collateral fee calculations

This commit is contained in:
Finn 2024-02-22 14:12:37 +00:00
parent 7a38e8558e
commit 9d191efa54
2 changed files with 18 additions and 14 deletions

View File

@ -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

View File

@ -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
}
}