From c4258fb396a0bfa41b63b0f0a60f8d2bfbe9bb8d Mon Sep 17 00:00:00 2001 From: Orange Studio Date: Fri, 15 May 2026 21:22:11 +0800 Subject: [PATCH] Fix pool performance return calculation --- src/lib/stores.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/lib/stores.js b/src/lib/stores.js index d5761f7..c81030a 100644 --- a/src/lib/stores.js +++ b/src/lib/stores.js @@ -81,11 +81,15 @@ function getPoolPerformance(stats, latestIndex, oldestIndex) { } let oldestStat = formatPoolStat(data[oldestIndex]); // startingBalance allows you to calculate performance - let startingBalance = oldestStat.startingBalance; + let startingBalance = oldestStat.startingBalance * 1; let latestStat = formatPoolStat(data[latestIndex]); - let totalDeposits = data.reduce((sum, item) => sum + (item.deposits || 0), 0); - let totalWithdrawals = data.reduce((sum, item) => sum + (item.withdrawals || 0), 0); - perf[assetLabel] = latestStat.balance == 0 ? 0 : (latestStat.balance - startingBalance - (totalDeposits || 0) + (totalWithdrawals || 0)) / latestStat.balance; + let endingBalance = latestStat.balance * 1; + let periodData = data.slice(latestIndex, oldestIndex + 1); + let totalDeposits = periodData.reduce((sum, item) => sum + (item.deposits || 0) * 1, 0); + let totalWithdrawals = periodData.reduce((sum, item) => sum + (item.withdrawals || 0) * 1, 0); + let income = endingBalance + totalWithdrawals - startingBalance - totalDeposits; + let averageCapital = startingBalance + (totalDeposits - totalWithdrawals) / 2; + perf[assetLabel] = averageCapital <= 0 ? 0 : income / averageCapital; } return perf; }