Adds investmentValue to group leaderboard calculation

This commit is contained in:
Pico2x 2022-09-06 15:29:10 +01:00
parent 59f3936dad
commit 3b626bccc4
2 changed files with 24 additions and 8 deletions

View File

@ -11,16 +11,20 @@ const computeInvestmentValue = (
) => {
return sumBy(bets, (bet) => {
const contract = contractsDict[bet.contractId]
if (!contract || contract.isResolved) return 0
if (bet.sale || bet.isSold) return 0
const payout = calculatePayout(contract, bet, 'MKT')
const value = payout - (bet.loanAmount ?? 0)
if (isNaN(value)) return 0
return value
return computeInvestmentValueForBet(bet, contract)
})
}
export const computeInvestmentValueForBet = (bet: Bet, contract: Contract) => {
if (!contract || contract.isResolved) return 0
if (bet.sale || bet.isSold) return 0
const payout = calculatePayout(contract, bet, 'MKT')
const value = payout - (bet.loanAmount ?? 0)
if (isNaN(value)) return 0
return value
}
const computeTotalPool = (userContracts: Contract[], startTime = 0) => {
const periodFilteredContracts = userContracts.filter(
(contract) => contract.createdTime >= startTime

View File

@ -1,6 +1,7 @@
import { groupBy, sumBy, mapValues, partition } from 'lodash'
import { Bet } from './bet'
import { computeInvestmentValueForBet } from './calculate-metrics'
import { Contract } from './contract'
import { getPayouts } from './payouts'
@ -62,7 +63,18 @@ export function scoreUsersByContract(contract: Contract, bets: Bet[]) {
return { userId, payout }
})
const netPayouts = [...resolvePayouts, ...salePayouts, ...investments]
const investmentValues = openBets.map((bet) => {
const { userId } = bet
const investmentValue = computeInvestmentValueForBet(bet, contract)
return { userId, payout: investmentValue }
})
const netPayouts = [
...resolvePayouts,
...salePayouts,
...investments,
...investmentValues,
]
const userScore = mapValues(
groupBy(netPayouts, (payout) => payout.userId),