correct price function

This commit is contained in:
mantikoros 2022-03-14 11:50:28 -05:00
parent dce7639573
commit f7c6688d4f

View File

@ -49,12 +49,12 @@ function calculateCpmmShares(
betChoice: string betChoice: string
) { ) {
const { YES: y, NO: n } = pool const { YES: y, NO: n } = pool
const k = y ** (1 - p) * n ** p const k = y ** p * n ** (1 - p)
return betChoice === 'YES' return betChoice === 'YES'
? // https://www.wolframalpha.com/input?i=%28y%2Bb-s%29%5E%281-p%29*%28n%2Bb%29%5Ep+%3D+k%2C+solve+s ? // https://www.wolframalpha.com/input?i=%28y%2Bb-s%29%5E%28p%29*%28n%2Bb%29%5E%281-p%29+%3D+k%2C+solve+s
y + bet - (k * (bet + n) ** -p) ** (1 / (1 - p)) y + bet - (k * (bet + n) ** (p - 1)) ** (1 / p)
: n + bet - (k * (bet + y) ** (p - 1)) ** (1 / p) : n + bet - (k * (bet + y) ** -p) ** (1 / (1 - p))
} }
export function getCpmmLiquidityFee( export function getCpmmLiquidityFee(
@ -62,9 +62,9 @@ export function getCpmmLiquidityFee(
bet: number, bet: number,
outcome: string outcome: string
) { ) {
const p = getCpmmProbability(contract.pool, contract.p) const prob = getCpmmProbability(contract.pool, contract.p)
// const p = getCpmmProbabilityAfterBetBeforeFees(contract, outcome, bet) // const prob = getCpmmProbabilityAfterBetBeforeFees(contract, outcome, bet)
const betP = outcome === 'YES' ? 1 - p : p const betP = outcome === 'YES' ? 1 - prob : prob
const liquidityFee = LIQUIDITY_FEE * betP * bet const liquidityFee = LIQUIDITY_FEE * betP * bet
const platformFee = PLATFORM_FEE * betP * bet const platformFee = PLATFORM_FEE * betP * bet
@ -83,9 +83,9 @@ export function calculateCpmmSharesAfterFee(
outcome: string outcome: string
) { ) {
const { pool, p } = contract const { pool, p } = contract
const { remainingBet } = getCpmmLiquidityFee(contract, bet, outcome) // const { remainingBet } = getCpmmLiquidityFee(contract, bet, outcome)
return calculateCpmmShares(pool, p, remainingBet, outcome) return calculateCpmmShares(pool, p, bet, outcome)
} }
export function calculateCpmmPurchase( export function calculateCpmmPurchase(
@ -111,11 +111,13 @@ export function calculateCpmmPurchase(
const postBetPool = { YES: newY, NO: newN } const postBetPool = { YES: newY, NO: newN }
const { newPool, liquidity, newP } = addCpmmLiquidity(postBetPool, p, fee) const { newPool, liquidity, newP } = addCpmmLiquidity(postBetPool, p, fee)
const prob = getCpmmProbability(postBetPool, p) // const prob = getCpmmProbability(postBetPool, p)
const newProb = getCpmmProbability(newPool, newP) // const newProb = getCpmmProbability(newPool, newP)
// console.log(shares) // console.log(prob, newProb)
// console.log(fee, liquidity, newP, newPool) // console.log(fee, liquidity, newP, newPool)
console.log(pool, postBetPool, shares) console.log(getCpmmLiquidity(pool, p), getCpmmLiquidity(newPool, newP))
console.log(pool, postBetPool, newPool)
// console.log(pool, postBetPool, shares)
return { shares, newPool, newP, fees } return { shares, newPool, newP, fees }
} }
@ -177,7 +179,7 @@ export function getCpmmLiquidity(
p: number p: number
) { ) {
const { YES, NO } = pool const { YES, NO } = pool
return YES ** (1 - p) * NO ** p return YES ** p * NO ** (1 - p)
} }
export function addCpmmLiquidity( export function addCpmmLiquidity(